msipic
struct msipic *pic_msipic; /* if (pic_type == PIC_MSI) || (pic_type == PIC_MSIX) */
struct msipic *mpp;
struct pic *msipic;
msipic = msipic_find_msi_pic_locked(devid);
return msipic;
struct msipic *msipic;
msipic = kmem_zalloc(sizeof(*msipic), KM_SLEEP);
kmem_free(msipic, sizeof(*msipic));
pic->pic_msipic = msipic;
msipic->mp_pic = pic;
&msipic->mp_i.mp_bus, &msipic->mp_i.mp_dev, &msipic->mp_i.mp_fun);
memcpy(&msipic->mp_pa, pa, sizeof(msipic->mp_pa));
msipic->mp_devid = devid;
KASSERT(msipic_find_msi_pic_locked(msipic->mp_devid) == NULL);
LIST_INSERT_HEAD(&msipic_list, msipic, mp_list);
struct msipic *msipic;
msipic = msi_pic->pic_msipic;
LIST_REMOVE(msipic, mp_list);
msipic_release_common_msi_devid(msipic->mp_devid);
if (msipic->mp_i.mp_xen_pirq != NULL) {
KASSERT(msipic->mp_i.mp_veccnt > 0);
for (int i = 0; i < msipic->mp_i.mp_veccnt; i++) {
KASSERT(msipic->mp_i.mp_xen_pirq[i] == 0);
kmem_free(msipic->mp_i.mp_xen_pirq,
sizeof(*msipic->mp_i.mp_xen_pirq) * msipic->mp_i.mp_veccnt);
kmem_free(msipic, sizeof(*msipic));
struct msipic *msipic;
msipic = msix_pic->pic_msipic;
_x86_memio_unmap(msipic->mp_bstag, msipic->mp_bshandle,
msipic->mp_bssize, NULL);
LIST_ENTRY(msipic) mp_list;
static LIST_HEAD(, msipic) msipic_list =