Memory management Linux IOEM保护

Memory management Linux IOEM保护,memory-management,linux-kernel,linux-device-driver,Memory Management,Linux Kernel,Linux Device Driver,我想保护对一个外围寄存器空间的访问 所以我想映射外围内存并在其上创建写保护 因此,任何想要访问的人都必须调用一个公共函数,在这个函数中,它将授予对该内存的写入权限 如何在linux内核中实现这一点 没有人将从用户空间访问该内存,只有不同的驱动程序将访问该寄存器空间。所以所有的驱动程序都应该调用这个公共函数。如果他们试图直接访问内存,它应该陷阱吗 问候,, Kalpesh Bafna如果您的意思是要阻止所有内核代码写入特定的硬件寄存器:我认为这是不可能做到的。内核空间代码可以完全访问所有硬件。即使

我想保护对一个外围寄存器空间的访问

所以我想映射外围内存并在其上创建写保护

因此,任何想要访问的人都必须调用一个公共函数,在这个函数中,它将授予对该内存的写入权限

如何在linux内核中实现这一点

没有人将从用户空间访问该内存,只有不同的驱动程序将访问该寄存器空间。所以所有的驱动程序都应该调用这个公共函数。如果他们试图直接访问内存,它应该陷阱吗

问候,,
Kalpesh Bafna

如果您的意思是要阻止所有内核代码写入特定的硬件寄存器:我认为这是不可能做到的。内核空间代码可以完全访问所有硬件。即使一个字节的内存没有映射,几乎任何内核代码都可以简单地映射它,然后访问它

这通常不会导致问题,因为每一段内核代码都只关心自己的问题;它不必寻找其他问题

您可能希望使用标准Linux驱动程序模型实现一个驱动程序,其中控制外围硬件的代码像总线驱动程序一样编写,其所有客户机都向总线驱动程序注册


这不会阻止直接访问,但如果您使编写客户端驱动程序更容易使用您的服务,特别是如果它可以防止bug和崩溃,这应该足以成为保证硬件安全的人为因素。

是否愿意分享您迄今为止所做的尝试?。。。