From: Avi Kivity <avi@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH 2/2] KVM: Make CR4 reloads also reload CR3 if paging is enabled
Date: Mon, 25 May 2009 18:08:33 +0300 [thread overview]
Message-ID: <4A1AB471.5070901@redhat.com> (raw)
In-Reply-To: <20090525115842.GA3417@amt.cnet>
Marcelo Tosatti wrote:
> On Mon, May 25, 2009 at 11:47:24AM +0300, Avi Kivity wrote:
>
>> The processor is documented to reload the PDPTRs while in PAE mode if any
>> of the CR4 bits PSE, PGE, or PAE change. Linux relies on this
>> behaviour when zapping the low mappings of PAE kernels during boot.
>>
>> The code already handled changes to CR4.PAE; augment it to also notice changes
>> to PSE and PGE.
>>
>> This triggered while booting an F11 PAE kernel; the futex initialization code
>> runs before any CR3 reloads and writes to a NULL pointer; the futex subsystem
>> ended up uninitialized, killing PI futexes and pulseaudio which uses them.
>>
>
> One comment regarding set_cr0. Section 8.1 of the TLB doc says:
>
> * The processor does not maintain a PDP cache as described in
> Section 4. The processor always caches information from the four
> page-directory-pointer-table entries. These entries are not cached at
> the time of address translation. Instead, they are always cached as part
> of the execution of the following instructions:
>
> * A MOV to CR0 that modifies CR0.PG and that occurs with IA32_EFER.LMA = 0
> and CR4.PAE = 1.
>
> However kvm_set_cr0 only caches the PDPTRs if CR0.PG changed from 0->1.
> Can't see a problem there though.
>
Yes, if cr0.pg == 0, then the pdptrs are meaningless.
> Also, the checks in kvm_arch_vcpu_ioctl_set_sregs should probably be unified
> with kvm_set_crX, to avoid future mistakes.
>
Yes please. But it needs to be done very carefully, since the order of
the checks matters here.
> Otherwise, ACK.
>
Thanks for the review.
--
error compiling committee.c: too many arguments to function
prev parent reply other threads:[~2009-05-25 15:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-25 8:47 [PATCH 0/2] KVM PDPTR reload fixes review Avi Kivity
2009-05-25 8:47 ` [PATCH 1/2] KVM: Make paravirt tlb flush also reload PAE PDPTEs Avi Kivity
2009-05-25 11:59 ` Marcelo Tosatti
2009-05-25 15:09 ` Avi Kivity
2009-05-25 8:47 ` [PATCH 2/2] KVM: Make CR4 reloads also reload CR3 if paging is enabled Avi Kivity
2009-05-25 11:58 ` Marcelo Tosatti
2009-05-25 15:08 ` Avi Kivity [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A1AB471.5070901@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.