[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/30] spapr_iommu: translate sPAPRTCEAccess to IOMMU
From: |
Alexander Graf |
Subject: |
[Qemu-devel] [PULL 14/30] spapr_iommu: translate sPAPRTCEAccess to IOMMUAccessFlags |
Date: |
Tue, 7 Jul 2015 17:49:26 +0200 |
From: Greg Kurz <address@hidden>
The fact that these enums have matching values is pure coincidence. We
actually need to translate from the PAPR definition to the QEMU one.
This patch doesn't fix any bug, it is only code cleanup.
Suggested-by: Alexey Kardashevskiy <address@hidden>
Signed-off-by: Greg Kurz <address@hidden>
Signed-off-by: David Gibson <address@hidden>
Signed-off-by: Alexander Graf <address@hidden>
---
hw/ppc/spapr_iommu.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
index 3121998..f61504e 100644
--- a/hw/ppc/spapr_iommu.c
+++ b/hw/ppc/spapr_iommu.c
@@ -60,6 +60,20 @@ sPAPRTCETable *spapr_tce_find_by_liobn(target_ulong liobn)
return NULL;
}
+static IOMMUAccessFlags spapr_tce_iommu_access_flags(uint64_t tce)
+{
+ switch (tce & SPAPR_TCE_RW) {
+ case SPAPR_TCE_FAULT:
+ return IOMMU_NONE;
+ case SPAPR_TCE_RO:
+ return IOMMU_RO;
+ case SPAPR_TCE_WO:
+ return IOMMU_WO;
+ default: /* SPAPR_TCE_RW */
+ return IOMMU_RW;
+ }
+}
+
/* Called from RCU critical section */
static IOMMUTLBEntry spapr_tce_translate_iommu(MemoryRegion *iommu, hwaddr
addr,
bool is_write)
@@ -82,7 +96,7 @@ static IOMMUTLBEntry spapr_tce_translate_iommu(MemoryRegion
*iommu, hwaddr addr,
ret.iova = addr & page_mask;
ret.translated_addr = tce & page_mask;
ret.addr_mask = ~page_mask;
- ret.perm = tce & IOMMU_RW;
+ ret.perm = spapr_tce_iommu_access_flags(tce);
}
trace_spapr_iommu_xlate(tcet->liobn, addr, ret.iova, ret.perm,
ret.addr_mask);
@@ -233,7 +247,7 @@ static target_ulong put_tce_emu(sPAPRTCETable *tcet,
target_ulong ioba,
entry.iova = ioba & page_mask;
entry.translated_addr = tce & page_mask;
entry.addr_mask = ~page_mask;
- entry.perm = tce & IOMMU_RW;
+ entry.perm = spapr_tce_iommu_access_flags(tce);
memory_region_notify_iommu(&tcet->iommu, entry);
return H_SUCCESS;
--
1.8.1.4
- [Qemu-devel] [PULL 18/30] cpus: Add a macro to walk CPUs in reverse, (continued)
- [Qemu-devel] [PULL 18/30] cpus: Add a macro to walk CPUs in reverse, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 20/30] spapr: Consolidate cpu init code into a routine, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 16/30] spapr: Consider max_cpus during xics initialization, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 24/30] spapr_pci: populate ibm,loc-code, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 30/30] sPAPR: Clear stale MSIx table during EEH reset, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 17/30] spapr: Support ibm, lrdr-capacity device tree property, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 22/30] xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 25/30] spapr_pci: drop redundant args in spapr_[populate, create]_pci_child_dt, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 12/30] spapr_pci: set device node unit address as hex, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 11/30] spapr_pci: encode class code including Prog IF register, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 14/30] spapr_iommu: translate sPAPRTCEAccess to IOMMUAccessFlags,
Alexander Graf <=
- [Qemu-devel] [PULL 28/30] sPAPR: Don't enable EEH on emulated PCI devices, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 26/30] spapr_vty: lookup should only return valid VTY objects, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 15/30] Revert "hw/ppc/spapr_pci.c: Avoid functions not in glib 2.12 (g_hash_table_iter_*)", Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 21/30] ppc: Update cpu_model in MachineState, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 23/30] spapr_pci: enumerate and add PCI device tree, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 19/30] spapr: Reorganize CPU dt generation code, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 06/30] spapr: Merge sPAPREnvironment into sPAPRMachineState, Alexander Graf, 2015/07/07
- [Qemu-devel] [PULL 05/30] pseries: Update SLOF firmware image to qemu-slof-20150429, Alexander Graf, 2015/07/07
- Re: [Qemu-devel] [PULL 00/30] ppc patch queue 2015-07-07 for 2.4, Peter Maydell, 2015/07/07