gpt4 book ai didi

linux - 将函数指针从内核驱动程序传递到管理程序

转载 作者:太空狗 更新时间:2023-10-29 11:22:23 25 4
gpt4 key购买 nike

我正在尝试使用 SMC 调用将函数指针从 EL1(Android 内核)传递到 EL2(管理程序),并在管理程序中捕获 SMC 调用。我知道仅将指针传递给 Hypervisor 是行不通的,因为它是一个 VA,对 Hypervisor 没有任何意义。

关于如何做有什么意见吗?我基本上想从 EL2 而不是 EL1 调用该函数。

我的猜测是我可能需要使用 ionic 存储器或者可能需要转换 VA -> IPA/PA

感谢任何帮助或指点,谢谢!

最佳答案

通常,您不希望保留 以这种方式传递的指针。最好传递一个缓冲区索引并将其复制到监视器部分。如果正常操作系统恢复,指向内存的指针可能会改变,这会导致各种溢出和避免条件检查。

因此,如果可能的话,按值传递信息通常会更好。如果必须传递缓冲区,最好在正常世界和安全世界之间共享的内存中使用一些无锁结构。缓冲区是固定的和索引的。 SMC 调用是为了让安全世界了解状态变化。它复制缓冲区并更新共享内存中的结构以表明它是空闲的。然后在私有(private)副本中验证缓冲区并对其进行操作。

通常,作用于 normal world address这不是一个好主意。这是非常容易出错的,应该避免。这就是微内核使用一直复制缓冲区的消息传递的原因。

关于linux - 将函数指针从内核驱动程序传递到管理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com