Linux IOMMU Development
 help / color / mirror / Atom feed
* Re: [PATCH 3/3] iommu: intel: Disable TPRs to allow Kernel for the further DMA usage
       [not found]   ` <IA1PR11MB7755B7E81479BC3BC5B11281AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
@ 2025-05-19  2:09     ` Baolu Lu
  0 siblings, 0 replies; only message in thread
From: Baolu Lu @ 2025-05-19  2:09 UTC (permalink / raw)
  To: Camacho Romero, Michal
  Cc: iommu@lists.linux.dev, Fedko, Artem, Mowka, Mateusz,
	Pawlicki, AdamX, Michalak, BartlomiejX

On 5/16/25 17:19, Camacho Romero, Michal wrote:
> In order to enable DMA for the Linux Kernel, working on the newest Intel 
> CPUs versions,
> 
> it is necessary to disable TPR memory protection, set earlier by the 
> Intel's SINIT ACM module.

Can you please explain what's the impact if TPR memory protection is not
disabled?

> 
> Disable also the Intel IOMMU enforcement, in the situation, where
> 
> the TPRs have been activated.

Can you please explain the reason why ...?

> 
> This patch depends on the 2 other patches:
> 
> * [PATCH 2/3] tboot: Define DTPR ACPI Table parsing function
> 
> * [PATCH 1/3]: ACPICA: actbl1.h: Add support for the new ACPI Table: DTPR

I assume that all three patches are in a series. So no need to mention
this in the commit message.

> Signed-off-by: Michal Camacho Romero michal.camacho.romero@intel.com 
> <mailto:michal.camacho.romero@intel.com>
> 
> ---
> 
> drivers/iommu/intel/dmar.c  | 8 ++++++++
> 
> drivers/iommu/intel/iommu.c | 7 ++++++-
> 
> 2 files changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c
> 
> index e540092d664d..616db46c3a12 100644
> 
> --- a/drivers/iommu/intel/dmar.c
> 
> +++ b/drivers/iommu/intel/dmar.c
> 
> @@ -635,6 +635,7 @@ static int __init
> 
> parse_dmar_table(void)
> 
> {
> 
>             struct acpi_table_dmar *dmar;
> 
> +          struct acpi_table_dtpr *dtpr;
> 
>             int drhd_count = 0;
> 
>             int ret;
> 
>             struct dmar_res_callback cb = {
> 
> @@ -670,6 +671,13 @@ parse_dmar_table(void)
> 
>                         return -EINVAL;
> 
>             }
> 
> +          dtpr = tboot_get_dtpr_table();
> 
> +          if (dtpr) {
> 
> +                      //TPR is enabled
> 
> +                      //This will also tell not to establish IOMMU PMRs
> 
> +                      tboot_parse_dtpr_table();
> 
> +          }

Why do you want to put DPPR ACPI table parsing logic in this helper?

> 
> +
> 
>             pr_info("Host address width %d\n", dmar->width + 1);
> 
>             ret = dmar_walk_dmar_table(dmar, &cb);
> 
>             if (ret == 0 && drhd_count == 0)
> 
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> 
> index cb0b993bebb4..a0250a321b5e 100644
> 
> --- a/drivers/iommu/intel/iommu.c
> 
> +++ b/drivers/iommu/intel/iommu.c
> 
> @@ -3074,6 +3074,11 @@ static __init int tboot_force_iommu(void)
> 
>             if (!tboot_enabled())
> 
>                         return 0;
> 
> +          //If TPR is enabled we don't need to force IOMMU,
> 
> +          //TPR set by SINIT ACM will take care of DMA protection

Please use

	/* xxx */

comment style in this file to keep it with the existing ones.

> 
> +          if (tboot_is_tpr_enabled())
> 
> +                      return 0;
> 
> +
> 
>             if (no_iommu || dmar_disabled)
> 
>                         pr_warn("Forcing Intel-IOMMU to enabled\n");
> 
> @@ -3131,7 +3136,7 @@ int __init intel_iommu_init(void)
> 
>                          * calling SENTER, but the kernel is expected to 
> reset/tear
> 
>                          * down the PMRs.
> 
>                          */
> 
> -                       if (intel_iommu_tboot_noforce) {
> 
> +                      if (intel_iommu_tboot_noforce || 
> tboot_is_tpr_enabled()) {
> 
>                                     for_each_iommu(iommu, drhd)
> 
>                                                 
> iommu_disable_protect_mem_regions(iommu);
> 
>                         }
> 
> -- 
> 
> 2.43.0
> 

Thanks,
baolu

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-05-19  2:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <IA1PR11MB77556710DD26474B9B857408AF93A@IA1PR11MB7755.namprd11.prod.outlook.com>
     [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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox