From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 27CAB5C81 for ; Wed, 7 Sep 2022 13:28:35 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 3965333CAD; Wed, 7 Sep 2022 13:28:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1662557312; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=m9RdId2aYhts0VZgrmEGspoWMf5BWlaOWWzmna7Fe80=; b=p1uw6XtDeG2wS+B6Sku6ih4e0qatpSfUCWPQ+qF7EnQUhbZC4GDXc2VIMl76Uo72Vrl7VL x3o+bAKuIGn5cdaLY5vx0TW50iqevAywHypLQKPL0OkXL1xv/iNon0j1Kqmpfjfo9+0ect pVjPS7aSxXJN3m/b3Q12k0vY7WMUS5U= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1662557312; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=m9RdId2aYhts0VZgrmEGspoWMf5BWlaOWWzmna7Fe80=; b=j1g1bka3BM/aj/NvsbvGMEs5uKQ/bguR8guey2LEHOY+3X/1CWPr4OKCVW3k284bYfzOZk 1G1bYXDbDr/rMlBA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 230E613486; Wed, 7 Sep 2022 13:28:32 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id rjlHCICcGGMbHQAAMHmgww (envelope-from ); Wed, 07 Sep 2022 13:28:32 +0000 Date: Wed, 07 Sep 2022 15:28:31 +0200 Message-ID: <87bkrrl3eo.wl-tiwai@suse.de> From: Takashi Iwai To: Jason Gunthorpe Cc: Takashi Iwai , Lu Baolu , Joerg Roedel , Greg Kroah-Hartman , Bjorn Helgaas , Robin Murphy , Eric Auger , regressions@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [REGRESSION 5.19.x] AMD HD-audio devices missing on 5.19 In-Reply-To: <20220823202824.GA4516@nvidia.com> References: <874jy4cqok.wl-tiwai@suse.de> <20220823010021.GA5967@nvidia.com> <87h723sdde.wl-tiwai@suse.de> <87ilmjqj1f.wl-tiwai@suse.de> <20220823202824.GA4516@nvidia.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0 Precedence: bulk X-Mailing-List: regressions@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII 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