Re: [PATCH] fix IDE legacy mode resource

2007-08-06 Thread Yoichi Yuasa
Hello Jeff,

Do you have any comments?

On Sun, 29 Jul 2007 17:15:44 +0900
Yoichi Yuasa [EMAIL PROTECTED] wrote:

 On Sat, 28 Jul 2007 14:13:06 -0400
 Jeff Garzik [EMAIL PROTECTED] wrote:
 
  Yoichi Yuasa wrote:
   Hi,
   
   I got the following error on MIPS Cobalt.
   MIPS Cobalt has the 0x1000 offset between resource and bus region. 
   
   PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device 
   :00:09.1
   pata_via :00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
   PCI: Unable to reserve I/O region #3:[EMAIL PROTECTED] for device 
   :00:09.1
   pata_via :00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
   pata_via :00:09.1: no available native port
   
   At this point, these resources should be the bus regions.
   
   Signed-off-by: Yoichi Yuasa [EMAIL PROTECTED]
  
  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 -0x1000 offset from PCI resources.
 pcibios_fixup_bus() fix PCI bus regions.
 0x1F0 - 0x1000 = 0xF1F0
 |
 V
 ata_pci_init_one()
 PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device 
 :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. 
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] fix IDE legacy mode resource

2007-07-29 Thread Yoichi Yuasa
On Sat, 28 Jul 2007 14:13:06 -0400
Jeff Garzik [EMAIL PROTECTED] wrote:

 Yoichi Yuasa wrote:
  Hi,
  
  I got the following error on MIPS Cobalt.
  MIPS Cobalt has the 0x1000 offset between resource and bus region. 
  
  PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device 
  :00:09.1
  pata_via :00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
  PCI: Unable to reserve I/O region #3:[EMAIL PROTECTED] for device 
  :00:09.1
  pata_via :00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
  pata_via :00:09.1: no available native port
  
  At this point, these resources should be the bus regions.
  
  Signed-off-by: Yoichi Yuasa [EMAIL PROTECTED]
 
 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 -0x1000 offset from PCI resources.
pcibios_fixup_bus() fix PCI bus regions.
0x1F0 - 0x1000 = 0xF1F0
|
V
ata_pci_init_one()
PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device 
: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
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] fix IDE legacy mode resource

2007-07-28 Thread Yoichi Yuasa
Hi,

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

PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device :00:09.1
pata_via :00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
PCI: Unable to reserve I/O region #3:[EMAIL PROTECTED] for device :00:09.1
pata_via :00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
pata_via :00:09.1: no available native port

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

Signed-off-by: Yoichi Yuasa [EMAIL PROTECTED]

diff -pruN -X generic/Documentation/dontdiff generic-orig/drivers/pci/probe.c 
generic/drivers/pci/probe.c
--- generic-orig/drivers/pci/probe.c2007-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, region, 
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, region, 
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, region, 
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, region, 
resource);
+   dev-resource[3].start = region.start;
+   dev-resource[3].end = region.end;
+   dev-resource[3].flags = resource.flags;
}
}
break;
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] fix IDE legacy mode resource

2007-07-28 Thread Jeff Garzik

Yoichi Yuasa wrote:

Hi,

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


PCI: Unable to reserve I/O region #1:[EMAIL PROTECTED] for device :00:09.1
pata_via :00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
PCI: Unable to reserve I/O region #3:[EMAIL PROTECTED] for device :00:09.1
pata_via :00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
pata_via :00:09.1: no available native port

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

Signed-off-by: Yoichi Yuasa [EMAIL PROTECTED]


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



-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html