QEMU With E2K User Support
Go to file
Huang Ying 3c85e74fbf KVM, MCE, unpoison memory address across reboot
In Linux kernel HWPoison processing implementation, the virtual
address in processes mapping the error physical memory page is marked
as HWPoison.  So that, the further accessing to the virtual
address will kill corresponding processes with SIGBUS.

If the error physical memory page is used by a KVM guest, the SIGBUS
will be sent to QEMU, and QEMU will simulate a MCE to report that
memory error to the guest OS.  If the guest OS can not recover from
the error (for example, the page is accessed by kernel code), guest OS
will reboot the system.  But because the underlying host virtual
address backing the guest physical memory is still poisoned, if the
guest system accesses the corresponding guest physical memory even
after rebooting, the SIGBUS will still be sent to QEMU and MCE will be
simulated.  That is, guest system can not recover via rebooting.

In fact, across rebooting, the contents of guest physical memory page
need not to be kept.  We can allocate a new host physical page to
back the corresponding guest physical address.

This patch fixes this issue in QEMU-KVM via calling qemu_ram_remap()
to clear the corresponding page table entry, so that make it possible
to allocate a new page to recover the issue.

[ Jan: rebasing and tiny cleanups]

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2011-03-15 01:19:06 -03:00
audio pulseaudio: tweak config 2011-01-25 19:56:53 +03:00
block qcow2: Fix order in L2 table COW 2011-02-10 13:24:29 +01:00
bsd-user bsd-user: Fix possible memory leaks and wrong realloc call 2011-01-17 20:23:47 +00:00
darwin-user darwin-user: Use GCC_FMT_ATTR (format checking) 2010-12-04 20:51:19 +00:00
default-configs lm32: EVR32 and uclinux BSP 2011-03-07 13:42:37 +01:00
docs simpletrace: Thread-safe tracing 2011-03-07 15:34:17 +00:00
fpu softfloat: add _set_sign(), _infinity and _half for 32 and 64 bits floats. 2011-02-24 08:53:36 +01:00
fsdev Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
gdb-xml
hw always qemu_cpu_kick after unhalting a cpu 2011-03-13 14:44:21 +00:00
linux-user linux-user: Fix large seeks by 32 bit guest on 64 bit host 2011-03-06 19:06:27 +01:00
net Fixing tap adapter for win32 2011-02-25 15:14:04 +00:00
pc-bios Update SeaBIOS to 0.6.1.2 2011-02-01 16:57:00 -06:00
QMP spice: connection events. 2010-12-09 14:23:24 +01:00
roms Update SeaBIOS to 0.6.1.2 2011-02-01 16:57:00 -06:00
scripts simpletrace: Thread-safe tracing 2011-03-07 15:34:17 +00:00
slirp net: fix trace when debug is activated in slirp 2011-03-05 12:00:51 +00:00
sysconfigs/target
target-alpha inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-arm inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-cris inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-i386 KVM, MCE, unpoison memory address across reboot 2011-03-15 01:19:06 -03:00
target-lm32 lm32: todo and documentation 2011-03-07 13:42:37 +01:00
target-m68k inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-microblaze inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-mips inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-ppc kvm: Rename kvm_arch_process_irqchip_events to async_events 2011-03-15 01:19:05 -03:00
target-s390x kvm: Rename kvm_arch_process_irqchip_events to async_events 2011-03-15 01:19:05 -03:00
target-sh4 inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
target-sparc inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
tcg tcg: Add support for debugging leakage of temporaries 2011-03-07 09:26:06 +01:00
tests lm32: opcode testsuite 2011-03-07 13:42:37 +01:00
ui Refactor thread retrieval and check 2011-03-13 14:44:21 +00:00
.gitignore Add TAGS and *~ to .gitignore 2011-02-24 11:25:38 -06:00
.gitmodules
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c
alpha-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
alpha.ld
arch_init.c LatticeMico32 target support 2011-03-07 13:42:36 +01:00
arch_init.h LatticeMico32 target support 2011-03-07 13:42:36 +01:00
arm-dis.c arm-dis: Include opcode hex when doing disassembly 2011-01-12 15:10:47 +01:00
arm-semi.c Fix commandline handling for ARM semihosted executables 2011-01-07 18:20:48 +02:00
arm.ld
async.c
balloon.c trace: Trace entry point of balloon request handler 2010-09-09 16:22:45 -05:00
balloon.h
bitmap.c bitmap: add a generic bitmap and bitops library 2011-02-23 16:28:29 -06:00
bitmap.h bitmap: add a generic bitmap and bitops library 2011-02-23 16:28:29 -06:00
bitops.c bitmap: add a generic bitmap and bitops library 2011-02-23 16:28:29 -06:00
bitops.h bitops: fix error on OpenBSD and mingw32 2011-02-25 17:21:22 +00:00
block_int.h Add flag to indicate external users to block device 2011-02-07 12:51:19 +01:00
block-migration.c block: enable in_use flag 2011-02-07 12:51:19 +01:00
block-migration.h
block.c trace: Trace bdrv_aio_flush() 2011-03-07 15:34:42 +00:00
block.h fdc: move floppy geometry guessing to block.c 2011-02-20 09:33:17 +00:00
blockdev.c blockdev: Plug memory leak in drive_init() error paths 2011-02-10 13:24:28 +01:00
blockdev.h blockdev: add refcount to DriveInfo 2011-02-07 12:51:19 +01:00
bswap.h bswap.h: add cpu_to_be64wu() 2011-01-10 10:55:10 +01:00
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c migration: allow rate > 4g 2010-12-02 21:13:39 +02:00
buffered_file.h
cache-utils.c Remove trailing whitespace 2010-11-01 00:54:06 +03:00
cache-utils.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
Changelog
check-qdict.c check-qdict: Fix possible crash 2011-02-20 18:45:09 +01:00
check-qfloat.c
check-qint.c
check-qjson.c Silence compiler warning in json test case 2010-10-22 10:08:37 -02:00
check-qlist.c
check-qstring.c
cmd.c
cmd.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
CODING_STYLE checkpatch: adjust to QEMUisms 2011-01-20 20:58:56 +00:00
compatfd.c Use sigwait instead of sigwaitinfo. 2011-02-25 20:16:26 +00:00
compatfd.h signalfd compatibility 2010-10-20 16:15:04 -05:00
config.h
configure remove CONFIG_THREAD 2011-03-13 14:44:21 +00:00
console.c remove text_console_opts 2011-02-01 16:50:43 -06:00
console.h vnc: Fix password expiration through 'change vnc ""' (v2) 2011-02-01 15:16:48 -06:00
COPYING
COPYING.LIB
cpu-all.h Add qemu_ram_remap 2011-03-15 01:19:06 -03:00
cpu-common.h Add qemu_ram_remap 2011-03-15 01:19:06 -03:00
cpu-defs.h linux-user: Define target alignment size 2011-02-17 11:46:34 +02:00
cpu-exec.c inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
cpus.c add Win32 IPI service 2011-03-13 14:44:22 +00:00
cpus.h Refactor debug and vmstop request interface 2011-02-14 12:39:46 -02:00
cris-dis.c cris: Support disassembly of crisv10 2011-01-10 22:31:09 +01:00
cursor_hidden.xpm
cursor_left_ptr.xpm
cursor.c
cutils.c QCOW2: bug fix - read base image beyond its size 2011-02-10 13:23:44 +01:00
def-helper.h
device_tree.c
device_tree.h
dis-asm.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
disas.c disas: remove opcode printing on ARM hosts 2011-01-12 15:12:58 +01:00
disas.h Remove special handling of system include files (no longer needed) 2010-10-22 17:11:28 +00:00
dma-helpers.c
dma.h
dyngen-exec.h Remove special handling of system include files (no longer needed) 2010-10-22 17:11:28 +00:00
elf.h LatticeMico32 target support 2011-03-07 13:42:36 +01:00
envlist.c
envlist.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00
exec-all.h Make tb_alloc static 2011-02-10 18:17:43 +01:00
exec.c Add qemu_ram_remap 2011-03-15 01:19:06 -03:00
gdbstub.c lm32: gdbstub support 2011-03-07 13:42:36 +01:00
gdbstub.h Add scripts directory 2011-01-20 20:54:21 +00:00
gen-icount.h
HACKING HACKING: Update status of format checking 2011-02-25 16:31:05 -06:00
hmp-commands.hx hmp-commands.hx: fix badly merged client_migrate_info command 2011-03-10 16:12:21 -06:00
host-utils.c
host-utils.h
hpet.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c
ioport-user.c
ioport.c ioport: Improve error output 2011-03-06 21:01:32 +01:00
ioport.h Type-safe ioport callbacks 2010-11-21 09:16:57 -06:00
iorange.h Type-safe ioport callbacks 2010-11-21 09:16:57 -06:00
iov.c
iov.h
json-lexer.c
json-lexer.h
json-parser.c Use GCC_FMT_ATTR (format checking) 2010-10-03 06:34:51 +00:00
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c kvm: Rename kvm_arch_process_irqchip_events to async_events 2011-03-15 01:19:05 -03:00
kvm-stub.c Introduce log_start/log_stop in CPUPhysMemoryClient 2011-02-14 12:39:47 -02:00
kvm.h kvm: Rename kvm_arch_process_irqchip_events to async_events 2011-03-15 01:19:05 -03:00
libfdt_env.h
LICENSE
linux-aio.c
m68k-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
m68k-semi.c Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
m68k.ld
MAINTAINERS MAINTAINERS: add LatticeMico32 maintainer 2011-03-07 13:42:58 +01:00
Makefile Add scripts directory 2011-01-20 20:54:21 +00:00
Makefile.dis
Makefile.hw
Makefile.objs add win32 qemu-thread implementation 2011-03-13 14:44:21 +00:00
Makefile.target lm32: EVR32 and uclinux BSP 2011-03-07 13:42:37 +01:00
Makefile.user
microblaze-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
migration-exec.c
migration-fd.c
migration-tcp.c Close socket file descriptor when qemu_accept fails 2010-07-25 17:03:51 +02:00
migration-unix.c
migration.c Improve vm_stop reason declarations 2011-02-14 12:39:46 -02:00
migration.h add migration state change notifiers 2011-01-24 15:13:54 +01:00
mips-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
mips.ld
module.c
module.h
monitor.c x86: Optionally avoid injecting AO MCEs while others are pending 2011-03-15 01:19:05 -03:00
monitor.h spice: connection events. 2010-12-09 14:23:24 +01:00
nbd.c nbd: Haiku has _IO() in its BSD compatibility layer 2010-10-03 06:31:33 +00:00
nbd.h Merge remote branch 'kwolf/for-anthony' into staging 2010-09-08 14:26:57 -05:00
net-checksum.c
net.c net: Add the missing option declaration of "vhostforce" 2011-03-06 20:15:31 +01:00
net.h Add bootindex parameter to net/block/fd device 2010-12-11 21:32:46 +00:00
notify.c
notify.h
os-posix.c Separate qemu_pidfile() into OS specific versions 2010-10-30 08:02:39 +00:00
os-win32.c unlock iothread during WaitForMultipleObjects 2011-03-13 14:44:20 +00:00
osdep.c Remove unncessary includes 2010-10-30 08:02:40 +00:00
osdep.h bitmap: add a generic bitmap and bitops library 2011-02-23 16:28:29 -06:00
oslib-posix.c virtio-9p: fix build on !CONFIG_UTIMENSAT 2010-12-02 16:08:40 -08:00
oslib-win32.c w32: Remove implementation of function ffs 2011-02-20 20:18:21 +00:00
path.c user: speed up init_paths a bit 2011-02-09 10:33:54 +02:00
pci-ids.txt
pflib.c add pflib: PixelFormat conversion library. 2010-09-21 18:35:30 +02:00
pflib.h add pflib: PixelFormat conversion library. 2010-09-21 18:35:30 +02:00
poison.h LatticeMico32 target support 2011-03-07 13:42:36 +01:00
posix-aio-compat.c trace: Trace posix-aio-compat.c completion and cancellation 2011-03-07 15:34:46 +00:00
ppc64.ld
ppc-dis.c
ppc.ld
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu_socket.h net: remove parse_host_src_port() function 2011-03-06 20:06:50 +01:00
qemu-aio.h
qemu-barrier.h Introduce proper compiler barrier 2010-07-22 05:52:08 +02:00
qemu-char.c qemu-char: Check for missing backend name 2011-02-20 18:26:28 +01:00
qemu-char.h add qemu_chr_set_echo 2011-02-01 16:50:43 -06:00
qemu-common.h x86: Refine error reporting of MCE injection services 2011-03-15 01:19:05 -03:00
qemu-config.c spice: add chardev (v5) 2011-01-24 15:41:40 +01:00
qemu-config.h spice: core bits 2010-09-21 18:36:42 +02:00
qemu-doc.texi Documentation: add Sheepdog disk images 2011-02-07 09:44:45 +01:00
qemu-error.c
qemu-error.h Use GCC_FMT_ATTR (format checking) 2010-10-03 06:34:51 +00:00
qemu-img-cmds.hx Copy snapshots out of QCOW2 disk 2010-10-22 14:49:35 +02:00
qemu-img.c qemu-img: Improve error messages for failed bdrv_open 2011-02-10 13:24:11 +01:00
qemu-img.texi Documentation: Add qemu-img check/rebase 2011-01-24 16:41:49 +01:00
qemu-io.c qemu-io: Fix discard command 2011-01-31 10:03:00 +01:00
qemu-lock.h qemu-lock.h: Remove non-pthreads spinlock implementations 2011-02-20 15:20:06 +01:00
qemu-log.h
qemu-malloc.c Add missing tracing to qemu_mallocz() 2010-12-14 15:44:21 +01:00
qemu-nbd.c Remove NULL checks for bdrv_new return value 2010-12-17 16:11:03 +01:00
qemu-nbd.texi
qemu-objects.h
qemu-option.c qemu-option: Fix parse_option_parameters() documentation typo 2010-12-14 15:44:21 +01:00
qemu-option.h
qemu-options.h
qemu-options.hx vnc: add a non-adaptive option 2011-02-23 16:28:29 -06:00
qemu-os-posix.h virtio-9p: fix build on !CONFIG_UTIMENSAT 2010-12-02 16:08:40 -08:00
qemu-os-win32.h Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
qemu-queue.h
qemu-sockets.c
qemu-tech.texi qemu-tech: Spelling fixes 2011-01-09 20:59:53 +00:00
qemu-thread-posix.c add Win32 IPI service 2011-03-13 14:44:22 +00:00
qemu-thread-posix.h add Win32 IPI service 2011-03-13 14:44:22 +00:00
qemu-thread-win32.c add win32 qemu-thread implementation 2011-03-13 14:44:21 +00:00
qemu-thread-win32.h add win32 qemu-thread implementation 2011-03-13 14:44:21 +00:00
qemu-thread.h add win32 qemu-thread implementation 2011-03-13 14:44:21 +00:00
qemu-timer-common.c Add OpenBSD to ifdef list since it has CLOCK_MONOTONIC. 2010-12-21 19:44:42 +00:00
qemu-timer.c use win32 timer queues 2011-03-13 14:44:20 +00:00
qemu-timer.h Mov muldiv64 to qemu-common.h (Thus unbreaking gus) 2010-10-30 01:41:01 +04:00
qemu-tool.c Move qemu_gettimeofday() to OS specific files 2010-10-30 08:02:38 +00:00
qemu-x509.h
qemu.sasl
qerror.c qerror: Add QERR_UNKNOWN_BLOCK_FORMAT_FEATURE 2011-02-10 13:23:44 +01:00
qerror.h qerror: Add QERR_UNKNOWN_BLOCK_FORMAT_FEATURE 2011-02-10 13:23:44 +01:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c Add support for JSON pretty printing 2010-10-01 10:12:43 -03:00
qjson.h Merge remote branch 'qmp/for-anthony' into staging 2010-10-05 13:54:49 -05:00
qlist.c
qlist.h
qmp-commands.hx Merge remote branch 'spice/spice.v29.pull' into staging 2011-02-01 15:22:48 -06:00
qobject.h
qstring.c
qstring.h
range.h Introduce range.h 2010-09-18 05:53:14 +00:00
readline.c
readline.h
README
rules.mak Add scripts directory 2011-01-20 20:54:21 +00:00
rwhandler.c Make simple io mem handler endian aware 2010-12-11 15:24:25 +00:00
rwhandler.h Make simple io mem handler endian aware 2010-12-11 15:24:25 +00:00
s390-dis.c
s390.ld
savevm.c vmstate: add UINT32 VARRAYS 2011-03-10 16:12:26 -06:00
sh4-dis.c *-dis: Replace fprintf_ftype by fprintf_function (format checking) 2010-12-04 20:50:30 +00:00
simpletrace.c simpletrace: Thread-safe tracing 2011-03-07 15:34:17 +00:00
simpletrace.h simpletrace: Thread-safe tracing 2011-03-07 15:34:17 +00:00
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
softmmu-semi.h
sparc64.ld
sparc-dis.c
sparc.ld
spice-qemu-char.c spice: add chardev (v5) 2011-01-24 15:41:40 +01:00
sysemu.h Refactor debug and vmstop request interface 2011-02-14 12:39:46 -02:00
targphys.h
tcg-runtime.c
thunk.c
thunk.h
TODO
trace-events trace: Trace posix-aio-compat.c completion and cancellation 2011-03-07 15:34:46 +00:00
translate-all.c
uboot_image.h
usb-bsd.c usb-bsd: fix a file descriptor leak 2011-01-09 14:43:33 +00:00
usb-linux.c usb-linux: Get the active configuration from sysfs rather then asking the dev 2010-11-16 14:35:00 -06:00
usb-stub.c
VERSION Open up the 0.15 development branch 2011-02-02 08:39:28 +01:00
version.rc mingw: add version information to the executables 2010-09-26 16:07:57 +00:00
vgafont.h
vl.c Synchronize VCPU states before reset 2011-03-15 01:19:05 -03:00
x86_64.ld

Read the documentation in qemu-doc.html.

Fabrice Bellard.