1. 10 12月, 2013 2 次提交
    • P
      target-arm: Allow secondary KVM CPUs to be booted via PSCI · 5de16430
      Peter Maydell 提交于
      New ARM boards are generally expected to boot their secondary CPUs
      via the PSCI interface, rather than ad-hoc "loop around in holding
      pen code" as hw/arm/boot.c implements. In particular this is
      necessary for mach-virt kernels. For KVM we achieve this by creating
      the VCPUs with a feature flag marking them as starting in PSCI
      powered-down state; the guest kernel will then make a PSCI call
      (implemented in the host kernel) to start the secondaries at
      an address of its choosing once it has got the primary CPU up.
      
      Implement this setting of the feature flag, controlled by a
      qdev property for ARMCPU, which board code can set if it is a
      PSCI system.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Message-id: 1385140638-10444-7-git-send-email-peter.maydell@linaro.org
      5de16430
    • P
      target-arm: Add ARMCPU field for Linux device-tree 'compatible' string · 54d3e3f5
      Peter Maydell 提交于
      Linux requires device tree CPU nodes to include a 'compatible'
      string describing the CPU. Add a field in the ARMCPU struct for
      this so that boards which construct a device tree can insert
      the correct CPU nodes.
      
      Note that there is currently no officially specified 'compatible'
      string for the TI925T, Cortex-M3 or SA1110 CPUs.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Message-id: 1385140638-10444-6-git-send-email-peter.maydell@linaro.org
      54d3e3f5
  2. 11 9月, 2013 4 次提交
    • A
      target-arm: Prepare translation for AArch64 code · 3926cc84
      Alexander Graf 提交于
      This patch adds all the prerequisites for AArch64 support that didn't
      fit into split up patches. It extends important bits in the core cpu
      headers to also take AArch64 mode into account.
      
      Add new ARM_TBFLAG_AARCH64_STATE translation buffer flag
      indicate an ARMv8 cpu running in aarch64 mode vs aarch32 mode.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NJohn Rigby <john.rigby@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1378235544-22290-10-git-send-email-peter.maydell@linaro.org
      Message-id: 1368505980-17151-4-git-send-email-john.rigby@linaro.org
      [PMM:
       * rearranged tbflags so AArch64? is bit 31 and if it is set then
        30..0 are freely available for whatever makes most sense for that mode
       * added version bump since we change VFP migration state
       * added a comment about how VFP/Neon register state works
       * physical address space is 48 bits, not 64
       * added ARM_FEATURE_AARCH64 flag to identify 64-bit capable CPUs
      ]
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3926cc84
    • P
      target-arm: Disable 32 bit CPUs in 64 bit linux-user builds · 15ee776b
      Peter Maydell 提交于
      If we're building aarch64-linux-user then the 32 bit CPUs are
      all unwanted, because they can't possibly execute the 64 bit
      binaries we will be running; disable them.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1378235544-22290-9-git-send-email-peter.maydell@linaro.org
      15ee776b
    • S
      target-arm: fix ARMv7M stack alignment on reset · f62cafd4
      Sebastian Ottlik 提交于
      When the initial SP is loaded from the vector table on ARMv7M systems the two
      least significant bits are ignored as the stack is always aligned at a four byte
      boundary (see ARM DDI 0403C, B1.4.1 and B1.5.5). So far QEMU did not ignore
      these bits leading to a stack alignment inconsitent with real hardware for
      binaries that rely on this behaviour. This patch fixes this issue by masking the
      two least significant bits when loading the SP.
      Signed-off-by: NSebastian Ottlik <ottlik@fzi.de>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1378286595-27072-1-git-send-email-ottlik@fzi.de
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f62cafd4
    • P
      target-arm: Make '-cpu any' available in linux-user mode only · f5f6d38b
      Peter Maydell 提交于
      Make the 'any' CPU for target-arm available only in linux-user mode.
      The ARM target provides a CPU named "any", which turns on support for
      all user-level instruction set extensions we know about. This is
      intended for linux-user emulation mode, where it is the default CPU type.
      It makes no sense to try to use this for system emulation, since we don't
      initialize it with any system-level information like feature register
      values or implementation specific cp15 registers. (Unsurprisingly, some
      boards won't boot at all, though you might get lucky in some cases where
      the guest doesn't happen to prod things that aren't there.)
      
      Prevent users from making this command line error by removing the
      CPU definition from the softmmu build.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NAndreas Färber <afaerber@suse.de>
      Message-id: 1378213995-12945-1-git-send-email-peter.maydell@linaro.org
      f5f6d38b
  3. 23 8月, 2013 1 次提交
  4. 20 8月, 2013 2 次提交
  5. 29 7月, 2013 1 次提交
    • A
      cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" · 14a10fc3
      Andreas Färber 提交于
      Commit c643bed9 moved qemu_init_vcpu() calls to common CPUState code.
      This causes x86 cpu-add to fail with "KVM: setting VAPIC address failed".
      
      The reason for the failure is that CPUClass::kvm_fd is not yet
      initialized in the following call graph:
      ->x86_cpu_realizefn
       ->x86_cpu_apic_realize
        ->qdev_init
         ->device_set_realized
          ->device_reset (hotplugged == 1)
           ->apic_reset_common
            ->vapic_base_update
             ->kvm_apic_vapic_base_update
      This causes attempted KVM vCPU ioctls to fail.
      
      By contrast, in the non-hotplug case the APIC is reset much later, when
      the vCPU is already initialized.
      
      As a quick and safe solution, move the qemu_init_vcpu() call back into
      the targets' realize functions.
      Reported-by: NChen Fan <chen.fan.fnst@cn.fujitsu.com>
      Acked-by: Igor Mammedov <imammedo@redhat.com> (for i386)
      Tested-by: Jia Liu <proljc@gmail.com> (for openrisc)
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      14a10fc3
  6. 27 7月, 2013 3 次提交
  7. 23 7月, 2013 2 次提交
  8. 15 7月, 2013 1 次提交
  9. 10 7月, 2013 2 次提交
  10. 28 6月, 2013 2 次提交
  11. 26 6月, 2013 2 次提交
  12. 19 4月, 2013 1 次提交
    • J
      target-arm: port ARM CPU save/load to use VMState · 3cc1d208
      Juan Quintela 提交于
      Port the ARM CPU save/load code to use VMState. Some state is
      saved in a slightly different order to simplify things -- for
      example arrays are saved one after the other rather than 'striped',
      and we always save all 32 VFP registers even if the CPU happens
      to only have 16.
      
      Use one subsection for each feature.  This means that we don't need to
      bump the version field each time that a new feature gets introduced.
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      [PMM: fixed conflicts, updated to use cpu_class_set_vmsd(),  updated
       with new/removed fields since original patch, changed to use custom
       VMStateInfo for cpsr rather than presave/postload hooks, corrected
       subsection names so vmload doesn't fail]
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3cc1d208
  13. 12 3月, 2013 2 次提交
  14. 16 2月, 2013 3 次提交
  15. 31 1月, 2013 1 次提交
  16. 28 1月, 2013 1 次提交
  17. 27 1月, 2013 1 次提交
  18. 15 1月, 2013 1 次提交
    • A
      cpu: Move cpu_index field to CPUState · 55e5c285
      Andreas Färber 提交于
      Note that target-alpha accesses this field from TCG, now using a
      negative offset. Therefore the field is placed last in CPUState.
      
      Pass PowerPCCPU to [kvm]ppc_fixup_cpu() to facilitate this change.
      
      Move common parts of mips cpu_state_reset() to mips_cpu_reset().
      
      Acked-by: Richard Henderson <rth@twiddle.net> (for alpha)
      [AF: Rebased onto ppc CPU subclasses and openpic changes]
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      55e5c285
  19. 11 1月, 2013 1 次提交
  20. 19 12月, 2012 1 次提交
  21. 12 7月, 2012 2 次提交
  22. 20 6月, 2012 4 次提交