1. 19 3月, 2019 2 次提交
  2. 18 3月, 2019 1 次提交
    • M
      qga: Fix guest-get-fsinfo PCI address collection in Windows · 996b9cdc
      Matt Hines 提交于
      The Windows QEMU guest agent erroneously tries to collect PCI information
      directly from the physical drive. However, windows stores SCSI/IDE information
      with the drive and PCI information with the underlying storage controller
      This changes get_pci_info to use the physical drive's underlying storage
      controller to get PCI information.
      
      * Additionally Fixes incorrect size being passed to DeviceIoControl
        when getting volume extents. Can occasionally crash the guest agent
      Signed-off-by: NMatt Hines <mhines@scalecomputing.com>
      *fix up some checkpatch warnings
      *fix domain reporting and add some sanity checks for debug
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      996b9cdc
  3. 14 3月, 2019 1 次提交
  4. 13 3月, 2019 2 次提交
  5. 12 3月, 2019 2 次提交
  6. 11 3月, 2019 2 次提交
    • P
      configure: Disable W^X on OpenBSD · 7776ea6b
      Philippe Mathieu-Daudé 提交于
      Since OpenBSD 6.0 [1], W^X is enforced by default [2].
      TCG requires WX access. Disable W^X if it is available.
      This fixes:
      
        # lm32-softmmu/qemu-system-lm32
        Could not allocate dynamic translator buffer
      
        # sysctl kern.wxabort=1
        kern.wxabort: 0 -> 1
        # lm32-softmmu/qemu-system-lm32
        mmap: Not supported
        Abort trap (core dumped)
        # gdb -q lm32-softmmu/qemu-system-lm32 qemu-system-lm32.core
        (gdb) bt
        #0  0x000017e3c156c50a in _thread_sys___syscall () at {standard input}:5
        #1  0x000017e3c15e5d7a in *_libc_mmap (addr=Variable "addr" is not available.) at /usr/src/lib/libc/sys/mmap.c:47
        #2  0x000017e17d9abc8b in alloc_code_gen_buffer () at /usr/src/qemu/accel/tcg/translate-all.c:1064
        #3  0x000017e17d9abd04 in code_gen_alloc (tb_size=0) at /usr/src/qemu/accel/tcg/translate-all.c:1112
        #4  0x000017e17d9abe81 in tcg_exec_init (tb_size=0) at /usr/src/qemu/accel/tcg/translate-all.c:1149
        #5  0x000017e17d9897e9 in tcg_init (ms=0x17e45e456800) at /usr/src/qemu/accel/tcg/tcg-all.c:66
        #6  0x000017e17d9891b8 in accel_init_machine (acc=0x17e3c3f50800, ms=0x17e45e456800) at /usr/src/qemu/accel/accel.c:63
        #7  0x000017e17d989312 in configure_accelerator (ms=0x17e45e456800, progname=0x7f7fffff07b0 "lm32-softmmu/qemu-system-lm32") at /usr/src/qemu/accel/accel.c:111
        #8  0x000017e17d9d8616 in main (argc=1, argv=0x7f7fffff06b8, envp=0x7f7fffff06c8) at vl.c:4325
      
      [1] https://www.openbsd.org/faq/upgrade60.html
      [2] https://undeadly.org/cgi?action=article&sid=20160527203200Signed-off-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20190307142822.8531-3-philmd@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7776ea6b
    • A
      configure: Enable werror for git worktrees · fd73745d
      Alexey Kardashevskiy 提交于
      The configure script checks multiple times whether it works in a git
      repository and it does this by "test -e "${source_path}/.git" in 4 cases
      but in one case where it tries to enable werror "-d" is used there which
      fails on git worktrees as .git is a file then and not a directory.
      
      This changes the test to "-e" as other occurrences.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Message-Id: <20190228043503.68494-1-aik@ozlabs.ru>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      fd73745d
  7. 08 3月, 2019 5 次提交
  8. 07 3月, 2019 2 次提交
  9. 28 2月, 2019 1 次提交
  10. 26 2月, 2019 2 次提交
    • D
      authz: delete existing ACL implementation · b76806d4
      Daniel P. Berrange 提交于
      The 'qemu_acl' type was a previous non-QOM based attempt to provide an
      authorization facility in QEMU. Because it is non-QOM based it cannot be
      created via the command line and requires special monitor commands to
      manipulate it.
      
      The new QAuthZ subclasses provide a superset of the functionality in
      qemu_acl, so the latter can now be deleted. The HMP 'acl_*' monitor
      commands are converted to use the new QAuthZSimple data type instead
      in order to provide temporary backwards compatibility.
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      b76806d4
    • D
      authz: add QAuthZPAM object type for authorizing using PAM · 8953caf3
      Daniel P. Berrange 提交于
      Add an authorization backend that talks to PAM to check whether the user
      identity is allowed. This only uses the PAM account validation facility,
      which is essentially just a check to see if the provided username is permitted
      access. It doesn't use the authentication or session parts of PAM, since
      that's dealt with by the relevant part of QEMU (eg VNC server).
      
      Consider starting QEMU with a VNC server and telling it to use TLS with
      x509 client certificates and configuring it to use an PAM to validate
      the x509 distinguished name. In this example we're telling it to use PAM
      for the QAuthZ impl with a service name of "qemu-vnc"
      
       $ qemu-system-x86_64 \
           -object tls-creds-x509,id=tls0,dir=/home/berrange/security/qemutls,\
                   endpoint=server,verify-peer=yes \
           -object authz-pam,id=authz0,service=qemu-vnc \
           -vnc :1,tls-creds=tls0,tls-authz=authz0
      
      This requires an /etc/pam/qemu-vnc file to be created with the auth
      rules. A very simple file based whitelist can be setup using
      
        $ cat > /etc/pam/qemu-vnc <<EOF
        account         requisite       pam_listfile.so item=user sense=allow file=/etc/qemu/vnc.allow
        EOF
      
      The /etc/qemu/vnc.allow file simply contains one username per line. Any
      username not in the file is denied. The usernames in this example are
      the x509 distinguished name from the client's x509 cert.
      
        $ cat > /etc/qemu/vnc.allow <<EOF
        CN=laptop.berrange.com,O=Berrange Home,L=London,ST=London,C=GB
        EOF
      
      More interesting would be to configure PAM to use an LDAP backend, so
      that the QEMU authorization check data can be centralized instead of
      requiring each compute host to have file maintained.
      
      The main limitation with this PAM module is that the rules apply to all
      QEMU instances on the host. Setting up different rules per VM, would
      require creating a separate PAM service name & config file for every
      guest. An alternative approach for the future might be to not pass in
      the plain username to PAM, but instead combine the VM name or UUID with
      the username. This requires further consideration though.
      Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      8953caf3
  11. 23 2月, 2019 1 次提交
  12. 22 2月, 2019 3 次提交
  13. 21 2月, 2019 1 次提交
  14. 15 2月, 2019 1 次提交
  15. 14 2月, 2019 5 次提交
  16. 06 2月, 2019 1 次提交
  17. 05 2月, 2019 3 次提交
  18. 04 2月, 2019 2 次提交
  19. 01 2月, 2019 2 次提交
    • D
      ui: remove support for SDL1.2 in favour of SDL2 · 0015ca5c
      Daniel P. Berrangé 提交于
      SDL1.2 was deprecated in the 2.12.0 release with:
      
        commit e52c6ba3
        Author: Daniel P. Berrange <berrange@redhat.com>
        Date:   Mon Jan 15 14:25:33 2018 +0000
      
          ui: deprecate use of SDL 1.2 in favour of 2.0 series
      
          The SDL 2.0 release was made in Aug, 2013:
      
            https://www.libsdl.org/release/
      
          That will soon be 4 + 1/2 years ago, which is enough time to consider
          the 2.0 series widely supported.
      
          Thus we deprecate the SDL 1.2 support, which will allow us to delete it
          in the last release of 2018. By this time, SDL 2.0 will be more than 5
          years old.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
          Message-id: 20180115142533.24585-1-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      
      It is thus able to be removed in the 3.1.0 release.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-Id: <20180822131554.3398-4-berrange@redhat.com>
      
      [ kraxel: rebase ]
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      0015ca5c
    • P
      configure: LM32 Milkymist Texture Mapping Unit (tmu2) also depends of X11 · 99e1a93b
      Philippe Mathieu-Daudé 提交于
      Commit 5f9b1e35 remove the dependency between OpenGL and X11.
      However the milkymist-tmu2 device do require X11.
      When using SDL, the configure script sets need_x11=yes, so the X11
      flags are populated to the makefiles.
      When building without SDL, X11 is not pulled and populated, leading
      to a link failure:
      
          LINK    lm32-softmmu/qemu-system-lm32
        hw/lm32/milkymist.o: In function `milkymist_tmu2_create':
        hw/lm32/milkymist-hw.h:114: undefined reference to `XOpenDisplay'
        hw/lm32/milkymist-hw.h:140: undefined reference to `XFree'
        hw/lm32/milkymist-hw.h:141: undefined reference to `XCloseDisplay'
        hw/lm32/milkymist-hw.h:130: undefined reference to `XCloseDisplay'
        ../hw/display/milkymist-tmu2.o: In function `tmu2_glx_init':
        hw/display/milkymist-tmu2.c:112: undefined reference to `XOpenDisplay'
        hw/display/milkymist-tmu2.c:123: undefined reference to `XFree'
        collect2: error: ld returned 1 exit status
        gmake[1]: *** [Makefile:199: qemu-system-lm32] Error 1
      
      Enforce the X11 dependency when the LM32 target is built.
      This will allow us to build QEMU without SDL.
      Signed-off-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-id: 20190130120005.23123-3-philmd@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      99e1a93b
  20. 31 1月, 2019 1 次提交
    • R
      qemu-io: Add generic function for reinitializing optind. · d339d766
      Richard W.M. Jones 提交于
      On FreeBSD 11.2:
      
        $ nbdkit memory size=1M --run './qemu-io -f raw -c "aio_write 0 512" $nbd'
        Parsing error: non-numeric argument, or extraneous/unrecognized suffix -- aio_write
      
      After main option parsing, we reinitialize optind so we can parse each
      command.  However reinitializing optind to 0 does not work on FreeBSD.
      What happens when you do this is optind remains 0 after the option
      parsing loop, and the result is we try to parse argv[optind] ==
      argv[0] == "aio_write" as if it was the first parameter.
      
      The FreeBSD manual page says:
      
        In order to use getopt() to evaluate multiple sets of arguments, or to
        evaluate a single set of arguments multiple times, the variable optreset
        must be set to 1 before the second and each additional set of calls to
        getopt(), and the variable optind must be reinitialized.
      
      (From the rest of the man page it is clear that optind must be
      reinitialized to 1).
      
      The glibc man page says:
      
        A program that scans multiple argument vectors,  or  rescans  the  same
        vector  more than once, and wants to make use of GNU extensions such as
        '+' and '-' at  the  start  of  optstring,  or  changes  the  value  of
        POSIXLY_CORRECT  between scans, must reinitialize getopt() by resetting
        optind to 0, rather than the traditional value of 1.  (Resetting  to  0
        forces  the  invocation  of  an  internal  initialization  routine that
        rechecks POSIXLY_CORRECT and checks for GNU extensions in optstring.)
      
      This commit introduces an OS-portability function called
      qemu_reset_optind which provides a way of resetting optind that works
      on FreeBSD and platforms that use optreset, while keeping it the same
      as now on other platforms.
      
      Note that the qemu codebase sets optind in many other places, but in
      those other places it's setting a local variable and not using getopt.
      This change is only needed in places where we are using getopt and the
      associated global variable optind.
      Signed-off-by: NRichard W.M. Jones <rjones@redhat.com>
      Message-id: 20190118101114.11759-2-rjones@redhat.com
      Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      d339d766