1. 07 5月, 2013 1 次提交
  2. 02 5月, 2013 2 次提交
  3. 01 5月, 2013 2 次提交
  4. 18 4月, 2013 1 次提交
  5. 16 4月, 2013 1 次提交
  6. 09 4月, 2013 1 次提交
    • P
      hw: move headers to include/ · 0d09e41a
      Paolo Bonzini 提交于
      Many of these should be cleaned up with proper qdev-/QOM-ification.
      Right now there are many catch-all headers in include/hw/ARCH depending
      on cpu.h, and this makes it necessary to compile these files per-target.
      However, fixing this does not belong in these patches.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0d09e41a
  7. 05 4月, 2013 2 次提交
  8. 12 3月, 2013 3 次提交
  9. 20 2月, 2013 2 次提交
  10. 19 2月, 2013 4 次提交
  11. 16 2月, 2013 1 次提交
  12. 01 2月, 2013 1 次提交
  13. 27 1月, 2013 5 次提交
    • I
      target-i386: Remove vendor_override field from CPUX86State · 11acfdd5
      Igor Mammedov 提交于
      Commit 89354998 makes cpuid return to guest host's vendor value
      instead of built-in one by default if kvm_enabled() == true and allows
      to override this behavior if 'vendor' is specified on -cpu command line.
      
      But every time guest calls cpuid to get 'vendor' value, host's value is
      read again and again in default case.
      
      It complicates semantics of vendor property and makes it harder to use.
      
      Instead of reading 'vendor' value from host every time cpuid[vendor] is
      called, override 'vendor' value only once in cpu_x86_find_by_name(), when
      built-in CPU model is found and if(kvm_enabled() == true).
      
      It provides the same default semantics
       if (kvm_enabled() == true)  vendor = host's vendor
       else vendor = built-in vendor
      
      and then later:
       if (custom vendor) vendor = custom vendor
      
      'vendor' value is overridden when user provides it on -cpu command line,
      and there is no need for vendor_override field anymore, remove it.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      11acfdd5
    • I
      target-i386: Replace uint32_t vendor fields by vendor string in x86_def_t · 99b88a17
      Igor Mammedov 提交于
      Vendor property setter takes string as vendor value but cpudefs
      use uint32_t vendor[123] fields to define vendor value. It makes it
      difficult to unify and use property setter for values from cpudefs.
      
      Simplify code by using vendor property setter, vendor[123] fields
      are converted into vendor[13] array to keep its value. And vendor
      property setter is used to access/set value on CPU.
      
       - Make for() cycle reusable for the next patch by adding
         x86_cpu_vendor_words2str()
      
      Intel's CPUID spec[1] says:
      "
      5.1.1 ...
      These registers contain the ASCII string: GenuineIntel
      ...
      "
      
      List[2] of known vendor values shows that they all are 12 ASCII
      characters long, padded where necessary with space.
      
      Current supported values are all ASCII characters packed in
      ebx, edx, ecx. So lets state that QEMU supports 12 printable ASCII
      characters packed in ebx, edx, ecx registers for cpuid(0) instruction.
      
      *1 - http://www.intel.com/Assets/PDF/appnote/241618.pdf
      *2 - http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_IDSigned-off-by: NIgor Mammedov <imammedo@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      99b88a17
    • E
      pc: Generate APIC IDs according to CPU topology · 8932cfdf
      Eduardo Habkost 提交于
      This keeps compatibility on machine-types pc-1.2 and older, and prints a
      warning in case the requested configuration won't get the correct
      topology.
      
      I couldn't think of a better way to warn about broken topology when in
      compat mode other than using error_report(). The warning message will
      probably be buried in a log file somewhere, but it's better than
      nothing.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      8932cfdf
    • E
      target-i386: Introduce x86_cpu_apic_id_from_index() function · cb41bad3
      Eduardo Habkost 提交于
      This function will be used by both the CPU initialization code and the
      fw_cfg table initialization code.
      
      Later this function will be updated to generate APIC IDs according to
      the CPU topology.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      cb41bad3
    • E
      pc: Reverse pc_init_pci() compatibility logic · 29694758
      Eduardo Habkost 提交于
      Currently, the pc-1.4 machine init function enables PV EOI and then
      calls the pc-1.2 machine init function. The problem with this approach
      is that now we can't enable any additional compatibility code inside the
      pc-1.2 init function because it would end up enabling the compatibility
      behavior on pc-1.3 and pc-1.4 as well.
      
      This reverses the logic so that the pc-1.2 machine init function will
      disable PV EOI, and then call the pc-1.4 machine init function.
      
      This way we can change older machine-types to enable compatibility
      behavior, and the newer machine-types (pc-1.3, pc-q35-1.4 and
      pc-i440fx-1.4) would just use the default behavior.
      
      (This means that one nice side-effect of this change is that pc-q35-1.4
      will get PV EOI enabled by default, too)
      
      It would be interesting to eventually change pc_init_pci_no_kvmclock()
      and pc_init_isa() to reuse pc_init_pci_1_2() as well (so we don't need
      to duplicate compatibility code on those two functions). But this will
      be probably much easier to do after we create a PCInitArgs struct for
      the PC initialization arguments, and/or after we use global-properties
      to implement the compatibility modes present in pc_init_pci_1_2().
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NMarcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      29694758
  14. 15 1月, 2013 4 次提交
  15. 09 1月, 2013 1 次提交
    • E
      target-i386: check/enforce: Fix CPUID leaf numbers on error messages · 8b4beddc
      Eduardo Habkost 提交于
      The -cpu check/enforce warnings are printing incorrect information about the
      missing flags. There are no feature flags on CPUID leaves 0 and 0x80000000, but
      there were references to 0 and 0x80000000 in the table at
      kvm_check_features_against_host().
      
      This changes the model_features_t struct to contain the register number as
      well, so the error messages print the correct CPUID leaf+register information,
      instead of wrong CPUID leaf numbers.
      
      This also changes the format of the error messages, so they follow the
      "CPUID.<leaf>.<register>.<name> [bit <offset>]" convention used in Intel
      documentation. Example output:
      
          $ qemu-system-x86_64 -machine pc-1.0,accel=kvm -cpu Opteron_G4,+ia64,enforce
          warning: host doesn't support requested feature: CPUID.01H:EDX.ia64 [bit 30]
          warning: host doesn't support requested feature: CPUID.01H:ECX.xsave [bit 26]
          warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.abm [bit 5]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.sse4a [bit 6]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.misalignsse [bit 7]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.3dnowprefetch [bit 8]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.xop [bit 11]
          warning: host doesn't support requested feature: CPUID.80000001H:ECX.fma4 [bit 16]
          Unable to find x86 CPU definition
          $
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Reviewed-by: NGleb Natapov <gleb@redhat.com>
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      8b4beddc
  16. 19 12月, 2012 2 次提交
  17. 15 12月, 2012 1 次提交
    • W
      target-i386: Enabling IA32_TSC_ADJUST for QEMU KVM guest VMs · f28558d3
      Will Auld 提交于
      CPUID.7.0.EBX[1]=1 indicates IA32_TSC_ADJUST MSR 0x3b is supported
      
      Basic design is to emulate the MSR by allowing reads and writes to the
      hypervisor vcpu specific locations to store the value of the emulated MSRs.
      In this way the IA32_TSC_ADJUST value will be included in all reads to
      the TSC MSR whether through rdmsr or rdtsc.
      
      As this is a new MSR that the guest may access and modify its value needs
      to be migrated along with the other MRSs. The changes here are specifically
      for recognizing when IA32_TSC_ADJUST is enabled in CPUID and code added
      for migrating its value.
      Signed-off-by: NWill Auld <will.auld@intel.com>
      Reviewed-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      f28558d3
  18. 06 12月, 2012 1 次提交
  19. 15 11月, 2012 1 次提交
  20. 31 10月, 2012 3 次提交
  21. 29 10月, 2012 1 次提交