xemu/hw/i386
Peter Xu 9a4bb8391f intel_iommu: Fix unexpected unmaps during global unmap
This is an replacement work of Yan Zhao's patch:

https://www.mail-archive.com/qemu-devel@nongnu.org/msg625340.html

vtd_address_space_unmap() will do proper page mask alignment to make
sure each IOTLB message will have correct masks for notification
messages (2^N-1), but sometimes it can be expanded to even supercede
the registered range.  That could lead to unexpected UNMAP of already
mapped regions in some other notifiers.

Instead of doing mindless expension of the start address and address
mask, we split the range into smaller ones and guarantee that each
small range will have correct masks (2^N-1) and at the same time we
should also try our best to generate as less IOTLB messages as
possible.

Reported-by: Yan Zhao <yan.y.zhao@intel.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Yan Zhao <yan.y.zhao@intel.com>
Message-Id: <20190624091811.30412-3-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2019-07-05 22:16:46 +02:00
..
kvm Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
xen xen: Drop includes of xen/hvm/params.h 2019-06-24 10:42:30 +01:00
Kconfig hw/ide/ahci: Add a Kconfig switch for the AHCI-ICH9 device 2019-05-13 09:36:31 +02:00
Makefile.objs hw/i386: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
acpi-build.c q35: fix mmconfig and PCI0._CRS 2019-06-16 16:16:52 -04:00
acpi-build.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
amd_iommu.c Categorize devices: iommu 2019-04-25 14:52:28 -03:00
amd_iommu.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
fw_cfg.c hw/i386: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
fw_cfg.h hw/i386: Extract fw_cfg definitions to local "fw_cfg.h" 2019-05-23 14:10:31 +02:00
intel_iommu.c intel_iommu: Fix unexpected unmaps during global unmap 2019-07-05 22:16:46 +02:00
intel_iommu_internal.h intel_iommu: Drop extended root field 2019-04-02 11:49:14 -04:00
kvmvapic.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
multiboot.c elf: Add optional function ptr to load_elf() to parse ELF notes 2019-02-05 16:50:16 +01:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc.c pc: fix possible NULL pointer dereference in pc_machine_get_device_memory_region_size() 2019-07-05 22:16:45 +02:00
pc_piix.c x86 queue, 2019-04-25 2019-04-26 16:38:04 +01:00
pc_q35.c hw: Nuke hw_compat_4_0_1 and pc_compat_4_0_1 2019-06-21 13:25:29 +02:00
pc_sysfw.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
trace-events intel_iommu: Drop extended root field 2019-04-02 11:49:14 -04:00
vmmouse.c hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h 2018-03-12 16:12:48 +01:00
vmport.c hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h 2018-03-12 16:12:48 +01:00
x86-iommu.c x86-iommu: turn on IR by default if proper 2018-12-20 13:25:11 -05:00