From nobody Wed Jun 05 12:38:39 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 4VvRpR56P7z5Mq4p; Wed, 05 Jun 2024 12:38:39 +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 4VvRpR4XcGz4nc9; Wed, 5 Jun 2024 12:38:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1717591119; 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=VMzfyZzaybEPFNGZH8Ge8rql6eWQHVc+XzOOf85yZmU=; b=MIMz0CYzmR/aSDkDGocqxEasS6gDvfNYdkFqaH34KCWPH+iC3Dwd39lnHYKDHKfIoJGLkQ 1RxShPBzYS48J/qXBmbkeXpXCZTHO4ApnbbePOdSdfp1TPN57uzCSC37ZvNn133m5NKSiw wYkgdSjpLN5aH/xNt/m8xTYu2j95wpu8gT6bIaEbboDqsIYEX4GdL2xvSI/ykH+GrU3KJn PoeBaN43tiD+iq/6Ma3tXEif2rajWQL3m66hVq5jvqgZDPgNDzkmezAf6ri5fa3bl6dekn Yi5IqErLTb33RexBBRVP3RMRROWeyVXb3F1Wk7OEw1J3fQdnlJb0MYX2QqdFeA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1717591119; a=rsa-sha256; cv=none; b=X4lHGixuh4dX3vARao3Xv1HlJISvs2XYK+neHxR0d8oTfo+abFaM55xXly5UX853QFkbfx yvSap5j+u5yE96mHw0mxo1M8GQPdxr4nPubbFa4oDGI8ee0qYwis0wCOtftvEFdIbL/xIq Xj1gBY26petvSGW/ChnPMVHhEm7oyciJP0ldI1gne4zmQz38ElWTKuhNXhASwaLCGITfOO GvQVFHP83vk7abF0YG358KHDwVtXmC7qlnC1gqSi0dlGkguUHVeZbhomwRL/+nNXppqTkz jsSa56zGBDKF6tNbxwJqiH6ceGf+xoiAOiIbyUXRMvcA1TxgtPCiNtCG/QIUEw== 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=1717591119; 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=VMzfyZzaybEPFNGZH8Ge8rql6eWQHVc+XzOOf85yZmU=; b=JQCg6SAKdrubCU4VUgYbm20PY+Fj48lTe8mZQwPn8V3ZdXP6tUgvcVQUKVYOlkwNRxvQjV DsIwbI9/bEyRhRuKnY96Y1WCP1HCkrzhq2GN2FeMyrTfUMW1zx7YMM178HJmk/ws3B/Ttj hVx0KrbWmv3z25cYd7jXeYC3mwukaB6NVv6n+9bFuRsuO4gcYrlPrl3Z/aCBF0dty5CSfO zqsWdreBVSDgInfPxB6N9cFm+aBTGC59XfluGmbJMiR1bIkyZmUfg7kUlTI1isDg+eUKCC mz8qD1CRU73qlNxsChO5cL9b3cGbWGgJVtVHAeeIryT19UnYbDT+f2YPK9nSiw== 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 4VvRpR41bXz12qM; Wed, 5 Jun 2024 12:38:39 +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 455Ccd4b050232; Wed, 5 Jun 2024 12:38:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 455CcdGB050229; Wed, 5 Jun 2024 12:38:39 GMT (envelope-from git) Date: Wed, 5 Jun 2024 12:38:39 GMT Message-Id: <202406051238.455CcdGB050229@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Wei Hu Subject: git: bec000c9c1ef - main - amd64: add a func pointer to tlb shootdown function 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: whu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bec000c9c1ef409989685bb03ff0532907befb4a Auto-Submitted: auto-generated The branch main has been updated by whu: URL: https://cgit.FreeBSD.org/src/commit/?id=bec000c9c1ef409989685bb03ff0532907befb4a commit bec000c9c1ef409989685bb03ff0532907befb4a Author: Souradeep Chakrabarti AuthorDate: 2024-06-05 12:25:05 +0000 Commit: Wei Hu CommitDate: 2024-06-05 12:25:05 +0000 amd64: add a func pointer to tlb shootdown function Make the tlb shootdown function as a pointer. By default, it still points to the system function smp_targeted_tlb_shootdown(). It allows other implemenations to overwrite in the future. Reviewed by: kib Tested by: whu Authored-by: Souradeep Chakrabarti Co-Authored-by: Erni Sri Satya Vennela MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D45174 --- sys/amd64/amd64/mp_machdep.c | 27 ++++++--------------------- sys/vm/pmap.h | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index d506ffada4b9..91737637b714 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -102,13 +102,16 @@ void *bootpcpu; extern u_int mptramp_la57; extern u_int mptramp_nx; - +smp_targeted_tlb_shootdown_t smp_targeted_tlb_shootdown = &smp_targeted_tlb_shootdown_native; /* * Local data and functions. */ static int start_ap(int apic_id, vm_paddr_t boot_address); +void +smp_targeted_tlb_shootdown_native(pmap_t pmap, vm_offset_t addr1, vm_offset_t addr2, + smp_invl_cb_t curcpu_cb, enum invl_op_codes op); /* * Initialize the IPI handlers and start up the AP's. */ @@ -497,24 +500,6 @@ start_ap(int apic_id, vm_paddr_t boot_address) * Flush the TLB on other CPU's */ -/* - * Invalidation request. PCPU pc_smp_tlb_op uses u_int instead of the - * enum to avoid both namespace and ABI issues (with enums). - */ -enum invl_op_codes { - INVL_OP_TLB = 1, - INVL_OP_TLB_INVPCID = 2, - INVL_OP_TLB_INVPCID_PTI = 3, - INVL_OP_TLB_PCID = 4, - INVL_OP_PGRNG = 5, - INVL_OP_PGRNG_INVPCID = 6, - INVL_OP_PGRNG_PCID = 7, - INVL_OP_PG = 8, - INVL_OP_PG_INVPCID = 9, - INVL_OP_PG_PCID = 10, - INVL_OP_CACHE = 11, -}; - /* * These variables are initialized at startup to reflect how each of * the different kinds of invalidations should be performed on the @@ -600,8 +585,8 @@ invl_scoreboard_slot(u_int cpu) * Function must be called with the thread pinned, and it unpins on * completion. */ -static void -smp_targeted_tlb_shootdown(pmap_t pmap, vm_offset_t addr1, vm_offset_t addr2, +void +smp_targeted_tlb_shootdown_native(pmap_t pmap, vm_offset_t addr1, vm_offset_t addr2, smp_invl_cb_t curcpu_cb, enum invl_op_codes op) { cpuset_t mask; diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index 9101201287b2..c8ca6279031c 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -167,6 +167,33 @@ void pmap_unwire(pmap_t pmap, vm_offset_t start, vm_offset_t end); void pmap_zero_page(vm_page_t); void pmap_zero_page_area(vm_page_t, int off, int size); +/* + * Invalidation request. PCPU pc_smp_tlb_op uses u_int instead of the + * enum to avoid both namespace and ABI issues (with enums). + */ +enum invl_op_codes { + INVL_OP_TLB = 1, + INVL_OP_TLB_INVPCID = 2, + INVL_OP_TLB_INVPCID_PTI = 3, + INVL_OP_TLB_PCID = 4, + INVL_OP_PGRNG = 5, + INVL_OP_PGRNG_INVPCID = 6, + INVL_OP_PGRNG_PCID = 7, + INVL_OP_PG = 8, + INVL_OP_PG_INVPCID = 9, + INVL_OP_PG_PCID = 10, + INVL_OP_CACHE = 11, +}; +typedef void (*smp_invl_local_cb_t)(struct pmap *, vm_offset_t addr1, + vm_offset_t addr2); +typedef void (*smp_targeted_tlb_shootdown_t)(pmap_t, vm_offset_t, vm_offset_t, + smp_invl_local_cb_t, enum invl_op_codes); + +extern void +smp_targeted_tlb_shootdown_native(pmap_t, vm_offset_t, vm_offset_t, + smp_invl_local_cb_t, enum invl_op_codes); +extern smp_targeted_tlb_shootdown_t smp_targeted_tlb_shootdown; + #define pmap_resident_count(pm) ((pm)->pm_stats.resident_count) #define pmap_wired_count(pm) ((pm)->pm_stats.wired_count)