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: 2+ 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
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox