From nobody Sun Feb 8 20:17:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=cloud.com ARC-Seal: i=1; a=rsa-sha256; t=1753456056; cv=none; d=zohomail.com; s=zohoarc; b=MPzGL0Pp1WjQhaJdB/3fcoT2Mv+Bn1RDj2mpeTgmnPSAoGJgR4bNX3vLo4EL9X4C4O2u6Q5PrDW2HDx9R4a5b5pduZHsm1Grb6KmMKB4ANM8cDxx5uaEKYVMxZ28ODa0ffgIijcTwEzhcY1osPLOPO6RGE/cHVewWehYuGnbmxA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753456056; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GFPAOu/9gkzbl/oCx0D05uHVhcWBMmy98vsflQBFGec=; b=jIyjIMGpjmQIp9MTEe4G6FcuWtwrO1/i9I2JsQEkY1vq2R0+3bj0GJxVjb0bfOPRQTa34sEVJ91xKRT90//Ta4osWskI29IyqvEebVfa4rPRaAcwCRDKCs8gHn4qeDRfJn0DOa+PRMGsjvEQ5HCMMnpVBsTnFpZT4tJ+RdOr5CI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1753456056159671.4517281090895; Fri, 25 Jul 2025 08:07:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1058061.1425763 (Exim 4.92) (envelope-from ) id 1ufK11-0003KO-BI; Fri, 25 Jul 2025 15:07:19 +0000 Received: by outflank-mailman (output) from mailman id 1058061.1425763; Fri, 25 Jul 2025 15:07:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ufK11-0003Jn-2k; Fri, 25 Jul 2025 15:07:19 +0000 Received: by outflank-mailman (input) for mailman id 1058061; Fri, 25 Jul 2025 15:07:17 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ufK0z-0002MQ-Gq for xen-devel@lists.xenproject.org; Fri, 25 Jul 2025 15:07:17 +0000 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [2a00:1450:4864:20::531]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 0c581299-6969-11f0-b895-0df219b8e170; Fri, 25 Jul 2025 17:07:15 +0200 (CEST) Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-60700a745e5so4743685a12.3 for ; Fri, 25 Jul 2025 08:07:14 -0700 (PDT) Received: from localhost.localdomain ([185.25.67.249]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-614cd0f730fsm2194208a12.22.2025.07.25.08.07.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Jul 2025 08:07:14 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 0c581299-6969-11f0-b895-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloud.com; s=cloud; t=1753456034; x=1754060834; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GFPAOu/9gkzbl/oCx0D05uHVhcWBMmy98vsflQBFGec=; b=kYlYxTjZYvCb4ZEXAZ+3PgmO7Bl2F5SQ672e7VcS+sIR7HvKQaI+dye5Y0HgMf/AVm fxQcWYRuHAhnMJVZO9BExGu6b6bOJjMx9t2ve/TYv1oujPWIfnNYFEZOY5yZNQ9rdD27 BQv+yWIPOJ9PI6ip6leNLs0TCIyznXH4YgH5k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753456034; x=1754060834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GFPAOu/9gkzbl/oCx0D05uHVhcWBMmy98vsflQBFGec=; b=m3dxguyyJexW4YmnOdzVf0UI3d+40SX8dwKGImnGtEq4kPyMYupg5i8ONYuMtcNKdN RQZKjTW86XIv6D/1lJ1gMVJNkyosW8yvaNGxxX3ayf+g/jgJF4RsvEnU1s1z1AvMtF58 w3tTvn4RT0u4C3kF9GPfiMKAoh/A43ZzqUqN3ebjSbfRjIuFkcQi1lF1E3OC+RBonH7g zDni4997qme4EOBISPjk8+fFD6oP8GOhj8glWS9S3nPO7Yv1IylTHtriGIhk4IgzyuPR CIj6yEBaDbzJBCzBvh+ZjGtHzV+MxFA/UEe0qxuKwAFtMubVt79ZO6CTVmlzombWJ/Uk sLAQ== X-Gm-Message-State: AOJu0YxKn9AbD8uAa9MwncruXXKPs1dO4BFsxAnWSAWEsjKlmdsoqC22 OcUneLM+78QtoZbULcilKGwCYLkbtEkrTU6zDlGQmWl0f8RfggkdyM/8bYv39rxxSFdrXXumcAd DdeSylBU= X-Gm-Gg: ASbGncv+phzWxqFc1sqZR3UjfPmL2l6ksQ0AbxfQssaTz6bcsZV7yKuRpBasTlRngF2 akeCo1aiINqq9rut7EUnsO1EZdz3qfiPrhXA+7zkreSYEjgiRmQnKzX8c2Txdmiai7FqtMIN66D 4NIgO4lsqlwG6Nz58r12e92sW9iHHUnC8aZTFUJBnAByXTev3hPbt0ljRdFTNTOzLR9jSC2Iz7g k/Z6hKeu+OhyaDus9Mphl6cXzP+aufJ3jIsBtC9LgYQC3sS8JJUMV0obGtFhUjQmpvmxU+Ny7Ov TAJ/XOY0b33CXsb/9fAtj0X3cD4LSINW5sFNqCEa/vyqwWcJi8O7Q0YPMf3Ac0QBtxm7gKXDgpX j8wFluGtTdkH1OVGQ1C9gnb4H5YJHI7ZNm1Y+ X-Google-Smtp-Source: AGHT+IHIN7LUuu8VUc3HA+w2Xu/S+7Lq1b3PTONMxBIWuDYb2JySYlwwQG5r9CKPl54iNuqPXblNvw== X-Received: by 2002:a05:6402:30a7:b0:60c:39e4:93e6 with SMTP id 4fb4d7f45d1cf-614f1dd3d16mr1512251a12.24.1753456034338; Fri, 25 Jul 2025 08:07:14 -0700 (PDT) From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= To: xen-devel@lists.xenproject.org Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , andriy.sultanov@vates.tech, boris.ostrovsky@oracle.com Subject: [RFC PATCH v1 04/10] vpmu.c: factor out register conversion Date: Fri, 25 Jul 2025 16:06:40 +0100 Message-ID: X-Mailer: git-send-email 2.47.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @cloud.com) X-ZM-MESSAGEID: 1753456058498116600 A followup commit will use this to store the guest's regs when domid =3D=3D DOMID_XEN. To avoid code duplication move the code into a function. No functional change. Signed-off-by: Edwin T=C3=B6r=C3=B6k --- xen/arch/x86/cpu/vpmu.c | 49 ++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index 7be79c2d00..713311a1ac 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -160,6 +160,31 @@ static inline struct vcpu *choose_hwdom_vcpu(void) return hardware_domain->vcpu[idx]; } =20 +static inline void vpmu_convert_regs(struct xen_pmu_regs *r, uint64_t *fla= gs, + struct vcpu *sampled, + const struct cpu_user_regs *cur_regs)= { + r->ip =3D cur_regs->rip; + r->sp =3D cur_regs->rsp; + r->flags =3D cur_regs->rflags; + + if (!is_hvm_vcpu(sampled)) { + r->ss =3D cur_regs->ss; + r->cs =3D cur_regs->cs; + if (!(sampled->arch.flags & TF_kernel_mode)) + *flags |=3D PMU_SAMPLE_USER; + } else { + struct segment_register seg; + + hvm_get_segment_register(sampled, x86_seg_cs, &seg); + r->cs =3D seg.sel; + hvm_get_segment_register(sampled, x86_seg_ss, &seg); + r->ss =3D seg.sel; + r->cpl =3D seg.dpl; + if (!(sampled->arch.hvm.guest_cr[0] & X86_CR0_PE)) + *flags |=3D PMU_SAMPLE_REAL; + } +} + void vpmu_do_interrupt(void) { struct vcpu *sampled =3D current, *sampling; @@ -255,29 +280,7 @@ void vpmu_do_interrupt(void) else cur_regs =3D guest_cpu_user_regs(); =20 - r->ip =3D cur_regs->rip; - r->sp =3D cur_regs->rsp; - r->flags =3D cur_regs->rflags; - - if ( !is_hvm_vcpu(sampled) ) - { - r->ss =3D cur_regs->ss; - r->cs =3D cur_regs->cs; - if ( !(sampled->arch.flags & TF_kernel_mode) ) - *flags |=3D PMU_SAMPLE_USER; - } - else - { - struct segment_register seg; - - hvm_get_segment_register(sampled, x86_seg_cs, &seg); - r->cs =3D seg.sel; - hvm_get_segment_register(sampled, x86_seg_ss, &seg); - r->ss =3D seg.sel; - r->cpl =3D seg.dpl; - if ( !(sampled->arch.hvm.guest_cr[0] & X86_CR0_PE) ) - *flags |=3D PMU_SAMPLE_REAL; - } + vpmu_convert_regs(r, flags, sampled, cur_regs); } =20 vpmu->xenpmu_data->domain_id =3D domid; --=20 2.47.1