Messages in this thread | | | Date | Mon, 8 Nov 2004 11:50:20 -0500 (EST) | From | linux-os <> | Subject | More linux-2.6.9 module problems |
| |
I have a memory-test procedure that tests memory on a board, accessed via the PCI bus. There is a lot of RAM and it's bank-switched into some 64k windows so it takes a lot of time to test, about 60 seconds.
This is in a module, therefore inside the kernel. When it is invoked via an ioctl() call, the kernel is frozen for the whole test-time. The test procedure does not use any spin-locks nor does it even use any semaphores. It just does a bunch of read/write operations over the PCI/Bus.
I thought that I could enable the preemptible- kernel option and the machine would then respond normally. Not so. Even with 4 CPUs, when one ioctl() is busy in the kernel, nothing else happens until its done. Even keyboard activity is gone, no Caps Lock and no Num Lock, no `ping` response over the network. However, the machine comes back to life when the memory-test is done.
This is kernel version 2.6.9. Is it possible that somebody left on the BKL when calling a module ioctl() on this version? If not, what do I do to be able to execute a time-consuming procedure from inside the kernel? Do I break it up into sections and execute schedule() periodically (temporary work-around --works)??
Cheers, Dick Johnson Penguin : Linux version 2.6.9 on an i686 machine (5537.79 BogoMips). Notice : All mail here is now cached for review by John Ashcroft. 98.36% of all statistics are fiction. - 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/
| |