diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2021-12-15 07:23:50 -0800 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2021-12-15 07:23:50 -0800 |
| commit | 5d3da09e44a73b4dadf9f1a94828fef27bcb5588 (patch) | |
| tree | 95395fee3bdbb28592edc66106437a742bb4fce7 /hw/virtio/virtio-iommu.c | |
| parent | 76b56fdfc9fa43ec6e5986aee33f108c6c6a511e (diff) | |
| parent | 7876cba8fc0cab9a4c803a30f427d4b20b95a868 (diff) | |
| download | focaccia-qemu-5d3da09e44a73b4dadf9f1a94828fef27bcb5588.tar.gz focaccia-qemu-5d3da09e44a73b4dadf9f1a94828fef27bcb5588.zip | |
Merge tag 'pull-request-2021-12-15' of https://gitlab.com/thuth/qemu into staging
* Add virtio-net failover test * Make qtests a little bit more flexible with regards to reduced configs * Move libssh setup from configure to meson.build * Run device-crash-test in CI * Add jobs for NetBSD and OpenBSD to the CI * Test compilation with MSYS2 in the gitlab-ci, too * Add new virtio-iommu test # gpg: Signature made Tue 14 Dec 2021 11:11:54 PM PST # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] * tag 'pull-request-2021-12-15' of https://gitlab.com/thuth/qemu: gitlab-ci: Test compilation on Windows with MSYS2 tests: qtest: Add virtio-iommu test virtio-iommu: Fix the domain_range end virtio-iommu: Fix endianness in get_config virtio-iommu: Remove set_config callback gitlab-ci: Add cirrus-ci based tests for NetBSD and OpenBSD gitlab-ci.d/buildtest: Add jobs that run the device-crash-test Move the libssh setup from configure to meson.build tests/qtest: Add a function to check whether a machine is available tests/qtest: Add a function that gets a list with available machine types tests/qtest: Fence the tests that need xlnx-zcu102 with CONFIG_XLNX_ZYNQMP_ARM tests/qtest: Run the PPC 32-bit tests with the 64-bit target binary, too tests/libqtest: add a migration test with two couples of failover devices tests/libqtest: add some virtio-net failover migration cancelling tests tests/qtest: add some tests for virtio-net failover qtest/libqos: add a function to initialize secondary PCI buses Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'hw/virtio/virtio-iommu.c')
| -rw-r--r-- | hw/virtio/virtio-iommu.c | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 1b23e8e18c..aa9c16a17b 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -822,27 +822,22 @@ unlock: static void virtio_iommu_get_config(VirtIODevice *vdev, uint8_t *config_data) { VirtIOIOMMU *dev = VIRTIO_IOMMU(vdev); - struct virtio_iommu_config *config = &dev->config; - - trace_virtio_iommu_get_config(config->page_size_mask, - config->input_range.start, - config->input_range.end, - config->domain_range.end, - config->probe_size); - memcpy(config_data, &dev->config, sizeof(struct virtio_iommu_config)); -} - -static void virtio_iommu_set_config(VirtIODevice *vdev, - const uint8_t *config_data) -{ - struct virtio_iommu_config config; - - memcpy(&config, config_data, sizeof(struct virtio_iommu_config)); - trace_virtio_iommu_set_config(config.page_size_mask, - config.input_range.start, - config.input_range.end, - config.domain_range.end, - config.probe_size); + struct virtio_iommu_config *dev_config = &dev->config; + struct virtio_iommu_config *out_config = (void *)config_data; + + out_config->page_size_mask = cpu_to_le64(dev_config->page_size_mask); + out_config->input_range.start = cpu_to_le64(dev_config->input_range.start); + out_config->input_range.end = cpu_to_le64(dev_config->input_range.end); + out_config->domain_range.start = cpu_to_le32(dev_config->domain_range.start); + out_config->domain_range.end = cpu_to_le32(dev_config->domain_range.end); + out_config->probe_size = cpu_to_le32(dev_config->probe_size); + + trace_virtio_iommu_get_config(dev_config->page_size_mask, + dev_config->input_range.start, + dev_config->input_range.end, + dev_config->domain_range.start, + dev_config->domain_range.end, + dev_config->probe_size); } static uint64_t virtio_iommu_get_features(VirtIODevice *vdev, uint64_t f, @@ -983,8 +978,8 @@ static void virtio_iommu_device_realize(DeviceState *dev, Error **errp) s->event_vq = virtio_add_queue(vdev, VIOMMU_DEFAULT_QUEUE_SIZE, NULL); s->config.page_size_mask = TARGET_PAGE_MASK; - s->config.input_range.end = -1UL; - s->config.domain_range.end = 32; + s->config.input_range.end = UINT64_MAX; + s->config.domain_range.end = UINT32_MAX; s->config.probe_size = VIOMMU_PROBE_SIZE; virtio_add_feature(&s->features, VIRTIO_RING_F_EVENT_IDX); @@ -1185,7 +1180,6 @@ static void virtio_iommu_class_init(ObjectClass *klass, void *data) vdc->unrealize = virtio_iommu_device_unrealize; vdc->reset = virtio_iommu_device_reset; vdc->get_config = virtio_iommu_get_config; - vdc->set_config = virtio_iommu_set_config; vdc->get_features = virtio_iommu_get_features; vdc->set_status = virtio_iommu_set_status; vdc->vmsd = &vmstate_virtio_iommu_device; |