--- b/sys/amd64/vmm/io/ppt.c +++ b/sys/amd64/vmm/io/ppt.c @@ -452,8 +452,11 @@ ppt_map_mmio(struct vm *vm, int bus, int slot, int func, struct pptseg *seg; struct pptdev *ppt; +bool mine = gpa == 0xd0000000; +if (mine) printf("ppt_map_mmio: pci0:%d:%d:%d\n", bus, slot, func); ppt = ppt_find(bus, slot, func); if (ppt != NULL) { + if (ppt->vm != vm && mine) printf("ppt_map_mmio: EBUSY\n"); if (ppt->vm != vm) return (EBUSY); @@ -465,11 +468,14 @@ ppt_map_mmio(struct vm *vm, int bus, int slot, int func, seg->gpa = gpa; seg->len = len; } +if (mine) printf("ppt_map_mmio: vm_map_mmio %d\n", error); return (error); } } +if (mine) printf("ppt_map_mmio: ENOSPC\n"); return (ENOSPC); } +if (mine) printf("ppt_map_mmio: ENOENT\n"); return (ENOENT); } --- b/sys/amd64/vmm/vmm.c +++ b/sys/amd64/vmm/vmm.c @@ -650,6 +650,7 @@ vm_mem_allocated(struct vm *vm, int vcpuid, vm_paddr_t gpa) return (true); /* 'gpa' is sysmem or devmem */ } +if (gpa >= 0xd0000000 && gpa < 0xe0000000) printf("ppt_is_mmio %#lx %d\n", gpa, ppt_is_mmio(vm, gpa)); if (ppt_is_mmio(vm, gpa)) return (true); /* 'gpa' is pci passthru mmio */