Hello Rahul, On Tue, Mar 25, 2014 at 5:01 PM, Rahul Garg <rahul.lnm...@gmail.com> wrote: > Hi Arun, > > When I used word nested interrupt, I meant that in my interrupt > handler I am enabling interrupts. > > and about "what made you believe we need system mode to support nesting?" > > I asked this question on SO, here is the link for its answer > > http://stackoverflow.com/a/22500017/769260
Its actually SVC mode. not system mode. arch/arm/kernel/entry-armv.S. This file is your key. > > And thanks for your prompt answer :) My pleasure. Thanks, Arun > > Regards > Rahul > > On Tue, Mar 25, 2014 at 4:45 PM, Arun KS <getaru...@gmail.com> wrote: >> On Tue, Mar 25, 2014 at 4:40 PM, Arun KS <getaru...@gmail.com> wrote: >>> Hello Rahul, >>> >>> On Tue, Mar 25, 2014 at 4:10 PM, Rahul Garg <rahul.lnm...@gmail.com> wrote: >>>> Hi Arun, >>>> >>>> Lines from Robert Love : >>>> >>>> Early in the 2.6 kernel process, an option was added to reduce the >>>> stack size from two >>>> pages down to one, providing only a 4KB stack on 32-bit systems.This >>>> reduced memory >>>> pressure because every process on the system previously needed two >>>> pages of contiguous, >>>> nonswappable kernel memory.To cope with the reduced stack size, >>>> interrupt handlers >>>> were given their own stack, one stack per processor, one page in >>>> size.This stack is referred >>>> to as the interrupt stack.Although the total size of the interrupt >>>> stack is half that of the >>>> original shared stack, the average stack space available is greater >>>> because interrupt handlers >>>> get the full page of memory to themselves. >>> >>> Kernel stack size is architecture dependent. Some architecture uses >>> CONFIG_4KSTACKS to choose 4K stacks. >>> >>> Where as in arm, it is always 8KB. >>> >>> File:arch/arm/include/asm/thread_info.h >>> #define THREAD_SIZE_ORDER 1 >>> #define THREAD_SIZE 8192 >>> #define THREAD_START_SP (THREAD_SIZE - 8) >>> >>>> >>>> >>>> So with these lines, it is clear that interrupt stack is used by >>>> interrupt handlers. So can you please re-confirm your answer ? >>> On ARM when there is an irq, the processor switches to irq mode. But >>> the kernel switches to svc mode immediately and uses SVC stack, ie the >>> stack of the current process. >>> >>> Why do you believe my be? :-) >>> If you want re-confirmation, go through arch/arm/kernel/entry-armv.S >>> >>> Thanks, >>> Arun >>>> >>>> And one more thing, as you mentioned only interrupt, undefined and >>>> abort have stack, So how nested interrupt is handled because for that >>>> we need System mode stack ? >> Interrupts are no more nested in linux kernel, >> >> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/kernel/irq/handle.c?id=e58aa3d2d0cc01ad8d6f7f640a0670433f794922 >> >> But nested exceptions(data, prefetch aborts etc) can still happen. >> >> And, what made you believe we need system mode to support nesting? >> What difference does it make if it is svc mode? >> >> Thanks, >> Arun >> >> >>> ARM linux never use system mode for anything. >>> >>>> >>>> Regards >>>> Rahul >>>> >>>> On Tue, Mar 25, 2014 at 3:06 PM, Arun KS <getaru...@gmail.com> wrote: >>>>> On Tue, Mar 25, 2014 at 2:58 PM, Arun KS <getaru...@gmail.com> wrote: >>>>>> Hello Rahul, >>>>>> >>>>>> On Tue, Mar 25, 2014 at 6:29 AM, Rahul Garg <rahul.lnm...@gmail.com> >>>>>> wrote: >>>>>>> As I understand every process have a user stack and kernel stack. >>>>>> True. >>>>>> >>>>>>> Apart from that there is a stack for every mode in ARM achitecture. So >>>>>> This is wrong. >>>>>> Only irq, abort and undefined modes have stacks in linux. That too is >>>>>> very limited, 3 bytes per mode per cpu. >>>>>> Have a look at arch/arm/kernel/irq.c >>>>> Sorry. Wrong file, its at arch/arm/kernel/setup.c >>>>> >>>>> Thanks, >>>>> Arun >>>>>> struct stack { >>>>>> u32 irq[3]; >>>>>> u32 abt[3]; >>>>>> u32 und[3]; >>>>>> } ____cacheline_aligned; >>>>>> >>>>>> kernel runs in SVC mode and the stack used belong to the kernel stack >>>>>> of the current task. >>>>>> Even irq, abort and undefined exception handlers use kernel stack of >>>>>> current task. All the exception >>>>>> handlers switch to SVC mode at a very early stage and use kernel >>>>>> stack. Those 3 bytes are used >>>>>> as stack just during the transition phase(for example transition from >>>>>> irq to svc mode during and interrupt). >>>>>> >>>>>> Thanks, >>>>>> Arun >>>>>>> I want to know How different stack and stack pointer works in ARM >>>>>>> modes? Also when this kernel stack associated with the process will be >>>>>>> used ? >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Kernelnewbies mailing list >>>>>>> Kernelnewbies@kernelnewbies.org >>>>>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies