All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

  1. 22 Feb, 2013 14 commits
  2. 21 Feb, 2013 26 commits
    • Anthony Liguori's avatar
      gtk: suppress accelerators from the File menu when grab is active · 73d4dc71
      Anthony Liguori authored
      If you're full screen, you probably expect Ctrl-Q to go to the guest,
      not the host.  I think restricting certain menus is the right way to
      handle this generally speaking.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-10-git-send-email-aliguori@us.ibm.com
      73d4dc71
    • Anthony Liguori's avatar
      gtk: make default UI (v5) · 15546425
      Anthony Liguori authored
      A user can still enable SDL with '-sdl' or '-display sdl' but start making the
      default display GTK by default.
      
      I'd also like to deprecate the SDL display and remove it in a few releases.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-9-git-send-email-aliguori@us.ibm.com
      15546425
    • Anthony Liguori's avatar
      gtk: add translation support (v5) · 834574ea
      Anthony Liguori authored
      This includes a de_DE translation from Kevin Wolf and an it translation from
      Paolo Bonzini.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-8-git-send-email-aliguori@us.ibm.com
      834574ea
    • Anthony Liguori's avatar
      gtk: add support for screen scaling and full screen (v5) · c6158483
      Anthony Liguori authored
      Basic menu items to enter full screen mode and zoom in/out.  Unlike SDL, we
      don't allow arbitrary scaling based on window resizing.  The current behavior
      with SDL causes a lot of problems for me.
      
      Sometimes I accidentally resize the window a tiny bit while trying to move it
      (Ubuntu's 1-pixel window decorations don't help here).  After that, scaling is
      now active and if the screen changes size again, badness ensues since the
      aspect ratio is skewed.
      
      Allowing zooming by 25% in and out should cover most use cases.  We can add a
      more flexible scaling later but for now, I think this is a more friendly
      behavior.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-7-git-send-email-aliguori@us.ibm.com
      c6158483
    • Anthony Liguori's avatar
      gtk: add support for input grabbing (v2) · 5104a1f6
      Anthony Liguori authored
      There is a small deviation from SDL's behavior here.  Instead of Ctrl+Alt
      triggering grab, we now use Ctrl-Alt-g to trigger grab.
      
      GTK will not accept Ctrl+Alt as an accelerator since it just consists of
      modifiers.  Having grab as a proper accelerator is important as it allows a user
      to override the accelerator for accessibility purposes.
      
      We also are not automatically grabbing on left-click.  Besides the inability to
      tie mouse clicks to an accelerator, I think this behavior is hard to discover
      and since it only happens depending on the guest state, it can lead to confusing
      behavior.
      
      This can be changed in the future if there's a strong resistence to dropping
      left-click-to-grab, but I think we're better off dropping it.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-6-git-send-email-aliguori@us.ibm.com
      5104a1f6
    • Anthony Liguori's avatar
      gtk: add virtual console support (v2) · d861def3
      Anthony Liguori authored
      This enables VteTerminal to be used to render the text consoles.  VteTerminal is
      the same widget used by gnome-terminal which means it's VT100 emulation is as
      good as they come.
      
      It's also screen reader accessible, supports copy/paste, proper scrolling and
      most of the other features you would expect from a terminal widget.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-5-git-send-email-aliguori@us.ibm.com
      d861def3
    • Anthony Liguori's avatar
      ui: add basic GTK gui (v5) · a4ccabcf
      Anthony Liguori authored
      This is minimalistic and just contains the basic widget infrastructure.  The GUI
      consists of a menu and a GtkNotebook.  To start with, the notebook has its tabs
      hidden which provides a UI that looks very similar to SDL with the exception of
      the menu bar.
      
      The menu bar allows a user to toggle the visibility of the tabs.  Cairo is used
      for rendering.
      
      I used gtk-vnc as a reference.  gtk-vnc solves the same basic problems as QEMU
      since it was originally written as a remote display for QEMU.  So for the most
      part, the approach to rendering and keyboard handling should be pretty solid for
      GTK.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-4-git-send-email-aliguori@us.ibm.com
      a4ccabcf
    • Anthony Liguori's avatar
      console: allow VCs to be overridden by UI · d82831db
      Anthony Liguori authored
      We want to expose VCs using a VteTerminal widget.  We need access to provide our
      own CharDriverState in order to do this.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-3-git-send-email-aliguori@us.ibm.com
      d82831db
    • Anthony Liguori's avatar
      build: disable Wstrict-prototypes · 22bc9a46
      Anthony Liguori authored
      GTK won't build with strict-prototypes due to gtkitemfactory.h:
      
          /* We use () here to mean unspecified arguments. This is deprecated
           * as of C99, but we can't change it without breaking compatibility.
           * (Note that if we are included from a C++ program () will mean
           * (void) so an explicit cast will be needed.)
           */
          typedef	void	(*GtkItemFactoryCallback)  ();
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      Message-id: 1361367806-4599-2-git-send-email-aliguori@us.ibm.com
      22bc9a46
    • Peter Crosthwaite's avatar
      qom/object.c: Allow itf cast with num_itfs = 0 · 00e2ceae
      Peter Crosthwaite authored
      num_interfaces only tells you how many interfaces the concrete child class has
      (as defined in the TypeInfo). This means if you have a child class which defines
      no interfaces of its own, but its parent has interfaces you cannot cast to those
      parent interfaces.
      
      Fixed changing the guard to check the class->interfaces list instead (which is
      a complete flattened list of implemented interfaces).
      Signed-off-by: default avatarPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Message-id: a8c2db3b9b1f3c4bb81aca352b69e33260f36545.1361246206.git.peter.crosthwaite@xilinx.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      00e2ceae
    • Peter Crosthwaite's avatar
      qom/object.c: Reset interface list on inheritance · 3e407de4
      Peter Crosthwaite authored
      The QOM framework will attempt the recreate a classes interface list from
      scratch for each class. This means that a child class should zero out the
      list of interfaces when cloned from the parent class.
      
      Currently the list is memcpy()d from the parent to the child. As the interface
      list is just a pointer to a list, this means the parent and child will share
      the same list of interfaces. When the child inits, it will append its own
      interfaces to the parents list. This is incorrect as the parent should not pick
      up its childs interfaces.
      
      This actually causes an infinite loop at class init time, as the child will
      iterate through the parent interface list adding each itf to its own list(in
      type_initialize()). As the list is (erroneously) shared, the new interface
      instances for the child are appended to the parent, and the iterator never hits
      the tail and loops forever.
      Signed-off-by: default avatarPeter Crosthwaite <peter.crosthwaite@xilinx.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1f58d2b629d82865dbb2fd5ba8445854049c4382.1361246206.git.peter.crosthwaite@xilinx.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      3e407de4
    • Gerd Hoffmann's avatar
      vga: fix byteswapping. · b1424e03
      Gerd Hoffmann authored
      In case host and guest endianness differ the vga code first creates
      a shared surface (using qemu_create_displaysurface_from), then goes
      patch the surface format to indicate that the bytes must be swapped.
      
      The switch to pixman broke that hack as the format patching isn't
      propagated into the pixman image, so ui code using the pixman image
      directly (such as vnc) uses the wrong format.
      
      Fix that by adding a byteswap parameter to
      qemu_create_displaysurface_from, so we'll use the correct format
      when creating the surface (and the pixman image) and don't have
      to patch the format afterwards.
      
      [ v2: unbreak xen build ]
      
      Cc: qemu-stable@nongnu.org
      Cc: mark.cave-ayland@ilande.co.uk
      Cc: agraf@suse.de
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1361349432-23884-1-git-send-email-kraxel@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      b1424e03
    • Peter Maydell's avatar
      Remove elderly top level TODO file · ba43da36
      Peter Maydell authored
      The top level TODO file hasn't been touched since 2008, so it's now
      an unhelpful and out of date mix of things that have already been done,
      things that don't make sense any more and things which could in theory
      be done but are not in practice important enough (or we'd have done
      them some time in the last five years). Remove it. The bug tracking
      system is probably a better place to track TODO items if we want to
      do so.
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1361377462-19816-1-git-send-email-peter.maydell@linaro.org
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      ba43da36
    • Jason Wang's avatar
      help: add docs for multiqueue tap options · 2ca81baa
      Jason Wang authored
      Cc: Markus Armbruster <armbru@redhat.com>
      Cc: Jason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Message-id: 1361354641-51969-1-git-send-email-jasowang@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      2ca81baa
    • Stefan Hajnoczi's avatar
      aio: support G_IO_HUP and G_IO_ERR · b5a01a70
      Stefan Hajnoczi authored
      aio-posix.c could not take advantage of G_IO_HUP and G_IO_ERR because
      select(2) does not have equivalent events.  Now that g_poll(3) is used
      we can support G_IO_HUP and G_IO_ERR.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-11-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      b5a01a70
    • Stefan Hajnoczi's avatar
      aio: convert aio_poll() to g_poll(3) · 6b5f8762
      Stefan Hajnoczi authored
      AioHandler already has a GPollFD so we can directly use its
      events/revents.
      
      Add the int pollfds_idx field to AioContext so we can map g_poll(3)
      results back to AioHandlers.
      
      Reuse aio_dispatch() to invoke handlers after g_poll(3).
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-10-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      6b5f8762
    • Stefan Hajnoczi's avatar
      aio: extract aio_dispatch() from aio_poll() · d0c8d2c0
      Stefan Hajnoczi authored
      We will need to loop over AioHandlers calling ->io_read()/->io_write()
      when aio_poll() is converted from select(2) to g_poll(2).
      
      Luckily the code for this already exists, extract it into the new
      aio_dispatch() function.
      
      Two small changes:
      
       * aio_poll() checks !node->deleted to avoid calling handlers that have
         been deleted.
      
       * Fix typo 'then' -> 'them' in aio_poll() comment.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-9-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      d0c8d2c0
    • Stefan Hajnoczi's avatar
      main-loop: drop rfds/wfds/xfds for good · 9cbaacf9
      Stefan Hajnoczi authored
      Now that all *_fill() and *_poll() functions use GPollFD we no longer
      need rfds/wfds/xfds or pollfds_from_select()/pollfds_to_select().
      
      >From now on everything uses GPollFD.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-8-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      9cbaacf9
    • Stefan Hajnoczi's avatar
      iohandler: switch to GPollFD · a3e4b4a8
      Stefan Hajnoczi authored
      Convert iohandler_select_fill() and iohandler_select_poll() to use
      GPollFD instead of rfds/wfds/xfds.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-7-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      a3e4b4a8
    • Stefan Hajnoczi's avatar
      slirp: switch to GPollFD · 8917c3bd
      Stefan Hajnoczi authored
      Slirp uses rfds/wfds/xfds more extensively than other QEMU components.
      
      The rarely-used out-of-band TCP data feature is used.  That means we
      need the full table of select(2) to g_poll(3) events:
      
        rfds -> G_IO_IN | G_IO_HUP | G_IO_ERR
        wfds -> G_IO_OUT | G_IO_ERR
        xfds -> G_IO_PRI
      
      I came up with this table by looking at Linux fs/select.c which maps
      select(2) to poll(2) internally.
      
      Another detail to watch out for are the global variables that reference
      rfds/wfds/xfds during slirp_select_poll().  sofcantrcvmore() and
      sofcantsendmore() use these globals to clear fd_set bits.  When
      sofcantrcvmore() is called, the wfds bit is cleared so that the write
      handler will no longer be run for this iteration of the event loop.
      
      This actually seems buggy to me since TCP connections can be half-closed
      and we'd still want to handle data in half-duplex fashion.  I think the
      real intention is to avoid running the read/write handler when the
      socket has been fully closed.  This is indicated with the SS_NOFDREF
      state bit so we now check for it before invoking the TCP write handler.
      Note that UDP/ICMP code paths don't care because they are
      connectionless.
      
      Note that slirp/ has a lot of tabs and sometimes mixed tabs with spaces.
      I followed the style of the surrounding code.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-6-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      8917c3bd
    • Stefan Hajnoczi's avatar
      slirp: slirp/slirp.c coding style cleanup · cf1d078e
      Stefan Hajnoczi authored
      The slirp glue code uses tabs in some places.  Since the next patch will
      modify the file, convert tabs to spaces and fix checkpatch.pl issues.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-5-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      cf1d078e
    • Stefan Hajnoczi's avatar
      main-loop: switch POSIX glib integration to GPollFD · 48ce11ff
      Stefan Hajnoczi authored
      Convert glib file descriptor polling from rfds/wfds/xfds to GPollFD.
      
      The Windows code still needs poll_fds[] and n_poll_fds but they can now
      become local variables.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-4-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      48ce11ff
    • Stefan Hajnoczi's avatar
      main-loop: switch to g_poll() on POSIX hosts · cbff4b34
      Stefan Hajnoczi authored
      Use g_poll(3) instead of select(2).  Well, this is kind of a cheat.
      It's true that we're now using g_poll(3) on POSIX hosts but the *_fill()
      and *_poll() functions are still using rfds/wfds/xfds.
      
      We've set the scene to start converting *_fill() and *_poll() functions
      step-by-step until no more rfds/wfds/xfds users remain.  Then we'll drop
      the temporary gpollfds_from_select() and gpollfds_to_select() functions
      and be left with native g_poll(2).
      
      On Windows things are a little crazy: convert from rfds/wfds/xfds to
      GPollFDs, back to rfds/wfds/xfds, call select(2), rfds/wfds/xfds back to
      GPollFDs, and finally back to rfds/wfds/xfds again.  This is only
      temporary and keeps the Windows build working through the following
      patches.  We'll drop this excessive conversion later and be left with a
      single GPollFDs -> select(2) -> GPollFDs sequence that allows Windows to
      use select(2) while the rest of QEMU only knows about GPollFD.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-3-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      cbff4b34
    • Stefan Hajnoczi's avatar
      main-loop: fix select_ret uninitialized variable warning · 134a03e0
      Stefan Hajnoczi authored
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
      Message-id: 1361356113-11049-2-git-send-email-stefanha@redhat.com
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      134a03e0
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'kraxel/usb.78' into staging · 70aa41b5
      Anthony Liguori authored
      # By Gerd Hoffmann
      # Via Gerd Hoffmann
      * kraxel/usb.78:
        uas-uas: usb3 streams
        usb-xhci: usb3 streams
        usb-core: usb3 streams
        usb: fix endpoint descriptor ordering
        usb-redir: simplify packet copy
        usb: make usb_packet_copy operate on combined packets
        usb: add usb_ep_set_halted
        usb-host: remove usb_host_device_close
        usb-host: move legacy cmd line bits
        usb-storage: use scsi_req_enqueue return value
        allow disabling usb smartcard support
        make usb devices configurable
        fix scripts/make_device_config.sh
        usb: Makefile cleanup
      70aa41b5
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'stefanha/trivial-patches' into staging · 259dc0c1
      Anthony Liguori authored
      # By Alin Tomescu (1) and others
      # Via Stefan Hajnoczi
      * stefanha/trivial-patches:
        .gitignore: Ignore optionrom/*.asm
        ppc: fix bamboo >256MB RAM initialization in hw/ppc4xx_devs.c
        Add some missing qtest binaries to .gitignore
        xilinx_axienet.c: Assert no error when making link
        Remove forward declaration of non-existant variable
      259dc0c1