From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752675AbdKWJGv (ORCPT ); Thu, 23 Nov 2017 04:06:51 -0500 Received: from mx1.redhat.com ([209.132.183.28]:53246 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751690AbdKWJGs (ORCPT ); Thu, 23 Nov 2017 04:06:48 -0500 From: Laurent Vivier To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org, Benjamin Herrenschmidt , Paul Mackerras , Paolo Bonzini , Thomas Huth , Sam Bobroff , Laurent Vivier Subject: [PATCH] powerpc/xive: store server for masked interrupt in kvmppc_xive_set_xive() Date: Thu, 23 Nov 2017 10:06:33 +0100 Message-Id: <20171123090633.873-1-lvivier@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 23 Nov 2017 09:06:48 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is needed to map kvmppc_xive_set_xive() behavior to kvmppc_xics_set_xive(). As we store the server, kvmppc_xive_get_xive() can return the good value and we can also allow kvmppc_xive_int_on(). Signed-off-by: Laurent Vivier --- arch/powerpc/kvm/book3s_xive.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/kvm/book3s_xive.c b/arch/powerpc/kvm/book3s_xive.c index bf457843e032..2781b8733038 100644 --- a/arch/powerpc/kvm/book3s_xive.c +++ b/arch/powerpc/kvm/book3s_xive.c @@ -584,10 +584,14 @@ int kvmppc_xive_set_xive(struct kvm *kvm, u32 irq, u32 server, * we could initialize interrupts with valid default */ - if (new_act_prio != MASKED && - (state->act_server != server || - state->act_priority != new_act_prio)) - rc = xive_target_interrupt(kvm, state, server, new_act_prio); + if (state->act_server != server || + state->act_priority != new_act_prio) { + if (new_act_prio != MASKED) + rc = xive_target_interrupt(kvm, state, server, + new_act_prio); + if (!rc) + state->act_server = server; + } /* * Perform the final unmasking of the interrupt source @@ -646,14 +650,6 @@ int kvmppc_xive_int_on(struct kvm *kvm, u32 irq) pr_devel("int_on(irq=0x%x)\n", irq); - /* - * Check if interrupt was not targetted - */ - if (state->act_priority == MASKED) { - pr_devel("int_on on untargetted interrupt\n"); - return -EINVAL; - } - /* If saved_priority is 0xff, do nothing */ if (state->saved_priority == MASKED) return 0; -- 2.13.6