WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [rfc 08/18] iommu: Use PCI_DEVFN to create devfn numbers

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [rfc 08/18] iommu: Use PCI_DEVFN to create devfn numbers
From: Simon Horman <horms@xxxxxxxxxxxx>
Date: Tue, 17 Feb 2009 20:07:56 +1100
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Delivery-date: Tue, 17 Feb 2009 01:28:08 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20090217090748.580007796@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: quilt/0.46-1
It seems to me that this is a lot clearer and less prone to error.

Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: ioemu-remote/hw/apb_pci.c
===================================================================
--- ioemu-remote.orig/hw/apb_pci.c      2009-02-17 17:28:23.000000000 +0900
+++ ioemu-remote/hw/apb_pci.c   2009-02-17 17:29:05.000000000 +0900
@@ -255,9 +255,10 @@ PCIBus *pci_apb_init(target_phys_addr_t 
     d->config[0x0E] = 0x00; // header_type
 
     /* APB secondary busses */
-    secondary = pci_bridge_init(s->bus, 8, 0x108e5000, pci_apb_map_irq,
+    secondary = pci_bridge_init(s->bus, PCI_DEVFN(1, 0), 0x108e5000,
+                                pci_apb_map_irq,
                                 "Advanced PCI Bus secondary bridge 1");
-    pci_bridge_init(s->bus, 9, 0x108e5000, pci_apb_map_irq,
+    pci_bridge_init(s->bus, PCI_DEVFN(1, 1), 0x108e5000, pci_apb_map_irq,
                     "Advanced PCI Bus secondary bridge 2");
     return secondary;
 }
Index: ioemu-remote/hw/mips_malta.c
===================================================================
--- ioemu-remote.orig/hw/mips_malta.c   2009-02-17 17:28:23.000000000 +0900
+++ ioemu-remote/hw/mips_malta.c        2009-02-17 17:29:05.000000000 +0900
@@ -495,7 +495,7 @@ static void network_init (PCIBus *pci_bu
         }
         if (i == 0  && strcmp(nd->model, "pcnet") == 0) {
             /* The malta board has a PCNet card using PCI SLOT 11 */
-            pci_nic_init(pci_bus, nd, 88);
+            pci_nic_init(pci_bus, nd, PCI_DEVFN(11, 0));
         } else {
             pci_nic_init(pci_bus, nd, PCI_DEVFN_AUTO);
         }
@@ -901,7 +901,7 @@ void mips_malta_init (ram_addr_t ram_siz
             hd[i] = NULL;
     }
 
-    piix4_devfn = piix4_init(pci_bus, 80);
+    piix4_devfn = piix4_init(pci_bus, PCI_DEVFN(10, 0));
     pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1, i8259);
     usb_uhci_piix4_init(pci_bus, piix4_devfn + 2);
     smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, i8259[9]);
Index: ioemu-remote/hw/unin_pci.c
===================================================================
--- ioemu-remote.orig/hw/unin_pci.c     2009-02-17 17:28:23.000000000 +0900
+++ ioemu-remote/hw/unin_pci.c  2009-02-17 17:29:05.000000000 +0900
@@ -173,7 +173,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic)
     cpu_register_physical_memory(0xf2800000, 0x1000, pci_mem_config);
     cpu_register_physical_memory(0xf2c00000, 0x1000, pci_mem_data);
     d = pci_register_device(s->bus, "Uni-north main", sizeof(PCIDevice),
-                            11 << 3, NULL, NULL);
+                           PCI_DEVFN(11, 0), NULL, NULL);
     d->config[0x00] = 0x6b; // vendor_id : Apple
     d->config[0x01] = 0x10;
     d->config[0x02] = 0x1F; // device_id
@@ -188,8 +188,8 @@ PCIBus *pci_pmac_init(qemu_irq *pic)
 
 #if 0 // XXX: not activated as PPC BIOS doesn't handle multiple buses properly
     /* pci-to-pci bridge */
-    d = pci_register_device("Uni-north bridge", sizeof(PCIDevice), 0, 13 << 3,
-                            NULL, NULL);
+    d = pci_register_device("Uni-north bridge", sizeof(PCIDevice), 0,
+                            PCI_DEVFN(13, 0), NULL, NULL);
     d->config[0x00] = 0x11; // vendor_id : TI
     d->config[0x01] = 0x10;
     d->config[0x02] = 0x26; // device_id
@@ -227,8 +227,8 @@ PCIBus *pci_pmac_init(qemu_irq *pic)
     cpu_register_physical_memory(0xf0800000, 0x1000, pci_mem_config);
     cpu_register_physical_memory(0xf0c00000, 0x1000, pci_mem_data);
 
-    d = pci_register_device("Uni-north AGP", sizeof(PCIDevice), 0, 11 << 3,
-                            NULL, NULL);
+    d = pci_register_device("Uni-north AGP", sizeof(PCIDevice), 0,
+                            PCI_DEVFN(11, 0), NULL, NULL);
     d->config[0x00] = 0x6b; // vendor_id : Apple
     d->config[0x01] = 0x10;
     d->config[0x02] = 0x20; // device_id
@@ -253,7 +253,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic)
     cpu_register_physical_memory(0xf4c00000, 0x1000, pci_mem_data);
 
     d = pci_register_device("Uni-north internal", sizeof(PCIDevice),
-                            3, 11 << 3, NULL, NULL);
+                            3, PCI_DEVFN(11, 0), NULL, NULL);
     d->config[0x00] = 0x6b; // vendor_id : Apple
     d->config[0x01] = 0x10;
     d->config[0x02] = 0x1E; // device_id
Index: ioemu-remote/hw/pass-through.c
===================================================================
--- ioemu-remote.orig/hw/pass-through.c 2009-02-17 17:28:23.000000000 +0900
+++ ioemu-remote/hw/pass-through.c      2009-02-17 17:29:05.000000000 +0900
@@ -3333,7 +3333,7 @@ int power_on_php_slot(int php_slot)
     pt_dev = 
         register_real_device(dpci_infos.e_bus,
             "DIRECT PCI",
-            pci_slot << 3,
+            PCI_DEVFN(pci_slot, 0),
             php_dev->r_bus,
             php_dev->r_dev,
             php_dev->r_func,

-- 

-- 
Simon Horman
  VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
  H: www.vergenet.net/~horms/             W: www.valinux.co.jp/en


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>