Index: sys/arch/x86/acpi/acpi_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/x86/acpi/acpi_machdep.c,v retrieving revision 1.36 diff -p -u -r1.36 acpi_machdep.c --- sys/arch/x86/acpi/acpi_machdep.c 16 Oct 2023 17:27:02 -0000 1.36 +++ sys/arch/x86/acpi/acpi_machdep.c 22 Dec 2023 16:33:40 -0000 @@ -592,6 +592,10 @@ acpi_md_callback(struct acpi_softc *sc) #endif acpimcfg_init(x86_bus_space_mem, &acpi_md_mcfg_ops); + +#ifdef PCI_NETBSD_CONFIGURE + mpacpi_configure_busses(sc); +#endif } #ifndef XENPV Index: sys/arch/x86/include/mpacpi.h =================================================================== RCS file: /cvsroot/src/sys/arch/x86/include/mpacpi.h,v retrieving revision 1.11 diff -p -u -r1.11 mpacpi.h --- sys/arch/x86/include/mpacpi.h 23 May 2017 08:54:39 -0000 1.11 +++ sys/arch/x86/include/mpacpi.h 22 Dec 2023 16:33:40 -0000 @@ -7,6 +7,7 @@ struct pcibus_attach_args; int mpacpi_scan_apics(device_t, int *); int mpacpi_find_interrupts(void *); +int mpacpi_configure_busses(void *); int mpacpi_pci_attach_hook(device_t, device_t, struct pcibus_attach_args *); Index: sys/arch/x86/include/pci_machdep_common.h =================================================================== RCS file: /cvsroot/src/sys/arch/x86/include/pci_machdep_common.h,v retrieving revision 1.25 diff -p -u -r1.25 pci_machdep_common.h --- sys/arch/x86/include/pci_machdep_common.h 1 Aug 2020 12:14:40 -0000 1.25 +++ sys/arch/x86/include/pci_machdep_common.h 22 Dec 2023 16:33:41 -0000 @@ -122,6 +122,7 @@ const struct evcnt *pci_intr_evcnt(pci_c void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, int, int (*)(void *), void *); void pci_intr_disestablish(pci_chipset_tag_t, void *); +void pci_conf_interrupt(pci_chipset_tag_t, int, int, int, int, int *); #ifdef __HAVE_PCI_MSI_MSIX typedef enum { Index: sys/arch/x86/pci/pci_intr_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/x86/pci/pci_intr_machdep.c,v retrieving revision 1.51 diff -p -u -r1.51 pci_intr_machdep.c --- sys/arch/x86/pci/pci_intr_machdep.c 1 Aug 2020 12:36:35 -0000 1.51 +++ sys/arch/x86/pci/pci_intr_machdep.c 22 Dec 2023 16:33:41 -0000 @@ -380,6 +380,12 @@ pci_intr_disestablish(pci_chipset_tag_t intr_disestablish(cookie); } +void +pci_conf_interrupt(pci_chipset_tag_t pc, int bus, int dev, int ipin, int swiz, + int *ilinep) +{ +} + #if NIOAPIC > 0 #ifdef __HAVE_PCI_MSI_MSIX pci_intr_type_t Index: sys/arch/x86/x86/mpacpi.c =================================================================== RCS file: /cvsroot/src/sys/arch/x86/x86/mpacpi.c,v retrieving revision 1.110 diff -p -u -r1.110 mpacpi.c --- sys/arch/x86/x86/mpacpi.c 24 Mar 2023 12:25:28 -0000 1.110 +++ sys/arch/x86/x86/mpacpi.c 22 Dec 2023 16:33:41 -0000 @@ -72,6 +72,7 @@ __KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1 #include #include #include +#include #include @@ -1034,6 +1037,44 @@ mpacpi_pci_attach_hook(device_t parent, #endif int +mpacpi_configure_busses(void *self) +{ + struct acpi_softc *acpi = self; + +printf("MPACPI CONFIGURE BUSSES ? acpi = %p\n", acpi); + +#if NPCI > 0 + struct mpacpi_pcibus *mpr; + struct mp_bus *mpb; + + mpr = TAILQ_FIRST(&mpacpi_pcibusses); +printf("MPACPI pcibus = %p\n", mpr); + + if (mpr) { + ACPI_HANDLE hdl = devhandle_to_acpi(mpr->mpr_devhandle); + if (mp_verbose) + printf("MPACPI handle %s seg %d bus %d\n", + acpi_name(hdl), + mpr->mpr_seg, + mpr->mpr_bus); + + if (mpr->mpr_bus < 0 || mpr->mpr_bus >= mpacpi_maxpci) { + printf("MPACPI bus number (%d) >= maxpci (%d)\n", + mpr->mpr_bus, mpacpi_maxpci); + return -1; + } + + mpb = &mp_busses[mpr->mpr_bus]; /* XXX */ + + acpimcfg_configure_bus(mpb->mb_dev, mpb->mb_pci_chipset_tag, + hdl, mpr->mpr_bus, CACHE_LINE_SIZE); + } +#endif + + return 0; +} + +int mpacpi_findintr_linkdev(struct mp_intr_map *mip) { int irq, line, pol, trig;