From: Markus Armbruster <armbru@redhat.com>
To: Nathan Chen <nathanc@nvidia.com>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org,
"Yi Liu" <yi.l.liu@intel.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Zhenzhong Duan" <zhenzhong.duan@intel.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Shannon Zhao" <shannon.zhaosl@gmail.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Alex Williamson" <alex@shazbot.org>,
"Cédric Le Goater" <clg@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [RFC PATCH 8/8] hw/arm/smmuv3-accel: Introduce _AUTO support for OAS
Date: Tue, 10 Mar 2026 08:23:35 +0100 [thread overview]
Message-ID: <877brkno5k.fsf@pond.sub.org> (raw)
In-Reply-To: <20260309192119.870186-9-nathanc@nvidia.com> (Nathan Chen's message of "Mon, 9 Mar 2026 12:21:19 -0700")
Nathan Chen <nathanc@nvidia.com> writes:
> From: Nathan Chen <nathanc@nvidia.com>
>
> Allow accelerated SMMUv3 OAS property to be derived from host IOMMU
> capabilities. Derive host values using IOMMU_GET_HW_INFO, retrieving
> OAS from IDR5.
>
> Set the default oas value to auto. The default Output Address Size used
> to be 44-bit, but we change it to match what the host IOMMU properties
> report so that users do not have to introspect host IDR5 for the OAS.
> This keeps the OAS value advertised by the virtual SMMU compatible with
> the capabilities of the host SMMUv3, so that the intermediate physical
> addresses (IPA) consumed by host SMMU for stage-2 translation do not
> exceed the host's max supported IPA size.
>
> Signed-off-by: Nathan Chen <nathanc@nvidia.com>
> ---
> hw/arm/smmuv3-accel.c | 11 +++++++++--
> hw/arm/smmuv3.c | 11 ++++++-----
> include/hw/arm/smmuv3.h | 2 +-
> 3 files changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c
> index bd27b0da7c..03950a4cef 100644
> --- a/hw/arm/smmuv3-accel.c
> +++ b/hw/arm/smmuv3-accel.c
> @@ -71,6 +71,12 @@ static void smmuv3_accel_auto_finalise(SMMUv3State *s, PCIDevice *pdev,
> FIELD_EX32(info->idr[1], IDR1, SSIDSIZE));
> }
>
> + /* Update OAS if auto from info */
> + if (s->oas == OAS_MODE_AUTO) {
> + s->idr[5] = FIELD_DP32(s->idr[5], IDR5, OAS,
> + FIELD_EX32(info->idr[5], IDR5, OAS));
> + }
> +
> accel->auto_finalised = true;
> }
>
> @@ -898,7 +904,7 @@ void smmuv3_accel_idr_override(SMMUv3State *s)
> }
>
> /* Advertise 48-bit OAS in IDR5 when requested (default is 44 bits). */
> - if (s->oas == SMMU_OAS_48BIT) {
> + if (s->oas == OAS_MODE_48) {
> s->idr[5] = FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS_48);
> }
>
> @@ -979,7 +985,8 @@ void smmuv3_accel_init(SMMUv3State *s)
>
> if (s->ats == ON_OFF_AUTO_AUTO ||
> s->ril == ON_OFF_AUTO_AUTO ||
> - s->ssidsize == SSID_SIZE_MODE_AUTO) {
> + s->ssidsize == SSID_SIZE_MODE_AUTO ||
> + s->oas == OAS_MODE_AUTO) {
> s->s_accel->auto_mode = true;
> }
> }
> diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
> index bc03353759..4fc4ed2c06 100644
> --- a/hw/arm/smmuv3.c
> +++ b/hw/arm/smmuv3.c
> @@ -1982,7 +1982,7 @@ static bool smmu_validate_property(SMMUv3State *s, Error **errp)
> error_setg(errp, "ats can only be enabled if accel=on");
> return false;
> }
> - if (s->oas != SMMU_OAS_44BIT) {
> + if (s->oas > OAS_MODE_44) {
> error_setg(errp, "OAS must be 44 bits when accel=off");
> return false;
> }
> @@ -2000,8 +2000,9 @@ static bool smmu_validate_property(SMMUv3State *s, Error **errp)
> return false;
> }
>
> - if (s->oas != SMMU_OAS_44BIT && s->oas != SMMU_OAS_48BIT) {
> - error_setg(errp, "OAS can only be set to 44 or 48 bits");
> + if (s->oas != OAS_MODE_AUTO && s->oas != OAS_MODE_44 &&
> + s->oas != OAS_MODE_48) {
> + error_setg(errp, "OAS can only be set to auto, 44 bits, or 48 bits");
> return false;
> }
>
> @@ -2131,7 +2132,7 @@ static const Property smmuv3_properties[] = {
> /* RIL can be turned off for accel cases */
> DEFINE_PROP_ON_OFF_AUTO("ril", SMMUv3State, ril, ON_OFF_AUTO_AUTO),
> DEFINE_PROP_ON_OFF_AUTO("ats", SMMUv3State, ats, ON_OFF_AUTO_AUTO),
> - DEFINE_PROP_UINT8("oas", SMMUv3State, oas, 44),
> + DEFINE_PROP_OAS_MODE("oas", SMMUv3State, oas, OAS_MODE_AUTO),
Is property "oas" accessible via QMP or JSON command line? If yes, this
is an incompatible change: JSON integer values no longer work.
> DEFINE_PROP_SSIDSIZE_MODE("ssidsize", SMMUv3State, ssidsize,
> SSID_SIZE_MODE_AUTO),
> };
> @@ -2168,7 +2169,7 @@ static void smmuv3_class_init(ObjectClass *klass, const void *data)
> "platform has ATS support before enabling this");
> object_class_property_set_description(klass, "oas",
> "Specify Output Address Size (for accel=on). Supported values "
> - "are 44 or 48 bits. Defaults to 44 bits");
> + "are 44 or 48 bits.");
> object_class_property_set_description(klass, "ssidsize",
> "Number of bits used to represent SubstreamIDs (SSIDs). "
> "A value of N allows SSIDs in the range [0 .. 2^N - 1]. "
> diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h
> index ae8158a5c3..3bfee63396 100644
> --- a/include/hw/arm/smmuv3.h
> +++ b/include/hw/arm/smmuv3.h
> @@ -72,7 +72,7 @@ struct SMMUv3State {
> Error *migration_blocker;
> OnOffAuto ril;
> OnOffAuto ats;
> - uint8_t oas;
> + OasMode oas;
> SsidSizeMode ssidsize;
> };
next prev parent reply other threads:[~2026-03-10 7:24 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-09 19:21 [RFC PATCH 0/8] hw/arm/smmuv3-accel: Support AUTO properties Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 1/8] hw/arm/smmuv3-accel: Add helper for resolving auto parameters Nathan Chen
2026-03-10 7:00 ` Markus Armbruster
2026-03-10 9:01 ` Shameer Kolothum Thodi
2026-03-12 8:20 ` Markus Armbruster
2026-03-12 8:33 ` Shameer Kolothum Thodi
2026-03-12 8:39 ` Cédric Le Goater
2026-03-12 8:44 ` Shameer Kolothum Thodi
2026-03-10 7:42 ` Cédric Le Goater
2026-03-10 8:40 ` Shameer Kolothum Thodi
2026-03-12 8:37 ` Cédric Le Goater
2026-03-12 9:29 ` Shameer Kolothum Thodi
2026-03-10 17:13 ` Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 2/8] hw/arm/smmuv3-accel: Introduce _AUTO support for ATS Nathan Chen
2026-03-10 7:05 ` Markus Armbruster
2026-03-10 17:35 ` Nathan Chen
2026-03-11 15:31 ` Eric Auger
2026-03-11 17:08 ` Nathan Chen
2026-03-11 17:16 ` Eric Auger
2026-03-11 18:09 ` Pavel Hrdina
2026-03-12 8:39 ` Markus Armbruster
2026-03-12 8:51 ` Eric Auger
2026-03-12 9:20 ` Markus Armbruster
2026-03-12 9:25 ` Eric Auger
2026-03-12 16:35 ` Nathan Chen
2026-03-12 8:52 ` Eric Auger
2026-03-11 17:24 ` Eric Auger
2026-03-11 17:46 ` Eric Auger
2026-03-11 17:53 ` Nathan Chen
2026-03-11 18:10 ` Eric Auger
2026-03-11 18:21 ` Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 3/8] vfio/pci: Add ats property and mask ATS cap when not exposed Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 4/8] hw/arm/smmuv3-accel: Introduce _AUTO support for RIL Nathan Chen
2026-03-10 7:06 ` Markus Armbruster
2026-03-09 19:21 ` [RFC PATCH 5/8] qdev: Add a SsidSizeMode property Nathan Chen
2026-03-10 7:14 ` Markus Armbruster
2026-03-09 19:21 ` [RFC PATCH 6/8] hw/arm/smmuv3-accel: Introduce _AUTO support for SSID size Nathan Chen
2026-03-10 7:21 ` Markus Armbruster
2026-03-10 17:44 ` Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 7/8] qdev: Add an OasMode property Nathan Chen
2026-03-11 18:20 ` Eric Auger
2026-03-11 18:24 ` Nathan Chen
2026-03-12 9:29 ` Eric Auger
2026-03-12 16:32 ` Nathan Chen
2026-03-09 19:21 ` [RFC PATCH 8/8] hw/arm/smmuv3-accel: Introduce _AUTO support for OAS Nathan Chen
2026-03-10 7:23 ` Markus Armbruster [this message]
2026-03-11 17:43 ` [RFC PATCH 0/8] hw/arm/smmuv3-accel: Support AUTO properties Eric Auger
2026-03-11 17:55 ` Nathan Chen
2026-03-11 18:25 ` Eric Auger
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=877brkno5k.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=alex@shazbot.org \
--cc=anisinha@redhat.com \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=eblake@redhat.com \
--cc=eric.auger@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=nathanc@nvidia.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shannon.zhaosl@gmail.com \
--cc=yi.l.liu@intel.com \
--cc=zhenzhong.duan@intel.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.