[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 6/9] virtio-iommu: Add an option to define the input range wid
From: |
Eric Auger |
Subject: |
[PATCH v6 6/9] virtio-iommu: Add an option to define the input range width |
Date: |
Tue, 5 Mar 2024 19:06:24 +0100 |
aw-bits is a new option that allows to set the bit width of
the input address range. This value will be used as a default for
the device config input_range.end. By default it is set to 64 bits
which is the current value.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
---
v1 -> v2:
- Check the aw-bits value is within [32,64]
---
include/hw/virtio/virtio-iommu.h | 1 +
hw/virtio/virtio-iommu.c | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/hw/virtio/virtio-iommu.h b/include/hw/virtio/virtio-iommu.h
index 67ea5022af..83a52cc446 100644
--- a/include/hw/virtio/virtio-iommu.h
+++ b/include/hw/virtio/virtio-iommu.h
@@ -68,6 +68,7 @@ struct VirtIOIOMMU {
Notifier machine_done;
bool granule_frozen;
GranuleMode granule_mode;
+ uint8_t aw_bits;
};
#endif
diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
index aab97e1527..9b2813188b 100644
--- a/hw/virtio/virtio-iommu.c
+++ b/hw/virtio/virtio-iommu.c
@@ -1314,7 +1314,11 @@ static void virtio_iommu_device_realize(DeviceState
*dev, Error **errp)
* in vfio realize
*/
s->config.bypass = s->boot_bypass;
- s->config.input_range.end = UINT64_MAX;
+ if (s->aw_bits < 32 || s->aw_bits > 64) {
+ error_setg(errp, "aw-bits must be within [32,64]");
+ }
+ s->config.input_range.end =
+ s->aw_bits == 64 ? UINT64_MAX : BIT_ULL(s->aw_bits) - 1;
switch (s->granule_mode) {
case GRANULE_MODE_4K:
@@ -1544,6 +1548,7 @@ static Property virtio_iommu_properties[] = {
DEFINE_PROP_BOOL("boot-bypass", VirtIOIOMMU, boot_bypass, true),
DEFINE_PROP_GRANULE_MODE("granule", VirtIOIOMMU, granule_mode,
GRANULE_MODE_HOST),
+ DEFINE_PROP_UINT8("aw-bits", VirtIOIOMMU, aw_bits, 64),
DEFINE_PROP_END_OF_LIST(),
};
--
2.41.0
- [PATCH v6 0/9] VIRTIO-IOMMU: Introduce aw-bits and granule options, Eric Auger, 2024/03/05
- [PATCH v6 1/9] qdev: Add a granule_mode property, Eric Auger, 2024/03/05
- [PATCH v6 3/9] virtio-iommu: Change the default granule to the host page size, Eric Auger, 2024/03/05
- [PATCH v6 2/9] virtio-iommu: Add a granule property, Eric Auger, 2024/03/05
- [PATCH v6 4/9] qemu-options.hx: Document the virtio-iommu-pci granule option, Eric Auger, 2024/03/05
- [PATCH v6 5/9] virtio-iommu: Trace domain range limits as unsigned int, Eric Auger, 2024/03/05
- [PATCH v6 6/9] virtio-iommu: Add an option to define the input range width,
Eric Auger <=
- [PATCH v6 7/9] hw/i386/q35: Set virtio-iommu aw-bits default value to 39, Eric Auger, 2024/03/05
- [PATCH v6 8/9] hw/arm/virt: Set virtio-iommu aw-bits default value to 48, Eric Auger, 2024/03/05
- [PATCH v6 9/9] qemu-options.hx: Document the virtio-iommu-pci aw-bits option, Eric Auger, 2024/03/05