bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More on oskit-mach booting troubles


From: Igor Khavkine
Subject: Re: More on oskit-mach booting troubles
Date: Sun, 22 Jul 2001 00:06:20 -0400
User-agent: Mutt/1.3.18i

On Sat, Jul 21, 2001 at 09:57:44PM -0400, Roland McGrath wrote:
> Ah, well you know the test machine I had when I was writing oskit-mach
> didn't have a CDROM, so that code may never have been exercised.  Certainly
> just avoid the CDROM driver if you want to just debug one thing at a time.

When I recompiled oskit without CDROM support, the kernel still didn't
boot. This time it hund when it started reading the partition table.
I think it's either the same or a similar problem as with the CDROM.
It must be somewhere in the code communicating with the IDE controller.

> The code you cited is doing some form of "sleep until interrupt", waiting
> for an interrupt from the IDE controller.  It should be going through
> various levels of Linux driver and oskit glue and eventually getting into
> the oskit-mach/oskit/osenv_sleep.c code.  That part probably works, but
> I bet you are seeing a problem with the interrupts getting through properly.

When I was tracing through the code at that place, i wound up in
[oskit]/linux/include/asm-i386/semaphore.S::down(), and it looks
like this after expanding several #ifdefs:

extern inline void down (struct semaphore *sem)
{
        asm volatile ("
                decl (%0)
                js 2f
        1:      .section .text.lock,"ax"
        2:      call __down_failed
                jmp 1b
                .previous"
        : "c" (sem) : "memory");
}

I'm not 100% familiar with gas and it's i386 instruction set. So, as is,
will this function ever terminate, or is it inherently an infinite
loop?

Igor



reply via email to

[Prev in Thread] Current Thread [Next in Thread]