1. 07 2月, 2019 26 次提交
  2. 06 2月, 2019 14 次提交
    • P
      accel/tcg: Consider cluster index in tb_lookup__cpu_state() · 9fd9b7de
      Peter Maydell 提交于
      In commit f7b78602 we added the CPU cluster number to the
      cflags field of the TB hash; this included adding it to the value
      kept in tb->cflags, since we pass that field directly into the hash
      calculation in some places. Unfortunately we forgot to check whether
      other parts of the code were doing comparisons against tb->cflags
      that would need to be updated.
      
      It turns out that there is exactly one such place: the
      tb_lookup__cpu_state() function checks whether the TB it has
      found in the tb_jmp_cache has a tb->cflags matching the cf_mask
      that is passed in. The tb->cflags has the cluster_index in it
      but the cf_mask does not.
      
      Hoist the "add cluster index to the cf_mask" code up from
      tb_htable_lookup() to tb_lookup__cpu_state() so it can be considered
      in the "did this TB match in the jmp cache" condition, as well as
      when we do the full hash lookup by physical PC, flags, etc.
      (tb_htable_lookup() is only called from tb_lookup__cpu_state(),
      so this change doesn't require any further knock-on changes.)
      
      Fixes: f7b78602 ("accel/tcg: Add cluster number to TCG TB hash")
      Tested-by: NCleber Rosa <crosa@redhat.com>
      Tested-by: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Reported-by: NHoward Spoelstra <hsp.cat7@gmail.com>
      Reported-by: NCleber Rosa <crosa@redhat.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-Id: <20190205151810.571-1-peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      9fd9b7de
    • C
      tcg: add early clober modifier in atomic16_cmpxchg on aarch64 · 7400d693
      Catherine Ho 提交于
      Without this patch, gcc might up the Input/Output registers and
      cause unpredictable error.
      
      Fixes: 1ec182c3 ("target/arm: Convert to HAVE_CMPXCHG128")
      Signed-off-by: NCatherine Ho <catherine.hecx@gmail.com>
      Message-Id: <1548838794-23757-1-git-send-email-catherine.hecx@gmail.com>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      7400d693
    • P
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · 3e29da9f
      Peter Maydell 提交于
      * cpu-exec fixes (Emilio, Laurent)
      * TCG bugfix in queue.h (Paolo)
      * high address load for linuxboot (Zhijian)
      * PVH support (Liam, Stefano)
      * misc i386 changes (Paolo, Robert, Doug)
      * configure tweak for openpty (Thomas)
      * elf2dmp port to Windows (Viktor)
      * initial improvements to Makefile infrastructure (Yang + GSoC 2013)
      
      # gpg: Signature made Tue 05 Feb 2019 17:34:42 GMT
      # gpg:                using RSA key BFFBD25F78C7AE83
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini/tags/for-upstream: (76 commits)
        queue: fix QTAILQ_FOREACH_REVERSE_SAFE
        scsi-generic: Convert from DPRINTF() macro to trace events
        scsi-disk: Convert from DPRINTF() macro to trace events
        pc: Use hotplug_handler_(plug|unplug|unplug_request)
        i386: hvf: Fix smp boot hangs
        hw/vfio/Makefile.objs: Create new CONFIG_* variables for VFIO core and PCI
        hw/i2c/Makefile.objs: Create new CONFIG_* variables for EEPROM and ACPI controller
        hw/tricore/Makefile.objs: Create CONFIG_* for tricore
        hw/openrisc/Makefile.objs: Create CONFIG_* for openrisc
        hw/moxie/Makefile.objs: Conditionally build moxie
        hw/hppa/Makefile.objs: Create CONFIG_* for hppa
        hw/cris/Makefile.objs: Create CONFIG_* for cris
        hw/alpha/Makefile.objs: Create CONFIG_* for alpha
        hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64
        hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards
        hw/nios2/Makefile.objs: Conditionally build nios2
        hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga conditionally
        hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst
        hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created
        hw/s390/Makefile.objs: Create new CONFIG_* variables for s390x boards and devices
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      
      # Conflicts:
      #	qemu-deprecated.texi
      3e29da9f
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20190205' into staging · 47994e16
      Peter Maydell 提交于
      target-arm queue:
       * Implement Armv8.5-BTI extension for system emulation mode
       * Implement the PR_PAC_RESET_KEYS prctl() for linux-user mode's Armv8.3-PAuth support
       * Support TBI (top-byte-ignore) properly for linux-user mode
       * gdbstub: allow killing QEMU via vKill command
       * hw/arm/boot: Support DTB autoload for firmware-only boots
       * target/arm: Make FPSCR/FPCR trapped-exception bits RAZ/WI
      
      # gpg: Signature made Tue 05 Feb 2019 17:04:22 GMT
      # gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
      # gpg:                issuer "peter.maydell@linaro.org"
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate]
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [ultimate]
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate]
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20190205: (22 commits)
        target/arm: Make FPSCR/FPCR trapped-exception bits RAZ/WI
        hw/arm/boot: Support DTB autoload for firmware-only boots
        hw/arm/boot: Clarify why arm_setup_firmware_boot() doesn't set env->boot_info
        hw/arm/boot: Factor out "set up firmware boot" code
        hw/arm/boot: Factor out "direct kernel boot" code into its own function
        hw/arm/boot: Fix block comment style in arm_load_kernel()
        gdbstub: allow killing QEMU via vKill command
        target/arm: Enable TBI for user-only
        target/arm: Compute TB_FLAGS for TBI for user-only
        target/arm: Clean TBI for data operations in the translator
        target/arm: Add TBFLAG_A64_TBID, split out gen_top_byte_ignore
        tests/tcg/aarch64: Add pauth smoke test
        linux-user: Implement PR_PAC_RESET_KEYS
        target/arm: Enable BTI for -cpu max
        target/arm: Set btype for indirect branches
        target/arm: Reset btype for direct branches
        target/arm: Default handling of BTYPE during translation
        target/arm: Cache the GP bit for a page in MemTxAttrs
        exec: Add target-specific tlb bits to MemTxAttrs
        target/arm: Add BT and BTYPE to tb->flags
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      47994e16
    • P
      Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20190205' into staging · 9669c975
      Peter Maydell 提交于
      Fixes and improvements in tcg and the zPCI code.
      
      # gpg: Signature made Tue 05 Feb 2019 16:36:09 GMT
      # gpg:                using RSA key C3D0D66DC3624FF6A8C018CEDECF6B93C6F02FAF
      # gpg:                issuer "cohuck@redhat.com"
      # gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>" [unknown]
      # gpg:                 aka "Cornelia Huck <huckc@linux.vnet.ibm.com>" [full]
      # gpg:                 aka "Cornelia Huck <cornelia.huck@de.ibm.com>" [full]
      # gpg:                 aka "Cornelia Huck <cohuck@kernel.org>" [unknown]
      # gpg:                 aka "Cornelia Huck <cohuck@redhat.com>" [unknown]
      # Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF
      
      * remotes/cohuck/tags/s390x-20190205:
        s390x/pci: Unplug remaining requested devices on pcihost reset
        s390x/pci: Warn when adding PCI devices without the 'zpci' feature
        s390x/pci: Fix hotplugging of PCI bridges
        s390x/pci: Fix primary bus number for PCI bridges
        s390x/tcg: Don't model FP registers as globals
        s390x/pci: mark zpci devices as unmigratable
        s390x/pci: Drop release timer and replace it with a flag
        s390x/pci: Introduce unplug requests and split unplug handler
        s390x: remove direct reference to mem_path global from s390x code
        target/s390x: define TCG_GUEST_DEFAULT_MO for MTTCG
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      9669c975
    • P
      target/arm: Make FPSCR/FPCR trapped-exception bits RAZ/WI · a15945d9
      Peter Maydell 提交于
      The {IOE, DZE, OFE, UFE, IXE, IDE} bits in the FPSCR/FPCR are for
      enabling trapped IEEE floating point exceptions (where IEEE exception
      conditions cause a CPU exception rather than updating the FPSR status
      bits). QEMU doesn't implement this (and nor does the hardware we're
      modelling), but for implementations which don't implement trapped
      exception handling these control bits are supposed to be RAZ/WI.
      This allows guest code to test for whether the feature is present
      by trying to write to the bit and checking whether it sticks.
      
      QEMU is incorrectly making these bits read as written. Make them
      RAZ/WI as the architecture requires.
      
      In particular this was causing problems for the NetBSD automatic
      test suite.
      Reported-by: NMartin Husemann <martin@netbsd.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20190131130700.28392-1-peter.maydell@linaro.org
      a15945d9
    • P
      hw/arm/boot: Support DTB autoload for firmware-only boots · 5614ca80
      Peter Maydell 提交于
      The arm_boot_info struct has a skip_dtb_autoload flag: if this is
      set to true by the board code then arm_load_kernel() will not
      load the DTB itself, but will leave this for the board code to
      do itself later. However, the check for this is done in a
      code path which is only executed for the case where we load
      a kernel image file. If we're taking the "boot via firmware"
      code path then the flag isn't honoured and the DTB is never
      loaded.
      
      We didn't notice this because the only real user of "boot
      via firmware" that cares about the DTB is the virt board
      (for UEFI boot), and that always wants skip_dtb_autoload
      anyway. But the SBSA reference board model we're planning to
      add will want the flag to behave correctly.
      
      Now we've refactored the arm_load_kernel() function, the
      fix is simple: drop the early 'return' so we fall into
      the same "load the DTB" code the boot-direct-kernel path uses.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 20190131112240.8395-6-peter.maydell@linaro.org
      5614ca80
    • P
      hw/arm/boot: Clarify why arm_setup_firmware_boot() doesn't set env->boot_info · 2a5bdfc8
      Peter Maydell 提交于
      The code path for booting firmware doesn't set env->boot_info. At
      first sight this looks odd, so add a comment saying why we don't.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 20190131112240.8395-5-peter.maydell@linaro.org
      2a5bdfc8
    • P
      hw/arm/boot: Factor out "set up firmware boot" code · 4c0f2687
      Peter Maydell 提交于
      Factor out the "boot via firmware" code path from arm_load_kernel()
      into its own function.
      
      This commit only moves code around; no semantic changes.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 20190131112240.8395-4-peter.maydell@linaro.org
      4c0f2687
    • P
      hw/arm/boot: Factor out "direct kernel boot" code into its own function · d33774ee
      Peter Maydell 提交于
      Factor out the "direct kernel boot" code path from arm_load_kernel()
      into its own function; this function is getting long enough that
      the code flow is a bit confusing.
      
      This commit only moves code around; no semantic changes.
      
      We leave the "load the dtb" code in arm_load_kernel() -- this
      is currently only used by the "direct kernel boot" path, but
      this is a bug which we will fix shortly.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 20190131112240.8395-3-peter.maydell@linaro.org
      d33774ee
    • P
      hw/arm/boot: Fix block comment style in arm_load_kernel() · c3a42358
      Peter Maydell 提交于
      Fix the block comment style in arm_load_kernel() to QEMU's
      current style preferences. This will allow us to do some
      refactoring of this function without checkpatch complaining
      about the code-motion patches.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 20190131112240.8395-2-peter.maydell@linaro.org
      c3a42358
    • M
      gdbstub: allow killing QEMU via vKill command · 45a4de25
      Max Filippov 提交于
      With multiprocess extensions gdb uses 'vKill' packet instead of 'k' to
      kill the inferior. Handle 'vKill' the same way 'k' was handled in the
      presence of single process.
      
      Fixes: 7cf48f67 ("gdbstub: add multiprocess support to
      (f|s)ThreadInfo and ThreadExtraInfo")
      
      Cc: Luc Michel <luc.michel@greensocs.com>
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      Reviewed-by: NLuc Michel <luc.michel@greensocs.com>
      Reviewed-by: NKONRAD Frederic <frederic.konrad@adacore.com>
      Tested-by: NKONRAD Frederic <frederic.konrad@adacore.com>
      Message-id: 20190130192403.13754-1-jcmvbkbc@gmail.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      45a4de25
    • R
      target/arm: Enable TBI for user-only · f6a148fe
      Richard Henderson 提交于
      This has been enabled in the linux kernel since v3.11
      (commit d50240a5f6cea, 2013-09-03,
      "arm64: mm: permit use of tagged pointers at EL0").
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20190204132126.3255-5-richard.henderson@linaro.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f6a148fe
    • P
      target/arm: Compute TB_FLAGS for TBI for user-only · c47eaf9f
      Peter Maydell 提交于
      Enables, but does not turn on, TBI for CONFIG_USER_ONLY.
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20190204132126.3255-4-richard.henderson@linaro.org
      [PMM: adjusted #ifdeffery to placate clang, which otherwise complains
      about static functions that are unused in the CONFIG_USER_ONLY build]
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c47eaf9f