• Alexander Graf's avatar
    KVM: PPC: Book3S: PR: Rework irq disabling · bd2be683
    Alexander Graf authored
    Today, we disable preemption while inside guest context, because we need
    to expose to the world that we are not in a preemptible context. However,
    during that time we already have interrupts disabled, which would indicate
    that we are in a non-preemptible context.
    
    The reason the checks for irqs_disabled() fail for us though is that we
    manually control hard IRQs and ignore all the lazy EE framework. Let's
    stop doing that. Instead, let's always use lazy EE to indicate when we
    want to disable IRQs, but do a special final switch that gets us into
    EE disabled, but soft enabled state. That way when we get back out of
    guest state, we are immediately ready to process interrupts.
    
    This simplifies the code drastically and reduces the time that we appear
    as preempt disabled.
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    bd2be683
book3s_pr.c 32.1 KB