All of lore.kernel.org
 help / color / mirror / Atom feed
* [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ?
@ 2010-04-15 22:00 Gilles DOFFE
  2010-04-15 22:18 ` Jan Kiszka
  2010-04-16  7:27 ` Philippe Gerum
  0 siblings, 2 replies; 5+ messages in thread
From: Gilles DOFFE @ 2010-04-15 22:00 UTC (permalink / raw)
  To: adeos-main

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

Hello,

I try to install a real-time Linux kernel on a Roboard based on a Vortex86DX
(a x486 with TSC).

All works fine with :
Linux Kernel 2.6.30.10
Xenomai 2.5.1
Adeos patch adeos-ipipe-2.6.30.8-x86-2.4-09.patch

But, for all kernels upper or equal to 2.6.31, I always get a double fault
when testing WP bit. I have this double fault just after that :

*Checking if this processor honours the WP bit even in supervisor mode...*

I traced with some simple printk that the problem occurs in this function,
at the end or after the call of fix_to_virt  :

*static noinline int do_test_wp_bit(void)
{
        char tmp_reg;
        int flag;

        __asm__ __volatile__(
                "       movb %0, %1     \n"
                "1:     movb %1, %0     \n"
                "       xorl %2, %2     \n"
                "2:                     \n"
                _ASM_EXTABLE(1b,2b)
                :"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
                 "=q" (tmp_reg),
                 "=r" (flag)
                :"2" (1)
                :"memory");

        return flag;
}*

I'm (quasi) sure that the problem is not that function, due to it works when
the kernel is not patched.
But where should I search ?

Can you give me some indications ?

Thanks,
Gilles

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

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

* Re: [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ?
  2010-04-15 22:00 [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ? Gilles DOFFE
@ 2010-04-15 22:18 ` Jan Kiszka
  2010-04-15 22:24   ` Jan Kiszka
  2010-04-16  7:27 ` Philippe Gerum
  1 sibling, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2010-04-15 22:18 UTC (permalink / raw)
  To: Gilles DOFFE; +Cc: adeos-main

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

Gilles DOFFE wrote:
> Hello,
> 
> I try to install a real-time Linux kernel on a Roboard based on a Vortex86DX
> (a x486 with TSC).
> 
> All works fine with :
> Linux Kernel 2.6.30.10
> Xenomai 2.5.1
> Adeos patch adeos-ipipe-2.6.30.8-x86-2.4-09.patch
> 
> But, for all kernels upper or equal to 2.6.31, I always get a double fault
> when testing WP bit. I have this double fault just after that :
> 
> *Checking if this processor honours the WP bit even in supervisor mode...*
> 
> I traced with some simple printk that the problem occurs in this function,
> at the end or after the call of fix_to_virt  :
> 
> *static noinline int do_test_wp_bit(void)
> {
>         char tmp_reg;
>         int flag;
> 
>         __asm__ __volatile__(
>                 "       movb %0, %1     \n"
>                 "1:     movb %1, %0     \n"
>                 "       xorl %2, %2     \n"
>                 "2:                     \n"
>                 _ASM_EXTABLE(1b,2b)
>                 :"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
>                  "=q" (tmp_reg),
>                  "=r" (flag)
>                 :"2" (1)
>                 :"memory");
> 
>         return flag;
> }*
> 
> I'm (quasi) sure that the problem is not that function, due to it works when
> the kernel is not patched.
> But where should I search ?
> 
> Can you give me some indications ?

Does applying this patch [1] happen to change the picture?

If not, please provide your .config.

Jan

[1] http://thread.gmane.org/gmane.linux.kernel.adeos.general/1570


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

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

* Re: [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ?
  2010-04-15 22:18 ` Jan Kiszka
@ 2010-04-15 22:24   ` Jan Kiszka
  0 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2010-04-15 22:24 UTC (permalink / raw)
  To: Gilles DOFFE; +Cc: adeos-main

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

Jan Kiszka wrote:
> Gilles DOFFE wrote:
>> Hello,
>>
>> I try to install a real-time Linux kernel on a Roboard based on a Vortex86DX
>> (a x486 with TSC).
>>
>> All works fine with :
>> Linux Kernel 2.6.30.10
>> Xenomai 2.5.1
>> Adeos patch adeos-ipipe-2.6.30.8-x86-2.4-09.patch
>>
>> But, for all kernels upper or equal to 2.6.31, I always get a double fault
>> when testing WP bit. I have this double fault just after that :
>>
>> *Checking if this processor honours the WP bit even in supervisor mode...*
>>
>> I traced with some simple printk that the problem occurs in this function,
>> at the end or after the call of fix_to_virt  :
>>
>> *static noinline int do_test_wp_bit(void)
>> {
>>         char tmp_reg;
>>         int flag;
>>
>>         __asm__ __volatile__(
>>                 "       movb %0, %1     \n"
>>                 "1:     movb %1, %0     \n"
>>                 "       xorl %2, %2     \n"
>>                 "2:                     \n"
>>                 _ASM_EXTABLE(1b,2b)
>>                 :"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
>>                  "=q" (tmp_reg),
>>                  "=r" (flag)
>>                 :"2" (1)
>>                 :"memory");
>>
>>         return flag;
>> }*
>>
>> I'm (quasi) sure that the problem is not that function, due to it works when
>> the kernel is not patched.
>> But where should I search ?
>>
>> Can you give me some indications ?
> 
> Does applying this patch [1] happen to change the picture?

To answer myself: As the Vortex is 32-bit, this patch cannot make a
difference.

> 
> If not, please provide your .config.

So this is now important. Probably reproducible in a VM, thus also
easily debuggable.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

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

* Re: [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ?
  2010-04-15 22:00 [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ? Gilles DOFFE
  2010-04-15 22:18 ` Jan Kiszka
@ 2010-04-16  7:27 ` Philippe Gerum
  2010-04-16 13:23   ` Gilles DOFFE
  1 sibling, 1 reply; 5+ messages in thread
From: Philippe Gerum @ 2010-04-16  7:27 UTC (permalink / raw)
  To: Gilles DOFFE; +Cc: adeos-main

On Fri, 2010-04-16 at 00:00 +0200, Gilles DOFFE wrote:
> Hello,
> 
> I try to install a real-time Linux kernel on a Roboard based on a
> Vortex86DX (a x486 with TSC).
> 
> All works fine with :
> Linux Kernel 2.6.30.10
> Xenomai 2.5.1
> Adeos patch adeos-ipipe-2.6.30.8-x86-2.4-09.patch
> 
> But, for all kernels upper or equal to 2.6.31, I always get a double
> fault when testing WP bit. I have this double fault just after that :
> 
> Checking if this processor honours the WP bit even in supervisor
> mode...
> 
> I traced with some simple printk that the problem occurs in this
> function, at the end or after the call of fix_to_virt  :
> 
> static noinline int do_test_wp_bit(void)
> {
>         char tmp_reg;
>         int flag;
> 
>         __asm__ __volatile__(
>                 "       movb %0, %1     \n"
>                 "1:     movb %1, %0     \n"
>                 "       xorl %2, %2     \n"
>                 "2:                     \n"
>                 _ASM_EXTABLE(1b,2b)
>                 :"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
>                  "=q" (tmp_reg),
>                  "=r" (flag)
>                 :"2" (1)
>                 :"memory");
> 
>         return flag;
> }
> 
> I'm (quasi) sure that the problem is not that function, due to it
> works when the kernel is not patched.
> But where should I search ?

Try backporting these two 2.6.32 patches to your kernel; this should be
straightforward:
http://git.denx.de/?p=ipipe-2.6.git;a=commit;h=576f57f82dfd6c3ac285b0af76e5e0ce617679ba
http://git.denx.de/?p=ipipe-2.6.git;a=commit;h=a250e984a76fd327a0d8cfada5290b27e99f1e4d


> 
> Can you give me some indications ?
> 
> Thanks,
> Gilles 
> _______________________________________________
> Adeos-main mailing list
> Adeos-main@domain.hid
> https://mail.gna.org/listinfo/adeos-main


-- 
Philippe.




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

* Re: [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ?
  2010-04-16  7:27 ` Philippe Gerum
@ 2010-04-16 13:23   ` Gilles DOFFE
  0 siblings, 0 replies; 5+ messages in thread
From: Gilles DOFFE @ 2010-04-16 13:23 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: adeos-main

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

Hello Jan and Philippe,

It works fine now with the patches you gave Philippe.
And all is clear with the commit explanations. :)

Thanks a lot,
Gilles

2010/4/16 Philippe Gerum <rpm@xenomai.org>

> On Fri, 2010-04-16 at 00:00 +0200, Gilles DOFFE wrote:
> > Hello,
> >
> > I try to install a real-time Linux kernel on a Roboard based on a
> > Vortex86DX (a x486 with TSC).
> >
> > All works fine with :
> > Linux Kernel 2.6.30.10
> > Xenomai 2.5.1
> > Adeos patch adeos-ipipe-2.6.30.8-x86-2.4-09.patch
> >
> > But, for all kernels upper or equal to 2.6.31, I always get a double
> > fault when testing WP bit. I have this double fault just after that :
> >
> > Checking if this processor honours the WP bit even in supervisor
> > mode...
> >
> > I traced with some simple printk that the problem occurs in this
> > function, at the end or after the call of fix_to_virt  :
> >
> > static noinline int do_test_wp_bit(void)
> > {
> >         char tmp_reg;
> >         int flag;
> >
> >         __asm__ __volatile__(
> >                 "       movb %0, %1     \n"
> >                 "1:     movb %1, %0     \n"
> >                 "       xorl %2, %2     \n"
> >                 "2:                     \n"
> >                 _ASM_EXTABLE(1b,2b)
> >                 :"=m" (*(char *)fix_to_virt(FIX_WP_TEST)),
> >                  "=q" (tmp_reg),
> >                  "=r" (flag)
> >                 :"2" (1)
> >                 :"memory");
> >
> >         return flag;
> > }
> >
> > I'm (quasi) sure that the problem is not that function, due to it
> > works when the kernel is not patched.
> > But where should I search ?
>
> Try backporting these two 2.6.32 patches to your kernel; this should be
> straightforward:
>
> http://git.denx.de/?p=ipipe-2.6.git;a=commit;h=576f57f82dfd6c3ac285b0af76e5e0ce617679ba
>
> http://git.denx.de/?p=ipipe-2.6.git;a=commit;h=a250e984a76fd327a0d8cfada5290b27e99f1e4d
>
>
> >
> > Can you give me some indications ?
> >
> > Thanks,
> > Gilles
> > _______________________________________________
> > Adeos-main mailing list
> > Adeos-main@domain.hid
> > https://mail.gna.org/listinfo/adeos-main
>
>
> --
> Philippe.
>
>
>

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

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

end of thread, other threads:[~2010-04-16 13:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-15 22:00 [Adeos-main] [Vortx86DX] What's wrong with kernels upper than 2.6.30.10 ? Gilles DOFFE
2010-04-15 22:18 ` Jan Kiszka
2010-04-15 22:24   ` Jan Kiszka
2010-04-16  7:27 ` Philippe Gerum
2010-04-16 13:23   ` Gilles DOFFE

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.