From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B76C1D1F9B8 for ; Thu, 4 Dec 2025 10:56:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=dlqOy5VV4izWt3szESXEM0Y/8ctJVecq+zdh2+SEeyo=; b=kHqjkqHE2KephwbNgIkxFwXX7D NXZMKMvUGhOd6MUFUbua1p88Jqo7z7tVHAQ5rWXblWd7Oxvs1K50A8kK53hpp19mR+5g5WyMPJ8k6 6bw8W+gjRJGilOmfP0ZdJKiYxkKfpZoDsezK7Z5a1LZPdrfBbpJiNMnfxAVox++s6Wu6SpZuMmmdS 4AQysJmzIP6Y/3xeRU6gNkJpeUHQd5Lnuccx/r1b/lJSQ+Cy3f28wHrJpqCi2kiN5iNHD4yfThrQR xnPUkuvQREreXde73OcoluBDajwJvkgJhLQORLEvqsgBWJx0XNTzwjRUDmDrP6FQQyCbdNAS8LMYj 6Cnm5m+A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vR70Z-00000007sev-31Wq; Thu, 04 Dec 2025 10:56:23 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vR70Y-00000007seb-1SUV for linux-arm-kernel@lists.infradead.org; Thu, 04 Dec 2025 10:56:22 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 2B87B601E2; Thu, 4 Dec 2025 10:56:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39AB8C4CEFB; Thu, 4 Dec 2025 10:56:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764845779; bh=7svOgdyIfaLm3DHIa2l+XqDfoI2IEBo3sAJCu9Jwlq4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=vMf+2J7/mSFOgQ9GXzzs4r8eCEcsaQlHhuJaQqcX+IQrrNFXFHIebaQ0xeUQzi1bD NFh1n75R+S6/OXX4cssPtAxI2YDjj+iSTeta6zrG2TE13h+z0PaWzTuKeNvYLQZayq H/S60WulXcI2GmJ9/9Tj8gSznk0MGrgyXGWp74MYSR8tg0x937wZkCjSp98X3pTuk7 vFRLsqyi46b/1P5z3GBPcKjJQqevh6zF3ZT1ChpYTtfBMPbOANSNYbxsioEyOu4bFa 810f4XvtmLwqKPPfiR7fonp6GhwdzrFTSi4CE/73od3XR5CZfdeSTYYKU3mkly1Q4H JKDlMtQybrt5Q== Date: Thu, 4 Dec 2025 10:56:13 +0000 From: Daniel Thompson To: Marc Zyngier , Thomas Bogendoerfer Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org, Thomas Gleixner , Mark Rutland , Will Deacon , "Rafael J. Wysocki" , Rob Herring , Saravana Kannan , Greg Kroah-Hartman , Sven Peter , Janne Grunau , Suzuki K Poulose , James Clark , Jonathan Cameron , Jinjie Ruan , Alexandru Elisei , linux-mips@vger.kernel.org Subject: Re: [PATCH v4 16/26] genirq: Allow per-cpu interrupt sharing for non-overlapping affinities Message-ID: References: <20251020122944.3074811-1-maz@kernel.org> <20251020122944.3074811-17-maz@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251020122944.3074811-17-maz@kernel.org> X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Oct 20, 2025 at 01:29:33PM +0100, Marc Zyngier wrote: > Interrupt sharing for percpu-devid interrupts is forbidden, and > for good reasons. These are interrupts generated *from* a CPU and > handled by itself (timer, for example). Nobody in their right mind > would put two devices on the same pin (and if they have, they get to > keep the pieces...). > > But this also prevents more benign cases, where devices are connected > to groups of CPUs, and for which the affinities are not overlapping. > Effectively, the only thing they share is the interrupt number, and > nothing else. > > Let's tweak the definition of IRQF_SHARED applied to percpu_devid > interrupts to allow this particular case. This results in extra > validation at the point of the interrupt being setup and freed, > as well as a tiny bit of extra complexity for interrupts at handling > time (to pick the correct irqaction). > > Tested-by: Will Deacon > Signed-off-by: Marc Zyngier I picked up this patch via linux-next and it appears be causing boot regressions on MIPS/qemu. This patch was identified with a bisect and a git revert of this patch from the linux-next tip resolves the problem (specifically, next-20251204 with git revert bdf4e2ac295f). I'm running the code as part of the kgdb test suite but the system doesn't survive long enough for kgdb to be involved. In fact I was able to reduce things to the following reproduction with all the kgdb pieces removed: make malta_kvm_defconfig generic/64r6.config ../scripts/config \ --enable WERROR --enable CPU_MIPS64_R6 --enable MIPS_CPS \ --enable BLK_DEV_INITRD --set-val FRAME_WARN 2048 make olddefconfig make -j$(nproc) all qemu-system-mips64el -cpu I6400 -M malta -m 1G -smp 2 \ -kernel vmlinux -nographic \ -append " console=ttyS0,115200 clk_ignore_unused" The stack dumps continually so I have to abridge the logs but the logs to second stack trace are: ~~~ Linux version 6.18.0-next-20251204 (drt@wychelm) (mips64el-linux-gcc.br_real (Buildroot 2025.02.8) 14.3.0, GNU ld (GNU Binutils) 2.44) #20 SMP Thu Dec 4 10:37:28 GMT 2025 earlycon: uart8250 at I/O port 0x3f8 (options '38400n8') printk: legacy bootconsole [uart8250] enabled CPU0 revision is: 0001a900 (MIPS I6400) FPU revision is: 20f30300 MSA revision is: 00000300 MIPS: machine is mti,malta Software DMA cache coherency enabled Initial ramdisk at: 0x900000000fc40000 (3818338 bytes) OF: reserved mem: Reserved memory: No reserved-memory node in the DT VP topology {2} total 2 Primary instruction cache 64kB, VIPT, 4-way, linesize 64 bytes. Primary data cache 64kB, 4-way, PIPT, no aliases, linesize 64 bytes Zone ranges: DMA [mem 0x0000000000000000-0x0000000000ffffff] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] Normal empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x000000000fffffff] node 0: [mem 0x0000000090000000-0x00000000bfffffff] Initmem setup node 0 [mem 0x0000000000000000-0x00000000bfffffff] On node 0, zone DMA32: 131072 pages in unavailable ranges random: crng init done percpu: Embedded 7 pages/cpu s69728 r8192 d36768 u114688 Kernel command line: rd_start=0xffffffff8fc40000 rd_size=3818338 console=ttyS0,115200 kgdboc=ttyS0 clk_ignore_unused Unknown kernel command line parameters "kgdboc=ttyS0", will be passed to user space. printk: log buffer data + meta data: 32768 + 114688 = 147456 bytes Dentry cache hash table entries: 131072 (order: 6, 1048576 bytes, linear) Inode-cache hash table entries: 65536 (order: 5, 524288 bytes, linear) Cache parity protection disabled MAAR configuration: [0]: 0x0000000000000000-0x000000000fffffff speculate [1]: 0x0000000090000000-0x00000000bfffffff speculate [2]: disabled [3]: disabled [4]: disabled [5]: disabled [6]: disabled [7]: disabled Built 1 zonelists, mobility grouping on. Total pages: 65536 mem auto-init: stack:all(zero), heap alloc:off, heap free:off SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 rcu: Hierarchical RCU implementation. rcu: RCU event tracing is enabled. Tracing variant of Tasks RCU enabled. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2. NR_IRQS: 256 rcu: srcu_init: Setting srcu_struct sizes based on contention. CPU frequency 320.00 MHz GIC frequency 100.00 MHz clocksource: GIC: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19113045595 ns sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21475332090ns clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 11945377117 ns Console: colour dummy device 80x25 Calibrating delay loop... CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff801c2398, ra == ffffffff801bab00 Oops[#1]: CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.18.0-next-20251204 #20 NONE Hardware name: mti,malta $ 0 : 0000000000000000 0000000000000001 0000000000000000 0000000000000000 $ 4 : 0000000000000001 a8000000020e8008 0000000000000000 ffffffff80c23b80 $ 8 : 0000000000000004 0000000000000000 0000000000000000 000000000000002f $12 : a8000000020f4000 0000000000003ff0 0000000000003000 0000000000000003 $16 : ffffffff80d095c0 ffffffff80ceb410 0000000000000019 ffffffff80c378c0 $20 : ffffffff80c4bec8 0000000000000000 ffffffff80e00000 ffffffff80de0000 $24 : 0000000000000000 0000000000000010 $28 : ffffffff80c20000 a8000000020f7ec0 a800000000e12fcd ffffffff801bab00 epc : ffffffff801c2398 handle_percpu_devid_irq+0xb8/0x250 ra : ffffffff801bab00 handle_irq_desc+0x48/0x88 Status: 1400a4e2 KX SX UX KERNEL EXL Cause : 00800408 (ExcCode 02) BadVA : 0000000000000000 PrId : 0001a900 (MIPS I6400) Modules linked in: Process swapper/0 (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____), tls=0000000000000000) Stack : ffffffff80c35a2c 0000000000000002 ffffffff80e00000 0fffffffffffffff ffffffff80c50000 0000000000000001 0000000000000003 ffffffff801bab00 0000000000000000 ffffffff805d82a8 0000000000000000 0000000000000008 0000000000000000 0000000000000000 0000000000000000 5189d95a7a4f4800 a800000002014300 0000000000000002 0000000000000001 000000000000001f ffffffff80e00000 0000000000000004 0000000000000000 ffffffff801bab00 0000000000000000 ffffffff809ec128 0000000000000001 fffffffffffffffb 0000000000000001 ffffffff805d7ebc 0000000000000000 0000000000000000 ffffffff80c23c80 ffffffff80c50000 ffffffff80de0000 ffffffff80db0000 0000000000000000 ffffffff80112f10 ffffffff80c23c80 0000000000000000 Call Trace: [] handle_percpu_devid_irq+0xb8/0x250 [] handle_irq_desc+0x48/0x88 [] gic_irq_dispatch+0xc0/0x288 [] handle_irq_desc+0x48/0x88 [] do_domain_IRQ+0x28/0x40 [] plat_irq_dispatch+0x64/0xe8 [] handle_int+0x134/0x140 [] calibrate_delay+0x158/0x290 [] start_kernel+0x754/0x7a4 Code: da000048 de020010 0043102d 00c21016 30420001 d85ffff8 00000000 00000000 CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff801c2398, ra == ffffffff801bab00 Oops[#2]: CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G D 6.18.0-next-20251204 #20 NONE Tainted: [D]=DIE Hardware name: mti,malta $ 0 : 0000000000000000 0000000000000001 0000000000000000 0000000000000000 $ 4 : 0000000000000002 a8000000020e8008 0000000000000000 a8000000020f7ae0 $ 8 : 0000000000000004 0000000000000000 0000000000000000 0000000000000000 $12 : a8000000020f4000 a8000000020f4000 0000000000003000 0000000000000000 $16 : ffffffff80d095c0 ffffffff80ceb410 0000000000000019 ffffffff80c378c0 $20 : ffffffff80c4bec8 0000000000000000 ffffffff80e00000 0000000000000001 $24 : 0000000000000000 ffffffffffffffff $28 : ffffffff80c20000 a8000000020f7ab0 a800000000e12fcd ffffffff801bab00 epc : ffffffff801c2398 handle_percpu_devid_irq+0xb8/0x250 ra : ffffffff801bab00 handle_irq_desc+0x48/0x88 Status: 1400a4e2 KX SX UX KERNEL EXL Cause : 00800408 (ExcCode 02) BadVA : 0000000000000000 PrId : 0001a900 (MIPS I6400) Modules linked in: Process swapper/0 (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____), tls=0000000000000000) Stack : ffffffff80c50000 0000000000000002 ffffffff80e00000 0fffffffffffffff ffffffff80c50000 0000000000000001 0000000000000003 ffffffff801bab00 0000000000000000 ffffffff805d82a8 a8000000020f7bd8 ffffffff801b94f4 0000000000000000 0000000000000000 ffffffff80c4bc10 5189d95a7a4f4800 a800000002014300 0000000000000002 0000000000000001 000000000000001f ffffffff80e00000 0000000000000004 0000000000000000 ffffffff801bab00 0000000000000001 ffffffff809ec128 0000000000000000 fffffffffffffffb 0000000000000001 ffffffff805d7ebc ffffffff80c7b558 ffffffff80c23c80 a8000000020f7be0 ffffffff80b2fcb8 ffffffff80de0000 ffffffff80c4bec8 ffffffff80c515c0 ffffffff80112f10 0000000000000000 0000000000000001 ... Call Trace: [] handle_percpu_devid_irq+0xb8/0x250 [] handle_irq_desc+0x48/0x88 [] gic_irq_dispatch+0xc0/0x288 [] handle_irq_desc+0x48/0x88 [] do_domain_IRQ+0x28/0x40 [] plat_irq_dispatch+0x64/0xe8 [] handle_int+0x134/0x140 [] die+0xa8/0xf8 [] do_page_fault+0x530/0x540 [] tlb_do_page_fault_0+0x108/0x110 [] handle_irq_desc+0x48/0x88 Code: da000048 de020010 0043102d 00c21016 30420001 d85ffff8 00000000 00000000 ~~~ FWIW I'm using a buildroot gcc-14 toolchain but I've seen the same problem on gcc-13 in previous kgdbtest logs. Daniel.