* [PATCH] fix IDE legacy mode resource
@ 2007-07-28 13:04 Yoichi Yuasa
2007-07-28 18:13 ` Jeff Garzik
0 siblings, 1 reply; 4+ messages in thread
From: Yoichi Yuasa @ 2007-07-28 13:04 UTC (permalink / raw)
To: Greg KH; +Cc: yoichi_yuasa, Linux Kernel Mailing List, linux-ide
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 <yoichi_yuasa@tripeaks.co.jp>
diff -pruN -X generic/Documentation/dontdiff generic-orig/drivers/pci/probe.c generic/drivers/pci/probe.c
--- generic-orig/drivers/pci/probe.c 2007-07-26 17:07:44.151670750 +0900
+++ generic/drivers/pci/probe.c 2007-07-26 17:25:42.227046250 +0900
@@ -744,22 +744,40 @@ static int pci_setup_device(struct pci_d
*/
if (class == PCI_CLASS_STORAGE_IDE) {
u8 progif;
+ struct pci_bus_region region;
+ struct resource resource;
pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
if ((progif & 1) == 0) {
- dev->resource[0].start = 0x1F0;
- dev->resource[0].end = 0x1F7;
- dev->resource[0].flags = LEGACY_IO_RESOURCE;
- dev->resource[1].start = 0x3F6;
- dev->resource[1].end = 0x3F6;
- dev->resource[1].flags = LEGACY_IO_RESOURCE;
+ resource.start = 0x1F0;
+ resource.end = 0x1F7;
+ resource.flags = LEGACY_IO_RESOURCE;
+ pcibios_resource_to_bus(dev, ®ion, &resource);
+ dev->resource[0].start = region.start;
+ dev->resource[0].end = region.end;
+ dev->resource[0].flags = resource.flags;
+ resource.start = 0x3F6;
+ resource.end = 0x3F6;
+ resource.flags = LEGACY_IO_RESOURCE;
+ pcibios_resource_to_bus(dev, ®ion, &resource);
+ dev->resource[1].start = region.start;
+ dev->resource[1].end = region.end;
+ dev->resource[1].flags = resource.flags;
}
if ((progif & 4) == 0) {
- dev->resource[2].start = 0x170;
- dev->resource[2].end = 0x177;
- dev->resource[2].flags = LEGACY_IO_RESOURCE;
- dev->resource[3].start = 0x376;
- dev->resource[3].end = 0x376;
- dev->resource[3].flags = LEGACY_IO_RESOURCE;
+ resource.start = 0x170;
+ resource.end = 0x177;
+ resource.flags = LEGACY_IO_RESOURCE;
+ pcibios_resource_to_bus(dev, ®ion, &resource);
+ dev->resource[2].start = region.start;
+ dev->resource[2].end = region.end;
+ dev->resource[2].flags = resource.flags;
+ resource.start = 0x376;
+ resource.end = 0x376;
+ resource.flags = LEGACY_IO_RESOURCE;
+ pcibios_resource_to_bus(dev, ®ion, &resource);
+ dev->resource[3].start = region.start;
+ dev->resource[3].end = region.end;
+ dev->resource[3].flags = resource.flags;
}
}
break;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fix IDE legacy mode resource
2007-07-28 13:04 [PATCH] fix IDE legacy mode resource Yoichi Yuasa
@ 2007-07-28 18:13 ` Jeff Garzik
2007-07-29 8:15 ` Yoichi Yuasa
0 siblings, 1 reply; 4+ messages in thread
From: Jeff Garzik @ 2007-07-28 18:13 UTC (permalink / raw)
To: Yoichi Yuasa; +Cc: Greg KH, Linux Kernel Mailing List, linux-ide, Alan
Yoichi Yuasa wrote:
> 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 <yoichi_yuasa@tripeaks.co.jp>
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?
Thanks,
Jeff
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fix IDE legacy mode resource
2007-07-28 18:13 ` Jeff Garzik
@ 2007-07-29 8:15 ` Yoichi Yuasa
2007-08-06 14:56 ` Yoichi Yuasa
0 siblings, 1 reply; 4+ messages in thread
From: Yoichi Yuasa @ 2007-07-29 8:15 UTC (permalink / raw)
To: Jeff Garzik; +Cc: yoichi_yuasa, greg, linux-kernel, linux-ide, alan
On Sat, 28 Jul 2007 14:13:06 -0400
Jeff Garzik <jeff@garzik.org> wrote:
> Yoichi Yuasa wrote:
> > 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 <yoichi_yuasa@tripeaks.co.jp>
>
> 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.
Yoichi
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fix IDE legacy mode resource
2007-07-29 8:15 ` Yoichi Yuasa
@ 2007-08-06 14:56 ` Yoichi Yuasa
0 siblings, 0 replies; 4+ messages in thread
From: Yoichi Yuasa @ 2007-08-06 14:56 UTC (permalink / raw)
To: jeff; +Cc: yoichi_yuasa, greg, linux-kernel, linux-ide, alan
Hello Jeff,
Do you have any comments?
On Sun, 29 Jul 2007 17:15:44 +0900
Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> wrote:
> On Sat, 28 Jul 2007 14:13:06 -0400
> Jeff Garzik <jeff@garzik.org> wrote:
>
> > Yoichi Yuasa wrote:
> > > 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 <yoichi_yuasa@tripeaks.co.jp>
> >
> > 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-08-06 14:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-28 13:04 [PATCH] fix IDE legacy mode resource Yoichi Yuasa
2007-07-28 18:13 ` Jeff Garzik
2007-07-29 8:15 ` Yoichi Yuasa
2007-08-06 14:56 ` Yoichi Yuasa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox