From: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
To: Peter Xu <peterx@redhat.com>, qemu-devel@nongnu.org
Cc: ehabkost@redhat.com, mst@redhat.com, jasowang@redhat.com,
imammedo@redhat.com, pbonzini@redhat.com,
David Kiarie <davidkiarie4@gmail.com>,
rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 01/13] q35: add "int-remap" flag to enable intr
Date: Sun, 21 Feb 2016 12:38:38 +0200 [thread overview]
Message-ID: <56C993AE.7010703@gmail.com> (raw)
In-Reply-To: <1455852618-5224-2-git-send-email-peterx@redhat.com>
On 02/19/2016 05:30 AM, Peter Xu wrote:
> One flag is added to specify whether to enable INTR for emulated
> IOMMU. By default, interrupt remapping is not supportted. To enable it,
> we should specify something like:
>
> $ qemu-system-x86_64 -M q35,iommu=on,int_remap=on
Hi Peter,
Please be aware that there is an AMD IOMMU emulation series on the list,
so now we will have iommu=intel/amd/off.
As far as I know we prefer int-remap instead of int_remap and also
the "int" prefix reminds me integer, I would use ir=on or the clean interrupt-remapping=on.
>
> To be more clear, the following command:
>
> $ qemu-system-x86_64 -M q35,iommu=on
>
> Will enable Intel IOMMU only, without interrupt remapping support.
Since AMD IOMMU also supports interrupt remapping please sync with the other project.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> hw/core/machine.c | 20 ++++++++++++++++++++
> hw/pci-host/q35.c | 6 ++++--
> include/hw/boards.h | 1 +
> include/hw/i386/intel_iommu.h | 3 +++
> 4 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 6d1a0d8..852cee2 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -298,6 +298,20 @@ static void machine_set_iommu(Object *obj, bool value, Error **errp)
> ms->iommu = value;
> }
>
> +static bool machine_get_int_remap(Object *obj, Error **errp)
> +{
> + MachineState *ms = MACHINE(obj);
> +
> + return ms->int_remap;
> +}
I am starting to wonder if "iommu" and now "interrupt-remapping" should be part
of machine and not the pc machine. Both implementations we have are only for the PC machines.
> +
> +static void machine_set_int_remap(Object *obj, bool value, Error **errp)
> +{
> + MachineState *ms = MACHINE(obj);
> +
> + ms->int_remap = value;
> +}
> +
> static void machine_set_suppress_vmdesc(Object *obj, bool value, Error **errp)
> {
> MachineState *ms = MACHINE(obj);
> @@ -461,6 +475,12 @@ static void machine_initfn(Object *obj)
> object_property_set_description(obj, "iommu",
> "Set on/off to enable/disable Intel IOMMU (VT-d)",
> NULL);
> + object_property_add_bool(obj, "int-remap",
> + machine_get_int_remap,
> + machine_set_int_remap, NULL);
> + object_property_set_description(obj, "int-remap",
> + "Set on/off to enable/disable Intel IOMMU INTR",
> + NULL);
Here the same, I would rename int-remap to interrupt-remapping and keep in mind
that would not be for Intel IOMMU only.
> object_property_add_bool(obj, "suppress-vmdesc",
> machine_get_suppress_vmdesc,
> machine_set_suppress_vmdesc, NULL);
> diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
> index 115fb8c..7cd4d87 100644
> --- a/hw/pci-host/q35.c
> +++ b/hw/pci-host/q35.c
> @@ -434,13 +434,14 @@ static AddressSpace *q35_host_dma_iommu(PCIBus *bus, void *opaque, int devfn)
> return &vtd_as->as;
> }
>
> -static void mch_init_dmar(MCHPCIState *mch)
> +static void mch_init_dmar(MCHPCIState *mch, bool intr_supported)
> {
> PCIBus *pci_bus = PCI_BUS(qdev_get_parent_bus(DEVICE(mch)));
>
> mch->iommu = INTEL_IOMMU_DEVICE(qdev_create(NULL, TYPE_INTEL_IOMMU_DEVICE));
> object_property_add_child(OBJECT(mch), "intel-iommu",
> OBJECT(mch->iommu), NULL);
> + mch->iommu->intr_supported = intr_supported;
> qdev_init_nofail(DEVICE(mch->iommu));
> sysbus_mmio_map(SYS_BUS_DEVICE(mch->iommu), 0, Q35_HOST_BRIDGE_IOMMU_ADDR);
>
> @@ -507,7 +508,8 @@ static void mch_realize(PCIDevice *d, Error **errp)
> }
> /* Intel IOMMU (VT-d) */
> if (object_property_get_bool(qdev_get_machine(), "iommu", NULL)) {
> - mch_init_dmar(mch);
> + mch_init_dmar(mch, object_property_get_bool(qdev_get_machine(),
> + "int-remap", false));
Here you can directly call qdev_get_machine()->interrupt-remapping instead of object_property_get_bool.
Thanks,
Marcel
> }
> }
>
> diff --git a/include/hw/boards.h b/include/hw/boards.h
> index 0f30959..d488e40 100644
> --- a/include/hw/boards.h
> +++ b/include/hw/boards.h
> @@ -127,6 +127,7 @@ struct MachineState {
> bool igd_gfx_passthru;
> char *firmware;
> bool iommu;
> + bool int_remap;
> bool suppress_vmdesc;
>
> ram_addr_t ram_size;
> diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h
> index b024ffa..6e52c6b 100644
> --- a/include/hw/i386/intel_iommu.h
> +++ b/include/hw/i386/intel_iommu.h
> @@ -123,6 +123,9 @@ struct IntelIOMMUState {
> MemoryRegionIOMMUOps iommu_ops;
> GHashTable *vtd_as_by_busptr; /* VTDBus objects indexed by PCIBus* reference */
> VTDBus *vtd_as_by_bus_num[VTD_PCI_BUS_MAX]; /* VTDBus objects indexed by bus number */
> +
> + /* interrupt remapping */
> + bool intr_supported; /* Whether IR is supported */
> };
>
> /* Find the VTD Address space associated with the given bus pointer,
>
next prev parent reply other threads:[~2016-02-21 10:38 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-19 3:30 [Qemu-devel] [PATCH 00/13] IOMMU: Enable interrupt remapping for Intel IOMMU Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 01/13] q35: add "int-remap" flag to enable intr Peter Xu
2016-02-21 10:38 ` Marcel Apfelbaum [this message]
2016-02-23 3:48 ` Peter Xu
2016-02-25 15:47 ` Marcel Apfelbaum
2016-04-08 7:30 ` Peter Xu
2016-04-11 10:07 ` Marcel Apfelbaum
2016-02-19 3:30 ` [Qemu-devel] [PATCH 02/13] acpi: enable INTR for DMAR report structure Peter Xu
2016-02-21 11:05 ` Marcel Apfelbaum
2016-04-08 8:07 ` Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 03/13] intel_iommu: allow queued invalidation for IR Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 04/13] intel_iommu: set IR bit for ECAP register Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 05/13] acpi: add DMAR scope definition for root IOAPIC Peter Xu
2016-02-21 11:38 ` Marcel Apfelbaum
2016-02-21 12:08 ` Marcel Apfelbaum
2016-02-21 13:40 ` Jan Kiszka
2016-02-21 15:54 ` Marcel Apfelbaum
2016-02-21 16:01 ` Jan Kiszka
2016-04-08 9:53 ` Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 06/13] intel_iommu: define interrupt remap table addr register Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 07/13] intel_iommu: handle interrupt remap enable Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 08/13] intel_iommu: define several structs for IOMMU IR Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 09/13] intel_iommu: provide helper function vtd_get_iommu Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 10/13] ioapic-common: add iommu for IOAPICCommonState Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 11/13] intel_iommu: add IR translation faults defines Peter Xu
2016-02-21 15:56 ` Marcel Apfelbaum
2016-04-08 10:03 ` Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 12/13] intel_iommu: ioapic: IR support for emulated IOAPIC Peter Xu
2016-02-19 3:30 ` [Qemu-devel] [PATCH 13/13] intel_iommu: Add support for PCI MSI remap Peter Xu
2016-02-19 6:46 ` [Qemu-devel] [PATCH 00/13] IOMMU: Enable interrupt remapping for Intel IOMMU Jan Kiszka
2016-02-19 7:43 ` Peter Xu
2016-02-19 8:34 ` Jan Kiszka
2016-02-19 9:29 ` Peter Xu
2016-02-19 9:58 ` Paolo Bonzini
2016-02-19 10:15 ` Jan Kiszka
2016-02-19 11:39 ` Peter Xu
2016-02-19 11:43 ` Jan Kiszka
2016-02-19 11:34 ` Peter Xu
2016-02-19 11:43 ` Jan Kiszka
2016-02-19 16:22 ` Radim Krčmář
2016-02-20 10:05 ` Jan Kiszka
2016-02-19 16:38 ` Radim Krčmář
2016-02-23 5:03 ` Peter Xu
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=56C993AE.7010703@gmail.com \
--to=marcel.apfelbaum@gmail.com \
--cc=davidkiarie4@gmail.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=jasowang@redhat.com \
--cc=marcel@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.