1. 14 9月, 2016 10 次提交
  2. 13 9月, 2016 12 次提交
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/pull-vga-20160913-1' into staging · fa970124
      Peter Maydell 提交于
      virtio-gpu and vmsvga fixes.
      
      # gpg: Signature made Tue 13 Sep 2016 09:14:44 BST
      # gpg:                using RSA key 0x4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/pull-vga-20160913-1:
        virtio-vga: adapt to page-per-vq=off
        virtio-gpu-pci: tag as not hotpluggable
        vmsvga: correct bitmap and pixmap size checks
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      fa970124
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/pull-ui-20160913-1' into staging · e1c270c9
      Peter Maydell 提交于
      ui: misc small fixes for vnc, spice and curses.
      
      # gpg: Signature made Tue 13 Sep 2016 08:04:46 BST
      # gpg:                using RSA key 0x4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/pull-ui-20160913-1:
        vnc: fix qemu crash because of SIGSEGV
        qemu-options.hx: correct spice options streaming-video default document value to 'off'
        ui/curses.c: Clean up nextchr logic
        ui/curses.c: Ensure we don't read off the end of curses2qemu array
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      e1c270c9
    • P
      Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging · 8ede883c
      Peter Maydell 提交于
      # gpg: Signature made Tue 13 Sep 2016 06:41:42 BST
      # gpg:                using RSA key 0xBDBE7B27C0DE3057
      # gpg: Good signature from "Jeffrey Cody <jcody@redhat.com>"
      # gpg:                 aka "Jeffrey Cody <jeff@codyprime.org>"
      # gpg:                 aka "Jeffrey Cody <codyprime@gmail.com>"
      # Primary key fingerprint: 9957 4B4D 3474 90E7 9D98  D624 BDBE 7B27 C0DE 3057
      
      * remotes/cody/tags/block-pull-request:
        qapi/block-core: add doc describing GlusterServer vs. SocketAddress
        block/gluster: add support to choose libgfapi logfile
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      8ede883c
    • G
      virtio-vga: adapt to page-per-vq=off · c2843e93
      Gerd Hoffmann 提交于
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1473319012-27560-1-git-send-email-kraxel@redhat.com
      c2843e93
    • G
      virtio-gpu-pci: tag as not hotpluggable · 597966d1
      Gerd Hoffmann 提交于
      We can't hotplug display adapters in qemu, tag virtio-gpu-pci
      accordingly (virtio-vga already has this).
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Message-id: 1473319037-27645-1-git-send-email-kraxel@redhat.com
      597966d1
    • P
      vmsvga: correct bitmap and pixmap size checks · 167d97a3
      Prasad J Pandit 提交于
      When processing svga command DEFINE_CURSOR in vmsvga_fifo_run,
      the computed BITMAP and PIXMAP size are checked against the
      'cursor.mask[]' and 'cursor.image[]' array sizes in bytes.
      Correct these checks to avoid OOB memory access.
      Reported-by: NQinghao Tang <luodalongde@gmail.com>
      Reported-by: NLi Qiang <liqiang6-s@360.cn>
      Signed-off-by: NPrasad J Pandit <pjp@fedoraproject.org>
      Message-id: 1473338754-15430-1-git-send-email-ppandit@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      167d97a3
    • G
      vnc: fix qemu crash because of SIGSEGV · 3e10c3ec
      Gonglei 提交于
      The backtrace is:
      
      0x00007f0b75cdf880 in pixman_image_get_stride () from /lib64/libpixman-1.so.0
      0x00007f0b77bcb3cf in vnc_server_fb_stride (vd=0x7f0b7a1a2bb0) at ui/vnc.c:680
      vnc_dpy_copy (dcl=0x7f0b7a1a2c00, src_x=224, src_y=263, dst_x=319, dst_y=363, w=1, h=1) at ui/vnc.c:915
      0x00007f0b77bbcc35 in dpy_gfx_copy (con=0x7f0b7a146210, src_x=src_x@entry=224, src_y=src_y@entry=263, dst_x=dst_x@entry=319,
      dst_y=dst_y@entry=363, w=1, h=1) at ui/console.c:1575
      0x00007f0b77bbda4e in qemu_console_copy (con=<optimized out>, src_x=src_x@entry=224, src_y=src_y@entry=263, dst_x=dst_x@entry=319,
      dst_y=dst_y@entry=363, w=<optimized out>, h=<optimized out>) at ui/console.c:2111
      0x00007f0b77ac0980 in cirrus_do_copy (h=<optimized out>, w=<optimized out>, src=<optimized out>, dst=<optimized out>, s=0x7f0b7b086090) at hw/display/cirrus_vga.c:774
      cirrus_bitblt_videotovideo_copy (s=0x7f0b7b086090) at hw/display/cirrus_vga.c:793
      cirrus_bitblt_videotovideo (s=0x7f0b7b086090) at hw/display/cirrus_vga.c:915
      cirrus_bitblt_start (s=0x7f0b7b086090) at hw/display/cirrus_vga.c:1056
      0x00007f0b77965cfb in memory_region_write_accessor (mr=0x7f0b7b096e40, addr=320, value=<optimized out>, size=1, shift=<optimized out>,mask=<optimized out>, attrs=...) at /root/rpmbuild/BUILD/master/qemu/memory.c:525
      0x00007f0b77963f59 in access_with_adjusted_size (addr=addr@entry=320, value=value@entry=0x7f0b69a268d8, size=size@entry=4,
      access_size_min=<optimized out>, access_size_max=<optimized out>, access=access@entry=0x7f0b77965c80 <memory_region_write_accessor>,
      mr=mr@entry=0x7f0b7b096e40, attrs=attrs@entry=...) at /root/rpmbuild/BUILD/master/qemu/memory.c:591
      0x00007f0b77968315 in memory_region_dispatch_write (mr=mr@entry=0x7f0b7b096e40, addr=addr@entry=320, data=18446744073709551362,
      size=size@entry=4, attrs=attrs@entry=...) at /root/rpmbuild/BUILD/master/qemu/memory.c:1262
      0x00007f0b779256a9 in address_space_write_continue (mr=0x7f0b7b096e40, l=4, addr1=320, len=4, buf=0x7f0b77713028 "\002\377\377\377",
      attrs=..., addr=4273930560, as=0x7f0b7827d280 <address_space_memory>) at /root/rpmbuild/BUILD/master/qemu/exec.c:2544
      address_space_write (as=<optimized out>, addr=<optimized out>, attrs=..., buf=<optimized out>, len=<optimized out>) at /root/rpmbuild/BUILD/master/qemu/exec.c:2601
      0x00007f0b77925c1d in address_space_rw (as=<optimized out>, addr=<optimized out>, attrs=..., attrs@entry=...,
      buf=buf@entry=0x7f0b77713028 "\002\377\377\377", len=<optimized out>, is_write=<optimized out>) at /root/rpmbuild/BUILD/master/qemu/exec.c:2703
      0x00007f0b77962f53 in kvm_cpu_exec (cpu=cpu@entry=0x7f0b79fcc2d0) at /root/rpmbuild/BUILD/master/qemu/kvm-all.c:1965
      0x00007f0b77950cc6 in qemu_kvm_cpu_thread_fn (arg=0x7f0b79fcc2d0) at /root/rpmbuild/BUILD/master/qemu/cpus.c:1078
      0x00007f0b744b3dc5 in start_thread (arg=0x7f0b69a27700) at pthread_create.c:308
      0x00007f0b70d3d66d in clone () from /lib64/libc.so.6
      
      The code path while meeting segfault:
       vnc_dpy_copy
         vnc_update_client
           vnc_disconnect_finish [while vnc_disconnect_start() is invoked because somethins wrong]
             vnc_update_server_surface
               vd->server = NULL;
         vnc_server_fb_stride
           pixman_image_get_stride(vd->server)
      
      Let's add a non-NULL check before calling vnc_server_fb_stride() to avoid segmentation fault.
      
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Daniel P. Berrange <berrange@redhat.com>
      Reported-by: NYanying Zhuang <ann.zhuangyanying@huawei.com>
      Signed-off-by: NGonglei <arei.gonglei@huawei.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-id: 1472788698-120964-1-git-send-email-arei.gonglei@huawei.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      3e10c3ec
    • L
      qemu-options.hx: correct spice options streaming-video default document value to 'off' · 93ca519e
      Li Zhijian 提交于
      since f1d3e586, the code had changed the default value to 'off', so this patch
      make document and code are consistent.
      Signed-off-by: NLi Zhijian <lizhijian@cn.fujitsu.com>
      Message-id: 1470024419-10886-1-git-send-email-lizhijian@cn.fujitsu.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      93ca519e
    • P
      ui/curses.c: Clean up nextchr logic · 99a9ef44
      Peter Maydell 提交于
      Coverity identifies that at the top of the while(1) loop
      in curses_refresh() the variable nextchr is always ERR,
      and so the else case of the first if() is dead code.
      Remove this dead code, and narrow the scope of the
      nextchr variable to the place where it's used.
      
      (This confused logic has been present since the curses
      code was added to QEMU in 2008.)
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1470925407-23850-3-git-send-email-peter.maydell@linaro.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      99a9ef44
    • P
      ui/curses.c: Ensure we don't read off the end of curses2qemu array · bba4e1b5
      Peter Maydell 提交于
      Coverity spots that there is no bounds check before we
      access the curses2qemu[] array.  Add one, bringing this
      code path into line with the one that looks up entries
      in curses2keysym[].
      
      In theory getch() shouldn't return out of range keycodes,
      but it's better not to assume this.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1470925407-23850-2-git-send-email-peter.maydell@linaro.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      bba4e1b5
    • P
      qapi/block-core: add doc describing GlusterServer vs. SocketAddress · c76d7aab
      Prasanna Kumar Kalever 提交于
      Added documentation describing relation between GlusterServer and
      SocketAddress qapi schemas.
      
      Thanks to Markus Armbruster <armbru@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJeff Cody <jcody@redhat.com>
      Signed-off-by: NPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
      Message-id: 1471715924-3642-1-git-send-email-prasanna.kalever@redhat.com
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      c76d7aab
    • P
      block/gluster: add support to choose libgfapi logfile · e9db8ff3
      Prasanna Kumar Kalever 提交于
      currently all the libgfapi logs defaults to '/dev/stderr' as it was hardcoded
      in a call to glfs logging api. When the debug level is chosen to DEBUG/TRACE,
      gfapi logs will be huge and fill/overflow the console view.
      
      This patch provides a commandline option to mention log file path which helps
      in logging to the specified file and also help in persisting the gfapi logs.
      
      Usage:
      -----
       *URI Style:
        ---------
        -drive file=gluster://hostname/volname/image.qcow2,file.debug=9,\
                            file.logfile=/var/log/qemu/qemu-gfapi.log
      
       *JSON Style:
        ----------
        'json:{
                 "driver":"qcow2",
                 "file":{
                    "driver":"gluster",
                    "volume":"volname",
                    "path":"image.qcow2",
                    "debug":"9",
                    "logfile":"/var/log/qemu/qemu-gfapi.log",
                    "server":[
                       {
                          "type":"tcp",
                          "host":"1.2.3.4",
                          "port":24007
                       },
                       {
                          "type":"unix",
                          "socket":"/var/run/glusterd.socket"
                       }
                    ]
                 }
              }'
      Reviewed-by: NJeff Cody <jcody@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      e9db8ff3
  3. 12 9月, 2016 7 次提交
  4. 10 9月, 2016 11 次提交
    • S
      vhost-vsock: add virtio sockets device · fc0b9b0e
      Stefan Hajnoczi 提交于
      Implement the new virtio sockets device for host<->guest communication
      using the Sockets API.  Most of the work is done in a vhost kernel
      driver so that virtio-vsock can hook into the AF_VSOCK address family.
      The QEMU vhost-vsock device handles configuration and live migration
      while the rx/tx happens in the vhost_vsock.ko Linux kernel driver.
      
      The vsock device must be given a CID (host-wide unique address):
      
        # qemu -device vhost-vsock-pci,id=vhost-vsock-pci0,guest-cid=3 ...
      
      For more information see:
      http://qemu-project.org/Features/VirtioVsock
      
      [Endianness fixes and virtio-ccw support by Claudio Imbrenda
      <imbrenda@linux.vnet.ibm.com>]
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      [mst: rebase to master]
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      fc0b9b0e
    • M
      tests/acpi: speedup acpi tests · 947b205f
      Marcel Apfelbaum 提交于
      Use kvm acceleration if available.
      Disable kernel-irqchip and use qemu64 cpu
      for both kvm and tcg cases.
      
      Using kvm acceleration saves about a second
      and disabling kernel-irqchip has no visible
      performance impact.
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMarcel Apfelbaum <marcel@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      947b205f
    • M
      virtio-pci: minor refactoring · 71d19fc5
      Michael S. Tsirkin 提交于
      !legacy && !modern is shorter than !(legacy || modern).
      I also perfer this (less ()s) as a matter of taste.
      
      Cc: Greg Kurz <gkurz@linux.vnet.ibm.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      71d19fc5
    • J
      vhost: don't set vring call if no vector · 96a3d98d
      Jason Wang 提交于
      We used to set vring call fd unconditionally even if guest driver does
      not use MSIX for this vritqueue at all. This will cause lots of
      unnecessary userspace access and other checks for drivers does not use
      interrupt at all (e.g virtio-net pmd). So check and clean vring call
      fd if guest does not use any vector for this virtqueue at
      all.
      
      Perf diffs (on rx) shows lots of cpus wasted on vhost_signal() were saved:
      
      #
          28.12%  -27.82%  [vhost]           [k] vhost_signal
          14.44%   -1.69%  [kernel.vmlinux]  [k] copy_user_generic_string
           7.05%   +1.53%  [kernel.vmlinux]  [k] __free_page_frag
           6.51%   +5.53%  [vhost]           [k] vhost_get_vq_desc
      ...
      
      Pktgen tests shows 15.8% improvement on rx pps and 6.5% on tx pps.
      
      Before: RX 2.08Mpps TX 1.35Mpps
      After:  RX 2.41Mpps TX 1.44Mpps
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      96a3d98d
    • G
      virtio-pci: error out when both legacy and modern modes are disabled · 3eff3769
      Greg Kurz 提交于
      Without presuming if we got there because of a user mistake or some
      more subtle bug in the tooling, it really does not make sense to
      implement a non-functional device.
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Reviewed-by: NCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NGreg Kurz <groug@kaod.org>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      3eff3769
    • L
      virtio-balloon: fix stats vq migration · 4a1e48be
      Ladi Prosek 提交于
      The statistics virtqueue is not migrated properly because virtio-balloon
      does not include s->stats_vq_elem in the migration stream.
      
      After migration the statistics virtqueue hangs because the host never
      completes the last element (s->stats_vq_elem is NULL on the destination
      QEMU).  Therefore the guest never submits new elements and the virtqueue
      is hung.
      
      Instead of changing the migration stream format in an incompatible way,
      detect the migration case and rewind the virtqueue so the last element
      can be completed.
      
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Roman Kagan <rkagan@virtuozzo.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Suggested-by: NRoman Kagan <rkagan@virtuozzo.com>
      Signed-off-by: NLadi Prosek <lprosek@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      4a1e48be
    • S
      virtio: add virtqueue_rewind() · 297a75e6
      Stefan Hajnoczi 提交于
      virtqueue_discard() requires a VirtQueueElement but virtio-balloon does
      not migrate its in-use element.  Introduce a new function that is
      similar to virtqueue_discard() but doesn't require a VirtQueueElement.
      
      This will allow virtio-balloon to access element again after migration
      with the usual proviso that the guest may have modified the vring since
      last time.
      
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Roman Kagan <rkagan@virtuozzo.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NLadi Prosek <lprosek@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      297a75e6
    • L
      virtio-balloon: discard virtqueue element on reset · 104e70ca
      Ladi Prosek 提交于
      The one pending element is being freed but not discarded on device
      reset, which causes svq->inuse to creep up, eventually hitting the
      "Virtqueue size exceeded" error.
      
      Properly discarding the element on device reset makes sure that its
      buffers are unmapped and the inuse counter stays balanced.
      
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Roman Kagan <rkagan@virtuozzo.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NLadi Prosek <lprosek@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      104e70ca
    • S
      virtio: zero vq->inuse in virtio_reset() · 4b7f91ed
      Stefan Hajnoczi 提交于
      vq->inuse must be zeroed upon device reset like most other virtqueue
      fields.
      
      In theory, virtio_reset() just needs assert(vq->inuse == 0) since
      devices must clean up in-flight requests during reset (requests cannot
      not be leaked!).
      
      In practice, it is difficult to achieve vq->inuse == 0 across reset
      because balloon, blk, 9p, etc implement various different strategies for
      cleaning up requests.  Most devices call g_free(elem) directly without
      telling virtio.c that the VirtQueueElement is cleaned up.  Therefore
      vq->inuse is not decremented during reset.
      
      This patch zeroes vq->inuse and trusts that devices are not leaking
      VirtQueueElements across reset.
      
      I will send a follow-up series that refactors request life-cycle across
      all devices and converts vq->inuse = 0 into assert(vq->inuse == 0) but
      this more invasive approach is not appropriate for stable trees.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Cc: qemu-stable <qemu-stable@nongnu.org>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NLadi Prosek <lprosek@redhat.com>
      4b7f91ed
    • M
      virtio-pci: reduce modern_mem_bar size · d9997d89
      Marcel Apfelbaum 提交于
      Currently each VQ Notification Virtio Capability is allocated
      on a different page. The idea is to enable split drivers within
      guests, however there are no known plans to do that.
      The allocation will result in a 8MB BAR, more than various
      guest firmwares pre-allocates for PCI Bridges hotplug process.
      
      Reserve 4 bytes per VQ by default and add a new parameter
      "page-per-vq" to be used with split drivers.
      Signed-off-by: NMarcel Apfelbaum <marcel@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      d9997d89
    • L
      target-i386: present virtual L3 cache info for vcpus · 14c985cf
      Longpeng(Mike) 提交于
      Some software algorithms are based on the hardware's cache info, for example,
      for x86 linux kernel, when cpu1 want to wakeup a task on cpu2, cpu1 will trigger
      a resched IPI and told cpu2 to do the wakeup if they don't share low level
      cache. Oppositely, cpu1 will access cpu2's runqueue directly if they share llc.
      The relevant linux-kernel code as bellow:
      
      	static void ttwu_queue(struct task_struct *p, int cpu)
      	{
      		struct rq *rq = cpu_rq(cpu);
      		......
      		if (... && !cpus_share_cache(smp_processor_id(), cpu)) {
      			......
      			ttwu_queue_remote(p, cpu); /* will trigger RES IPI */
      			return;
      		}
      		......
      		ttwu_do_activate(rq, p, 0); /* access target's rq directly */
      		......
      	}
      
      In real hardware, the cpus on the same socket share L3 cache, so one won't
      trigger a resched IPIs when wakeup a task on others. But QEMU doesn't present a
      virtual L3 cache info for VM, then the linux guest will trigger lots of RES IPIs
      under some workloads even if the virtual cpus belongs to the same virtual socket.
      
      For KVM, there will be lots of vmexit due to guest send IPIs.
      The workload is a SAP HANA's testsuite, we run it one round(about 40 minuates)
      and observe the (Suse11sp3)Guest's amounts of RES IPIs which triggering during
      the period:
              No-L3           With-L3(applied this patch)
      cpu0:	363890		44582
      cpu1:	373405		43109
      cpu2:	340783		43797
      cpu3:	333854		43409
      cpu4:	327170		40038
      cpu5:	325491		39922
      cpu6:	319129		42391
      cpu7:	306480		41035
      cpu8:	161139		32188
      cpu9:	164649		31024
      cpu10:	149823		30398
      cpu11:	149823		32455
      cpu12:	164830		35143
      cpu13:	172269		35805
      cpu14:	179979		33898
      cpu15:	194505		32754
      avg:	268963.6	40129.8
      
      The VM's topology is "1*socket 8*cores 2*threads".
      After present virtual L3 cache info for VM, the amounts of RES IPIs in guest
      reduce 85%.
      
      For KVM, vcpus send IPIs will cause vmexit which is expensive, so it can cause
      severe performance degradation. We had tested the overall system performance if
      vcpus actually run on sparate physical socket. With L3 cache, the performance
      improves 7.2%~33.1%(avg:15.7%).
      Signed-off-by: NLongpeng(Mike) <longpeng2@huawei.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      14c985cf