From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Sean Young <sean@mess.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
Rusty Russell <rusty@rustcorp.com.au>,
linux-kernel@vger.kernel.org
Subject: Re: Regression: boot failure on AMD Elan TS-5500
Date: Tue, 01 Jul 2008 13:22:54 -0700 [thread overview]
Message-ID: <486A921E.2070306@goop.org> (raw)
In-Reply-To: <20080701195942.GA76608@atlantis.8hz.com>
Sean Young wrote:
> On Mon, Jun 30, 2008 at 03:42:47PM -0700, H. Peter Anvin wrote:
>
>> Jeremy Fitzhardinge wrote:
>>
>>> Maybe it really does require the far jump immediately after setting PE
>>> in cr0...
>>>
>>> Hm, I don't remember this paragraph being in vol 3a, section 8.9.1
>>> before. Is it a recent addition?
>>>
>>> Random failures can occur if other instructions exist between steps
>>> 3 and 4 above. Failures will be readily seen in some situations,
>>> such as when instructions that reference memory are inserted between
>>> steps 3 and 4 while in system management mode.
>>>
>>>
>> I don't remember that, either.
>>
>
> Which document are we talking about?
>
*The* document ;)
http://www.intel.com/products/processor/manuals/ specifically, Volume
3a: System Programming Guide, Part 1.
Section 8.9.1 describes the steps needed to turn on protected mode
correctly. It says that you need to do a far jump or call immediately
after turning on protected mode. Linux has not done it immediately, and
there has been a school of thought that this advice is a workaround for
some obsolete CPU, and is not something we have to worry about now.
However, the paragraph I quoted was added since the previous release of
the manual, and so presumably documents a current concern.
Specifically, the mention of SMM is interesting, because I gather that
embedded-class processors like the Elan are very SMM-dependent.
>> Sean: could you try the following patch?
>>
>> -hpa
>>
>
>
>> diff --git a/arch/x86/boot/pmjump.S b/arch/x86/boot/pmjump.S
>> index ab049d4..141b6e2 100644
>> --- a/arch/x86/boot/pmjump.S
>> +++ b/arch/x86/boot/pmjump.S
>> @@ -33,6 +33,8 @@ protected_mode_jump:
>> movw %cs, %bx
>> shll $4, %ebx
>> addl %ebx, 2f
>> + jmp 1f # Short jump to serialize on 386/486
>> +1:
>>
>> movw $__BOOT_DS, %cx
>> movw $__BOOT_TSS, %di
>> @@ -40,8 +42,6 @@ protected_mode_jump:
>> movl %cr0, %edx
>> orb $X86_CR0_PE, %dl # Protected mode
>> movl %edx, %cr0
>> - jmp 1f # Short jump to serialize on 386/486
>> -1:
>>
>> # Transition to 32-bit mode
>> .byte 0x66, 0xea # ljmpl opcode
>>
>
> I'm afraid it doesn't work. Maybe I can find something in the AMD Elan
> documentation. Would a fence make sense?
>
Not really, but if it fixes the bug it won't hurt anyone else (unless
older processors treat it as an illegal instruction).
J
next prev parent reply other threads:[~2008-07-01 20:23 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-16 12:11 Regression: boot failure on AMD Elan TS-5500 Sean Young
2008-06-16 13:27 ` Rusty Russell
2008-06-16 13:37 ` Jeremy Fitzhardinge
2008-06-16 16:19 ` Sean Young
2008-06-16 17:06 ` H. Peter Anvin
2008-06-16 17:58 ` Sean Young
2008-06-16 18:16 ` H. Peter Anvin
2008-06-16 17:06 ` H. Peter Anvin
2008-06-16 17:07 ` Jeremy Fitzhardinge
2008-06-30 21:43 ` Sean Young
2008-06-30 21:52 ` Jeremy Fitzhardinge
2008-06-30 22:04 ` H. Peter Anvin
2008-06-30 22:14 ` H. Peter Anvin
2008-06-30 22:36 ` Jeremy Fitzhardinge
2008-06-30 22:45 ` H. Peter Anvin
2008-06-30 22:31 ` Sean Young
2008-06-30 22:34 ` Jeremy Fitzhardinge
2008-06-30 22:42 ` H. Peter Anvin
2008-07-01 19:59 ` Sean Young
2008-07-01 20:20 ` Sean Young
2008-07-01 20:24 ` Jeremy Fitzhardinge
2008-07-01 20:25 ` H. Peter Anvin
2008-07-15 22:23 ` Sean Young
2008-07-15 22:30 ` H. Peter Anvin
2008-07-01 20:22 ` Jeremy Fitzhardinge [this message]
2008-07-01 20:23 ` H. Peter Anvin
2008-07-01 20:29 ` Jeremy Fitzhardinge
2008-07-01 20:39 ` H. Peter Anvin
2008-07-06 13:21 ` Pavel Machek
2008-06-30 22:09 ` Sean Young
2008-07-06 2:41 ` Eric W. Biederman
2008-07-06 3:07 ` H. Peter Anvin
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=486A921E.2070306@goop.org \
--to=jeremy@goop.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=sean@mess.org \
/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.