All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] kernel BUG running cyclictest on powerpc 405
@ 2007-10-25 14:24 Steven A. Falco
  2007-10-25 14:41 ` Philippe Gerum
  0 siblings, 1 reply; 5+ messages in thread
From: Steven A. Falco @ 2007-10-25 14:24 UTC (permalink / raw)
  To: xenomai

[-- Attachment #1: Type: text/plain, Size: 2517 bytes --]

I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai 2.4-rc3.  
Architecture is powerpc, processor is a 405GP.

I had to make some additions to arch/powerpc/kernel/head_40x.S, and I 
can submit a patch if someone tells me where to post it.

However, while the kernel boots and runs, the xenomai user apps do not 
work correctly.  Specifically, when running cyclictest, I get the following:

    # ./cyclictest
    0.00 0.00 0.00 1/18 668

    T: 0 (  668) P:99 I:   ------------[ cut here ]------------     0
    Avg:       0 Max:-1000000
     1000 C:       5kernel BUG at
    /n/maytag/home/sfalco/linux/embedded/ppc3/linux/linux-2.6-denx/kernel/ipipe/core.c:314!
     Min:      24 AcOops: Exception in kernel mode, sig: 5 [#1]
    Netdec
    Modules linked in:
    NIP: c0045dd0 LR: c0015750 CTR: c00121fc
    REGS: c0dbde00 TRAP: 0700   Not tainted  (2.6.23-rc7)
    MSR: 00021030 <ME,IR,DR>  CR: 22000422  XER: 20000000
    TASK = c0fe7420[668] 'cyclictest' THREAD: c0dbc000
    GPR00: 00004900 c0dbdeb0 c0fe7420 00000000 003f0000 c00115dc
    00000000 00000000
    GPR08: 00000000 000048ff c0296090 00000001 00010000 1001c23c
    00ff9900 00000001
    GPR16: 7fbabcb0 10015090 10015068 00000000 0ff81940 00000000
    0000029a 0ff815d0
    GPR24: c02a2fcc 00000280 00000000 c030c200 0000001f 003f0000
    00000010 c028e3bc
    NIP [c0045dd0] __ipipe_restore_root+0x1c/0x50
    LR [c0015750] uic_mask_irq+0x84/0x98
    Call Trace:
    [c0dbdeb0] [c0054cdc] hisyscall_event+0x1fc/0x310 (unreliable)
    [c0dbded0] [c00439fc] __ipipe_ack_level_irq+0x50/0x78
    [c0dbdee0] [c0007b2c] __ipipe_ack_irq+0x28/0x3c
    [c0dbdef0] [c0007e68] __ipipe_handle_irq+0x12c/0x148
    [c0dbdf20] [c00080f8] __ipipe_grab_irq+0x3c/0xc0
    [c0dbdf40] [c000e338] __ipipe_ret_from_except+0x0/0xc
    Instruction dump:
    0.00 0.00 0.00 2/18 66Xenomai: POSIX: destroyed thread c0f803203d20c02c
    8          004a78 3120ffff 7d690110 <0f0b0000> 2f830000 3d60c029
    392b6050
    t:      39 Avg:      29 Max:      39
    T: 0 (  668) P:99 I:    1000 C:       8 Min:      24 Act:      24
    Avg:      29 Max:      39
    Trace/breakpoint trap

The bug is coming from ipipe/core.c:314, which is the BUG_ON here:

    void __ipipe_restore_root(unsigned long x)
    {
        BUG_ON(!ipipe_root_domain_p);

        if (x)
            __ipipe_stall_root();
        else
            __ipipe_unstall_root();
    }

How do I debug this?  I have done a little kernel hacking, but I am a 
noob when it comes to Xenomai...

    Steve


[-- Attachment #2: Type: text/html, Size: 3309 bytes --]

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

* Re: [Xenomai-core] kernel BUG running cyclictest on powerpc 405
  2007-10-25 14:24 [Xenomai-core] kernel BUG running cyclictest on powerpc 405 Steven A. Falco
@ 2007-10-25 14:41 ` Philippe Gerum
  2007-10-25 14:45   ` Steven A. Falco
  0 siblings, 1 reply; 5+ messages in thread
From: Philippe Gerum @ 2007-10-25 14:41 UTC (permalink / raw)
  To: Steven A. Falco; +Cc: xenomai

Steven A. Falco wrote:
> I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai 2.4-rc3. 
> Architecture is powerpc, processor is a 405GP.
> 
> I had to make some additions to arch/powerpc/kernel/head_40x.S, and I
> can submit a patch if someone tells me where to post it.
> 

Here would be nice, or to the Adeos list, indifferently - I would pick
it from both anyway.

> However, while the kernel boots and runs, the xenomai user apps do not
> work correctly.  Specifically, when running cyclictest, I get the following:
>

This patch should fix this issue.

diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index eeb38e2..5a38086 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -48,7 +48,7 @@ struct uic {
 	int index;
 	int dcrbase;

-	spinlock_t lock;
+	ipipe_spinlock_t lock;

 	/* The remapper for this UIC */
 	struct irq_host	*irqhost;
> 
> How do I debug this?  I have done a little kernel hacking, but I am a
> noob when it comes to Xenomai...
> 

Well, actually, it's shame on me. I did not notice that the universal
interrupt controller code was missing some bits in post-2.6.21 I-pipe
patches.

-- 
Philippe.


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

* Re: [Xenomai-core] kernel BUG running cyclictest on powerpc 405
  2007-10-25 14:41 ` Philippe Gerum
@ 2007-10-25 14:45   ` Steven A. Falco
  2007-10-25 15:02     ` Philippe Gerum
  0 siblings, 1 reply; 5+ messages in thread
From: Steven A. Falco @ 2007-10-25 14:45 UTC (permalink / raw)
  To: rpm; +Cc: xenomai


[-- Attachment #1.1: Type: text/plain, Size: 1388 bytes --]

Thanks!  I'll try your patch and report if I still have trouble.

I've attached my patch for PPC405.

    Steve

Philippe Gerum wrote:
> Steven A. Falco wrote:
>   
>> I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai 2.4-rc3. 
>> Architecture is powerpc, processor is a 405GP.
>>
>> I had to make some additions to arch/powerpc/kernel/head_40x.S, and I
>> can submit a patch if someone tells me where to post it.
>>
>>     
>
> Here would be nice, or to the Adeos list, indifferently - I would pick
> it from both anyway.
>
>   
>> However, while the kernel boots and runs, the xenomai user apps do not
>> work correctly.  Specifically, when running cyclictest, I get the following:
>>
>>     
>
> This patch should fix this issue.
>
> diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
> index eeb38e2..5a38086 100644
> --- a/arch/powerpc/sysdev/uic.c
> +++ b/arch/powerpc/sysdev/uic.c
> @@ -48,7 +48,7 @@ struct uic {
>  	int index;
>  	int dcrbase;
>
> -	spinlock_t lock;
> +	ipipe_spinlock_t lock;
>
>  	/* The remapper for this UIC */
>  	struct irq_host	*irqhost;
>   
>> How do I debug this?  I have done a little kernel hacking, but I am a
>> noob when it comes to Xenomai...
>>
>>     
>
> Well, actually, it's shame on me. I did not notice that the universal
> interrupt controller code was missing some bits in post-2.6.21 I-pipe
> patches.
>
>   

[-- Attachment #1.2: Type: text/html, Size: 1942 bytes --]

[-- Attachment #2: ipipe.patch --]
[-- Type: text/x-patch, Size: 1334 bytes --]

--- linux-2.6-denx.xenomai/arch/powerpc/kernel/head_40x.S	2007-09-28 13:40:46.000000000 -0400
+++ linux-2.6-denx/arch/powerpc/kernel/head_40x.S	2007-10-24 14:02:23.000000000 -0400
@@ -227,6 +227,12 @@
 	EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, NOCOPY, transfer_to_handler_full, \
 			  ret_from_except_full)
 
+#ifdef CONFIG_IPIPE
+#define EXC_XFER_IPIPE(n, hdlr)		\
+	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
+			  __ipipe_ret_from_except)
+#endif /* CONFIG_IPIPE */
+
 #define EXC_XFER_LITE(n, hdlr)		\
 	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
 			  ret_from_except)
@@ -395,7 +401,11 @@
 	EXC_XFER_EE_LITE(0x400, handle_page_fault)
 
 /* 0x0500 - External Interrupt Exception */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x0500, HardwareInterrupt, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x0500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 /* 0x0600 - Alignment Exception */
 	START_EXCEPTION(0x0600, Alignment)
@@ -433,7 +443,11 @@
 	lis	r0,TSR_PIS@h
 	mtspr	SPRN_TSR,r0		/* Clear the PIT exception */
 	addi	r3,r1,STACK_FRAME_OVERHEAD
+#ifdef CONFIG_IPIPE
+	EXC_XFER_IPIPE(0x1000, __ipipe_grab_timer)
+#else /* !CONFIG_IPIPE */
 	EXC_XFER_LITE(0x1000, timer_interrupt)
+#endif /* CONFIG_IPIPE */
 
 #if 0
 /* NOTE:

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

* Re: [Xenomai-core] kernel BUG running cyclictest on powerpc 405
  2007-10-25 14:45   ` Steven A. Falco
@ 2007-10-25 15:02     ` Philippe Gerum
  2007-10-25 17:16       ` Steven A. Falco
  0 siblings, 1 reply; 5+ messages in thread
From: Philippe Gerum @ 2007-10-25 15:02 UTC (permalink / raw)
  To: Steven A. Falco; +Cc: xenomai

Steven A. Falco wrote:
> Thanks!  I'll try your patch and report if I still have trouble.
> 
> I've attached my patch for PPC405.
> 

Thanks. You may also want to upgrade to this I-pipe patch; it should
apply properly against -rc7:

http://download.gna.org/adeos/patches/v2.6/powerpc/adeos-ipipe-2.6.23-powerpc-DENX-2.0-02.patch

You would still need the quick fix for the UIC on top of that one, though.

>     Steve
> 
> Philippe Gerum wrote:
>> Steven A. Falco wrote:
>>   
>>> I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai 2.4-rc3. 
>>> Architecture is powerpc, processor is a 405GP.
>>>
>>> I had to make some additions to arch/powerpc/kernel/head_40x.S, and I
>>> can submit a patch if someone tells me where to post it.
>>>
>>>     
>>
>> Here would be nice, or to the Adeos list, indifferently - I would pick
>> it from both anyway.
>>
>>   
>>> However, while the kernel boots and runs, the xenomai user apps do not
>>> work correctly.  Specifically, when running cyclictest, I get the following:
>>>
>>>     
>>
>> This patch should fix this issue.
>>
>> diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
>> index eeb38e2..5a38086 100644
>> --- a/arch/powerpc/sysdev/uic.c
>> +++ b/arch/powerpc/sysdev/uic.c
>> @@ -48,7 +48,7 @@ struct uic {
>>  	int index;
>>  	int dcrbase;
>>
>> -	spinlock_t lock;
>> +	ipipe_spinlock_t lock;
>>
>>  	/* The remapper for this UIC */
>>  	struct irq_host	*irqhost;
>>   
>>> How do I debug this?  I have done a little kernel hacking, but I am a
>>> noob when it comes to Xenomai...
>>>
>>>     
>>
>> Well, actually, it's shame on me. I did not notice that the universal
>> interrupt controller code was missing some bits in post-2.6.21 I-pipe
>> patches.
>>
>>   


-- 
Philippe.


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

* Re: [Xenomai-core] kernel BUG running cyclictest on powerpc 405
  2007-10-25 15:02     ` Philippe Gerum
@ 2007-10-25 17:16       ` Steven A. Falco
  0 siblings, 0 replies; 5+ messages in thread
From: Steven A. Falco @ 2007-10-25 17:16 UTC (permalink / raw)
  To: rpm; +Cc: xenomai


[-- Attachment #1.1: Type: text/plain, Size: 2833 bytes --]

I upgraded to the new ipipe patch and your uic fix.  Attached is a new 
patch I needed - without it, I get the error message:

.../include/linux/ipipe.h:298: warning: 'struct mm_struct' declared 
inside parameter list
.../include/linux/ipipe.h:298: warning: its scope is only this 
definition or declaration, which is probably not what you want

Also, there is a problem with the uic fix.  It now gives this 
compile-time error:

  CC      arch/powerpc/sysdev/uic.o
.../arch/powerpc/sysdev/uic.c: In function 'uic_init_one':
.../arch/powerpc/sysdev/uic.c:234: error: incompatible types in assignment

I believe this is caused by the definition in spinlock.h:

# define spin_lock_init(lock)                    \
    do { *(lock) = SPIN_LOCK_UNLOCKED; } while (0)

The SPIN_LOCK_UNLOCKED should perhaps be IPIPE_SPIN_LOCK_UNLOCKED, but I 
don't know if this is the right way to fix it.

    Steve

Philippe Gerum wrote:
> Steven A. Falco wrote:
>   
>> Thanks!  I'll try your patch and report if I still have trouble.
>>
>> I've attached my patch for PPC405.
>>
>>     
>
> Thanks. You may also want to upgrade to this I-pipe patch; it should
> apply properly against -rc7:
>
> http://download.gna.org/adeos/patches/v2.6/powerpc/adeos-ipipe-2.6.23-powerpc-DENX-2.0-02.patch
>
> You would still need the quick fix for the UIC on top of that one, though.
>
>   
>>     Steve
>>
>> Philippe Gerum wrote:
>>     
>>> Steven A. Falco wrote:
>>>   
>>>       
>>>> I have built a 2.6.23-rc7 kernel (from Denx git) with Xenomai 2.4-rc3. 
>>>> Architecture is powerpc, processor is a 405GP.
>>>>
>>>> I had to make some additions to arch/powerpc/kernel/head_40x.S, and I
>>>> can submit a patch if someone tells me where to post it.
>>>>
>>>>     
>>>>         
>>> Here would be nice, or to the Adeos list, indifferently - I would pick
>>> it from both anyway.
>>>
>>>   
>>>       
>>>> However, while the kernel boots and runs, the xenomai user apps do not
>>>> work correctly.  Specifically, when running cyclictest, I get the following:
>>>>
>>>>     
>>>>         
>>> This patch should fix this issue.
>>>
>>> diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
>>> index eeb38e2..5a38086 100644
>>> --- a/arch/powerpc/sysdev/uic.c
>>> +++ b/arch/powerpc/sysdev/uic.c
>>> @@ -48,7 +48,7 @@ struct uic {
>>>  	int index;
>>>  	int dcrbase;
>>>
>>> -	spinlock_t lock;
>>> +	ipipe_spinlock_t lock;
>>>
>>>  	/* The remapper for this UIC */
>>>  	struct irq_host	*irqhost;
>>>   
>>>       
>>>> How do I debug this?  I have done a little kernel hacking, but I am a
>>>> noob when it comes to Xenomai...
>>>>
>>>>     
>>>>         
>>> Well, actually, it's shame on me. I did not notice that the universal
>>> interrupt controller code was missing some bits in post-2.6.21 I-pipe
>>> patches.
>>>
>>>   
>>>       
>
>
>   

[-- Attachment #1.2: Type: text/html, Size: 3723 bytes --]

[-- Attachment #2: fix.mm_struct --]
[-- Type: text/plain, Size: 292 bytes --]

--- /home/sfalco/ipipe.h	2007-10-25 12:59:12.000000000 -0400
+++ include/linux/ipipe.h	2007-10-25 12:59:23.000000000 -0400
@@ -31,6 +31,8 @@
 #include <linux/ipipe_compat.h>
 #include <asm/ipipe.h>
 
+struct mm_struct;
+
 #ifdef CONFIG_IPIPE
 
 #define IPIPE_VERSION_STRING	IPIPE_ARCH_STRING

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

end of thread, other threads:[~2007-10-25 17:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-25 14:24 [Xenomai-core] kernel BUG running cyclictest on powerpc 405 Steven A. Falco
2007-10-25 14:41 ` Philippe Gerum
2007-10-25 14:45   ` Steven A. Falco
2007-10-25 15:02     ` Philippe Gerum
2007-10-25 17:16       ` Steven A. Falco

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.