[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC v2 27/28] hw/arm/smmuv3: Init fault handling
From: |
Eric Auger |
Subject: |
[Qemu-devel] [RFC v2 27/28] hw/arm/smmuv3: Init fault handling |
Date: |
Fri, 21 Sep 2018 10:18:18 +0200 |
We configure the kernel fault event fifo when the guest
sizes the event queue.
Signed-off-by: Eric Auger <address@hidden>
---
At the moment we arbitrarily cap the fifo size to 2^5 events
---
hw/arm/smmuv3.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index c6dec63f07..ae27cfdfa0 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -1066,6 +1066,25 @@ static int smmuv3_cmdq_consume(SMMUv3State *s)
return 0;
}
+static int smmuv3_init_fault_queues(SMMUv3State *s)
+{
+ SMMUState *base = &s->smmu_state;
+ SMMUNotifierNode *node;
+ IOMMUConfig config;
+ /* TODO: today we cap the shift to 5 to avoid the kfifo to become too big*/
+ int qs = MIN(5, s->eventq.log2size);
+
+ config.fault_cfg.qs = qs;
+
+ QLIST_FOREACH(node, &base->notifiers_list, next) {
+ IOMMUMemoryRegion *iommu_mr = &node->sdev->iommu;
+
+ memory_region_config_notify_iommu(iommu_mr, 0, IOMMU_NOTIFIER_INIT_CFG,
+ &config);
+ }
+ return 0;
+}
+
static MemTxResult smmu_writell(SMMUv3State *s, hwaddr offset,
uint64_t data, MemTxAttrs attrs)
{
@@ -1089,6 +1108,7 @@ static MemTxResult smmu_writell(SMMUv3State *s, hwaddr
offset,
if (s->eventq.log2size > SMMU_EVENTQS) {
s->eventq.log2size = SMMU_EVENTQS;
}
+ smmuv3_init_fault_queues(s);
return MEMTX_OK;
case A_EVENTQ_IRQ_CFG0:
s->eventq_irq_cfg0 = data;
--
2.17.1
- [Qemu-devel] [RFC v2 17/28] hw/vfio/common: Introduce vfio_alloc_guest_iommu helper, (continued)
- [Qemu-devel] [RFC v2 17/28] hw/vfio/common: Introduce vfio_alloc_guest_iommu helper, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 18/28] hw/vfio/common: Introduce vfio_dma_(un)map_ram_section helpers, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 19/28] hw/vfio/common: Register specific nested mode notifiers and memory_listener, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 20/28] hw/vfio/common: Register MAP notifier for MSI binding, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 22/28] vfio/pci: Always set up MSI route before enabling vectors, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 21/28] target/arm/kvm: Notifies IOMMU on MSI stage 1 binding, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 23/28] hw/arm/smmuv3: Remove warning about unsupported MAP notifiers, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 24/28] memory: Introduce IOMMU_NOTIFIER_INIT_CFG IOMMU Config Notifier, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 25/28] memory: Introduce IOMMU Memory Region inject_faults API, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 26/28] hw/vfio/common: Handle fault_handler, Eric Auger, 2018/09/21
- [Qemu-devel] [RFC v2 27/28] hw/arm/smmuv3: Init fault handling,
Eric Auger <=
- [Qemu-devel] [RFC v2 28/28] hw/arm/smmuv3: Implement fault injection, Eric Auger, 2018/09/21