10차 ARM-C 42주차 스터디 후기입니다.
# 일시 : 2014.02.15 (42주차)
# 장소 : 토즈 타워점
# 스터디 진도 : start_kernel() -> setup_arch() 종료
# 지난 9월 14일에 시작한 setup_arch()가 2월 15일스터디로 만 5개월만에 분석을 끝냈습니다.
# setup_arch의 주요 함수 분석 요약:
setup_processor();
// 각 프로세서에 의존적인 초기화 함수 구조체를 할당하고 현재 cpu에 대한 모드를 스택에 설정함
mdesc = setup_machine_fdt(__atags_pointer);
// dtb에서 memory bank설정, cmd arg 설정, arch type 설정, mdesc 검색.
parse_early_param();
// command arg에서 각 요소들을 파싱하여 early init section으로 설정된 디바이스 초기화.
sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank[0]), meminfo_cmp, NULL);
// page frame number 기준으로 정렬
sanity_check_meminfo();
// memory bank에서 bank하나가 valloc limit 을 넘으면 2개로 쪼갬.bank[0]:low bank[1]:high
arm_memblock_init(&meminfo, mdesc);
// meminfo를 참조하여 메모리 블록 구조체를 초기화
paging_init(mdesc);
// mmu용 page table (pgd, pte)을 생성
// zone 영역 3개로 나누고 각 zone에 해당하는 page를 할당함
unflatten_device_tree();
// device tree를 flat tree에서 실제 tree로 생성
// of_allnodes, of_chosen, of_aliases, aliases_lookup 만들어 줌
arm_dt_init_cpu_maps();
// devtree에 cpu node의 reg 값을 읽어서 cpu_possible_bits, __cpu_logical_map의 값을 업데이트 함
smp_set_ops(mdesc->smp);
// smp_ops: exynos_smp_ops 을 할당
smp_init_cpus();
smp_build_mpidr_hash();
// mpidr_hash 의 cache에 있는 값을 실제 메모리에 반영
# 스터디 log
Updating 24ab35a..1460dc7
Fast-forward
arch/arm/include/asm/bitops.h | 18 +++++++
arch/arm/include/asm/cacheflush.h | 17 ++++++-
arch/arm/include/asm/cputype.h | 21 +++++++++
arch/arm/include/asm/mach/arch.h | 3 +-
arch/arm/include/asm/outercache.h | 1 +
arch/arm/include/asm/prom.h | 3 +-
arch/arm/include/asm/psci.h | 4 +-
arch/arm/include/asm/smp.h | 1 +
arch/arm/include/asm/smp_plat.h | 6 +++
arch/arm/kernel/devtree.c | 28 +++++++++++
arch/arm/kernel/setup.c | 83 +++++++++++++++++++++++++++++----
arch/arm/kernel/smp.c | 7 +++
arch/arm/lib/findbit.S | 2 +
arch/arm/mach-exynos/mach-exynos5-dt.c | 2 +
arch/arm/mach-exynos/platsmp.c | 7 +++
arch/arm/plat-samsung/include/plat/map-base.h | 2 +
arch/arm/plat-samsung/include/plat/map-s5p.h | 6 +++
drivers/of/base.c | 48 +++++++++++++++++--
drivers/of/fdt.c | 2 +
drivers/tty/vt/vt.c | 1 +
drivers/video/console/dummycon.c | 2 +
include/asm-generic/bitops/const_hweight.h | 3 ++
include/linux/bitmap.h | 12 +++++
include/linux/bitops.h | 5 ++
include/linux/compiler.h | 1 +
include/linux/console.h | 1 +
include/linux/cpumask.h | 25 +++++++++-
include/linux/of.h | 16 ++++++-
include/linux/threads.h | 3 ++
include/linux/types.h | 2 +
init/main.c | 3 ++
kernel/cpu.c | 9 +++-
kernel/smp.c | 3 ++
scripts/kconfig/list.h | 3 ++
34 files changed, 329 insertions(+), 21 deletions(-)
# 다음 스터디(43주차)는 mm_init_owner(&init_mm, &init_task);부터 시작하기로 하였습니다.
댓글 없음:
댓글 쓰기