Re: floppy.c soft lockup

Oleg Nesterov
2007-06-01T18:36:45Z

On 06/01, Mark Hounschell wrote:
>
> Oleg Nesterov wrote:
> >
> > Could you apply the trivial patch below, and change the i/o thread to do
> >
> > prctl(1234); // hangs ???
> > printf(something);
> > ioctl(Q->DevSpec1, FDSETPRM, &medprm); // this hangs
> >
> > to see if prctl() hangs or not? This way we can narrow the problem.
> > (of course, you can just kill the above ioctl() if this is possible).
> >
> > Thanks!
> >
> > Oleg.
> >
> > --- OLD/kernel/sys.c~ 2007-04-03 13:05:02.000000000 +0400
> > +++ OLD/kernel/sys.c 2007-06-01 18:56:22.000000000 +0400
> > @@ -2147,6 +2147,11 @@ asmlinkage long sys_prctl(int option, un
> > {
> > long error;
> >
> > + if (option == 1234) {
> > + flush_scheduled_work();
> > + return 0;
> > + }
> > +
> > error = security_task_prctl(option, arg2, arg3, arg4, arg5);
> > if (error)
> > return error;
> >
> > -
>
>
> Ok the prctl never returned. I just replaced the ioctl with it and added
> a printf before and after. I only get the one before. The thread is hung
> at this point just as if I'd done the ioctl?

Thanks. So we can rule out floppy.c. flush_scheduled_work/flush_workqueue
is broken by this RT application. Imho, this is not the kernel problem.

Now I am very sure that the initial suspect was correct: cpu starvation.
I can cook a debug patch to be 100% sure tomorrow, which kernel version is
most convenient to you?

Oleg.