Re: [tip:x86/asm] x86: Introduce GDT_ENTRY_INIT()

H. Peter Anvin
2009-08-03T06:27:38Z

Ingo Molnar wrote:
> * tip-bot for Akinobu Mita <akinobu.mita@gmail.com> wrote:
>
>> Commit-ID: d520da1173abd1f918b7e690220e14ba0fc56cfc
>> Gitweb: http://git.kernel.org/tip/d520da1173abd1f918b7e690220e14ba0fc56cfc
>> Author: Akinobu Mita <akinobu.mita@gmail.com>
>> AuthorDate: Sun, 19 Jul 2009 00:12:20 +0900
>> Committer: Ingo Molnar <mingo@elte.hu>
>> CommitDate: Sun, 19 Jul 2009 18:27:53 +0200
>>
>> x86: Introduce GDT_ENTRY_INIT()
>>
>> GDT_ENTRY_INIT is static initializer of desc_struct.
>>
>> We already have similar macro GDT_ENTRY() but it's static
>> initializer for u64 and it cannot be used for desc_struct.
>>
>> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
>> LKML-Reference: <20090718151219.GD11294@localhost.localdomain>
>> Signed-off-by: Ingo Molnar <mingo@elte.hu>
>>

OK, I spotted the following error, which certainly would explain a crash
on an APM machine:

/* data */
- [GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } },
+ [GDT_ENTRY_APMBIOS_BASE+2] = GDT_ENTRY_INIT(0x409a, 0, 0xffff),

Also, we shouldn't be initializing the A bits to clear unless we
actually plan to check the A (and D) bits... that's just a waste of CPU
cycles.

-hpa

-hpa