mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel
Julien Freche
julien.freche@lse.epita.fr http://lse.epita.fr/
mikro - Multiprocessor Init in Kernel CPU init Percpu variables - - PowerPoint PPT Presentation
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions mikro - Multiprocessor Init in Kernel CPU init Percpu variables Conclusion Julien Freche julien.freche@lse.epita.fr http://lse.epita.fr/ Outline I mikro -
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
julien.freche@lse.epita.fr http://lse.epita.fr/
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
1
2
3
4
5
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions
Old PIC IOAPIC LAPIC IPI
CPU init Percpu variables Conclusion
All including self All excluding self Self One processor
Low priority NMI INIT, STARTUP ...
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
. i n i t : ; s e t NMI ha n dle r mov dword [ 4 ∗ 2 ] , . b o o t xor eax , eax mov ebx , (11 b shl 18) + (0 shl 15) + (1 shl 14) + (0 shl 11) + (100 b shl 8) + 2 ; t r i g g e r i n t e r r u p t s in every p r o c e s s o r mov [ dword 0xFEE00300 + 16] , eax mov [ dword 0xFEE00300 + 00] , ebx ret a l i g n 16 . b o o t :
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
NMI Physical, Assert level, Edge trigger mode All excluding self
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init
BootStrap Processor Application Processor INIT-SIPI-SIPI
Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables
Usage Implementation Using clang
Conclusion
# define FS_RELATIVE address_space (257) # define PCPU_S s e c t i o n ( " . cpuvar " ) # define __percpu _ _ a t t r i b u t e _ _ ( ( FS_RELATIVE , PCPU_S ) ) i n t __percpu myvar ; void do_something ( ) { myvar = 42; }
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion
mikro - Multiprocessor Init in Kernel Julien Freche Introduction Interruptions CPU init Percpu variables Conclusion