From patchwork Sat Nov 19 01:34:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23173 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp510963wrr; Fri, 18 Nov 2022 17:55:19 -0800 (PST) X-Google-Smtp-Source: AA0mqf4yJYrtDSt5wm2jCmD7REnbkaWMRduEa3OboQ8bp5My0ExALpIGELmuahr00zX3xhizrXCM X-Received: by 2002:a17:902:bf06:b0:188:d3b1:dbfc with SMTP id bi6-20020a170902bf0600b00188d3b1dbfcmr2063895plb.127.1668822919094; Fri, 18 Nov 2022 17:55:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822919; cv=none; d=google.com; s=arc-20160816; b=hww2Ow43lEef4MOmxNl5XsMaw20hnnei/019XOCEhlUQfGha8F9xHihlXf34cOsqj0 Sl1bKWPyPsKvamQbr1zZ0okVS8a0aRZGtjbdyR+C0n3PEHhlmizPF39D+IF7TvkJl/IB pXRRqiGYA1Ey2wHxi0EMaTRsba9ppBqEe3Dw6nqaopBy2eNpoZyW8EYD2L6QLQXQbpX0 QQ6/L2MQMmOjqBhoDLdkpUvR0MrHkH4Ve9yYUHBluqMCu9BSAfvkRMwtMGgzWWUFe1X7 ti9WAYq4R6hj8U1ooxxwiCZhC4I0yeCPh6X0rmrZ+GkD9b76rc+hdOzy8N6zVtj3s2/V 21Gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=ainK2RDn+jZipfmA59p8DPXtbCjd5fvmnXnNzM45Lqs=; b=m8RHfC0aOUMNzVeIwlpOM1jV+VW5LUBlbvDPT1q25Q9ohKl1fEyEart24XHIp1PePg V1p7oY/50VrXKlSIJJuxFvQx6oF6WL9YcJ1rROqP1XteYbZP/KcmEkM/WpCMsMlAHb7n nK0k3SQ1E6Qe6KGoFDlj754rYq2jjo+JU6lqLZEg6Fs/dmoTNSLxQqGxWNte2dacrXgA L3r2OH8fTO2F1zPgOtf2mKci1itFqNW0U3B6RAKT9zW48mQMzOOARIpiMIRJrCVIUUYF JP3tEO2QsrV7aNar3X2ktDL4BMm3wpGwVY3Gm5dJVzu+V5lvlGqjB6+NF45Cg/gMQOUI 5JmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ElbaUsSF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c19-20020a17090abf1300b0020d9f618c4asi7854127pjs.17.2022.11.18.17.55.06; Fri, 18 Nov 2022 17:55:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ElbaUsSF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234073AbiKSBxE (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232994AbiKSBwm (ORCPT ); Fri, 18 Nov 2022 20:52:42 -0500 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11D32C4B63 for ; Fri, 18 Nov 2022 17:34:55 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id my9-20020a17090b4c8900b002130d29fd7cso7638361pjb.7 for ; Fri, 18 Nov 2022 17:34:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=ainK2RDn+jZipfmA59p8DPXtbCjd5fvmnXnNzM45Lqs=; b=ElbaUsSFUGAHxw9FaGIh9WqW076YqYTniSp+9sLgIbyAZGXc9q18pS+d+PVOfEWLyg Kx/QdBqkeFSoCaN0e1TOjAh4OmvJCcZTfbRkoIs9Pa9Ier3h3eU6dfc5nhMeLRYb7If1 R8gMGaRsYzdOWxgY6umO5g2RAl06ZRzk4tCJFWsOlqsTdFgeOz+FKVhUFHG0gjETIWMB SJsXPpuWt8ijNGjeVGXQ26qTfp0uSqxFA3Tr0kPraQUGqTQxkgiCsPpjq4Ug8UUJokHo 3S2V7A4WGHkj82py+dbabm8Ds9t2svz5QsJ1xSBiuk9loWQwWH1Z8uCRnLa36e7zSQDg hRig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ainK2RDn+jZipfmA59p8DPXtbCjd5fvmnXnNzM45Lqs=; b=W/QB5Lerbme1hi+vCgI83I/dxj63cNwkYJdcTZUWSkWqknb7k7vLyoeNvg7+nuOvhS E9OEPYSd7sIPQ4RWOuUu1G5eG0T2zKUOE7+PnG1gPmCOdzPxtvLLpggBp7cHNiuJqc0s zfYM5niXHIW2cBU90fvt1KqKnJx8YnDRm82mz3vF4WOW4/ccNcbNJ4EW35FC6lRkyBFR Se9RK6uYxBip4yIOmHnrYQuYsVrBvIndKgETCawxjfxAGl1txb0551zhsRTiDFxjNM8v SNNPDuaXGW/JZ6KQX6IdRjE/Dt6GmAroLmme3+NutZAVJWRikP05x4AIv1nJ3/1wKDW5 +Hjg== X-Gm-Message-State: ANoB5pmBA6/JozLO8bNvpjx1qeKnPKkDUdkpztIYtdGt9MrEUnvtrskF 61YI/N8JVnRhO+/1RfiMQ88eHTULDiM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:ca14:b0:187:3fc8:986e with SMTP id w20-20020a170902ca1400b001873fc8986emr2206032pld.4.1668821695384; Fri, 18 Nov 2022 17:34:55 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:42 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-2-seanjc@google.com> Subject: [PATCH 1/9] KVM: selftests: Add rdmsr_from_l2() implementation in Hyper-V eVMCS test From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887661179980908?= X-GMAIL-MSGID: =?utf-8?q?1749887661179980908?= Add rdmsr_from_l2() in hyperv_evmcs.c, it got left unintentionally omitted when applying code review feeback on the fly. Intentionally duplicate the code that's in hyperv_svm_test.c, the helper really should not exist (L1 shouldn't clobber GPRs) and will hopefully be removed sooner than later. Until that happens, deter other tests from using the somewhat misleading helper (it doesn't actually read L2's MSR value). Link: https://lore.kernel.org/all/Y2FFNO3Bu9Z3LtCW@google.com Fixes: 860e80157068 ("KVM: selftests: Introduce rdmsr_from_l2() and use it for MSR-Bitmap tests") Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c b/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c index d418954590b1..ea58e5b436e8 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c @@ -31,6 +31,15 @@ static void guest_nmi_handler(struct ex_regs *regs) { } +/* Exit to L1 from L2 with RDMSR instruction */ +static inline void rdmsr_from_l2(uint32_t msr) +{ + /* Currently, L1 doesn't preserve GPRs during vmexits. */ + __asm__ __volatile__ ("rdmsr" : : "c"(msr) : + "rax", "rbx", "rdx", "rsi", "rdi", "r8", "r9", + "r10", "r11", "r12", "r13", "r14", "r15"); +} + void l2_guest_code(void) { u64 unused; From patchwork Sat Nov 19 01:34:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23174 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511055wrr; Fri, 18 Nov 2022 17:55:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf4i03kuNurz2dPHv/jNBMqFLY3sGSPuSWGkoSyz+m1Q+bQDX8eHx17T/QzGlgMtBPv4VidX X-Received: by 2002:a17:903:1314:b0:17f:def6:a483 with SMTP id iy20-20020a170903131400b0017fdef6a483mr2109066plb.66.1668822940419; Fri, 18 Nov 2022 17:55:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822940; cv=none; d=google.com; s=arc-20160816; b=w3quFB7czoFKtHZc4qMCt1oLyUuwHyWk0sG/SU1FHmnxth1wB/YqKiHuiIfKFcpWWI DBj0oFt8IBTgm+t60vHLoHLDp43ORTz+p30ARQ1+OsiKY0yeMpYnX0ytrdPAzERec+fs eNgM961mSnuR3KQdxeNMLrlGJhrhzcevkfk9UF16iuis7TGQTeIc3HJnMEw2alxFDkjG yffpjLytx+jSRo4hmAd423Fqa8+4dsosYSi0q9OflgUfaFE+NcidgsEU6hIKsNxzWne3 PddZimk79ehxS0hPEMI5G9fHQUjfm5CCDxeJC04tppcdYWwrHfHirOV9j2P2JXR72DiM fBIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=3L4OGgzlwO72UOhCz/yhgDnemDx1svOqEC1kNqY2LlY=; b=D2ykB07MWGrBbRMwOHVrH3dT5RXQ5hsMrL7jEz94nDi28MMsQjOj/P8/HnZOlWQZS3 JgNLoH3+b/lT9M1ugX4nXII96MfR1fzpJdCDifgQS0RNwviK+6ekmT0QxEjeHbiSPXVM vLL6gbrYrteOfvBd/xym6N/XJtd1n6/enRKcPiC9b6DDO+Ketv7qcQUWjnn1ytzKBJ1t 138aGEiKdZh7GsiZt0An46dKhNXnqPZOUyitRzm4IPC1T3QWcgJS8kqmoUL4GJ794bmE OWG+JDU0vt4Qw3j1rJ3ZZ7QLiwwUfKbI93MNPXEW9ttBSKgAlmOh3qeCPR/XIbp1bYpp TKaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=TVbNKYXy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u5-20020a170902e80500b001727963f929si5768586plg.130.2022.11.18.17.55.23; Fri, 18 Nov 2022 17:55:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=TVbNKYXy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233895AbiKSBxB (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233718AbiKSBwo (ORCPT ); Fri, 18 Nov 2022 20:52:44 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80901C4C0B for ; Fri, 18 Nov 2022 17:34:57 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id v10-20020a17090a7c0a00b00215deac75b4so3831938pjf.3 for ; Fri, 18 Nov 2022 17:34:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=3L4OGgzlwO72UOhCz/yhgDnemDx1svOqEC1kNqY2LlY=; b=TVbNKYXyk9Av6G9IU5hbcSdtY604tXdeCj/mxuYUgo562vyrKEnoOwdFmmSYRnZrhU LBAmImeVeqCcB52XaO11Dmz+EQI28t/X/Gs+d5+qZTdOdJf7GMrh0NFsTqYcRXm4daLY 1hASafr2iIbEc1hm+AW2G4MQ9J2SaNiShD66DGhZuBIFahYe4A7PKc4KgX+70SodAs71 LXrpBgaC8CNiujzkmhmqZsdDxNiUEsMLzhgiL5qXrHvOT5DFgOO6Q4QTpk/DiS8A560t FkLFabDChtATnitORRutffp7/vTBioX1ecxNmZ4lOUjomxAKyCBVCCd95HwPrc++VJ5O 5zWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3L4OGgzlwO72UOhCz/yhgDnemDx1svOqEC1kNqY2LlY=; b=623RlXGHwCMcrI+mWIXQRiAbNEJAkf1IAKl6NuclpadlFT7dJWhLeyjGjwxpFld29U mOgdxbmizYADilDe6AAQrVhZ1xIuVMsPEJqfiC6iR0nWKmo5zwGjv++vXBbOSLqjO/YF I7IQAFhkrKAUy7RXfZM89HwkrkkUo3yLwk2v2PspzSPayqoQzn1Cmf8MmsDc9Lr1d5e5 ZHldSagVp17AxoKvcbAN9wRqhjpcx71zwbT0THElRMe2txDbLKzvBJ2o28pSk6c4WiJW fagmmfBuBFLnho93FscUKNIm05Vj1ShaAbIhMUwywC/3fHbjZYmS5Vyg2Ek34rsjUjis tExQ== X-Gm-Message-State: ANoB5pmo1hO+5wM0XFwqljjdazE7UG//kWpiWfpAQBon7jPwFa3v+uxo Za8+cU34LYIAy5BUAMU/Mfwr7UbnGks= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90a:4615:b0:218:8f4:bad5 with SMTP id w21-20020a17090a461500b0021808f4bad5mr16521916pjg.55.1668821696975; Fri, 18 Nov 2022 17:34:56 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:43 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-3-seanjc@google.com> Subject: [PATCH 2/9] KVM: selftests: Remove unused "vcpu" param to fix build error From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887683580649978?= X-GMAIL-MSGID: =?utf-8?q?1749887683580649978?= Drop the vcpu param in the Hyper-V TLB flush test's call to vm_get_page_table_entry(). Commit 751f280017b6 ("KVM: selftests: Drop reserved bit checks from PTE accessor") eliminated the param, but the in-flight patch to add the Hyper-V test didn't get the memo. Fixes: a105ac64bef6 ("KVM: selftests: Hyper-V PV TLB flush selftest") Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c b/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c index 44525255f5c8..68f97ff720a7 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_tlb_flush.c @@ -625,7 +625,7 @@ int main(int argc, char *argv[]) */ gva = vm_vaddr_unused_gap(vm, NTEST_PAGES * PAGE_SIZE, KVM_UTIL_MIN_VADDR); for (i = 0; i < NTEST_PAGES; i++) { - pte = vm_get_page_table_entry(vm, vcpu[0], data->test_pages + i * PAGE_SIZE); + pte = vm_get_page_table_entry(vm, data->test_pages + i * PAGE_SIZE); gpa = addr_hva2gpa(vm, pte); __virt_pg_map(vm, gva + PAGE_SIZE * i, gpa & PAGE_MASK, PG_LEVEL_4K); data->test_pages_pte[i] = gva + (gpa & ~PAGE_MASK); From patchwork Sat Nov 19 01:34:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23171 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp510837wrr; Fri, 18 Nov 2022 17:54:52 -0800 (PST) X-Google-Smtp-Source: AA0mqf5wWP4ADhzMLgkJNfF79ru2NgqY/CgQbYpvxB+03Y80HA6MkVMTqWXWizZ4hZrAHBV+t5tq X-Received: by 2002:a63:b513:0:b0:477:3052:248c with SMTP id y19-20020a63b513000000b004773052248cmr4514035pge.179.1668822891801; Fri, 18 Nov 2022 17:54:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822891; cv=none; d=google.com; s=arc-20160816; b=ZpPwAViziWKvEpJOUQL6OLcp2XuuiMX9LJNTfwJoRbzPrIirYoLUSaVOsT/wqhAFHJ fwMhBosF76aDqw1iD8vkXLaoVZZOAg1rOWphEK0BJmjDDKDVINfFV1ot/tIxvuOyeWYM OEPkmtLJ6habYKjsY4zXQeLYRLjQUyn7Vx/tTQrRGAw2LTTVideuGYwgJnvsdWl2FDhI 880aB034C4G+XKrrmG/9s+enAB+TI9ImvvDzX2DNy7D8SqLXElsQ5CZjYic55w1OBzlQ KpOhRfirNZEyKCChgP6oZyfH+BH7AivxgofTaq0Ycuj6quFiL8WINP2GodWCyP5/PvsY 58og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=e+ywn9anGlzmBRZYQfNE5JqRUvrYYtM9CuRcHhcOat8=; b=QKgH1wdq0WKOqVWZmvCbr9Gf4l0K+eCTsPRo7K8PTIAOSWZ4ML8kvlYSC/c/HmvSIl 3gVOHf03rPXI9KJKzfUGBbqljOWJ1+9GILeXJJ0LSe2gNWSGu5l0/v+fhQXWngzEaK/N uBXbk3T042/pNHM/8Bz00RLWJhnGFPaWmDJsbPS+XgsOY/0stXqPi9srJTXBERbjpNfG knLynX1pGhRqgMz4jCP2rYaP2HMLd+U8GDcZRMua48OawCqdjHkwHcNCpL7OT3MEJwY5 QwyFjPONmrxjZbjyGHZSRB9J6WGyBxIdS96rSM37CIjlHUlkpM2D+92WdA/NLQSQbFXc 5tPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=bUEChsSW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v184-20020a6389c1000000b00476c6aa20c6si5224383pgd.548.2022.11.18.17.54.37; Fri, 18 Nov 2022 17:54:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=bUEChsSW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230244AbiKSBxb (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51470 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230035AbiKSBwo (ORCPT ); Fri, 18 Nov 2022 20:52:44 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2635FC4C11 for ; Fri, 18 Nov 2022 17:34:58 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id pi2-20020a17090b1e4200b0021834843687so7682098pjb.0 for ; Fri, 18 Nov 2022 17:34:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=e+ywn9anGlzmBRZYQfNE5JqRUvrYYtM9CuRcHhcOat8=; b=bUEChsSWxywmbXEODMnhpTArgpDXm8MaKA/SqgTjg5p+/RcYNX7S04/3xpu9J/Qvhd 4bdagwUbiSdDxnx3tS0KF820eXh2iqkgSCqZDfRbzZHyloQR7cNnkjyTKyEuT6f4pI10 8tKIXR4fa/bt7sTnMlIgnfjppTnjmh2lzOejjH/eCf9LxOD5caHM7jQPu+J7kwCDF9RB ooOOGe2F+sB/yW0Iak7LoRDXFnao07e5dDaQ6BfVTWKYFz8nLtcfxAGPgcnrQw6Wy4Sa aeVwQDjy46i3XYIrO35DtjIYTHDet8LPXqZ4MaG6IOPG/C9jabUyQMOrTAnz/MWzY9l1 R0QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e+ywn9anGlzmBRZYQfNE5JqRUvrYYtM9CuRcHhcOat8=; b=h2VZCsSGoxQh6AuiPJFDVV3WadWFPD0L7wub4/AF3DxROLpGBWxk0ScDOpPJhlPlWJ OoDdETOKpr0UH4KV8mrssXAhbe3ARu0yw7sE38pnqN5PLEzV+lP/Cb4ZGNX+Pff2pgLB rrWZgAnKhegixjLTD5sGvTviQYey9HxtLqXxRwd7bg/1yGn400m8YwRuMn++Mk+8KEHS 9m1gcM0xCGk3+hRgLnanvJUM2Dd+AsU2RlM7KcbyyN6bxTK+6kLW8J/gMWxWYswmWGBi /oIeJu8imFDvSOzB87mszgqGUzzjoein7EsTy/4KyDp/A9Lksgyr0A7+RJh+OgGczkZC QkPw== X-Gm-Message-State: ANoB5pnG09DL+o9JKe0kze5vSYhmEwl5PpYr3BeCM0XROi4HZpOZreU9 p06ugiQZo6op5OlkEYYn/538nmS2Dlc= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:bd18:0:b0:562:3aed:e40c with SMTP id a24-20020a62bd18000000b005623aede40cmr10612946pff.2.1668821698375; Fri, 18 Nov 2022 17:34:58 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:44 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-4-seanjc@google.com> Subject: [PATCH 3/9] KVM: arm64: selftests: Enable single-step without a "full" ucall() From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887632732792363?= X-GMAIL-MSGID: =?utf-8?q?1749887632732792363?= Add a new ucall hook, GUEST_UCALL_NONE(), to allow tests to make ucalls without allocating a ucall struct, and use it to enable single-step in ARM's debug-exceptions test. Like the disable single-step path, the enabling path also needs to ensure that no exclusive access sequences are attempted after enabling single-step, as the exclusive monitor is cleared on ERET from the debug exception taken to EL2. The test currently "works" because clear_bit() isn't actually an atomic operation... yet. Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/debug-exceptions.c | 21 ++++++++++--------- .../selftests/kvm/include/ucall_common.h | 8 +++++++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c index d86c4e4d1c82..c62ec4d7f6a3 100644 --- a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c +++ b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c @@ -239,10 +239,6 @@ static void guest_svc_handler(struct ex_regs *regs) svc_addr = regs->pc; } -enum single_step_op { - SINGLE_STEP_ENABLE = 0, -}; - static void guest_code_ss(int test_cnt) { uint64_t i; @@ -253,8 +249,16 @@ static void guest_code_ss(int test_cnt) w_bvr = i << 2; w_wvr = i << 2; - /* Enable Single Step execution */ - GUEST_SYNC(SINGLE_STEP_ENABLE); + /* + * Enable Single Step execution. Note! This _must_ be a bare + * ucall as the ucall() path uses atomic operations to manage + * the ucall structures, and the built-in "atomics" are usually + * implemented via exclusive access instructions. The exlusive + * monitor is cleared on ERET, and so taking debug exceptions + * during a LDREX=>STREX sequence will prevent forward progress + * and hang the guest/test. + */ + GUEST_UCALL_NONE(); /* * The userspace will verify that the pc is as expected during @@ -356,12 +360,9 @@ void test_single_step_from_userspace(int test_cnt) break; } - TEST_ASSERT(cmd == UCALL_SYNC, + TEST_ASSERT(cmd == UCALL_NONE, "Unexpected ucall cmd 0x%lx", cmd); - TEST_ASSERT(uc.args[1] == SINGLE_STEP_ENABLE, - "Unexpected ucall action 0x%lx", uc.args[1]); - debug.control = KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP; ss_enable = true; diff --git a/tools/testing/selftests/kvm/include/ucall_common.h b/tools/testing/selftests/kvm/include/ucall_common.h index bdd373189a77..1a6aaef5ccae 100644 --- a/tools/testing/selftests/kvm/include/ucall_common.h +++ b/tools/testing/selftests/kvm/include/ucall_common.h @@ -35,6 +35,14 @@ void ucall(uint64_t cmd, int nargs, ...); uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc); void ucall_init(struct kvm_vm *vm, vm_paddr_t mmio_gpa); +/* + * Perform userspace call without any associated data. This bare call avoids + * allocating a ucall struct, which can be useful if the atomic operations in + * the full ucall() are problematic and/or unwanted. Note, this will come out + * as UCALL_NONE on the backend. + */ +#define GUEST_UCALL_NONE() ucall_arch_do_ucall((vm_vaddr_t)NULL) + #define GUEST_SYNC_ARGS(stage, arg1, arg2, arg3, arg4) \ ucall(UCALL_SYNC, 6, "hello", stage, arg1, arg2, arg3, arg4) #define GUEST_SYNC(stage) ucall(UCALL_SYNC, 2, "hello", stage) From patchwork Sat Nov 19 01:34:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23177 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511095wrr; Fri, 18 Nov 2022 17:55:49 -0800 (PST) X-Google-Smtp-Source: AA0mqf5K+6RF1rLDPIBI/TcKKEK1jwSFf7IpWcnQKQksqNZwfSF3XreGzGlq3Q8aEQPwepC64MGH X-Received: by 2002:a17:902:b283:b0:179:fe08:48da with SMTP id u3-20020a170902b28300b00179fe0848damr2056208plr.154.1668822949148; Fri, 18 Nov 2022 17:55:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822949; cv=none; d=google.com; s=arc-20160816; b=JbqAnVhytsQZxlPDxvmmGE2W/QoRP/HaC+Gd3kpvVooR0c5VldVFiVPbeXFbZzXMi/ iHR6i27Guns3XeOF+VOGtNokppZv0zPxseNl61wSEzgwj9p7L+UvrYtBwkJvpU5NKvJS WBUs46ZXPG6iaWNZuUS6yVrk3wRWzzNGFP70qrdaa7q2PWK5QBdaqy56E7vFakEyPiD3 xxej7RuawgQ3FB1YPpZKAtyIsoNgEBUQajOTvEARU7mrLapbnuaQQsYbaB8SOswXCrl1 KVCgUKu1mYWmGX6J1pEsiz/iCzihR0f2ea3Bc6JQei0Xf99TfJX6h5MMkAawnudO7jk1 7y4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=TighIegw0FVxEDaBlZjjTMFerelt3ds/i85zL8CdikU=; b=XzJ5TKK6cPyTPAfHmHu6UBWTsk66QNCgVkJOSrYHgVfd0zavCH/umgScqzytDybqEC dcmW5v9A/AW0u63dlt5rrUJLTZtFanLpousaTX4jeeDtkTc4C62cdsfj3RgVYmVdevn1 IZrnLi3QmiV8eNHJpSdunP5AguyQ8PttGPhwpdUi5xS0E5DZstAm++4rJX4ydwHjRLvz e7dIAE7aj9iTLQXhmWNHgjg7DgebVT1wt960yoeKpeqPx5F0RToeKuFWez/G3rR1iISu pHBHrglZT17hcCPCzKC3f4azvsEjkYWAtlGYTVNtva8AfyaEADudS76UTxyqPffQQWBG QsMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=rmXe3VvP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b7-20020a656687000000b004704322da6fsi4829104pgw.273.2022.11.18.17.55.36; Fri, 18 Nov 2022 17:55:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=rmXe3VvP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233850AbiKSBxw (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231435AbiKSBwp (ORCPT ); Fri, 18 Nov 2022 20:52:45 -0500 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E12A4C4C23 for ; Fri, 18 Nov 2022 17:35:00 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id 38-20020a630b26000000b004773803dda1so1344524pgl.17 for ; Fri, 18 Nov 2022 17:35:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=TighIegw0FVxEDaBlZjjTMFerelt3ds/i85zL8CdikU=; b=rmXe3VvPa8zVoj+4dcS77sndQg/asQbzYB56Apv5ggGW1UuoVvHp+A5nMUNJLLDfT3 0SofbaNG1mdy2xYr69bYijAVWvASmZ+BqpR/39RMUQ9fkkgAxOfAbbiCLxjhwxFDSnJD CYvPDNSf4OyAJDiay7zq/RREBEcBoCo+j9xnBGDg3cCGMQQFHgk7xqMIHyhqLMB+bCwR NAaB2xI/+noK1nArryRf5o2AI/YWSXe/+BtRdDtBj4KcS5PatRnf6S7gkyW5Yh4ep5o2 9FIQoQ8VkWuppw661uC0FbLCjWmBTrmiieXQzRAdkvaLBoGT3HMeR/wJf7SYLzVFCqzk 4tiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TighIegw0FVxEDaBlZjjTMFerelt3ds/i85zL8CdikU=; b=DXOk9RmIP3bEchC0jW01hGVpbcV6RX24SCaWDhaHqBqry5d2llKiWpyHgFwHzRM7z8 ur6QNWwuqdltd86fJWh5FhF1SrQ+/NN08GPd+R0wyLeuYZ0zWVh55uJolA4b5YYWIeOC eifGYH67IzwIgsG4c/4vs663Fhgpc2IGw+g2Il9o3WlKGPShk4yXNvos6cJCQWYZxBVY KEHX/vJE2IGJFLsC45PdQnuX2HCJx4yq0paoce1DSBD88m5nHgajs01QTj7jh9lMtyj8 h37XEGnrUVQgrs53IQgIGNUO9C/4GE5+ZtNXydgIQXs0zjzxvVZLrJhrkYnZcL4jP6be Nvmw== X-Gm-Message-State: ANoB5pk3MLnqGBnVny2TIiIMeeY/2ePoU3v9nacppjnM1RMD6tu7QnoJ cVLQj66laNkzMbpUIeR3tL8doiORcFs= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:aa7:8d88:0:b0:562:69d4:f9f3 with SMTP id i8-20020aa78d88000000b0056269d4f9f3mr10570461pfr.5.1668821700033; Fri, 18 Nov 2022 17:35:00 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:45 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-5-seanjc@google.com> Subject: [PATCH 4/9] tools: Take @bit as an "unsigned long" in {clear,set}_bit() helpers From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887692885817355?= X-GMAIL-MSGID: =?utf-8?q?1749887692885817355?= Take @bit as an unsigned long instead of a signed int in clear_bit() and set_bit() so that they match the double-underscore versions, __clear_bit() and __set_bit(). This will allow converting users that really don't want atomic operations to the double-underscores without introducing a functional change, which will in turn allow making {clear,set}_bit() atomic (as advertised). Practically speaking, this _should_ have no functional impact. KVM's selftests usage is either hardcoded (Hyper-V tests) or is artificially limited (arch_timer test and dirty_log test). In KVM, dirty_log test is the only mildly interesting case as it's use indirectly restricted to unsigned 32-bit values, but in theory it could generate a negative value when cast to a signed int. But in that case, taking an "unsigned long" is actually a bug fix. Perf's usage is more difficult to audit, but any code that is affected by the switch is likely already broken. perf_header__{set,clear}_feat() and perf_file_header__read() effectively use only hardcoded enums with small, positive values, atom_new() passes an unsigned long, but its value is capped at 128 via NR_ATOM_PER_PAGE, etc... The only real potential for breakage is in the perf flows that take a "cpu", but it's unlikely perf is subtly relying on a negative index into bitmaps, e.g. "cpu" can be "-1", but only as "not valid" placeholder. Note, tools/testing/nvdimm/ makes heavy use of set_bit(), but that code builds into a kernel module of sorts, i.e. pulls in all of the kernel's header and so is getting the kernel's atomic set_bit(). The NVDIMM test usage of atomics is likely unnecessary, e.g. ndtest_dimm_register() sets bits in a local variable, but that's neither here nor there as far as this change is concerned. Signed-off-by: Sean Christopherson --- tools/include/asm-generic/bitops/atomic.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/include/asm-generic/bitops/atomic.h b/tools/include/asm-generic/bitops/atomic.h index 2f6ea28764a7..f64b049d236c 100644 --- a/tools/include/asm-generic/bitops/atomic.h +++ b/tools/include/asm-generic/bitops/atomic.h @@ -5,12 +5,12 @@ #include #include -static inline void set_bit(int nr, unsigned long *addr) +static inline void set_bit(unsigned long nr, unsigned long *addr) { addr[nr / __BITS_PER_LONG] |= 1UL << (nr % __BITS_PER_LONG); } -static inline void clear_bit(int nr, unsigned long *addr) +static inline void clear_bit(unsigned long nr, unsigned long *addr) { addr[nr / __BITS_PER_LONG] &= ~(1UL << (nr % __BITS_PER_LONG)); } From patchwork Sat Nov 19 01:34:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23176 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511070wrr; Fri, 18 Nov 2022 17:55:44 -0800 (PST) X-Google-Smtp-Source: AA0mqf7Wzv3/aFDaMswXh1RSY6rJhIGVhDLb/TUiSXbrO21q919FY+9bPIVRYh/4dUX5tsIhkJj0 X-Received: by 2002:a17:902:7445:b0:186:b5c8:4c8f with SMTP id e5-20020a170902744500b00186b5c84c8fmr2080114plt.124.1668822944064; Fri, 18 Nov 2022 17:55:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822944; cv=none; d=google.com; s=arc-20160816; b=1A/RXLkXfY6YV6AQi+ocHB6dEczKjduAx+lPWeIucPrGqKL+koIL8+WykjGiL9yKRG mJv6/26mZZ9vFeji8xtGzyaQLvFUpx5jfzDAwjLh30OaUrlQVjk/JhF+JNNzdM8CG/6W v03AfAtQkLDGkehqIl5PKhkLdyvY9ceZji+tauV/P/bPw/ln4avlN/MPd98xwPn/ZBB4 FbkrSEla1gICrusB5aseqJ7h5ijXu/y1qq49HcK7+lO8tjBwlAkNbbrr1UpHmy13cDIM 1PlknL5YJLevESLM3mKQebnI5M+az6ACfzu/TXnNvQFGxDQ6vUECxn8Y0uRPnVjPMisD OZ7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=jYDJ9XgbSK1d9HoZtCqk9N73DkrhQlQprGuYiT+qPlM=; b=DjnkKmlDegKnwuNN1g0K4lT/n2jlWWXENCfZs+6MktTzZkUA2ajoo3OQD6DT+77kKW zKxPZ0aA6L3x8hFogjMHj1J1eO8iDlZ+6I+e4bqjXNmTW3FUe5z8GvzvuNg432nUSB5u ldYv4F/gu0esQXr0OcR5JuMZn4wpIynF1gtm5OY9/ftsqeK2Wi5CRnu+UO7mpEsz+vcl 31cBD5ZD0K1cg6iZXwmFwq3q+6D8Ql3NUebYLL+LcQEst+wiUKi5cAHX6Ythcm0nBrgq 8cZDKgTlEXkdhc2Aptvdr4aa+L4OYXoDT4RPL0KkPbngVopPnIlaijGQFoqVdnALiz7P BGdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=kwFBcPJn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h21-20020a632115000000b0044fb27b64c7si5311875pgh.326.2022.11.18.17.55.30; Fri, 18 Nov 2022 17:55:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=kwFBcPJn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232198AbiKSBxr (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230472AbiKSBwq (ORCPT ); Fri, 18 Nov 2022 20:52:46 -0500 Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3130BC6061 for ; Fri, 18 Nov 2022 17:35:01 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id bq9-20020a056a000e0900b00571802a2eaaso4017832pfb.22 for ; Fri, 18 Nov 2022 17:35:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=jYDJ9XgbSK1d9HoZtCqk9N73DkrhQlQprGuYiT+qPlM=; b=kwFBcPJnGMlsB/29xUFzZq4VtMmnBsyX5OzE/1svd9gRnfU6LLzcF8t37X2NNG32t1 Bgc27WpG66hJDzm6l54eNYoWaB+FNHXVRtLV2NDHKYE4SJtlxEx3h4v1cvI217WS0o7C jEV3CYYrVQisgSWUCo5d/nroZBQrF5pKsbVhzGgnVzRopuOSiTQotgtU5JUDLjQNeu+2 WVZaskUzUJ2o8K5kS/S/9VeOhGlOFUXX9CpZcV1ZWBZ6cgVMHPlTmal6kXHv+6fIVROR AvfeWIQ4ZhSYnnykMBYHDmA0gsIuaE5lHLPpGvXR3EAFTCxxOTA0afV+Xvc9wrGpXqUf apsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jYDJ9XgbSK1d9HoZtCqk9N73DkrhQlQprGuYiT+qPlM=; b=8Jxjgd3Rp7DRAkx6WHVv1xDm7c/89xvKB5o736eyjSMp3mWbFt4FHWvjqyTXYJQU7d /vr9nDUsRSIBs56fKloH7Jni2E1Cjwvs4+QtRzr4TZl3R/idrxvk2/CjG5ipzBss2qPF 2v52qjj/aWFNDQmZemVo6Jz+c9xgKylYj8p29bKUzusVLfUw9C8SUu/LxoVGwDGyWrhV 1De8Dr1ggpOV7YJdT38fQlzH4z3cWe/LgJ1mvbt31c6IMnGDku18XPrMiOl390QbITP4 GtDna4ncjM9DtXJ8SUBES7JkmpcNH+F5ps7UVjYncULmVbgAQrNetpZkuMzKcad5MW5m /Avw== X-Gm-Message-State: ANoB5pkCADQd75O9XsNgLIWD3eQy6x+yVfplqd/LhbuH/hguYhc3xZCc NsOX2VlTH7Yoz6BkZ2yy7bBs2PU54bY= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:903:3241:b0:186:dcc3:5d1d with SMTP id ji1-20020a170903324100b00186dcc35d1dmr2180824plb.20.1668821701443; Fri, 18 Nov 2022 17:35:01 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:46 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-6-seanjc@google.com> Subject: [PATCH 5/9] perf tools: Use dedicated non-atomic clear/set bit helpers From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887687144363484?= X-GMAIL-MSGID: =?utf-8?q?1749887687144363484?= Use the dedicated non-atomic helpers for {clear,set}_bit() and their test variants, i.e. the double-underscore versions. Depsite being defined in atomic.h, and despite the kernel versions being atomic in the kernel, tools' {clear,set}_bit() helpers aren't actually atomic. Move to the double-underscore versions so that the versions that are expected to be atomic (for kernel developers) can be made atomic without affecting users that don't want atomic operations. No functional change intended. Signed-off-by: Sean Christopherson Acked-by: Namhyung Kim --- tools/perf/bench/find-bit-bench.c | 2 +- tools/perf/builtin-c2c.c | 6 +++--- tools/perf/builtin-kwork.c | 6 +++--- tools/perf/builtin-record.c | 6 +++--- tools/perf/builtin-sched.c | 2 +- tools/perf/tests/bitmap.c | 2 +- tools/perf/tests/mem2node.c | 2 +- tools/perf/util/affinity.c | 4 ++-- tools/perf/util/header.c | 8 ++++---- tools/perf/util/mmap.c | 6 +++--- tools/perf/util/pmu.c | 2 +- tools/perf/util/scripting-engines/trace-event-perl.c | 2 +- tools/perf/util/scripting-engines/trace-event-python.c | 2 +- tools/perf/util/session.c | 2 +- tools/perf/util/svghelper.c | 2 +- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/tools/perf/bench/find-bit-bench.c b/tools/perf/bench/find-bit-bench.c index 22b5cfe97023..d103c3136983 100644 --- a/tools/perf/bench/find-bit-bench.c +++ b/tools/perf/bench/find-bit-bench.c @@ -70,7 +70,7 @@ static int do_for_each_set_bit(unsigned int num_bits) bitmap_zero(to_test, num_bits); skip = num_bits / set_bits; for (i = 0; i < num_bits; i += skip) - set_bit(i, to_test); + __set_bit(i, to_test); for (i = 0; i < outer_iterations; i++) { old = accumulator; diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index a9190458d2d5..52d94c7dd836 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -230,7 +230,7 @@ static void c2c_he__set_cpu(struct c2c_hist_entry *c2c_he, "WARNING: no sample cpu value")) return; - set_bit(sample->cpu, c2c_he->cpuset); + __set_bit(sample->cpu, c2c_he->cpuset); } static void c2c_he__set_node(struct c2c_hist_entry *c2c_he, @@ -247,7 +247,7 @@ static void c2c_he__set_node(struct c2c_hist_entry *c2c_he, if (WARN_ONCE(node < 0, "WARNING: failed to find node\n")) return; - set_bit(node, c2c_he->nodeset); + __set_bit(node, c2c_he->nodeset); if (c2c_he->paddr != sample->phys_addr) { c2c_he->paddr_cnt++; @@ -2318,7 +2318,7 @@ static int setup_nodes(struct perf_session *session) continue; perf_cpu_map__for_each_cpu(cpu, idx, map) { - set_bit(cpu.cpu, set); + __set_bit(cpu.cpu, set); if (WARN_ONCE(cpu2node[cpu.cpu] != -1, "node/cpu topology bug")) return -EINVAL; diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c index fb8c63656ad8..1f63e24f704e 100644 --- a/tools/perf/builtin-kwork.c +++ b/tools/perf/builtin-kwork.c @@ -216,7 +216,7 @@ static struct kwork_atom *atom_new(struct perf_kwork *kwork, list_add_tail(&page->list, &kwork->atom_page_list); found_atom: - set_bit(i, page->bitmap); + __set_bit(i, page->bitmap); atom->time = sample->time; atom->prev = NULL; atom->page_addr = page; @@ -229,8 +229,8 @@ static void atom_free(struct kwork_atom *atom) if (atom->prev != NULL) atom_free(atom->prev); - clear_bit(atom->bit_inpage, - ((struct kwork_atom_page *)atom->page_addr)->bitmap); + __clear_bit(atom->bit_inpage, + ((struct kwork_atom_page *)atom->page_addr)->bitmap); } static void atom_del(struct kwork_atom *atom) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index e128b855ddde..2711c141c5bf 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -3555,7 +3555,7 @@ static int record__mmap_cpu_mask_init(struct mmap_cpu_mask *mask, struct perf_cp /* Return ENODEV is input cpu is greater than max cpu */ if ((unsigned long)cpu.cpu > mask->nbits) return -ENODEV; - set_bit(cpu.cpu, mask->bits); + __set_bit(cpu.cpu, mask->bits); } return 0; @@ -3627,8 +3627,8 @@ static int record__init_thread_cpu_masks(struct record *rec, struct perf_cpu_map pr_debug("nr_threads: %d\n", rec->nr_threads); for (t = 0; t < rec->nr_threads; t++) { - set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].maps.bits); - set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].affinity.bits); + __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].maps.bits); + __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].affinity.bits); if (verbose) { pr_debug("thread_masks[%d]: ", t); mmap_cpu_mask__scnprintf(&rec->thread_masks[t].maps, "maps"); diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index f93737eef07b..86e18575c9be 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -1573,7 +1573,7 @@ static int map_switch_event(struct perf_sched *sched, struct evsel *evsel, if (sched->map.comp) { cpus_nr = bitmap_weight(sched->map.comp_cpus_mask, MAX_CPUS); - if (!test_and_set_bit(this_cpu.cpu, sched->map.comp_cpus_mask)) { + if (!__test_and_set_bit(this_cpu.cpu, sched->map.comp_cpus_mask)) { sched->map.comp_cpus[cpus_nr++] = this_cpu; new_cpu = true; } diff --git a/tools/perf/tests/bitmap.c b/tools/perf/tests/bitmap.c index 4965dd666956..0173f5402a35 100644 --- a/tools/perf/tests/bitmap.c +++ b/tools/perf/tests/bitmap.c @@ -18,7 +18,7 @@ static unsigned long *get_bitmap(const char *str, int nbits) if (map && bm) { for (i = 0; i < perf_cpu_map__nr(map); i++) - set_bit(perf_cpu_map__cpu(map, i).cpu, bm); + __set_bit(perf_cpu_map__cpu(map, i).cpu, bm); } if (map) diff --git a/tools/perf/tests/mem2node.c b/tools/perf/tests/mem2node.c index 4c96829510c9..a0e88c496107 100644 --- a/tools/perf/tests/mem2node.c +++ b/tools/perf/tests/mem2node.c @@ -33,7 +33,7 @@ static unsigned long *get_bitmap(const char *str, int nbits) int i; perf_cpu_map__for_each_cpu(cpu, i, map) - set_bit(cpu.cpu, bm); + __set_bit(cpu.cpu, bm); } if (map) diff --git a/tools/perf/util/affinity.c b/tools/perf/util/affinity.c index 4ee96b3c755b..38dc4524b7e8 100644 --- a/tools/perf/util/affinity.c +++ b/tools/perf/util/affinity.c @@ -58,14 +58,14 @@ void affinity__set(struct affinity *a, int cpu) return; a->changed = true; - set_bit(cpu, a->sched_cpus); + __set_bit(cpu, a->sched_cpus); /* * We ignore errors because affinity is just an optimization. * This could happen for example with isolated CPUs or cpusets. * In this case the IPIs inside the kernel's perf API still work. */ sched_setaffinity(0, cpu_set_size, (cpu_set_t *)a->sched_cpus); - clear_bit(cpu, a->sched_cpus); + __clear_bit(cpu, a->sched_cpus); } static void __affinity__cleanup(struct affinity *a) diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 98dfaf84bd13..dc2ae397d400 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -79,12 +79,12 @@ struct perf_file_attr { void perf_header__set_feat(struct perf_header *header, int feat) { - set_bit(feat, header->adds_features); + __set_bit(feat, header->adds_features); } void perf_header__clear_feat(struct perf_header *header, int feat) { - clear_bit(feat, header->adds_features); + __clear_bit(feat, header->adds_features); } bool perf_header__has_feat(const struct perf_header *header, int feat) @@ -1358,7 +1358,7 @@ static int memory_node__read(struct memory_node *n, unsigned long idx) rewinddir(dir); for_each_memory(phys, dir) { - set_bit(phys, n->set); + __set_bit(phys, n->set); } closedir(dir); @@ -3952,7 +3952,7 @@ int perf_file_header__read(struct perf_file_header *header, if (!test_bit(HEADER_HOSTNAME, header->adds_features)) { bitmap_zero(header->adds_features, HEADER_FEAT_BITS); - set_bit(HEADER_BUILD_ID, header->adds_features); + __set_bit(HEADER_BUILD_ID, header->adds_features); } } diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index a4dff881be39..49093b21ee2d 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -111,7 +111,7 @@ static int perf_mmap__aio_bind(struct mmap *map, int idx, struct perf_cpu cpu, i pr_err("Failed to allocate node mask for mbind: error %m\n"); return -1; } - set_bit(node_index, node_mask); + __set_bit(node_index, node_mask); if (mbind(data, mmap_len, MPOL_BIND, node_mask, node_index + 1 + 1, 0)) { pr_err("Failed to bind [%p-%p] AIO buffer to node %lu: error %m\n", data, data + mmap_len, node_index); @@ -256,7 +256,7 @@ static void build_node_mask(int node, struct mmap_cpu_mask *mask) for (idx = 0; idx < nr_cpus; idx++) { cpu = perf_cpu_map__cpu(cpu_map, idx); /* map c index to online cpu index */ if (cpu__get_node(cpu) == node) - set_bit(cpu.cpu, mask->bits); + __set_bit(cpu.cpu, mask->bits); } } @@ -270,7 +270,7 @@ static int perf_mmap__setup_affinity_mask(struct mmap *map, struct mmap_params * if (mp->affinity == PERF_AFFINITY_NODE && cpu__max_node() > 1) build_node_mask(cpu__get_node(map->core.cpu), &map->affinity_mask); else if (mp->affinity == PERF_AFFINITY_CPU) - set_bit(map->core.cpu.cpu, map->affinity_mask.bits); + __set_bit(map->core.cpu.cpu, map->affinity_mask.bits); return 0; } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 03284059175f..371d8f7a3de3 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1513,7 +1513,7 @@ void perf_pmu__set_format(unsigned long *bits, long from, long to) memset(bits, 0, BITS_TO_BYTES(PERF_PMU_FORMAT_BITS)); for (b = from; b <= to; b++) - set_bit(b, bits); + __set_bit(b, bits); } void perf_pmu__del_formats(struct list_head *formats) diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c index a5d945415bbc..5b602b6d4685 100644 --- a/tools/perf/util/scripting-engines/trace-event-perl.c +++ b/tools/perf/util/scripting-engines/trace-event-perl.c @@ -365,7 +365,7 @@ static void perl_process_tracepoint(struct perf_sample *sample, sprintf(handler, "%s::%s", event->system, event->name); - if (!test_and_set_bit(event->id, events_defined)) + if (!__test_and_set_bit(event->id, events_defined)) define_event_symbols(event, handler, event->print_fmt.args); s = nsecs / NSEC_PER_SEC; diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index 1f2040f36d4e..0f229fa29163 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c @@ -933,7 +933,7 @@ static void python_process_tracepoint(struct perf_sample *sample, sprintf(handler_name, "%s__%s", event->system, event->name); - if (!test_and_set_bit(event->id, events_defined)) + if (!__test_and_set_bit(event->id, events_defined)) define_event_symbols(event, handler_name, event->print_fmt.args); handler = get_handler(handler_name); diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 1a4f10de29ff..873fd51ec1b2 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -2748,7 +2748,7 @@ int perf_session__cpu_bitmap(struct perf_session *session, goto out_delete_map; } - set_bit(cpu.cpu, cpu_bitmap); + __set_bit(cpu.cpu, cpu_bitmap); } err = 0; diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c index 1e0c731fc539..5c62d3118c41 100644 --- a/tools/perf/util/svghelper.c +++ b/tools/perf/util/svghelper.c @@ -741,7 +741,7 @@ static int str_to_bitmap(char *s, cpumask_t *b, int nr_cpus) break; } - set_bit(c.cpu, cpumask_bits(b)); + __set_bit(c.cpu, cpumask_bits(b)); } perf_cpu_map__put(m); From patchwork Sat Nov 19 01:34:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23172 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp510873wrr; Fri, 18 Nov 2022 17:55:00 -0800 (PST) X-Google-Smtp-Source: AA0mqf6dT8vvCETvzq1gx1wn1YGg6YfsNL3zt/+5k7gfaEx8geQfl2fbsR2/yPzNtfW3OKT9tw8B X-Received: by 2002:aa7:8d5a:0:b0:562:7f16:7407 with SMTP id s26-20020aa78d5a000000b005627f167407mr10689205pfe.15.1668822899953; Fri, 18 Nov 2022 17:54:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822899; cv=none; d=google.com; s=arc-20160816; b=yvz39J/Jdij4atRBGf0zgDk6EWTTAEi849+0WYkLy8sKuLaCwEBddaYEri2AmjTEtw hfWb0zUJyO4l2y16trUKOfpeARGqGnRyQsgELRYqD7iQFYqDzsOxGQ39jDTdPMI1EY/8 kP2Wop9XVkLeL39h4yzEjssHWyT2mTWzAqEugmbL43/jkL9I104tzIg8oDRUUIDj/OgZ QxYXGBAhqxqt274gPnpH2PHuTobKfzy/JtYFBQnCOxK8RnnkLuqyQRdkcJElegG2OXW3 z5K9Gv/A2POr7HTZeFRSrJ3fUK6lSrTUdydjLPkYr3V7qKPgo39S0EQxR4lM+ocLYfjj +u2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=yrZp0Djf+nyn4dNgeVKpvxujZLza+5E14t16z5zmdQE=; b=uY8+YB/37sl5C3mbPFFS6fKEDQY3dYvf2IxzTJAV93vKslsZ3iFrnjZ81SaxZ09Q3G 4+yshqdQaq7iEjEmQM8Bybz1D03xZb5y81o+fiadFeWFVT3SMJQOwmwFy0LcLDIKC8WX P/OpUxSC6FA/dXlvLw5Q+xNtfShzpgtSZOdZoQ172Eqvtc67ubmQsaL9YsjC1oxZoVMI 0566PY7gbpsbyLOIfqUggRNiiwAOCtzDAZBcZVxBAM8D9qKdSTbbIozFjqiR1BjxNNBv /eNpKxLjPqjWMFugWPuB/UflfUdaUG9QCk2RMdSIhkJ3zyiI6S7jakGKGuZsVwUsVxw0 1TvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=GfhP7WVW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f1-20020a63e301000000b00439d86cf509si5121131pgh.645.2022.11.18.17.54.47; Fri, 18 Nov 2022 17:54:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=GfhP7WVW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231171AbiKSBxj (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231455AbiKSBwq (ORCPT ); Fri, 18 Nov 2022 20:52:46 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 761BCC6070 for ; Fri, 18 Nov 2022 17:35:03 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mh8-20020a17090b4ac800b0021348e084a0so7637329pjb.8 for ; Fri, 18 Nov 2022 17:35:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=yrZp0Djf+nyn4dNgeVKpvxujZLza+5E14t16z5zmdQE=; b=GfhP7WVWA+MYs6WFdLXnOeFZv+EFlcBt9kUtLrizDVaNbbbRf+/hIQHM4mpfquOA2+ etvmV4c5QMeLYA4HWv+3abWSna8UbhMZ5gnofZtt5cMW3uCwav0Vah3EfL1P69WtEOkh lNjWaDtI3rsomxW+cDzLIRNuWP9Nh9xkOAbHBolIJxm4bC+eDDAGhq6o6YsNoSo4Nl/y HvX50Vmi36E89jR0fyzcYpwnFWzwSoQieDiEDhejLlS7jB4bv08nyZznLcB4JrzMp5Mh F/G3B24MJR49AUAJ2TeBjEAt+tZPNfxObTq+bg7i/LNG/Ck/WoibSz1qBxwFnJo3MGuf XH3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yrZp0Djf+nyn4dNgeVKpvxujZLza+5E14t16z5zmdQE=; b=FQLKpupgJNKykv5vTyY2vIIXdycaxT2DADCJZ1s4MRziFG/sgxB+7JCM1GaNhM1rTl kDB4l1/Y0LRb276LlP8/VelE0goLPQkVmMJ9NAh8nUuvB0XfuFTzqR97r2MsxAiHRcmn h+gHRKg0Vw1e7tj4b4ghvEF3JPbHJo9tGaozmgHoIczQ3Re4VfUZmt/mgyKMlQ+bIflg UOfdK2kzHYsz4m/GDFLHkdfHZyZejY513eThAYy/YSpsobzXhGI6hNOIhMHHyODYbZoI r2UqB1s1BFfd7TiVL4b5r6zIHY1Ckxi28KhykrATLEpjzm+62sjE2x2HrqwDxqGzJmix +YQQ== X-Gm-Message-State: ANoB5pkidHLFkzMsP597BxRsOrSCeJPtWLHvzVTegq2wKVUGG6Z4Ybba shgw1SBu6plTUm82AdWZkWETuaE4AFg= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:48c8:b0:213:2912:7a28 with SMTP id li8-20020a17090b48c800b0021329127a28mr10482060pjb.51.1668821702989; Fri, 18 Nov 2022 17:35:02 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:47 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-7-seanjc@google.com> Subject: [PATCH 6/9] KVM: selftests: Use non-atomic clear/set bit helpers in KVM tests From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887641191725804?= X-GMAIL-MSGID: =?utf-8?q?1749887641191725804?= Use the dedicated non-atomic helpers for {clear,set}_bit() and their test variants, i.e. the double-underscore versions. Depsite being defined in atomic.h, and despite the kernel versions being atomic in the kernel, tools' {clear,set}_bit() helpers aren't actually atomic. Move to the double-underscore versions so that the versions that are expected to be atomic (for kernel developers) can be made atomic without affecting users that don't want atomic operations. Leave the usage in ucall_free() as-is, it's the one place in tools/ that actually wants/needs atomic behavior. Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/arch_timer.c | 2 +- tools/testing/selftests/kvm/dirty_log_test.c | 34 +++++++++---------- .../selftests/kvm/x86_64/hyperv_evmcs.c | 4 +-- .../selftests/kvm/x86_64/hyperv_svm_test.c | 4 +-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testing/selftests/kvm/aarch64/arch_timer.c index f2a96779716a..26556a266021 100644 --- a/tools/testing/selftests/kvm/aarch64/arch_timer.c +++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c @@ -222,7 +222,7 @@ static void *test_vcpu_run(void *arg) /* Currently, any exit from guest is an indication of completion */ pthread_mutex_lock(&vcpu_done_map_lock); - set_bit(vcpu_idx, vcpu_done_map); + __set_bit(vcpu_idx, vcpu_done_map); pthread_mutex_unlock(&vcpu_done_map_lock); switch (get_ucall(vcpu, &uc)) { diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c index a38c4369fb8e..a75548865f6b 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -44,20 +44,20 @@ # define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) # define test_bit_le(nr, addr) \ test_bit((nr) ^ BITOP_LE_SWIZZLE, addr) -# define set_bit_le(nr, addr) \ - set_bit((nr) ^ BITOP_LE_SWIZZLE, addr) -# define clear_bit_le(nr, addr) \ - clear_bit((nr) ^ BITOP_LE_SWIZZLE, addr) -# define test_and_set_bit_le(nr, addr) \ - test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, addr) -# define test_and_clear_bit_le(nr, addr) \ - test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, addr) +# define __set_bit_le(nr, addr) \ + __set_bit((nr) ^ BITOP_LE_SWIZZLE, addr) +# define __clear_bit_le(nr, addr) \ + __clear_bit((nr) ^ BITOP_LE_SWIZZLE, addr) +# define __test_and_set_bit_le(nr, addr) \ + __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, addr) +# define __test_and_clear_bit_le(nr, addr) \ + __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, addr) #else -# define test_bit_le test_bit -# define set_bit_le set_bit -# define clear_bit_le clear_bit -# define test_and_set_bit_le test_and_set_bit -# define test_and_clear_bit_le test_and_clear_bit +# define test_bit_le test_bit +# define __set_bit_le __set_bit +# define __clear_bit_le __clear_bit +# define __test_and_set_bit_le __test_and_set_bit +# define __test_and_clear_bit_le __test_and_clear_bit #endif #define TEST_DIRTY_RING_COUNT 65536 @@ -305,7 +305,7 @@ static uint32_t dirty_ring_collect_one(struct kvm_dirty_gfn *dirty_gfns, TEST_ASSERT(cur->offset < num_pages, "Offset overflow: " "0x%llx >= 0x%x", cur->offset, num_pages); //pr_info("fetch 0x%x page %llu\n", *fetch_index, cur->offset); - set_bit_le(cur->offset, bitmap); + __set_bit_le(cur->offset, bitmap); dirty_ring_last_page = cur->offset; dirty_gfn_set_collected(cur); (*fetch_index)++; @@ -560,7 +560,7 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap) value_ptr = host_test_mem + page * host_page_size; /* If this is a special page that we were tracking... */ - if (test_and_clear_bit_le(page, host_bmap_track)) { + if (__test_and_clear_bit_le(page, host_bmap_track)) { host_track_next_count++; TEST_ASSERT(test_bit_le(page, bmap), "Page %"PRIu64" should have its dirty bit " @@ -568,7 +568,7 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap) page); } - if (test_and_clear_bit_le(page, bmap)) { + if (__test_and_clear_bit_le(page, bmap)) { bool matched; host_dirty_count++; @@ -661,7 +661,7 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap) * should report its dirtyness in the * next run */ - set_bit_le(page, host_bmap_track); + __set_bit_le(page, host_bmap_track); } } } diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c b/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c index ea58e5b436e8..ab51865c80be 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_evmcs.c @@ -142,7 +142,7 @@ void guest_code(struct vmx_pages *vmx_pages, struct hyperv_test_pages *hv_pages, /* Intercept RDMSR 0xc0000100 */ vmwrite(CPU_BASED_VM_EXEC_CONTROL, vmreadz(CPU_BASED_VM_EXEC_CONTROL) | CPU_BASED_USE_MSR_BITMAPS); - set_bit(MSR_FS_BASE & 0x1fff, vmx_pages->msr + 0x400); + __set_bit(MSR_FS_BASE & 0x1fff, vmx_pages->msr + 0x400); GUEST_ASSERT(!vmresume()); GUEST_ASSERT(vmreadz(VM_EXIT_REASON) == EXIT_REASON_MSR_READ); current_evmcs->guest_rip += 2; /* rdmsr */ @@ -154,7 +154,7 @@ void guest_code(struct vmx_pages *vmx_pages, struct hyperv_test_pages *hv_pages, current_evmcs->guest_rip += 2; /* rdmsr */ /* Intercept RDMSR 0xc0000101 without telling KVM about it */ - set_bit(MSR_GS_BASE & 0x1fff, vmx_pages->msr + 0x400); + __set_bit(MSR_GS_BASE & 0x1fff, vmx_pages->msr + 0x400); /* Make sure HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP is set */ current_evmcs->hv_clean_fields |= HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP; GUEST_ASSERT(!vmresume()); diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c b/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c index 3b3cc94ba8e4..68a7d354ea07 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c @@ -103,7 +103,7 @@ static void __attribute__((__flatten__)) guest_code(struct svm_test_data *svm, /* Intercept RDMSR 0xc0000100 */ vmcb->control.intercept |= 1ULL << INTERCEPT_MSR_PROT; - set_bit(2 * (MSR_FS_BASE & 0x1fff), svm->msr + 0x800); + __set_bit(2 * (MSR_FS_BASE & 0x1fff), svm->msr + 0x800); run_guest(vmcb, svm->vmcb_gpa); GUEST_ASSERT(vmcb->control.exit_code == SVM_EXIT_MSR); vmcb->save.rip += 2; /* rdmsr */ @@ -115,7 +115,7 @@ static void __attribute__((__flatten__)) guest_code(struct svm_test_data *svm, vmcb->save.rip += 2; /* rdmsr */ /* Intercept RDMSR 0xc0000101 without telling KVM about it */ - set_bit(2 * (MSR_GS_BASE & 0x1fff), svm->msr + 0x800); + __set_bit(2 * (MSR_GS_BASE & 0x1fff), svm->msr + 0x800); /* Make sure HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP is set */ vmcb->control.clean |= HV_VMCB_NESTED_ENLIGHTENMENTS; run_guest(vmcb, svm->vmcb_gpa); From patchwork Sat Nov 19 01:34:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23175 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511062wrr; Fri, 18 Nov 2022 17:55:41 -0800 (PST) X-Google-Smtp-Source: AA0mqf6rAsjtb60uifNkfokqwC5Qh5l9ONoTzwNgCexvyefwyxFOUlKk5li4wyTL1o9yWO9kNNoQ X-Received: by 2002:a65:6d18:0:b0:477:2abc:d4a7 with SMTP id bf24-20020a656d18000000b004772abcd4a7mr5508375pgb.306.1668822941448; Fri, 18 Nov 2022 17:55:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822941; cv=none; d=google.com; s=arc-20160816; b=qDuFkEcB9I093e34SB7IgUq2WTJIB0f4mrbhTKasFZulBonWwS1UwFfmVdM81Pa6Nj D3/iR/UT/v1nqex2C/cZvPhAjK7lAqLJ+D6tK3wdkk2ICuEHnA1LKNISTa0h335tpYQC QoyYyL/8SsPkq8uHqIDY13WNXPoor416h4Saa3uo5OowIGBxH7St6g8ivrxtob2nX/yv eBNDnCIZlw41rBFmuFwK2aWk3TW3qAWHFWta9wbzAAHUxm3ufEPqnD/5kgfuI9+5jOoF 9Hz/S+oO9PVSZB3zxbHuhu1YB7cUaEGJ5WmI6dUPcU90+XMcoecmZchHNT46Lqd/RGTh Y13w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=tD2ZlexlcX0KfmQHE0mJ5LR6ZJYKnXIf8Otqhyd2XwU=; b=PQ1e0ueuiuI2tLAsmyJP+qoMenkNHf6YvkBawuUgaNGnR6nvzZAJ9suO2OzM44OReM 1FjzX2LKJbaQhKIPzxgbwINHsv2lB+UiyIlvOyijtP2lkBHyRvGk9U69gOnMji0aIR+D lnaB3EuB3PgqUJy5+GP+hkpAJ7aX9G7tJFXSrT1V4Ct/Qj0Euh1AxUYo3G7c1TM0hl5V t1kBbBfQGIAa0+l3gX8Qu7gcOtS9jTDe2SRaNrQ6tYjscjLt5lRTilkTNWUHkAdkPm7k GTJvt9gQtWEj5retqHWElUnr6kCX6YRyWxnWeekkWw06RfaD/PFA3qU4JNq6AtP8Rl+a rBbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=MB9MhSdw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w184-20020a6230c1000000b00571d4ca44ddsi4625189pfw.333.2022.11.18.17.55.27; Fri, 18 Nov 2022 17:55:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=MB9MhSdw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231475AbiKSByF (ORCPT + 99 others); Fri, 18 Nov 2022 20:54:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232177AbiKSBwq (ORCPT ); Fri, 18 Nov 2022 20:52:46 -0500 Received: from mail-pg1-x549.google.com (mail-pg1-x549.google.com [IPv6:2607:f8b0:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 66E63C5600 for ; Fri, 18 Nov 2022 17:35:05 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id q194-20020a632acb000000b00476fda6a1d2so3944530pgq.15 for ; Fri, 18 Nov 2022 17:35:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=tD2ZlexlcX0KfmQHE0mJ5LR6ZJYKnXIf8Otqhyd2XwU=; b=MB9MhSdwME1l5f01zL+yqUNJf3WE7Wu0+w8g0OhQMoRgcdFNMiEl2Posb3nwOUuTuD +tDRTwe89VCBh4TUUBZYFwPkQegSk7I3pM8hr0OWMKYHJXHnIW5iyWHzAp1baiIvkL+M xvWAhhFwW2Yf1Gj5279lBpactxhKOCQ0IEInrZiBKCsvP5jjloBw2bf5pvCQbaP/a02E HctMjGFpVqM0zObrPX67hF9ozKCMkdYoLheziBuZphT1nqQ1b2UPE5GWbP6p2+JrfcJy 4NPgcWYf4DFDp2d5yS3j2Vy/fKpDMxIRtkJbIs7JiWbVyohddhm+ah4g1/MDsxL6xsfT dFHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tD2ZlexlcX0KfmQHE0mJ5LR6ZJYKnXIf8Otqhyd2XwU=; b=Lc8ZHx5NaoI8FHCkHJP8tph2Nel8OOIj+6vATq+eWz2uKCXYguDw2S9R90Gu+q1zeF wUEGezHHIxxNmTrsE9l8ziIzMzBalfumkiztuhET61qv5nfpV7T9TqQR7by9QxRygc/T h2UsK8rLur1Sg+HL57jLb6H3gvRMX4b3guvQza6OCExrgU8FlAb6ji9HyqXhLGjVjA1/ Fi9WtZpOTHrybN9ZRYJZDZd0Jhb05uWAsCqU5Lla6y/VNEc202+8ezR8mQt8lPBah4n4 DQTPAdDM2ys3d5HghM33Qqbqqjj5f8PTjenuAhGdsqGuI+qVfBNcCJYmT9+7lVHW9xzs 7PkA== X-Gm-Message-State: ANoB5pneFeFFLK8USzVs8bL8QSRjd5hltYhkyFFCez6nc1b86UyeD6MP PzOnqiVkM5QXqP6+zf/GmBPQaL+UYKI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:16d4:0:b0:572:6b5f:bdc2 with SMTP id 203-20020a6216d4000000b005726b5fbdc2mr10383566pfw.36.1668821704620; Fri, 18 Nov 2022 17:35:04 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:48 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-8-seanjc@google.com> Subject: [PATCH 7/9] tools: Drop conflicting non-atomic test_and_{clear,set}_bit() helpers From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887684851948822?= X-GMAIL-MSGID: =?utf-8?q?1749887684851948822?= Drop tools' non-atomic test_and_set_bit() and test_and_clear_bit() helpers now that all users are gone. The names will be claimed in the future for atomic versions. Signed-off-by: Sean Christopherson --- tools/include/linux/bitmap.h | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h index 65d0747c5205..f3566ea0f932 100644 --- a/tools/include/linux/bitmap.h +++ b/tools/include/linux/bitmap.h @@ -77,40 +77,6 @@ static inline void bitmap_or(unsigned long *dst, const unsigned long *src1, __bitmap_or(dst, src1, src2, nbits); } -/** - * test_and_set_bit - Set a bit and return its old value - * @nr: Bit to set - * @addr: Address to count from - */ -static inline int test_and_set_bit(int nr, unsigned long *addr) -{ - unsigned long mask = BIT_MASK(nr); - unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); - unsigned long old; - - old = *p; - *p = old | mask; - - return (old & mask) != 0; -} - -/** - * test_and_clear_bit - Clear a bit and return its old value - * @nr: Bit to clear - * @addr: Address to count from - */ -static inline int test_and_clear_bit(int nr, unsigned long *addr) -{ - unsigned long mask = BIT_MASK(nr); - unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); - unsigned long old; - - old = *p; - *p = old & ~mask; - - return (old & mask) != 0; -} - /** * bitmap_zalloc - Allocate bitmap * @nbits: Number of bits From patchwork Sat Nov 19 01:34:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23179 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511207wrr; Fri, 18 Nov 2022 17:56:08 -0800 (PST) X-Google-Smtp-Source: AA0mqf5YbEixJFi+PWcK0wt2uKDS/ZQa1HjjTR+/0tSezBV4Xbw4IrCyANVADRnWr9Qw53sr9Ybm X-Received: by 2002:a17:90a:fa46:b0:200:1df3:a7a9 with SMTP id dt6-20020a17090afa4600b002001df3a7a9mr16064135pjb.202.1668822967888; Fri, 18 Nov 2022 17:56:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822967; cv=none; d=google.com; s=arc-20160816; b=yj7fnABQNfWC5MRJgQ+AL7hD+U1H7a/7+QclyQxE+EGFbgoFXxaedNMBhANkZi+2Lx 6QzRw6IrWfWtUiJrrVswASCnMYfkQ93O9f+ueQV7I6CFDNzNXM/rPvxTWiLK0M5MWErf kvQS27c787DFw18Qf/18iaCBv7Qpn005P3jk4ugcZa0HqK2UorJ10r+IpOHjwSFIA3og td9MKq6aduHxFRpy94L8Exh5wgdnOIpSrcORr0e87g5ne51nDqvymCBWFujd5RvHcgPg IxhqGqLt4Z2yziaw4GTTqtCtA9bUETvOXXOeY5+oO0uVvyWPHJKrGq9vcpl0Reeov5au l3Hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=qzw3IRf6ZKe9LngiNeoq0Xsow8qMnOMLe6mysjx7GEY=; b=YxA2E3u8uwt81SWVdgjeJf8NPCGsWohDBTGHDiPDt5AS7h6a743HpvXSgWJXyF5cYT 7YDpx4rileo37bEr7jQGs4iaT4LmvOH172zo+t4717TrqIzrYCS0LNzgyLQk6n8LIp8x EFnfWOkOPGMf5qBylXRSFKLy6H8FQ51jOlCDJG1cwVcJCpsOLIb0T3Nb3DSixr91sAsf elciUcJ9b+PT+GsEUzfbtbWQbmwVej8PvsARyrH/uuWUMLgF0CpxSekLuvGVXR9mpuox D3HSoWFOsVwaunof+Cmvup7LrbYLCEuCXd982HKTPEn+xhLRKxupt2/M1BEAaq4AwbYv 4lNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=WWS9khtE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o15-20020a056a0015cf00b005615ef4cfccsi5312654pfu.185.2022.11.18.17.55.55; Fri, 18 Nov 2022 17:56:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=WWS9khtE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231912AbiKSBx6 (ORCPT + 99 others); Fri, 18 Nov 2022 20:53:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231954AbiKSBwr (ORCPT ); Fri, 18 Nov 2022 20:52:47 -0500 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA50DC4B7C for ; Fri, 18 Nov 2022 17:35:06 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id 38-20020a630b26000000b004773803dda1so1344720pgl.17 for ; Fri, 18 Nov 2022 17:35:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=qzw3IRf6ZKe9LngiNeoq0Xsow8qMnOMLe6mysjx7GEY=; b=WWS9khtEqbOMUnGtkkRMFWvzWDeu4ayjWFRQDGu0iXtOVJDbGSrq/gFRGxrZKKJlGY 5URd5JYCZgwjvnTNl+Ti4rcPQweserrYFuLxS4+F3t/CDOTOr8AEBOZfx3Z2J7idO5c3 IDrXNJR03kAw8HpcOlPfCE2+OuJJLGuPU94IZVw40YREPb5/vCeSYvPEvia9tHwTfU1C 3eBObmpTzOi0i9sxvSozcBhsXpCtw6mLFCvyTAoFKa+x82RFPn06o73N3tlHftgOtE6+ Xi5hjcYeXjmsl23MApz3bUysNrg7rYzS/9ickjvQa7GqFIN4rdzGd0NiV/GRPNAISoz2 56jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qzw3IRf6ZKe9LngiNeoq0Xsow8qMnOMLe6mysjx7GEY=; b=qIjWDLSCa4FsFnwvGs2xMDARAycqYa/anhWlFVL1lmceOKDitNK4prZQ0/wl+wYXKW 21kZe0uwa3gYgqlr+uzs7vT2NETdrWhGMgKuAYEDgCEk2KD8A34HVn7chiyWJEAkdltc Ulig5W5Rfc53YAeaFSh8yZ8zVK3I4RkUk31uTH+oYno6c2H6xdeGvuVjTjsroABqcE5f dNtXNqMTUKB4FUP0lPUNLY5nKP+pI7d8/eQca8Mce60tJ9kkBs+Ackg4VaH6jA7QuiAF xI/WyHlwTWonTWICOPbGFdA30iCCCaWQGQzFQb27+jrJ4nF8HtYiaywvLGOwB1usWNmC 61xg== X-Gm-Message-State: ANoB5pldI7YOT151b9u0kIp7cCwKtxgDTAiXh/lfehkWr+8DB7RCdsaC 0+I3PhgqDgCuAy1gdyA5WfMs5RNETQs= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:ce09:0:b0:470:537b:9d23 with SMTP id y9-20020a63ce09000000b00470537b9d23mr8701437pgf.185.1668821706323; Fri, 18 Nov 2022 17:35:06 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:49 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-9-seanjc@google.com> Subject: [PATCH 8/9] tools: Drop "atomic_" prefix from atomic test_and_set_bit() From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887712818868530?= X-GMAIL-MSGID: =?utf-8?q?1749887712818868530?= Drop the "atomic_" prefix from tools' atomic_test_and_set_bit() to match the kernel nomenclature where test_and_set_bit() is atomic, and __test_and_set_bit() provides the non-atomic variant. Signed-off-by: Sean Christopherson --- tools/arch/x86/include/asm/atomic.h | 3 +-- tools/include/asm-generic/atomic-gcc.h | 2 +- tools/testing/selftests/kvm/lib/ucall_common.c | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/arch/x86/include/asm/atomic.h b/tools/arch/x86/include/asm/atomic.h index 01cc27ec4520..a42733af7d51 100644 --- a/tools/arch/x86/include/asm/atomic.h +++ b/tools/arch/x86/include/asm/atomic.h @@ -71,10 +71,9 @@ static __always_inline int atomic_cmpxchg(atomic_t *v, int old, int new) return cmpxchg(&v->counter, old, new); } -static inline int atomic_test_and_set_bit(long nr, unsigned long *addr) +static inline int test_and_set_bit(long nr, unsigned long *addr) { GEN_BINARY_RMWcc(LOCK_PREFIX __ASM_SIZE(bts), *addr, "Ir", nr, "%0", "c"); - } #endif /* _TOOLS_LINUX_ASM_X86_ATOMIC_H */ diff --git a/tools/include/asm-generic/atomic-gcc.h b/tools/include/asm-generic/atomic-gcc.h index 6daa68bf5b9e..37ef522aaac4 100644 --- a/tools/include/asm-generic/atomic-gcc.h +++ b/tools/include/asm-generic/atomic-gcc.h @@ -70,7 +70,7 @@ static inline int atomic_cmpxchg(atomic_t *v, int oldval, int newval) return cmpxchg(&(v)->counter, oldval, newval); } -static inline int atomic_test_and_set_bit(long nr, unsigned long *addr) +static inline int test_and_set_bit(long nr, unsigned long *addr) { unsigned long mask = BIT_MASK(nr); long old; diff --git a/tools/testing/selftests/kvm/lib/ucall_common.c b/tools/testing/selftests/kvm/lib/ucall_common.c index fcae96461e46..820ce6c82829 100644 --- a/tools/testing/selftests/kvm/lib/ucall_common.c +++ b/tools/testing/selftests/kvm/lib/ucall_common.c @@ -44,7 +44,7 @@ static struct ucall *ucall_alloc(void) GUEST_ASSERT(ucall_pool); for (i = 0; i < KVM_MAX_VCPUS; ++i) { - if (!atomic_test_and_set_bit(i, ucall_pool->in_use)) { + if (!test_and_set_bit(i, ucall_pool->in_use)) { uc = &ucall_pool->ucalls[i]; memset(uc->args, 0, sizeof(uc->args)); return uc; From patchwork Sat Nov 19 01:34:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 23178 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp511144wrr; Fri, 18 Nov 2022 17:56:00 -0800 (PST) X-Google-Smtp-Source: AA0mqf5B/+1xVaWyjX+t/YEr34xXXFzxkwIaQPlVSOsUQnv3EjA4zbwNyWG/1SPK0n+3C+KjIiB4 X-Received: by 2002:a17:902:ab89:b0:185:3659:1ce9 with SMTP id f9-20020a170902ab8900b0018536591ce9mr2118543plr.26.1668822960671; Fri, 18 Nov 2022 17:56:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668822960; cv=none; d=google.com; s=arc-20160816; b=xmXqXYGYz2pqEJPSfU2IVaP2uTL8vXZAfMfjDYmQ4DLOm2qwHHleczUGzEcQk+x2TR /A83fxtRwbd2r2VsXJoD65BG8/hdSK5j3A6JhW8PvLFUbtbBAoOmzsGgr5/DJOC3OvfT SSZdWfDUthLO5IDUwVwK7JjvFnbJhkTOf3j2mTp9g/mO5e76rlIc2lG619yvzRDty98b vnxYz0Q/TfpzdHkW3JhCUJxCO090i4FVivqlL1A0NkG42dCgJCCm7iImuY0okG/HTq42 gKf9FsU4HQPz4s0lFTJht6TRNtjr4Nmn9fm1z3xO1IiRNNWCbvE9CY6NBIYXDJwnDLy3 Uggg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=M4XtlcLSA1eOcscbEJGlMDnS4DurFp6ZmUN31qIh/uk=; b=l6TgAeqaAKhH8WBTW78Sh8dQrOp/5Z0hvFhDnDaVc5OvZfTJt05xoEybFJwdQJq4eX Zd6X+kjehr3GdHydp767gMrNpJmCxuuPKwhahVJrSwzOM9g4T0wfdQ9BhVEGIKOV4LUr IBZJtmS4DthHa+MGUpPrGNnIstxVlCSQqecOIGqLtei1aJAz0q2sCsvwpjgB8JsqMx9q EWQK69Obs5xovEISeVp6L6ZGUrLb1cX0usSAVpEb5rfVo776sD3KWHBh7/RNwgB2DagT wpManVYZ1TukfxB3vSol9MFmGBpHqrYzSIPSgKZiR+f4aA78TsLVeBI9g0VLg79Gp7IQ YMlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="dJgWIzI/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e1-20020a636901000000b004774f2a1d6csi8518pgc.609.2022.11.18.17.55.47; Fri, 18 Nov 2022 17:56:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="dJgWIzI/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231683AbiKSByM (ORCPT + 99 others); Fri, 18 Nov 2022 20:54:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232536AbiKSBwu (ORCPT ); Fri, 18 Nov 2022 20:52:50 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8934C4C07 for ; Fri, 18 Nov 2022 17:35:08 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-39562b26a76so32591307b3.15 for ; Fri, 18 Nov 2022 17:35:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=M4XtlcLSA1eOcscbEJGlMDnS4DurFp6ZmUN31qIh/uk=; b=dJgWIzI/def4Yf3bVRfXEYvj2NK+TZzjCq+SwSBO5Xayoxkc3jQ6teJXcUkMGSOzEx 0tVqu35wvxz/ZWi5L6uEH/ZJ4GoMiPXAgBNrepSJ50Kv1mX80m/q7WUCeQnvl6r0HFqo zQpUvuJmapnNm9uUFeoLypIHsbw+YmUDECSnc/6vGR3pHqbLfO8qalr8m2Xz6QFFaP7p I7a8h6+T6mtseU/p3ik635y6rZmkPCITjDjiaGVxHy3bAZOEQ7gOETU6HzJ3zj1n5wqA kFhoyVsi/Mt2oTc5ssyLuq6XczcFlEaPqeQiKqx08W5lZ87mYk65ljyaFvl1b3iFyKlw RfGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=M4XtlcLSA1eOcscbEJGlMDnS4DurFp6ZmUN31qIh/uk=; b=VNRSWepo8dnyvl5FvvycLzkzvRGDkBSFNv64HPo7VoR6TlxTS3dK3WZI6DX+vWd0aP oWKVfMAFshPkmAw7PM0KxLG9T+hL9HvdDPyaJNz9Mub1JWgDU7JNod9jvb8cVzjpxu4s JY7aWw/3egT1qzHsqEFNiIqOt8h5TGbUUX9DklYVnYJFkTLlXnOdKr7jTUfnJCSe7Slx IiwZQWWJlmwImzn7z/vxqtvhZWwYkl1ydOoow7QuwZlpC/AUhGjrBhNNSB3BzdN2BPcJ 9sRaHWVzaog3Wi1ELOnyVTMSO3XB+bXoqRvqxOkpzEhCtgweeIkFEsdHvQDQr1e11klz twPg== X-Gm-Message-State: ANoB5pmoCNHf+N2PcGdX4OTgt+4L9mpFzGpkJm4e3+vMaWOQh9OuWvvl uaSYnAzAALHZbKkRbs56UPmJm2k6cP0= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a0d:e8cd:0:b0:38c:e62a:bf59 with SMTP id r196-20020a0de8cd000000b0038ce62abf59mr8926692ywe.244.1668821707984; Fri, 18 Nov 2022 17:35:07 -0800 (PST) Reply-To: Sean Christopherson Date: Sat, 19 Nov 2022 01:34:50 +0000 In-Reply-To: <20221119013450.2643007-1-seanjc@google.com> Mime-Version: 1.0 References: <20221119013450.2643007-1-seanjc@google.com> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog Message-ID: <20221119013450.2643007-10-seanjc@google.com> Subject: [PATCH 9/9] tools: KVM: selftests: Convert clear/set_bit() to actual atomics From: Sean Christopherson To: Yury Norov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Marc Zyngier , Paolo Bonzini Cc: Andy Shevchenko , Rasmus Villemoes , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , James Morse , Alexandru Elisei , Suzuki K Poulose , Oliver Upton , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, Sean Christopherson X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749887704974659258?= X-GMAIL-MSGID: =?utf-8?q?1749887704974659258?= Convert {clear,set}_bit() to atomics as KVM's ucall implementation relies on clear_bit() being atomic, they are defined in atomic.h, and the same helpers in the kernel proper are atomic. KVM's ucall infrastructure is the only user of clear_bit() in tools/, and there are no true set_bit() users. tools/testing/nvdimm/ does make heavy use of set_bit(), but that code builds into a kernel module of sorts, i.e. pulls in all of the kernel's header and so is already getting the kernel's atomic set_bit(). Signed-off-by: Sean Christopherson --- tools/arch/x86/include/asm/atomic.h | 5 +++++ tools/include/asm-generic/atomic-gcc.h | 11 +++++++++++ tools/include/asm-generic/bitops/atomic.h | 15 ++++++--------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/tools/arch/x86/include/asm/atomic.h b/tools/arch/x86/include/asm/atomic.h index a42733af7d51..365cf182df12 100644 --- a/tools/arch/x86/include/asm/atomic.h +++ b/tools/arch/x86/include/asm/atomic.h @@ -76,4 +76,9 @@ static inline int test_and_set_bit(long nr, unsigned long *addr) GEN_BINARY_RMWcc(LOCK_PREFIX __ASM_SIZE(bts), *addr, "Ir", nr, "%0", "c"); } +static inline int test_and_clear_bit(long nr, unsigned long *addr) +{ + GEN_BINARY_RMWcc(LOCK_PREFIX __ASM_SIZE(btc), *addr, "Ir", nr, "%0", "c"); +} + #endif /* _TOOLS_LINUX_ASM_X86_ATOMIC_H */ diff --git a/tools/include/asm-generic/atomic-gcc.h b/tools/include/asm-generic/atomic-gcc.h index 37ef522aaac4..9b3c528bab92 100644 --- a/tools/include/asm-generic/atomic-gcc.h +++ b/tools/include/asm-generic/atomic-gcc.h @@ -81,4 +81,15 @@ static inline int test_and_set_bit(long nr, unsigned long *addr) return !!(old & mask); } +static inline int test_and_clear_bit(long nr, unsigned long *addr) +{ + unsigned long mask = BIT_MASK(nr); + long old; + + addr += BIT_WORD(nr); + + old = __sync_fetch_and_and(addr, ~mask); + return !!(old & mask); +} + #endif /* __TOOLS_ASM_GENERIC_ATOMIC_H */ diff --git a/tools/include/asm-generic/bitops/atomic.h b/tools/include/asm-generic/bitops/atomic.h index f64b049d236c..ab37a221b41a 100644 --- a/tools/include/asm-generic/bitops/atomic.h +++ b/tools/include/asm-generic/bitops/atomic.h @@ -5,14 +5,11 @@ #include #include -static inline void set_bit(unsigned long nr, unsigned long *addr) -{ - addr[nr / __BITS_PER_LONG] |= 1UL << (nr % __BITS_PER_LONG); -} - -static inline void clear_bit(unsigned long nr, unsigned long *addr) -{ - addr[nr / __BITS_PER_LONG] &= ~(1UL << (nr % __BITS_PER_LONG)); -} +/* + * Just alias the test versions, all of the compiler built-in atomics "fetch", + * and optimizing compile-time constants on x86 isn't worth the complexity. + */ +#define set_bit test_and_set_bit +#define clear_bit test_and_clear_bit #endif /* _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_ */