1. 12 5月, 2017 4 次提交
  2. 10 5月, 2017 1 次提交
    • C
      virtfs: allow a device id to be specified in the -virtfs option · 3baa0a6a
      Chris Webb 提交于
      When using a virtfs root filesystem, the mount_tag needs to be set to
      /dev/root. This can be done long-hand as
      
        -fsdev local,id=root,path=/path/to/rootfs,...
        -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root
      
      but the -virtfs shortcut cannot be used as it hard-codes the device identifier
      to match the mount_tag, and device identifiers may not contain '/':
      
        $ qemu-system-x86_64 -virtfs local,path=/foo,mount_tag=/dev/root,security_model=passthrough
        qemu-system-x86_64: -virtfs local,path=/foo,mount_tag=/dev/root,security_model=passthrough: duplicate fsdev id: /dev/root
      
      To support this case using -virtfs, we allow the device identifier to be
      specified explicitly when the mount_tag is not suitable:
      
        -virtfs local,id=root,path=/path/to/rootfs,mount_tag=/dev/root,...
      Signed-off-by: NChris Webb <chris@arachsys.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      3baa0a6a
  3. 05 5月, 2017 2 次提交
  4. 04 5月, 2017 1 次提交
  5. 27 4月, 2017 1 次提交
  6. 22 4月, 2017 1 次提交
    • P
      xen: use libxendevice model to restrict operations · 1c599472
      Paul Durrant 提交于
      This patch adds a command-line option (-xen-domid-restrict) which will
      use the new libxendevicemodel API to restrict devicemodel [1] operations
      to the specified domid. (Such operations are not applicable to the xenpv
      machine type).
      
      This patch also adds a tracepoint to allow successful enabling of the
      restriction to be monitored.
      
      [1] I.e. operations issued by libxendevicemodel. Operation issued by other
          xen libraries (e.g. libxenforeignmemory) are currently still unrestricted
          but this will be rectified by subsequent patches.
      Signed-off-by: NPaul Durrant <paul.durrant@citrix.com>
      Reviewed-by: NStefano Stabellini <sstabellini@kernel.org>
      1c599472
  7. 14 3月, 2017 1 次提交
  8. 09 3月, 2017 1 次提交
  9. 07 3月, 2017 1 次提交
    • M
      block: Initial implementation of -blockdev · 42e5f393
      Markus Armbruster 提交于
      The new command line option -blockdev works like QMP command
      blockdev-add.
      
      The option argument may be given in JSON syntax, exactly as in QMP.
      Example usage:
      
          -blockdev '{"node-name": "foo", "driver": "raw", "file": {"driver": "file", "filename": "foo.img"} }'
      
      The JSON argument doesn't exactly blend into the existing option
      syntax, so the traditional KEY=VALUE,... syntax is also supported,
      using dotted keys to do the nesting:
      
          -blockdev node-name=foo,driver=raw,file.driver=file,file.filename=foo.img
      
      This does not yet support lists, but that will be addressed shortly.
      
      Note that calling qmp_blockdev_add() (say via qmp_marshal_block_add())
      right away would crash.  We need to stash the configuration for later
      instead.  This is crudely done, and bypasses QemuOpts, even though
      storing configuration is what QemuOpts is for.  Need to revamp option
      infrastructure to support QAPI types like BlockdevOptions.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1488317230-26248-22-git-send-email-armbru@redhat.com>
      42e5f393
  10. 05 3月, 2017 1 次提交
    • M
      qmp: Dumb down how we run QMP command registration · 05875687
      Markus Armbruster 提交于
      The way we get QMP commands registered is high tech:
      
      * qapi-commands.py generates qmp_init_marshal() that does the actual work
      
      * it also generates the magic to register it as a MODULE_INIT_QAPI
        function, so it runs when someone calls
        module_call_init(MODULE_INIT_QAPI)
      
      * main() calls module_call_init()
      
      QEMU needs to register a few non-qapified commands.  Same high tech
      works: monitor.c has its own qmp_init_marshal() along with the magic
      to make it run in module_call_init(MODULE_INIT_QAPI).
      
      QEMU also needs to unregister commands that are not wanted in this
      build's configuration (commit 5032a16d).  Simple enough:
      qmp_unregister_commands_hack().  The difficulty is to make it run
      after the generated qmp_init_marshal().  We can't simply run it in
      monitor.c's qmp_init_marshal(), because the order in which the
      registered functions run is indeterminate.  So qmp_init_marshal()
      registers qmp_unregister_commands_hack() separately.  Since
      registering *appends* to the list of registered functions, this will
      make it run after all the functions that have been registered already.
      
      I suspect it takes a long and expensive computer science education to
      not find this silly.
      
      Dumb it down as follows:
      
      * Drop MODULE_INIT_QAPI entirely
      
      * Give the generated qmp_init_marshal() external linkage.
      
      * Call it instead of module_call_init(MODULE_INIT_QAPI)
      
      * Except in QEMU proper, call new monitor_init_qmp_commands() that in
        turn calls the generated qmp_init_marshal(), registers the
        additional commands and unregisters the unwanted ones.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1488544368-30622-5-git-send-email-armbru@redhat.com>
      05875687
  11. 03 3月, 2017 2 次提交
  12. 24 2月, 2017 1 次提交
  13. 22 2月, 2017 1 次提交
  14. 21 2月, 2017 2 次提交
    • M
      hw: Deprecate -drive if=scsi with non-onboard HBAs · a64aa578
      Markus Armbruster 提交于
      Block backends defined with "-drive if=T" with T other than "none" are
      meant to be picked up by machine initialization code: a suitable
      frontend gets created and wired up automatically.
      
      Drives defined with if=scsi are also picked up by SCSI HBAs added with
      -device, unlike other interface types.  Deprecate this usage, as follows.
      
      Create the frontends for onboard HBAs in machine initialization code,
      exactly like we do for if=ide and other interface types.  Change
      scsi_legacy_handle_cmdline() to create a frontend only when it's still
      missing, and warn that this usage is deprecated.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <1487161136-9018-3-git-send-email-armbru@redhat.com>
      a64aa578
    • M
      hw/scsi: Concentrate -drive if=scsi auto-create in one place · fb8b660e
      Markus Armbruster 提交于
      The logic to create frontends for -drive if=scsi is in SCSI HBAs.  For
      all other interface types, it's in machine initialization code.
      
      A few machine types create the SCSI HBAs necessary for that.  That's
      also not done for other interface types.
      
      I'm going to deprecate these SCSI eccentricities.  In preparation for
      that, create the frontends in main() instead of the SCSI HBAs, by
      calling new function scsi_legacy_handle_cmdline() there.
      
      Note that not all SCSI HBAs create frontends.  Take care not to change
      that.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <1487161136-9018-2-git-send-email-armbru@redhat.com>
      Acked-By: NPaolo Bonzini <pbonzini@redhat.com>
      fb8b660e
  15. 16 2月, 2017 4 次提交
  16. 01 2月, 2017 1 次提交
  17. 28 1月, 2017 4 次提交
  18. 25 1月, 2017 1 次提交
  19. 24 1月, 2017 2 次提交
  20. 20 1月, 2017 1 次提交
  21. 17 1月, 2017 3 次提交
  22. 13 1月, 2017 1 次提交
  23. 06 1月, 2017 1 次提交
    • P
      record/replay: add network support · 646c5478
      Pavel Dovgalyuk 提交于
      This patch adds support of recording and replaying network packets in
      irount rr mode.
      
      Record and replay for network interactions is performed with the network filter.
      Each backend must have its own instance of the replay filter as follows:
       -netdev user,id=net1 -device rtl8139,netdev=net1
       -object filter-replay,id=replay,netdev=net1
      
      Replay network filter is used to record and replay network packets. While
      recording the virtual machine this filter puts all packets coming from
      the outer world into the log. In replay mode packets from the log are
      injected into the network device. All interactions with network backend
      in replay mode are disabled.
      
      v5 changes:
       - using iov_to_buf function instead of loop
      Signed-off-by: NPavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      646c5478
  24. 09 11月, 2016 1 次提交
  25. 02 11月, 2016 1 次提交