From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB6CAC3ABAC for ; Tue, 6 May 2025 16:31:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0B56F6B000A; Tue, 6 May 2025 12:31:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 063FB6B0083; Tue, 6 May 2025 12:31:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E6C2D6B0085; Tue, 6 May 2025 12:31:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C7AB46B000A for ; Tue, 6 May 2025 12:31:39 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C29ED5A214 for ; Tue, 6 May 2025 16:31:40 +0000 (UTC) X-FDA: 83413023960.04.B0A780D Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf16.hostedemail.com (Postfix) with ESMTP id 30D37180003 for ; Tue, 6 May 2025 16:31:39 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pav0vaxb; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf16.hostedemail.com: domain of mingo@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=mingo@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746549099; a=rsa-sha256; cv=none; b=xvF+n7Ls7wjteZR8PBgNkekaectQsdlsrQ2XEQgRtEOZxuoPmKoRJuHShzVGpMKO3XGab2 lWgVaE892cP+EzgZ5afwcMLLuLenmqj1u+EQoNMob0N3ryuk2OLQjPIyEWrbIcuRqEI88F rcwkOmtYWkNujj2rVi5LDPAwYhyjW8s= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pav0vaxb; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf16.hostedemail.com: domain of mingo@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=mingo@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746549099; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=oJ4T3bpMdHeYcBAbWYq6meemRdlPB1p0+fY8fP3p3CU=; b=wVgtti8LZNcl5bx2LvFWdYSiibUSkEth2XenWxEuwiazSD2cOnmhxaSBCTnz+0Nqd166U4 2menHMV5zP8S2iWpNXd/Z7y7ybOldjyaqcHqtYgbPhMSjp0NuHM5GXZGzzT9aeYnP6AHFG t/xx3PuKGiX2JvCh+7WrOGb3WK5n0ZA= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 5619A6115D; Tue, 6 May 2025 16:31:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 309F8C4CEEF; Tue, 6 May 2025 16:31:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746549098; bh=OzRPHBpO8XEBmvQK1Rg73sH4mr4o/RDx/lXBF6O6k+c=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pav0vaxbMMllmE6t1mjqj0ph/j4pP8Ry2K9QzzKqLfMl8tXN6UHzL+xUuOg/UaEow fAtrroQjdkUi7wX/bwImJ1eChu8Bz+6lBMp1jPIzG4FzKpwQkxCm+QleR8yuiTbulD B21uIpUix86mg6jUtwebxT5khP/rjKWeGnIefLmxEtkn1B1I5/+LXv7f0sC0KXZtZm mB/g21theVgXjROmNJ1rvg+M9INYUn6y3aAG4HIgMuws65awp7du0/apxncCEKJZ3V gcg88gV8F8goRsSXjEiGRwKgweMcBp9xm3U3qlSk0GL1p9iHNo9ZRYO9Gf/Cb4v09i 6eQxRKljS7Vbw== Date: Tue, 6 May 2025 18:31:32 +0200 From: Ingo Molnar To: Rik van Riel Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org, kernel-team@meta.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, hpa@zytor.com, Yu-cheng Yu Subject: Re: [RFC PATCH 7/9] x86/mm: Introduce Remote Action Request Message-ID: References: <20250506003811.92405-1-riel@surriel.com> <20250506003811.92405-8-riel@surriel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250506003811.92405-8-riel@surriel.com> X-Rspamd-Queue-Id: 30D37180003 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: dc761kmrjgu9ybmbupkaadafqbgerokq X-HE-Tag: 1746549099-937163 X-HE-Meta: U2FsdGVkX1/ei0iZYaIN3QhUyNnyX5EMqW98fOVJTZvd0a6YLnHLWolVgGoj4DlFmUzsoO6tP6SsYqmfVgERj4CtbW7KDPAzERrZBnCF93ChMCOdj4chGOFnPJAmUMPc+p2ts9+iZXpnGKiAo8uunV3OJAJKdbD+XzHPWmdcEsG6yL+NLHxAQhLIwnmhgOFGf+Z3xVdp5rwdZ6JX29mXf/IKZVlvkx2aUSnA+ee4Uu4eu20QLtEPa7qeYtyDf9iQZMx7JIjo/zPKd7Rm4jXeEyoAlJUkpAegEqSsAY+K9FjUY14rFJwYXTn8PywGOFIPLPLHB7dZFt/D/MP6P5nIgT//ExfdniiDZ5Ym1YbkMa/dGSivYSRh7uh5UrYQy8kCjHBn+pxXGT0+iJV30e6gJ093mwZC60JiMKbRVr7NmgaBZji7i0ugfnu41kwNquiI8IQtj0P7NGQJuYYaVhbONjKm7gufIxY8m1FS2Op1Y07g6Jbtn3Mgh+8FWMuOc3zmNhuYg3zYTYhnzmAn17Nzn3UR75yLMEmESW9yrbxY4D4VfxZ0oEm2ch7xUAklISXe3ljRtiQUqD4Ub9RFPWCOL5ykUUho+C16SfOWzTx7qugQpFqsR/pr0qTE3lMRC6e1hPGqxViyz0woGMqDa2MSQvrcTYEP3lN2WoBJo7XKjhs09p8VR5zv6Ix5QvLX09vypN0RwDs6dp8Util+9i/bFhvXVSVIh8pTuoqUEXR4GL73XVkCDZoypYVsEq7wc6L/v+EJoPSeYa0LHfhuXHNdtx7xIgtL0TGlYVKQGfO1nZNMedBwHEcZWNtsQxi6lLx+iR5/nNA+n4FcsRfINtYRDf3NCE6kXxzHNCPqS6PM699J1iGw2MofQnaYTQec3xSsI2khWTriTnnys4DUWgVjRM7nrNPI45R6sz2+cdeiQfqm9N6KLJHmfh05FyjCLGBlE6zs80Cqkck91ouXd0R dyXrNzFO zvTnBx41Ba6d+0fzKJSUv8ndbmKrTa4h3rqmfy+NyMYlaHDHl+A3qR4HP4vTgy/bWWne/NcdWFMablFWDHZS2/y77xMNIkbhsW0nP37qAmHyavOalivjJVnSsIwlP+nJW0nRF6ruw5CHt2jP9HdOPjS2xR+MUhim5R10pPzkL0JzDhUJ2dcfq5l19M9BOnL04P7a3wKH/zc+o1xwT6EkjkugdTVsiWOxtLjfYWaMQUPsOtKMUrbH/9iLpSDX9jIpdRRHCYwE2T2tJiMM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: * Rik van Riel wrote: > +++ b/arch/x86/include/asm/rar.h > @@ -0,0 +1,69 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_X86_RAR_H > +#define _ASM_X86_RAR_H > + > +/* > + * RAR payload types > + */ > +#define RAR_TYPE_INVPG 0 > +#define RAR_TYPE_INVPG_NO_CR3 1 > +#define RAR_TYPE_INVPCID 2 > +#define RAR_TYPE_INVEPT 3 > +#define RAR_TYPE_INVVPID 4 > +#define RAR_TYPE_WRMSR 5 > + > +/* > + * Subtypes for RAR_TYPE_INVLPG > + */ > +#define RAR_INVPG_ADDR 0 /* address specific */ > +#define RAR_INVPG_ALL 2 /* all, include global */ > +#define RAR_INVPG_ALL_NO_GLOBAL 3 /* all, exclude global */ > + > +/* > + * Subtypes for RAR_TYPE_INVPCID > + */ > +#define RAR_INVPCID_ADDR 0 /* address specific */ > +#define RAR_INVPCID_PCID 1 /* all of PCID */ > +#define RAR_INVPCID_ALL 2 /* all, include global */ > +#define RAR_INVPCID_ALL_NO_GLOBAL 3 /* all, exclude global */ > + > +/* > + * Page size for RAR_TYPE_INVLPG > + */ > +#define RAR_INVLPG_PAGE_SIZE_4K 0 > +#define RAR_INVLPG_PAGE_SIZE_2M 1 > +#define RAR_INVLPG_PAGE_SIZE_1G 2 > + > +/* > + * Max number of pages per payload > + */ > +#define RAR_INVLPG_MAX_PAGES 63 > + > +typedef struct { > + uint64_t for_sw : 8; > + uint64_t type : 8; > + uint64_t must_be_zero_1 : 16; > + uint64_t subtype : 3; > + uint64_t page_size: 2; > + uint64_t num_pages : 6; > + uint64_t must_be_zero_2 : 21; > + > + uint64_t must_be_zero_3; > + > + /* > + * Starting address > + */ > + uint64_t initiator_cr3; > + uint64_t linear_address; > + > + /* > + * Padding > + */ > + uint64_t padding[4]; > +} rar_payload_t; - Please don't use _t typedefs for complex types. 'struct rar_payload' should be good enough. - Please use u64/u32 for HW ABI definitions. - Please align bitfield definitions vertically, for better readability: u64 for_sw : 8; u64 type : 8; u64 must_be_zero_1 : 16; u64 subtype : 3; u64 page_size : 2; u64 num_pages : 6; u64 must_be_zero_2 : 21; > +++ b/arch/x86/mm/rar.c > @@ -0,0 +1,226 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * RAR Tlb shootdown s/Tlb /TLB > +#include Is this really needed? There's nothing KGDB specific in here AFAICS. > +static DEFINE_PER_CPU_ALIGNED(u64[(RAR_MAX_PAYLOADS + 8) / 8], rar_action); > +static void set_action_entry(unsigned long idx, int target_cpu) > +{ > + u8 *bitmap = (u8 *)per_cpu(rar_action, target_cpu); > + u8 *bitmap = (u8 *)per_cpu(rar_action, target_cpu); > + bitmap = (u8 *)per_cpu(rar_action, this_cpu); So AFAICS all these ugly, forced type casts tp (u8 *) are needed only because rar_action has the wrong type: if it were an u8[], then these lines could be: static DEFINE_PER_CPU_ALIGNED(u8[RAR_MAX_PAYLOADS], rar_action); ... u8 *bitmap = per_cpu(rar_action, target_cpu); right? Thanks, Ingo