Module Name:    src
Committed By:   jmcneill
Date:           Sat Nov  3 12:03:05 UTC 2018

Modified Files:
        src/sys/arch/arm/acpi: acpi_pci_machdep.c

Log Message:
Match _PRT by segment and bus


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/acpi/acpi_pci_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/acpi/acpi_pci_machdep.c
diff -u src/sys/arch/arm/acpi/acpi_pci_machdep.c:1.6 src/sys/arch/arm/acpi/acpi_pci_machdep.c:1.7
--- src/sys/arch/arm/acpi/acpi_pci_machdep.c:1.6	Fri Nov  2 15:01:18 2018
+++ src/sys/arch/arm/acpi/acpi_pci_machdep.c	Sat Nov  3 12:03:05 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_pci_machdep.c,v 1.6 2018/11/02 15:01:18 jmcneill Exp $ */
+/* $NetBSD: acpi_pci_machdep.c,v 1.7 2018/11/03 12:03:05 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_pci_machdep.c,v 1.6 2018/11/02 15:01:18 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_pci_machdep.c,v 1.7 2018/11/03 12:03:05 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -60,6 +60,7 @@ __KERNEL_RCSID(0, "$NetBSD: acpi_pci_mac
 #include <arm/pci/pci_msi_machdep.h>
 
 struct acpi_pci_prt {
+	u_int				prt_segment;
 	u_int				prt_bus;
 	ACPI_HANDLE			prt_handle;
 	TAILQ_ENTRY(acpi_pci_prt)	prt_list;
@@ -192,6 +193,7 @@ acpi_pci_md_attach_hook(device_t parent,
 	if (handle != NULL) {
 		prt = kmem_alloc(sizeof(*prt), KM_SLEEP);
 		prt->prt_bus = pba->pba_bus;
+		prt->prt_segment = ap->ap_seg;
 		prt->prt_handle = handle;
 		TAILQ_INSERT_TAIL(&acpi_pci_irq_routes, prt, prt_list);
 	}
@@ -274,13 +276,16 @@ acpi_pci_md_conf_interrupt(void *v, int 
 }
 
 static struct acpi_pci_prt *
-acpi_pci_md_intr_find_prt(u_int bus)
+acpi_pci_md_intr_find_prt(pci_chipset_tag_t pc, u_int bus)
 {
 	struct acpi_pci_prt *prt, *prtp;
+	u_int segment;
+
+	segment = pci_get_segment(pc);
 
 	prt = NULL;
 	TAILQ_FOREACH(prtp, &acpi_pci_irq_routes, prt_list)
-		if (prtp->prt_bus == bus) {
+		if (prtp->prt_segment == segment && prtp->prt_bus == bus) {
 			prt = prtp;
 			break;
 		}
@@ -301,7 +306,7 @@ acpi_pci_md_intr_map(const struct pci_at
 	if (pa->pa_intrpin == PCI_INTERRUPT_PIN_NONE)
 		return EINVAL;
 
-	prt = acpi_pci_md_intr_find_prt(pa->pa_bus);
+	prt = acpi_pci_md_intr_find_prt(pa->pa_pc, pa->pa_bus);
 	if (prt == NULL)
 		return ENXIO;
 

Reply via email to