From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH] kvm: cleanup CR8 handling Date: Tue, 21 Dec 2010 11:07:50 +0100 Message-ID: <4D107C76.8000605@amd.com> References: <1291807635-3583-1-git-send-email-andre.przywara@amd.com> <4D060CB4.9000207@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Cc: "kvm@vger.kernel.org" , "mtosatti@redhat.com" To: Avi Kivity Return-path: Received: from tx2ehsobe002.messaging.microsoft.com ([65.55.88.12]:21699 "EHLO TX2EHSOBE003.bigfish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933556Ab0LUKL0 (ORCPT ); Tue, 21 Dec 2010 05:11:26 -0500 In-Reply-To: <4D060CB4.9000207@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Avi Kivity wrote: > On 12/08/2010 01:27 PM, Andre Przywara wrote: >> The handling of CR8 writes in KVM is currently somewhat cumbersome. >> This patch makes it look like the other CR register handlers >> and fixes a possible issue in VMX, where the RIP would be incremented >> despite an injected #GP. >> >> unsigned long kvm_get_cr8(struct kvm_vcpu *vcpu) >> @@ -4104,7 +4098,7 @@ static int emulator_set_cr(int cr, unsigned long val, struct kvm_vcpu *vcpu) >> res = kvm_set_cr4(vcpu, mk_cr_64(kvm_read_cr4(vcpu), val)); >> break; >> case 8: >> - res = __kvm_set_cr8(vcpu, val& 0xfUL); >> + res = kvm_set_cr8(vcpu, val); >> break; >> default: >> vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr); > > Why drop the mask? Because it is checked in kvm_set_cr8 itself. If it is wrong, the caller should get a #GP as described in the manual. By masking this out we would never deliver the #GP to the guest. Regards, Andre. -- Andre Przywara AMD-Operating System Research Center (OSRC), Dresden, Germany Tel: +49 351 448-3567-12