Lines Matching defs:msipic
1 /* $NetBSD: msipic.c,v 1.27 2022/05/24 14:00:23 bouyer Exp $ */
30 __KERNEL_RCSID(0, "$NetBSD: msipic.c,v 1.27 2022/05/24 14:00:23 bouyer Exp $");
51 #include <x86/pci/msipic.h>
72 struct msipic {
85 LIST_ENTRY(msipic) mp_list;
90 static LIST_HEAD(, msipic) msipic_list =
199 struct msipic *mpp;
217 struct pic *msipic;
220 msipic = msipic_find_msi_pic_locked(devid);
223 return msipic;
234 struct msipic *msipic;
238 msipic = kmem_zalloc(sizeof(*msipic), KM_SLEEP);
246 kmem_free(msipic, sizeof(*msipic));
253 pic->pic_msipic = msipic;
254 msipic->mp_pic = pic;
256 &msipic->mp_i.mp_bus, &msipic->mp_i.mp_dev, &msipic->mp_i.mp_fun);
257 memcpy(&msipic->mp_pa, pa, sizeof(msipic->mp_pa));
258 msipic->mp_devid = devid;
262 KASSERT(msipic_find_msi_pic_locked(msipic->mp_devid) == NULL);
264 LIST_INSERT_HEAD(&msipic_list, msipic, mp_list);
274 struct msipic *msipic;
279 msipic = msi_pic->pic_msipic;
281 LIST_REMOVE(msipic, mp_list);
282 msipic_release_common_msi_devid(msipic->mp_devid);
285 if (msipic->mp_i.mp_xen_pirq != NULL) {
286 KASSERT(msipic->mp_i.mp_veccnt > 0);
288 for (int i = 0; i < msipic->mp_i.mp_veccnt; i++) {
289 KASSERT(msipic->mp_i.mp_xen_pirq[i] == 0);
292 kmem_free(msipic->mp_i.mp_xen_pirq,
293 sizeof(*msipic->mp_i.mp_xen_pirq) * msipic->mp_i.mp_veccnt);
295 kmem_free(msipic, sizeof(*msipic));
789 struct msipic *msipic;
794 msipic = msix_pic->pic_msipic;
795 _x86_memio_unmap(msipic->mp_bstag, msipic->mp_bshandle,
796 msipic->mp_bssize, NULL);