[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <86802c440808311403y57ba050q223fbe370d2c7675@mail.gmail.com>
Date: Sun, 31 Aug 2008 14:03:23 -0700
From: "Yinghai Lu" <yhlu.kernel@...il.com>
To: "Linus Torvalds" <torvalds@...ux-foundation.org>,
"Rafael J. Wysocki" <rjw@...k.pl>
Cc: "Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>,
"Jeff Garzik" <jeff@...zik.org>, "Tejun Heo" <htejun@...il.com>,
"Ingo Molnar" <mingo@...e.hu>,
"David Witbrodt" <dawitbro@...global.net>,
"Andrew Morton" <akpm@...ux-foundation.org>,
"Kernel Testers" <kernel-testers@...r.kernel.org>
Subject: Re: Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4dfdb8c0591f545ba749dd
On Sun, Aug 31, 2008 at 11:03 AM, Linus Torvalds
<torvalds@...ux-foundation.org> wrote:
>
>
> On Sun, 31 Aug 2008, Yinghai Lu wrote:
>>
>> wonder how the probe could find out the size of is 1fff_ffff..
>
> Heh. That's how PCI sizing works: you write all ones to the register, and
> read back the result. The low bits won't change, and that indicates the
> size.
>
> But if _none_ of the bits change, then that simply means that the size
> will be calculated to be 0xffffffff-start.
>
> So the sizing will "work", it will just always report that the BAR covers
> everything from start to the 4G limit.
how about
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index cce2f4c..3b5269a 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -240,6 +240,11 @@ static int __pci_read_base(struct pci_dev *dev,
enum pci_bar_type type,
pci_read_config_dword(dev, pos, &l);
pci_write_config_dword(dev, pos, mask);
pci_read_config_dword(dev, pos, &sz);
+
+ /* sticky and non changable */
+ if (sz == l)
+ goto fail;
+
pci_write_config_dword(dev, pos, l);
/*
Rafael,
can you check attach one to see if we still have warning ?
YH
View attachment "sticky_bar.patch" of type "text/x-patch" (463 bytes)
Powered by blists - more mailing lists