Messages in this thread | | | From | Jia-Ju Bai <> | Subject | A question of sleeping with interrupts are disabled in start_kernel() | Date | Fri, 6 Apr 2018 17:53:21 +0800 |
| |
Hello,
I have a question of the call path init/main.c: init/main.c: start_kernel() -> kernel/events/core.c: perf_pmu_register() -> kernel/events/core.c: perf_event_init() -> kernel/events/core.c: pmu_dev_alloc()
In this call path, start_kernel() calls local_irq_disable() to disable the interrupt; perf_pmu_register() calls mutex_lock() and idr_alloc(GFP_KERNEL), and they can sleep; pmu_dev_alloc() calls kzalloc(GFP_KERNEL), and it can sleep.
In my opinion, this code may sleep with interrupts are disabled. I wonder why this code is okay?
Best wishes, Jia-Ju Bai
| |