kvm 소스의 특정 gfn에서 "read"를 잡을 방법을 찾고 있습니다.spte를 매핑 해제하는 방법?
PT_WRITABLE_MASK를 사용하여 쓰기 비트를 뒤집어서 지정된 페이지에 대한 쓰기 권한을 제거하는 것처럼 보입니다. 따라서 트래핑은 씁니다.
rmap_write_protect(kvm, gfn) --> kvm_mmu_rmap_write_protect(kvm, gfn, slot)
트래핑 읽기의 경우 해당 플래그 PM_PRESENT_MASK가 표시됩니다. 따라서 아마도 한 가지 방법은 위와 비슷한 wrapper 루틴을 작성하여 read (present)와 write bits를 뒤집을 수 있습니다. 아니면 단지 아래 함수를 사용하여 spte를 삭제할 수 있을까요? drop_spte()
위의 방법 중 하나를 사용한 후에 kvm_flush_remote_tlbs()가 필요합니까?
문제에 대해 더 알아 보았습니까? 진전이 있었다면 질문을 업데이트하는 것이 좋은 생각 일 수 있습니다. 당신이 제안한 다양한 접근 방법을 시도해 보셨습니까? 작은 테스트를 통해 다른 사람들이 당신을 도울 수 있습니다. 마지막으로 몇 가지 질문이있는 것 같습니다. 그냥 하나만 좁힐 수 있니? –