1. 01 3月, 2010 6 次提交
    • A
      KVM: PPC: Keep SRR1 flags around in shadow_msr · f7adbba1
      Alexander Graf 提交于
      SRR1 stores more information that just the MSR value. It also stores
      valuable information about the type of interrupt we received, for
      example whether the storage interrupt we just got was because of a
      missing htab entry or not.
      
      We use that information to speed up the exit path.
      
      Now if we get preempted before we can interpret the shadow_msr values,
      we get into vcpu_put which then calls the MSR handler, which then sets
      all the SRR1 information bits in shadow_msr to 0. Great.
      
      So let's preserve the SRR1 specific bits in shadow_msr whenever we set
      the MSR. They don't hurt.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      f7adbba1
    • A
      KVM: PPC: Fix HID5 setting code · d35feb26
      Alexander Graf 提交于
      The code to unset HID5.dcbz32 is broken.
      This patch makes it do the right rotate magic.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Reported-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      d35feb26
    • A
      KVM: PPC: Call SLB patching code in interrupt safe manner · 021ec9c6
      Alexander Graf 提交于
      Currently we're racy when doing the transition from IR=1 to IR=0, from
      the module memory entry code to the real mode SLB switching code.
      
      To work around that I took a look at the RTAS entry code which is faced
      with a similar problem and did the same thing:
      
        A small helper in linear mapped memory that does mtmsr with IR=0 and
        then RFIs info the actual handler.
      
      Thanks to that trick we can safely take page faults in the entry code
      and only need to be really wary of what to do as of the SLB switching
      part.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      021ec9c6
    • A
      KVM: PPC: Get rid of unnecessary RFI · bc90923e
      Alexander Graf 提交于
      Using an RFI in IR=1 is dangerous. We need to set two SRRs and then do an RFI
      without getting interrupted at all, because every interrupt could potentially
      overwrite the SRR values.
      
      Fortunately, we don't need to RFI in at least this particular case of the code,
      so we can just replace it with an mtmsr and b.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      bc90923e
    • A
      KVM: PPC: Use PACA backed shadow vcpu · 7e57cba0
      Alexander Graf 提交于
      We're being horribly racy right now. All the entry and exit code hijacks
      random fields from the PACA that could easily be used by different code in
      case we get interrupted, for example by a #MC or even page fault.
      
      After discussing this with Ben, we figured it's best to reserve some more
      space in the PACA and just shove off some vcpu state to there.
      
      That way we can drastically improve the readability of the code, make it
      less racy and less complex.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      7e57cba0
    • A
      KVM: PPC: Enable lightweight exits again · 97c4cfbe
      Alexander Graf 提交于
      The PowerPC C ABI defines that registers r14-r31 need to be preserved across
      function calls. Since our exit handler is written in C, we can make use of that
      and don't need to reload r14-r31 on every entry/exit cycle.
      
      This technique is also used in the BookE code and is called "lightweight exits"
      there. To follow the tradition, it's called the same in Book3S.
      
      So far this optimization was disabled though, as the code didn't do what it was
      expected to do, but failed to work.
      
      This patch fixes and enables lightweight exits again.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      97c4cfbe
  2. 05 11月, 2009 1 次提交