[커널 17차] 51주차
2021.08.21 23:31
kasan_init_tags()
- for_each_possible_cpu() 매크로로 모든 possible cpu에 대해서 iteration 하면서 get_cycles() 함수로 현재 timer cycle 값을 읽어와서 percpu 변수인 prng_state에 저장한다
- 강력한 randomness는 비싸므로 적당한 pseudo-random number를 사용한다
- percpu를 setup을 안했는데 possible cpu에 대해서 percpu 변수를 업데이트하는 것은 의미가 없어 보임
get_cycles()
- 매크로로 arch_timer_read_counter()로 정의되어 있다
arch_timer_read_counter()
- CONFIG_ARM_ARCH_TIMER가 정의되어 있는 경우 함수 포인터 arch_timer_read_counter로 정의된다
- drivers/clocksource/arm_arch_timer.c 179 line에서 함수 arch_counter_get_cntvct()로 정의된다
arch_counter_get_cntvct()
- __arch_counter_get_cntvct() 함수로 정의됨
__arch_counter_get_cntvct()
- isb()로 배리어 수행
- cntvct_el0 레지스터 값을 읽어서 리턴
- 마지막에 함수 arch_counter_enforce_ordering()로 ordering을 강제함
- 최근에는 이 함수 대신 isb() 사용하는 패치를 올렸는데 반영은 안된듯함
- isb()가 비싸서 더 빠른 방법을 고수하기를 원하는 듯
- https://www.spinics.net/lists/arm-kernel/msg885662.html
- https://elixir.bootlin.com/linux/v5.14-rc6/source/arch/arm64/include/asm/arch_timer.h
- ARMv8 Generic Counter : CNTFRQ_EL0가 주파수를 나타내며 보통 부트로더나 EL3 펌웨어가 설정한다
- https://community.arm.com/developer/ip-products/processors/f/cortex-a-forum/46679/can-i-change-the-frequency-of-the-generic-timer-in-armv8
setup_arch()
- CONFIG_ARM64_SW_TTBR0_PAN on인 경우 init_task.thread_info.ttbr0 를 NULL 페이지로 만들어서 커널에서 user 영역 접근을 차단한다
- 부트로더가 커널에 넘겨준 x0, x1, x2, x3 중에 x1, x2, x3가 NULL이 아니면 경고를 출력한다
- setup_arch() 종료
나머지 시간은 head.S에서 시작하여 setup_machine_fdt()까지 복습
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 스터디 정리 노트 공간입니다. | woos | 2016.05.14 | 623 |
85 | [커널 17차] 52주차 | JSYoo5B | 2021.09.04 | 55 |
» | [커널 17차] 51주차 | ㅇㅇㅇ | 2021.08.21 | 210 |
83 | [커널 17차] 50주차 | ㅇㅇㅇ | 2021.08.15 | 173 |
82 | [커널 17차] 49주차 | ㅇㅇㅇ | 2021.08.07 | 216 |
81 | [커널 17차] 48주차 | ㅇㅇㅇ | 2021.08.01 | 168 |
80 | [커널 18차] 9주차 | Runixs | 2021.07.29 | 258 |
79 | [커널 17차] 47주차 | ㅇㅇㅇ | 2021.07.24 | 83 |
78 | [커널 18차] 8주차 | Runixs | 2021.07.22 | 168 |
77 | [커널 17차] 46주차 | ㅇㅇㅇ | 2021.07.18 | 60 |
76 | [커널 18차] 7주차 | Runixs | 2021.07.12 | 129 |
75 | [커널 17차] 45주차 | ㅇㅇㅇ | 2021.07.10 | 127 |
74 | [커널 17차] 44주차 | ㅇㅇㅇ | 2021.07.04 | 76 |
73 | [커널 18차] 6주차 | V4bel | 2021.07.03 | 75 |
72 | [커널 17차] 43주차 | ㅇㅇㅇ | 2021.06.27 | 139 |
71 | [커널 18차] 5주차 | V4bel | 2021.06.26 | 102 |
70 | [커널 17차] 42주차 | ㅇㅇㅇ | 2021.06.20 | 296 |
69 | [커널 18차] 4주차 | V4bel | 2021.06.19 | 92 |
68 | [커널 17차] 41주차 | ㅇㅇㅇ | 2021.06.13 | 36535 |
67 | [커널 18차] 3주차 | V4bel | 2021.06.12 | 103 |
66 | [커널 17차] 40주차 | ㅇㅇㅇ | 2021.06.05 | 283 |
.