Re: [PATCH] KVM: x86: Whitelist port 0x7e for pre-incrementing %rip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




----- Original Message -----
> From: "Sean Christopherson" <sean.j.christopherson@xxxxxxxxx>
> To: "Paolo Bonzini" <pbonzini@xxxxxxxxxx>, "Radim Krčmář" <rkrcmar@xxxxxxxxxx>
> Cc: kvm@xxxxxxxxxxxxxxx, "Simon Becherer" <simon@xxxxxxxxxxx>, "Iakov Karpov" <srid@xxxxxxxxx>, "Gabriele Balducci"
> <balducci@xxxxxxxx>, "Antti Antinoja" <reader@xxxxxxxxxxx>, "Takashi Iwai" <tiwai@xxxxxxxx>, "Jiri Slaby"
> <jslaby@xxxxxxxx>, "Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>
> Sent: Saturday, April 27, 2019 1:38:46 AM
> Subject: [PATCH] KVM: x86: Whitelist port 0x7e for pre-incrementing %rip
> 
> KVM's recent bug fix to update %rip after emulating I/O broke userspace
> that relied on the previous behavior of incrementing %rip prior to
> exiting to userspace.  When running a Windows XP guest on AMD hardware,
> Qemu may patch "OUT 0x7E" instructions in reaction to the OUT itself.
> Because KVM's old behavior was to increment %rip before exiting to
> userspace to handle the I/O, Qemu manually adjusted %rip to account for
> the OUT instruction.
> 
> Arguably this is a userspace bug as KVM requires userspace to re-enter
> the kernel to complete instruction emulation before taking any other
> actions.  That being said, this is a bit of a grey area and breaking
> userspace that has worked for many years is bad.
> 
> Pre-increment %rip on OUT to port 0x7e before exiting to userspace to
> hack around the issue.
> 
> Fixes: 45def77ebf79e ("KVM: x86: update %rip after emulating IO")

The patch should probably be tweaked to use the quirks mechanism.  I'll post
an adjusted version next Monday.

Paolo



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux