1. 09 1月, 2019 25 次提交
  2. 08 1月, 2019 12 次提交
    • R
      qemu-thread: Don't block SEGV, ILL and FPE · 21a43af0
      Roman Bolshakov 提交于
      If any of these signals happen on macOS, they are not delivered to other
      threads and signalfd_compat receives nothing. Indeed, POSIX reference
      and sigprocmask(2) note that an attempt to block the signals results in
      undefined behaviour. SEGV and FPE can't also be received by signalfd(2)
      on Linux.
      
      An ability to retrieve SIGBUS via signalfd(2) is used by QEMU for
      memory preallocation therefore we can't unblock it without consequences.
      But it's important to leave a remark that the signal is lost on macOS.
      Signed-off-by: NRoman Bolshakov <r.bolshakov@yadro.com>
      Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      21a43af0
    • R
      util: Implement debug-threads for macOS · 479a5747
      Roman Bolshakov 提交于
      macOS provides pthread_setname_np that doesn't have thread id argument.
      Signed-off-by: NRoman Bolshakov <r.bolshakov@yadro.com>
      Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      479a5747
    • M
      ui/cocoa: Include less of the generated modular QAPI headers · 16bf5234
      Markus Armbruster 提交于
      Avoids pointless recompilation.  Missed in commit 112ed241.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NRoman Bolshakov <r.bolshakov@yadro.com>
      Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NRoman Bolshakov <r.bolshakov@yadro.com>
      Message-id: 20181220084559.13880-1-armbru@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      16bf5234
    • P
      usb: move ehci_create_ich9_with_companions to hw/i386 · efce3175
      Paolo Bonzini 提交于
      This function is only needed when Q35 is in use.  Moving it to
      the same file that uses it lets you disable the entire USB
      subsystem in x86_64-softmmu.mak; of course doing that will
      cause -usb to break horribly, but one thing at a time.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1545064358-4601-1-git-send-email-pbonzini@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      efce3175
    • H
      hw/usb: Add generic sys-bus EHCI controller · 114529f7
      Hongbo Zhang 提交于
      This patch introduces a new system bus generic EHCI controller.
      For the system bus EHCI controller, we've already had "xlnx",
      "exynos4210", "tegra2", "ppc4xx" and "fusbh200", they are specific and
      only suitable for their own platforms, platforms such as an Arm server,
      may need a generic system bus EHCI controller, this patch creates it,
      and the kernel driver ehci_platform.c works well on it.
      Signed-off-by: NHongbo Zhang <hongbo.zhang@linaro.org>
      Message-id: 1546077657-22637-1-git-send-email-hongbo.zhang@linaro.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      114529f7
    • L
      usb: dev-mtp: fix memory leak in error path · 8e3759ef
      Li Qiang 提交于
      Spotted by Coverity: CID 1397074
      
      Fixes: c52d46e0Signed-off-by: NLi Qiang <liq3ea@163.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-id: 20190103132605.49476-1-liq3ea@163.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      8e3759ef
    • J
      usb: drop unnecessary usb_device_post_load checks · f3081539
      Jonathan Davies 提交于
      In usb_device_post_load, certain values of dev->setup_len or
      dev->setup_index can cause -EINVAL to be returned. One example is when
      setup_len exceeds 4096, the hard-coded value of sizeof(dev->data_buf).
      This can happen through legitimate guest activity and will cause all
      subsequent attempts to migrate the guest to fail in vmstate_load_state.
      
      The values of these variables can be set by USB packets originating in
      the guest. There are two ways in which they can be set: in
      do_token_setup and in do_parameter in hw/usb/core.c.
      
      It is easy to craft a USB packet in a guest that causes do_token_setup
      to set setup_len to a value larger than 4096. When this has been done
      once, all subsequent attempts to migrate the VM will fail in
      usb_device_post_load until the VM is next power-cycled or a
      smaller-sized USB packet is sent to the device.
      
      Sample code for achieving this in a VM started with "-device usb-tablet"
      running Linux with CONFIG_HIDRAW=y and HID_MAX_BUFFER_SIZE > 4096:
      
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        #include <unistd.h>
      
        int main() {
                 char buf[4097];
                 int fd = open("/dev/hidraw0", O_RDWR|O_NONBLOCK);
      
                 buf[0] = 0x1;
                 write(fd, buf, 4097);
      
                 return 0;
        }
      
      When this code is run in the VM, qemu will output:
      
        usb_generic_handle_packet: ctrl buffer too small (4097 > 4096)
      
      A subsequent attempt to migrate the VM will fail and output the
      following on the destination host:
      
        qemu-kvm: error while loading state for instance 0x0 of device '0000:00:06.7/1/usb-ptr'
        qemu-kvm: load of migration failed: Invalid argument
      
      The idea behind checking the values of setup_len and setup_index before
      they are used is correct, but doing it in usb_device_post_load feels
      arbitrary, and will cause unnecessary migration failures. Indeed, none
      of the commit messages for c60174e8, 9f8e9895 and 719ffe1f justify why
      post_load is the right place to do these checks. They correctly point
      out that the important thing to protect is the usb_packet_copy.
      
      Instead, the right place to do the checks is in do_token_setup and
      do_parameter. Indeed, there are already some checks here. We can examine
      each of the disjuncts currently tested in usb_device_post_load to see
      whether any need adding to do_token_setup or do_parameter to improve
      safety there:
      
        * dev->setup_index < 0
           - This test is not needed because setup_index is explicitly set to
      0 in do_token_setup and do_parameter.
      
        * dev->setup_len < 0
           - In both do_token_setup and do_parameter, the value of setup_len
      is computed by (s->setup_buf[7] << 8) | s->setup_buf[6]. Since
      s->setup_buf is a byte array and setup_len is an int32_t, it's
      impossible for this arithmetic to set setup_len's top bit, so it can
      never be negative.
      
        * dev->setup_index > dev->setup_len
           - Since setup_index is 0, this is equivalent to the previous test,
      so is redundant.
      
        * dev->setup_len > sizeof(dev->data_buf)
           - This condition is already explicitly checked in both
      do_token_setup and do_parameter.
      
      Hence there is no need to bolster the existing checks in do_token_setup
      or do_parameter, and we can safely remove these checks from
      usb_device_post_load without reducing safety but allowing migrations to
      proceed regardless of what USB packets have been generated by the guest.
      Signed-off-by: NJonathan Davies <jonathan.davies@nutanix.com>
      Message-Id: <20190107175117.23769-1-jonathan.davies@nutanix.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      f3081539
    • P
      Merge remote-tracking branch 'remotes/rth/tags/pull-axp-20190108' into staging · 625fa8de
      Peter Maydell 提交于
      Queued target/alpha patches
      
      # gpg: Signature made Tue 08 Jan 2019 02:14:18 GMT
      # gpg:                using RSA key 64DF38E8AF7E215F
      # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>"
      # Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F
      
      * remotes/rth/tags/pull-axp-20190108:
        pc-bios: Update palcode-clipper
        target/alpha: Fix user-only initialization of fpcr
        hw/alpha/typhoon: Stop calling cpu_unassigned_access()
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      625fa8de
    • R
      pc-bios: Update palcode-clipper · ac89de40
      Richard Henderson 提交于
      Do not double-update the PC after OPCDEC.
      
      Fixes: https://bugs.launchpad.net/bugs/1810545Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      ac89de40
    • R
      target/alpha: Fix user-only initialization of fpcr · 29eb5280
      Richard Henderson 提交于
      When the representation of fpcr was changed, the user-only
      initialization was not updated to match.  Oops.
      
      Fixes: f3d3aad4
      Fixes: https://bugs.launchpad.net/bugs/1701835Reported-by: NBruno Haible <bruno@clisp.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      29eb5280
    • P
      hw/alpha/typhoon: Stop calling cpu_unassigned_access() · b7ed683a
      Peter Maydell 提交于
      The typhoon MemoryRegionOps callbacks directly call
      cpu_unassigned_access(), presumably as the old-fashioned way
      to provoke a CPU exception.  This won't work since commit
      6ad4d7ee when we switched Alpha over to the
      transaction_failed hook API, because now cpu_unassigned_access()
      is a no-op for Alpha.
      
      Make the MemoryRegionOps callbacks use the read_with_attrs
      and write_with_attrs hooks, so they can signal a failure
      that should cause a CPU exception by returning MEMTX_ERROR.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-Id: <20181210173350.13073-1-peter.maydell@linaro.org>
      Tested-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: NRichard Henderson <richard.henderson@linaro.org>
      b7ed683a
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20190107' into staging · c102d947
      Peter Maydell 提交于
      target-arm queue:
       * Support u-boot 'noload' images for Arm (as used by NetBSD/evbarm GENERIC kernel)
       * hw/misc/tz-mpc: Fix value of BLK_MAX register
       * target/arm: Emit barriers for A32/T32 load-acquire/store-release insns
       * nRF51 SoC: add timer, GPIO, RNG peripherals
       * hw/arm/allwinner-a10: Add the 'A' SRAM and the SRAM controller
       * cpus.c: Fix race condition in cpu_stop_current()
       * hw/arm: versal: Plug memory leaks
       * Allow M profile boards to run even if -kernel not specified
       * gdbstub: Add multiprocess extension support for use when the
         board has multiple CPUs of different types (like the Xilinx Zynq boards)
       * target/arm: Don't decode S bit in SVE brk[ab] merging insns
       * target/arm: Convert ARM_TBFLAG_* to FIELDs
      
      # gpg: Signature made Mon 07 Jan 2019 16:29:52 GMT
      # gpg:                using RSA key 3C2525ED14360CDE
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>"
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>"
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20190107: (37 commits)
        Support u-boot noload images for arm as used by, NetBSD/evbarm GENERIC kernel.
        hw/misc/tz-mpc: Fix value of BLK_MAX register
        target/arm: Emit barriers for A32/T32 load-acquire/store-release insns
        arm: Add Clock peripheral stub to NRF51 SOC
        tests/microbit-test: Add Tests for nRF51 Timer
        arm: Instantiate NRF51 Timers
        hw/timer/nrf51_timer: Add nRF51 Timer peripheral
        tests/microbit-test: Add Tests for nRF51 GPIO
        arm: Instantiate NRF51 general purpose I/O
        hw/gpio/nrf51_gpio: Add nRF51 GPIO peripheral
        arm: Instantiate NRF51 random number generator
        hw/misc/nrf51_rng: Add NRF51 random number generator peripheral
        arm: Add header to host common definition for nRF51 SOC peripherals
        qtest: Add set_irq_in command to set IRQ/GPIO level
        hw/arm/allwinner-a10: Add the 'A' SRAM and the SRAM controller
        cpus.c: Fix race condition in cpu_stop_current()
        MAINTAINERS: Add ARM-related files for hw/[misc|input|timer]/
        hw/arm: versal: Plug memory leaks
        Revert "armv7m: Guard against no -kernel argument"
        arm/xlnx-zynqmp: put APUs and RPUs in separate CPU clusters
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c102d947
  3. 07 1月, 2019 3 次提交
    • N
      Support u-boot noload images for arm as used by, NetBSD/evbarm GENERIC kernel. · f831f955
      Nick Hudson 提交于
      noload kernels are loaded with the u-boot image header and as a result
      the header size needs adding to the entry point.  Fake up a hdr so the
      kernel image is loaded at the right address and the entry point is
      adjusted appropriately.
      
      The default location for the uboot file is 32MiB above bottom of DRAM.
      This matches the recommendation in Documentation/arm/Booting.
      
      Clarify the load_uimage API to state the passing of a load address when an
      image doesn't specify one, or when loading a ramdisk is expected.
      
      Adjust callers of load_uimage, etc.
      Signed-off-by: NNick Hudson <skrll@netbsd.org>
      Message-id: 11488a08-1fe0-a278-2210-deb64731107f@gmx.co.uk
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f831f955
    • P
      Merge remote-tracking branch 'remotes/elmarco/tags/machine-props-pull-request' into staging · 31ed4188
      Peter Maydell 提交于
      Generalize machine compatibility properties
      
      During "[PATCH v2 05/10] qom/globals: generalize
      object_property_set_globals()" review, Eduardo suggested to rework the
      GlobalProperty handling, so that -global is limited to QDev only and
      we avoid mixing the machine compats and the user-provided -global
      properties (instead of generalizing -global to various object kinds,
      like I proposed in v2).
      
      "qdev: do not mix compat props with global props" patch decouples a
      bit user-provided -global from machine compat properties. This allows
      to get rid of "user_provided" and "errp" fields in following patches.
      
      A new compat property "x-use-canonical-path-for-ramblock-id" is added
      to hostmem for legacy canonical path names, set to true for -file and
      -memfd with qemu < 4.0.
      
      (this series was initially titled "[PATCH v2 00/10] hostmem: use
      object "id" for memory region name with >= 3.1", but its focus is more
      in refactoring the global and compatilibity properties handling now)
      
      # gpg: Signature made Mon 07 Jan 2019 12:22:43 GMT
      # gpg:                using RSA key DAE8E10975969CE5
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>"
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>"
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * remotes/elmarco/tags/machine-props-pull-request: (28 commits)
        hostmem: use object id for memory region name with >= 4.0
        arm: replace instance_post_init()
        qdev-props: call object_apply_global_props()
        qdev-props: remove errp from GlobalProperty
        qdev-props: convert global_props to GPtrArray
        qdev: all globals are now user-provided
        qdev: make a separate helper function to apply compat properties
        compat: remove remaining PC_COMPAT macros
        include: remove compat.h
        compat: replace PC_COMPAT_2_1 & HW_COMPAT_2_1 macros
        compat: replace PC_COMPAT_2_2 & HW_COMPAT_2_2 macros
        compat: replace PC_COMPAT_2_3 & HW_COMPAT_2_3 macros
        compat: replace PC_COMPAT_2_4 & HW_COMPAT_2_4 macros
        compat: replace PC_COMPAT_2_5 & HW_COMPAT_2_5 macros
        compat: replace PC_COMPAT_2_6 & HW_COMPAT_2_6 macros
        compat: replace PC_COMPAT_2_7 & HW_COMPAT_2_7 macros
        compat: replace PC_COMPAT_2_8 & HW_COMPAT_2_8 macros
        compat: replace PC_COMPAT_2_9 & HW_COMPAT_2_9 macros
        compat: replace PC_COMPAT_2_10 & HW_COMPAT_2_10 macros
        compat: replace PC_COMPAT_2_11 & HW_COMPAT_2_11 macros
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      31ed4188
    • P
      hw/misc/tz-mpc: Fix value of BLK_MAX register · 619d54a8
      Peter Maydell 提交于
      In the TZ Memory Protection Controller, the BLK_MAX register is supposed
      to return the maximum permitted value of the BLK_IDX register. Our
      implementation incorrectly returned max+1 (ie the total number of
      valid index values, since BLK_IDX is zero-based).
      
      Correct this off-by-one error. Since we consistently initialize
      and use s->blk_max throughout the implementation as the 'size'
      of the LUT, just adjust the value we return when the guest reads
      the BLK_MAX register, rather than trying to change the semantics
      of the s->blk_max internal struct field.
      
      Fixes: https://bugs.launchpad.net/qemu/+bug/1806824Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20181213183249.3468-1-peter.maydell@linaro.org
      619d54a8