From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Alexey Galakhov <agalakhov@domain.hid>
Cc: adeos-main@gna.org
Subject: Re: [Adeos-main] Ipipe hangs on ARM MINI2440 after switching clocksource
Date: Sat, 30 Apr 2011 11:55:53 +0200 [thread overview]
Message-ID: <4DBBDCA9.1040609@domain.hid> (raw)
In-Reply-To: <4DBAA1DE.4000108@domain.hid>
Gilles Chanteperdrix wrote:
> Alexey Galakhov wrote:
>> On 04/29/2011 01:32 AM, Gilles Chanteperdrix wrote:
>>> Maybe you can try booting with MMC disabled, to see if the I-pipe is
>>> working? Not permanently, just to confirm that you are not chasing the
>>> wrong bug.
>> Thank you for the root image!
>>
>> Just did some simple checks.
>>
>> It works with the same kernel, just with MMC card removed (heartbeat
>> blinks, "Waiting for root").
>> It STOPS working (heartbeat stops blinking) immediately after inserting
>> either MMC or USB flash. So it is not exactly MMC related, any interrupt
>> source (both MMC and USB) results in lockup.
>>
>> The lockup is not immediate, it works for some short time (enough to
>> print kind of "new device found" to dmesg).
>>
>> It does not depend on drivers actually compiled in, it depends on
>> devices being initialized. It stops working as soon as some hardware
>> starts sending frequent interrupts.
>>
>> Now going to try your asm patch.
>
> Ok. Two things to check:
> - if the irqs are handled by handle_edge, try using handle_level instead;
> - if the irqs are demuxed gpios, check that ipipe_handle_chained_irq is
> used instead of generic_handle_irq.
>
> I will check on my side tonight.
Please try the following patch:
diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
index c48d99a..8a29d9d 100644
--- a/arch/arm/plat-s3c24xx/irq.c
+++ b/arch/arm/plat-s3c24xx/irq.c
@@ -627,7 +627,7 @@ void __init s3c24xx_init_irq(void)
default:
//irqdbf("registering irq %d (s3c irq)\n", irqno);
set_irq_chip(irqno, &s3c_irq_chip);
- set_irq_handler(irqno, handle_edge_irq);
+ set_irq_handler(irqno, handle_level_irq);
set_irq_flags(irqno, IRQF_VALID);
}
}
@@ -647,14 +647,14 @@ void __init s3c24xx_init_irq(void)
for (irqno = IRQ_EINT0; irqno <= IRQ_EINT3; irqno++) {
irqdbf("registering irq %d (ext int)\n", irqno);
set_irq_chip(irqno, &s3c_irq_eint0t4);
- set_irq_handler(irqno, handle_edge_irq);
+ set_irq_handler(irqno, handle_level_irq);
set_irq_flags(irqno, IRQF_VALID);
}
for (irqno = IRQ_EINT4; irqno <= IRQ_EINT23; irqno++) {
irqdbf("registering irq %d (extended s3c irq)\n", irqno);
set_irq_chip(irqno, &s3c_irqext_chip);
- set_irq_handler(irqno, handle_edge_irq);
+ set_irq_handler(irqno, handle_level_irq);
set_irq_flags(irqno, IRQF_VALID);
}
@@ -686,7 +686,7 @@ void __init s3c24xx_init_irq(void)
for (irqno = IRQ_TC; irqno <= IRQ_ADC; irqno++) {
irqdbf("registering irq %d (s3c adc irq)\n", irqno);
set_irq_chip(irqno, &s3c_irq_adc);
- set_irq_handler(irqno, handle_edge_irq);
+ set_irq_handler(irqno, handle_level_irq);
set_irq_flags(irqno, IRQF_VALID);
}
diff --git a/arch/arm/plat-samsung/irq-uart.c b/arch/arm/plat-samsung/irq-uart.c
index 4f8c102..1da5aff 100644
--- a/arch/arm/plat-samsung/irq-uart.c
+++ b/arch/arm/plat-samsung/irq-uart.c
@@ -88,13 +88,13 @@ static void s3c_irq_demux_uart(unsigned int irq, struct irq_desc *desc)
int base = uirq->base_irq;
if (pend & (1 << 0))
- generic_handle_irq(base);
+ ipipe_handle_chained_irq(base);
if (pend & (1 << 1))
- generic_handle_irq(base + 1);
+ ipipe_handle_chained_irq(base + 1);
if (pend & (1 << 2))
- generic_handle_irq(base + 2);
+ ipipe_handle_chained_irq(base + 2);
if (pend & (1 << 3))
- generic_handle_irq(base + 3);
+ ipipe_handle_chained_irq(base + 3);
}
static struct irq_chip s3c_irq_uart = {
--
Gilles.
next prev parent reply other threads:[~2011-04-30 9:55 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 13:05 [Adeos-main] Ipipe hangs on ARM MINI2440 after switching clocksource Alexey Galakhov
2011-04-27 15:56 ` Gilles Chanteperdrix
2011-04-27 17:49 ` Alexey Galakhov
2011-04-27 17:55 ` Gilles Chanteperdrix
2011-04-27 18:10 ` Gilles Chanteperdrix
2011-04-28 11:12 ` Alexey Galakhov
2011-04-28 11:16 ` Gilles Chanteperdrix
2011-04-28 11:24 ` Alexey Galakhov
2011-04-28 11:27 ` Gilles Chanteperdrix
2011-04-28 13:37 ` Alexey Galakhov
2011-04-28 13:47 ` Gilles Chanteperdrix
2011-04-28 16:12 ` Alexey Galakhov
2011-04-28 17:05 ` Gilles Chanteperdrix
2011-04-28 18:43 ` Alexey Galakhov
2011-04-28 19:01 ` Gilles Chanteperdrix
2011-04-28 19:28 ` Alexey Galakhov
2011-04-28 19:32 ` Gilles Chanteperdrix
2011-04-28 19:47 ` Alexey Galakhov
2011-04-29 6:44 ` Gilles Chanteperdrix
2011-04-29 6:49 ` Gilles Chanteperdrix
2011-04-29 11:08 ` Alexey Galakhov
2011-04-29 11:32 ` Gilles Chanteperdrix
2011-04-29 12:08 ` Alexey Galakhov
2011-04-29 12:14 ` Gilles Chanteperdrix
2011-04-29 13:09 ` Alexey Galakhov
2011-04-30 9:55 ` Gilles Chanteperdrix [this message]
2011-04-30 17:33 ` Alexey Galakhov
2011-04-30 17:39 ` Alexey Galakhov
2011-04-30 18:41 ` Alexey Galakhov
2011-04-30 20:14 ` Gilles Chanteperdrix
2011-04-30 20:28 ` Alexey Galakhov
2011-04-30 22:01 ` Gilles Chanteperdrix
2011-04-30 22:36 ` Gilles Chanteperdrix
2011-05-01 14:23 ` Alexey Galakhov
2011-05-01 14:34 ` Gilles Chanteperdrix
2011-04-28 18:46 ` Alexey Galakhov
2011-04-28 20:33 ` Gilles Chanteperdrix
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=4DBBDCA9.1040609@domain.hid \
--to=gilles.chanteperdrix@xenomai.org \
--cc=adeos-main@gna.org \
--cc=agalakhov@domain.hid \
/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.