Am 05.01.2011 07:45, Huang Ying wrote: > On Fri, 2010-12-31 at 17:10 +0800, Jan Kiszka wrote: >> Am 31.12.2010 06:22, Huang Ying wrote: >>> 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. >>> >>> Signed-off-by: Huang Ying <ying.huang@xxxxxxxxx> >>> --- >>> kvm.h | 2 ++ >>> qemu-kvm.c | 37 +++++++++++++++++++++++++++++++++++++ >> >> What's missing in upstream to make this a uq/master patch? We are still >> piling up features and fixes in qemu-kvm* that should better target >> upstream directly. That's work needlessly done twice. > > OK. I will do that. Just based on uq/master is sufficient to make it an > upstream patch? This how things work: You base your upstream changes onto uq/master, they get picked up and then merged into qemu, qemu-kvm merges upstream back, and then you have your bits ready in both trees. Sometimes it takes some additional tweaking the qemu-kvm after the merge, but I hope we can significantly reduce the need for that very soon. > >> Is this infrastructure really arch-independent? Will there be other >> users besides x86? If not, better keep it in target-i386/kvm.c. > > No. It is used only in x86. I will move it into target-i386/kvm.c. > Perfect. Then you just need to extend kvm_arch_init_vcpu with your reset registration, and both upstream and qemu-kvm will gain the feature automatically. Jan
Attachment:
signature.asc
Description: OpenPGP digital signature