-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Guest pc, lr의 data abort 핸들링 이슈 #244
Comments
오케이. 이건 해결해야하는 문제고 아직 Trap Handler가 다 구현 안되어서 발생하는 문제야. |
미구현이랑 별개의 사항. 버그임 |
원래 ARM VE가 Guest OS의 LR이랑 PC랑 건들필요가 없으니깐 버그가 아닌거 같은데? 어떻게 이게 버그지? |
그리고 누가 PC에 Add 명령어로 접근하나 그게 버그 같음 |
pc 는 제가 쉽게 이해하시라고 쓴거고 직접적인 코드는 라즈비안 커널에 있습니다. LR관련된 문제 사항이었고, lr 처리 문제는 인규형한테 물어보니 인규형도 모니터링 구현 하면서도 생겼던 문제구요. 직접 전화하셔서 확인해보세요. 그리고 hyp_hvc_service()에서 코프로세스나 wfi 처리같은게 미구현 문제지, 지금 data abort 핸들링은 구현되어 있는데 여기서 문제가 생긴건 버그죠. |
오케이 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hyp_hvc_service 루틴에서
srt가 14(lr), 15(pc)인 경우에 대해서 처리가 안 되어 있음.
guest 가 아래 와 같은 어셈블리를 수행하는 중 Data abort 가 발생하면
add pc r0 #(데이타 어보트 주소)
하이퍼바이저가 게스트의 PC, LR 값을 제대로 핸들링 할수 없음.
라즈베리포팅에서 생긴 이슈
enum hyp_hvc_result _hyp_hvc_service(struct arch_regs *regs)
{
,,,,
srt = (iss & ISS_SRT_MASK) >> ISS_SRT_SHIFT;
// 아래코드는 임시방편으로 만든 코드
if (srt == 14)
info.value = &data;
else if (srt == 15)
info.value = &(regs->pc);
else
info.value = &(regs->gpr[srt]);
The text was updated successfully, but these errors were encountered: