[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 02/13] intel_iommu: simplify irq region translat
From: |
Peter Xu |
Subject: |
[Qemu-devel] [RFC PATCH 02/13] intel_iommu: simplify irq region translation |
Date: |
Tue, 6 Dec 2016 18:36:17 +0800 |
Before we have int-remap, we need to bypass interrupt write requests.
That's not necessary now - we have supported int-remap, and all the irq
region requests should be redirected there. Cleaning up the block with
an assertion instead.
Signed-off-by: Peter Xu <address@hidden>
---
hw/i386/intel_iommu.c | 29 ++++++-----------------------
1 file changed, 6 insertions(+), 23 deletions(-)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 92e4064..f19a8b3 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -842,29 +842,12 @@ static void vtd_do_iommu_translate(VTDAddressSpace
*vtd_as, PCIBus *bus,
bool writes = true;
VTDIOTLBEntry *iotlb_entry;
- /* Check if the request is in interrupt address range */
- if (vtd_is_interrupt_addr(addr)) {
- if (flags & IOMMU_WO) {
- /* FIXME: since we don't know the length of the access here, we
- * treat Non-DWORD length write requests without PASID as
- * interrupt requests, too. Withoud interrupt remapping support,
- * we just use 1:1 mapping.
- */
- VTD_DPRINTF(MMU, "write request to interrupt address "
- "gpa 0x%"PRIx64, addr);
- entry->iova = addr & VTD_PAGE_MASK_4K;
- entry->translated_addr = addr & VTD_PAGE_MASK_4K;
- entry->addr_mask = ~VTD_PAGE_MASK_4K;
- entry->perm = IOMMU_WO;
- return;
- } else {
- VTD_DPRINTF(GENERAL, "error: read request from interrupt address "
- "gpa 0x%"PRIx64, addr);
- vtd_report_dmar_fault(s, source_id, addr, VTD_FR_READ,
- flags & IOMMU_WO);
- return;
- }
- }
+ /*
+ * We have standalone memory region for interrupt addresses, we
+ * should never receive translation requests in this region.
+ */
+ assert(!vtd_is_interrupt_addr(addr));
+
/* Try to fetch slpte form IOTLB */
iotlb_entry = vtd_lookup_iotlb(s, source_id, addr);
if (iotlb_entry) {
--
2.7.4
- [Qemu-devel] [RFC PATCH 00/13] VT-d replay and misc cleanup, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 02/13] intel_iommu: simplify irq region translation,
Peter Xu <=
- [Qemu-devel] [RFC PATCH 03/13] intel_iommu: renaming gpa to iova where proper, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 05/13] intel_iommu: fix trace for addr translation, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 04/13] intel_iommu: fix trace for inv desc handling, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 06/13] intel_iommu: vtd_slpt_level_shift check level, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 07/13] memory: add section range info for IOMMU notifier, Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 08/13] memory: provide iommu_replay_all(), Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 09/13] memory: introduce memory_region_notify_one(), Peter Xu, 2016/12/06
- [Qemu-devel] [RFC PATCH 10/13] memory: add MemoryRegionIOMMUOps.replay() callback, Peter Xu, 2016/12/06