All of lore.kernel.org
 help / color / mirror / Atom feed
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, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 02/13] acpi: enable INTR for DMAR report structure
Date: Sun, 21 Feb 2016 13:05:24 +0200	[thread overview]
Message-ID: <56C999F4.5040102@gmail.com> (raw)
In-Reply-To: <1455852618-5224-3-git-send-email-peterx@redhat.com>

On 02/19/2016 05:30 AM, Peter Xu wrote:
> In ACPI DMA remapping report structure, enable INTR flag when specified.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>   hw/i386/acpi-build.c          | 31 ++++++++++++++++++++++++-------
>   include/hw/i386/intel_iommu.h |  2 ++
>   2 files changed, 26 insertions(+), 7 deletions(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index 4554eb8..d9e4f91 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -2489,6 +2489,19 @@ build_mcfg_q35(GArray *table_data, GArray *linker, AcpiMcfgInfo *info)
>       build_header(linker, table_data, (void *)mcfg, sig, len, 1, NULL, NULL);
>   }
>
> +static IntelIOMMUState *acpi_get_iommu(void)
> +{
> +    bool ambiguous = false;
> +    Object *intel_iommu = NULL;
> +
> +    intel_iommu = object_resolve_path_type("", TYPE_INTEL_IOMMU_DEVICE,
> +                                 &ambiguous);
> +    if (ambiguous)
> +        intel_iommu = NULL;
> +
> +    return (IntelIOMMUState *)intel_iommu;
> +}
> +
>   static void
>   build_dmar_q35(GArray *table_data, GArray *linker)
>   {
> @@ -2496,10 +2509,19 @@ build_dmar_q35(GArray *table_data, GArray *linker)
>
>       AcpiTableDmar *dmar;
>       AcpiDmarHardwareUnit *drhd;
> +    uint8_t dmar_flags = 0;
> +    IntelIOMMUState *intel_iommu = acpi_get_iommu();
> +
> +    assert(intel_iommu);
> +
> +    if (intel_iommu->intr_supported) {

Hi,

It seems intr_supported duplicates the same field you have in machine.
You can pass the machine to build_dmar_q35 and get rid of the extra field.

Thanks,
Marcel


> +        /* enable INTR for the IOMMU device */
> +        dmar_flags |= DMAR_REPORT_F_INTR;
> +    }
>
>       dmar = acpi_data_push(table_data, sizeof(*dmar));
>       dmar->host_address_width = VTD_HOST_ADDRESS_WIDTH - 1;
> -    dmar->flags = 0;    /* No intr_remap for now */
> +    dmar->flags = dmar_flags;
>
>       /* DMAR Remapping Hardware Unit Definition structure */
>       drhd = acpi_data_push(table_data, sizeof(*drhd));
> @@ -2572,12 +2594,7 @@ static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg)
>
>   static bool acpi_has_iommu(void)
>   {
> -    bool ambiguous;
> -    Object *intel_iommu;
> -
> -    intel_iommu = object_resolve_path_type("", TYPE_INTEL_IOMMU_DEVICE,
> -                                           &ambiguous);
> -    return intel_iommu && !ambiguous;
> +    return !!acpi_get_iommu();
>   }
>
>   static bool acpi_has_nvdimm(void)
> diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h
> index 6e52c6b..83e5a1e 100644
> --- a/include/hw/i386/intel_iommu.h
> +++ b/include/hw/i386/intel_iommu.h
> @@ -44,6 +44,8 @@
>   #define VTD_HOST_ADDRESS_WIDTH      39
>   #define VTD_HAW_MASK                ((1ULL << VTD_HOST_ADDRESS_WIDTH) - 1)
>
> +#define DMAR_REPORT_F_INTR          (1)
> +
>   typedef struct VTDContextEntry VTDContextEntry;
>   typedef struct VTDContextCacheEntry VTDContextCacheEntry;
>   typedef struct IntelIOMMUState IntelIOMMUState;
>

  reply	other threads:[~2016-02-21 11:05 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
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 [this message]
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=56C999F4.5040102@gmail.com \
    --to=marcel.apfelbaum@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.