? external/bsd/drm2/pci/.drm_pci.c.swp Index: external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/pci/nouveau_nvkm_subdev_pci_base.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/pci/nouveau_nvkm_subdev_pci_base.c,v retrieving revision 1.5 diff -u -p -r1.5 nouveau_nvkm_subdev_pci_base.c --- external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/pci/nouveau_nvkm_subdev_pci_base.c 3 Feb 2020 16:22:25 -0000 1.5 +++ external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/pci/nouveau_nvkm_subdev_pci_base.c 6 Feb 2020 18:03:33 -0000 @@ -142,20 +142,24 @@ nvkm_pci_init(struct nvkm_subdev *subdev #ifdef __NetBSD__ { const struct pci_attach_args *pa = &pdev->pd_pa; - const pci_intr_type_t intr_type = pci->msi ? - PCI_INTR_TYPE_MSI : PCI_INTR_TYPE_INTX; - int counts[PCI_INTR_TYPE_SIZE] = { + if (pdev->pd_intr_handles == NULL) { + const pci_intr_type_t intr_type = pci->msi ? + PCI_INTR_TYPE_MSI : PCI_INTR_TYPE_INTX; + + int counts[PCI_INTR_TYPE_SIZE] = { [PCI_INTR_TYPE_INTX] = 0, [PCI_INTR_TYPE_MSI] = 0, [PCI_INTR_TYPE_MSIX] = 0, - }; - counts[intr_type] = 1; + }; + counts[intr_type] = 1; + + /* XXX errno NetBSD->Linux */ + ret = -pci_intr_alloc(pa, &pci->pci_ihp, counts, intr_type); + if (ret) + return ret; + } - /* XXX errno NetBSD->Linux */ - ret = -pci_intr_alloc(pa, &pci->pci_ihp, counts, intr_type); - if (ret) - return ret; pci->pci_intrcookie = pci_intr_establish_xname(pa->pa_pc, pci->pci_ihp[0], IPL_DRM, nvkm_pci_intr, pci, device_xname(pci_dev_dev(pdev)));