1. 11 5月, 2011 9 次提交
  2. 06 4月, 2011 2 次提交
    • A
      KVM: move and fix substitue search for missing CPUID entries · bd22f5cf
      Andre Przywara 提交于
      If KVM cannot find an exact match for a requested CPUID leaf, the
      code will try to find the closest match instead of simply confessing
      it's failure.
      The implementation was meant to satisfy the CPUID specification, but
      did not properly check for extended and standard leaves and also
      didn't account for the index subleaf.
      Beside that this rule only applies to CPUID intercepts, which is not
      the only user of the kvm_find_cpuid_entry() function.
      
      So fix this algorithm and call it from kvm_emulate_cpuid().
      This fixes a crash of newer Linux kernels as KVM guests on
      AMD Bulldozer CPUs, where bogus values were returned in response to
      a CPUID intercept.
      Signed-off-by: NAndre Przywara <andre.przywara@amd.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      bd22f5cf
    • A
      KVM: fix XSAVE bit scanning · 20800bc9
      Andre Przywara 提交于
      When KVM scans the 0xD CPUID leaf for propagating the XSAVE save area
      leaves, it assumes that the leaves are contigious and stops at the
      first zero one. On AMD hardware there is a gap, though, as LWP uses
      leaf 62 to announce it's state save area.
      So lets iterate through all 64 possible leaves and simply skip zero
      ones to also cover later features.
      Signed-off-by: NAndre Przywara <andre.przywara@amd.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      20800bc9
  3. 18 3月, 2011 29 次提交