PCI-ISA bridge and IO resource registration

From: marcus hall
Date: Tue Dec 13 2005 - 11:51:02 EST


I have run into a problem while dragging an application from 2.4.20 to
2.4.28 (baby steps..)

Anyhow, between these kernel versions, the ACPI code was seriously changed
and now it calls request_resource() for various I/O space resources.

The problem is that the PCI-ISA bridge is also trying to register the
IO address space range (in arch/i386/kernel/pci-i386.c:
pcibios_allocate_resources() ). Since the ACPI already has resources
allocated in this range, when it tries to allocate the space to the bridge,
the request_resource() call fails and we assign a new address to the bridge
later, which of course confuses the ACPI code since its registers are no
longer at the exptected address.

It seems that the problem is that the resources assigned over a bridge
should not be reserved by a bridge itself, but I don't see where this
gets accounted for.

This is probably brought about because the particular bridge is not explicitly
recognized by the kernel (100b:002b, CS5535 ISA bridge), and I believe that
the kernel thinks that this is a normal PCI device.

Currently, I have the request_resource() calls in ACPI commented out, but
I would really want to get the CS5535 properly treated as a bridge instead,
if I can get a few pointers to how it is supposed to work.

Thanks in advance!

Marcus Hall
marcus@xxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/