Re: 2.6.14 X spinning in the kernel

Badari Pulavarty
2005-11-16T21:52:43Z

On Wed, 2005-11-16 at 13:07 -0800, Max Krasnyansky wrote:
> Badari Pulavarty wrote:
> >> Badari Pulavarty <pbadari@us.ibm.com> wrote:
> >>
> >>> On Mon, 2005-11-14 at 16:17 -0800, Andrew Morton wrote:
> >>>
> >>>> Badari Pulavarty <pbadari@us.ibm.com> wrote:
> >>>>
> >>>>> My 2-cpu EM64T machine started showing this problem again on 2.6.14.
> >>>>> On some reboots, X seems to spin in the kernel forever.
> >>>>>
> >>>>> sysrq-t output shows nothing.
> >>>>>
> >>>>> X R running task 0 3607 3589 3903
> >>>>> (L-TLB)
> >>>>>
> >>>>> top shows:
> >>>>> 3607 root 25 0 0 0 0 R 99.1 0.0 262:04.69 X
> >>>>>
> >>>>>
> >>>>> So, I wrote a module to do smp_call_function() on all CPUs
> >>>>> to show stacks on them. CPU0 seems to be spinning in exit_mmap().
> >>>>> I did this multiple times to collect stacks few times.
> >>>>>
> >>>>> Is this a known issue ?
>
> I've seen similar problems on dual Opteron HP xw9300/Radeon 7000 PCI box with 2.6.11.12
> and latest X from Fedora x86-64 YUM repos.
> I haven't done any traces but it sounds like the same problem (ie X server is spinning).
> Disabling DRI in xorg.conf fixed it for me.

Okay. Thank you.

I traced it little further.

It looks like radeon_freelist_get() is always returning NULL.
Which seem to have 2 loops
- top loop is for for 10000 times (usec_timeout).
- second one for length of the list ?

for (t = 0; t < dev_priv->usec_timeout; t++)
..
for (i = start; i < dma->buf_count; i++) {

..
}
}

Which is making it even worse.

And also, radeon_cp_get_buffers() is getting called repeatedly.

Thanks,
Badari