Guillermo Austin Kim

Sources

Posts

998 posts

[커널크래시] 인터럽트 컨텍스트에서 wake_up_interruptible 대신 wake_up_locked 사용

Guillermo Austin Kim|2022년 1월 5일

인터럽트 컨텍스트에서 슬립을 지원하는 커널 함수를 호출하면 어떻게 동작할까요? 커널 패닉이 유발됩니다.이번에는 인터럽트 컨텍스트에서 발생한 커널 패닉 이슈를 소개합니다. 먼저 커널 로그를 소개합니다. [1.538173] BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:973[1.577234] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/3[1.578316] Preemption disabled at:[1.597859] CPU: 3 PID: 0 Comm: swapper/3 [1.617377] Hardware name: rpi[1.6

[Arm프로세서] 트러스트존(TrustZone): 시큐어 상태(Secure State)와 SCR_EL3 레지스터란

Guillermo Austin Kim|2022년 1월 4일

이전 포스트에서 소개했듯이 트러스트존 아키텍처 관점으로 보면 시큐어 상태와 논 시큐어 상태가 존재합니다. 일반적으로 우리가 알고 있는 유저 애플리케이션이나 운영체제 커널은 논 시큐어 상태에서 동작한다고 볼 수 있습니다. 그렇다면 각 익셉션 레벨 별로 현재 시큐어 상태인지 아닌지는 어떻게 알 수 있을까요? 바로 SCR_ELx 레지스터의 값을 통해 알 수 있습니다. [정보]SCR_ELx에서 보이는 ELx는 익셉션 레벨을 뜻하면 EL0--EL3까지를 뜻합니다. SCR_ELx 레지스터는 EL3에서만 변경하거나 접근할 수 있습니다. 다음은 EL3에서만 접근할 수 있는 SCR_EL3 레지스터의 다이어그램입니다. 그림 11.7 SCR_EL3 레지스터의 Bit Assignment SCR 레지스터의 맵을 보면

[Arm프로세서] 트러스트존(TrustZone): 익셉션 레벨과 시큐어 모드와의 관계

Guillermo Austin Kim|2022년 1월 3일

트러스트존은 실행 흐름은 시큐워 월드와 논 시큐어 월드로 분류할 수 있는데, 시큐워 월드에 보안성의 수준을 높인 Trusted OS를 구현합니다. 그런데 세세한 트러스트존의 설계 방식은 Arm 아키텍처마다 약간 다릅니다. 이는 Armv8 아키텍처에도 적용됩니다. 다음 그림을 보면서 Armv8 아키텍처의 트러스트존을 알아봅시다. 그림 11.6 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드 위 그림은 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드가 처리되는 흐름을 나타냅니다. 그림의 가장 왼쪽 부분을 보면 EL0-EL3이 보입니다. 이는 익셉션 레벨을 의미하는데, Armv8 아키텍처에서는 익셉션 레벨을 기준으로 익셉션이 처리되고 실행 권한이 관리됩니다. 그림의 왼쪽 상단에는 논 시큐어

[Arm프로세서] 트러스트존(TrustZone): 시큐어 월드의 익셉션 벡터 핸들러 구현

Guillermo Austin Kim|2022년 1월 2일

Armv7 아키텍처에서 트러스트존의 기능을 제대로 활용하려면 3개의 익셉션 벡터 핸들러가 구현돼 있어야 합니다. 이 내용을 다음 그림을 보면서 알아봅시다. 그림 11.5 시큐어 월드와 연관된 익셉션 벡터의 위치 먼저 그림의 가장 왼쪽 윗 부분에 있는 VBAR(NS)는 논 시큐어 상태에서 정의된 익셉션 벡터의 베이스 주소를 나타냅니다. 트러스트존의 개념을 배제하고 익셉션 벡터를 떠올리면 이 부분이 익셉션 벡터의 베이스 주소인 것입니다. 이번에는 왼쪽 아랫 부분에 보이는 MVBAR(NS)는 모니터 모드에서 처리되는 익셉션 벡터이 베이스 주소를 나타냅니다. 논 시큐어 상태에서 smc 명령어를 실행하면 MVBAR(NS) 주소에 +0x8을 더한 주소로 프로그램 카운터가 브랜치됩니다. 마지막으로 가장 오른쪽에

[오제이튜브] 인터뷰#1: 오픈 소스 배포하면 뭐가 남나요?

Guillermo Austin Kim|2021년 12월 31일

오제이 튜브(유튜브)에서 인터뷰한 동영상(인터뷰#1)이 올라 왔습니다. 리눅스 커널이 오픈 소스로 어떻게 진행되는지 궁금하신 분은 참고하세요.