public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Baolu Lu <baolu.lu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
	Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>
Cc: baolu.lu@linux.intel.com, "Saarinen,
	Jani" <jani.saarinen@intel.com>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/1] iommu/vt-d: Prevent boot failure with devices requiring ATS
Date: Wed, 4 Sep 2024 15:49:44 +0800	[thread overview]
Message-ID: <9e183ce2-060a-4e0b-a956-03d767368ca4@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB5276428A5462738F89190A5A8C9C2@BN9PR11MB5276.namprd11.prod.outlook.com>

On 2024/9/4 14:49, Tian, Kevin wrote:
>> From: Lu Baolu <baolu.lu@linux.intel.com>
>> Sent: Wednesday, September 4, 2024 2:07 PM
>>
>> SOC-integrated devices on some platforms require their PCI ATS enabled
>> for operation when the IOMMU is in scalable mode. Those devices are
>> reported via ACPI/SATC table with the ATC_REQUIRED bit set in the Flags
>> field.
>>
>> The PCI subsystem offers the 'pci=noats' kernel command to disable PCI
>> ATS on all devices. Using 'pci=noat' with devices that require PCI ATS
>> can cause a conflict, leading to boot failure, especially if the device
>> is a graphics device.
>>
>> To prevent this issue, check PCI ATS support before enumerating the IOMMU
>> devices. If any device requires PCI ATS, but PCI ATS is disabled by
>> 'pci=noats', switch the IOMMU to operate in legacy mode to ensure
>> successful booting.
> 
> I guess the reason of switching to legacy mode is because the platform
> automatically enables ATS in this mode, as the comment says in
> dmar_ats_supported(). This should be explained otherwise it's unclear
> why switching the mode can make ATS working for those devices.

Not 'automatically enable ATS,' but hardware provides something that is
equivalent to PCI ATS. The ATS capability on the device is still
disabled. That's the reason why such device must be an SOC-integrated
one.

> 
> But then doesn't it break the meaning of 'pci=noats' which means
> disabling ATS physically? It's described as "do not use PCIe ATS and
> IOMMU device IOTLB" in kernel doc, which is not equivalent to
> "leave PCIe ATS to be managed by HW".

Therefore, the PCI ATS is not used and the syntax of pci=noats is not
broken.

> and why would one want to use 'pci=noats' on a platform which
> requires ats?

We don't recommend users to disable ATS on a platform which has devices
that rely on it. But nothing can prevent users from doing so. I am not
sure why it is needed. One possible reason that I can think of is about
security. Sometimes, people don't trust ATS because it allows devices to
access the memory with translated requests directly without any
permission check on the IOMMU end.

Thanks,
baolu

  reply	other threads:[~2024-09-04  7:49 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-04  6:07 [PATCH 1/1] iommu/vt-d: Prevent boot failure with devices requiring ATS Lu Baolu
2024-09-04  6:49 ` Tian, Kevin
2024-09-04  7:49   ` Baolu Lu [this message]
2024-09-04  8:17     ` Tian, Kevin
2024-09-05  2:49       ` Baolu Lu
2024-09-05  4:24     ` Ethan Zhao
2024-09-04 18:00 ` Mark Pearson
2024-09-05  3:45   ` 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=9e183ce2-060a-4e0b-a956-03d767368ca4@linux.intel.com \
    --to=baolu.lu@linux.intel.com \
    --cc=iommu@lists.linux.dev \
    --cc=jani.saarinen@intel.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=stable@vger.kernel.org \
    --cc=will@kernel.org \
    /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