From patchwork Mon May 7 06:20:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: simon X-Patchwork-Id: 10383245 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D60E560353 for ; Mon, 7 May 2018 06:20:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C516B2880C for ; Mon, 7 May 2018 06:20:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B9B21289C4; Mon, 7 May 2018 06:20:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 29E952880C for ; Mon, 7 May 2018 06:20:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751954AbeEGGUv (ORCPT ); Mon, 7 May 2018 02:20:51 -0400 Received: from mail-pf0-f196.google.com ([209.85.192.196]:45259 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751941AbeEGGUr (ORCPT ); Mon, 7 May 2018 02:20:47 -0400 Received: by mail-pf0-f196.google.com with SMTP id c10so22019324pfi.12; Sun, 06 May 2018 23:20:47 -0700 (PDT) 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=TEazah0JiQAj9zKSDat85T+22Pd8eG/o7JvBvhQkGrs=; b=FL42lktbQtWXjv9/sUJipiyOsFZs1iW6+DxHQ8WQw2h6kg/7oWRgkEaZbAUMl20Oxq rw9se4lh+3E6I8GNNTWHvubTtyUFB7gRb5DMmu+dSAey84FiqOKaTarftPC2STGzlNrd q/hP5Bi1iAX56gWg2vPqEACQuMPKTLVaZ55IC4gwcz90gteKrmHjkEuOzUx1GbqKw9ku ax43IHfhpi3in+6SP66GqBDjSfcuf1+IFmK/zAzKOxO8aAiAtZ480YEGjW/gs2rE6zFC ES+LOcVEqt3kifjXKT2Kt+gcPyEHZ1LDQFtc4sVHqX0ZyDvXo+1e9+vUBiCTWN/YJt2Z W0dQ== 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=TEazah0JiQAj9zKSDat85T+22Pd8eG/o7JvBvhQkGrs=; b=KgZRkpPhAAURAiXQl/zXJ2kQswvyyK1S6QCu0gLouOGZwQc3KIeqPA/fpYIZsf6H+F it7CORF6pOla7HwuhxbF+wSMrOf8quz5lgq7wIb+TXAN5IHewDCPJjApRR2dECMRcJfx czhS4Ia6+aLirgCHBHpCkk1ESsSRP3SQunXOJdRAmqbMQBGrrcY0TUXpZCYxL0NYTvlV EvYj/6gN0yHObUoB4Vjfuvf07r4oXifEZeHF8iHMmoGROGjaHQZhbw/r5YyCdH/6by23 5xu3A5jUsdvjp83ZgEa1wPcPd3Cbqi6xl8im+InG7AB7pEJ9pKhaaBfDNsFXU84dPONe nsuQ== X-Gm-Message-State: ALQs6tBxjMwpmpBS8dO++zhIsTBYDV+YR0T5d34U0u12X5sXxfZ8nEx0 3ceH2VSHZF+VG2iMOG8Z5Goilw== X-Google-Smtp-Source: AB8JxZoqOAXpkDQWoDy3FygzNVa4EIj0cJ4ykCBp9eEuvnadNPYZNt5/yTwCXiGo6dD743RIPtqZGw== X-Received: by 10.98.153.15 with SMTP id d15mr35593193pfe.115.1525674043110; Sun, 06 May 2018 23:20:43 -0700 (PDT) Received: from simonLocalRHEL7.cn.ibm.com ([112.73.0.88]) by smtp.gmail.com with ESMTPSA id z25sm10459544pfi.171.2018.05.06.23.20.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 06 May 2018 23:20:42 -0700 (PDT) From: wei.guo.simon@gmail.com To: kvm-ppc@vger.kernel.org Cc: Paul Mackerras , kvm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Simon Guo Subject: [PATCH v2 04/10] KVM: PPC: add KVMPPC_VSX_COPY_WORD_LOAD_DUMP type support for mmio emulation Date: Mon, 7 May 2018 14:20:10 +0800 Message-Id: <1525674016-6703-5-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1525674016-6703-1-git-send-email-wei.guo.simon@gmail.com> References: <1525674016-6703-1-git-send-email-wei.guo.simon@gmail.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Simon Guo Some VSX instruction like lxvwsx will splat word into VSR. This patch adds VSX copy type KVMPPC_VSX_COPY_WORD_LOAD_DUMP to support this. Signed-off-by: Simon Guo Reviewed-by: Paul Mackerras --- arch/powerpc/include/asm/kvm_host.h | 1 + arch/powerpc/kvm/powerpc.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h index 2d87768..3fb5e8d 100644 --- a/arch/powerpc/include/asm/kvm_host.h +++ b/arch/powerpc/include/asm/kvm_host.h @@ -454,6 +454,7 @@ struct mmio_hpte_cache { #define KVMPPC_VSX_COPY_WORD 1 #define KVMPPC_VSX_COPY_DWORD 2 #define KVMPPC_VSX_COPY_DWORD_LOAD_DUMP 3 +#define KVMPPC_VSX_COPY_WORD_LOAD_DUMP 4 struct openpic; diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index bef27b1..45daf3b 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c @@ -907,6 +907,26 @@ static inline void kvmppc_set_vsr_dword_dump(struct kvm_vcpu *vcpu, } } +static inline void kvmppc_set_vsr_word_dump(struct kvm_vcpu *vcpu, + u32 gpr) +{ + union kvmppc_one_reg val; + int index = vcpu->arch.io_gpr & KVM_MMIO_REG_MASK; + + if (vcpu->arch.mmio_vsx_tx_sx_enabled) { + val.vsx32val[0] = gpr; + val.vsx32val[1] = gpr; + val.vsx32val[2] = gpr; + val.vsx32val[3] = gpr; + VCPU_VSX_VR(vcpu, index) = val.vval; + } else { + val.vsx32val[0] = gpr; + val.vsx32val[1] = gpr; + VCPU_VSX_FPR(vcpu, index, 0) = val.vsxval[0]; + VCPU_VSX_FPR(vcpu, index, 1) = val.vsxval[0]; + } +} + static inline void kvmppc_set_vsr_word(struct kvm_vcpu *vcpu, u32 gpr32) { @@ -1061,6 +1081,9 @@ static void kvmppc_complete_mmio_load(struct kvm_vcpu *vcpu, else if (vcpu->arch.mmio_vsx_copy_type == KVMPPC_VSX_COPY_DWORD_LOAD_DUMP) kvmppc_set_vsr_dword_dump(vcpu, gpr); + else if (vcpu->arch.mmio_vsx_copy_type == + KVMPPC_VSX_COPY_WORD_LOAD_DUMP) + kvmppc_set_vsr_word_dump(vcpu, gpr); break; #endif #ifdef CONFIG_ALTIVEC