On 25.06.2012, at 14:26, Mihai Caraman wrote: > When delivering guest IRQs, update MSR computaion computation > mode according to guest > interrupt computation mode found in EPCR. > > Signed-off-by: Mihai Caraman <mihai.caraman@xxxxxxxxxxxxx> > --- > arch/powerpc/kvm/booke.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index d15c4b5..93b48e0 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -287,6 +287,7 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu, > bool crit; > bool keep_irq = false; > enum int_class int_class; > + ulong msr_cm = 0; > > /* Truncate crit indicators in 32 bit mode */ > if (!(vcpu->arch.shared->msr & MSR_SF)) { > @@ -299,6 +300,10 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu, > /* ... and we're in supervisor mode */ > crit = crit && !(vcpu->arch.shared->msr & MSR_PR); > > +#ifdef CONFIG_64BIT > + msr_cm = vcpu->arch.epcr & SPRN_EPCR_ICM ? MSR_CM : 0; > +#endif No need for the ifdef, no?. Just mask EPCR_ICM out in the 32-bit host case, then this check is always false on 32-bit hosts. > + > if (priority == BOOKE_IRQPRIO_EXTERNAL_LEVEL) { > priority = BOOKE_IRQPRIO_EXTERNAL; > keep_irq = true; > @@ -381,7 +386,8 @@ static int kvmppc_booke_irqprio_deliver(struct kvm_vcpu *vcpu, > set_guest_esr(vcpu, vcpu->arch.queued_esr); > if (update_dear == true) > set_guest_dear(vcpu, vcpu->arch.queued_dear); > - kvmppc_set_msr(vcpu, vcpu->arch.shared->msr & msr_mask); > + kvmppc_set_msr(vcpu, (vcpu->arch.shared->msr & msr_mask) > + | msr_cm); Please split this computation out into its own variable and apply the masking regardless. Something like ulong new_msr = vcpu->arch.shared->msr; if (vcpu->arch.epcr & SPRN_EPCR_ICM) new_msr |= MSR_CM; new_msr &= msr_mask; kvmppc_set_msr(vcpu, new_msr); Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html