lkml.org 
[lkml]   [2015]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] x86: Use entire page for the per-cpu GDT only if paravirt-enabled
From
Date
On 09/29/2015 06:20 PM, Eric W. Biederman wrote:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
>> On Tue, Sep 29, 2015 at 1:35 PM, Andy Lutomirski <luto@amacapital.net> wrote:
>>>
>>> Does anyone know what happens if you stick a non-accessed segment in
>>> the GDT, map the GDT RO, and access it?
>>
>> You should get a #PF, as you guess, but go ahead and test it if you
>> want to make sure.
>
> I tested this by accident once when workinng on what has become known
> as coreboot. Early in boot with your GDT in a EEPROM switching from
> real mode to 32bit protected mode causes a write and locks up the
> machine when the hardware declines the write to the GDT to set the
> accessed bit. As I recall the write kept being retried and retried and
> retried...
>
> Setting the access bit in the GDT cleared up the problem and I did not
> look back.
>
> Way up in 64bit mode something might be different, but I don't know why
> cpu designeres would waste the silicon.
>

This is totally different from a TLB violation. In your case, the write
goes through as far as the CPU is concerned, but when the data is
fetched back, it hasn't changed. A write to a TLB-protected location
will #PF.

-hpa




\
 
 \ /
  Last update: 2015-09-30 03:41    [W:0.059 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site