linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	anna-maria@linutronix.de, shawnguo@kernel.org,
	s.hauer@pengutronix.de, festevam@gmail.com, bhelgaas@google.com,
	rdunlap@infradead.org, vidyas@nvidia.com,
	ilpo.jarvinen@linux.intel.com, apatel@ventanamicro.com,
	kevin.tian@intel.com, nipun.gupta@amd.com, den@valinux.co.jp,
	andrew@lunn.ch, gregory.clement@bootlin.com,
	sebastian.hesselbarth@gmail.com, gregkh@linuxfoundation.org,
	rafael@kernel.org, alex.williamson@redhat.com, will@kernel.org,
	lorenzo.pieralisi@arm.com, jgg@mellanox.com,
	ammarfaizi2@gnuweeb.org, robin.murphy@arm.com,
	lpieralisi@kernel.org, nm@ti.com, kristo@kernel.org,
	vkoul@kernel.org, okaya@kernel.org, agross@kernel.org,
	andersson@kernel.org, mark.rutland@arm.com,
	shameerali.kolothum.thodi@huawei.com, yuzenghui@huawei.com,
	shivamurthy.shastri@linutronix.de
Subject: Re: [patch V4 05/21] irqchip/gic-v3-its: Provide MSI parent for PCI/MSI[-X]
Date: Sat, 29 Jun 2024 11:11:10 +0100	[thread overview]
Message-ID: <86bk3khxdt.wl-maz@kernel.org> (raw)
In-Reply-To: <86cyo0hyc6.wl-maz@kernel.org>

On Sat, 29 Jun 2024 10:50:33 +0100,
Marc Zyngier <maz@kernel.org> wrote:
> 
> On Sat, 29 Jun 2024 10:42:35 +0100,
> Marc Zyngier <maz@kernel.org> wrote:
> > 
> > On Sat, 29 Jun 2024 09:37:59 +0100,
> > Thomas Gleixner <tglx@linutronix.de> wrote:
> > > 
> > > On Fri, Jun 28 2024 at 23:24, Catalin Marinas wrote:
> > > > I just noticed guests (under KVM) failing to boot on my TX2 with your
> > > > latest branch. I bisected to this patch as the first bad commit.
> > > >
> > > > I'm away this weekend, so won't have time to dive deeper. It looks like
> > > > the CPU is stuck in do_idle() (no timer interrupts?). Also sysrq did not
> > > > seem able to get the stack trace on the other CPUs. It fails both with a
> > > > single or multiple CPUs in the same way place (shortly before mounting
> > > > the rootfs and starting user space).
> > > 
> > > From the RH log it's clear that PCI interrupts are not delivered.
> > > 
> > > > I'll drop your branch from the arm64 for-kernelci for now and have a
> > > > look again on Monday.
> > > 
> > > I stare too. Unfortunately I don't have access to such hardware :(
> > 
> > On the face of it, the LPIs are never unmasked (grepping in
> > /sys/kernel/debug/kvm/*/vgic-state):
> > 
> > Distributor
> > ===========
> > vgic_model:	GICv3
> > nr_spis:	32
> > nr_lpis:	7
> > enabled:	1
> > 
> > P=pending_latch, L=line_level, A=active
> > E=enabled, H=hw, C=config (level=1, edge=0)
> > G=group
> > 
> > VCPU 0 TYP   ID TGT_ID PLAEHCG     HWID   TARGET SRC PRI VCPU_ID
> > ----------------------------------------------------------------
> > [...]
> >        LPI 8192      0 1000001        0        0   0 160      -1 
> >        LPI 8193      1 0000001        0        0   0 160      -1 
> >        LPI 8194      2 0000001        0        0   0 160      -1 
> >        LPI 8256      3 0000001        0        0   0 160      -1 
> >        LPI 8257      4 0000001        0        0   0 160      -1 
> >        LPI 8320      5 0000001        0        0   0 160      -1 
> >        LPI 8321      6 1000001        0        0   0 160      -1
> > 
> > 8192 and 8321 are pending, but never enabled.
> > 
> > This is further confirmed by placing traces in the guest. Now trying
> > to find my way through the new maze of callbacks, because something is
> > clearly missing there.
> 
> This is clearly related to MSI_FLAG_PCI_MSI_MASK_PARENT which is not
> seen as being set from cond_unmask_parent(), and ignoring this
> condition results in a booting VM.
> 
> I have the ugly feeling that the flag is applied at the wrong level,
> or not propagated.

Here's a possible fix. Making the masking at the ITS level optional is
not an option (haha). It is the PCI masking that is totally
superfluous and that could completely be elided.

With this hack, I can boot a GICv3+ITS guest as usual.

	M.

diff --git a/drivers/irqchip/irq-gic-v3-its-msi-parent.c b/drivers/irqchip/irq-gic-v3-its-msi-parent.c
index 21daa452ffa6d..b66e64eaae440 100644
--- a/drivers/irqchip/irq-gic-v3-its-msi-parent.c
+++ b/drivers/irqchip/irq-gic-v3-its-msi-parent.c
@@ -10,13 +10,13 @@
 #include "irq-gic-common.h"
 #include "irq-msi-lib.h"
 
-#define ITS_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS |	\
-				 MSI_FLAG_USE_DEF_CHIP_OPS)
+#define ITS_MSI_FLAGS_REQUIRED  (MSI_FLAG_USE_DEF_DOM_OPS  |	\
+				 MSI_FLAG_USE_DEF_CHIP_OPS |	\
+				 MSI_FLAG_PCI_MSI_MASK_PARENT)
 
 #define ITS_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK |	\
 				 MSI_FLAG_PCI_MSIX      |	\
-				 MSI_FLAG_MULTI_PCI_MSI |	\
-				 MSI_FLAG_PCI_MSI_MASK_PARENT)
+				 MSI_FLAG_MULTI_PCI_MSI)
 
 #ifdef CONFIG_PCI_MSI
 static int its_pci_msi_vec_count(struct pci_dev *pdev, void *data)


-- 
Without deviation from the norm, progress is not possible.


  reply	other threads:[~2024-06-29 10:11 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-23 15:18 [patch V4 00/21] genirq, irqchip: Convert ARM MSI handling to per device MSI domains Thomas Gleixner
2024-06-23 15:18 ` [patch V4 01/21] PCI/MSI: Provide MSI_FLAG_PCI_MSI_MASK_PARENT Thomas Gleixner
2024-06-26 19:05   ` [patch V4-1 " Thomas Gleixner
2024-06-23 15:18 ` [patch V4 02/21] irqchip: Provide irq-msi-lib Thomas Gleixner
2024-07-01 10:18   ` Lorenzo Pieralisi
2024-07-03 13:57     ` Thomas Gleixner
2024-06-23 15:18 ` [patch V4 03/21] irqchip/gic-v3-its: Provide MSI parent infrastructure Thomas Gleixner
2024-06-23 15:18 ` [patch V4 04/21] irqchip/irq-msi-lib: Prepare for PCI MSI/MSIX Thomas Gleixner
2024-06-23 15:18 ` [patch V4 05/21] irqchip/gic-v3-its: Provide MSI parent for PCI/MSI[-X] Thomas Gleixner
2024-06-28 22:24   ` Catalin Marinas
2024-06-29  8:37     ` Thomas Gleixner
2024-06-29  9:42       ` Marc Zyngier
2024-06-29  9:50         ` Marc Zyngier
2024-06-29 10:11           ` Marc Zyngier [this message]
2024-06-29 10:44             ` Thomas Gleixner
2024-06-29 19:51               ` Thomas Gleixner
2024-06-30  9:55                 ` Catalin Marinas
2024-06-29  9:18     ` Marc Zyngier
2024-06-23 15:18 ` [patch V4 06/21] irqchip/irq-msi-lib: Prepare for DEVICE MSI to replace platform MSI Thomas Gleixner
2024-06-23 15:18 ` [patch V4 07/21] irqchip/mbigen: Prepare for real per device MSI Thomas Gleixner
2024-06-23 15:18 ` [patch V4 08/21] irqchip/irq-msi-lib: Prepare for DOMAIN_BUS_WIRED_TO_MSI Thomas Gleixner
2024-06-23 15:18 ` [patch V4 09/21] irqchip/gic-v3-its: Switch platform MSI to MSI parent Thomas Gleixner
2024-06-23 15:18 ` [patch V4 10/21] irqchip/mbigen: Remove platform_msi_create_device_domain() fallback Thomas Gleixner
2024-06-25 14:42   ` Lorenzo Pieralisi
2024-06-26  9:13     ` Hanjun Guo
2024-06-23 15:18 ` [patch V4 11/21] genirq/msi: Remove platform_msi_create_device_domain() Thomas Gleixner
2024-06-23 15:18 ` [patch V4 12/21] irqchip/gic_v3_mbi: Switch over to parent domain Thomas Gleixner
2024-06-23 15:18 ` [patch V4 13/21] irqchip/gic-v2m: Switch to device MSI Thomas Gleixner
2024-06-23 15:18 ` [patch V4 14/21] irqchip/imx-mu-msi: Switch to MSI parent Thomas Gleixner
2024-06-23 15:18 ` [patch V4 15/21] irqchip/irq-mvebu-icu: Prepare for real per device MSI Thomas Gleixner
2024-06-23 15:18 ` [patch V4 16/21] irqchip/mvebu-gicp: Switch to MSI parent Thomas Gleixner
2024-06-23 15:19 ` [patch V4 17/21] irqchip/mvebu-odmi: Switch to parent MSI Thomas Gleixner
2024-06-23 15:19 ` [patch V4 18/21] irqchip/irq-mvebu-sei: Switch to MSI parent Thomas Gleixner
2024-06-23 15:19 ` [patch V4 19/21] irqchip/irq-mvebu-icu: Remove platform MSI leftovers Thomas Gleixner
2024-06-23 15:19 ` [patch V4 20/21] genirq/msi: " Thomas Gleixner
2024-06-25 10:02   ` Greg KH
2024-06-23 15:19 ` [patch V4 21/21] genirq/msi: Move msi_device_data to core Thomas Gleixner
2024-06-25 19:46 ` [patch V4 00/21] genirq, irqchip: Convert ARM MSI handling to per device MSI domains Rob Herring
2024-06-26 19:03   ` Thomas Gleixner
2024-07-15 11:18 ` Johan Hovold
2024-07-15 12:58   ` Marc Zyngier
2024-07-15 14:10     ` Johan Hovold
2024-07-16 10:30       ` Marc Zyngier
2024-07-16 14:53         ` Johan Hovold
2024-07-16 18:21           ` Marc Zyngier
2024-07-17  7:23             ` Johan Hovold
2024-07-17 12:54               ` Marc Zyngier
2024-07-17 13:38                 ` Johan Hovold
2024-07-17 18:07                   ` Marc Zyngier
2024-07-17 20:10                   ` Marc Zyngier
2024-07-18  7:30                     ` Johan Hovold
2024-07-15 13:10   ` Thomas Gleixner

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=86bk3khxdt.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=agross@kernel.org \
    --cc=alex.williamson@redhat.com \
    --cc=ammarfaizi2@gnuweeb.org \
    --cc=andersson@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=anna-maria@linutronix.de \
    --cc=apatel@ventanamicro.com \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=den@valinux.co.jp \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@bootlin.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jgg@mellanox.com \
    --cc=kevin.tian@intel.com \
    --cc=kristo@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=lpieralisi@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=nipun.gupta@amd.com \
    --cc=nm@ti.com \
    --cc=okaya@kernel.org \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=robin.murphy@arm.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=shawnguo@kernel.org \
    --cc=shivamurthy.shastri@linutronix.de \
    --cc=tglx@linutronix.de \
    --cc=vidyas@nvidia.com \
    --cc=vkoul@kernel.org \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).