tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

basic support for (software concept) "pci domains" in the MI pci code



hi folks.


to support modern Xorg and modern xen, we need a sane way to export the
concept of "pci domains" to userland.  cegger has posted code in the past
around this, but i've reimplemented the basics for the kernel side in
the below patch.  it adds pba_domain to pcibus_attach_args{}, pa_domain
to pci_attach_args{}, sc_domain the pci_softc{} and similar for cardbus,
and made the generic code pass it around as necessary.

for alpha systems where i could detect the "hose" i've used that to set
pba_domain, and all other systems have it set to 0.

i expect that the macppc code needs help, and also sparc64 probably
does as well.


the patch below does not yet include any support for exporting this to
userland directly via pci_usrreq.c but i have a simple patch for it and
for libpciaccess to correct the current problems it has (not fully
tested yet.)  it merely adds the basic framework support.


i plan to commit this in a couple of days, and it will also be needed
for netbsd-5 branch if netbsd 5.1 is going to ship with newer Xorg.

i have built a total of 34 kernels to compile-test the full change,
and have boot-tested amd64 and i386 so far (will also do sparc64.)


.mrg.


Index: arch/algor/dev/bonito_mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/algor/dev/bonito_mainbus.c,v
retrieving revision 1.11
diff -p -r1.11 bonito_mainbus.c
*** arch/algor/dev/bonito_mainbus.c     28 Apr 2008 20:23:10 -0000      1.11
--- arch/algor/dev/bonito_mainbus.c     23 Aug 2009 02:03:57 -0000
*************** bonito_mainbus_attach(struct device *par
*** 96,101 ****
--- 96,102 ----
  
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
  #if defined(ALGOR_P6032)
Index: arch/algor/dev/vtpbc_mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/algor/dev/vtpbc_mainbus.c,v
retrieving revision 1.15
diff -p -r1.15 vtpbc_mainbus.c
*** arch/algor/dev/vtpbc_mainbus.c      28 Apr 2008 20:23:10 -0000      1.15
--- arch/algor/dev/vtpbc_mainbus.c      23 Aug 2009 02:03:57 -0000
*************** vtpbc_mainbus_attach(struct device *pare
*** 102,107 ****
--- 102,108 ----
  
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        if (vt->vt_pci_iobase == (bus_addr_t) -1)
Index: arch/alpha/pci/a12c.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/a12c.c,v
retrieving revision 1.21
diff -p -r1.21 a12c.c
*** arch/alpha/pci/a12c.c       14 Mar 2009 21:04:02 -0000      1.21
--- arch/alpha/pci/a12c.c       23 Aug 2009 02:03:57 -0000
*************** a12cattach(struct device *parent, struct
*** 147,152 ****
--- 147,153 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &ccp->ac_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/apecs.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/apecs.c,v
retrieving revision 1.49
diff -p -r1.49 apecs.c
*** arch/alpha/pci/apecs.c      14 Mar 2009 21:04:02 -0000      1.49
--- arch/alpha/pci/apecs.c      23 Aug 2009 02:03:57 -0000
*************** apecsattach(struct device *parent, struc
*** 231,236 ****
--- 231,237 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &acp->ac_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/cia.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/cia.c,v
retrieving revision 1.69
diff -p -r1.69 cia.c
*** arch/alpha/pci/cia.c        14 Mar 2009 21:04:02 -0000      1.69
--- arch/alpha/pci/cia.c        23 Aug 2009 02:03:57 -0000
*************** ciaattach(struct device *parent, struct 
*** 401,406 ****
--- 401,407 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &ccp->cc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        if ((ccp->cc_flags & CCF_PYXISBUG) == 0)
Index: arch/alpha/pci/dwlpx.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/dwlpx.c,v
retrieving revision 1.34
diff -p -r1.34 dwlpx.c
*** arch/alpha/pci/dwlpx.c      14 Mar 2009 15:35:59 -0000      1.34
--- arch/alpha/pci/dwlpx.c      23 Aug 2009 02:03:57 -0000
*************** dwlpxattach(struct device *parent, struc
*** 176,181 ****
--- 176,182 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &sc->dwlpx_cc.cc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = ka->ka_hosenum;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/irongate.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/irongate.c,v
retrieving revision 1.14
diff -p -r1.14 irongate.c
*** arch/alpha/pci/irongate.c   28 Apr 2008 20:23:11 -0000      1.14
--- arch/alpha/pci/irongate.c   23 Aug 2009 02:03:57 -0000
*************** irongate_attach(struct device *parent, s
*** 176,181 ****
--- 176,182 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &icp->ic_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/lca.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/lca.c,v
retrieving revision 1.47
diff -p -r1.47 lca.c
*** arch/alpha/pci/lca.c        14 Mar 2009 21:04:02 -0000      1.47
--- arch/alpha/pci/lca.c        23 Aug 2009 02:03:57 -0000
*************** lcaattach(struct device *parent, struct 
*** 235,240 ****
--- 235,241 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &lcp->lc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/mcpcia.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/mcpcia.c,v
retrieving revision 1.26
diff -p -r1.26 mcpcia.c
*** arch/alpha/pci/mcpcia.c     18 Mar 2009 10:22:22 -0000      1.26
--- arch/alpha/pci/mcpcia.c     23 Aug 2009 02:03:57 -0000
*************** mcpciaattach(struct device *parent, stru
*** 186,191 ****
--- 186,192 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &ccp->cc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;     /* XXX? */
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/tsc.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/tsc.c,v
retrieving revision 1.16
diff -p -r1.16 tsc.c
*** arch/alpha/pci/tsc.c        14 Mar 2009 21:04:02 -0000      1.16
--- arch/alpha/pci/tsc.c        23 Aug 2009 02:03:57 -0000
*************** tspattach(struct device *parent, struct 
*** 185,190 ****
--- 185,191 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &pcp->pc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;     /* XXX what hose? */
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/alpha/pci/ttwoga.c
===================================================================
RCS file: /cvsroot/src/sys/arch/alpha/pci/ttwoga.c,v
retrieving revision 1.11
diff -p -r1.11 ttwoga.c
*** arch/alpha/pci/ttwoga.c     28 Apr 2008 20:23:11 -0000      1.11
--- arch/alpha/pci/ttwoga.c     23 Aug 2009 02:03:57 -0000
*************** ttwopciattach(struct device *parent, str
*** 257,262 ****
--- 257,263 ----
            alphabus_dma_get_tag(&tcp->tc_dmat_direct, ALPHA_BUS_PCI);
        npba.pba_dmat64 = NULL;
        npba.pba_pc = &tcp->tc_pc;
+       npba.pba_domain = tcp->tc_hose;
        npba.pba_bus = 0;
        npba.pba_bridgetag = NULL;
        npba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/amd64/amd64/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/amd64/amd64/mainbus.c,v
retrieving revision 1.29
diff -p -r1.29 mainbus.c
*** arch/amd64/amd64/mainbus.c  18 Aug 2009 16:41:02 -0000      1.29
--- arch/amd64/amd64/mainbus.c  23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(device_t parent, device_t
*** 262,267 ****
--- 262,268 ----
                mba.mba_pba.pba_pc = NULL;
                mba.mba_pba.pba_flags = pci_bus_flags();
                mba.mba_pba.pba_bus = 0;
+               mba.mba_pba.pba_domain = 0;
                mba.mba_pba.pba_bridgetag = NULL;
  #if NACPICA > 0 && defined(ACPI_SCANPCI)
                if (npcibus == 0 && mpacpi_active)
Index: arch/arc/pci/necpb.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arc/pci/necpb.c,v
retrieving revision 1.32
diff -p -r1.32 necpb.c
*** arch/arc/pci/necpb.c        5 Jul 2008 08:46:25 -0000       1.32
--- arch/arc/pci/necpb.c        23 Aug 2009 02:03:57 -0000
*************** necpbattach(device_t parent, device_t se
*** 263,268 ****
--- 263,269 ----
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        config_found_ia(self, "pcibus", &pba, pcibusprint);
Index: arch/arm/gemini/gemini_obio.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/gemini/gemini_obio.c,v
retrieving revision 1.7
diff -p -r1.7 gemini_obio.c
*** arch/arm/gemini/gemini_obio.c       20 Nov 2008 20:23:05 -0000      1.7
--- arch/arm/gemini/gemini_obio.c       23 Aug 2009 02:03:57 -0000
*************** obio_attach(device_t parent, device_t se
*** 216,221 ****
--- 216,222 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &sc->sc_pci_chipset;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_intrswiz = 0;
        pba.pba_intrtag = 0;
Index: arch/arm/ixp12x0/ixp12x0.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/ixp12x0/ixp12x0.c,v
retrieving revision 1.15
diff -p -r1.15 ixp12x0.c
*** arch/arm/ixp12x0/ixp12x0.c  14 Mar 2009 15:36:02 -0000      1.15
--- arch/arm/ixp12x0/ixp12x0.c  23 Aug 2009 02:03:57 -0000
*************** ixp12x0_attach(struct ixp12x0_softc *sc)
*** 178,183 ****
--- 178,184 ----
        pba.pba_dmat = &sc->ia_pci_dmat;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = 0;        /* bus number = 0 */
+       pba.pba_domain = 0;
        pba.pba_intrswiz = 0;   /* XXX */
        pba.pba_intrtag = 0;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
Index: arch/arm/s3c2xx0/s3c2800_pci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/s3c2xx0/s3c2800_pci.c,v
retrieving revision 1.13
diff -p -r1.13 s3c2800_pci.c
*** arch/arm/s3c2xx0/s3c2800_pci.c      6 Jan 2008 01:37:56 -0000       1.13
--- arch/arm/s3c2xx0/s3c2800_pci.c      23 Aug 2009 02:03:57 -0000
*************** sspci_attach(struct device *parent, stru
*** 326,331 ****
--- 326,332 ----
        pci_pba.pba_dmat64 = NULL;
        pci_pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pci_pba.pba_bus = 0;
+       pci_pba.pba_domain = 0;
        pci_pba.pba_bridgetag = NULL;
  
        config_found_ia(self, "pcibus", &pci_pba, pcibusprint);
Index: arch/arm/xscale/becc.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/becc.c,v
retrieving revision 1.12
diff -p -r1.12 becc.c
*** arch/arm/xscale/becc.c      24 Dec 2005 20:06:52 -0000      1.12
--- arch/arm/xscale/becc.c      23 Aug 2009 02:03:57 -0000
*************** becc_attach(struct becc_softc *sc)
*** 205,210 ****
--- 205,211 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &sc->sc_pci_chipset;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_intrswiz = 0;
        pba.pba_intrtag = 0;
Index: arch/arm/xscale/i80312.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/i80312.c,v
retrieving revision 1.19
diff -p -r1.19 i80312.c
*** arch/arm/xscale/i80312.c    25 Feb 2006 02:28:56 -0000      1.19
--- arch/arm/xscale/i80312.c    23 Aug 2009 02:03:57 -0000
*************** i80312_attach(struct i80312_softc *sc)
*** 313,318 ****
--- 313,319 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &sc->sc_pci_chipset;
        pba.pba_bus = PPB_BUSINFO_SECONDARY(preg);
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_intrswiz = 3;
        pba.pba_intrtag = 0;
Index: arch/arm/xscale/i80321.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/i80321.c,v
retrieving revision 1.20
diff -p -r1.20 i80321.c
*** arch/arm/xscale/i80321.c    17 Oct 2007 19:53:43 -0000      1.20
--- arch/arm/xscale/i80321.c    23 Aug 2009 02:03:57 -0000
*************** i80321_attach(struct i80321_softc *sc)
*** 283,288 ****
--- 283,289 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = &sc->sc_pci_chipset;
        pba.pba_bus = preg;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_intrswiz = 0;   /* XXX what if busno != 0? */
        pba.pba_intrtag = 0;
Index: arch/arm/xscale/ixp425.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/ixp425.c,v
retrieving revision 1.12
diff -p -r1.12 ixp425.c
*** arch/arm/xscale/ixp425.c    17 Mar 2009 00:51:27 -0000      1.12
--- arch/arm/xscale/ixp425.c    23 Aug 2009 02:03:57 -0000
*************** ixp425_attach(struct ixp425_softc *sc)
*** 106,111 ****
--- 106,112 ----
        pba.pba_memt = &sc->sc_pci_memt;
        pba.pba_dmat = &sc->ia_pci_dmat;
        pba.pba_bus = 0;        /* bus number = 0 */
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_intrswiz = 0;   /* XXX */
        pba.pba_intrtag = 0;
Index: arch/atari/pci/pci_machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/atari/pci/pci_machdep.c,v
retrieving revision 1.47
diff -p -r1.47 pci_machdep.c
*** arch/atari/pci/pci_machdep.c        18 Mar 2009 10:22:25 -0000      1.47
--- arch/atari/pci/pci_machdep.c        23 Aug 2009 02:03:57 -0000
*************** pcibusattach(struct device *pdp, struct 
*** 168,173 ****
--- 168,174 ----
  
        pba.pba_pc      = NULL;
        pba.pba_bus     = 0;
+       pba.pba_domain  = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags   = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_dmat    = &pci_bus_dma_tag;
Index: arch/bebox/bebox/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/bebox/bebox/mainbus.c,v
retrieving revision 1.24
diff -p -r1.24 mainbus.c
*** arch/bebox/bebox/mainbus.c  18 Mar 2009 16:00:10 -0000      1.24
--- arch/bebox/bebox/mainbus.c  23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(struct device *parent, st
*** 152,157 ****
--- 152,158 ----
        mba.mba_pba.pba_dmat64 = NULL;
        mba.mba_pba.pba_pc = genppc_pct;
        mba.mba_pba.pba_bus = 0;
+       mba.mba_pba.pba_domain = 0;
        mba.mba_pba.pba_bridgetag = NULL;
        mba.mba_pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found_ia(self, "pcibus", &mba.mba_pba, pcibusprint);
Index: arch/cobalt/dev/gt.c
===================================================================
RCS file: /cvsroot/src/sys/arch/cobalt/dev/gt.c,v
retrieving revision 1.21
diff -p -r1.21 gt.c
*** arch/cobalt/dev/gt.c        9 May 2008 10:59:55 -0000       1.21
--- arch/cobalt/dev/gt.c        23 Aug 2009 02:03:57 -0000
*************** gt_attach(device_t parent, device_t self
*** 138,143 ****
--- 138,144 ----
        pba.pba_dmat64 = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
                PCI_FLAGS_MRL_OKAY | /*PCI_FLAGS_MRM_OKAY|*/ PCI_FLAGS_MWI_OKAY;
Index: arch/evbarm/ifpga/ifpga.c
===================================================================
RCS file: /cvsroot/src/sys/arch/evbarm/ifpga/ifpga.c,v
retrieving revision 1.23
diff -p -r1.23 ifpga.c
*** arch/evbarm/ifpga/ifpga.c   21 Jul 2009 16:04:16 -0000      1.23
--- arch/evbarm/ifpga/ifpga.c   23 Aug 2009 02:03:57 -0000
*************** ifpga_attach(device_t parent, device_t s
*** 327,332 ****
--- 327,333 ----
        pci_pba.pba_dmat64 = NULL;
        pci_pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pci_pba.pba_bus = 0;
+       pci_pba.pba_domain = 0;
        pci_pba.pba_bridgetag = NULL;
        
        config_found_ia(self, "pcibus", &pci_pba, pcibusprint);
Index: arch/evbmips/gdium/bonito_mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/evbmips/gdium/bonito_mainbus.c,v
retrieving revision 1.1
diff -p -r1.1 bonito_mainbus.c
*** arch/evbmips/gdium/bonito_mainbus.c 6 Aug 2009 00:50:25 -0000       1.1
--- arch/evbmips/gdium/bonito_mainbus.c 23 Aug 2009 02:03:57 -0000
*************** bonito_mainbus_attach(device_t parent, d
*** 84,89 ****
--- 84,90 ----
  
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        pba.pba_iot = &gc->gc_iot;
Index: arch/evbmips/malta/dev/gt.c
===================================================================
RCS file: /cvsroot/src/sys/arch/evbmips/malta/dev/gt.c,v
retrieving revision 1.11
diff -p -r1.11 gt.c
*** arch/evbmips/malta/dev/gt.c 14 Mar 2009 15:36:06 -0000      1.11
--- arch/evbmips/malta/dev/gt.c 23 Aug 2009 02:03:57 -0000
*************** gt_attach(struct device *parent, struct 
*** 111,116 ****
--- 111,117 ----
  #if NPCI > 0
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_iot = &mcp->mc_iot;
        pba.pba_memt = &mcp->mc_memt;
Index: arch/hp700/dev/dino.c
===================================================================
RCS file: /cvsroot/src/sys/arch/hp700/dev/dino.c,v
retrieving revision 1.14
diff -p -r1.14 dino.c
*** arch/hp700/dev/dino.c       23 Jul 2009 13:34:26 -0000      1.14
--- arch/hp700/dev/dino.c       23 Aug 2009 02:03:57 -0000
*************** dinoattach(device_t parent, device_t sel
*** 1706,1711 ****
--- 1706,1712 ----
        pba.pba_dmat = &sc->sc_dmatag;
        pba.pba_pc = &sc->sc_pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found_ia(self, "pcibus", &pba, pcibusprint);
  }
Index: arch/hp700/dev/elroy.c
===================================================================
RCS file: /cvsroot/src/sys/arch/hp700/dev/elroy.c,v
retrieving revision 1.8
diff -p -r1.8 elroy.c
*** arch/hp700/dev/elroy.c      23 Jul 2009 13:34:26 -0000      1.8
--- arch/hp700/dev/elroy.c      23 Aug 2009 02:03:57 -0000
*************** le64toh(r->eio_base), le64toh(r->eio_mas
*** 1316,1321 ****
--- 1316,1322 ----
        pba.pba_dmat = &sc->sc_dmatag;
        pba.pba_pc = &sc->sc_pc;
        pba.pba_bus = 0; /* (le32toh(elroy_read32(&r->busnum)) & 0xff) >> 4; */
+       pba.pba_domain = 0;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
  
        config_found_ia(self, "pcibus", &pba, pcibusprint);
Index: arch/hpcmips/vr/vrc4172pci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/hpcmips/vr/vrc4172pci.c,v
retrieving revision 1.13
diff -p -r1.13 vrc4172pci.c
*** arch/hpcmips/vr/vrc4172pci.c        11 Dec 2005 12:17:34 -0000      1.13
--- arch/hpcmips/vr/vrc4172pci.c        23 Aug 2009 02:03:57 -0000
*************** vrc4172pci_attach(struct device *parent,
*** 199,204 ****
--- 199,205 ----
        pba.pba_dmat = &hpcmips_default_bus_dma_tag.bdt;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY;
Index: arch/hpcmips/vr/vrpciu.c
===================================================================
RCS file: /cvsroot/src/sys/arch/hpcmips/vr/vrpciu.c,v
retrieving revision 1.17
diff -p -r1.17 vrpciu.c
*** arch/hpcmips/vr/vrpciu.c    11 Dec 2005 12:17:35 -0000      1.17
--- arch/hpcmips/vr/vrpciu.c    23 Aug 2009 02:03:57 -0000
*************** vrpciu_attach(struct device *parent, str
*** 298,303 ****
--- 298,304 ----
        pba.pba_dmat = &hpcmips_default_bus_dma_tag.bdt;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        if (platid_match(&platid, &platid_mask_MACH_LASER5_L_BOARD)) {
Index: arch/i386/i386/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/i386/i386/mainbus.c,v
retrieving revision 1.87
diff -p -r1.87 mainbus.c
*** arch/i386/i386/mainbus.c    18 Aug 2009 16:41:02 -0000      1.87
--- arch/i386/i386/mainbus.c    23 Aug 2009 02:03:57 -0000
*************** mainbus_rescan(device_t self, const char
*** 407,412 ****
--- 407,413 ----
                mba.mba_pba.pba_pc = NULL;
                mba.mba_pba.pba_flags = pci_bus_flags();
                mba.mba_pba.pba_bus = 0;
+               mba.mba_pba.pba_domain = 0;
                mba.mba_pba.pba_bridgetag = NULL;
  #if NACPICA > 0 && defined(ACPI_SCANPCI)
                if (npcibus == 0 && sc->sc_mpacpi_active)
Index: arch/i386/pci/elan520.c
===================================================================
RCS file: /cvsroot/src/sys/arch/i386/pci/elan520.c,v
retrieving revision 1.42
diff -p -r1.42 elan520.c
*** arch/i386/pci/elan520.c     29 Apr 2009 23:50:53 -0000      1.42
--- arch/i386/pci/elan520.c     23 Aug 2009 02:03:57 -0000
*************** elansc_rescan(device_t self, const char 
*** 1476,1481 ****
--- 1476,1482 ----
                pba.pba_pc = sc->sc_pc;
                pba.pba_flags = sc->sc_pciflags;
                pba.pba_bus = 0;
+               pba.pba_domain = 0;
                pba.pba_bridgetag = NULL;
                sc->sc_pci = config_found_ia(self, "pcibus", &pba, pcibusprint);
        }
Index: arch/ibmnws/ibmnws/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/ibmnws/ibmnws/mainbus.c,v
retrieving revision 1.8
diff -p -r1.8 mainbus.c
*** arch/ibmnws/ibmnws/mainbus.c        18 Mar 2009 16:00:13 -0000      1.8
--- arch/ibmnws/ibmnws/mainbus.c        23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(device_t parent, device_t
*** 142,147 ****
--- 142,148 ----
        mba.mba_pba.pba_dmat64 = NULL;
        mba.mba_pba.pba_pc = genppc_pct;
        mba.mba_pba.pba_bus = 0;
+       mba.mba_pba.pba_domain = 0;
        mba.mba_pba.pba_bridgetag = NULL;
        mba.mba_pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found_ia(self, "pcibus", &mba.mba_pba, pcibusprint);
Index: arch/macppc/pci/bandit.c
===================================================================
RCS file: /cvsroot/src/sys/arch/macppc/pci/bandit.c,v
retrieving revision 1.26
diff -p -r1.26 bandit.c
*** arch/macppc/pci/bandit.c    17 Oct 2007 19:55:34 -0000      1.26
--- arch/macppc/pci/bandit.c    23 Aug 2009 02:03:57 -0000
*************** bandit_attach(struct device *parent, str
*** 140,145 ****
--- 140,146 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = pc->pc_bus;
+       pba.pba_domain = 0;     /* XXX? */
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/macppc/pci/grackle.c
===================================================================
RCS file: /cvsroot/src/sys/arch/macppc/pci/grackle.c,v
retrieving revision 1.11
diff -p -r1.11 grackle.c
*** arch/macppc/pci/grackle.c   17 Oct 2007 19:55:34 -0000      1.11
--- arch/macppc/pci/grackle.c   23 Aug 2009 02:03:57 -0000
*************** grackle_attach(struct device *parent, st
*** 140,145 ****
--- 140,146 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = pc->pc_bus;
+       pba.pba_domain = 0;     /* XXX? */
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/macppc/pci/u3.c
===================================================================
RCS file: /cvsroot/src/sys/arch/macppc/pci/u3.c,v
retrieving revision 1.2
diff -p -r1.2 u3.c
*** arch/macppc/pci/u3.c        17 Oct 2007 19:55:35 -0000      1.2
--- arch/macppc/pci/u3.c        23 Aug 2009 02:03:57 -0000
*************** ibmcpc_attach(struct device *parent, str
*** 152,157 ****
--- 152,158 ----
                pba.pba_bridgetag = NULL;
                pba.pba_pc = pc;
                pba.pba_bus = pc->pc_bus;
+               pba.pba_domain = 0;     /* XXX? */
                pba.pba_flags = PCI_FLAGS_MEM_ENABLED | PCI_FLAGS_IO_ENABLED;
                config_found_ia(self, "pcibus", &pba, pcibusprint);
  
Index: arch/macppc/pci/uninorth.c
===================================================================
RCS file: /cvsroot/src/sys/arch/macppc/pci/uninorth.c,v
retrieving revision 1.12
diff -p -r1.12 uninorth.c
*** arch/macppc/pci/uninorth.c  17 Oct 2007 19:55:35 -0000      1.12
--- arch/macppc/pci/uninorth.c  23 Aug 2009 02:03:57 -0000
*************** uninorth_attach(struct device *parent, s
*** 152,157 ****
--- 152,158 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = pc->pc_bus;
+       pba.pba_domain = 0;     /* XXX? */
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/mips/adm5120/dev/admpci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/mips/adm5120/dev/admpci.c,v
retrieving revision 1.1
diff -p -r1.1 admpci.c
*** arch/mips/adm5120/dev/admpci.c      20 Mar 2007 08:52:02 -0000      1.1
--- arch/mips/adm5120/dev/admpci.c      23 Aug 2009 02:03:57 -0000
*************** admpciattach(struct device *parent, stru
*** 265,270 ****
--- 265,271 ----
        pba.pba_pc = &sc->sc_pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        config_found_ia(self, "pcibus", &pba, pcibusprint);
Index: arch/mips/alchemy/dev/aupci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/mips/alchemy/dev/aupci.c,v
retrieving revision 1.8
diff -p -r1.8 aupci.c
*** arch/mips/alchemy/dev/aupci.c       28 Feb 2007 04:21:53 -0000      1.8
--- arch/mips/alchemy/dev/aupci.c       23 Aug 2009 02:03:57 -0000
*************** aupciattach(struct device *parent, struc
*** 283,288 ****
--- 283,289 ----
        pba.pba_pc = &sc->sc_pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
  
        config_found_ia(self, "pcibus", &pba, pcibusprint);
Index: arch/mvmeppc/mvmeppc/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/mvmeppc/mvmeppc/mainbus.c,v
retrieving revision 1.11
diff -p -r1.11 mainbus.c
*** arch/mvmeppc/mvmeppc/mainbus.c      14 Mar 2009 15:36:11 -0000      1.11
--- arch/mvmeppc/mvmeppc/mainbus.c      23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(struct device *parent, st
*** 135,140 ****
--- 135,141 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = genppc_pct;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found_ia(self, "pcibus", &pba, pcibusprint);
Index: arch/ofppc/pci/ofwpci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/ofppc/pci/ofwpci.c,v
retrieving revision 1.8
diff -p -r1.8 ofwpci.c
*** arch/ofppc/pci/ofwpci.c     28 Apr 2008 20:23:31 -0000      1.8
--- arch/ofppc/pci/ofwpci.c     23 Aug 2009 02:03:57 -0000
*************** ofwpci_attach(struct device *parent, str
*** 216,221 ****
--- 216,222 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = pc->pc_bus;
+       pba.pba_domain = 0;     /* XXX? */
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/ofppc/pci/pegasospci.c
===================================================================
RCS file: /cvsroot/src/sys/arch/ofppc/pci/pegasospci.c,v
retrieving revision 1.14
diff -p -r1.14 pegasospci.c
*** arch/ofppc/pci/pegasospci.c 28 Apr 2008 20:23:31 -0000      1.14
--- arch/ofppc/pci/pegasospci.c 23 Aug 2009 02:03:57 -0000
*************** pegasospci_attach(struct device *parent,
*** 227,232 ****
--- 227,233 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = pc->pc_bus;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pc;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/powerpc/ibm4xx/pci/pchb.c
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/pci/pchb.c,v
retrieving revision 1.6
diff -p -r1.6 pchb.c
*** arch/powerpc/ibm4xx/pci/pchb.c      4 May 2008 00:08:45 -0000       1.6
--- arch/powerpc/ibm4xx/pci/pchb.c      23 Aug 2009 02:03:57 -0000
*************** pchbattach(struct device *parent, struct
*** 178,183 ****
--- 178,184 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = pc;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_MEM_ENABLED | PCI_FLAGS_IO_ENABLED;
        config_found_ia(self, "pcibus", &pba, pchbprint);
Index: arch/prep/prep/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/prep/prep/mainbus.c,v
retrieving revision 1.29
diff -p -r1.29 mainbus.c
*** arch/prep/prep/mainbus.c    18 Mar 2009 16:00:14 -0000      1.29
--- arch/prep/prep/mainbus.c    23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(struct device *parent, st
*** 175,180 ****
--- 175,181 ----
        mba.mba_pba.pba_dmat64 = NULL;
        mba.mba_pba.pba_pc = genppc_pct;
        mba.mba_pba.pba_bus = 0;
+       mba.mba_pba.pba_domain = 0;
        mba.mba_pba.pba_bridgetag = NULL;
        mba.mba_pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found_ia(self, "pcibus", &mba.mba_pba, pcibusprint);
Index: arch/sandpoint/sandpoint/mainbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sandpoint/sandpoint/mainbus.c,v
retrieving revision 1.21
diff -p -r1.21 mainbus.c
*** arch/sandpoint/sandpoint/mainbus.c  14 Mar 2009 21:04:15 -0000      1.21
--- arch/sandpoint/sandpoint/mainbus.c  23 Aug 2009 02:03:57 -0000
*************** mainbus_attach(struct device *parent, st
*** 114,119 ****
--- 114,120 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_pc = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
Index: arch/sgimips/mace/pci_mace.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sgimips/mace/pci_mace.c,v
retrieving revision 1.9
diff -p -r1.9 pci_mace.c
*** arch/sgimips/mace/pci_mace.c        17 Apr 2007 12:41:57 -0000      1.9
--- arch/sgimips/mace/pci_mace.c        23 Aug 2009 02:03:57 -0000
*************** macepci_attach(struct device *parent, st
*** 156,161 ****
--- 156,162 ----
        pba.pba_dmat = &pci_bus_dma_tag;
        pba.pba_dmat64 = NULL;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED |
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
Index: arch/sh3/dev/shpcic.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sh3/dev/shpcic.c,v
retrieving revision 1.13
diff -p -r1.13 shpcic.c
*** arch/sh3/dev/shpcic.c       2 Aug 2009 00:06:44 -0000       1.13
--- arch/sh3/dev/shpcic.c       23 Aug 2009 02:03:57 -0000
*************** shpcic_attach(device_t parent, device_t 
*** 247,252 ****
--- 247,253 ----
        pba.pba_dmat64 = NULL;
        pba.pba_pc = NULL;
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;
        config_found(self, &pba, NULL);
Index: arch/sparc/sparc/msiiep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/msiiep.c,v
retrieving revision 1.37
diff -p -r1.37 msiiep.c
*** arch/sparc/sparc/msiiep.c   16 May 2009 17:42:35 -0000      1.37
--- arch/sparc/sparc/msiiep.c   23 Aug 2009 02:03:57 -0000
*************** mspcic_attach(struct device *parent, str
*** 346,351 ****
--- 346,352 ----
         * Attach the PCI bus.
         */
        pba.pba_bus = 0;
+       pba.pba_domain = 0;
        pba.pba_bridgetag = NULL;
        pba.pba_iot = sc->sc_iot;
        pba.pba_memt = sc->sc_memt;
Index: arch/sparc64/dev/psycho.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc64/dev/psycho.c,v
retrieving revision 1.95
diff -p -r1.95 psycho.c
*** arch/sparc64/dev/psycho.c   16 Dec 2008 22:35:26 -0000      1.95
--- arch/sparc64/dev/psycho.c   23 Aug 2009 02:03:57 -0000
*************** found:
*** 464,469 ****
--- 464,470 ----
        psycho_get_bus_range(sc->sc_node, psycho_br);
  
        pba.pba_bus = psycho_br[0];
+       pba.pba_domain = 0;     /* XXX */
        pba.pba_bridgetag = NULL;
  
        aprint_normal("bus range %u to %u", psycho_br[0], psycho_br[1]);
Index: arch/sparc64/dev/schizo.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc64/dev/schizo.c,v
retrieving revision 1.8
diff -p -r1.8 schizo.c
*** arch/sparc64/dev/schizo.c   16 Dec 2008 22:35:26 -0000      1.8
--- arch/sparc64/dev/schizo.c   23 Aug 2009 02:03:57 -0000
*************** schizo_init(struct schizo_softc *sc)
*** 234,239 ****
--- 234,240 ----
                panic("schizo: malloc busnode");
  
        pba.pba_bus = busranges[0];
+       pba.pba_domain = 0;     /* XXX */
        pba.pba_bridgetag = NULL;
        pba.pba_pc = pbm->sp_pc;
        pba.pba_flags = pbm->sp_flags;
Index: arch/x86/pci/pchb.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/pci/pchb.c,v
retrieving revision 1.18
diff -p -r1.18 pchb.c
*** arch/x86/pci/pchb.c 7 Apr 2009 17:52:36 -0000       1.18
--- arch/x86/pci/pchb.c 23 Aug 2009 02:03:57 -0000
*************** pchbattach(device_t parent, device_t sel
*** 431,436 ****
--- 431,437 ----
                pba.pba_pc = pa->pa_pc;
                pba.pba_flags = attachflags;
                pba.pba_bus = pbnum;
+               pba.pba_domain = pa->pa_domain;
                pba.pba_bridgetag = NULL;
                pba.pba_pc = pa->pa_pc;
                pba.pba_intrswiz = 0;
Index: arch/xen/xen/hypervisor.c
===================================================================
RCS file: /cvsroot/src/sys/arch/xen/xen/hypervisor.c,v
retrieving revision 1.48
diff -p -r1.48 hypervisor.c
*** arch/xen/xen/hypervisor.c   18 Aug 2009 16:41:03 -0000      1.48
--- arch/xen/xen/hypervisor.c   23 Aug 2009 02:03:57 -0000
*************** hypervisor_attach(device_t parent, devic
*** 272,277 ****
--- 272,278 ----
        hac.hac_pba.pba_flags = PCI_FLAGS_MEM_ENABLED | PCI_FLAGS_IO_ENABLED;
        hac.hac_pba.pba_bridgetag = NULL;
        hac.hac_pba.pba_bus = 0;
+       hac.hac_pba.pba_domain = 0;     /* XXX */
  #if NACPICA > 0 && defined(ACPI_SCANPCI)
        if (mpacpi_active)
                mp_pci_scan(self, &hac.hac_pba, pcibusprint);
Index: arch/xen/xen/xpci_xenbus.c
===================================================================
RCS file: /cvsroot/src/sys/arch/xen/xen/xpci_xenbus.c,v
retrieving revision 1.2
diff -p -r1.2 xpci_xenbus.c
*** arch/xen/xen/xpci_xenbus.c  6 Mar 2009 23:35:34 -0000       1.2
--- arch/xen/xen/xpci_xenbus.c  23 Aug 2009 02:03:57 -0000
*************** xpci_attach_pcibus(int domain, int busn)
*** 399,404 ****
--- 399,405 ----
            PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
        pba.pba_bridgetag = NULL;
        pba.pba_bus = busn;
+       pba.pba_domain = 0;     /* XXX */
        config_found_ia(xpci_sc->sc_dev, "pcibus", &pba, pcibusprint);
  }
  
Index: dev/cardbus/cardbus.c
===================================================================
RCS file: /cvsroot/src/sys/dev/cardbus/cardbus.c,v
retrieving revision 1.97
diff -p -r1.97 cardbus.c
*** dev/cardbus/cardbus.c       12 May 2009 12:11:17 -0000      1.97
--- dev/cardbus/cardbus.c       23 Aug 2009 02:03:57 -0000
*************** cardbusattach(device_t parent, device_t 
*** 118,123 ****
--- 118,124 ----
        sc->sc_dev = self;
  
        sc->sc_bus = cba->cba_bus;
+       sc->sc_domain = cba->cba_domain;
        sc->sc_intrline = cba->cba_intrline;
        sc->sc_cacheline = cba->cba_cacheline;
        sc->sc_max_lattimer = MIN(0xf8, cba->cba_max_lattimer);
*************** cardbus_rescan(device_t self, const char
*** 594,599 ****
--- 595,601 ----
  
                ca.ca_tag = tag;
                ca.ca_bus = sc->sc_bus;
+               ca.ca_domain = sc->sc_domain;
                ca.ca_function = function;
                ca.ca_id = id;
                ca.ca_class = class;
Index: dev/cardbus/cardbusvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/cardbus/cardbusvar.h,v
retrieving revision 1.43
diff -p -r1.43 cardbusvar.h
*** dev/cardbus/cardbusvar.h    26 Jun 2008 12:33:17 -0000      1.43
--- dev/cardbus/cardbusvar.h    23 Aug 2009 02:03:57 -0000
*************** struct cbslot_attach_args {
*** 135,140 ****
--- 135,141 ----
        bus_dma_tag_t cba_dmat;         /* DMA tag */
  
        int cba_bus;                    /* cardbus bus number */
+       u_int cba_domain;               /* software "domain" number */
  
        cardbus_chipset_tag_t cba_cc;   /* cardbus chipset */
        cardbus_function_tag_t cba_cf; /* cardbus functions */
*************** struct cardbus_softc {
*** 169,174 ****
--- 170,176 ----
        device_t sc_dev;                /* fundamental device structure */
  
        int sc_bus;                     /* cardbus bus number */
+       uint sc_domain;                 /* software "domain" number */
        cardbus_intr_line_t sc_intrline; /* CardBus intrline */
  
        bus_space_tag_t sc_iot;         /* CardBus I/O space tag */
*************** struct cardbus_attach_args {
*** 263,268 ****
--- 265,271 ----
        bus_dma_tag_t ca_dmat;          /* DMA tag */
  
        u_int ca_bus;
+       u_int ca_domain;
        u_int ca_function;
        cardbustag_t ca_tag;
        cardbusreg_t ca_id;
Index: dev/cardbus/rbus_ppb.c
===================================================================
RCS file: /cvsroot/src/sys/dev/cardbus/rbus_ppb.c,v
retrieving revision 1.31
diff -p -r1.31 rbus_ppb.c
*** dev/cardbus/rbus_ppb.c      12 May 2009 14:17:31 -0000      1.31
--- dev/cardbus/rbus_ppb.c      23 Aug 2009 02:03:57 -0000
*************** ppb_cardbus_attach(device_t parent, devi
*** 722,727 ****
--- 722,728 ----
        pba.pba_pc   = psc->sc_pc;
        pba.pba_flags    = PCI_FLAGS_IO_ENABLED|PCI_FLAGS_MEM_ENABLED;
        pba.pba_bus      = PPB_BUSINFO_SECONDARY(busdata);
+       pba.pba_domain   = ca->ca_domain;
        pba.pba_bridgetag = &csc->sc_tag;
        /*pba.pba_intrswiz = parent_sc->sc_intrswiz; */
        pba.pba_intrtag  = psc->sc_pa.pa_intrtag;
Index: dev/ic/cpc700.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/cpc700.c,v
retrieving revision 1.16
diff -p -r1.16 cpc700.c
*** dev/ic/cpc700.c     12 May 2009 14:25:17 -0000      1.16
--- dev/ic/cpc700.c     23 Aug 2009 02:03:58 -0000
*************** cpc_attach(device_t self, pci_chipset_ta
*** 176,181 ****
--- 176,182 ----
        aa.pba.pba_pc = 0;
        aa.pba.pba_flags = PCI_FLAGS_MEM_ENABLED | PCI_FLAGS_IO_ENABLED;
        aa.pba.pba_bus = 0;
+       aa.pba.pba_domain = 0;  /* XXX */
  
        /* Save PCI error condition reg. */
        erren = pci_conf_read(pc, tag, CPC_PCI_BRDGERR);
Index: dev/marvell/gtpci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/marvell/gtpci.c,v
retrieving revision 1.21
diff -p -r1.21 gtpci.c
*** dev/marvell/gtpci.c 12 May 2009 14:30:25 -0000      1.21
--- dev/marvell/gtpci.c 23 Aug 2009 02:03:58 -0000
*************** gtpci_attach(device_t parent, device_t s
*** 309,314 ****
--- 309,315 ----
        pba.pba_iot = gtpc->gtpc_io_bs;
        pba.pba_memt = gtpc->gtpc_mem_bs;
        pba.pba_dmat = gt->gt_dmat;
+       pba.pba_domain = 0;     /* XXX */
        pba.pba_flags = 0;
        if (pba.pba_iot != NULL)
                pba.pba_flags |= PCI_FLAGS_IO_ENABLED;
Index: dev/pci/pccbb.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pccbb.c,v
retrieving revision 1.191
diff -p -r1.191 pccbb.c
*** dev/pci/pccbb.c     7 Aug 2009 12:09:50 -0000       1.191
--- dev/pci/pccbb.c     23 Aug 2009 02:03:58 -0000
*************** pccbb_pci_callback(device_t self)
*** 698,703 ****
--- 698,704 ----
                cba.cba_memt = sc->sc_memt;
                cba.cba_dmat = sc->sc_dmat;
                cba.cba_bus = (busreg >> 8) & 0x0ff;
+               cba.cba_domain = sc->sc_pa.pa_domain;
                cba.cba_cc = (void *)sc;
                cba.cba_cf = &pccbb_funcs;
                cba.cba_intrline = 0; /* XXX dummy */
Index: dev/pci/pci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pci.c,v
retrieving revision 1.124
diff -p -r1.124 pci.c
*** dev/pci/pci.c       19 Aug 2009 21:36:47 -0000      1.124
--- dev/pci/pci.c       23 Aug 2009 02:03:58 -0000
*************** do {                                                            
        \
*** 194,199 ****
--- 194,200 ----
        sc->sc_dmat64 = pba->pba_dmat64;
        sc->sc_pc = pba->pba_pc;
        sc->sc_bus = pba->pba_bus;
+       sc->sc_domain = pba->pba_domain;
        sc->sc_bridgetag = pba->pba_bridgetag;
        sc->sc_maxndevs = pci_bus_maxdevs(pba->pba_pc, pba->pba_bus);
        sc->sc_intrswiz = pba->pba_intrswiz;
*************** pci_probe_device(struct pci_softc *sc, p
*** 309,314 ****
--- 310,316 ----
        pa.pa_tag = tag;
        pa.pa_id = id;
        pa.pa_class = class;
+       pa.pa_domain = sc->sc_domain;
  
        /*
         * Set up memory, I/O enable, and PCI command flags
Index: dev/pci/pcivar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pcivar.h,v
retrieving revision 1.83
diff -p -r1.83 pcivar.h
*** dev/pci/pcivar.h    22 Jul 2008 04:52:19 -0000      1.83
--- dev/pci/pcivar.h    23 Aug 2009 02:03:58 -0000
*************** struct pcibus_attach_args {
*** 74,79 ****
--- 74,85 ----
        int             pba_bus;        /* PCI bus number */
  
        /*
+        * PCI "domain" number:  This is a software construct that may also
+        * align with a physical construct such as Alpha hoses.
+        */
+       u_int           pba_domain;
+ 
+       /*
         * Pointer to the pcitag of our parent bridge.  If there is no
         * parent bridge, then we assume we are a root bus.
         */
*************** struct pci_attach_args {
*** 104,109 ****
--- 110,118 ----
        pcitag_t        pa_tag;
        pcireg_t        pa_id, pa_class;
  
+       /* See above for "domain" definition */
+       u_int           pa_domain;
+ 
        /*
         * Interrupt information.
         *
*************** struct pci_softc {
*** 174,179 ****
--- 183,189 ----
        bus_dma_tag_t sc_dmat64;
        pci_chipset_tag_t sc_pc;
        int sc_bus, sc_maxndevs;
+       u_int sc_domain;
        pcitag_t *sc_bridgetag;
        u_int sc_intrswiz;
        pcitag_t sc_intrtag;
Index: dev/pci/ppb.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/ppb.c,v
retrieving revision 1.40
diff -p -r1.40 ppb.c
*** dev/pci/ppb.c       2 Apr 2009 00:09:33 -0000       1.40
--- dev/pci/ppb.c       23 Aug 2009 02:03:58 -0000
*************** ppbattach(device_t parent, device_t self
*** 150,155 ****
--- 150,156 ----
        pba.pba_pc = pc;
        pba.pba_flags = pa->pa_flags & ~PCI_FLAGS_MRM_OKAY;
        pba.pba_bus = PPB_BUSINFO_SECONDARY(busdata);
+       pba.pba_domain = pa->pa_domain;
        pba.pba_bridgetag = &sc->sc_tag;
        pba.pba_intrswiz = pa->pa_intrswiz;
        pba.pba_intrtag = pa->pa_intrtag;
Index: external/bsd/drm/dist/bsd-core/drm_drv.c
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c,v
retrieving revision 1.14
diff -p -r1.14 drm_drv.c
*** external/bsd/drm/dist/bsd-core/drm_drv.c    24 Jun 2009 08:09:26 -0000      
1.14
--- external/bsd/drm/dist/bsd-core/drm_drv.c    23 Aug 2009 02:03:58 -0000
*************** drm_attach(device_t kdev, struct pci_att
*** 389,396 ****
        memcpy(&dev->pa, pa, sizeof(dev->pa));
  
        dev->irq = pa->pa_intrline;
!       /* XXX this needs to be deal with for other platforms, e.g. alpha */
!       dev->pci_domain = 0;
        dev->pci_bus = pa->pa_bus;
        dev->pci_slot = pa->pa_device;
        dev->pci_func = pa->pa_function;
--- 389,395 ----
        memcpy(&dev->pa, pa, sizeof(dev->pa));
  
        dev->irq = pa->pa_intrline;
!       dev->pci_domain = pa->pa_domain;
        dev->pci_bus = pa->pa_bus;
        dev->pci_slot = pa->pa_device;
        dev->pci_func = pa->pa_function;


Home | Main Index | Thread Index | Old Index