From nobody Thu Apr 30 00:18:11 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g5ZWm2bCWz6cDdc for ; Thu, 30 Apr 2026 00:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g5ZWl6brgz4Bch for ; Thu, 30 Apr 2026 00:18:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777508292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vZXXAz0clwqqDM+Aca88B0AsH+wwtJ6QBLjdUintlr0=; b=sOQpSEy/Eh0SVjqrGRoPQHe/ubzAWLUHbIaKgTNEa9XUn4hstg3G/VNOIMS8HorNHA/pmp Lx/bL/oBRcQgK/on7zv5M9MoVoJZkJAdNdpBlJMpT1F5Iq7SbOHKA0fRf5OSxll8IVEzzE Zd3WFya63vlT5X03gvq9bxWQMuFkMmfqG7sNtEMmfxC3NWwMqRdihUq8pNgpyckpFc261e 3kW+osAxpc4nw7cr5HMajylYwmGEFa3JhAcK/QG9NucGltU9mRU6aMoqyzpRZyFXWPPkn1 tj3eqKKtFJ4d3EE8XhWEtTKuJ+DCM3sSEoyN47YE3kFiTn7oGhvj0lTQgEFJwA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777508292; a=rsa-sha256; cv=none; b=ricJrf+HhFodSdyAUvb50tFpxmeeDi4/6OqbQRQX7W5g2kw11RxDH6En75+xnJZYr3G93S F4Egy/pGHUl6KTQE27PnNM14+Iq4d9v/JeE2H5GMkBHV2QU9WycOft0188gvA4ZFgMo3Yc bkQT7Ne9oBya4eemd/DemjVkJjF3VLHqf0k0XSw6JHbGaVqfvEcTFcpN2Vmwn88B+gk/D9 xCsdKc8nwaqAdEkryprQfNRbeCQ2CL4kQNAkm9kJSDwMcZMOVA96ppcPqbkU7Jp4fJwO4H OEqwNF8yI51Loylq2bnKNIVUbaPHyU/cYiktYgdzTul6VAVMvaAVzYKVbK60VQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777508292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vZXXAz0clwqqDM+Aca88B0AsH+wwtJ6QBLjdUintlr0=; b=wgZv0RtYzzmCeohyZZElxEyjSZ8jd+1Ms2t/x8zWObUItsHcoeFNfEMFvKZFh3P/1NxDwa b2XAdhEWwL4Ehu1RIXbHe/uHXI3ZVkV5R9e5o+RMR8AFI88VIR5ctHKtXGhzIbS2Vs2mYC hq3mvIq3mR9A8MLHlGBzRfqY+wp1ggJDzoS4mZ6PsPDx4M2Ohdje0HfcT9LVYzUBqPGQ0G 3+8W/V+Fac26gAGnycpGC/v0Tlgcp+43eVv1/tepQcbfY/0wMG1d3m7xi5e1Jm5s7Buouv iBG6fYTsBj+WI3EQfgUAOCSaqsmUB1oiUoviUmlsTtPJkm0UzXC9RYukX3LUUw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g5ZWl5Vjlz13YW for ; Thu, 30 Apr 2026 00:18:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 317a8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 30 Apr 2026 00:18:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Justin Hibbits Subject: git: 605f53705d6d - main - powerpc/openpic: Increase the maximum number of IRQs allowed List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhibbits X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 605f53705d6dc57ed391353cecf3ce84a4283740 Auto-Submitted: auto-generated Date: Thu, 30 Apr 2026 00:18:11 +0000 Message-Id: <69f29fc3.317a8.192fc00b@gitrepo.freebsd.org> The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=605f53705d6dc57ed391353cecf3ce84a4283740 commit 605f53705d6dc57ed391353cecf3ce84a4283740 Author: Justin Hibbits AuthorDate: 2026-04-30 00:13:11 +0000 Commit: Justin Hibbits CommitDate: 2026-04-30 00:13:48 +0000 powerpc/openpic: Increase the maximum number of IRQs allowed The Freescale MPIC supports up to 2048 IRQs, but since we only build an array of 768 interrupts in intr_machdep, clamp the max at 512. The most any Freescale PowerPC chip actually supports is 452 on the T4240, so 512 is sufficient. As part of this, increase the vector mask to the full openpic vector mask, and use this limit as the terminator for the dispatch loop, instead of a hard-coded 255. Differential Revision: https://reviews.freebsd.org/D56422 --- sys/powerpc/include/openpicreg.h | 2 +- sys/powerpc/include/openpicvar.h | 3 ++- sys/powerpc/powerpc/openpic.c | 10 ++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/powerpc/include/openpicreg.h b/sys/powerpc/include/openpicreg.h index 16f0295469e2..03c259d115b5 100644 --- a/sys/powerpc/include/openpicreg.h +++ b/sys/powerpc/include/openpicreg.h @@ -112,7 +112,7 @@ #define OPENPIC_ACTIVITY 0x40000000 #define OPENPIC_PRIORITY_MASK 0x000f0000 #define OPENPIC_PRIORITY_SHIFT 16 -#define OPENPIC_VECTOR_MASK 0x000000ff +#define OPENPIC_VECTOR_MASK 0x0000ffff /* interrupt destination cpu */ #ifndef OPENPIC_IDEST diff --git a/sys/powerpc/include/openpicvar.h b/sys/powerpc/include/openpicvar.h index 12f01cb80406..4f086f809f08 100644 --- a/sys/powerpc/include/openpicvar.h +++ b/sys/powerpc/include/openpicvar.h @@ -32,7 +32,7 @@ #define OPENPIC_DEVSTR "OpenPIC Interrupt Controller" -#define OPENPIC_IRQMAX 256 /* h/w allows more */ +#define OPENPIC_IRQMAX 512 /* h/w allows more */ #define OPENPIC_QUIRK_SINGLE_BIND 1 /* Bind interrupts to only 1 CPU */ #define OPENPIC_QUIRK_HIDDEN_IRQS 2 /* May have IRQs beyond FRR[NIRQ] */ @@ -59,6 +59,7 @@ struct openpic_softc { u_int sc_nirq; int sc_psim; u_int sc_quirks; + uint32_t sc_vec_mask; /* Saved states. */ uint32_t sc_saved_config; diff --git a/sys/powerpc/powerpc/openpic.c b/sys/powerpc/powerpc/openpic.c index bdd59407e3d4..3cb4c544a91a 100644 --- a/sys/powerpc/powerpc/openpic.c +++ b/sys/powerpc/powerpc/openpic.c @@ -151,6 +151,12 @@ openpic_common_attach(device_t dev, uint32_t node) OPENPIC_FEATURE_LAST_CPU_SHIFT) + 1; sc->sc_nirq = ((x & OPENPIC_FEATURE_LAST_IRQ_MASK) >> OPENPIC_FEATURE_LAST_IRQ_SHIFT) + 1; + /* + * Generate the vector mask used for IACK. + * Some PICs may not support the full 11 bit vector width, so clamp the + * mask to only the next-power-of-2 from the max IRQ. + */ + sc->sc_vec_mask = (1 << fls(sc->sc_nirq)) - 1; /* * PSIM seems to report 1 too many IRQs and CPUs @@ -294,8 +300,8 @@ openpic_dispatch(device_t dev, struct trapframe *tf) while (1) { vector = openpic_read(sc, OPENPIC_PCPU_IACK(cpuid)); - vector &= OPENPIC_VECTOR_MASK; - if (vector == 255) + vector &= sc->sc_vec_mask; + if (vector == sc->sc_vec_mask) break; powerpc_dispatch_intr(vector, tf); }