Linux kernel 如何以未使用的x86操作码在linux KVM中实现新指令
作为理解虚拟化的一部分,我试图扩展对KVM的支持,并定义一条新指令。该指令将使用以前未使用的操作码。 ref-ref.x86asm.net/coder32.html 现在,让我们假设一条类似于“CPUID”(导致vm退出)的指令,我想添加一条新指令,比如-“NEWCPUID”,它类似于priviledge中的“CPUID”,被虚拟机监控程序捕获,但在实现上有所不同 在浏览了一些在线资源之后,我能够理解如何定义新的系统调用,但我不确定需要为NEWCPUID添加linux源代码中的哪些文件?有没有比仅仅依靠“查找”命令更好的方法 我面临以下挑战: 1.我需要在linux源代码中的哪些地方添加代码? 2.不确定如何将此新指令映射到以前未使用的操作码Linux kernel 如何以未使用的x86操作码在linux KVM中实现新指令,linux-kernel,virtualization,qemu,kvm,cpuid,Linux Kernel,Virtualization,Qemu,Kvm,Cpuid,作为理解虚拟化的一部分,我试图扩展对KVM的支持,并定义一条新指令。该指令将使用以前未使用的操作码。 ref-ref.x86asm.net/coder32.html 现在,让我们假设一条类似于“CPUID”(导致vm退出)的指令,我想添加一条新指令,比如-“NEWCPUID”,它类似于priviledge中的“CPUID”,被虚拟机监控程序捕获,但在实现上有所不同 在浏览了一些在线资源之后,我能够理解如何定义新的系统调用,但我不确定需要为NEWCPUID添加linux源代码中的哪些文件?有没有比
由于我对这一领域完全陌生,并且愿意学习这一点,有人能简单地向我解释一下如何完成这项任务吗?我需要正确的方向来实现这一目标。如果有一个参考/教程/博客描述这个过程,它将是非常有帮助的 以下是您的一些问题的答案:
我故意跳过一些问题,因为我认为这些问题在学习过程中是很重要的。顺便说一句,我不认为这不是理解虚拟化的最佳方式。更好的方法可能是编写自己的用户空间管理程序,通过/dev/kvm或一个独立的管理程序来使用kvm服务 以下是您的一些问题的答案:
我故意跳过一些问题,因为我认为这些问题在学习过程中是很重要的。顺便说一句,我不认为这不是理解虚拟化的最佳方式。更好的方法可能是编写自己的用户空间管理程序,通过/dev/kvm或一个独立的管理程序来使用kvm服务 等等,好吧,KVM实际上没有做任何仿真。您如何建议添加“新指令”?你是想用一个无效的操作码来触发CPU异常吗?我想他说的是,毕竟你还是要处理特权指令。不确定这个错误是否也适用于“标准”非法操作码捕获。等等,好了,KVM实际上没有做任何仿真。您如何建议添加“新指令”?你是想用一个无效的操作码来触发CPU异常吗?我想他说的是,毕竟你还是要处理特权指令。不确定这种错误是否也适用于“标准”非法操作码捕获。