From patchwork Thu Jan 11 10:11:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Guo X-Patchwork-Id: 858988 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Qwyr940p"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zHMBb5zK9z9t5x for ; Thu, 11 Jan 2018 21:12:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933156AbeAKKMi (ORCPT ); Thu, 11 Jan 2018 05:12:38 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:39744 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933269AbeAKKMh (ORCPT ); Thu, 11 Jan 2018 05:12:37 -0500 Received: by mail-pf0-f193.google.com with SMTP id e11so1305980pff.6; Thu, 11 Jan 2018 02:12:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FpLWgFTmNyWVVKOS1nRTEKwWwq+QkxXeTu/YbSGvglA=; b=Qwyr940pgAA5GjcAVsYcXxmOmYjOPIWt2ZsKYag0K3yB7be+Kvz2R9208qawOdHg22 fdO6b/5L71q851WUNMXBTUfzM3wOpvm9kMiIxFqOJ9Zb6xf9T0XiXab5stnq4H/0XCbb Caqf+yeP/WaTM6YTtAb2Fi1+RPcso/2j6BSg2zycSdsEgbGk7Koxzx1B2W+8X21pYr79 LNKKPw/bdDcknOCFVLgi1NUwAEDImDEvXiTzh/7mKhxDAcSF/97HmVunQrY8cMlhlMYl hlCIEPGgSF4FdCKE1IsbULF1Y5hMunZuFB+seuIVoLvN8sznN5VX0ALJ7WGqIKkATdK9 WOWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FpLWgFTmNyWVVKOS1nRTEKwWwq+QkxXeTu/YbSGvglA=; b=IeC5jVBH6+MuDEzc4+SD+N4CnaSRMTL0VShjrC85VisH3+9CGkIRJzT9TcQubl45jV INrBndHhxbah56qgIaj5JbxIw/LQoLgrTDsg8DEBYtMAUMfRXEhO+/Q4gyxwdNXzJNnD B7ApBzu/cyCMjTVSreb1DXOkyAt8Ge7IrHXdA6gRtclXR9tFRbOst72VzwXS9l+gE/Pp fPCvzFs3nUlxL560pzLJ02R+Yx7XCUHAb4lGxB7b7eTL71JnHmGc7zlVOt78a+78UeJl xh/aBMv2qhXamO+edv+k3jwuajBEOaNBx1q2kSSem+eeWxqKa78/ajVJ6KmfcSlwAET6 mKXQ== X-Gm-Message-State: AKwxyteuR8OS3Dp5rfGRTyEMm2bqXOZlXytOZy5l7+IgD4rLUnVVZGb3 h+noU+ew7cenOErslOHiQEo= X-Google-Smtp-Source: ACJfBovoXrdkJ0udmgnuWOApZWekXfhlELxVJgA2ivm+Ek0ZpQpWVEJEWWJDbpq7X93vKJWdKMWY8w== X-Received: by 10.159.251.136 with SMTP id m8mr1325083pls.432.1515665557057; Thu, 11 Jan 2018 02:12:37 -0800 (PST) Received: from simonLocalRHEL7.cn.ibm.com ([112.73.0.88]) by smtp.gmail.com with ESMTPSA id m11sm34336122pgt.56.2018.01.11.02.12.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Jan 2018 02:12:36 -0800 (PST) From: wei.guo.simon@gmail.com To: linuxppc-dev@lists.ozlabs.org Cc: Paul Mackerras , kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, Simon Guo Subject: [PATCH 13/26] KVM: PPC: Book3S PR: adds new kvmppc_copyto_vcpu_tm/kvmppc_copyfrom_vcpu_tm API for PR KVM. Date: Thu, 11 Jan 2018 18:11:26 +0800 Message-Id: <1515665499-31710-14-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1515665499-31710-1-git-send-email-wei.guo.simon@gmail.com> References: <1515665499-31710-1-git-send-email-wei.guo.simon@gmail.com> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org From: Simon Guo This patch adds 2 new APIs: kvmppc_copyto_vcpu_tm() and kvmppc_copyfrom_vcpu_tm(). These 2 APIs will be used to copy from/to TM data between VCPU_TM/VCPU area. PR KVM will use these APIs for treclaim. or trchkpt. emulation. Signed-off-by: Simon Guo Reviewed-by: Paul Mackerras --- arch/powerpc/kvm/book3s_emulate.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c index 2eb457b..e096d01 100644 --- a/arch/powerpc/kvm/book3s_emulate.c +++ b/arch/powerpc/kvm/book3s_emulate.c @@ -87,6 +87,45 @@ static bool spr_allowed(struct kvm_vcpu *vcpu, enum priv_level level) return true; } +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM +void kvmppc_copyto_vcpu_tm(struct kvm_vcpu *vcpu) +{ + memcpy(&vcpu->arch.gpr_tm[0], &vcpu->arch.gpr[0], + sizeof(vcpu->arch.gpr_tm)); + memcpy(&vcpu->arch.fp_tm, &vcpu->arch.fp, + sizeof(struct thread_fp_state)); + memcpy(&vcpu->arch.vr_tm, &vcpu->arch.vr, + sizeof(struct thread_vr_state)); + vcpu->arch.ppr_tm = vcpu->arch.ppr; + vcpu->arch.dscr_tm = vcpu->arch.dscr; + vcpu->arch.amr_tm = vcpu->arch.amr; + vcpu->arch.ctr_tm = vcpu->arch.ctr; + vcpu->arch.tar_tm = vcpu->arch.tar; + vcpu->arch.lr_tm = vcpu->arch.lr; + vcpu->arch.cr_tm = vcpu->arch.cr; + vcpu->arch.vrsave_tm = vcpu->arch.vrsave; +} + +void kvmppc_copyfrom_vcpu_tm(struct kvm_vcpu *vcpu) +{ + memcpy(&vcpu->arch.gpr[0], &vcpu->arch.gpr_tm[0], + sizeof(vcpu->arch.gpr)); + memcpy(&vcpu->arch.fp, &vcpu->arch.fp_tm, + sizeof(struct thread_fp_state)); + memcpy(&vcpu->arch.vr, &vcpu->arch.vr_tm, + sizeof(struct thread_vr_state)); + vcpu->arch.ppr = vcpu->arch.ppr_tm; + vcpu->arch.dscr = vcpu->arch.dscr_tm; + vcpu->arch.amr = vcpu->arch.amr_tm; + vcpu->arch.ctr = vcpu->arch.ctr_tm; + vcpu->arch.tar = vcpu->arch.tar_tm; + vcpu->arch.lr = vcpu->arch.lr_tm; + vcpu->arch.cr = vcpu->arch.cr_tm; + vcpu->arch.vrsave = vcpu->arch.vrsave_tm; +} + +#endif + int kvmppc_core_emulate_op_pr(struct kvm_run *run, struct kvm_vcpu *vcpu, unsigned int inst, int *advance) {