qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [RFC v5 2/8] hw/arm/smmuv3: smmuv3 emulation model


From: Tomasz Nowicki
Subject: Re: [Qemu-arm] [RFC v5 2/8] hw/arm/smmuv3: smmuv3 emulation model
Date: Thu, 13 Jul 2017 14:57:54 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Thunderbird/52.1.1

Hi Eric,

On 09.07.2017 22:51, Eric Auger wrote:
From: Prem Mallappa <address@hidden>

Introduces the SMMUv3 derived model. This is based on
System MMUv3 specification (v17).

Signed-off-by: Prem Mallappa <address@hidden>
Signed-off-by: Eric Auger <address@hidden>

---
v4 -> v5:
- change smmuv3_translate proto (IOMMUAccessFlags flag)
- has_stagex replaced by is_ste_stagex
- smmu_cfg_populate removed
- added smmuv3_decode_config and reworked error management
- remwork the naming of IOMMU mrs
- fix SMMU_CMDQ_CONS offset


[...]

+
+static void smmu_update_qreg(SMMUV3State *s, SMMUQueue *q, hwaddr reg,
+                             uint32_t off, uint64_t val, unsigned size)
+{
+   if (size == 8 && off == 0) {
+        smmu_write64_reg(s, reg, val);

Based on my observation we never get here.

If I read the code correctly, memory_region_dispatch_{write|read}()->memory_region_{write|read}_accessor() will cut all 8-bytes accesses into 4-bytes slices. However, this makes my SMMUv3 register handling happy:

 static const MemoryRegionOps smmu_mem_ops = {
     .read = smmu_read_mmio,
     .write = smmu_write_mmio,
     .endianness = DEVICE_LITTLE_ENDIAN,
     .valid = {
         .min_access_size = 4,
         .max_access_size = 8,
     },
+    .impl = {
+        .min_access_size = 4,
+       .max_access_size = 8,
+    },
 };

Thanks,
Tomasz



reply via email to

[Prev in Thread] Current Thread [Next in Thread]