From: Linus Torvalds <torvalds@linux-foundation.org>
To: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Jeff Garzik <jeff@garzik.org>, Tejun Heo <htejun@gmail.com>,
Ingo Molnar <mingo@elte.hu>,
David Witbrodt <dawitbro@sbcglobal.net>,
Andrew Morton <akpm@linux-foundation.org>,
Kernel Testers <kernel-testers@vger.kernel.org>
Subject: Re: Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4dfdb8c0591f545ba749dd
Date: Fri, 29 Aug 2008 22:52:40 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0808292216310.3290@nehalem.linux-foundation.org> (raw)
In-Reply-To: <86802c440808292141g6ffd1329p54e58ee04c26540a@mail.gmail.com>
On Fri, 29 Aug 2008, Yinghai Lu wrote:
>
> if we don't add the IORESOURCE_BUSY, why bother to add these entries...
You don't understand how the resource allocator works.
IORESOURCE_BUSY is really more of a "legacy bit". It has almost no bearing
on the actual allocations.
Just grep for IORSOURCE_BUSY in kernel/resource.c. The _only_ thing that
cares about busy/non-busy is the legact "request_region()" function. That
one isn't actually used by any core PCI code - it's more of a driver
issue to claim exclusive ownership of particular resources by inserting a
marker in that resource.
So IORESOURCE_BUSY is a red herring. The only reason I said you can clear
it is because you claimed it causes problems, but the more I look at it,
the more I think you're likely just mistaken - because IORESOURCE_BUSY
doesn't make any difference at all to normal resource handling until you
get to actual drivers.
The bigger issue is that just inserting the resource (and it really
doesn't matter if it is marked busy or not) is in itself a mark of
"there's something here". THAT is what all the resource code cares about.
The IORESOURCE_BUSY bit is almost immaterial (ie _is_ immaterial except
for some very specific cases).
And the reason we need to add the e820 resources is exactly so that we
don't try to allocate PCI resources on top of some system resources we
don't even know about!
> good layout from BIOS, it should only reserve mmio range is not showing in BAR.
I agree, but "good layour" and "BIOS" don't really go together. There's
too many broken BIOSes.
> if one stupid BIOS set
> 0xdc000000 - 0x100000000 for reserved.
>
> then when in insert that range late
Sure, but really, the only point of even caring about e820 resources in
the first place has really nothing to do with the BAR's we can see
(because the kernel can handle _those_ perfectly well on its own), and has
everything to do with teh fact that a lot of devices have invisible
resources that we _cannot_ see (ie magic non-standard BAR's for the
motherboard chips).
And those are exactly why we want to populate the resource map with the
e820 information - to avoid having dynamic resources (like Cardbus or PCI
hotplug, or just devices that weren't set up statically by the BIOS) be
then allocated by the kernel on top of those "invisible" resources.
And the dynamic code actually doesn't care about IORESOURCE_BUSY at all:
it will avoid _any_ resource it can see. Think about it: it has to - since
existing PCI resources we have set up will _not_ have that IORESOURCE_BUSY
set.
In many ways, IORESOURCE_BUSY is pure legacy stuff, and is meant for "this
is a black hole and you must not look into it at all". It originates with
a need to originally having to lock drivers away from other drives by
marking their resources busy - in an ISA world, where there are no other
ways of saying "I own this device".
(Yeah, yeah, PCI drivers do the same thing too - they mark their BAR's by
inserting a per-driver entry in the BAR to say 'I own this resource').
But this is where adding the e820 resources _after_ doing PCI discovery
comes in. We don't want to clash with PCI discovery per se - we just want
to make sure that later allocations don't allocate over anything that we
either saw earlier (the BAR's we found set up in regular PCI discovery)
_or_ anything that the system has said is reserved (e820 reserved
entries).
Doing it before obviously works too - in fact, it has worked for us for
years. But it does mean that we consider the e820 reserved areas _so_
reserved that we don't allow PCI BAR's in them. Which is apparently a
mistake.
We want to consider them so reserved that we don't add _new_ PCI resources
to them (and perhaps we might even want to stop regular PCI drivers from
attaching to them), but not so exclusive that we don't allow BARs that
have been set up by the BIOS in them.
Linus
next prev parent reply other threads:[~2008-08-30 5:54 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-28 23:26 Linux 2.6.27-rc5 Linus Torvalds
2008-08-29 15:42 ` cpu time oddity (was Re: Linux 2.6.27-rc5) Alistair John Strachan
2008-08-29 15:56 ` Alistair John Strachan
2008-08-29 17:13 ` Linux 2.6.27-rc5 Rafael J. Wysocki
2008-08-29 19:57 ` Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4dfdb8c0591f545ba749dd Rafael J. Wysocki
2008-08-29 21:13 ` Yinghai Lu
2008-08-29 21:19 ` Yinghai Lu
2008-08-29 22:32 ` Rafael J. Wysocki
2008-08-29 22:31 ` Rafael J. Wysocki
2008-08-29 23:24 ` Yinghai Lu
2008-08-30 0:08 ` Linus Torvalds
2008-08-30 0:11 ` Yinghai Lu
2008-08-30 0:45 ` Linus Torvalds
2008-08-30 1:11 ` Linus Torvalds
2008-08-30 1:30 ` Yinghai Lu
2008-08-30 2:33 ` Linus Torvalds
2008-08-30 2:56 ` Linus Torvalds
2008-08-30 3:07 ` Yinghai Lu
2008-08-30 3:24 ` Linus Torvalds
2008-08-30 4:41 ` Yinghai Lu
2008-08-30 5:02 ` Yinghai Lu
2008-08-30 5:52 ` Linus Torvalds [this message]
2008-08-30 6:18 ` Linus Torvalds
2008-08-30 8:02 ` Yinghai Lu
2008-08-30 5:22 ` Yinghai Lu
2008-08-30 6:11 ` Linus Torvalds
2008-08-30 3:15 ` Linus Torvalds
2008-08-30 3:00 ` Yinghai Lu
2008-08-30 3:10 ` Linus Torvalds
2008-08-30 1:14 ` Yinghai Lu
2008-08-30 2:16 ` Linus Torvalds
2008-08-30 2:29 ` Yinghai Lu
2008-08-30 0:20 ` Yinghai Lu
2008-08-30 0:27 ` Yinghai Lu
2008-08-30 13:32 ` Rafael J. Wysocki
2008-08-30 16:05 ` Yinghai Lu
2008-08-30 17:14 ` Rafael J. Wysocki
2008-08-30 17:55 ` Yinghai Lu
2008-08-30 18:11 ` Yinghai Lu
2008-08-30 19:06 ` Yinghai Lu
2008-08-30 19:51 ` Rafael J. Wysocki
2008-08-30 20:10 ` Yinghai Lu
2008-08-29 21:44 ` Linus Torvalds
2008-08-29 22:30 ` Rafael J. Wysocki
2008-08-30 17:39 ` Linus Torvalds
2008-08-30 18:07 ` Yinghai Lu
2008-08-30 18:43 ` Linus Torvalds
2008-08-30 19:10 ` Yinghai Lu
2008-08-30 19:31 ` Linus Torvalds
2008-08-30 20:14 ` Yinghai Lu
2008-08-30 20:38 ` Yinghai Lu
2008-08-30 20:46 ` Rafael J. Wysocki
2008-08-30 21:12 ` Yinghai Lu
2008-08-30 21:13 ` Yinghai Lu
2008-08-30 21:34 ` Rafael J. Wysocki
2008-08-30 21:49 ` Yinghai Lu
2008-08-31 1:10 ` Yinghai Lu
2008-08-31 12:27 ` Rafael J. Wysocki
2008-08-31 17:42 ` Linus Torvalds
2008-08-31 17:54 ` Yinghai Lu
2008-08-31 18:03 ` Linus Torvalds
2008-08-31 21:03 ` Yinghai Lu
2008-09-01 17:53 ` Linus Torvalds
2008-08-30 22:41 ` Linus Torvalds
2008-08-30 22:50 ` Yinghai Lu
2008-08-30 23:28 ` Linus Torvalds
2008-08-30 23:39 ` Yinghai Lu
2008-08-31 0:27 ` Yinghai Lu
2008-08-31 0:50 ` Yinghai Lu
2008-08-31 3:00 ` Linus Torvalds
2008-08-31 3:53 ` Yinghai Lu
2008-08-31 3:58 ` Linus Torvalds
2008-08-31 4:12 ` Linus Torvalds
2008-08-30 19:14 ` Linus Torvalds
2008-08-30 19:26 ` Yinghai Lu
2008-08-30 19:41 ` Linus Torvalds
2008-08-30 19:48 ` Yinghai Lu
2008-08-30 19:29 ` Rafael J. Wysocki
2008-08-30 19:29 ` Yinghai Lu
2008-08-30 19:20 ` Rafael J. Wysocki
2008-08-29 22:34 ` Jeff Garzik
2008-08-29 22:47 ` Rafael J. Wysocki
2008-08-30 10:34 ` [PATCH] Re: Linux 2.6.27-rc5 Helge Deller
2008-08-30 20:21 ` Rafael J. Wysocki
2008-09-01 22:28 ` Al Viro
2008-08-31 23:27 ` J.A. Magallón
[not found] ` <328e43f00808311825r71164541pd4159a4a33b9b038@mail.gmail.com>
2008-09-01 7:12 ` Francois Romieu
2008-08-30 6:13 Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4dfdb8c0591f545ba749dd David Witbrodt
2008-08-30 6:21 ` Linus Torvalds
2008-08-30 6:58 David Witbrodt
2008-08-30 23:29 David Witbrodt
2008-08-31 0:16 ` Yinghai Lu
2008-08-31 1:25 David Witbrodt
2008-08-31 2:17 ` Yinghai Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.1.10.0808292216310.3290@nehalem.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=dawitbro@sbcglobal.net \
--cc=htejun@gmail.com \
--cc=jeff@garzik.org \
--cc=kernel-testers@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=yhlu.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®