From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: RFC: Add reserved bits check Date: Mon, 30 Mar 2009 08:12:34 +0300 Message-ID: <49D054C2.6090106@redhat.com> References: <9832F13BD22FB94A829F798DA4A8280501A21068EF@pdsmsx503.ccr.corp.intel.com> <9832F13BD22FB94A829F798DA4A8280501A2106E6A@pdsmsx503.ccr.corp.intel.com> <49CC9DAB.8090802@redhat.com> <9832F13BD22FB94A829F798DA4A8280501A2107197@pdsmsx503.ccr.corp.intel.com> <49CCE275.9070608@redhat.com> <9832F13BD22FB94A829F798DA4A8280501A21071B0@pdsmsx503.ccr.corp.intel.com> <49CF4C1B.3010404@redhat.com> <9832F13BD22FB94A829F798DA4A8280501A3C01DDE@pdsmsx503.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "kvm@vger.kernel.org" To: "Dong, Eddie" Return-path: Received: from mx2.redhat.com ([66.187.237.31]:40347 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752818AbZC3FMI (ORCPT ); Mon, 30 Mar 2009 01:12:08 -0400 In-Reply-To: <9832F13BD22FB94A829F798DA4A8280501A3C01DDE@pdsmsx503.ccr.corp.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Dong, Eddie wrote: > @@ -2183,6 +2197,25 @@ static int paging64_init_context_common(struct kvm_vcpu *vcpu, int level) > > static int paging64_init_context(struct kvm_vcpu *vcpu) > { > + struct kvm_mmu *context = &vcpu->arch.mmu; > + int maxphyaddr = cpuid_maxphyaddr(vcpu); > + u64 exb_bit_rsvd = 0; > + > + if (!is_nx(vcpu)) > + exb_bit_rsvd = rsvd_bits(63, 63); > + > + context->rsvd_bits_mask[0][3] = exb_bit_rsvd | > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8); > + context->rsvd_bits_mask[0][2] = exb_bit_rsvd | > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8); > + context->rsvd_bits_mask[0][1] = exb_bit_rsvd | > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8); > + context->rsvd_bits_mask[0][0] = rsvd_bits(maxphyaddr, 51); > + context->rsvd_bits_mask[1][3] = context->rsvd_bits_mask[0][3]; > + context->rsvd_bits_mask[1][2] = context->rsvd_bits_mask[0][2]; > + context->rsvd_bits_mask[1][1] = exb_bit_rsvd | > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(13, 20); > + context->rsvd_bits_mask[1][0] = context->rsvd_bits_mask[0][0]; > return paging64_init_context_common(vcpu, PT64_ROOT_LEVEL); > } > Just noticed that walk_addr() too can be called from tdp context, so need to make sure rsvd_bits_mask is initialized in init_kvm_tdp_mmu() as well. -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain.