1. 20 6月, 2017 8 次提交
  2. 13 6月, 2017 2 次提交
  3. 08 6月, 2017 1 次提交
    • D
      kvmclock: update system_time_msr address forcibly · e2b6c171
      Denis Plotnikov 提交于
      Do an update of system_time_msr address every time before reading
      the value of tsc_timestamp from guest's kvmclock page.
      
      There is no other code paths which ensure that qemu has an up-to-date
      value of system_time_msr. So, force this update on guest's tsc_timestamp
      reading.
      
      This bug causes effect on those nested setups which turn off TPR access
      interception for L2 guests and that access being intercepted by L0 doesn't
      show up in L1.
      Linux bootstrap initiate kvmclock before APIC initializing causing TPR access.
      That's why on L1 guests, having TPR interception turned on for L2, the effect
      of the bug is not revealed.
      
      This patch fixes this problem by making sure it knows the correct
      system_time_msr address every time it is needed.
      Signed-off-by: NDenis Plotnikov <dplotnikov@virtuozzo.com>
      Message-Id: <1496054944-25623-1-git-send-email-dplotnikov@virtuozzo.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e2b6c171
  4. 06 6月, 2017 2 次提交
  5. 02 6月, 2017 1 次提交
  6. 29 5月, 2017 1 次提交
  7. 26 5月, 2017 7 次提交
  8. 23 5月, 2017 2 次提交
    • E
      shutdown: Add source information to SHUTDOWN and RESET · cf83f140
      Eric Blake 提交于
      Time to wire up all the call sites that request a shutdown or
      reset to use the enum added in the previous patch.
      
      It would have been less churn to keep the common case with no
      arguments as meaning guest-triggered, and only modified the
      host-triggered code paths, via a wrapper function, but then we'd
      still have to audit that I didn't miss any host-triggered spots;
      changing the signature forces us to double-check that I correctly
      categorized all callers.
      
      Since command line options can change whether a guest reset request
      causes an actual reset vs. a shutdown, it's easy to also add the
      information to reset requests.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Acked-by: David Gibson <david@gibson.dropbear.id.au> [ppc parts]
      Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> [SPARC part]
      Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> [s390x parts]
      Message-Id: <20170515214114.15442-5-eblake@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      cf83f140
    • E
      shutdown: Prepare for use of an enum in reset/shutdown_request · aedbe192
      Eric Blake 提交于
      We want to track why a guest was shutdown; in particular, being able
      to tell the difference between a guest request (such as ACPI request)
      and host request (such as SIGINT) will prove useful to libvirt.
      Since all requests eventually end up changing shutdown_requested in
      vl.c, the logical change is to make that value track the reason,
      rather than its current 0/1 contents.
      
      Since command-line options control whether a reset request is turned
      into a shutdown request instead, the same treatment is given to
      reset_requested.
      
      This patch adds an internal enum ShutdownCause that describes reasons
      that a shutdown can be requested, and changes qemu_system_reset() to
      pass the reason through, although for now nothing is actually changed
      with regards to what gets reported.  The enum could be exported via
      QAPI at a later date, if deemed necessary, but for now, there has not
      been a request to expose that much detail to end clients.
      
      For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
      SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
      information right now to use a different value is when we are reacting
      to a host signal.  It will take a further patch to edit all call-sites
      that can trigger a reset or shutdown request to properly pass in any
      other reasons; this patch includes TODOs to point such places out.
      
      qemu_system_reset() trades its 'bool report' parameter for a
      'ShutdownCause reason', with all non-zero values having the same
      effect; this lets us get rid of the weird #defines for VMRESET_*
      as synonyms for bools.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20170515214114.15442-3-eblake@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      aedbe192
  9. 19 5月, 2017 1 次提交
  10. 17 5月, 2017 7 次提交
    • E
      kvmvapic: Remove user_creatable flag · 040e9968
      Eduardo Habkost 提交于
      The kvmvapic device is only usable when created by
      apic_common_realize(), not using -device. Remove the
      user_creatable flag from the device class.
      
      Cc: Igor Mammedov <imammedo@redhat.com>
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Eduardo Habkost <ehabkost@redhat.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-10-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      040e9968
    • E
      ioapic: Remove user_creatable flag · 6c4672ca
      Eduardo Habkost 提交于
      An ioapic device is already created by the q35 initialization
      code, and using "-device ioapic" or "-device kvm-ioapic" will
      always fail with "Only 1 ioapics allowed". Remove the
      user_creatable flag from the ioapic device classes.
      
      Cc: Igor Mammedov <imammedo@redhat.com>
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Eduardo Habkost <ehabkost@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-9-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      6c4672ca
    • E
      kvmclock: Remove user_creatable flag · 642c1e05
      Eduardo Habkost 提交于
      kvmclock should be used by guests only when the appropriate CPUID
      feature flags are set on the VCPU, and it is automatically
      created by kvmclock_create() when those feature flags are set.
      This means creating a kvmclock device using -device is useless.
      Remove user_creatable from its device class.
      
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Thomas Huth <thuth@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-8-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      642c1e05
    • E
      iommu: Remove FIXME comment about user_creatable=true · 8ab5700c
      Eduardo Habkost 提交于
      amd-iommu and intel-iommu are really meant to be used with
      -device, so they need user_creatable=true. Remove the FIXME
      comment.
      
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-5-ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      8ab5700c
    • E
      sysbus: Set user_creatable=false by default on TYPE_SYS_BUS_DEVICE · e4f4fb1e
      Eduardo Habkost 提交于
      commit 33cd52b5 unset
      cannot_instantiate_with_device_add_yet in TYPE_SYSBUS, making all
      sysbus devices appear on "-device help" and lack the "no-user"
      flag in "info qdm".
      
      To fix this, we can set user_creatable=false by default on
      TYPE_SYS_BUS_DEVICE, but this requires setting
      user_creatable=true explicitly on the sysbus devices that
      actually work with -device.
      
      Fortunately today we have just a few has_dynamic_sysbus=1
      machines: virt, pc-q35-*, ppce500, and spapr.
      
      virt, ppce500, and spapr have extra checks to ensure just a few
      device types can be instantiated:
      
      * virt supports only TYPE_VFIO_CALXEDA_XGMAC, TYPE_VFIO_AMD_XGBE.
      * ppce500 supports only TYPE_ETSEC_COMMON.
      * spapr supports only TYPE_SPAPR_PCI_HOST_BRIDGE.
      
      This patch sets user_creatable=true explicitly on those 4 device
      classes.
      
      Now, the more complex cases:
      
      pc-q35-*: q35 has no sysbus device whitelist yet (which is a
      separate bug). We are in the process of fixing it and building a
      sysbus whitelist on q35, but in the meantime we can fix the
      "-device help" and "info qdm" bugs mentioned above. Also, despite
      not being strictly necessary for fixing the q35 bug, reducing the
      list of user_creatable=true devices will help us be more
      confident when building the q35 whitelist.
      
      xen: We also have a hack at xen_set_dynamic_sysbus(), that sets
      has_dynamic_sysbus=true at runtime when using the Xen
      accelerator. This hack is only used to allow xen-backend devices
      to be dynamically plugged/unplugged.
      
      This means today we can use -device with the following 22 device
      types, that are the ones compiled into the qemu-system-x86_64 and
      qemu-system-i386 binaries:
      
      * allwinner-ahci
      * amd-iommu
      * cfi.pflash01
      * esp
      * fw_cfg_io
      * fw_cfg_mem
      * generic-sdhci
      * hpet
      * intel-iommu
      * ioapic
      * isabus-bridge
      * kvmclock
      * kvm-ioapic
      * kvmvapic
      * SUNW,fdtwo
      * sysbus-ahci
      * sysbus-fdc
      * sysbus-ohci
      * unimplemented-device
      * virtio-mmio
      * xen-backend
      * xen-sysdev
      
      This patch adds user_creatable=true explicitly to those devices,
      temporarily, just to keep 100% compatibility with existing
      behavior of q35. Subsequent patches will remove
      user_creatable=true from the devices that are really not meant to
      user-creatable on any machine, and remove the FIXME comment from
      the ones that are really supposed to be user-creatable. This is
      being done in separate patches because we still don't have an
      obvious list of devices that will be whitelisted by q35, and I
      would like to get each device reviewed individually.
      
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Alex Williamson <alex.williamson@redhat.com>
      Cc: Alistair Francis <alistair.francis@xilinx.com>
      Cc: Beniamino Galvani <b.galvani@gmail.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Cc: David Gibson <david@gibson.dropbear.id.au>
      Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
      Cc: Eduardo Habkost <ehabkost@redhat.com>
      Cc: Frank Blaschka <frank.blaschka@de.ibm.com>
      Cc: Gabriel L. Somlo <somlo@cmu.edu>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Igor Mammedov <imammedo@redhat.com>
      Cc: Jason Wang <jasowang@redhat.com>
      Cc: John Snow <jsnow@redhat.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Laszlo Ersek <lersek@redhat.com>
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: Markus Armbruster <armbru@redhat.com>
      Cc: Max Reitz <mreitz@redhat.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Cc: Pierre Morel <pmorel@linux.vnet.ibm.com>
      Cc: Prasad J Pandit <pjp@fedoraproject.org>
      Cc: qemu-arm@nongnu.org
      Cc: qemu-block@nongnu.org
      Cc: qemu-ppc@nongnu.org
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Shannon Zhao <zhaoshenglong@huawei.com>
      Cc: sstabellini@kernel.org
      Cc: Thomas Huth <thuth@redhat.com>
      Cc: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
      Acked-by: NJohn Snow <jsnow@redhat.com>
      Acked-by: NJuergen Gross <jgross@suse.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-3-ehabkost@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      [ehabkost: Small changes at sysbus_device_class_init() comments]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      e4f4fb1e
    • E
      qdev: Replace cannot_instantiate_with_device_add_yet with !user_creatable · e90f2a8c
      Eduardo Habkost 提交于
      cannot_instantiate_with_device_add_yet was introduced by commit
      efec3dd6 to replace no_user. It was
      supposed to be a temporary measure.
      
      When it was introduced, we had 54
      cannot_instantiate_with_device_add_yet=true lines in the code.
      Today (3 years later) this number has not shrunk: we now have
      57 cannot_instantiate_with_device_add_yet=true lines. I think it
      is safe to say it is not a temporary measure, and we won't see
      the flag go away soon.
      
      Instead of a long field name that misleads people to believe it
      is temporary, replace it a shorter and less misleading field:
      user_creatable.
      
      Except for code comments, changes were generated using the
      following Coccinelle patch:
      
        @@
        expression DC;
        @@
        (
        -DC->cannot_instantiate_with_device_add_yet = false;
        +DC->user_creatable = true;
        |
        -DC->cannot_instantiate_with_device_add_yet = true;
        +DC->user_creatable = false;
        )
      
        @@
        typedef ObjectClass;
        expression dc;
        identifier class, data;
        @@
         static void device_class_init(ObjectClass *class, void *data)
         {
         ...
         dc->hotpluggable = true;
        +dc->user_creatable = true;
         ...
         }
      
        @@
        @@
         struct DeviceClass {
         ...
        -bool cannot_instantiate_with_device_add_yet;
        +bool user_creatable;
         ...
        }
      
        @@
        expression DC;
        @@
        (
        -!DC->cannot_instantiate_with_device_add_yet
        +DC->user_creatable
        |
        -DC->cannot_instantiate_with_device_add_yet
        +!DC->user_creatable
        )
      
      Cc: Alistair Francis <alistair.francis@xilinx.com>
      Cc: Laszlo Ersek <lersek@redhat.com>
      Cc: Marcel Apfelbaum <marcel@redhat.com>
      Cc: Markus Armbruster <armbru@redhat.com>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Cc: Thomas Huth <thuth@redhat.com>
      Acked-by: NAlistair Francis <alistair.francis@xilinx.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Acked-by: NMarcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170503203604.31462-2-ehabkost@redhat.com>
      [ehabkost: kept "TODO remove once we're there" comment]
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      e90f2a8c
    • S
      xen/mapcache: store dma information in revmapcache entries for debugging · 1ff7c598
      Stefano Stabellini 提交于
      The Xen mapcache is able to create long term mappings, they are called
      "locked" mappings. The third parameter of the xen_map_cache call
      specifies if a mapping is a "locked" mapping.
      
      >From the QEMU point of view there are two kinds of long term mappings:
      
      [a] device memory mappings, such as option roms and video memory
      [b] dma mappings, created by dma_memory_map & friends
      
      After certain operations, ballooning a VM in particular, Xen asks QEMU
      kindly to destroy all mappings. However, certainly [a] mappings are
      present and cannot be removed. That's not a problem as they are not
      affected by balloonning. The *real* problem is that if there are any
      mappings of type [b], any outstanding dma operations could fail. This is
      a known shortcoming. In other words, when Xen asks QEMU to destroy all
      mappings, it is an error if any [b] mappings exist.
      
      However today we have no way of distinguishing [a] from [b]. Because of
      that, we cannot even print a decent warning.
      
      This patch introduces a new "dma" bool field to MapCacheRev entires, to
      remember if a given mapping is for dma or is a long term device memory
      mapping. When xen_invalidate_map_cache is called, we print a warning if
      any [b] mappings exist. We ignore [a] mappings.
      
      Mappings created by qemu_map_ram_ptr are assumed to be [a], while
      mappings created by address_space_map->qemu_ram_ptr_length are assumed
      to be [b].
      
      The goal of the patch is to make debugging and system understanding
      easier.
      Signed-off-by: NStefano Stabellini <sstabellini@kernel.org>
      Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
      Acked-by: NAnthony PERARD <anthony.perard@citrix.com>
      1ff7c598
  11. 12 5月, 2017 5 次提交
    • I
      pc: get numa node mapping from possible_cpus instead of numa_get_node_for_cpu() · ea265072
      Igor Mammedov 提交于
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Reviewed-by: NAndrew Jones <drjones@redhat.com>
      Message-Id: <1494415802-227633-9-git-send-email-imammedo@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      ea265072
    • I
      pc: add node-id property to CPU · 93b2a8cb
      Igor Mammedov 提交于
      it will allow switching from cpu_index to property based
      numa mapping in follow up patches.
      
      PS:
      patch changes default value of CPUState::numa_node from 0
      to CPU_UNSET_NUMA_NODE_ID. The only place for x86 that
      would affected is monitor's 'infor numa' command which
      uses that field. However legacy 0 value is still preserved
      by pc_cpu_pre_plug() in this patch if user/numa.c hasn't
      set it explicitly, so there is no change in behavior.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1494415802-227633-4-git-send-email-imammedo@redhat.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      93b2a8cb
    • I
      numa: move source of default CPUs to NUMA node mapping into boards · ea089eeb
      Igor Mammedov 提交于
      Originally CPU threads were by default assigned in
      round-robin fashion. However it was causing issues in
      guest since CPU threads from the same socket/core could
      be placed on different NUMA nodes.
      Commit fb43b73b (pc: fix default VCPU to NUMA node mapping)
      fixed it by grouping threads within a socket on the same node
      introducing cpu_index_to_socket_id() callback and commit
      20bb648d (spapr: Fix default NUMA node allocation for threads)
      reused callback to fix similar issues for SPAPR machine
      even though socket doesn't make much sense there.
      
      As result QEMU ended up having 3 default distribution rules
      used by 3 targets /virt-arm, spapr, pc/.
      
      In effort of moving NUMA mapping for CPUs into possible_cpus,
      generalize default mapping in numa.c by making boards decide
      on default mapping and let them explicitly tell generic
      numa code to which node a CPU thread belongs to by replacing
      cpu_index_to_socket_id() with @cpu_index_to_instance_props()
      which provides default node_id assigned by board to specified
      cpu_index.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <1494415802-227633-2-git-send-email-imammedo@redhat.com>
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      ea089eeb
    • L
      numa: equally distribute memory on nodes · 3bfe5716
      Laurent Vivier 提交于
      When there are more nodes than available memory to put the minimum
      allowed memory by node, all the memory is put on the last node.
      
      This is because we put (ram_size / nb_numa_nodes) &
      ~((1 << mc->numa_mem_align_shift) - 1); on each node, and in this
      case the value is 0. This is particularly true with pseries,
      as the memory must be aligned to 256MB.
      
      To avoid this problem, this patch uses an error diffusion algorithm [1]
      to distribute equally the memory on nodes.
      
      We introduce numa_auto_assign_ram() function in MachineClass
      to keep compatibility between machine type versions.
      The legacy function is used with pseries-2.9, pc-q35-2.9 and
      pc-i440fx-2.9 (and previous), the new one with all others.
      
      Example:
      
      qemu-system-ppc64 -S -nographic  -nodefaults -monitor stdio -m 1G -smp 8 \
                        -numa node -numa node -numa node \
                        -numa node -numa node -numa node
      
      Before:
      
      (qemu) info numa
      6 nodes
      node 0 cpus: 0 6
      node 0 size: 0 MB
      node 1 cpus: 1 7
      node 1 size: 0 MB
      node 2 cpus: 2
      node 2 size: 0 MB
      node 3 cpus: 3
      node 3 size: 0 MB
      node 4 cpus: 4
      node 4 size: 0 MB
      node 5 cpus: 5
      node 5 size: 1024 MB
      
      After:
      (qemu) info numa
      6 nodes
      node 0 cpus: 0 6
      node 0 size: 0 MB
      node 1 cpus: 1 7
      node 1 size: 256 MB
      node 2 cpus: 2
      node 2 size: 0 MB
      node 3 cpus: 3
      node 3 size: 256 MB
      node 4 cpus: 4
      node 4 size: 256 MB
      node 5 cpus: 5
      node 5 size: 256 MB
      
      [1] https://en.wikipedia.org/wiki/Error_diffusionSigned-off-by: NLaurent Vivier <lvivier@redhat.com>
      Message-Id: <20170502162955.1610-2-lvivier@redhat.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      [ehabkost: s/ram_size/size/ at numa_default_auto_assign_ram()]
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      3bfe5716
    • H
      numa: Allow setting NUMA distance for different NUMA nodes · 0f203430
      He Chen 提交于
      This patch is going to add SLIT table support in QEMU, and provides
      additional option `dist` for command `-numa` to allow user set vNUMA
      distance by QEMU command.
      
      With this patch, when a user wants to create a guest that contains
      several vNUMA nodes and also wants to set distance among those nodes,
      the QEMU command would like:
      
      ```
      -numa node,nodeid=0,cpus=0 \
      -numa node,nodeid=1,cpus=1 \
      -numa node,nodeid=2,cpus=2 \
      -numa node,nodeid=3,cpus=3 \
      -numa dist,src=0,dst=1,val=21 \
      -numa dist,src=0,dst=2,val=31 \
      -numa dist,src=0,dst=3,val=41 \
      -numa dist,src=1,dst=2,val=21 \
      -numa dist,src=1,dst=3,val=31 \
      -numa dist,src=2,dst=3,val=21 \
      ```
      Signed-off-by: NHe Chen <he.chen@linux.intel.com>
      Message-Id: <1493260558-20728-1-git-send-email-he.chen@linux.intel.com>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      Reviewed-by: NAndrew Jones <drjones@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      0f203430
  12. 11 5月, 2017 3 次提交