From: Eric Auger <eric.auger@redhat.com>
To: Wang Xingang <wangxingang5@huawei.com>,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
shannon.zhaosl@gmail.com, imammedo@redhat.com, mst@redhat.com,
marcel.apfelbaum@gmail.com, peter.maydell@linaro.org,
ehabkost@redhat.com, richard.henderson@linaro.org,
pbonzini@redhat.com
Cc: xieyingtai@huawei.com
Subject: Re: [PATCH v4 3/8] hw/arm/virt: Add a machine option to bypass iommu for primary bus
Date: Wed, 2 Jun 2021 14:25:50 +0200 [thread overview]
Message-ID: <b1f26e3a-d678-aa50-4e82-71c76c9775b8@redhat.com> (raw)
In-Reply-To: <1621914605-14724-4-git-send-email-wangxingang5@huawei.com>
Hi Xingang,
On 5/25/21 5:50 AM, Wang Xingang wrote:
> From: Xingang Wang <wangxingang5@huawei.com>
>
> This add a bypass_iommu option for arm virt machine,
> the option can be used in this manner:
> qemu -machine virt,iommu=smmuv3,bypass_iommu=true
This still looks confusing to me. On one hand we say that for the virt
machine the iommu is set to smmuv3 and we say bypass_iommu=true on the
virt machine option line
It is not straightforward that the bypass_iommu only relates to devices
plugged onto the "default" root bus.
At least the name of the property should reflect that I think
> Signed-off-by: Xingang Wang <wangxingang5@huawei.com>
> ---
> hw/arm/virt.c | 26 ++++++++++++++++++++++++++
> include/hw/arm/virt.h | 1 +
> 2 files changed, 27 insertions(+)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 840758666d..49d8a801ed 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -1364,6 +1364,7 @@ static void create_pcie(VirtMachineState *vms)
> }
>
> pci = PCI_HOST_BRIDGE(dev);
> + pci->bypass_iommu = vms->bypass_iommu;
> vms->bus = pci->bus;
> if (vms->bus) {
> for (i = 0; i < nb_nics; i++) {
> @@ -2319,6 +2320,21 @@ static void virt_set_iommu(Object *obj, const char *value, Error **errp)
> }
> }
>
> +static bool virt_get_bypass_iommu(Object *obj, Error **errp)
> +{
> + VirtMachineState *vms = VIRT_MACHINE(obj);
> +
> + return vms->bypass_iommu;
> +}
> +
> +static void virt_set_bypass_iommu(Object *obj, bool value,
> + Error **errp)
> +{
> + VirtMachineState *vms = VIRT_MACHINE(obj);
> +
> + vms->bypass_iommu = value;
> +}
> +
> static CpuInstanceProperties
> virt_cpu_index_to_props(MachineState *ms, unsigned cpu_index)
> {
> @@ -2656,6 +2672,13 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
> "Set the IOMMU type. "
> "Valid values are none and smmuv3");
>
> + object_class_property_add_bool(oc, "bypass_iommu",
> + virt_get_bypass_iommu,
> + virt_set_bypass_iommu);
> + object_class_property_set_description(oc, "bypass_iommu",
> + "Set on/off to enable/disable "
> + "bypass_iommu for primary bus");
> +
> object_class_property_add_bool(oc, "ras", virt_get_ras,
> virt_set_ras);
> object_class_property_set_description(oc, "ras",
> @@ -2723,6 +2746,9 @@ static void virt_instance_init(Object *obj)
> /* Default disallows iommu instantiation */
> vms->iommu = VIRT_IOMMU_NONE;
>
> + /* The primary bus is attached to iommu by default */
> + vms->bypass_iommu = false;
I don't fully master the PCI topology but I think you should clarify
which primary bus we talk about. AFAIU PXB's bus also is a primary bus.
Thanks
Eric
> +
> /* Default disallows RAS instantiation */
> vms->ras = false;
>
> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
> index 921416f918..82bceadb82 100644
> --- a/include/hw/arm/virt.h
> +++ b/include/hw/arm/virt.h
> @@ -147,6 +147,7 @@ struct VirtMachineState {
> OnOffAuto acpi;
> VirtGICType gic_version;
> VirtIOMMUType iommu;
> + bool bypass_iommu;
> VirtMSIControllerType msi_controller;
> uint16_t virtio_iommu_bdf;
> struct arm_boot_info bootinfo;
next prev parent reply other threads:[~2021-06-02 12:27 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-25 3:49 [PATCH v4 0/8] IOMMU: Add support for IOMMU Bypass Feature Wang Xingang
2021-05-25 3:49 ` [PATCH v4 1/8] hw/pci/pci_host: Allow bypass iommu for pci host Wang Xingang
2021-06-02 12:18 ` Eric Auger
2021-06-03 12:42 ` Xingang Wang
2021-05-25 3:49 ` [PATCH v4 2/8] hw/pxb: Add a bypass iommu property Wang Xingang
2021-06-02 12:18 ` Eric Auger
2021-05-25 3:50 ` [PATCH v4 3/8] hw/arm/virt: Add a machine option to bypass iommu for primary bus Wang Xingang
2021-06-02 12:25 ` Eric Auger [this message]
2021-06-03 12:47 ` Xingang Wang
2021-05-25 3:50 ` [PATCH v4 4/8] hw/i386: Add a pc " Wang Xingang
2021-05-25 3:50 ` [PATCH v4 5/8] hw/pci: Add pci_bus_range to get bus number range Wang Xingang
2021-06-02 13:03 ` Eric Auger
2021-06-03 12:48 ` Xingang Wang
2021-05-25 3:50 ` [PATCH v4 6/8] hw/arm/virt-acpi-build: Add explicit IORT idmap for smmuv3 node Wang Xingang
2021-06-02 14:21 ` Eric Auger
2021-06-03 12:52 ` Xingang Wang
2021-05-25 3:50 ` [PATCH v4 7/8] hw/i386/acpi-build: Add explicit scope in DMAR table Wang Xingang
2021-05-25 3:50 ` [PATCH v4 8/8] hw/i386/acpi-build: Add bypass_iommu check when building IVRS table Wang Xingang
2021-05-31 11:38 ` [PATCH v4 0/8] IOMMU: Add support for IOMMU Bypass Feature Xingang Wang
2021-06-05 12:32 ` Igor Mammedov
2021-06-08 12:24 ` Xingang Wang
2021-06-08 13:38 ` Igor Mammedov
2021-06-15 12:04 ` Xingang Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b1f26e3a-d678-aa50-4e82-71c76c9775b8@redhat.com \
--to=eric.auger@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shannon.zhaosl@gmail.com \
--cc=wangxingang5@huawei.com \
--cc=xieyingtai@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).