From: "Wysocki, Rafael J" <rafael.j.wysocki@intel.com>
To: "Camacho Romero, Michal" <michal.camacho.romero@intel.com>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"Mowka, Mateusz" <mateusz.mowka@intel.com>,
"Fedko, Artem" <artem.fedko@intel.com>,
"Pawlicki, AdamX" <adamx.pawlicki@intel.com>,
"Michalak, BartlomiejX" <bartlomiejx.michalak@intel.com>,
"acpica-devel@lists.linux.dev" <acpica-devel@lists.linux.dev>,
"Moore, Robert" <robert.moore@intel.com>,
Saket Dumbre <saket.dumbre@intel.com>
Subject: Re: [PATCH 1/3]: ACPICA: actbl1.h: Add support for the new ACPI Table: DTPR
Date: Fri, 16 May 2025 22:40:55 +0200 [thread overview]
Message-ID: <79044d87-3bc1-4b39-a711-8313dfce4a5e@intel.com> (raw)
In-Reply-To: <IA1PR11MB77556710DD26474B9B857408AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
On 5/16/2025 10:28 AM, Camacho Romero, Michal wrote:
>
> Hello @Moore, Robert <mailto:robert.moore@intel.com>, @Wysocki, Rafael
> J <mailto:rafael.j.wysocki@intel.com>
>
> According to the latest version of the Intel TXT DMA Protection Ranges
> specification
>
> (Revision 0.73), there were defined a new the ACPI Table, structure
> and registers, which will be used to handle TPRs:
>
> * DTPR ACPI Table
>
> * TPR Base Register
>
> * TPR Serialize Request Register
>
> * TPR Limit Register
>
> * TPR Instance Structure
>
> * DMAR TXT Protected Reporting Structure
>
> Link:
> https://uefi.org/sites/default/files/resources/633933_Intel_TXT_DMA_Protection_Ranges_rev_0p73.pdf
>
> Signed-off-by: Michal Camacho Romero michal.camacho.romero@intel.com
>
Can you please submit this as a pull request to the upstream ACPICA
project on GitHub?
> ---
>
> include/acpi/actbl1.h | 86 +++++++++++++++++++++++++++++++++++++++++++
>
> 1 file changed, 86 insertions(+)
>
> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
>
> index 387fc821703a..14802feb54fd 100644
>
> --- a/include/acpi/actbl1.h
>
> +++ b/include/acpi/actbl1.h
>
> @@ -47,6 +47,7 @@
>
> #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer
> table */
>
> #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
>
> #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics
> Table */
>
> +#define ACPI_SIG_DTPR "DTPR" /* TXT DMA Protection Ranges
> reporting table */
>
> #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
>
> #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
>
> @@ -1953,6 +1954,91 @@ struct acpi_ibft_target {
>
> u16 reverse_chap_secret_offset;
>
> };
>
> +/*******************************************************************************
>
> + *
>
> + * DTPR - DMA TPR Reporting
>
> + * Version 1
>
> + *
>
> + * Conforms to "Intel® Trusted Execution Technology (Intel® TXT) DMA
> Protection
>
> + * Ranges",
>
> + * Revision 0.73, August 2021
>
> + *
>
> +
> ******************************************************************************/
>
> +
>
> +struct acpi_table_dtpr {
>
> + struct acpi_table_header header;
>
> + u32 flags; // 36
>
> +};
>
> +
>
> +struct acpi_tpr_array {
>
> + u64 base;
>
> +};
>
> +
>
> +struct acpi_dtpr_instance {
>
> + u32 flags;
>
> + u32 tpr_cnt;
>
> + struct acpi_tpr_array tpr_array[];
>
> +};
>
> +
>
> +/*******************************************************************************
>
> + * TPRn_BASE
>
> + *
>
> + * Specifies the start address of TPRn region. TPR region address and
> size must
>
> + * be with 1MB resolution. These bits are compared with the result of the
>
> + * TPRn_LIMIT[63:20] * applied to the incoming address, to determine
> if an
>
> + * access fall within the TPRn defined region.
>
> +*******************************************************************************/
>
> +struct acpi_dtprn_base_reg {
>
> + u64 reserved0 : 3;
>
> + u64 rw : 1; // access: 1 == RO, 0 == RW (for TPR must be RW)
>
> + u64 enable : 1; // 0 == range enabled, 1 == range disabled
>
> + u64 reserved1 : 15;
>
> + u64 tpr_base_rw : 44; // Minimal TPRn_Base resolution is 1MB.
>
> + // Applied to the incoming address, to determine if an
>
> + // access fall within the TPRn defined region.
>
> + // Width is determined by a bus width which can be
>
> + // obtainedvia CPUID function 0x80000008.
>
> + //u64 unused : 1;
>
> +};
>
> +
>
> +/*******************************************************************************
>
> + * TPRn_LIMIT
>
> + *
>
> + * This register defines an isolated region of memory that can be enabled
>
> + * to prohibit certain system agents from accessing memory. When an agent
>
> + * sends a request upstream, whether snooped or not, a TPR prevents that
>
> + * transaction from changing the state of memory.
>
> +*******************************************************************************/
>
> +
>
> +struct acpi_dtprn_limit_reg {
>
> + u64 reserved0 : 3;
>
> + u64 rw : 1; // access: 1 == RO, 0 == RW (for TPR must be RW)
>
> + u64 enable : 1; // 0 == range enabled, 1 == range disabled
>
> + u64 reserved1 : 15;
>
> + u64 tpr_limit_rw : 44; // Minimal TPRn_Limit resolution is 1MB.
>
> + // These bits define TPR limit address.
>
> + // Width is determined by a bus width.
>
> +
>
> + //u64 unused : 1;
>
> +};
>
> +
>
> +/*******************************************************************************
>
> + * SERIALIZE_REQUEST
>
> + *
>
> + * This register is used to request serialization of non-coherent DMA
>
> + * transactions. OS shall issue it before changing of TPR settings
>
> + * (base / size).
>
> +*******************************************************************************/
>
> +
>
> +struct acpi_tpr_serialize_request {
>
> + u64 sts : 1; // Status of serialization request (RO)
>
> + // 0 == register idle, 1 == serialization in
> progress
>
> + u64 ctrl : 1; // Control field to initiate serialization (RW)
>
> + // 0 == normal, 1 == initialize serialization
>
> + // (self-clear to allow multiple serialization requests)
>
> + u64 unused : 62;
>
> +};
>
> +
>
> /* Reset to default packing */
>
> #pragma pack()
>
> --
>
> 2.43.0
>
next parent reply other threads:[~2025-05-16 20:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <IA1PR11MB77556710DD26474B9B857408AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
2025-05-16 20:40 ` Wysocki, Rafael J [this message]
2025-05-20 8:44 ` [PATCH 1/3]: ACPICA: actbl1.h: Add support for the new ACPI Table: DTPR Camacho Romero, Michal
[not found] ` <IA1PR11MB7755A29CB6DE24B485C71F31AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
[not found] ` <IA1PR11MB7755B7E81479BC3BC5B11281AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
2025-05-19 2:09 ` [PATCH 3/3] iommu: intel: Disable TPRs to allow Kernel for the further DMA usage Baolu Lu
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=79044d87-3bc1-4b39-a711-8313dfce4a5e@intel.com \
--to=rafael.j.wysocki@intel.com \
--cc=acpica-devel@lists.linux.dev \
--cc=adamx.pawlicki@intel.com \
--cc=artem.fedko@intel.com \
--cc=bartlomiejx.michalak@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=mateusz.mowka@intel.com \
--cc=michal.camacho.romero@intel.com \
--cc=robert.moore@intel.com \
--cc=saket.dumbre@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.