linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Reg. kernel crash while using pixcir touchscreen driver
@ 2012-05-24  5:50 Sachin Kamat
  2012-05-24  7:47 ` Dmitry Torokhov
  0 siblings, 1 reply; 5+ messages in thread
From: Sachin Kamat @ 2012-05-24  5:50 UTC (permalink / raw)
  To: linux-input; +Cc: jcbian, dmitry.torokhov, rydberg

Hi,

I encountered a kernel crash while integrating Pixcir touchscreen
driver with one of our hardware. The log is attached at the end of the
mail (inline).

The following ISR code:

while (!tsdata->exiting) {
        pixcir_ts_poscheck(tsdata);

        if (tsdata->chip->attb_read_val())
              break;

        msleep(20);
}

seems to run until the if condition is false. However, when it exits
the loop (when the condition becomes true), it crashes saying "exiting
task "irq/438-pixcir_" (1011) is an active IRQ thread".

I have 2 questions here:
1. Do we need such a loop and the if condition. In my case it worked
with the isr just doing
pixcir_ts_poscheck(tsdata);

2. What exactly is expected by attb_read_val() function.

Any pointers would be helpful.

*****
Unable to handle kernel paging request at virtual address e7fddef0
pgd = cf9e4000
[e7fddef0] *pgd=00000000
Internal error: Oops: 80000005 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 1    Not tainted  (3.4.0-rc3-00050-g718e84c-dirty #24)
PC is at 0xe7fddef0
LR is at pixcir_ts_isr+0x7c/0x210
pc : [<e7fddef0>]    lr : [<c01aaa68>]    psr: 60000013
sp : cef83f50  ip : 00000000  fp : 00000001
r10: cf8ce780  r9 : 00000001  r8 : 00000000
r7 : 00000000  r6 : 00000000  r5 : 00000000  r4 : 000000fc
r3 : e7fddef0  r2 : cef83f48  r1 : 60000013  r0 : 00000000
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387d  Table: 4f9e404a  DAC: 00000015
Process irq/438-pixcir_ (pid: 1011, stack limit = 0xcef822f0)
Stack: (0xcef83f50 to 0xcef84000)
3f40:                                     cef83f8c 00000256 c0367f80 56000180
3f60: 0000fc02 00000000 00000001 cef82000 cebdc720 00000001 cebdc700 c0380a40
3f80: c0380a94 c038c670 00000000 c00636e8 c0367f80 c03672c0 00000001 cf833dfc
3fa0: cebdc700 c00635ec 00000013 00000000 00000000 00000000 00000000 c0038bd4
3fc0: 00000000 cebdc700 00000000 00000000 00000000 dead4ead ffffffff ffffffff
3fe0: cef83fe0 cef83fe0 cf833dfc c0038b50 c000f02c c000f02c 00002468 00000000
[<c01aaa68>] (pixcir_ts_isr+0x7c/0x210) from [<c00636e8>]
(irq_thread+0xfc/0x14c)
[<c00636e8>] (irq_thread+0xfc/0x14c) from [<c0038bd4>] (kthread+0x84/0x90)
[<c0038bd4>] (kthread+0x84/0x90) from [<c000f02c>] (kernel_thread_exit+0x0/0x8)
Code: bad PC value
---[ end trace cbb10841fae7b402 ]---
exiting task "irq/438-pixcir_" (1011) is an active IRQ thread (irq 438)


-- 
Regards,
Sachin

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

* Re: Reg. kernel crash while using pixcir touchscreen driver
  2012-05-24  5:50 Reg. kernel crash while using pixcir touchscreen driver Sachin Kamat
@ 2012-05-24  7:47 ` Dmitry Torokhov
  2012-05-24  8:11   ` Sachin Kamat
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry Torokhov @ 2012-05-24  7:47 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-input, jcbian, rydberg

Hi Sachin,

On Thu, May 24, 2012 at 11:20:01AM +0530, Sachin Kamat wrote:
> Hi,
> 
> I encountered a kernel crash while integrating Pixcir touchscreen
> driver with one of our hardware. The log is attached at the end of the
> mail (inline).
> 
> The following ISR code:
> 
> while (!tsdata->exiting) {
>         pixcir_ts_poscheck(tsdata);
> 
>         if (tsdata->chip->attb_read_val())
>               break;
> 
>         msleep(20);
> }
> 
> seems to run until the if condition is false. However, when it exits
> the loop (when the condition becomes true), it crashes saying "exiting
> task "irq/438-pixcir_" (1011) is an active IRQ thread".

It actually crashes earlier, in pixcir_ts_isr() itself. The message is
coming from do_exit() when ISR thread dies. Did you porvide
attb_read_val implementation?

> 
> I have 2 questions here:
> 1. Do we need such a loop and the if condition. In my case it worked
> with the isr just doing
> pixcir_ts_poscheck(tsdata);
> 
> 2. What exactly is expected by attb_read_val() function.

I believe it is supposed to indicate if touch is detected so we can keep
polling.

Thanks.

-- 
Dmitry

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

* Re: Reg. kernel crash while using pixcir touchscreen driver
  2012-05-24  7:47 ` Dmitry Torokhov
@ 2012-05-24  8:11   ` Sachin Kamat
  2012-05-24  8:22     ` Dmitry Torokhov
  0 siblings, 1 reply; 5+ messages in thread
From: Sachin Kamat @ 2012-05-24  8:11 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, jcbian, rydberg

Hi Dmitry,

Thank you for your reply.


On 24/05/2012, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> Hi Sachin,
>
> On Thu, May 24, 2012 at 11:20:01AM +0530, Sachin Kamat wrote:
>> Hi,
>>
>> I encountered a kernel crash while integrating Pixcir touchscreen
>> driver with one of our hardware. The log is attached at the end of the
>> mail (inline).
>>
>> The following ISR code:
>>
>> while (!tsdata->exiting) {
>>         pixcir_ts_poscheck(tsdata);
>>
>>         if (tsdata->chip->attb_read_val())
>>               break;
>>
>>         msleep(20);
>> }
>>
>> seems to run until the if condition is false. However, when it exits
>> the loop (when the condition becomes true), it crashes saying "exiting
>> task "irq/438-pixcir_" (1011) is an active IRQ thread".
>
> It actually crashes earlier, in pixcir_ts_isr() itself. The message is
> coming from do_exit() when ISR thread dies. Did you porvide
> attb_read_val implementation?

Yes, i did provide the implementation for it.
In fact even a simplest implementation where I return a positive
integer (for testing) results in the above crash.

>
>>
>> I have 2 questions here:
>> 1. Do we need such a loop and the if condition. In my case it worked
>> with the isr just doing
>> pixcir_ts_poscheck(tsdata);
>>
>> 2. What exactly is expected by attb_read_val() function.
>
> I believe it is supposed to indicate if touch is detected so we can keep
> polling.
>
> Thanks.
>
> --
> Dmitry
>


-- 
With warm regards,
Sachin

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

* Re: Reg. kernel crash while using pixcir touchscreen driver
  2012-05-24  8:11   ` Sachin Kamat
@ 2012-05-24  8:22     ` Dmitry Torokhov
  2012-05-24 10:05       ` Sachin Kamat
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry Torokhov @ 2012-05-24  8:22 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-input, jcbian, rydberg

On Thu, May 24, 2012 at 01:41:27PM +0530, Sachin Kamat wrote:
> Hi Dmitry,
> 
> Thank you for your reply.
> 
> 
> On 24/05/2012, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> > Hi Sachin,
> >
> > On Thu, May 24, 2012 at 11:20:01AM +0530, Sachin Kamat wrote:
> >> Hi,
> >>
> >> I encountered a kernel crash while integrating Pixcir touchscreen
> >> driver with one of our hardware. The log is attached at the end of the
> >> mail (inline).
> >>
> >> The following ISR code:
> >>
> >> while (!tsdata->exiting) {
> >>         pixcir_ts_poscheck(tsdata);
> >>
> >>         if (tsdata->chip->attb_read_val())
> >>               break;
> >>
> >>         msleep(20);
> >> }
> >>
> >> seems to run until the if condition is false. However, when it exits
> >> the loop (when the condition becomes true), it crashes saying "exiting
> >> task "irq/438-pixcir_" (1011) is an active IRQ thread".
> >
> > It actually crashes earlier, in pixcir_ts_isr() itself. The message is
> > coming from do_exit() when ISR thread dies. Did you porvide
> > attb_read_val implementation?
> 
> Yes, i did provide the implementation for it.
> In fact even a simplest implementation where I return a positive
> integer (for testing) results in the above crash.

Hmm, this is wierd... are you sure you do not discard platform data
after binding to the touchscreen?

-- 
Dmitry

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

* Re: Reg. kernel crash while using pixcir touchscreen driver
  2012-05-24  8:22     ` Dmitry Torokhov
@ 2012-05-24 10:05       ` Sachin Kamat
  0 siblings, 0 replies; 5+ messages in thread
From: Sachin Kamat @ 2012-05-24 10:05 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, jcbian, rydberg

On 24/05/2012, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> On Thu, May 24, 2012 at 01:41:27PM +0530, Sachin Kamat wrote:
>> Hi Dmitry,
>>
>> Thank you for your reply.
>>
>>
>> On 24/05/2012, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
>> > Hi Sachin,
>> >
>> > On Thu, May 24, 2012 at 11:20:01AM +0530, Sachin Kamat wrote:
>> >> Hi,
>> >>
>> >> I encountered a kernel crash while integrating Pixcir touchscreen
>> >> driver with one of our hardware. The log is attached at the end of the
>> >> mail (inline).
>> >>
>> >> The following ISR code:
>> >>
>> >> while (!tsdata->exiting) {
>> >>         pixcir_ts_poscheck(tsdata);
>> >>
>> >>         if (tsdata->chip->attb_read_val())
>> >>               break;
>> >>
>> >>         msleep(20);
>> >> }
>> >>
>> >> seems to run until the if condition is false. However, when it exits
>> >> the loop (when the condition becomes true), it crashes saying "exiting
>> >> task "irq/438-pixcir_" (1011) is an active IRQ thread".
>> >
>> > It actually crashes earlier, in pixcir_ts_isr() itself. The message is
>> > coming from do_exit() when ISR thread dies. Did you porvide
>> > attb_read_val implementation?
>>
>> Yes, i did provide the implementation for it.
>> In fact even a simplest implementation where I return a positive
>> integer (for testing) results in the above crash.
>
> Hmm, this is wierd... are you sure you do not discard platform data
> after binding to the touchscreen?

Yes, you are right. The platform data was getting freed after the binding.
It now works fine. Thanks for your help.

>
> --
> Dmitry
>


-- 
With warm regards,
Sachin

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

end of thread, other threads:[~2012-05-24 10:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-24  5:50 Reg. kernel crash while using pixcir touchscreen driver Sachin Kamat
2012-05-24  7:47 ` Dmitry Torokhov
2012-05-24  8:11   ` Sachin Kamat
2012-05-24  8:22     ` Dmitry Torokhov
2012-05-24 10:05       ` Sachin Kamat

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).