1. 08 3月, 2019 3 次提交
    • P
      tpm: express dependencies with Kconfig · 7aaa6a16
      Paolo Bonzini 提交于
      This automatically removes the TPM backends from the
      binary altogether if no front-ends are selected.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7aaa6a16
    • P
      minikconfig: implement allnoconfig and defconfig modes · f3494749
      Paolo Bonzini 提交于
      Apart from defconfig (which is a no-op),
      allyesconfig/allnoconfig/randcondfig can be implemented simply by ignoring
      the RHS of assignments and "default" statements.  The RHS is replaced
      respectively by "true", "false" or a random value.
      
      However, allyesconfig and randconfig do not quite work, because all the
      files for hw/ARCH/Kconfig are sourced and therefore you could end up
      enabling some ARM boards in x86 or things like that.  This is left for
      future work, but I am leaving it in to help debugging minikconf itself.
      
      allnoconfig mode is tied to a new configure option, --without-default-devices.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f3494749
    • P
      build: switch to Kconfig · e0e312f3
      Paolo Bonzini 提交于
      The make_device_config.sh script is replaced by minikconf, which
      is modified to support the same command line as its predecessor.
      
      The roots of the parsing are default-configs/*.mak, Kconfig.host and
      hw/Kconfig.  One difference with make_device_config.sh is that all symbols
      have to be defined in a Kconfig file, including those coming from the
      configure script.  This is the reason for the Kconfig.host file introduced
      in the previous patch. Whenever a file in default-configs/*.mak used
      $(...) to refer to a config-host.mak symbol, this is replaced by a
      Kconfig dependency; this part must be done already in this patch
      for bisectability.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NYang Zhong <yang.zhong@intel.com>
      Acked-by: NThomas Huth <thuth@redhat.com>
      Message-Id: <20190123065618.3520-28-yang.zhong@intel.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e0e312f3
  2. 07 3月, 2019 1 次提交
  3. 28 2月, 2019 1 次提交
  4. 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
  5. 23 2月, 2019 1 次提交
  6. 22 2月, 2019 3 次提交
  7. 21 2月, 2019 1 次提交
  8. 15 2月, 2019 1 次提交
  9. 14 2月, 2019 5 次提交
  10. 06 2月, 2019 1 次提交
  11. 05 2月, 2019 3 次提交
  12. 04 2月, 2019 2 次提交
  13. 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
  14. 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
  15. 24 1月, 2019 4 次提交
  16. 22 1月, 2019 1 次提交
  17. 21 1月, 2019 3 次提交
    • D
      sdl: add support for high resolution window icon · a442fe2f
      Daniel P. Berrangé 提交于
      Modern desktop environments can render icons at very large sizes,
      especially with high DPI screens. Providing a 32x32 pixel bitmap is
      nowhere near sufficient anymore.
      
      When displayed in GNOME shell the QEMU icon looks awful, having been
      scaled up to at least x4 its base size. This is compounded by the fact
      that the BMP file doesn't do transparency, so while we've removed white
      pixels, we still have anti-aliased nearly-white pixels which make the
      logo look appalling on black backgrounds.
      
      Loading a high resolution PNG icon addresses both problems, but requires
      use of the extra SDL2_image library.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-id: 20190110120047.25369-4-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      a442fe2f
    • D
      ui: fix icon display for GTK frontend under GNOME Shell with Wayland · 67ea9546
      Daniel P. Berrangé 提交于
      The icon associated with a GtkWindow is just a hint to window managers
      and not all of them will honour it. Some will instead want to show the
      icon listed by the .desktop file. The desktop file is located based on
      the application ID, which is set using g_set_prgname. QEMU has not
      historically provided a desktop file or set its app ID, so it got a
      broken icon in GNOME shell, which is now fixed.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-id: 20190110120047.25369-3-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      67ea9546
    • D
      ui: install logo icons to $prefix/share/icons · a8260d38
      Daniel P. Berrangé 提交于
      QEMU currently installs logos to $prefix/share/qemu/ which means no GUI
      toolkit or applications can find them by default.
      
      The accepted standards for desktop applications declare that application
      logos / icons should be installed under $prefix/share/icons, so use this
      directory location.
      
      Pre-rendered icons are provided at the standard sizes expected for GUI
      applications, along with the scalable SVG, to ensure maximum portability.
      
      The PNGs are rendered from the SVG using inkscape, however, this is not
      wired up into the default make rules to avoid requiring inkscape as a
      mandatory tool in build systems / developer workstations.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-id: 20190110120047.25369-2-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      a8260d38
  18. 18 1月, 2019 2 次提交
  19. 14 1月, 2019 2 次提交
  20. 12 1月, 2019 1 次提交