summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/intel
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2014-08-14 05:00:45 +0000
committerneel <neel@FreeBSD.org>2014-08-14 05:00:45 +0000
commit53369652fd9c456d33338f450a0c02cfdc1db689 (patch)
tree5566cbafb79adbaf2f048d3a0f72a369e84fcaf1 /sys/amd64/vmm/intel
parent844b1fe2e7077d4a5e1e680a1ee4fa970c07ab2b (diff)
downloadFreeBSD-src-53369652fd9c456d33338f450a0c02cfdc1db689.zip
FreeBSD-src-53369652fd9c456d33338f450a0c02cfdc1db689.tar.gz
Use the max guest memory address when creating its iommu domain.
Also, assert that the GPA being mapped in the domain is less than its maxaddr. Reviewed by: grehan Pointed out by: Anish Gupta (akgupt3@gmail.com)
Diffstat (limited to 'sys/amd64/vmm/intel')
-rw-r--r--sys/amd64/vmm/intel/vtd.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/amd64/vmm/intel/vtd.c b/sys/amd64/vmm/intel/vtd.c
index afd7155..be57aff 100644
--- a/sys/amd64/vmm/intel/vtd.c
+++ b/sys/amd64/vmm/intel/vtd.c
@@ -448,6 +448,11 @@ vtd_update_mapping(void *arg, vm_paddr_t gpa, vm_paddr_t hpa, uint64_t len,
ptpindex = 0;
ptpshift = 0;
+ KASSERT(gpa + len > gpa, ("%s: invalid gpa range %#lx/%#lx", __func__,
+ gpa, len));
+ KASSERT(gpa + len <= dom->maxaddr, ("%s: gpa range %#lx/%#lx beyond "
+ "domain maxaddr %#lx", __func__, gpa, len, dom->maxaddr));
+
if (gpa & PAGE_MASK)
panic("vtd_create_mapping: unaligned gpa 0x%0lx", gpa);
OpenPOWER on IntegriCloud