Re: [patch] Real-Time Preemption, -RT-2.6.10-rc2-mm3-V0.7.32-12

From: Fernando Lopez-Lezcano (nando_at_ccrma.Stanford.EDU)
Date: 12/14/04

  • Next message: Adam Sulmicki: "Re: Thinkpad T42, keyboard sometimes hosed when waking from sleep"
    To: Steven Rostedt <rostedt@goodmis.org>
    Date:	13 Dec 2004 15:34:19 -0800
    
    

    On Sat, 2004-12-11 at 04:30, Steven Rostedt wrote:
    > On Fri, 2004-12-10 at 23:37 -0800, Fernando Lopez-Lezcano wrote:
    > > Can't wait to try the patch, I don't have CONFI_PCI_MSI defined in the
    > > configurations I use. I've had problems with a network card (R8169
    > > driver) for a while (I think I reported it), the interrupts were being
    > > ignored. Hopefully the same problem...
    >
    > You may have the same problem but the patch I sent won't solve it. My
    > patch only is a problem if you have CONFIG_PCI_MSI defined. But I'm sure
    > there exists other instances that threading hardirqs might not work
    > properly with other configurations. Send me your .config, and if I get
    > time I'll take a look. (also your /proc/cpuinfo might help).
    >
    > Before you send this, make sure that it is the hardirqs that's the
    > problem. Switch to PREEMPT_DESKTOP and make sure hardirqs are not
    > threaded.

    [The following is all done booting into 0.7.32-19, interrupt scheduling
    and priorities unchanged from the defaults]

    I'm using PREEMPT_DESKTOP. I don't know how to force the kernel to not
    thread hardirqs. What I did (maybe the same thing?) is to boot single
    user, then turn off /proc/sys/kernel/hardirq_preempt, and then start the
    network. It works (the network). And then I tried the same thing with
    hardirq_preempt=1 and still worked when booting single user... :-(

    So, these are the interrupts after booting single user:
               CPU0
      0: 36426 IO-APIC-edge timer 0/35956
      1: 143 IO-APIC-edge i8042 0/143
      4: 0 IO-APIC-edge KGDB-stub 0/0
      8: 1 IO-APIC-edge rtc 0/1
      9: 0 IO-APIC-level acpi 0/0
     12: 100 IO-APIC-edge i8042 0/100
     14: 26 IO-APIC-edge ide0 1/24
     17: 59 IO-APIC-level libata, libata 0/59
     20: 1462 IO-APIC-level libata 0/1462
     21: 0 IO-APIC-level ehci_hcd, uhci_hcd, uhci_hcd, uhci_hcd,
    uhci_hcd 0/0
    NMI: 7544
    LOC: 36254
    ERR: 0
    MIS: 0

    Here's the extra one I have after I start the network

     16: 7 IO-APIC-level eth0 0/7

    (network works). I then telinit 3, no changes in interrupts (except for
    the count numbers), network continues working.

    I then telinit 5 and the network dies. This is the added interrupt:

     11: 0 IO-APIC-edge radeon@PCI:1:0:0 0/0

    I tried repeating the whole thing but going through all the services in
    the transition from level 3 to level 5 one by one, and nothing happened
    to the network so it must be X. I then rebooted into single user,
    started the network and loaded the radeon kernel module alone and the
    network was not affected.

    So, this is what I get in dmesg when I go into level 5:

    NET: Registered protocol family 10
    Disabled Privacy Extensions on device c03e0ec0(lo)
    IPv6 over IPv4 tunneling driver
    divert: not allocating divert_blk for non-ethernet device sit0
    eth0: no IPv6 routers present
    [drm] Initialized radeon 1.11.0 20020828 on minor 0:
    ACPI: PCI interrupt 0000:01:00.0[A] -> GSI 16 (level, low) -> IRQ 16
    agpgart: Found an AGP 3.0 compliant device at 0000:00:00.0.
    agpgart: Putting AGP V3 device at 0000:00:00.0 into 4x mode
    agpgart: Putting AGP V3 device at 0000:01:00.0 into 4x mode
    [drm] Loading R200 Microcode
    irq 16: nobody cared!
     [<c01041e3>] dump_stack+0x23/0x30 (20)
     [<c014d480>] __report_bad_irq+0x30/0xa0 (24)
     [<c014d590>] note_interrupt+0x70/0xb0 (32)
     [<c014d30c>] do_hardirq+0x13c/0x150 (40)
     [<c014d399>] do_irqd+0x79/0xb0 (32)
     [<c013bf7a>] kthread+0xaa/0xb0 (48)
     [<c0101335>] kernel_thread_helper+0x5/0x10 (153411604)
    ---------------------------
    | preempt count: 00000002 ]
    | 2-level deep critical section nesting:
    ----------------------------------------
    .. [<c014d2aa>] .... do_hardirq+0xda/0x150
    .....[<c014d399>] .. ( <= do_irqd+0x79/0xb0)
    .. [<c014045d>] .... print_traces+0x1d/0x60
    .....[<c01041e3>] .. ( <= dump_stack+0x23/0x30)
     
    handlers:
    [<f88e3f00>] (rtl8169_interrupt+0x0/0x1a0 [r8169])
    Disabling IRQ #16

    Anything else I could test?

    > If the problem goes away, then this may be your problem. If
    > it does not, I'm afraid that it's something else, and you don't need to
    > send me anything.

    Let me know if you still want the .config...
    -- Fernando

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Adam Sulmicki: "Re: Thinkpad T42, keyboard sometimes hosed when waking from sleep"

    Relevant Pages

    • How to call a function in the kernel from Local APIC timer handler
      ... Therefore, I schedule a software interrupt thread, which calls my function ... > which avoids a context switch into the network stack. ... > - If your workload benefits from it, ... so you might want to consider changing thread libraries. ...
      (freebsd-current)
    • How to call a function in the kernel from Local APIC timer handler
      ... Therefore, I schedule a software interrupt thread, which calls my function ... > which avoids a context switch into the network stack. ... > - If your workload benefits from it, ... so you might want to consider changing thread libraries. ...
      (freebsd-net)
    • Weird interrupt issues with RELENG_5
      ... When I bring up the network interface, ... second IDE bus. ... WARNING - READ_DMA no interrupt but good status ... <Parallel port bus> on ppc0 ...
      (freebsd-current)
    • About guideline of parameters tuning while in polling mode.
      ... throughput network environment. ... Transmit interrupt reduction can improve CPU ... * efficiency if properly tuned for specific network traffic. ... * This value, in units of 1.024 microseconds, limits the delay in ...
      (freebsd-net)
    • Re: splxxx level?
      ... ::> a question about interrupt priority levels. ... ::> There are currently three entry points into the driver: ... the network reception can cause a buf to be completed ... :: the appropriate spl level regardless. ...
      (freebsd-arch)