Re: cr3 OOS optimisation breaks 32-bit GNU/kFreeBSD guest

Marcelo Tosatti
2009-02-23T15:07:18Z

On Mon, Feb 23, 2009 at 04:59:37PM +0200, Avi Kivity wrote:
> Marcelo Tosatti wrote:
>>> Thanks for your fast answer and for your help for debugging.
>>>
>>
>> If you confirm that FreeBSD is indeed relying on cr3 to sync global
>> pages, it might be better to disable the optimization. Lets hope that is
>> not the case.
>>
>
> cr3 writes explicitly do not flush global pages; otherwise what would be
> the point of global pages at all?

From the Intel TLB doc:

The processor is always free to invalidate additional entries in the TLBs
and paging-structure caches. The following are some examples:

• MOV to CR3 may invalidate TLB entries for global pages.

The reasoning was if an optimization breaks an important guest which
contains a bug that happens to not trigger on real HW due to positioning
of the stars, it is reasonable to disable that optimization.

> In other words, the only difference between global and non-global pages
> is visible via cr3 writes.