From nobody Tue Feb 3 04:33:52 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 4f4rGS6NM5z6R5HV for ; Tue, 03 Feb 2026 04:33:52 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f4rGS3sn2z3rSH for ; Tue, 03 Feb 2026 04:33:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770093232; 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=9L2bl0K7ZDSjO8oVbukKLM8R3Lf4Nju2mBq42RsZmG4=; b=lMsgUuo1JE9v5BxL2An2q5T+lmO1p5m3y28cgRdeaHa7OvxtFvdlnfSUDsFV7eO9Phipst xsFvoL2mf/MgZuLeYiYX7J1snK2e6k4E+dqCayCWmTRF7sQl8TiLUbEsRzWa6LXZDiD8T6 Hahmx/Rg0dciUJwhRAOGMdWULNflSyghG3nszrpQogbTOGZDwAovKIc6F1MAacyT9OJNf8 edUnS8PhHv2UV9DFw4idx3C1v/53CN/Vc8eqBEgKLwu08EcL/kXwm0vWj0tSw3XW9maaq5 GOmJ7AMiwvMjr9VV6UlAYuhMhq2wvr5cFFk8MObVzSzCXBeUxzEdk+ERGW33TA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770093232; a=rsa-sha256; cv=none; b=iyeyB1aRMMTv9ALzRDSL5/++Dwi9Zj/Nz7aVZKD/jRCMqv+phczC+WILQFls7NwGv2EUsb 1246/3rPqOZEAJ+LObEk+sjHy8EhCKw8gtKsN+XjZxQ6kACZ8LFf1/0TNaX/Wnlb/8URL5 mAcmLXQIlJFvPBpcSZyy2y11sr2oqiikn9FmevZvm0A9bpvHJgDVrLQ4PydM2ZE/KL5X+p 6OLnal9h2BjE722BauwdHvi71RpRSiIpZQgWUN2xRgAotcwnO1wB8CM46zceOOVj8rpU4O xU6jE7TcHAOcV1H95DMvwmZGgWe0h2Ih6QFPrzXgrH/9c9Mf57Mvyhyk5U1r2g== 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=1770093232; 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=9L2bl0K7ZDSjO8oVbukKLM8R3Lf4Nju2mBq42RsZmG4=; b=kthsMOAYjNgE9Gfbt7NQ0cxybglEe4w6fU0dtRmjS6B+fHKE47AgTeX00moYwzAUHWJ/Lg s3DtGMW+E4ERQiqPxMurxwiG5hp8vr1BnFF4dQQn6j6NvIffR6H/xq2DCp/jrWgtYyZZv7 W5Hq6EysH1c5khwe5NJM03VtyptRIGCBx47MxKyVOqv/ztp0SpQhNdhotbU0Xy0RNONvC4 792zcnf748WGW1OkU0uowrcA33Hlj0i8/z24bcq5MFYf2Hpi/yg2WjgpSzw+YDN273fXT+ xshJjLAkaiWwAQhBc2HDAkf2N9TYfH7eiS3LCQtkDMajMHyrLW8+wrmyQwRUmg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f4rGS3Q5HzxDm for ; Tue, 03 Feb 2026 04:33:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 44dd7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 03 Feb 2026 04:33:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Justin Hibbits Subject: git: 1bc75d77e9d4 - main - powerpc/pmap/oea64: Make PV_LOCK superpage sized 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: 1bc75d77e9d45d4ccfe2f146b37c08f41e49a082 Auto-Submitted: auto-generated Date: Tue, 03 Feb 2026 04:33:52 +0000 Message-Id: <69817ab0.44dd7.2481f73b@gitrepo.freebsd.org> The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=1bc75d77e9d45d4ccfe2f146b37c08f41e49a082 commit 1bc75d77e9d45d4ccfe2f146b37c08f41e49a082 Author: Justin Hibbits AuthorDate: 2026-02-03 03:48:16 +0000 Commit: Justin Hibbits CommitDate: 2026-02-03 04:33:36 +0000 powerpc/pmap/oea64: Make PV_LOCK superpage sized HPT superpages are 16MB, not 2MB. Taking 8 locks to lock a super page almost defeats the purpose of using the super page. Expanding the PV_LOCK scope to cover 16MB (24 bit shift) reduces this to a single lock. MFC after: 3 weeks --- sys/powerpc/aim/mmu_oea64.c | 48 +++------------------------------------------ 1 file changed, 3 insertions(+), 45 deletions(-) diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c index 62bbb6ddaf9b..4757e469b5d7 100644 --- a/sys/powerpc/aim/mmu_oea64.c +++ b/sys/powerpc/aim/mmu_oea64.c @@ -125,7 +125,7 @@ uintptr_t moea64_get_unique_vsid(void); #define PV_LOCK_COUNT MAXCPU static struct mtx_padalign pv_lock[PV_LOCK_COUNT]; -#define PV_LOCK_SHIFT 21 +#define PV_LOCK_SHIFT HPT_SP_SIZE #define pa_index(pa) ((pa) >> PV_LOCK_SHIFT) /* @@ -146,48 +146,6 @@ static struct mtx_padalign pv_lock[PV_LOCK_COUNT]; #define PV_PAGE_UNLOCK(m) PV_UNLOCK(VM_PAGE_TO_PHYS(m)) #define PV_PAGE_LOCKASSERT(m) PV_LOCKASSERT(VM_PAGE_TO_PHYS(m)) -/* Superpage PV lock */ - -#define PV_LOCK_SIZE (1 << PV_LOCK_SHIFT) - -static __always_inline void -moea64_sp_pv_lock(vm_paddr_t pa) -{ - vm_paddr_t pa_end; - - /* Note: breaking when pa_end is reached to avoid overflows */ - pa_end = pa + (HPT_SP_SIZE - PV_LOCK_SIZE); - for (;;) { - mtx_lock_flags(PV_LOCKPTR(pa), MTX_DUPOK); - if (pa == pa_end) - break; - pa += PV_LOCK_SIZE; - } -} - -static __always_inline void -moea64_sp_pv_unlock(vm_paddr_t pa) -{ - vm_paddr_t pa_end; - - /* Note: breaking when pa_end is reached to avoid overflows */ - pa_end = pa; - pa += HPT_SP_SIZE - PV_LOCK_SIZE; - for (;;) { - mtx_unlock_flags(PV_LOCKPTR(pa), MTX_DUPOK); - if (pa == pa_end) - break; - pa -= PV_LOCK_SIZE; - } -} - -#define SP_PV_LOCK_ALIGNED(pa) moea64_sp_pv_lock(pa) -#define SP_PV_UNLOCK_ALIGNED(pa) moea64_sp_pv_unlock(pa) -#define SP_PV_LOCK(pa) moea64_sp_pv_lock((pa) & ~HPT_SP_MASK) -#define SP_PV_UNLOCK(pa) moea64_sp_pv_unlock((pa) & ~HPT_SP_MASK) -#define SP_PV_PAGE_LOCK(m) SP_PV_LOCK(VM_PAGE_TO_PHYS(m)) -#define SP_PV_PAGE_UNLOCK(m) SP_PV_UNLOCK(VM_PAGE_TO_PHYS(m)) - struct ofw_map { cell_t om_va; cell_t om_len; @@ -3736,7 +3694,7 @@ moea64_sp_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, } } - SP_PV_LOCK_ALIGNED(spa); + PV_LOCK(spa); PMAP_LOCK(pmap); /* Note: moea64_remove_locked() also clears cached REF/CHG bits. */ @@ -3775,7 +3733,7 @@ moea64_sp_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, } PMAP_UNLOCK(pmap); - SP_PV_UNLOCK_ALIGNED(spa); + PV_UNLOCK(spa); sync = (sm->a.flags & PGA_EXECUTABLE) == 0; /* Note: moea64_pvo_cleanup() also clears page prot. flags. */