All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: Takashi Iwai <tiwai@suse.de>, Lu Baolu <baolu.lu@linux.intel.com>,
	Joerg Roedel <jroedel@suse.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Eric Auger <eric.auger@redhat.com>,
	regressions@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [REGRESSION 5.19.x] AMD HD-audio devices missing on 5.19
Date: Wed, 07 Sep 2022 15:28:31 +0200	[thread overview]
Message-ID: <87bkrrl3eo.wl-tiwai@suse.de> (raw)
In-Reply-To: <20220823202824.GA4516@nvidia.com>

On Tue, 23 Aug 2022 22:28:24 +0200,
Jason Gunthorpe wrote:
> 
> On Tue, Aug 23, 2022 at 01:46:36PM +0200, Takashi Iwai wrote:
> > It was tested now and confirmed that the call path is via AMDGPU, as
> > expected:
> >   amdgpu_pci_probe ->
> >   amdgpu_driver_load_kms ->
> >   amdgpu_device_init ->
> >   amdgpu_amdkfd_device_init ->
> >   kgd2kfd_device_init ->
> >   kgd2kfd_resume_iommu ->
> >   kfd_iommu_resume ->
> >   amd_iommu_init_device ->
> >   iommu_attach_group ->
> >   __iommu_attach_group
> 
> Oh, when you said sound intel I thought this was an Intel CPU..
> 
> Yes, there is this hacky private path from the amdgpu to
> the amd iommu driver that makes a mess of it here. We discussed it in
> this thread:
> 
> https://lore.kernel.org/linux-iommu/YgtuJQhY8SNlv9%2F6@8bytes.org/
> 
> But nobody put it together that it would be a problem with this.
> 
> Something like this, perhaps, but I didn't check if overriding the
> type would cause other problems.
> 
> diff --git a/drivers/iommu/amd/iommu_v2.c b/drivers/iommu/amd/iommu_v2.c
> index 696d5555be5794..6a1f02c62dffcc 100644
> --- a/drivers/iommu/amd/iommu_v2.c
> +++ b/drivers/iommu/amd/iommu_v2.c
> @@ -777,6 +777,8 @@ int amd_iommu_init_device(struct pci_dev *pdev, int pasids)
>  	if (dev_state->domain == NULL)
>  		goto out_free_states;
>  
> +	/* See iommu_is_default_domain() */
> +	dev_state->domain->type = IOMMU_DOMAIN_IDENTITY;
>  	amd_iommu_domain_direct_map(dev_state->domain);
>  
>  	ret = amd_iommu_domain_enable_v2(dev_state->domain, pasids);
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index 780fb70715770d..fe8bd17f52314b 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -3076,6 +3076,24 @@ static ssize_t iommu_group_store_type(struct iommu_group *group,
>  	return ret;
>  }
>  
> +static bool iommu_is_default_domain(struct iommu_group *group)
> +{
> +	if (group->domain == group->default_domain)
> +		return true;
> +
> +	/*
> +	 * If the default domain was set to identity and it is still an identity
> +	 * domain then we consider this a pass. This happens because of
> +	 * amd_iommu_init_device() replacing the default idenity domain with an
> +	 * identity domain that has a different configuration for AMDGPU.
> +	 */
> +	if (group->default_domain &&
> +	    group->default_domain->type == IOMMU_DOMAIN_IDENTITY &&
> +	    group->domain && group->domain->type == IOMMU_DOMAIN_IDENTITY)
> +		return true;
> +	return false;
> +}
> +
>  /**
>   * iommu_device_use_default_domain() - Device driver wants to handle device
>   *                                     DMA through the kernel DMA API.
> @@ -3094,8 +3112,7 @@ int iommu_device_use_default_domain(struct device *dev)
>  
>  	mutex_lock(&group->mutex);
>  	if (group->owner_cnt) {
> -		if (group->domain != group->default_domain ||
> -		    group->owner) {
> +		if (group->owner || iommu_is_default_domain(group)) {

Isn't this rather 
		if (group->owner || !iommu_is_default_domain(group)) {
?

I'll rebuild the kernel with this change and ask reporters again.


Takashi

  parent reply	other threads:[~2022-09-07 13:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-22 14:12 [REGRESSION 5.19.x] AMD HD-audio devices missing on 5.19 Takashi Iwai
2022-08-23  1:00 ` Jason Gunthorpe
2022-08-23  6:06   ` Takashi Iwai
2022-08-23 11:46     ` Takashi Iwai
2022-08-23 20:28       ` Jason Gunthorpe
2022-08-23 21:01         ` Robin Murphy
2022-08-24  0:02           ` Jason Gunthorpe
2022-08-24  0:02             ` Jason Gunthorpe
2022-09-06 15:41         ` Jason Gunthorpe
2022-09-06 15:52           ` Takashi Iwai
2022-09-06 15:53             ` Jason Gunthorpe
2022-09-06 16:04               ` Takashi Iwai
2022-09-06 16:08                 ` Jason Gunthorpe
2022-09-06 16:16                   ` Takashi Iwai
2022-09-07 10:08                     ` Takashi Iwai
2022-09-07 13:28         ` Takashi Iwai [this message]
2022-09-07 13:48           ` Jason Gunthorpe
2022-09-08  6:23             ` Takashi Iwai
2022-08-24  7:13 ` Thorsten Leemhuis
2022-09-19 15:23   ` [REGRESSION 5.19.x] AMD HD-audio devices missing on 5.19 #forregzbot Thorsten Leemhuis

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=87bkrrl3eo.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=baolu.lu@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=eric.auger@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jgg@nvidia.com \
    --cc=jroedel@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=regressions@lists.linux.dev \
    --cc=robin.murphy@arm.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 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.