1. 04 9月, 2014 1 次提交
  2. 02 9月, 2014 8 次提交
    • P
      Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging · f2426947
      Peter Maydell 提交于
      pci, pc fixes, features
      
      A bunch of bugfixes - these will make sense for 2.1.1
      
      Initial Intel IOMMU support.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      
      # gpg: Signature made Tue 02 Sep 2014 16:05:04 BST using RSA key ID D28D5469
      # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>"
      # gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>"
      
      * remotes/mst/tags/for_upstream:
        vhost_net: start/stop guest notifiers properly
        pci: avoid losing config updates to MSI/MSIX cap regs
        virtio-net: don't run bh on vm stopped
        ioh3420: remove unused ioh3420_init() declaration
        vhost_net: cleanup start/stop condition
        intel-iommu: add IOTLB using hash table
        intel-iommu: add context-cache to cache context-entry
        intel-iommu: add supports for queued invalidation interface
        intel-iommu: fix coding style issues around in q35.c and machine.c
        intel-iommu: add Intel IOMMU emulation to q35 and add a machine option "iommu" as a switch
        intel-iommu: add DMAR table to ACPI tables
        intel-iommu: introduce Intel IOMMU (VT-d) emulation
        iommu: add is_write as a parameter to the translate function of MemoryRegionIOMMUOps
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f2426947
    • J
      vhost_net: start/stop guest notifiers properly · aad4dce9
      Jason Wang 提交于
      commit a9f98bb5 vhost: multiqueue
      support changed the order of stopping the device. Previously
      vhost_dev_stop would disable backend and only afterwards, unset guest
      notifiers. We now unset guest notifiers while vhost is still
      active. This can lose interrupts causing guest networking to fail. In
      particular, this has been observed during migration.
      
      To adapt this, several other changes are needed:
      - remove the hdev->started assertion in vhost.c since we may want to
      start the guest notifiers before vhost starts and stop the guest
      notifiers after vhost is stopped.
      - introduce the vhost_net_set_vq_index() and call it before setting
      guest notifiers. This is used to guarantee vhost_net has the correct
      virtqueue index when setting guest notifiers.
      
      Cc: qemu-stable@nongnu.org
      Reported-by: N"Zhangjie (HZ)" <zhangjie14@huawei.com>
      Tested-by: NWilliam Dauchy <wdauchy@gmail.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      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>
      aad4dce9
    • K
      pci: avoid losing config updates to MSI/MSIX cap regs · d7efb7e0
      Knut Omang 提交于
      Since
      commit 95d65800
          msi: Invoke msi/msix_write_config from PCI core
      msix config writes are lost, the value written is always 0.
      
      Fix pci_default_write_config to avoid this.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NKnut Omang <knut.omang@oracle.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      d7efb7e0
    • M
      virtio-net: don't run bh on vm stopped · 0187c798
      Michael S. Tsirkin 提交于
      commit 783e7706
          virtio-net: stop/start bh when appropriate
      
      is incomplete: BH might execute within the same main loop iteration but
      after vmstop, so in theory, we might trigger an assertion.
      I was unable to reproduce this in practice,
      but it seems clear enough that the potential is there, so worth fixing.
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      0187c798
    • G
      ioh3420: remove unused ioh3420_init() declaration · fc8342f7
      Gonglei 提交于
      commit 0f9b1771
          ioh3420: Remove obsoleted, unused ioh3420_init function
      removed the implementation of ioh3420_init
      
      Drop the declaration from the header file as well.
      Signed-off-by: NGonglei <arei.gonglei@huawei.com>
      Reviewed-by: NKnut Omang <knut.omang@oracle.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      fc8342f7
    • M
      vhost_net: cleanup start/stop condition · 2d2507ef
      Michael S. Tsirkin 提交于
      Checking vhost device internal state in vhost_net looks like
      a layering violation since vhost_net does not
      set this flag: it is set and tested by vhost.c.
      There seems to be no reason to check this:
      caller in virtio net uses its own flag,
      vhost_started, to ensure vhost is started/stopped
      as appropriate.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NAmos Kong <akong@redhat.com>
      2d2507ef
    • P
      Merge remote-tracking branch 'remotes/spice/tags/pull-spice-20140902-1' into staging · 30eaca3a
      Peter Maydell 提交于
      sanity check for qxl, minor spice display channel tweak.
      
      # gpg: Signature made Tue 02 Sep 2014 09:53:39 BST using RSA key ID D3E87138
      # 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>"
      
      * remotes/spice/tags/pull-spice-20140902-1:
        spice: use console index as display id
        qxl-render: add more sanity checks
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      30eaca3a
    • X
      implementing victim TLB for QEMU system emulated TLB · 88e89a57
      Xin Tong 提交于
      QEMU system mode page table walks are expensive. Taken by running QEMU
      qemu-system-x86_64 system mode on Intel PIN , a TLB miss and walking a
      4-level page tables in guest Linux OS takes ~450 X86 instructions on
      average.
      
      QEMU system mode TLB is implemented using a directly-mapped hashtable.
      This structure suffers from conflict misses. Increasing the
      associativity of the TLB may not be the solution to conflict misses as
      all the ways may have to be walked in serial.
      
      A victim TLB is a TLB used to hold translations evicted from the
      primary TLB upon replacement. The victim TLB lies between the main TLB
      and its refill path. Victim TLB is of greater associativity (fully
      associative in this patch). It takes longer to lookup the victim TLB,
      but its likely better than a full page table walk. The memory
      translation path is changed as follows :
      
      Before Victim TLB:
      1. Inline TLB lookup
      2. Exit code cache on TLB miss.
      3. Check for unaligned, IO accesses
      4. TLB refill.
      5. Do the memory access.
      6. Return to code cache.
      
      After Victim TLB:
      1. Inline TLB lookup
      2. Exit code cache on TLB miss.
      3. Check for unaligned, IO accesses
      4. Victim TLB lookup.
      5. If victim TLB misses, TLB refill
      6. Do the memory access.
      7. Return to code cache
      
      The advantage is that victim TLB can offer more associativity to a
      directly mapped TLB and thus potentially fewer page table walks while
      still keeping the time taken to flush within reasonable limits.
      However, placing a victim TLB before the refill path increase TLB
      refill path as the victim TLB is consulted before the TLB refill. The
      performance results demonstrate that the pros outweigh the cons.
      
      some performance results taken on SPECINT2006 train
      datasets and kernel boot and qemu configure script on an
      Intel(R) Xeon(R) CPU  E5620  @ 2.40GHz Linux machine are shown in the
      Google Doc link below.
      
      https://docs.google.com/spreadsheets/d/1eiItzekZwNQOal_h-5iJmC4tMDi051m9qidi5_nwvH4/edit?usp=sharing
      
      In summary, victim TLB improves the performance of qemu-system-x86_64 by
      11% on average on SPECINT2006, kernelboot and qemu configscript and with
      highest improvement of in 26% in 456.hmmer. And victim TLB does not result
      in any performance degradation in any of the measured benchmarks. Furthermore,
      the implemented victim TLB is architecture independent and is expected to
      benefit other architectures in QEMU as well.
      
      Although there are measurement fluctuations, the performance
      improvement is very significant and by no means in the range of
      noises.
      Signed-off-by: NXin Tong <trent.tong@gmail.com>
      Message-id: 1407202523-23553-1-git-send-email-trent.tong@gmail.com
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      88e89a57
  3. 01 9月, 2014 31 次提交