Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp55186pxx; Wed, 28 Oct 2020 18:00:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLftMG0I9bC1Av6tNpe7EegMZ8bhRTWAXXzomBZtTq9En0HoL0bhLgnLVviC8nSGO3m0K0 X-Received: by 2002:a17:906:30c8:: with SMTP id b8mr1804555ejb.77.1603933221688; Wed, 28 Oct 2020 18:00:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603933221; cv=none; d=google.com; s=arc-20160816; b=gcCIBGYK9ohkeeo3yWPaCdvvqD1rCIUy1ONEbh2OWXUGN/u1M8weXQ5xyxovANh7Mx vUQzccsVwtTvr9Zpk/gTGJ+0mL5HJpKZDHDiI3ZwE6mOvxwtMzlyJsdO7m8iDU0lps3t V8XDrq0rSAw3+DBD0A+sTC6cWDPK0d+OlA7oRRmfxTeFnNcsYuOHQPU89IsrKW0VEuzD M5eNeRPTPc1YN6J2Os+iVY6FZXppGK3USfox/0QMYjE9icMQ2aT78e52SmEDrib40s5t zhWwLj8KgXlIU/uYR05ebrYZKmfCixO12Pr8fLrLOpl2XXp53hV+HkdoBbi3Ogcn0iho 7nfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=v/UQj19JKtDpSfgvXQNknUjoiBrB2/VS8uj570M8Ll4=; b=W+UhFBPYaMMC2MckFhXtCOV80zDnk7kTj0WVClI0jsRjWi6/FoTsurMrs3tXpLFTSE PaEdku9d09DZfBfuVaiwDkizNRARV5JtcgNCh752z3hRk7j7JNw6NxwGfhcEW7DCUYNf h7ymDM1j3E+7LwU0tgTGC+IXoOmmCFoJXsn9tQiKLVxRqLZRIiUQuTn26InqfKgv6oDo uu+t5znk0eTUz1lCmOW3TzWBBNTRrwSZwP8sdMEMVGMdAVOgWlamJrKqiWmdFzCVwLxg bpWsPyGyJelfJ1XLExN3ZtKvgzpXmZcb7TfVf73hOMtauc0cKcQLcDBWti6RhgsORNu6 YZmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ntz4C1F9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 27si938818edx.157.2020.10.28.17.59.59; Wed, 28 Oct 2020 18:00:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ntz4C1F9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730405AbgJ1WIc (ORCPT + 99 others); Wed, 28 Oct 2020 18:08:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730357AbgJ1WI3 (ORCPT ); Wed, 28 Oct 2020 18:08:29 -0400 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A90EC0613CF for ; Wed, 28 Oct 2020 15:08:29 -0700 (PDT) Received: by mail-lj1-x243.google.com with SMTP id d25so879206ljc.11 for ; Wed, 28 Oct 2020 15:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=v/UQj19JKtDpSfgvXQNknUjoiBrB2/VS8uj570M8Ll4=; b=ntz4C1F9/qbnPT91Mb1tcX8fbmyjK1YLSwwGi/QAdHbUk0y1Li1hGcVrxpVr0W6K+o k+XxpcdL3FoX7V6CqQhQ3DrzGZQSAZr1te8tRWZqQwH9TbuJ/8dmUBuSvsR7pp/CiHQq GWp6YWtZ9V3xGi/Dn850cWfMQADMBEzSUKbujnYrBXbZgSKCV44Dsu9rt7uFsCjixMI9 sMFkCwOG7BYwvx31n6stFPw0/omZUNqBinHsFTUYC4H0+PuxUzyei4IDpMDeT05Wh03D 3QdABPxpa8n200pNv8+Lo7ofJ9annbx1ele+5wamVvClxkzZTNxPJmRgULUwMdUGrI2N Ymug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=v/UQj19JKtDpSfgvXQNknUjoiBrB2/VS8uj570M8Ll4=; b=RppdYH4rA+lXtacCBIeGQ5diRXJ512osC7o7PRgtNJM8Ba3um7MUKUzf09ogmpan/q AvCkXt01jMZrSQFhDjL3Geh+BPwOqaT0Qj2NXBQ6pG/Z2IlQXbOVin83P/IE4y9gqnVi qsFfkrc1dpy4hbqSrbQeyD9bv11nV//uIQB1w6qvbz+lFG36s9nvO7epx4uxLY/vrK6C Bd984TqcW2dRILR91yBb/1UldgZfzQwqYqzI9yzILWaCAm2WNdlTsPLKIsu+G0U78p8D +G09qUtqSbb994Vodg41IJTahU02lkIlXVM8kY4bkZkgihQNNNpTu+ZqablnGuebwRQf irXw== X-Gm-Message-State: AOAM533QyVDEVWVtx1/518voozHGnNyrHxS+cz4RRC0ASrKqJyky8zrw VA+EnIRYUtF89n2coX4S1Vcr7vfLLbU0M0Cr+PfF9+N8N2E= X-Received: by 2002:a2e:8845:: with SMTP id z5mr553669ljj.216.1603922907250; Wed, 28 Oct 2020 15:08:27 -0700 (PDT) MIME-Version: 1.0 References: <20201028215246.GA351595@bjorn-Precision-5520> In-Reply-To: <20201028215246.GA351595@bjorn-Precision-5520> From: Rajat Jain Date: Wed, 28 Oct 2020 15:07:51 -0700 Message-ID: Subject: Re: Kernel 5.9 IOMMU groups regression/change To: Bjorn Helgaas Cc: "Boris V." , linux-pci , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 28, 2020 at 2:52 PM Bjorn Helgaas wrote: > > [+cc Rajat, LKML] > Thanks for copying me. (I don't look at mailing lists actively - so missed this). Taking a look at this now. Thanks, Rajat > On Tue, Oct 27, 2020 at 08:31:09PM +0100, Boris V. wrote: > > On 25/10/2020 20:45, Boris V. wrote: > > > With upgrade to kernel 5.9 my VMs stopped working, because some devices > > > can't be passed through. > > > This is caused by different IOMMU groups and devices being in the same > > > group. > > > > > > For ex. with kernel 5.8 this are IOMMU groups: > > > IOMMU Group 40: > > > 08:01.0 PCI bridge [0604]: ASMedia Technology Inc. Device > > > [1b21:118f] > > > 09:00.0 Ethernet controller [0200]: Intel Corporation I211 > > > Gigabit Network Connection [8086:1539] (rev 03) > > > IOMMU Group 43: > > > 0c:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1062 > > > Serial ATA Controller [1b21:0612] (rev 02) > > > IOMMU Group 44: > > > 0d:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042A > > > USB 3.0 Host Controller [1b21:1142] > > > > > > Ethernet, SATA and USB controller in its own group. > > > > > > And with 5.9, everything is in one group: > > > IOMMU Group 29: > > > 00:1c.0 PCI bridge [0604]: Intel Corporation C610/X99 series > > > chipset PCI Express Root Port #1 [8086:8d10] (rev d5) > > > 00:1c.3 PCI bridge [0604]: Intel Corporation C610/X99 series > > > chipset PCI Express Root Port #4 [8086:8d16] (rev d5) > > > 00:1c.4 PCI bridge [0604]: Intel Corporation C610/X99 series > > > chipset PCI Express Root Port #5 [8086:8d18] (rev d5) > > > 00:1c.6 PCI bridge [0604]: Intel Corporation C610/X99 series > > > chipset PCI Express Root Port #7 [8086:8d1c] (rev d5) > > > 07:00.0 PCI bridge [0604]: ASMedia Technology Inc. Device > > > [1b21:118f] > > > 08:01.0 PCI bridge [0604]: ASMedia Technology Inc. Device > > > [1b21:118f] > > > 08:03.0 PCI bridge [0604]: ASMedia Technology Inc. Device > > > [1b21:118f] > > > 08:04.0 PCI bridge [0604]: ASMedia Technology Inc. Device > > > [1b21:118f] > > > 09:00.0 Ethernet controller [0200]: Intel Corporation I211 > > > Gigabit Network Connection [8086:1539] (rev 03) > > > 0c:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1062 > > > Serial ATA Controller [1b21:0612] (rev 02) > > > 0d:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1042A > > > USB 3.0 Host Controller [1b21:1142] > > > > > > > > > This seems to be caused by commit > > > 52fbf5bdeeef415b28b8e6cdade1e48927927f60. > > > commit 52fbf5bdeeef415b28b8e6cdade1e48927927f60 > > > Author: Rajat Jain > > > Date: Tue Jul 7 15:46:02 2020 -0700 > > > > > > PCI: Cache ACS capability offset in device > > > > > > Currently the ACS capability is being looked up at a number of > > > places. Read > > > and store it once at enumeration so that it can be used by all > > > later. No > > > functional change intended. > > > > > > Link: > > > https://lore.kernel.org/r/20200707224604.3737893-2-rajatja@google.com > > > Signed-off-by: Rajat Jain > > > Signed-off-by: Bjorn Helgaas > > > > > > drivers/pci/p2pdma.c | 2 +- > > > drivers/pci/pci.c | 20 ++++++++++++++++---- > > > drivers/pci/pci.h | 2 +- > > > drivers/pci/probe.c | 2 +- > > > drivers/pci/quirks.c | 8 ++++---- > > > include/linux/pci.h | 1 + > > > 6 files changed, 24 insertions(+), 11 deletions(-) > > > > > > > > > If I revert this commit, I get back old groups. > > > > > > In commit log there is message 'No functional change intended'. But > > > there is functional change. > > > > > > This is Intel Core i7-5930K CPU and X99 chipset. But I see the same > > > thing on other Intel systems (didn't test on AMD). > > > > Some more info. > > Problem seems to be that pci_dev_specific_enable_acs() is not called > > anymore. > > Before, pci_enable_acs() was called from pci_init_capabilities() and in > > pci_enable_acs(), pci_dev_specific_enable_acs() was called. > > I don't know anything about PCI and this stuff, but I'm guessing that this > > function enable ACS for some Intel devices. > > But after this commit, pci_acs_init() is called from pci_init_capabilities() > > and if pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS) returns 0, > > pci_enable_acs() and pci_dev_specific_enable_acs() is not called anymore. > > If I apply for ex. this patch bellow, groups are right again and everything > > works as before. > > Thanks very much for the report and the debugging. Maybe we can get > this sorted and fixed for v5.10-rc2 or -rc3. > > > diff -ur linux-5.9.1.orig/drivers/pci/pci.c linux-5.9.1/drivers/pci/pci.c > > --- linux-5.9.1.orig/drivers/pci/pci.c 2020-10-17 08:31:22.000000000 +0200 > > +++ linux-5.9.1/drivers/pci/pci.c 2020-10-27 19:01:32.650010803 +0100 > > @@ -3502,9 +3502,7 @@ > > void pci_acs_init(struct pci_dev *dev) > > { > > dev->acs_cap = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS); > > - > > - if (dev->acs_cap) > > - pci_enable_acs(dev); > > + pci_enable_acs(dev); > > } > > > > /** > > > >