Thread (4 messages) 4 messages, 2 authors, 2007-08-06

Re: [PATCH] fix IDE legacy mode resource

From: Yoichi Yuasa <hidden>
Date: 2007-08-06 14:57:28
Also in: lkml

Hello Jeff,

Do you have any comments?

On Sun, 29 Jul 2007 17:15:44 +0900
Yoichi Yuasa [off-list ref] wrote:
On Sat, 28 Jul 2007 14:13:06 -0400
Jeff Garzik [off-list ref] wrote:
quoted
Yoichi Yuasa wrote:
quoted
Hi,

I got the following error on MIPS Cobalt.
MIPS Cobalt has the 0x10000000 offset between resource and bus region. 

PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1
pata_via 0000:00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
PCI: Unable to reserve I/O region #3:8@f0000170 for device 0000:00:09.1
pata_via 0000:00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
pata_via 0000:00:09.1: no available native port

At this point, these resources should be the bus regions.

Signed-off-by: Yoichi Yuasa <redacted>
I'm not sure I understand what's going on here... could you or someone 
provide additional explanation as to why this is a fix?
The legacy mode IDE resources set the following order. 

pci_setup_device()
    Legacy mode ATA controllers have fixed addresses.
    IDE resources: 0x1F0-0x1F7, 0x3F6, 0x170-0x177, 0x376
    |
    V
pcibios_fixup_bus()
    MIPS Cobalt PCI bus have the -0x10000000 offset from PCI resources.
    pcibios_fixup_bus() fix PCI bus regions.
    0x1F0 - 0x10000000 = 0xF00001F0
    |
    V
ata_pci_init_one()
    PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1

In some architectures, PCI bus have the offset from PCI resource.
They are adjusted by pcibios_fixup_bus().

For this reason, pci_setup_device() should set PCI bus regions. 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help