Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp1675932pxb; Thu, 7 Oct 2021 12:38:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLcEqahFW+YVY9LSsB+tYYi6dZ3OUC71jb1Rn5+29zJQOHodrF3pGKH0uhA08OjlG5Ifx7 X-Received: by 2002:a17:903:22cc:b0:13e:fa73:6fef with SMTP id y12-20020a17090322cc00b0013efa736fefmr5582107plg.25.1633635535780; Thu, 07 Oct 2021 12:38:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633635535; cv=none; d=google.com; s=arc-20160816; b=fqy6LV1jRjRGmiK2ogJmBqaV0ZNkFF88rZsjILxou5BJgRgifAIRp8UcUDPSiyrAOp 7RDwlun+sqS3piWgMbVBB89NQw1egOTtQbARfQhERBtVV93kLuSLvIpHe2yFOWy0iLSl So+ix5FdUDTENivAVHz5x9rsWKLeWvOukiyF9keCvd9K53qY4zMlE1cgfazZZ7RINkL/ 3jFqeWlCST2fyL01l+QMNQbi3Bl55UkfD5zyS7Tf87aHbm4VIzw2wvzpCizMXOeDEfvQ TbV84uifIxyakDwIIVqBpcNsfDQaQKLM0qOqB+w4GO3Q1BLLqv48Ut88fOvMbFN5My6I /b6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=xxLvyP5M4081+d+g5i05w8p8756WzGkVuz6hEEok8lI=; b=Af7Nmtz0Jl1PlR46o+4ypNL9wkgTFu5pblCpsXNnukIPygySVolzQqyLerSA2tYkiS ixfjVbsUUwDlRkmPAV22UStg+FJJ4F6u54dD0d0QJsoZBaYRarEeir3ODzD62Sso1AHy 60I5/nED0At3jqNkbpFp54l3udvI3kzHAsWsvwa+WJm6dQ3qCzvasQ/NOBCdw2amYmYK rq2kbBA6fETsi5uarkezId6tTm2COfbPEo1QPQrFkDTGc+/aPJ0R2KxIDsQNH1AtPT/C P7XhoA2SMoPsgFIhAOSi8i8mlt2BiGQLh1+CD3U0hesRS6AxD5swlS6HEW6hliqEQWbI KqOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=j2Nf4VrT; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r187si229943pgr.602.2021.10.07.12.38.42; Thu, 07 Oct 2021 12:38:55 -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=@gmail.com header.s=20210112 header.b=j2Nf4VrT; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242195AbhJGOwY (ORCPT + 99 others); Thu, 7 Oct 2021 10:52:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233341AbhJGOwY (ORCPT ); Thu, 7 Oct 2021 10:52:24 -0400 Received: from mail-vk1-xa34.google.com (mail-vk1-xa34.google.com [IPv6:2607:f8b0:4864:20::a34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B2F1C061570; Thu, 7 Oct 2021 07:50:30 -0700 (PDT) Received: by mail-vk1-xa34.google.com with SMTP id j38so637663vkd.10; Thu, 07 Oct 2021 07:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=xxLvyP5M4081+d+g5i05w8p8756WzGkVuz6hEEok8lI=; b=j2Nf4VrT0khn7OJoKdjVWEaYgNjFmOU5xuZsGlq/mnmrSvTOHkj4hb6h+Ib/tkKih+ LWiZYsPjTxzBz/vQrddpElW9grZGvHgBESc43SrLyNcAnzx3q1hbGWvl9y1BdVoUyTK2 DrGPCW++5Ig5GAr3dPQPUkyvwHYpGSv3+GIvwODLQSeMNbku/TX17kA+sA/FbsH0qZzA JuA8ECwSZipsBGNwKGWk0neuC9muzpykiLx18s1eFMW8DHmrl1dKsHC7E40py8IBMgG+ qFl8qWqT0xsmhzWKrbgfagNDvIkzYSYOiEE4FW3WSN0t7fgrQdYm+ie6C1mKjWkix1lv egjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=xxLvyP5M4081+d+g5i05w8p8756WzGkVuz6hEEok8lI=; b=dYyzJbaCtGNx0Odr4p+W9VPEAoPeR7kYI7EIZ+K3EzVRN2xmYIgiV4T6XIfsumzcCo XTWVHDXygnTSZX1JxG4R+vfTguCTUKDYgw1MGWOvRasqZkSHp0geBje+juPVlPrX672s gGO0thGhT+o9sfB3iKdzVFsfA5NtAky7NwdC9UyDqARExXfIlMcr/cIpPec/HDa7UeNF UMtKbAboeFfHqIk25FLjNoJ263texV4fcX5xK9mbf28gcBxkgocpkBLyPNjpmzHrNdzT W3M4HE6JqjJACuLTMPUlUDGOG5v4WTrBmTwg1DFguyj7bbNeESvxMdGMcMtM77m7h+cI gqmg== X-Gm-Message-State: AOAM531CkkZ+eBPQqAyc/C0axA1tm13ZOUW6C0PD6h3KAi/2mS60M26p VbGo3Y4fzxPTU6UE7f4dTa9ql+eF19KvpzILIw== X-Received: by 2002:a1f:4a82:: with SMTP id x124mr3935529vka.11.1633618229157; Thu, 07 Oct 2021 07:50:29 -0700 (PDT) MIME-Version: 1.0 References: <87ee8yquyi.wl-maz@kernel.org> <87bl41qkrh.wl-maz@kernel.org> <878rz5qbee.wl-maz@kernel.org> <875yu8rj5t.wl-maz@kernel.org> In-Reply-To: <875yu8rj5t.wl-maz@kernel.org> From: Rui Salvaterra Date: Thu, 7 Oct 2021 15:50:18 +0100 Message-ID: Subject: Re: [REGRESSION][BISECTED] 5.15-rc1: Broken AHCI on NVIDIA ION (MCP79) To: Marc Zyngier Cc: tglx@linutronix.de, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi again, Marc, On Thu, 7 Oct 2021 at 15:42, Marc Zyngier wrote: > > Right. Let's see if we can be less brutal and only quirk the AHCI > device (patch below, completely untested). I'm a bit concerned that > all the devices in this system seem to report 'Maskable-'... True. However=E2=80=A6 rui@vedder:~$ cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 124 0 0 0 IO-APIC 2-edge ti= mer 1: 0 0 0 0 IO-APIC 1-edge i8= 042 8: 0 0 0 1 IO-APIC 8-edge rt= c0 9: 0 0 0 0 IO-APIC 9-fasteoi ac= pi 12: 0 1 0 0 IO-APIC 12-edge i8= 042 20: 0 0 12734 852750 IO-APIC 20-fasteoi ehci_hcd:usb2, enp0s10 21: 25 0 0 0 IO-APIC 21-fasteoi ohci_hcd:usb4 22: 25672 288 0 0 IO-APIC 22-fasteoi ehci_hcd:usb1 23: 0 0 0 709 IO-APIC 23-fasteoi ohci_hcd:usb3, snd_hda_intel:card0 29: 0 0 83164 1779 PCI-MSI 1572864-edge nvkm 30: 3595 5645 0 0 PCI-MSI 180224-edge ahci[0000:00:0b.0] NMI: 0 0 0 0 Non-maskable interrupts LOC: 202323 194669 107282 197322 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts IWI: 0 0 0 0 IRQ work interrupts RTR: 0 0 0 0 APIC ICR read retries RES: 179 995 208 273 Rescheduling interrupts CAL: 1149 1495 949 1211 Function call interrupts TLB: 110 76 79 79 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupt= s MCE: 0 0 0 0 Machine check exceptions MCP: 20 20 20 20 Machine check polls ERR: 1 MIS: 0 PIN: 0 0 0 0 Posted-interrupt notification event NPI: 0 0 0 0 Nested posted-interrupt = event PIW: 0 0 0 0 Posted-interrupt wakeup = event rui@vedder:~$ =E2=80=A6 the only devices using MSIs are the AHCI controller and the GPU, = so I think any damage would be more contained (and obvious), in this case. > > M. > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index 0099a00af361..2f9ec7210991 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -479,6 +479,9 @@ msi_setup_entry(struct pci_dev *dev, int nvec, struct= irq_affinity *affd) > goto out; > > pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control)= ; > + /* Lies, damned lies, and MSIs */ Best comment ever. :) > + if (dev->dev_flags & PCI_DEV_FLAGS_HAS_MSI_MASKING) > + control |=3D PCI_MSI_FLAGS_MASKBIT; > > entry->msi_attrib.is_msix =3D 0; > entry->msi_attrib.is_64 =3D !!(control & PCI_MSI_FLAGS_64= BIT); > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index 4537d1ea14fd..dc7741431bf3 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -5795,3 +5795,9 @@ static void apex_pci_fixup_class(struct pci_dev *pd= ev) > } > DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a, > PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_c= lass); > + > +static void nvidia_ion_ahci_fixup(struct pci_dev *pdev) > +{ > + pdev->dev_flags |=3D PCI_MSI_FLAGS_MASKBIT; > +} > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fi= xup); > diff --git a/include/linux/pci.h b/include/linux/pci.h > index cd8aa6fce204..152a4d74f87f 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -233,6 +233,8 @@ enum pci_dev_flags { > PCI_DEV_FLAGS_NO_FLR_RESET =3D (__force pci_dev_flags_t) (1 << 10= ), > /* Don't use Relaxed Ordering for TLPs directed at this device */ > PCI_DEV_FLAGS_NO_RELAXED_ORDERING =3D (__force pci_dev_flags_t) (= 1 << 11), > + /* Device does honor MSI masking despite saying otherwise */ > + PCI_DEV_FLAGS_HAS_MSI_MASKING =3D (__force pci_dev_flags_t) (1 <<= 12), > }; > > enum pci_irq_reroute_variant { > > > -- I'm taking this one for a ride too and report back. Thanks, Rui