2006-01-02 18:20:54

by Thorsten Kranzkowski

[permalink] [raw]
Subject: unable to mount root device in 2.6.14.5 (was: Re: [PATCH] PCI patches for 2.6.10)


Hello,

I just upgraded from Kernel 2.6.10 to 2.6.14.5 and got this message:

PCI: Unable to reserve I/O region #1:100@10000 for device 0000:00:06.0

instead of the usual initialisation messages of my scsi controller. As
a consequence no scsi device and thus no root device is found.
I tracked this down to this patch (to be precise, the PCI_CLASS_NOT_DEFINED
part of it). Removing the 'class == PCI_CLASS_NOT_DEFINED ||' clause makes
it boot again.

> List: linux-kernel
> Subject: Re: [PATCH] PCI patches for 2.6.10
> From: Greg KH <greg () kroah ! com>
> Date: 2005-01-10 17:20:57
> Message-ID: 11053776574174 () kroah ! com
> [Download message RAW]
>
> ChangeSet 1.1938.447.8, 2004/12/17 13:44:31-08:00, [email protected]
>
> [PATCH] PCI: Don't touch BARs of host bridges
>
> BARs of host bridges often have special meaning and AFAIK are best left
> to be setup by the firmware or system-specific startup code and kept
> intact by the generic resource handler. For example a couple of host
> bridges used for MIPS processors interpret BARs as target-mode decoders
> for accessing host memory by PCI masters (which is quite reasonable).
> For them it's desirable to keep their decoded address range overlapping
> with the host RAM for simplicity if nothing else (I can imagine running
> out of address space with lots of memory and 32-bit PCI with no DAC
> support in the participating devices).
>
> This is already the case with the i386 and ppc platform-specific PCI
> resource allocators. Please consider the following change for the generic
> allocator. Currently we have a pile of hacks implemented for host bridges
> to be left untouched and I'd be pleased to remove them.
>
> From: "Maciej W. Rozycki" <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
>
> drivers/pci/setup-bus.c | 9 +++++++--
> 1 files changed, 7 insertions(+), 2 deletions(-)
>
>
> diff -Nru a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
> --- a/drivers/pci/setup-bus.c 2005-01-10 09:02:52 -08:00
> +++ b/drivers/pci/setup-bus.c 2005-01-10 09:02:52 -08:00
> @@ -57,8 +57,13 @@
> list_for_each_entry(dev, &bus->devices, bus_list) {
> u16 class = dev->class >> 8;
>
> - if (class == PCI_CLASS_DISPLAY_VGA
> - || class == PCI_CLASS_NOT_DEFINED_VGA)
> + /* Don't touch classless devices and host bridges. */
> + if (class == PCI_CLASS_NOT_DEFINED ||
> + class == PCI_CLASS_BRIDGE_HOST)
> + continue;
> +
> + if (class == PCI_CLASS_DISPLAY_VGA ||
> + class == PCI_CLASS_NOT_DEFINED_VGA)
> bus->bridge_ctl |= PCI_BRIDGE_CTL_VGA;
>
> pdev_sort_resources(dev, &head);
>


This is a DEC alpha AXPpci33 (aka 'noname') board with an sym810 onboard scsi-
controller:

[Marvin:~#] lspci -v
00:06.0 Non-VGA unclassified device: Symbios Logic Inc. (formerly NCR) 53c810 (rev 01)
Flags: bus master, medium devsel, latency 255, IRQ 11
I/O ports at 8000 [size=256]
Memory at 0000000001230000 (32-bit, non-prefetchable) [size=256]

00:07.0 Non-VGA unclassified device: Intel Corporation 82378IB [SIO ISA Bridge] (rev 03)
Flags: bus master, medium devsel, latency 0

00:08.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)
Subsystem: 3Com Corporation: Unknown device 9055
Flags: bus master, medium devsel, latency 248, IRQ 14
I/O ports at 8400 [size=128]
Memory at 0000000001231000 (32-bit, non-prefetchable) [size=128]
Expansion ROM at 0000000001200000 [disabled] [size=128K]
Capabilities: [dc] Power Management version 1

00:0b.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH A1 ISDN [Fritz] (rev 02)
Subsystem: AVM Audiovisuelles MKTG & Computer System GmbH: Unknown device 0a00
Flags: medium devsel, IRQ 14
Memory at 0000000001232000 (32-bit, non-prefetchable) [size=32]
I/O ports at 8480 [size=32]

00:0c.0 VGA compatible controller: ATI Technologies Inc 215CT [Mach64 CT] (rev 41) (prog-if 00 [VGA])
Flags: stepping, medium devsel, IRQ 14
Memory at 0000000002000000 (32-bit, non-prefetchable) [size=16M]
Expansion ROM at 0000000001220000 [disabled] [size=64K]


Your patch description suggests that a platform specific solution might be
better. So can you point me tho the right place under arch/alpha to implement
this? Or would a patch to remove the comparison be acceptable?

Thanks,
Thorsten


--
| Thorsten Kranzkowski Internet: [email protected] |
| Mobile: ++49 170 1876134 Snail: Kiebitzstr. 14, 49324 Melle, Germany |
| Ampr: dl8bcu@db0lj.#rpl.deu.eu, [email protected] [44.130.8.19] |


2006-01-03 12:22:00

by Maciej W. Rozycki

[permalink] [raw]
Subject: Re: {SPAM?} unable to mount root device in 2.6.14.5 (was: Re: [PATCH] PCI patches for 2.6.10)

On Mon, 2 Jan 2006, Thorsten Kranzkowski wrote:

> I just upgraded from Kernel 2.6.10 to 2.6.14.5 and got this message:
>
> PCI: Unable to reserve I/O region #1:100@10000 for device 0000:00:06.0
>
> instead of the usual initialisation messages of my scsi controller. As
> a consequence no scsi device and thus no root device is found.
> I tracked this down to this patch (to be precise, the PCI_CLASS_NOT_DEFINED
> part of it). Removing the 'class == PCI_CLASS_NOT_DEFINED ||' clause makes
> it boot again.

You need to add a quirk for the device to initialize its class to be a
SCSI controller.

> This is a DEC alpha AXPpci33 (aka 'noname') board with an sym810 onboard scsi-
> controller:
>
> [Marvin:~#] lspci -v
> 00:06.0 Non-VGA unclassified device: Symbios Logic Inc. (formerly NCR) 53c810 (rev 01)
> Flags: bus master, medium devsel, latency 255, IRQ 11
> I/O ports at 8000 [size=256]
> Memory at 0000000001230000 (32-bit, non-prefetchable) [size=256]

Use the vendor/device ID of this device as the key.

> Your patch description suggests that a platform specific solution might be
> better. So can you point me tho the right place under arch/alpha to implement
> this? Or would a patch to remove the comparison be acceptable?

Well, it's a generic SCSI chip apparently, so the quirk should be placed
in generic code. There are quirks for such devices provided here and
there already -- use them as references.

Maciej

2006-01-03 14:31:42

by Thorsten Kranzkowski

[permalink] [raw]
Subject: Re: unable to mount root device in 2.6.14.5 (was: Re: [PATCH] PCI patches for 2.6.10)

On Tue, Jan 03, 2006 at 12:21:34PM +0000, Maciej W. Rozycki wrote:
> On Mon, 2 Jan 2006, Thorsten Kranzkowski wrote:
> > I tracked this down to this patch (to be precise, the PCI_CLASS_NOT_DEFINED
> > part of it). Removing the 'class == PCI_CLASS_NOT_DEFINED ||' clause makes
> > it boot again.
>
> You need to add a quirk for the device to initialize its class to be a
> SCSI controller.

Today I went to learn how to implement pci quirks,
only to discover that the newly released 2.6.15 introduces the correct fix
for my scsi-chip in pci/quirks.c ... :)

Thanks anyway,
Thorsten

--
| Thorsten Kranzkowski Internet: [email protected] |
| Mobile: ++49 170 1876134 Snail: Kiebitzstr. 14, 49324 Melle, Germany |
| Ampr: dl8bcu@db0lj.#rpl.deu.eu, [email protected] [44.130.8.19] |