> I am debugging a network driver bug in a platform with ARM 9 processor, and
> putting my debgging code, that is BUG() in somewhere. However, I have
> several questions about Kernel Stack when the kernel path is in softirq.
> After reading the chpater 3 in Understanding the Linux Kernel book. I
> realize that Kernel stack should be located within the the process desriptor
> structure
Not really - the process descriptor (task_struct) USED TO reside at
the end of kernel mode stack. But these days, a smaller struct
thread_info resides at the end of kernel stack (Again, stack is not
"located" within thread_info or task_struct)
> when the user mode process is calling the system call. However,
> there are not any descriptions about where the ISR and SoftIRQ kernel stack
> are. Could you please give me a clue to the interrupt and ISR context swtich
> in kernel mode?
If you've configured your kernel to have a stack size of 2 pages
(which is standard) then your ISRs and softirqs etc will use the same
kernel mode stack. However, if you have configured the kernel stack to
be 1 page, then there will be a separate per CPU stack which will be
shared by all ISRs
Thanks,
Rajat