Embedded Linux >> sync, pdflush and interrupts

by Philip Van-Houtte » Mon, 29 Nov 2004 22:49:53 GMT

Hello,

Forgive my ignorance, I'm a kernel newbie.

I'm running 2.6.9 on powerpc (8240) and it works well except that I have
a device (codec) generating a lot of interrupts and have problems when
pdflush wakes-up or sync() is called (dropped packets, so on so forth...).

I'm aware of real-time patches for linux. Most of what I've seen so far
seems to be i386-centric. Is this viable for my type of problem, if so,
what's the status of any ppc 'patches'.

I'd appreciate any pointers to useful information.



Similar Threads

1. kernel panic -not syncing :fatal exception in interrupt(fc3)

 server hardware:Dell  2850(two Xeon 2.8GHz/2G/146GB*3)
 os: fc3

 I have  3  dell 2850 servers,last date they usually crashes,with the
following error:

       eax:73e4a8f2 ebx 00000000 ecx5f44...
           esi:1df09a80 edi:1df09a80 ebp:fffffffff
           ds007b   es:007b ss:0068
          process swapper(pid:0 threadinfo=023ae000  task=02306s60)
           call trace:
       [<022911f7>]tcp_retransmit_timer+0*25/0*38a
       [<.....>]tcp_write_timer+0*7f/0*b9
       [<.....>]tcp_write_timer+0*0/0*b9
       [<.....>]tcp_write_time+0*0/0*b9
       [<.....>]run_timer_softirq+0*123/0*145
       [<.....>]run_do_softirq+0*4c/0*b1
       [<.....>]run_do_softirq+0*4f/0*5b
       [<.....>]smp_apic_timer_interrupt+0*d9/0*dd
       [<.....>]apic_timer-interrupt+0*1a/0*20
       [<.....>]mwait_idle+0*33/0*42
       [<.....>]cpu-idle+0*26/0*3b
       [<.....>]start-kernel+0*194/0*198
       <0>kernel panic -not syncing :fatal exception in interrupt

             Any suggestions are welcome.
            Regards steven yang

2. kernel panic -not syncing : Fatal exception in interrupt - Linux

3. Making an interrupt do the thread sync

Hi
Am developing a simple character device driver, and want the Read function
remain
blocked until an interrupt is received.
Im initalizing a semaphore locked, and trying to decrease its value in
function Read which results in a wait state. Now we're waiting for an irq to
occur and increase/release the semaphore. So far so good...

#include <asm/semaphore.h>
static struct semaphore press_sem;

ssize_t Read(struct file *filp, char *userbuf, size_t count, loff_t *offp) {
    sema_init(&press_sem, 0); // init_MUTEX_LOCKED

    // and now wait for interrupt (release)
    down_interruptiable(&press_sem);

    // return to userland.....
}

static void IntmodInterrupt(int irq, void *devid, struct pt_regs *regs) { //
SA_INTERRUPT
    up(&press_sem);
}

Its not pretty to initalized the semaphore each time I Read, but it makes my
problem easier to understand.

The thread blocks as its suppose, and when the irq occurs following kernel
panic error messages is displayed:
---------------
Unable to handle kernel NULL pointer dereference at virtual address 00000001
 printing eip:
c010edbb
*pde = 00000000
Oops: 0000
CPU:    0
EIP:    0010:[<c010edbb>]    Not tainted
EFLAGS: 00010097
eax: c2a0b594   ebx: c2a0b590   ecx: 00000001   edx: 00000003
esi: 00000001   edi: 00000001   ebp: c10afee8   esp: c10afed0
ds: 0018   es: 0018   ss: 0018
Process ksoftirqd_CPU0 (pid: 3, stackpage=c10af000)
Stack: c05ca360 00000001 0000000a c2a0b594 00000286 00000003 c10aff88
c0105bc6
       c0105da8 c2a0b588 c10aff88 00000001 c2a0b352 00000001 00000000
c0117c6d
       c10ae000 00000000 00000001 00000000 c2a0b192 00000001 00000046
c10aff88
Call Trace: [<c2a0b594>] [<c0105bc6>] [<c0105da8>] [<c2a0b588>] [<c2a0b352>]
   [<c0117c6d>] [<c2a0b192>] [<c0117fcf>] [<c010af36>] [<c01081ef>]
[<c010836e>]
   [<c010a178>] [<c0114f08>] [<c0110010>] [<c0114d5a>] [<c011519d>]
[<c01056e8>]

Code: 8b 01 85 45 fc 74 4e 31 c0 9c 5e fa c7 01 00 00 00 00 83 79
 <0>Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
---------------

Something goes wrong when using up() in interrupt. Is somebody able to help?

/Nick






4. Nvidia IDE MCP78S not syncing: Fatal exception in interrupt - Linux

5. 2.6.1-mm5, kernel panic "Interrupt not syncing"

6. [PATCH 1/2][FAT] miss-sync issues on sync mount (miss-sync on write) - Linux

7. [PATCH 1/2][FAT] miss-sync issues on sync mount (miss-sync on write)

8. [PATCH 2/2][FAT] miss-sync issues on sync mount (miss-sync on utime) - Linux