All of lore.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>,
	Jason Gunthorpe <jgg@ziepe.ca>
Cc: baolu.lu@linux.intel.com,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Abdul Halim, Mohd Syazwan" <mohd.syazwan.abdul.halim@intel.com>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/1] iommu/vt-d: Add MTL to quirk list to skip TE disabling
Date: Thu, 16 Nov 2023 15:24:51 +0800	[thread overview]
Message-ID: <b825e828-6dff-4064-896e-df4de24aa6d6@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB527667F09E2FAD729AE2BC2C8CB0A@BN9PR11MB5276.namprd11.prod.outlook.com>

On 2023/11/16 11:27, Tian, Kevin wrote:
>> From: Lu Baolu <baolu.lu@linux.intel.com>
>> Sent: Thursday, November 16, 2023 10:23 AM
>>
>> From: "Abdul Halim, Mohd Syazwan"
>> <mohd.syazwan.abdul.halim@intel.com>
>>
>> The VT-d spec requires (10.4.4 Global Command Register, TE field) that:
>>
>> Hardware implementations supporting DMA draining must drain any in-flight
>> DMA read/write requests queued within the Root-Complex before
>> completing
>> the translation enable command and reflecting the status of the command
>> through the TES field in the Global Status register.
> 
> this talks about 'enable'...
> 
>>
>> Unfortunately, some integrated graphic devices fail to do so after some
>> kind of power state transition. As the result, the system might stuck in
>> iommu_disable_translation(), waiting for the completion of TE transition.
> 
> ...while this fixes 'disable'. wrong citation?

Right. It's confusing. I will change it to below.

"
...before switching address translation on or off and reflecting the
status of the command through the TES field in the Global Status
register.
"

> 
>> @@ -5080,7 +5080,7 @@ static void quirk_igfx_skip_te_disable(struct
>> pci_dev *dev)
>>   	ver = (dev->device >> 8) & 0xff;
>>   	if (ver != 0x45 && ver != 0x46 && ver != 0x4c &&
>>   	    ver != 0x4e && ver != 0x8a && ver != 0x98 &&
>> -	    ver != 0x9a && ver != 0xa7)
>> +	    ver != 0x9a && ver != 0xa7 && ver != 0x7d)
>>   		return;
>>
> 
> this fix alone is fine, but I found this quirk overall is not cleanly handled.
> 
> Basically it sets iommu_skip_te_disable as true, leading to early return
> in iommu_disable_translation():
> 
> 	if (iommu_skip_te_disable && iommu->drhd->gfx_dedicated &&
> 	   (cap_read_drain(iommu->cap) || cap_write_drain(iommu->cap)))
> 		return;
> 
> However the caller of iommu_disable_translation() is not aware of this
> quirk and continues as if the iommu is disabled. IMHO this is problematic
> w/o meeting the caller's assumption.
> 
> e.g. kdump and suspend. We may want to abort those paths early in case
> of such quirk...

I can see your point.

This fix is just to add a new device model to the established quirk
list. All devices (including the new one) in this quirk list have
undergone thorough verification. Therefor, I'd like to keep it as-is.

We can refine the quirk implementation in a separated patch series with
sufficient consideration and verification. Does this work for you?

Best regards,
baolu

  reply	other threads:[~2023-11-16  7:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-16  2:23 [PATCH 1/1] iommu/vt-d: Add MTL to quirk list to skip TE disabling Lu Baolu
2023-11-16  2:23 ` Lu Baolu
2023-11-16  3:27 ` Tian, Kevin
2023-11-16  7:24   ` Baolu Lu [this message]
2023-11-16  8:09     ` Tian, Kevin

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=b825e828-6dff-4064-896e-df4de24aa6d6@linux.intel.com \
    --to=baolu.lu@linux.intel.com \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@ziepe.ca \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mohd.syazwan.abdul.halim@intel.com \
    --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 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.