From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [PATCH 2/2] KVM: PPC: Book3S: Call into C interrupt handlers Date: Fri, 27 Apr 2012 10:00:54 +1000 Message-ID: <1335484854.21961.103.camel@pasglop> References: <1335435543-19690-1-git-send-email-agraf@suse.de> <1335435543-19690-2-git-send-email-agraf@suse.de> <1335476747.21961.82.camel@pasglop> <4054E139-FF68-471B-B69C-9F76D75CA451@suse.de> <1335481976.21961.87.camel@pasglop> <1335483470.21961.89.camel@pasglop> <9976749E-FC87-4A2C-84AF-B0ECF4BE739B@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: kvm list , kvm-ppc To: Alexander Graf Return-path: In-Reply-To: <9976749E-FC87-4A2C-84AF-B0ECF4BE739B@suse.de> Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Fri, 2012-04-27 at 01:50 +0200, Alexander Graf wrote: > Yup. We're running the entire guest with IRQs off. Do you have any better idea how to make sure that we're atomic wrt signal delivery? Something like this entry path: - local_irq_disable - check TIF_NEED_RESCHED, TIF_SIGPENDING,... (probably _TIF_USER_WORK_MASK in fact) - if any set, re-enable then -> back to qemu - ppc64: hard disable - ppc64: check irq_pending, something set (other than hard disable) -> local_irq_enable() and try again the whole sequence - call trace_irq_enable() (tell lockdep/irqtrace we are re-enabling) - enter the guest, last rfi will turn EE on And exit: - irqs are hard off from the interrupt handler - call local_irq_disable() to tell lockdep about it and mark soft-disabled on ppc64 - ppc64: maybe set PACA_HARD_IRQ_DIS (tbd) - do things like do_IRQ() etc... if needed - local_irq_enable() (will hard enable if PACA_HARD_IRQ_DIS was set) Cheers, Ben.