Dong, Eddie wrote: >>> diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index >>> cecdb1b..0ebae4c 100644 --- a/drivers/kvm/kvm_main.c +++ >>> b/drivers/kvm/kvm_main.c @@ -1080,14 +1080,19 @@ static int >>> emulator_read_emulated(unsigned long addr, memcpy(val, >>> vcpu->mmio_data, bytes); vcpu->mmio_read_completed = 0; return >>> X86EMUL_CONTINUE; - } else if (emulator_read_std(addr, val, bytes, >>> vcpu) - == X86EMUL_CONTINUE) - return X86EMUL_CONTINUE; + } gpa = >>> vcpu->mmu.gva_to_gpa(vcpu, addr); + if ((gpa & PAGE_MASK) == >>> 0xfee00000) + goto mmio; + >>> >> The guest can change the apic base address. Different vcpus can have >> different addresses. >> >> > > In theory yes. But we didn't observe this so far. Xen with this feature > with same assumption > works for quit a long time. > Also given that we are using global shadow page table, so probably we > have to > take this assumption :-) >
We can workaround this by disabling the optimization when a guest has different addresses for the lapic. But I agree there's no need to do that now. -- Any sufficiently difficult bug is indistinguishable from a feature. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
