From: Vasant Hegde <vasant.hegde@amd.com>
To: Sairaj Kodilkar <sarunkod@amd.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Alejandro Jimenez <alejandro.j.jimenez@oracle.com>,
Ani Sinha <anisinha@redhat.com>,
Eduardo Habkost <eduardo@habkost.net>,
Igor Mammedov <imammedo@redhat.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
qemu-devel@nongnu.org
Cc: suravee.suthikulpanit@amd.com
Subject: Re: [PATCH 6/8] acpi_build: Build IVRS feature report using extended feature register
Date: Tue, 19 May 2026 14:13:20 +0530 [thread overview]
Message-ID: <5f43672e-8da3-412a-9d0c-e169799948ae@amd.com> (raw)
In-Reply-To: <20260511123937.32743-7-sarunkod@amd.com>
On 5/11/2026 6:09 PM, Sairaj Kodilkar wrote:
> Currently IVRS feature report values are hardcoded, this is difficult to
> maintain as any updates to extended feature must be synced. Along with
> it current feature report does not have GATS and HATS set. Hence use
> the extended feature registers to build the IVRS feature report.
> > Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
> ---
> hw/i386/acpi-build.c | 38 +++++++++++++++++++++++++++++++-------
> hw/i386/acpi-build.h | 1 -
> 2 files changed, 31 insertions(+), 8 deletions(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index 718e3f546b18..82208e06e155 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -1747,6 +1747,36 @@ ivrs_host_bridges(Object *obj, void *opaque)
> return 0;
> }
>
> +/*
> + * IVHD type 0x10 reports features using Feature Reporting field, which has
> + * different format than extended feature register (EFR) in the IOMMU MMIO
> + * space.
> + *
> + * Convert the EFR format to feature reporting format.
> + */
> +static uint32_t
> +get_amd_ivhd_feature_report(AMDVIState *s)
> +{
> + uint64_t feature = amdvi_extended_feature_register(s);
> + uint32_t is_gt = !!(feature & AMDVI_FEATURE_GT);
> + uint32_t is_ga = !!(feature & AMDVI_FEATURE_GA);
> + uint64_t glx_sup = (feature & AMDVI_GLX_SUP_MASK) >> AMDVI_GLX_SUP_SHIFT;
> + uint64_t hats_mode = (feature & AMDVI_HATS_MODE_MASK) >>
> + AMDVI_HATS_MODE_SHIFT;
> + uint64_t gats_mode = (feature & AMDVI_GATS_MODE_MASK) >>
> + AMDVI_GATS_MODE_SHIFT;
> + uint32_t feature_report;
> +
> + feature_report = s->xtsup << AMD_IVHD_FEATURE_REPORT_XT_SUP_SHIFT |
> + is_gt << AMD_IVHD_FEATURE_REPORT_GT_SUP_SHIFT |
> + glx_sup << AMD_IVHD_FEATURE_REPORT_GLX_SUP_SHIFT |
Looks like glx is new? Please drop the glx changes as we are not supporting
guest page table yet.
> + is_ga << AMD_IVHD_FEATURE_REPORT_GA_SUP_SHIFT |
> + hats_mode << AMD_IVHD_FEATURE_REPORT_HATS_SHIFT |
> + gats_mode << AMD_IVHD_FEATURE_REPORT_GATS_SHIFT;
> +
> + return feature_report;
> +}
> +
> static void
> build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
> const char *oem_table_id)
> @@ -1829,13 +1859,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
> /* IOMMU info */
> build_append_int_noprefix(table_data, 0, 2);
> /* IOMMU Feature Reporting */
> - feature_report = (48UL << 30) | /* HATS */
> - (48UL << 28) | /* GATS */
> - (1UL << 2) | /* GTSup */
> - (1UL << 6); /* GASup */
> - if (s->xtsup) {
> - feature_report |= (1UL << 0); /* XTSup */
> - }
> + feature_report = get_amd_ivhd_feature_report(s);
> build_append_int_noprefix(table_data, feature_report, 4);
>
> /* IVHD entries as found above */
> diff --git a/hw/i386/acpi-build.h b/hw/i386/acpi-build.h
> index 9fd60a186db1..d81b7890e6e2 100644
> --- a/hw/i386/acpi-build.h
> +++ b/hw/i386/acpi-build.h
> @@ -1,4 +1,3 @@
> -
Unnecessary change.
-Vasant
next prev parent reply other threads:[~2026-05-19 8:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 12:39 [PATCH 0/8] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 1/8] tests/acpi: x86: Allow IVRS acpi table changes Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 2/8] amd_iommu: update PA, GVA and VA size macros Sairaj Kodilkar
2026-05-19 8:39 ` Vasant Hegde
2026-05-11 12:39 ` [PATCH 3/8] amd_iommu: Return empty efr for stub call Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 4/8] acpi_build: Use IOMMU pci device to build IOMMU device ID Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 5/8] acpi_build: Introduce necessary macros and structs for AMD IOMMU IVRS Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 6/8] acpi_build: Build IVRS feature report using extended feature register Sairaj Kodilkar
2026-05-19 8:43 ` Vasant Hegde [this message]
2026-05-11 12:39 ` [PATCH 7/8] acpi_build: Cleanup AMD IOMMU IVRS building Sairaj Kodilkar
2026-05-11 12:39 ` [PATCH 8/8] tests/acpi: x86: update golden masters for IVRS Sairaj Kodilkar
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=5f43672e-8da3-412a-9d0c-e169799948ae@amd.com \
--to=vasant.hegde@amd.com \
--cc=alejandro.j.jimenez@oracle.com \
--cc=anisinha@redhat.com \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sarunkod@amd.com \
--cc=suravee.suthikulpanit@amd.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 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.