From nobody Thu Apr 30 00:18:11 2026 X-Original-To: dev-commits-src-main@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 4g5ZWl6gv1z6cDqF for ; Thu, 30 Apr 2026 00:18:11 +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 4g5ZWl60bNz4BZc 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=1777508291; 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=nnFWE0ICFn5uqXkvNCpG7vI2rp+IOzite5O8rPw87f2xaHsMsXq0YG8J98bn8f3mkT/AAt BToJu2Nt2zMKpZ6hqaysGZ9RlaU1SfTiX0bLxuXEsEm51pI+J8utq/nWmKZi1HHmzvrUnC neAhAzErudGrU1UwgWVt6+zmmUIdfnY3VJ2l588YG/uFl4zTNVOdTTOovCe1x+FbrbXN77 J2e5F2ptE+ehtd6TT6huk6W0gxfyemYzYmxQkOlYBzGEG8sHUXuj+6jsiNXQkiD7FapSm5 KVX2ITKrqESDgh93j2s9yzAMF9W/IWrjhih94i2fX0EhUZmSaoTK0S9EXbvHaw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777508291; a=rsa-sha256; cv=none; b=mK98yWK9MjiBzXKd8BKz86Z0ZSk+MsQGRfP4MmLpBqI1K4XMjijmEgCam5v+5nZiuJSH6a JLwaYQpnS/xQQ6NW7CCs0S8nGni8LjWjTZglDQAcphgn77hH1Fpmo649AViBoDu00T++8S 0a/rrf6kxEcaU8S6SMdS042J7/2W10WbDKEzrDNarbUwHbe0HpDup88iVhMd/LOTefcfvp m7em9YhBkf7dP6ijmWMjKBUYWlCyoQGs+b4POWITNa9CsspZcqshhvcv/o31jPOBY1k0Xw aEgopiDH+q0fMmNqSYaRvCVhkkHanP01EDVv54inwmM/Cp90JbGiHKi38om9rw== 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=1777508291; 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=IUECg7RDxMI13Am/Kz2TKptd2zCMCz6pkgHDYuls3OL3xBYQTy2LoPALeTsoj+nt0YW/R7 N0Qqd/skB3nYMw/Cn0z9Vv9DiBIipjb/XlKlcu1PrFynO6QxN3lYxmRcOE+iNDJutEL7Qe Ws4eBCiC57UNM/bq+j+CUUC0rP/wvYvFA8AdPfjNpovi1nWPIcP1ePrcIB1I01LbNVKFFc hRqSxFSaWOL2RSbROxEGuEF4PczGLZU5xVNK6NcUG8bGLcgvftmfxrrQkWoIRNJqGJ6dk4 mRrpRy3h3rag3DwWYjJ8kKCXYyNfas3fbosK/2bsKolYPYg1KT2coAY7IzP3zg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g5ZWl4ygtz13H5 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 the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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); }