From nobody Wed Feb 28 14:10:40 2024 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 4TlGTs0Gz4z5BfSf; Wed, 28 Feb 2024 14:10:41 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TlGTr6j3jz4ffm; Wed, 28 Feb 2024 14:10:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1709129440; 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=WpbOyaJOF4aFi3Q/iblo0+aTrpTv3IDI14kwFrJ9kD4=; b=ksHsM3N4PWVKNJ+CGYrSZUvtdW7NxjmtxiBdSf0tvk9Z44rVMdtxN2cPGatb1JhlZvH+qF rZUTA5io70FcLel9jP+Pvv8+ppYCz1Tqu8hJGam7zSzl0CSLYEszRvqWC2MSMDBlacB6x7 k9qUS3IneAodZmUmH0HC4jFuKOTRJ+/CJic/+EZevvudU9JDMWwEzprxQAoiosw+VDb9uU lEX1GvrediEabnbyc7TtngsjrB3DpeGT4HBNrIDpDc5j5AsomGo/Xiqu0aNDmWMWZBR0Dh d3lIQlDkuZfdypeypFBi72RbxD2gHpLrFe/LBVmrgaAKsKvlGgU7GLCYRp8nMw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1709129440; a=rsa-sha256; cv=none; b=q39+ve038czijWDszaBXlHVwyDfv6kcr8tbXg+3rrRj5Jhla4zkuDpLQVFb1/tSDkMYM97 YtiZf/lDvVuPwlaxAAyqrapzwJsUQBvVnB0zvyGspcNrg1pfLlX1XxLRNODD7qXVBa9W5s 6a71ATgKAppYvNhNa6RHxala1MHL2eHptf5eOc++SIGlFAxeRvV+URKlIDI+Xb1b4181eg bI/PKpZZHYpE/Fd2g1WZPn7DLXzVTBnzHFmK89fCBhqGh7FdokONwW6kYMHmy/DsXeqY2g VPTOlw5DnTUcTE/G/1jlb7VDaEqFvhltb/wIuTOos8e52tk2tza7ZZ3fzv+YDg== 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=1709129440; 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=WpbOyaJOF4aFi3Q/iblo0+aTrpTv3IDI14kwFrJ9kD4=; b=XnGxLSd9AyZ0lIoW9Y1VOIUIvuPQkBVWdawe26uS3OfzeJRlvR4RKKAWyiWsOVFJ66pA/e P8BEs4AzxODdakCshGHM10GLz6jRxao4Gdcz1Zrwvus1FUHS8bGC1Y2qFG9/VAHE8cSNHL HYcBV4m54XvW+j8eaESmFJqVepWVm1cF7NOwQ8W3cZBAraEIsrMJoiIDZT3bAw6bRxXfxh Gvw1xj4ptjQg4Gl8d1vFtbqsVgGHFyrsUiKSi4cx4CwInCQ1YNUf6v2SqAvaZpf2bX+snT en1PIxpzaLhkC9gULcVKZCLHKra80H6tVRGRZAS7tROKKTgKcUhBiKHV9MBX2w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TlGTr5q5Mz10xT; Wed, 28 Feb 2024 14:10:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 41SEAe6H057146; Wed, 28 Feb 2024 14:10:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 41SEAe8S057143; Wed, 28 Feb 2024 14:10:40 GMT (envelope-from git) Date: Wed, 28 Feb 2024 14:10:40 GMT Message-Id: <202402281410.41SEAe8S057143@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 15c8a610a80d - main - gicv3: Change how we initialize its children. 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: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 15c8a610a80dfe1980e043174d0fcc8034868676 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=15c8a610a80dfe1980e043174d0fcc8034868676 commit 15c8a610a80dfe1980e043174d0fcc8034868676 Author: Warner Losh AuthorDate: 2024-02-28 14:08:15 +0000 Commit: Warner Losh CommitDate: 2024-02-28 14:09:42 +0000 gicv3: Change how we initialize its children. The current code is written such that all the attach routines can do so in parallel. However, newbus serializes children today, and is likely to do so in the future. Only allocate memory for the first time. Add an assertion that this memory is allocated for larger units. Sponsored by: Netflix Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D44032 --- sys/arm64/arm64/gicv3_its.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c index 42a8fb8a9c26..195e07af3288 100644 --- a/sys/arm64/arm64/gicv3_its.c +++ b/sys/arm64/arm64/gicv3_its.c @@ -291,8 +291,6 @@ struct gicv3_its_softc { vm_page_t ma; /* fake msi page */ }; -static void *conf_base; - typedef void (its_quirk_func_t)(device_t); static its_quirk_func_t its_quirk_cavium_22375; @@ -680,20 +678,26 @@ gicv3_its_table_init(device_t dev, struct gicv3_its_softc *sc) static void gicv3_its_conftable_init(struct gicv3_its_softc *sc) { - void *conf_table; - - conf_table = atomic_load_ptr(&conf_base); - if (conf_table == NULL) { - conf_table = contigmalloc(LPI_CONFTAB_SIZE, - M_GICV3_ITS, M_WAITOK, 0, LPI_CONFTAB_MAX_ADDR, - LPI_CONFTAB_ALIGN, 0); + /* note: we assume the ITS children are serialized by the parent */ + static void *conf_table; - if (atomic_cmpset_ptr((uintptr_t *)&conf_base, - (uintptr_t)NULL, (uintptr_t)conf_table) == 0) { - contigfree(conf_table, LPI_CONFTAB_SIZE, M_GICV3_ITS); - conf_table = atomic_load_ptr(&conf_base); - } + /* + * The PROPBASER is a singleton in our parent. We only set it up the + * first time through. conf_table is effectively global to all the units + * and we rely on subr_bus to serialize probe/attach. + */ + if (conf_table != NULL) { + sc->sc_conf_base = conf_table; + return; } + + /* + * Just allocate contiguous pages. We'll configure the PROPBASER + * register later in its_init_cpu_lpi(). + */ + conf_table = contigmalloc(LPI_CONFTAB_SIZE, + M_GICV3_ITS, M_WAITOK, 0, LPI_CONFTAB_MAX_ADDR, + LPI_CONFTAB_ALIGN, 0); sc->sc_conf_base = conf_table; /* Set the default configuration */