From patchwork Sat Oct 6 23:41:22 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 189761 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 57D102C032E for ; Sun, 7 Oct 2012 10:41:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751918Ab2JFXl3 (ORCPT ); Sat, 6 Oct 2012 19:41:29 -0400 Received: from cantor2.suse.de ([195.135.220.15]:54090 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751334Ab2JFXl1 (ORCPT ); Sat, 6 Oct 2012 19:41:27 -0400 Received: from relay2.suse.de (unknown [195.135.220.254]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 87A7A9D938; Sun, 7 Oct 2012 01:41:26 +0200 (CEST) From: Alexander Graf To: kvm-ppc@vger.kernel.org Cc: kvm@vger.kernel.org Subject: [PATCH 3/3] KVM: PPC: BookE: Forward DBCR0 to user space Date: Sun, 7 Oct 2012 01:41:22 +0200 Message-Id: <1349566882-10948-4-git-send-email-agraf@suse.de> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1349566882-10948-1-git-send-email-agraf@suse.de> References: <1349566882-10948-1-git-send-email-agraf@suse.de> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org When the guest wants to access DBCR0 and we support user space SPR handling, let's expose it to user space. DBCR0 is used for system reset trigger. Since user space as control over the machine, not KVM, we need to let this register be handled by user space. Signed-off-by: Alexander Graf --- arch/powerpc/kvm/booke_emulate.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kvm/booke_emulate.c b/arch/powerpc/kvm/booke_emulate.c index 514790f..62cf27f 100644 --- a/arch/powerpc/kvm/booke_emulate.c +++ b/arch/powerpc/kvm/booke_emulate.c @@ -133,7 +133,11 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, ulong spr_val) vcpu->arch.csrr1 = spr_val; break; case SPRN_DBCR0: - vcpu->arch.dbg_reg.dbcr0 = spr_val; + if (vcpu->arch.spr_exit_enabled) + /* Forward to user space, as it triggers reset */ + emulated = EMULATE_FAIL; + else + vcpu->arch.dbg_reg.dbcr0 = spr_val; break; case SPRN_DBCR1: vcpu->arch.dbg_reg.dbcr1 = spr_val; @@ -269,7 +273,11 @@ int kvmppc_booke_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val) *spr_val = vcpu->arch.csrr1; break; case SPRN_DBCR0: - *spr_val = vcpu->arch.dbg_reg.dbcr0; + if (vcpu->arch.spr_exit_enabled) + /* Forward to user space, as it triggers reset */ + emulated = EMULATE_FAIL; + else + *spr_val = vcpu->arch.dbg_reg.dbcr0; break; case SPRN_DBCR1: *spr_val = vcpu->arch.dbg_reg.dbcr1;