From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: qemu-stable@nongnu.org, Peter Xu <peterx@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>
Subject: [Qemu-devel] [PATCH 090/113] intel-iommu: add iommu lock
Date: Mon, 18 Jun 2018 20:42:56 -0500 [thread overview]
Message-ID: <20180619014319.28272-91-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com>
From: Peter Xu <peterx@redhat.com>
SECURITY IMPLICATION: this patch fixes a potential race when multiple
threads access the IOMMU IOTLB cache.
Add a per-iommu big lock to protect IOMMU status. Currently the only
thing to be protected is the IOTLB/context cache, since that can be
accessed even without BQL, e.g., in IO dataplane.
Note that we don't need to protect device page tables since that's fully
controlled by the guest kernel. However there is still possibility that
malicious drivers will program the device to not obey the rule. In that
case QEMU can't really do anything useful, instead the guest itself will
be responsible for all uncertainties.
CC: QEMU Stable <qemu-stable@nongnu.org>
Reported-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
(cherry picked from commit 1d9efa73e12ddf361ea997c2d532cc4afa6674d1)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/i386/intel_iommu.c | 56 ++++++++++++++++++++++++++++++++++++-------
include/hw/i386/intel_iommu.h | 6 +++++
2 files changed, 53 insertions(+), 9 deletions(-)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index be2f445758..cfcd1046e7 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -128,6 +128,16 @@ static uint64_t vtd_set_clear_mask_quad(IntelIOMMUState *s, hwaddr addr,
return new_val;
}
+static inline void vtd_iommu_lock(IntelIOMMUState *s)
+{
+ qemu_mutex_lock(&s->iommu_lock);
+}
+
+static inline void vtd_iommu_unlock(IntelIOMMUState *s)
+{
+ qemu_mutex_unlock(&s->iommu_lock);
+}
+
/* GHashTable functions */
static gboolean vtd_uint64_equal(gconstpointer v1, gconstpointer v2)
{
@@ -172,9 +182,9 @@ static gboolean vtd_hash_remove_by_page(gpointer key, gpointer value,
}
/* Reset all the gen of VTDAddressSpace to zero and set the gen of
- * IntelIOMMUState to 1.
+ * IntelIOMMUState to 1. Must be called with IOMMU lock held.
*/
-static void vtd_reset_context_cache(IntelIOMMUState *s)
+static void vtd_reset_context_cache_locked(IntelIOMMUState *s)
{
VTDAddressSpace *vtd_as;
VTDBus *vtd_bus;
@@ -197,12 +207,20 @@ static void vtd_reset_context_cache(IntelIOMMUState *s)
s->context_cache_gen = 1;
}
-static void vtd_reset_iotlb(IntelIOMMUState *s)
+/* Must be called with IOMMU lock held. */
+static void vtd_reset_iotlb_locked(IntelIOMMUState *s)
{
assert(s->iotlb);
g_hash_table_remove_all(s->iotlb);
}
+static void vtd_reset_iotlb(IntelIOMMUState *s)
+{
+ vtd_iommu_lock(s);
+ vtd_reset_iotlb_locked(s);
+ vtd_iommu_unlock(s);
+}
+
static uint64_t vtd_get_iotlb_key(uint64_t gfn, uint16_t source_id,
uint32_t level)
{
@@ -215,6 +233,7 @@ static uint64_t vtd_get_iotlb_gfn(hwaddr addr, uint32_t level)
return (addr & vtd_slpt_level_page_mask(level)) >> VTD_PAGE_SHIFT_4K;
}
+/* Must be called with IOMMU lock held */
static VTDIOTLBEntry *vtd_lookup_iotlb(IntelIOMMUState *s, uint16_t source_id,
hwaddr addr)
{
@@ -235,6 +254,7 @@ out:
return entry;
}
+/* Must be with IOMMU lock held */
static void vtd_update_iotlb(IntelIOMMUState *s, uint16_t source_id,
uint16_t domain_id, hwaddr addr, uint64_t slpte,
uint8_t access_flags, uint32_t level)
@@ -246,7 +266,7 @@ static void vtd_update_iotlb(IntelIOMMUState *s, uint16_t source_id,
trace_vtd_iotlb_page_update(source_id, addr, slpte, domain_id);
if (g_hash_table_size(s->iotlb) >= VTD_IOTLB_MAX_SIZE) {
trace_vtd_iotlb_reset("iotlb exceeds size limit");
- vtd_reset_iotlb(s);
+ vtd_reset_iotlb_locked(s);
}
entry->gfn = gfn;
@@ -1106,7 +1126,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus,
IntelIOMMUState *s = vtd_as->iommu_state;
VTDContextEntry ce;
uint8_t bus_num = pci_bus_num(bus);
- VTDContextCacheEntry *cc_entry = &vtd_as->context_cache_entry;
+ VTDContextCacheEntry *cc_entry;
uint64_t slpte, page_mask;
uint32_t level;
uint16_t source_id = vtd_make_source_id(bus_num, devfn);
@@ -1123,6 +1143,10 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus,
*/
assert(!vtd_is_interrupt_addr(addr));
+ vtd_iommu_lock(s);
+
+ cc_entry = &vtd_as->context_cache_entry;
+
/* Try to fetch slpte form IOTLB */
iotlb_entry = vtd_lookup_iotlb(s, source_id, addr);
if (iotlb_entry) {
@@ -1182,7 +1206,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus,
* IOMMU region can be swapped back.
*/
vtd_pt_enable_fast_path(s, source_id);
-
+ vtd_iommu_unlock(s);
return true;
}
@@ -1203,6 +1227,7 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus,
vtd_update_iotlb(s, source_id, VTD_CONTEXT_ENTRY_DID(ce.hi), addr, slpte,
access_flags, level);
out:
+ vtd_iommu_unlock(s);
entry->iova = addr & page_mask;
entry->translated_addr = vtd_get_slpte_addr(slpte, s->aw_bits) & page_mask;
entry->addr_mask = ~page_mask;
@@ -1210,6 +1235,7 @@ out:
return true;
error:
+ vtd_iommu_unlock(s);
entry->iova = 0;
entry->translated_addr = 0;
entry->addr_mask = 0;
@@ -1258,10 +1284,13 @@ static void vtd_iommu_replay_all(IntelIOMMUState *s)
static void vtd_context_global_invalidate(IntelIOMMUState *s)
{
trace_vtd_inv_desc_cc_global();
+ /* Protects context cache */
+ vtd_iommu_lock(s);
s->context_cache_gen++;
if (s->context_cache_gen == VTD_CONTEXT_CACHE_GEN_MAX) {
- vtd_reset_context_cache(s);
+ vtd_reset_context_cache_locked(s);
}
+ vtd_iommu_unlock(s);
vtd_switch_address_space_all(s);
/*
* From VT-d spec 6.5.2.1, a global context entry invalidation
@@ -1313,7 +1342,9 @@ static void vtd_context_device_invalidate(IntelIOMMUState *s,
if (vtd_as && ((devfn_it & mask) == (devfn & mask))) {
trace_vtd_inv_desc_cc_device(bus_n, VTD_PCI_SLOT(devfn_it),
VTD_PCI_FUNC(devfn_it));
+ vtd_iommu_lock(s);
vtd_as->context_cache_entry.context_cache_gen = 0;
+ vtd_iommu_unlock(s);
/*
* Do switch address space when needed, in case if the
* device passthrough bit is switched.
@@ -1377,8 +1408,10 @@ static void vtd_iotlb_domain_invalidate(IntelIOMMUState *s, uint16_t domain_id)
trace_vtd_inv_desc_iotlb_domain(domain_id);
+ vtd_iommu_lock(s);
g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_domain,
&domain_id);
+ vtd_iommu_unlock(s);
QLIST_FOREACH(vtd_as, &s->vtd_as_with_notifiers, next) {
if (!vtd_dev_to_context_entry(s, pci_bus_num(vtd_as->bus),
@@ -1426,7 +1459,9 @@ static void vtd_iotlb_page_invalidate(IntelIOMMUState *s, uint16_t domain_id,
info.domain_id = domain_id;
info.addr = addr;
info.mask = ~((1 << am) - 1);
+ vtd_iommu_lock(s);
g_hash_table_foreach_remove(s->iotlb, vtd_hash_remove_by_page, &info);
+ vtd_iommu_unlock(s);
vtd_iotlb_page_invalidate_notify(s, domain_id, addr, am);
}
@@ -2922,8 +2957,10 @@ static void vtd_init(IntelIOMMUState *s)
s->cap |= VTD_CAP_CM;
}
- vtd_reset_context_cache(s);
- vtd_reset_iotlb(s);
+ vtd_iommu_lock(s);
+ vtd_reset_context_cache_locked(s);
+ vtd_reset_iotlb_locked(s);
+ vtd_iommu_unlock(s);
/* Define registers with default values and bit semantics */
vtd_define_long(s, DMAR_VER_REG, 0x10UL, 0, 0);
@@ -3072,6 +3109,7 @@ static void vtd_realize(DeviceState *dev, Error **errp)
}
QLIST_INIT(&s->vtd_as_with_notifiers);
+ qemu_mutex_init(&s->iommu_lock);
memset(s->vtd_as_by_bus_num, 0, sizeof(s->vtd_as_by_bus_num));
memory_region_init_io(&s->csrmem, OBJECT(s), &vtd_mem_ops, s,
"intel_iommu", DMAR_REG_SIZE);
diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h
index 032e33bcb2..016e74bedb 100644
--- a/include/hw/i386/intel_iommu.h
+++ b/include/hw/i386/intel_iommu.h
@@ -300,6 +300,12 @@ struct IntelIOMMUState {
OnOffAuto intr_eim; /* Toggle for EIM cabability */
bool buggy_eim; /* Force buggy EIM unless eim=off */
uint8_t aw_bits; /* Host/IOVA address width (in bits) */
+
+ /*
+ * Protects IOMMU states in general. Currently it protects the
+ * per-IOMMU IOTLB cache, and context entry cache in VTDAddressSpace.
+ */
+ QemuMutex iommu_lock;
};
/* Find the VTD Address space associated with the given bus pointer,
--
2.11.0
next prev parent reply other threads:[~2018-06-19 1:47 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-19 1:41 [Qemu-devel] [PATCH 00/113] Patch Round-up for stable 2.11.2, freeze on 2018-06-22 Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 001/113] block/ssh: fix possible segmentation fault when .desc is not null-terminated Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 002/113] pci-bridge/i82801b11: clear bridge registers on platform reset Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 003/113] virtio-balloon: unref the memory region before continuing Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 004/113] memfd: fix configure test Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 005/113] sdl: workaround bug in sdl 2.0.8 headers Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 006/113] spapr: Allow some cases where we can't set VSMT mode in the kernel Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 007/113] spapr: Adjust default VSMT value for better migration compatibility Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 008/113] spapr: set vsmt to MAX(8, smp_threads) Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 009/113] spapr: use spapr->vsmt to compute VCPU ids Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 010/113] spapr: move VCPU calculation to core machine code Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 011/113] target/ppc: Clarify compat mode max_threads value Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 012/113] spapr: rename spapr_vcpu_id() to spapr_get_vcpu_id() Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 013/113] spapr: consolidate the VCPU id numbering logic in a single place Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 014/113] spapr: fix missing CPU core nodes in DT when running with TCG Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 015/113] spapr: register dummy ICPs later Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 016/113] spapr: make pseries-2.11 the default machine type Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 017/113] nbd: Honor server's advertised minimum block size Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 018/113] specs/qcow2: Fix documentation of the compressed cluster descriptor Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 019/113] rbd: Fix use after free in qemu_rbd_set_keypairs() error path Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 020/113] tpm: Set the flags of the CMD_INIT command to 0 Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 021/113] loader: don't perform overlapping address check for memory region ROM images Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 022/113] target/xtensa: dump correct physical registers Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 023/113] linux-user: fix mmap/munmap/mprotect/mremap/shmat Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 024/113] linux-user: fix assertion in shmdt Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 025/113] linux-user: fix target_mprotect/target_munmap error return values Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 026/113] sparc: fix leon3 casa instruction when MMU is disabled Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 027/113] openpic_kvm: drop address_space_to_flatview call Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 028/113] memory: inline some performance-sensitive accessors Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 029/113] address_space_write: address_space_to_flatview needs RCU lock Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 030/113] address_space_read: " Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 031/113] address_space_access_valid: " Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 032/113] address_space_map: " Michael Roth
2018-06-19 1:41 ` [Qemu-devel] [PATCH 033/113] address_space_rw: " Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 034/113] memory: fix flatview_access_valid RCU read lock/unlock imbalance Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 035/113] migration/block: reset dirty bitmap before read in bulk phase Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 036/113] multiboot: bss_end_addr can be zero Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 037/113] multiboot: Remove unused variables from multiboot.c Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 038/113] multiboot: Use header names when displaying fields Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 039/113] multiboot: fprintf(stderr...) -> error_report() Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 040/113] multiboot: Reject kernels exceeding the address space Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 041/113] multiboot: Check validity of mh_header_addr Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 042/113] tests/multiboot: Test exit code for every qemu run Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 043/113] tests/multiboot: Add tests for the a.out kludge Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 044/113] tests/multiboot: Add .gitignore Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 045/113] arm/translate-a64: treat DISAS_UPDATE as variant of DISAS_EXIT Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 046/113] virtio_net: flush uncompleted TX on reset Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 047/113] qemu-pr-helper: Actually allow users to specify pidfile Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 048/113] block/file-posix: Fix fully preallocated truncate Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 049/113] iotests: Test preallocated truncate of 2G image Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 050/113] tcg: Mark muluh_i64 and mulsh_i64 as 64-bit ops Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 051/113] target/i386: Fix andn instruction Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 052/113] exec: fix memory leak in find_max_supported_pagesize() Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 053/113] gluster: Fix blockdev-add with server.N.type=unix Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 054/113] cpus.c: ensure running CPU recalculates icount deadlines on timer expiry Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 055/113] vfio-ccw: fix memory leaks in vfio_ccw_realize() Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 056/113] hw/block/pflash_cfi: fix off-by-one error Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 057/113] tcg: Introduce tcg_set_insn_start_param Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 058/113] hw/char/cmsdk-apb-uart.c: Correctly clear INTSTATUS bits on writes Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 059/113] device_tree: Increase FDT_MAX_SIZE to 1 MiB Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 060/113] ccid: Fix dwProtocols advertisement of T=0 Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 061/113] nbd/client: Fix error messages during NBD_INFO_BLOCK_SIZE Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 062/113] s390: Do not pass inofficial IPL type to the guest Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 063/113] s390-ccw: force diag 308 subcode to unsigned long Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 064/113] tcg/arm: Fix memory barrier encoding Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 065/113] target/arm: Implement v8M VLLDM and VLSTM Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 066/113] target/ppc: always set PPC_MEM_TLBIE in pre 2.8 migration hack Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 067/113] spapr: don't advertise radix GTSE if max-compat-cpu < power9 Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 068/113] qxl: fix local renderer crash Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 069/113] configure: recognize more rpmbuild macros Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 070/113] qemu-img: Resolve relative backing paths in rebase Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 071/113] iotests: Add test for rebasing with relative paths Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 072/113] qemu-io: Use purely string blockdev options Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 073/113] qemu-img: Use only string options in img_open_opts Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 074/113] iotests: Add test for -U/force-share conflicts Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 075/113] lm32: take BQL before writing IP/IM register Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 076/113] raw: Check byte range uniformly Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 077/113] s390x/css: disabled subchannels cannot be status pending Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 078/113] pc-bios/s390-ccw: struct tpi_info must be declared as aligned(4) Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 079/113] qdev: rename typedef qdev_resetfn() -> DeviceReset() Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 080/113] qdev: add helpers to be more explicit when using abstract QOM parent functions Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 081/113] s390x/virtio: Convert virtio-ccw from *_exit to *_unrealize Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 082/113] virtio-ccw: common reset handler Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 083/113] s390x/ccw: make sure all ccw devices are properly reset Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 084/113] console: Avoid segfault in screendump Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 085/113] hw/intc/arm_gicv3: Fix APxR<n> register dispatching Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 086/113] intel-iommu: Redefine macros to enable supporting 48 bit address width Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 087/113] intel-iommu: Extend address width to 48 bits Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 088/113] intel-iommu: send PSI always even if across PDEs Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 089/113] intel-iommu: remove IntelIOMMUNotifierNode Michael Roth
2018-06-19 1:42 ` Michael Roth [this message]
2018-06-19 1:42 ` [Qemu-devel] [PATCH 091/113] intel-iommu: only do page walk for MAP notifiers Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 092/113] intel-iommu: introduce vtd_page_walk_info Michael Roth
2018-06-19 1:42 ` [Qemu-devel] [PATCH 093/113] intel-iommu: pass in address space when page walk Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 094/113] intel-iommu: trace domain id during " Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 095/113] util: implement simple iova tree Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 096/113] intel-iommu: rework the page walk logic Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 097/113] arm_gicv3_kvm: increase clroffset accordingly Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 098/113] Fix libusb-1.0.22 deprecated libusb_set_debug with libusb_set_option Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 099/113] ahci: fix PxCI register race Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 100/113] arm_gicv3_kvm: kvm_dist_get/put: skip the registers banked by GICR Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 101/113] block: Make bdrv_is_writable() public Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 102/113] qcow2: Do not mark inactive images corrupt Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 103/113] iotests: Add case for a corrupted inactive image Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 104/113] throttle: Fix crash on reopen Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 105/113] vga: fix region calculation Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 106/113] i386: define the 'ssbd' CPUID feature bit (CVE-2018-3639) Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 107/113] i386: Define the Virt SSBD MSR and handling of it (CVE-2018-3639) Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 108/113] i386: define the AMD 'virt-ssbd' CPUID feature bit (CVE-2018-3639) Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 109/113] tap: set vhostfd passed from qemu cli to non-blocking Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 110/113] vhost-user: delete net client if necessary Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 111/113] qemu-img: Fix assert when mapping unaligned raw file Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 112/113] iotests: Add test 221 to catch qemu-img map regression Michael Roth
2018-06-19 1:43 ` [Qemu-devel] [PATCH 113/113] arm_gicv3_kvm: kvm_dist_get/put_priority: skip the registers banked by GICR_IPRIORITYR Michael Roth
2018-06-19 7:42 ` [Qemu-devel] [PATCH 00/113] Patch Round-up for stable 2.11.2, freeze on 2018-06-22 Cornelia Huck
2018-06-20 20:41 ` Michael Roth
2018-06-20 21:55 ` Michael Roth
2018-06-21 8:34 ` Cornelia Huck
2018-06-19 11:56 ` [Qemu-devel] [Qemu-stable] " Greg Kurz
2018-06-20 20:29 ` Michael Roth
2018-06-21 12:30 ` Greg Kurz
2018-06-19 18:19 ` [Qemu-devel] " Cole Robinson
2018-06-19 21:57 ` Bruce Rogers
2018-06-20 21:48 ` Michael Roth
2018-06-21 12:15 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180619014319.28272-91-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=mst@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).