public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
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
>

       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