Fix guest OS hang when 64bit PCI bar present
commit7feb640cf32d86f91f5a624136345eb6a63eab42
authorAlexey Korolev <akorolex@gmail.com>
Fri, 22 Feb 2013 03:58:44 +0000 (22 16:58 +1300)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 27 Feb 2013 15:23:22 +0000 (27 17:23 +0200)
tree42face6a4260bb03af364e356f760d7516139b6a
parent2af234e61d59f39ae16ba882271e7c4fef2c41c1
Fix guest OS hang when 64bit PCI bar present

This patch addresses the issue fully described here:
http://lists.nongnu.org/archive/html/qemu-devel/2013-02/msg01804.html

Linux kernels prior to 2.6.36 do not disable the PCI device during
enumeration process. Since lower and higher parts of a 64bit BAR
are programmed separately this leads to qemu receiving a request to occupy
a completely wrong address region for a short period of time.
We have found that the boot process screws up completely if kvm-apic range
is overlapped even for a short period of time (it is fine for other
regions though).

This patch raises the priority of the kvm-apic memory region, so it is
never pushed out by PCI devices. The patch is quite safe as it does not
touch memory manager.

Signed-off-by: Alexey Korolev <akorolex@gmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/sysbus.c
hw/sysbus.h
target-i386/cpu.c