linux/arch/powerpc/kvm
Alexander Graf bd2be6836e KVM: PPC: Book3S: PR: Rework irq disabling
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: Alexander Graf <agraf@suse.de>
2012-10-05 23:38:45 +02:00
..
44x_emulate.c KVM: PPC: Emulator: clean up SPR reads and writes 2012-05-06 16:19:13 +02:00
44x_tlb.c KVM: do not release the error page 2012-08-06 16:04:58 +03:00
44x_tlb.h KVM: ppc: rename 44x MMU functions used in booke.c 2009-03-24 11:02:56 +02:00
44x.c KVM: PPC: booke: Move vm core init/destroy out of booke.c 2012-04-08 12:51:05 +03:00
book3s_32_mmu_host.c KVM: PPC: Book3s: PR: Add (dumb) MMU Notifier support 2012-10-05 23:38:43 +02:00
book3s_32_mmu.c KVM: PPC: Put segment registers in shared page 2010-10-24 10:52:11 +02:00
book3s_32_sr.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s_64_mmu_host.c KVM: PPC: Book3s: PR: Add (dumb) MMU Notifier support 2012-10-05 23:38:43 +02:00
book3s_64_mmu_hv.c KVM: Push rmap into kvm_arch_memory_slot 2012-08-06 12:47:30 +03:00
book3s_64_mmu.c KVM: PPC: Interpret SDR1 as HVA in PAPR mode 2011-09-25 19:52:21 +03:00
book3s_64_slb.S KVM: PPC: Book3S: PR: No isync in slbie path 2012-05-06 16:19:09 +02:00
book3s_64_vio_hv.c kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM 2012-05-06 16:19:11 +02:00
book3s_64_vio.c kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM 2012-05-06 16:19:11 +02:00
book3s_emulate.c KVM: PPC: Emulator: clean up SPR reads and writes 2012-05-06 16:19:13 +02:00
book3s_exports.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
book3s_hv_builtin.c KVM: PPC: Quieten message about allocating linear regions 2012-10-05 23:38:40 +02:00
book3s_hv_interrupts.S KVM: PPC: Work around POWER7 DABR corruption problem 2012-04-08 14:01:36 +03:00
book3s_hv_rm_mmu.c KVM: PPC: book3s: fix build error caused by gfn_to_hva_memslot() 2012-08-27 16:44:20 -03:00
book3s_hv_rmhandlers.S KVM: PPC: Book3S HV: Fix incorrect branch in H_CEDE code 2012-08-16 14:14:52 +02:00
book3s_hv.c KVM updates for the 3.6 merge window 2012-07-24 12:01:20 -07:00
book3s_interrupts.S powerpc: Merge VCPU_GPR 2012-07-10 19:18:06 +10:00
book3s_mmu_hpte.c KVM: PPC: Book3s: PR: Add (dumb) MMU Notifier support 2012-10-05 23:38:43 +02:00
book3s_paired_singles.c powerpc/kvm: Fallout from system.h disintegration 2012-04-02 14:00:04 +10:00
book3s_pr_papr.c powerpc/kvm: Fix "PR" KVM implementation of H_CEDE 2012-07-11 17:36:38 +02:00
book3s_pr.c KVM: PPC: Book3S: PR: Rework irq disabling 2012-10-05 23:38:45 +02:00
book3s_rmhandlers.S KVM: PPC: Book3S: PR: Rework irq disabling 2012-10-05 23:38:45 +02:00
book3s_segment.S powerpc: Move and fix MTMSR_EERI definition 2012-07-10 19:18:08 +10:00
book3s.c powerpc/kvm: Fix magic page vs. 32-bit RTAS on ppc64 2012-04-08 14:02:39 +03:00
booke_emulate.c KVM: PPC: Critical interrupt emulation support 2012-07-11 17:39:38 +02:00
booke_interrupts.S KVM updates for the 3.6 merge window 2012-07-24 12:01:20 -07:00
booke.c KVM: PPC: Book3S: PR: Rework irq disabling 2012-10-05 23:38:45 +02:00
booke.h KVM: PPC: Emulator: clean up SPR reads and writes 2012-05-06 16:19:13 +02:00
bookehv_interrupts.S powerpc/kvm/bookehv: Fix build regression 2012-07-27 11:42:32 +10:00
e500_emulate.c KVM: PPC: booke: Added DECAR support 2012-05-30 11:43:11 +02:00
e500_tlb.c KVM: PPC: BookE: Add some more trace points 2012-10-05 23:38:42 +02:00
e500.c KVM: PPC: e500: refactor core-specific TLB code 2012-04-08 12:51:12 +03:00
e500.h KVM: Use minimum and maximum address mapped by TLB1 2012-05-06 16:19:07 +02:00
e500mc.c KVM: PPC: e500mc: Fix tlbilx emulation for 64-bit guests 2012-07-11 17:39:38 +02:00
emulate.c KVM: PPC: bookehv64: Add support for std/ld emulation. 2012-07-11 17:39:36 +02:00
fpu.S powerpc: Remove fpscr use from [kvm_]cvt_{fd,df} 2010-09-02 14:07:32 +10:00
Kconfig KVM: PPC: Book3s: PR: Add (dumb) MMU Notifier support 2012-10-05 23:38:43 +02:00
Makefile kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM 2012-05-06 16:19:11 +02:00
powerpc.c KVM: PPC: Book3S: PR: Rework irq disabling 2012-10-05 23:38:45 +02:00
timing.c KVM: PPC: fix partial application of "exit timing in ticks" 2011-07-12 13:16:28 +03:00
timing.h KVM: PPC: booke: category E.HV (GS-mode) support 2012-04-08 12:51:19 +03:00
trace.h KVM: PPC: BookE: Add some more trace points 2012-10-05 23:38:42 +02:00