public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: David Miller <davem@davemloft.net>
Cc: m.kozlowski@tuxland.pl, akpm@linux-foundation.org,
	linux-kernel@vger.kernel.org, greg@kroah.com,
	sparclinux@vger.kernel.org
Subject: Re: 2.6.25-rc5-mm1 sparc64 boot problems due to generic pci_enable_resources()
Date: Sat, 29 Mar 2008 11:44:53 +1100	[thread overview]
Message-ID: <1206751493.10388.84.camel@pasglop> (raw)
In-Reply-To: <20080328.161011.08762096.davem@davemloft.net>


On Fri, 2008-03-28 at 16:10 -0700, David Miller wrote:
> From: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
> Date: Fri, 28 Mar 2008 23:52:10 +0100
> 
> > 	The gregkh-pci-pci-sparc64-use-generic-pci_enable_resources.patch which
> > replaces arch-specific code with generic pci_enable_resources() makes my sparc64
> > box unable to boot (that's what quilt bisection says). At first I see these messages:
> 
> Yes, that generic code won't work because of the NULL
> r->parent check.
> 
> Alpha, ARM, V32, FRV, IA64, MIPS, MN10300, PARISC, PPC,
> SH, V850, X86, and Xtensa are all likely to run into
> problems because of this change.

ppc and x86 won't have problem, I haven't checked the others, sparc64
will as I see things.

> The only platform that did the check as a test of r->parent
> being NULL is Powerpc.

Yup, though that makes sense to do it that way on platforms that
actually build a resource tree like x86 or powerpc.

> The rest either didn't check (like sparc64), or tested it by going:
> 
> 	if (!r->start && r->end)
> 
> So the amount of potential breakage from this change is enormous.

Not that big, but yeah, it should be limited to platforms that actually
build a resource-tree and keep track of assigned & allocated resources,
which sparc64 doesn't (which is fair enough, if your firmware is 100%
right and your kernel never has to assigns things itself). The NULL
parent is a 100% indication that the resource was properly claimed and
put in the resource-tree (and thus is non conflicting) on those
platforms, but it's unused on sparc64.

Basically, on platforms like x86 or powerpc, the PCI subsystem at boot
builds a resource tree by collecting resources for all enabled devices
and bridges in a first pass, then all others in a second pass, checking
for conflicts or unassigned ones, and potentially re-assigning and
re-allocating bridges if necessary.

Sparc64 takes a different approach, it basically doesn't bother with a
full resource tree, and just claims what driver claim, which is fine as
long as you are certain that you always get a perfectly well assigned &
non conflicting setup done by your firmware.

The "full featured" approach is necessary for platforms where this isn't
the case, such as powerpc, even with a pretty good OF like Apple ones,
since they love to not assign resources that they know their MacOS
driver will not need (such as not assigning IO space and closing it on
the P2P bridge) which doesn't necessarily quite work with the
requirements of the linux  drivers, in addition to also gross bugs they
have on some versions when using cards with P2P bridges on them.

In addition, we also need that resource management to be able to
dynamically assign resource after boot as our OF doesn't stay alive to
do it, such as when using cardbus cards, or other type of hotplug things
for which the firmware doesn't do dynamic resource allocation.

So, the meat of the original patch isn't bad per-se. There is definitely
a lot of interest in making a lot of this resource survey and management
code common for platforms who want it (for example, powerpc and x86 are
very close already), and in that regard, this NULL check is definitely
what we want in the "merged" version. But I can understand David
unwillingness in bringing that whole infrastructure on platforms that
don't need it.

A quick survey shows that:

- Use what looks like a full featured resource allocation scheme similar
to x86: alpha, powerpc, ppc, 

- Use what looks like a slightly different scheme that still results in
resources being claimed in the resource tree when valid: ia64, mips (not
100% sure there, but it does call pci_assign_unassigned_resources), 

- Don't build a resource-tree per-se and don't claim device resources
(and thus NULL parent check is unreliable): sparc, sparc64, parisc ?
(unsure but I didn't see code to claim resources in the pci layer), arm
(unsure but PCI here seems to be spread in sub platform code and doesn't
appear to do resource management)

And I stopped there. So we have people on all sides of the fence but it
would still be worth consolidating at least x86, alpha & powerpc, and
possibly bring in others like ia64 and mips.

Cheers,
Ben.


      reply	other threads:[~2008-03-29  0:45 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-11  8:14 2.6.25-rc5-mm1 Andrew Morton
2008-03-11 10:16 ` [Build Faliure] 2.6.25-rc5-mm1 build fails Kamalesh Babulal
2008-03-11 10:56   ` Edward Shishkin
2008-03-11 12:55 ` [Build Failure] 2.6.25-rc5-mm1 Build fails with allmodconfig probe_4drives undefined Kamalesh Babulal
2008-03-11 17:41   ` Andrew Morton
2008-03-11 19:35     ` Bartlomiej Zolnierkiewicz
2008-03-11 18:19   ` Andrew Morton
2008-03-11 19:36     ` Bartlomiej Zolnierkiewicz
2008-03-11 17:09 ` 2.6.25-rc5-mm1 (paravirt/vsmp/no PCI) Randy Dunlap
2008-03-11 18:18   ` Jeremy Fitzhardinge
2008-03-12  0:10     ` Ravikiran G Thirumalai
2008-03-12  1:42       ` Randy Dunlap
2008-03-12  1:51       ` Jeremy Fitzhardinge
2008-03-12  7:14       ` Ingo Molnar
2008-03-11 20:23 ` 2.6.25-rc5-mm1 serge
2008-03-11 20:39   ` 2.6.25-rc5-mm1 Andrew Morton
2008-03-12 19:33     ` 2.6.25-rc5-mm1 Torsten Kaiser
2008-03-12 19:44       ` 2.6.25-rc5-mm1 Andrew Morton
2008-03-12 20:01         ` 2.6.25-rc5-mm1 Torsten Kaiser
2008-03-13 22:05           ` 2.6.25-rc5-mm1 Torsten Kaiser
2008-03-13 22:35             ` 2.6.25-rc5-mm1 Andrew Morton
2008-03-13 23:10               ` 2.6.25-rc5-mm1 Badari Pulavarty
2008-03-21 12:12                 ` 2.6.25-rc5-mm1 Ingo Molnar
2008-03-12  1:14 ` 2.6.25-rc5-mm1 Dave Young
2008-03-12  7:21 ` 2.6.25-rc5-mm1: NO_HZ=Y && PREEMPT_RCU=Y fails to build Laurent Riffard
2008-03-12  7:44   ` Andrew Morton
2008-03-12 21:32     ` Laurent Riffard
2008-03-12 23:43   ` Tilman Schmidt
2008-03-12  9:17 ` [BUILD_FAILURE] 2.6.25-rc5-mm1 build fails at startup_ipi_hook() with randconfig Kamalesh Babulal
2008-03-12 12:55 ` [BUG] 2.6.25-rc5-mm1 kernel panic with "Exception: 501 " on powerpc Kamalesh Babulal
2008-03-12 17:46   ` Andrew Morton
2008-03-12 17:51     ` Matthew Wilcox
2008-03-12 22:26       ` Michael Ellerman
2008-03-12 22:33         ` Matthew Wilcox
2008-03-13 13:02           ` Kamalesh Babulal
2008-03-12 20:40     ` Benjamin Herrenschmidt
2008-03-12 18:14   ` Badari Pulavarty
2008-03-12 18:10 ` 2.6.25-rc5-mm1 - x86_64 boot problem ? Badari Pulavarty
2008-03-12 18:15   ` Andrew Morton
2008-03-13 17:09     ` 2.6.25-rc5-mm1 - x86_64 boot problem with git-sched.patch Badari Pulavarty
2008-03-13 17:40       ` Badari Pulavarty
2008-03-13 17:55         ` Guillaume Chazarain
2008-03-13 18:20           ` Badari Pulavarty
2008-03-12 23:54 ` [2.6.25-rc5-mm1] BUG: spinlock bad magic early during boot Tilman Schmidt
2008-03-13  0:04   ` Andrew Morton
2008-03-13 21:48     ` Dave Hansen
2008-03-13 20:46   ` Dave Hansen
2008-03-14  0:35     ` Tilman Schmidt
2008-03-14 18:03       ` Dave Hansen
2008-03-14 20:06         ` Dave Hansen
2008-03-14 20:20           ` Linus Torvalds
2008-03-14 20:51           ` Eric Piel
2008-03-14 21:35             ` Dave Hansen
2008-03-14 22:50               ` Eric Piel
2008-03-14 23:29                 ` Dave Hansen
2008-03-15 12:47                   ` Tilman Schmidt
2008-03-15 19:21                     ` Linus Torvalds
2008-03-15 19:42                       ` Éric Piel
2008-03-15 20:19                         ` Linus Torvalds
2008-03-16  0:15                           ` Éric Piel
2008-03-17 17:27                             ` Len Brown
     [not found]                               ` <1205858252.21619.233.camel@queen.suse.de>
2008-03-18 20:32                                 ` Len Brown
2008-03-20 14:28                                   ` Thomas Renninger
2008-03-17 17:59                           ` Len Brown
2008-03-21 13:17                           ` Pavel Machek
2008-03-23 16:00                             ` Dave Hansen
2008-03-24 16:03                               ` Pavel Machek
2008-03-24 17:05                                 ` Eric Piel
2008-03-24 17:19                                   ` Pavel Machek
2008-03-24 17:23                                   ` Dave Hansen
2008-03-27  9:23                               ` Helge Hafting
2008-03-17 18:05                         ` Len Brown
2008-03-16 20:11                     ` Dave Hansen
2008-03-17 12:23                       ` Peter Zijlstra
2008-03-19 23:50                         ` Tilman Schmidt
2008-03-17 17:48                 ` Len Brown
2008-03-13  0:15 ` [2.6.25-rc5-mm1] WARNING: at drivers/base/sys.c:173 Tilman Schmidt
2008-03-13 18:34   ` Greg KH
2008-03-13 19:57     ` Dave Jones
2008-03-13 19:56   ` Dave Jones
2008-03-13 20:27     ` Greg KH
2008-03-14  0:01     ` Tilman Schmidt
2008-03-14  0:44       ` Dave Jones
2008-03-14  0:57       ` Zhao Yakui
2008-03-14  9:58         ` Tilman Schmidt
2008-03-15 12:16         ` Tilman Schmidt
2008-03-13 14:03 ` 2.6.25-rc5-mm1 shutdown crash Helge Hafting
2008-03-13 16:12   ` Andrew Morton
2008-03-25 12:23     ` Helge Hafting
2008-03-13 19:48 ` [2.6.25-rc5-mm1] regression: cannot run Postfix sendmail command as non-root Tilman Schmidt
2008-03-13 22:21   ` Daniel Lezcano
2008-03-14  0:08     ` Tilman Schmidt
2008-03-17 10:44       ` Daniel Lezcano
2008-03-17 12:50         ` Benjamin Thery
2008-03-17 13:35           ` Tilman Schmidt
2008-03-17 13:06         ` Tilman Schmidt
2008-03-17 13:17           ` Daniel Lezcano
2008-03-19 17:52   ` Benjamin Thery
2008-03-19 21:16     ` Andrew Morton
2008-03-19 22:14       ` Benjamin Thery
2008-03-19 22:49       ` David Miller
2008-03-20  8:26         ` Benjamin Thery
2008-03-20 10:21           ` Rafael J. Wysocki
2008-03-20 12:52             ` Pavel Emelyanov
2008-03-20 13:48               ` Benjamin Thery
2008-03-20 14:38                 ` Rafael J. Wysocki
2008-03-19 23:31       ` Tilman Schmidt
2008-03-13 22:07 ` 2.6.25-rc5-mm1: "consolechars" hangs on boot Laurent Riffard
2008-03-13 22:38   ` Andrew Morton
2008-03-14  5:26     ` Oleg Nesterov
2008-03-14 21:06       ` Laurent Riffard
2008-03-15 12:03         ` Oleg Nesterov
2008-03-16 21:38 ` 2.6.25-rc5-mm1 build failure of pcsp.c Mariusz Kozlowski
2008-03-28 22:52 ` 2.6.25-rc5-mm1 sparc64 boot problems due to generic pci_enable_resources() Mariusz Kozlowski
2008-03-28 23:10   ` David Miller
2008-03-29  0:44     ` Benjamin Herrenschmidt [this message]

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=1206751493.10388.84.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.kozlowski@tuxland.pl \
    --cc=sparclinux@vger.kernel.org \
    /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