Skip to content

hephaex/kernel_review

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Linux Kernel study of ARMv7 3.13.0 (exynos 5420)

  • Community name: neuromancer.kr
  • Target Soc : Samsung Exynos 5420 (ARMv7 A7&A15 bigLITTLE )
  • Kernel version: Linux kernel 3.13.x
  • 1st: 3.10.x, A bootstrab before start_kernel(): 3.10.x
  • 2nd: start_kernel()->mm_init: 3.13.x

The history of Linux kernel study

  • 191th (2017/12/25) week 191차
  • rest_init()
  • 190th (2017/10/25) week 190차
  • rest_init()
  • 189th (2017/10/18) week 189차
  • rest_init()
  • 188th (2017/10/11) week 188차
  • rest_init()
  • schedule_preempt_disabled 1892 init/main.c
  • schedule 3968 sched/core.c
  • __schedule 3935 sched/core.c
  • context_switch 3881 kernel/sched/core.c
  • ret_from_fork 3190 kernel/sched/core.c
  • kernel_init 119 arch/arm/kernel/entry-common.S
  • kernel_init_freeable 2589 init/main.c
  • wait_for_completion 2636 init/main.c
  • wait_for_common 190 kernel/sched/completion.c
  • __wait_for_common 166 kernel/sched/completion.c
  • do_wait_for_common 155 kernel/sched/completion.c
  • schedule_timeout 128 kernel/sched/completion.c
  • schedule 1680 kernel/timer.c
  • __schedule 3935 kernel/sched/core.c
  • deactivate_task 3764 kernel/sched/core.c
  • dequeue_task 1228 kernel/sched/core.c
  • dequeue_task_fair 1071 kernel/sched/core.c
  • dequeue_entity 5135 dequeue_entity(cfs_rq, se, flags);
  • update_curr 3757 update_curr(cfs_rq);
  • update_min_vruntime 1256 update_min_vruntime(cfs_rq);
  • 187th (2017/09/13) week 187차
  • rest_init()
  • schedule_preempt_disabled 1892 init/main.c
  • schedule 3968 sched/core.c
  • __schedule 3935 sched/core.c
  • context_switch 3881 kernel/sched/core.c
  • ret_from_fork 3190 kernel/sched/core.c
  • kernel_init 119 arch/arm/kernel/entry-common.S
  • kernel_init_freeable 2589 init/main.c
  • wait_for_completion 2636 init/main.c
  • wait_for_common 190 kernel/sched/completion.c
  • __wait_for_common 166 kernel/sched/completion.c
  • do_wait_for_common 155 kernel/sched/completion.c
  • schedule_timeout 128 kernel/sched/completion.c
  • schedule 1680 kernel/timer.c
  • __schedule 3935 kernel/sched/core.c
  • deactivate_task 3764 kernel/sched/core.c
  • dequeue_task 1228 kernel/sched/core.c
  • dequeue_task_fair 1071 kernel/sched/core.c
  • dequeue_entity 5135 dequeue_entity(cfs_rq, se, flags);
  • update_curr 3757 update_curr(cfs_rq);
  • update_min_vruntime 1256 update_min_vruntime(cfs_rq);
  • 186th (2017/09/08) week 186차
  • rest_init()
    • schedule_preempt_disabled 1891 ~/init/main.c
    • schedule 3813 kernel/sched/core.c
    • __schedule 3785 kernel/sched/core.c
    • context_switch 3741 context_switch(rq, prev, next); /* unlocks the rq */
    • switch_to 3085 switch_to(prev, next, prev);
    • __switch_to 32 arch/arm/include/asm/switch_to.h
  • 185th (2017/08/30) week 185차
  • rest_init()
  • schedule_preempt_disabled 1891 ~/init/main.c
  • schedule 3813 kernel/sched/core.c
  • __schedule 3785 kernel/sched/core.c
  • context_switch 3741 context_switch(rq, prev, next); /* unlocks the rq */
  • switch_to 3085 switch_to(prev, next, prev);
  • 184th (2017/08/23) week 184차
  • rest_init()
  • 183th (2017/08/19) week 183차
  • rest_init()
  • 182th (2017/08/12) week 182차
  • rest_init()
  • 181th (2017/07/29) week 181차
  • rest_init()
  • 180th (2017/07/20) week 180차
  • rest_init()
  • 179th (2017/07/15) week 179차
  • rest_init()
  • 178th (2017/07/01) week 178차
  • rest_init()
  • 177th (2017/06/24) week 177차
  • rest_init()
  • 176th (2017/06/17) week 176차
  • rest_init()
  • 175th (2017/06/10) week 175차
  • rest_init()
  • 174th (2017/05/20) week 174차
  • rest_init()
  • 173th (2017/05/13) week 173차
  • rest_init()
  • 172th (2017/04/27) week 172차
  • rest_init()
  • 171th (2017/04/19) week 171차
  • rest_init()
  • 170th (2017/04/10) week 170차
  • rest_init()
  • 169th (2017/02/08) week 169차
  • rest_init()
  • 168th (2017/02/01) week 168차
  • rest_init()
  • 167th (2016/12/17) week 167차
  • rest_init()
  • 166th (2016/12/10) week 166차
  • rest_init()
  • 165th (2016/12/03) week 165차
  • rest_init()
  • 164th (2016/11/27) week 164차
  • rest_init()
  • 163th (2016/11/12) week 163차
  • rest_init()
  • 162th (2016/11/05) week 162차
  • rest_init()
  • 161th (2016/10/29) week 161차
  • rest_init()
  • 160th (2016/10/15) week 160차
  • rest_init()
  • 159th (2016/10/09) week 159차
  • rest_init()
  • 158th (2016/09/10) week 158차
  • rest_init()
  • 157th (2016/09/03) week 157차
  • rest_init()
  • 156th (2016/08/27) week 156차
  • cgroup_init()
  • 155th (2016/08/20) week 155차
  • cgroup_init()
  • 154th (2016/08/13) week 154차
  • cgroup_init()
  • 153th (2016/07/30) week 153차
  • cgroup_init()
  • 152th (2016/07/23) week 152차
  • cgroup_init()
  • 151th (2016/07/16) week 151차
  • proc_root_init()
  • cgroup_init()
  • 150th (2016/07/09) week 150차
  • proc_root_init()
  • 149th (2016/07/02) week 149차
  • proc_root_init()
  • 148th (2016/06/25) week 148차
  • proc_root_init()
  • 147th (2016/06/11) week 147차
  • proc_root_init()
    • proc_init_inodecache()
    • register_filesystem()
    • proc_self_init()
    • proc_symlink()
    • proc_net_init()
  • 146th (2016/06/04) week 146차
  • page_writeback_init()
  • writeback_set_ratelimit()
  • register_cpu_notifier()
  • proc_root_init()
    • proc_init_inodecache()
    • register_filesystem()
    • proc_self_init()
    • proc_symlink()
  • 145th (2016/05/28) week 145차
  • vfs_caches_init()
  • signals_init()
  • page_writeback_init()
    • write_set_rate_limit()
  • 144th (2016/05/21) week 144차
  • vfs_caches_init()
    • kmem_cache_create(): names_cache
    • dcache_init()
    • inode_init()
    • files_init()
    • mnt_init()
    • bdev_cache_init()
    • chrdev_init()
  • 143th (2016/05/14) week 143차
  • vfs_caches_init()
  • mnt_init()
  • 142th (2016/04/30) week 142차
  • vfs_caches_init()
  • mnt_init()
  • init_mount_tree()
  • 141th (2016/04/23) week 141차
  • vfs_caches_init()
  • mnt_init()
  • init_mount_tree()
  • 140th (2016/04/16) week 140차
  • vfs_caches_init()
  • mnt_init()
  • init_mount_tree()
  • 139th (2016/04/09) week 139차
  • vfs_caches_init()
  • mnt_init()
  • init_mount_tree()
  • 138th (2016/04/02) week 138차
  • vfs_caches_init()
  • mnt_init()
  • init_mount_tree()
  • 137th (2016/03/26) week 137차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • 136th (2016/03/19) week 136차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • shmem_init()
  • 135th (2016/03/05) week 135차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • shmem_init()
  • 134th (2016/02/27) week 134차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • shmem_init()
  • 133th (2016/02/20) week 133차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • shmem_init()
  • 132th (2016/02/13) week 132차
  • vfs_caches_init()
  • mnt_init()
  • init_rootfs()
  • shmem_init()
  • 131th (2016/01/23) week 131차
  • vfs_caches_init()
  • mnt_init()
  • 130th (2016/01/16) week 130차
  • vfs_caches_init()
  • mnt_init()
  • 129th (2016/01/09) week 129차
  • vfs_caches_init()
  • mnt_init()
  • 128th (2015/12/19) week 128차
  • vfs_caches_init()
  • mnt_init()
    • sysfs_init()
  • 127th (2015/12/12) week 127차
  • vfs_caches_init()
  • mnt_init()
    • sysfs_init()
  • 126th (2015/12/05) week 126차
  • vfs_caches_init()
  • mnt_init()
    • sysfs_init()
  • 125th (2015/11/27) week 125차
  • vfs_caches_init()
  • mnt_init()
    • sysfs_init()
  • 124th (2015/11/21) week 124차
  • vfs_caches_init()
    • mnt_init()
      • sysfs_init()
  • 123th (2015/11/14) week 123차
  • vfs_caches_init()
  • mnt_init()
    • sysfs_init()
  • 122th (2015/11/07) week 122차
  • vfs_caches_init()
  • 121th (2015/10/31) week 121차
  • vfs_caches_init()
  • 120th (2015/10/24) week 120차
  • vfs_caches_init()
  • 119th (2015/10/10) week 119차
  • buffer_init()
    • buffer_head 를 사용하기 위한 kmem_cache 할당자 및 max_buffer_heads 값 초기화 수행
  • key_init()
    • null funtion()
  • security_init()
    • null function()
  • dbg_late_init()
    • null function()
  • vfs_caches_init()
  • 118th (2015/10/03) week 118차
  • proc_caches_init()
    • sighand_struct, signal_struct, files_struct, fs_struct, mm_struct, vm_area_struct, nsproxy를
    • 사용하기 위한 kmem_cache 할당자 및 percpu list 초기화 수행
  • 117th (2015/09/19) week 117차
  • anon_vma_init();
    • anon vma 를 사용하기 위한 kmem_cache 할당자 초기화 수행
  • thread_info_cache_init();
    • null function
  • cred_init();
    • credentials 를 사용하기 위한 kmem_cache 할당자 초기화 수행
  • fork_init(totalram_pages);
    • totalram_pages: 총 free된 page 수
    • task_struct 를 사용하기 위한 kmem_cache 할당자 초기화 수행
    • max_threads값을 계산하여 init_task에 threads값의 limit 값 설정함
  • 116th (2015/09/12) week 116차
  • pidmap_init()
  • 115th (2015/08/22) week 115차
  • cgroup_early_init() 분석
  • 114th (2015/08/15) week 114차
  • cgorup 초기 초기화 분석
  • cgroup_early_init()
  • 113th (2015/08/08) week 113차
  • cgorup 초기 초기화 분석
  • cgroup_early_init()
  • 112th (2015/08/01) week 112차
  • cgroup 에 대한 이야기
  • LXC와 Docker 기술
  • SS의 G6의 kernel config 를 참조하여 cgroup config를 설정.
  • config 추가: Reference/exynos7420-zerolte_kor_skc_defconfig
  • pageconsole_init()
  • 111th (2015/07/25) week 111차
  • console_init()
  • con_init()
  • 110th (2015/07/18) week 110차
  • console_init()
  • con_init()
  • 109th (2015/07/11) week 109차
  • console_init()
  • con_init()
  • 108th (2015/07/04) week 108차
  • parse_args() 복습
  • console_init()->con_init()
  • console_init()->s3c24xx_serial_console_init()
  • 107th (2015/06/27) week 107차
  • console_init()
  • 106th (2015/06/20) week 106차
  • sched_clock_postinit();
  • perf_event_init();
  • profile_init();
  • call_function_init();
  • irqs_disabled()
  • local_irq_enable();
  • kmem_cache_init_late();
  • 105th (2015/06/13) week 105차
  • sched_clock_postinit();
  • 104th (2015/06/06) week 104차
  • sched_clock_postinit();
  • 103th (2015/05/30) week 103차
  • sched_clock_postinit();
  • 102th (2015/05/23) week 102차
  • time_init()
    • timer 를 사용하기 위한 clk source, clk_table 메모리 할당 및 초기화,
    • timer event를 위한 timer irq (MCT) 초기화 수행
  • 101th (2015/05/16) week 101차
  • 100th (2015/05/09) week 101차
  • Temp. (2015/04/25) week temp
  • NIPA 5층 대강당, 12차 Iamroot OT.
  • 개발에 대한 자유토론. (IoT, 3D/4D Printing, 라즈베리파이2, 오드로이드...)
  • 99th (2015/04/19) week 99차
  • 98th (2015/04/11) week 98차
  • 97th (2015/04/04) week 97차
  • 96th (2015/03/28) week 96차
  • start_kernel()->time_init()->clocksource_of_init()->mct_init_spi()->mct_init_dt()->irq_of_parse_and_map()
  • 95th (2015/03/21) week 95차
  • start_kernel()->time_init()->clocksource_of_init()->mct_init_spi()->mct_init_dt()->irq_of_parse_and_map()->of_irq_parse_one()->of_irq_parse_raw()
  • 94th (2015/03/14) week 94차
  • start_kernel()->time_init()->clocksource_of_init()->mct_init_spi()->mct_init_dt()->irq_of_parse_and_map()
  • 93th (2015/03/07) week 93차
  • start_kernel()->time_init()->of_clk_init()
  • start_kernel()->time_init()->clocksource_of_init()->mct_init_spi()->mct_init_dt()->irq_of_parse_and_map()
  • 92th (2015/02/28) week 92차
  • start_kernel()->time_init()->of_clk_init()
  • 91th (2015/02/21) week 91차
  • start_kernel()->time_init()->of_clk_init()
  • 90th (2015/02/07) week 90차
  • start_kernel()->time_init()->of_clk_init()
  • 89th (2015/01/31) week 89차
  • start_kernel()->time_init()->of_clk_init()
  • 88th (2015/01/24) week 88차
  • start_kernel()->time_init()->of_clk_init()
  • 87th (2015/01/17) week 87차
  • start_kernel()->time_init()->of_clk_init()
  • 86th (2015/01/10) week 86차
  • start_kernel()->time_init()->of_clk_init()
  • 85th (2015/01/03) week 85차
  • start_kernel()->time_init()->of_clk_init()
  • 84th (2014/12/27) week 84차
  • start_kernel()->time_init()->of_clk_init()
  • 83th (2014/12/20) week 83차
  • 82th (2014/12/13) week 82차
  • 81th (2014/12/06) week 81차
  • init_IRQ()->...->kfree()
  • 80th (2014/11/29) week 80차
  • init_IRQ()->...->gic_of_init()->gic_of_bases()
  • irqchip_init()
  • 79th (2014/11/22) week 79차
  • init_IRQ()->...->gic_of_init()->gic_of_bases()
  • 78th (2014/11/15) week 78차
  • init_IRQ()->...->gic_of_init()
  • Radix-tree
  • 77th (2014/11/08) week 77차
  • init_IRQ()->...->gic_of_init()
  • 76th (2014/11/01) week 76차
  • init_IRQ()
  • 75th (2014/10/25) week 75차
  • init_IRQ()
  • RBTree 알고리즘 분석
  • 74th (2014/10/18) week 74차
  • init_IRQ()
  • 73th (2014/10/11) week 73차
  • init_IRQ()
  • 72th (2014/10/04) week 72차
  • 71th (2014/09/27) week 71차
  • 70th (2014/09/20) week 70차
  • 69th (2014/09/13) week 69차
  • sched_init()를 계속 분석
  • sched_init()::for_each_possible_cpu(i) { ... }
  • sched_init()->set_load_weight()
  • sched_init()->plist_head_init()
  • sched_init()->init_idle()
  • sched_init()->zalloc_cpumask_var()
  • 68th (2014/08/30) week 68차
  • sched_init()를 계속 분석
  • sched_init()->init_defrootdomain()
  • // def_root_domain의 맴버 값을 초기화 수행
  • sched_init()->init_rt_bandwidth(&def_rt_bandwidth, global_rt_period(), global_rt_runtime());
  • sched_init()::for_each_possible_cpu(i) { ... }
  • 67th (2014/08/23) week 67차
  • mm_init() 복습
  • slub() 복습
  • 66th (2014/08/16) week 66차
  • mm_init() 복습;
  • buddy 까지 복습 (mem_init())
  • 65th (2014/08/09) week 65차
  • start_kernel()-> mm_init()-> vmalloc_init();
  • vmlist에 등록된 vm struct 들을 slab으로 이관하고 RB Tree로 구성
  • 64th (2014/07/26) week 64차
  • start_kernel()-> mm_init()-> kmem_cache_init()
  • start_kernel()-> mm_init()-> percpu_init_late()
  • start_kernel()-> mm_init()-> pgtable_cache_init()
  • 63th (2014/07/19) week 63차
  • mm_init()->kmem_cache_init()->bootstrab(&boot_kmem_cache_node)
  • 62th (2014/07/12) week 62차
  • mm_init()->kmem_cache_init()->bootstrab(&boot_kmem_cache)
  • 61th (2014/07/05) week 61차
  • 60th (2014/06/28) week 60차
  • 59th (2014/06/21) week 59차
  • 58th (2014/06/14) week 58차
  • 57th (2014/06/07) week 57차
  • start_kernel()->mm_init()->kmem_cache_init()->create_boot_cache()
  • slab_state는 slab이 어느정도 활성화 되었는지를 나타낸다.
  • 지금까지 // slab_state: DOWN 에서 분석을 했고,
  • 이제는 slab_state = PARTIAL; 로 바뀌어 분석을 한다.
  • 여기서 // slab_state의 의미는 slab을 초기화한 단계를 의미한다.
  • slab_stat = PARTIAL은 kmem_cache_node만 사용이 가능을 의미한다.
  • 계속해서 slab_stat = PARTIAL로 해서 create_boot_cache를 다시 실행한다.
  • 56th (2014/05/31) week 56차
  • start_kernel()->mm_init()->kmem_cache_init()->create_boot_cache()
  • init_kmem_cache_nodes는 slab으로 사용할 page를 할당받아 설정값(slab_cache, flags, freelist, inuse, frozen)을 바꿔준다.
  • 이후 할당받은 slab object를 kmem_cache_node로 사용하며,
  • kmem_cache_node의 맴버 속성을 초기화합니다.
  • 초기화되는 맴버속성은 (nr_partial, list_lock, slabs, full)가 있습니다.
  • 55th (2014/05/24) week 55차
  • start_kernel()->mm_init()->kmem_cache_init()->create_boot_cache()
  • new_slab()
  • 54th (2014/05/17) week 54차
  • buddy할당자에 이어서 kmem 할당자 (Slub)을 분석중입니다.
  • mem_init()->kmem_cache_init()->create_boot_cache()->__kmem_cache_create() ->kmem_cache_open()->init_kmem_cache_nodes->early_kmem_cache_node_alloc() ->new_slab()->allocate_slab()->alloc_slab_page()->alloc_pages_exact_node() ->__alloc_pages()->__alloc_pages_nodemask();
  • 커널 버전을 3.13.11로 바꿨습니다.
  • 53th (2014/05/10) week 53차
  • 51th (2014/04/19) week 51차
  • 50th (2014/04/12) week 50차
  • 49th (2014/04/05) week 49차
  • 48th (2014/03/29) week 48차
  • 47th (2014/03/22) week 47차
  • 46th (2014/03/15) week 46차

...

  • 23th (2013/09/28) week 23차
  • 22th (2013/09/21) week 22차
  • boot/compressed/head.S
  • kernel/head.S
  • 21th (2013/09/14) week 21차
  • page_address_init()
  • pr_notice()
  • setup_arch()->setup_processor()

...

=======

  • 12th (2013-07-13) week 12차 18+2명
  • 11th (2013-07-06) week 11차 18+2명
  • arch/arm/boot/compressed/head.S 분석
  • _setup_mmu 종료
  • 10th (2013-06-29) week 10차 22명
  • arch/arm/boot/compressed/head.S 분석
  • _setup_mmu 진입직전
  • 09th (2013-06-22) week 09차 25명
  • Arm System Developer's Guide (Ch.14 ~ 끝)
  • arch/arm/boot/compressed/head.S 분석
  • call_cache_fn 진입직전
  • 08th (2013-06-15) week [08차] 21명
  • Arm System Developer's Guide (Ch.09 ~ Ch.14.4 페이지 테이블)
  • 07th (2013-06-08) week [07차] 20명
  • Arm System Developer's Guide (시작 ~ Ch.09 인터럽트 처리방법)
  • 06th (2013-06-01) week [06차]
  • ARM v7 아키텍쳐 세미나
  • 05th (2013-05-25) week [05차]
  • ARM v7 아키텍쳐 세미나
  • 04th (2013-05-18) week [04차] 28명+1 (백창우님)
  • Arm System Developer's Guide (pt자료)
  • 03th (2013-05-11) week [03차] 22명
  • 리눅스 커널 내부구조 (p.150 ~ 끝)
  • 02th (2013-05-04) week [02차] 27명
  • 리눅스 커널 내부구조 (p. 88~ p.150)
  • 01th (2013-04-28) week [01차] 34명
  • 리눅스 커널 내부구조 (처음 ~ p. 88)

About

The Linux Kernel review for ARMv7 3.13.0 (exynos 5420)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published