인프런 커뮤니티 질문&답변

민동열님의 프로필 이미지
민동열

작성한 질문수

Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]

EL1 IRQ??

작성

·

187

0

안녕하세요! 강의 정말 잘 듣고 있습니다.

궁금한 사항이 있어 문의 남깁니다. 강의 중간에 "EL1의 guest OS가 처리해야하는 irq를 Hypervisor에서 hooking을 해서 처리하게 할 수 있다" 라고 하셨는데요, EL1의 irq라는게 무슨 뜻인가요??? 제가 이해하기로는 EL1에서 코드가 수행하고 있을때 irq가 발생하는걸 뜻하느거 같습니다. 제가 이해한게 맞나요??

아니면 irq마다 EL1 irq EL2 irq와 같이 처리해야하는 EL이 정해져있나요???

답변 3

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

질문 주신 내용에 대해 추가로 더 자세히 설명을 드리기 위해 영상을 제작했는데요.

아래 위치에서 확인하실 수 있습니다.

'Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]'

섹션 6: 수강생 Q/A: 설명

Q1) Trusted app의 구체적인 예시가 궁금합니다.

감사합니다.

0

민동열님의 프로필 이미지
민동열
질문자

안녕하세요 친절한 답변 감사드립니다.
수업을 들으면서 한가지 더 의문이 있었습니다.
secure 영역 설명하실때, "secure 영역의 EL1에는 Trusted OS, EL0에는 Trusted app이 실행된다" 라고 말씀을 하셨고, Trutsed OS는 몇가지 예시(안드로이드의 Trusty OS 등등)를 들어주셨습니다.
그런데 Trusted app은 뭔가요?? 구체적인 예시를 들어주실 수 있나요???

Trusted app이라는게 Trusty OS와 SoC벤더나 팹리스에서 만들어서 제공하는 어플리케이션인지 아니면 은행 앱이나 카카오톡같이 일반 어플리케이션인지 헷갈립니다.

제가 생각하기에 은행 앱은 일단은 Normal world에서 실행이 되다가 본인인증 같은걸 해야할때는 secure 영역의 Trusted OS에서 처리를 하고 다시 노말 월드로 돌아와서 실행을 하는것 같은데 맞나요??

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

질문주신 내용은 설명드릴 콘텐츠가 너무 많아 따로 영상을 제작해서 (본 강의에 추가) 답신 드리겠습니다. 2~3일만 기다려주세요.

감사합니다.

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

질문 주신 내용에 대해 더 자세히 설명을 드리기 위해 영상을 제작했는데요.

아래 위치에서 확인하실 수 있습니다.

'Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]'

섹션 6: 수강생 Q/A: 설명

Q1) Trusted app의 구체적인 예시가 궁금합니다.

감사합니다.

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

질문 주신 내용에 대해 답신 드립니다.

(1) IRQ를 EL2에서 후킹

여기서 말하는 IRQ는 외부 페리퍼럴 디바이스에서 유발되는 인터럽트를 뜻합니다.

IRQ를 EL2에서 후킹하는 동작이 비활성화된 상태와 활성화된 상태를 비교해서 설명드리면 다음과 같습니다.

[비활성화]

1. EL1(리눅스 커널: 게스트 OS)에서 코드가 실행

2. 외부 페리퍼럴에서 인터럽트가 유발

3. EL1에 있는 익셉션 핸들러에서 인터럽트를 핸들링

[활성화]

1. EL1(리눅스 커널: 게스트 OS)에서 코드가 실행

2. 외부 페리퍼럴에서 인터럽트가 유발

3. EL1 대신 EL2(하이퍼바이저)에 있는 익셉션 핸들러에서 인터럽트를 핸들링

 

(2) irq마다 EL1 irq EL2 irq와 같이 처리해야하는 EL이 정해져있나

시스템에서 각각 인터럽트는 프로젝트의 스펙에 따라 각각 다른 방식으로 설정할 수 있습니다.

만약 휴대폰에 터치 인터럽트, 조도 센서 인터럽트, 지문 센서 인터럽트 그리고 카메라 인터럽트가 있으면, 각기 다른 방식으로 설정할 수 있습니다. 예시는 다음과 같습니다.

터치 인터럽트, 조도 센서: EL1, 지문 센서 인터럽트: EL3, 카메라 인터럽트: EL2

설명드린 내용을 조금 더 일반화해서 다음과 같이 정리할 수 있습니다.

A) 일반적으로 인터럽트가 유발되면 EL1에서 받아서 처리한다.

B) 특정 인터럽트를 EL2나 EL3에서 처리하고 싶으면 관련 레지스터 HCR_EL2, SCR_EL3를 설정해야 한다.

 

추가로 궁금한 점이 있으면 언제든 질문 남겨주세요.

감사합니다.

민동열님의 프로필 이미지
민동열

작성한 질문수

질문하기