Opened 15 years ago
Closed 15 years ago
#5861 closed bug (fixed)
r36542 Kernel Panics on Boot
Reported by: | mbrumbelow | Owned by: | bonefish |
---|---|---|---|
Priority: | critical | Milestone: | R1/alpha2 |
Component: | Drivers/ACPI | Version: | R1/Development |
Keywords: | Cc: | fredrik.holmqvist@… | |
Blocked By: | Blocking: | ||
Platform: | x86 |
Description (last modified by )
hrev36542 kernel panics on DELL Inspiron & HP laptops. Works fine on desktop system. Include screenshots of the two different systems.
Attachments (4)
Change History (22)
by , 15 years ago
Attachment: | IMG_0707.jpg added |
---|
comment:1 by , 15 years ago
Cc: | added |
---|---|
Description: | modified (diff) |
Looks like two different issues, the HP one is ACPI related.
comment:2 by , 15 years ago
Description: | modified (diff) |
---|
Oops, wrote in wrong area. Additional info:
The Dell one I'm not so sure, could you try disabling ACPI at boot. ( http://www.haiku-os.org/docs/userguide/en/bootloader.html )
comment:4 by , 15 years ago
Looks like it panics while initializing the embedded controller. It is waiting for a signal and there is nothing in run queue. Should it really panic? If you can you should be able to type "continue" in these kdls.
comment:6 by , 15 years ago
According to deadyak we should have an idle thread to switch to, but doesn't seem to be the case.
follow-up: 10 comment:9 by , 15 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
Ingo, from what I can tell it should use reschedule_no_op, not reschedule. And the idle_threads should already exist. Do you have any idea what might be goind on?
I think we could make acpi_embedded_controller use polling this early if needed, but I'd like to know what is going on. (See http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/kernel/bus_managers/acpi/acpi_embedded_controller.cpp#L674 )
follow-up: 11 comment:10 by , 15 years ago
Replying to tqh:
Ingo, from what I can tell it should use reschedule_no_op, not reschedule. And the idle_threads should already exist. Do you have any idea what might be goind on?
The early kernel initialization is basically single threaded and performed by what will later become "idle thread 1" (there's a very small amount of per-CPU initialization happening on off-boot CPUs, too). Interrupts are disabled, which imposes several restrictions on the code executed. E.g. locking primitives can be used as long as it is guaranteed that they do not wait. Mutexes, recursive_locks, and rw_locks are fine, since no other thread has been running at that point. Anything that causes the idle thread to wait (snooze(), not yet triggered condition variables) is a problem though. My guess is that the ACPI code is doing something like this.
I'll add a panic() in scheduler_reschedule_no_op(), triggered when the calling thread is not continuing to run. It will fail early and thus help to identify the perpetrator.
In the meantime the output of the KDL command "threads" would be helpful.
comment:11 by , 15 years ago
comment:12 by , 15 years ago
Added some code to let acpi_embedded_controller poll instead on bootup in hrev36565. I think it should help. It's only available in builds from trunk atm.
by , 15 years ago
Attachment: | IMG_0727.jpg added |
---|
Still panics on DELL with trunk build hrev36564, included "threads" command as requested.
follow-up: 14 comment:13 by , 15 years ago
Ah, I think that image will help a lot. Does it work on the other machine now?
I guess we are not allowed to snooze during boot. I think we can switch to use a spinlock while booting. Similar to what is done in hrev36565 for the embedded controller.
comment:14 by , 15 years ago
Replying to tqh:
Ah, I think that image will help a lot. Does it work on the other machine now?
I guess we are not allowed to snooze during boot. I think we can switch to use a spinlock while booting. Similar to what is done in hrev36565 for the embedded controller.
Yep, you can spin() instead of snooze().
by , 15 years ago
Attachment: | IMG_0734.jpg added |
---|
Still panics on HP with trunk build hrev36564, included "threads" command as requested.
comment:17 by , 15 years ago
Updated build to hrev36571 and it works on all machines. Syslog is clean, no error or warning conditions. Please close.
comment:18 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
I meant to say spin not spinlocks, sorry for the confusion, it is not synchronization primitive. mbrumbelow thanks for the fast response.
Screenshot of HP laptop