26 Dec, 2011

1 commit


17 Nov, 2011

1 commit


01 Nov, 2011

1 commit

  • Fix failures in powerpc associated with the previously allowed
    implicit module.h presence that now lead to things like this:

    arch/powerpc/mm/mmu_context_hash32.c:76:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
    arch/powerpc/mm/tlb_hash32.c:48:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
    arch/powerpc/kernel/pci_32.c:51:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
    arch/powerpc/kernel/iomap.c:36:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
    arch/powerpc/platforms/44x/canyonlands.c:126:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
    arch/powerpc/kvm/44x.c:168:59: error: 'THIS_MODULE' undeclared (first use in this function)

    [with several contibutions from Stephen Rothwell ]

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

26 Sep, 2011

4 commits

  • This simplifies the way that the book3s_pr makes the transition to
    real mode when entering the guest. We now call kvmppc_entry_trampoline
    (renamed from kvmppc_rmcall) in the base kernel using a normal function
    call instead of doing an indirect call through a pointer in the vcpu.
    If kvm is a module, the module loader takes care of generating a
    trampoline as it does for other calls to functions outside the module.

    kvmppc_entry_trampoline then disables interrupts and jumps to
    kvmppc_handler_trampoline_enter in real mode using an rfi[d].
    That then uses the link register as the address to return to
    (potentially in module space) when the guest exits.

    This also simplifies the way that we call the Linux interrupt handler
    when we exit the guest due to an external, decrementer or performance
    monitor interrupt. Instead of turning on the MMU, then deciding that
    we need to call the Linux handler and turning the MMU back off again,
    we now go straight to the handler at the point where we would turn the
    MMU on. The handler will then return to the virtual-mode code
    (potentially in the module).

    Along the way, this moves the setting and clearing of the HID5 DCBZ32
    bit into real-mode interrupts-off code, and also makes sure that
    we clear the MSR[RI] bit before loading values into SRR0/1.

    The net result is that we no longer need any code addresses to be
    stored in vcpu->arch.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    Paul Mackerras
     
  • There are multiple features in PowerPC KVM that can now be enabled
    depending on the user's wishes. Some of the combinations don't make
    sense or don't work though.

    So this patch adds a way to check if the executing environment would
    actually be able to run the guest properly. It also adds sanity
    checks if PVR is set (should always be true given the current code
    flow), if PAPR is only used with book3s_64 where it works and that
    HV KVM is only used in PAPR mode.

    Signed-off-by: Alexander Graf

    Alexander Graf
     
  • PAPR defines hypercalls as SC1 instructions. Using these, the guest modifies
    page tables and does other privileged operations that it wouldn't be allowed
    to do in supervisor mode.

    This patch adds support for PR KVM to trap these instructions and route them
    through the same PAPR hypercall interface that we already use for HV style
    KVM.

    Signed-off-by: Alexander Graf

    Alexander Graf
     
  • Until now, we always set HIOR based on the PVR, but this is just wrong.
    Instead, we should be setting HIOR explicitly, so user space can decide
    what the initial HIOR value is - just like on real hardware.

    We keep the old PVR based way around for backwards compatibility, but
    once user space uses the SREGS based method, we drop the PVR logic.

    Signed-off-by: Alexander Graf

    Alexander Graf
     

12 Jul, 2011

3 commits

  • Instead of doing the kvm_guest_enter/exit() and local_irq_dis/enable()
    calls in powerpc.c, this moves them down into the subarch-specific
    book3s_pr.c and booke.c. This eliminates an extra local_irq_enable()
    call in book3s_pr.c, and will be needed for when we do SMT4 guest
    support in the book3s hypervisor mode code.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    Paul Mackerras
     
  • This arranges for the top-level arch/powerpc/kvm/powerpc.c file to
    pass down some of the calls it gets to the lower-level subarchitecture
    specific code. The lower-level implementations (in booke.c and book3s.c)
    are no-ops. The coming book3s_hv.c will need this.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    Paul Mackerras
     
  • In preparation for adding code to enable KVM to use hypervisor mode
    on 64-bit Book 3S processors, this splits book3s.c into two files,
    book3s.c and book3s_pr.c, where book3s_pr.c contains the code that is
    specific to running the guest in problem state (user mode) and book3s.c
    contains code which should apply to all Book 3S processors.

    In doing this, we abstract some details, namely the interrupt offset,
    updating the interrupt pending flag, and detecting if the guest is
    in a critical section. These are all things that will be different
    when we use hypervisor mode.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    Paul Mackerras