public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* EDD failures since edd=off patch
@ 2005-02-10 14:11 Carl-Daniel Hailfinger
  2005-02-10 17:23 ` Matt Domsch
  0 siblings, 1 reply; 3+ messages in thread
From: Carl-Daniel Hailfinger @ 2005-02-10 14:11 UTC (permalink / raw)
  To: Matt Domsch; +Cc: Linux Kernel Mailing List

Hi Matt,

it seems the edd=off patch has caused some problems with
some machines I have access to. They simply don't boot
anymore unless I specify edd=foo. foo can be {off,skip,bar}
so it seems the hang on boot is related to the parser
not finding the parameter it is looking for.
I looked through the code some days ago and it seemed to
me that the register used to iterate through the command
line buffer only got its lower 16 bit reset before calling
into the BIOS. I don't have the code handy right now,
but I can look later if the hints I gave are insufficient.

Regards,
Carl-Daniel
-- 
http://www.hailfinger.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: EDD failures since edd=off patch
  2005-02-10 14:11 EDD failures since edd=off patch Carl-Daniel Hailfinger
@ 2005-02-10 17:23 ` Matt Domsch
  2005-02-11  2:59   ` Carl-Daniel Hailfinger
  0 siblings, 1 reply; 3+ messages in thread
From: Matt Domsch @ 2005-02-10 17:23 UTC (permalink / raw)
  To: Carl-Daniel Hailfinger; +Cc: Linux Kernel Mailing List

On Thu, Feb 10, 2005 at 03:11:52PM +0100, Carl-Daniel Hailfinger wrote:
> Hi Matt,
> 
> it seems the edd=off patch has caused some problems with
> some machines I have access to. They simply don't boot
> anymore unless I specify edd=foo. foo can be {off,skip,bar}
> so it seems the hang on boot is related to the parser
> not finding the parameter it is looking for.
> I looked through the code some days ago and it seemed to
> me that the register used to iterate through the command
> line buffer only got its lower 16 bit reset before calling
> into the BIOS. I don't have the code handy right now,
> but I can look later if the hints I gave are insufficient.

Yes, please.  I'm reading the code, and %ecx gets set to
(COMMAND_LINE_SIZE-7) which is 256-7=249.  So the upper 24 bits of
%ecx are going to always be zero, and if "edd=" isn't seen, then %ecx
will be zero when dropping into edd_mbr_sig_start.  The only other
register touched is %esi, but it's pushed at the beginning, and pop'd
on all exit cases, so that should be unchanged.

ZF is the only other bit I can picture.  On the "no edd= option" path,
ZF=0 on exit.  With "edd=of" or "edd=sk", ZF=1.  But with "edd=bar",
ZF=0, which you say works too.  So that's not it...

CF is taken care of around the int13 calls already, so that's not
it...

Thanks,
Matt

-- 
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: EDD failures since edd=off patch
  2005-02-10 17:23 ` Matt Domsch
@ 2005-02-11  2:59   ` Carl-Daniel Hailfinger
  0 siblings, 0 replies; 3+ messages in thread
From: Carl-Daniel Hailfinger @ 2005-02-11  2:59 UTC (permalink / raw)
  To: Matt Domsch; +Cc: Linux Kernel Mailing List

Matt Domsch schrieb:
> On Thu, Feb 10, 2005 at 03:11:52PM +0100, Carl-Daniel Hailfinger wrote:
> 
>>Hi Matt,
>>
>>it seems the edd=off patch has caused some problems with
>>some machines I have access to. They simply don't boot
>>anymore unless I specify edd=foo. foo can be {off,skip,bar}
>>so it seems the hang on boot is related to the parser
>>not finding the parameter it is looking for.
>>I looked through the code some days ago and it seemed to
>>me that the register used to iterate through the command
>>line buffer only got its lower 16 bit reset before calling
>>into the BIOS. I don't have the code handy right now,
>>but I can look later if the hints I gave are insufficient.
> 
> 
> Yes, please.  I'm reading the code, and %ecx gets set to
> (COMMAND_LINE_SIZE-7) which is 256-7=249.  So the upper 24 bits of
> %ecx are going to always be zero, and if "edd=" isn't seen, then %ecx
> will be zero when dropping into edd_mbr_sig_start.  The only other
> register touched is %esi, but it's pushed at the beginning, and pop'd
> on all exit cases, so that should be unchanged.
> 
> ZF is the only other bit I can picture.  On the "no edd= option" path,
> ZF=0 on exit.  With "edd=of" or "edd=sk", ZF=1.  But with "edd=bar",
> ZF=0, which you say works too.  So that's not it...
> 
> CF is taken care of around the int13 calls already, so that's not
> it...

It all boils down to the question: When do the flags set by INCL
differ from those set by CMPW? We have already ruled out CF and ZF,
so only OF, SF, AF, PF can be the culprit.

Looking again, I think it will hang with edd=zz, but I have to verify
that.


Regards,
Carl-Daniel
-- 
http://www.hailfinger.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-02-11  2:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-10 14:11 EDD failures since edd=off patch Carl-Daniel Hailfinger
2005-02-10 17:23 ` Matt Domsch
2005-02-11  2:59   ` Carl-Daniel Hailfinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox