Subject: bottom handler

From: Mark van Doesburg <[email-masked]>
Date: Sat, 10 Oct 1998 15:12:40 +0200

I've written a network driver for networking over PCI. This driver works
OK on the i386 and also works OK on the arm when i have the debugging
messages on the console enabled. When i disable the debugging messages on
the arm the driver stops working. I've found out that the networking
bottom handler is not run even though it is marked to run.

I've been searching for the cause of this problem for the last two days
and haven't found it yet, any suggestions would be welcome.

greetings,

Mark.
unsubscribe: body of `unsubscribe linux-arm' to [email-masked]

---

From: Alex Holden <[email-masked]>
Date: Sun, 11 Oct 1998 10:14:34 +0100 (BST)

> bottom handler is not run even though it is marked to run.

It's the Heisenburg Uncertainty Principle in action ;)

--------------- Linux- the choice of a GNU generation. --------------
: Alex Holden (M1CJD)- Caver, Programmer, Land Rover nut, Radio Ham :

---

From: Russell King - ARM Linux Admin <[email-masked]>
Date: Sun, 11 Oct 1998 10:16:07 +0100 (BST)

> bottom handler is not run even though it is marked to run.

Thinking about this, if it was the case that the net_bh was not being
run when a mark_bh(NET_BH) was, then how could networking possibly work?

You don't say what kernel version you're using, which release date, nor
where you got the kernel sources from, so I can't investigate your
symptoms myself and suggest possible reasons.  Also, it would be helpful
to know which version of GCC and binutils you're using to compile up the
kernel.

However, looking at the code as it stands in the latest 2.1 kernels, I
can see no reason for your symptoms.  You may be seeing a side effect of
schedule() calling do_bottom_half, or even a compiler bug.
   _____
  |_____| ------------------------------------------------- ---+---+-
  |   |        Russell King       [email-masked]      --- ---
  | | | |  http://www.arm.uk.linux.org/~rmk/armlinux.html    /  /  |
  | +-+-+                                                     --- -+-
  /   |               THE developer of ARM Linux              |+| /|\
 /  | | |                                                     ---  |
    +-+-+ -------------------------------------------------  /\\\  |

---

From: Philip Blundell <[email-masked]>
Date: Sun, 11 Oct 1998 19:27:04 +0100

>bottom handler is not run even though it is marked to run.

Bizarre.  It sounds to me like some weird race condition but I'm at a loss to 
guess why that would stop the bh handler from running.  Either that or 
printk() is enabling interrupts at an important moment.

Can you post the code?

p.