| Summary: | [beagleboard C4] No login prompt in serial port console with 1.2 M4 20120328 build | ||
|---|---|---|---|
| Product: | [Build System, Metadata & Runtime] BSPs | Reporter: | Yi Zhao <yi.zhao> |
| Component: | bsps-configuration | Assignee: | Yang Shi <yang.shi> |
| Status: | VERIFIED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | Medium | CC: | bruce.ashfield, dvhart, jessica.zhang, jiajun.xu, liang.li2, liming.wang, yp.bsp.watcher, yp.watcher |
| Version: | unspecified | ||
| Target Milestone: | 1.2 M4 | ||
| Hardware: | x86 | ||
| OS: | Multiple | ||
| Whiteboard: | (1.2) | ||
| OS type for building Yocto: | --- | Type of Regression: | --- |
| Verified: | Documentation change: | --- | |
|
Description
Yi Zhao
2012-03-29 09:52:48 UTC
I'm putting Yang's name beside this, since it is likely related to our other beagleboard bugs. The following commit has changed the irq handling logic, which will lead the serial driver of beagleboard not work fine. It's imported in v3.0.23~14 $ git name-rev b7f0787da3657100fe8fc8b3f0565b0bee341510 b7f0787da3657100fe8fc8b3f0565b0bee341510 tags/v3.0.23~14 $ git log b7f0787da3657100fe8fc8b3f0565b0bee341510 commit b7f0787da3657100fe8fc8b3f0565b0bee341510 Author: Thomas Gleixner <tglx@linutronix.de> Date: Tue Feb 7 17:58:03 2012 +0100 genirq: Unmask oneshot irqs when thread was not woken commit ac5637611150281f398bb7a47e3fcb69a09e7803 upstream. When the primary handler of an interrupt which is marked IRQ_ONESHOT returns IRQ_HANDLED or IRQ_NONE, then the interrupt thread is not woken and the unmask logic of the interrupt line is never invoked. This keeps the interrupt masked forever. This was not noticed as most IRQ_ONESHOT users wake the thread unconditionally (usually because they cannot access the underlying device from hard interrupt context). Though this behaviour was nowhere documented and not necessarily intentional. Some drivers can avoid the thread wakeup in certain cases and run into the situation where the interrupt line s kept masked. Handle it gracefully. Reported-and-tested-by: Lothar Wassmann <lw@karo-electronics.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> But in following commit, this bug has been fixed. It's imported in v3.0.24~49. $ git name-rev c847ac8e8e7447730aef70b94915f1c0880e6578 c847ac8e8e7447730aef70b94915f1c0880e6578 tags/v3.0.24~49 $ git log c847ac8e8e7447730aef70b94915f1c0880e6578 commit c847ac8e8e7447730aef70b94915f1c0880e6578 Author: Thomas Gleixner <tglx@linutronix.de> Date: Tue Mar 6 23:18:54 2012 +0100 genirq: Clear action->thread_mask if IRQ_ONESHOT is not set commit 52abb700e16a9aa4cbc03f3d7f80206cbbc80680 upstream. Xommit ac5637611(genirq: Unmask oneshot irqs when thread was not woken) fails to unmask when a !IRQ_ONESHOT threaded handler is handled by handle_level_irq. This happens because thread_mask is or'ed unconditionally in irq_wake_thread(), but for !IRQ_ONESHOT interrupts never cleared. So the check for !desc->thread_active fails and keeps the interrupt disabled. Keep the thread_mask zero for !IRQ_ONESHOT interrupts. Document the thread_mask magic while at it. Reported-and-tested-by: Sven Joachim <svenjoac@gmx.de> Reported-and-tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> So this bug does exist in tags/v3.0.23, but has been fixed in latest tree(tags/v3.0.24), we can just reject this bug now. This is available in linux-yocto-3.0 as: commit c847ac8e8e7447730aef70b94915f1c0880e6578 Author: Thomas Gleixner <tglx@linutronix.de> Date: Tue Mar 6 23:18:54 2012 +0100 genirq: Clear action->thread_mask if IRQ_ONESHOT is not set commit 52abb700e16a9aa4cbc03f3d7f80206cbbc80680 upstream. Marking this as resolved. Verified with 1.2 rc3. Tree/branch: poky/1.2_M4 Commit: fae1c7a5fdcea199338b5f91efaafd7c72aec5dd |