Linux kernel 如何在不导致系统冻结的情况下修改MSRlstar寄存器

Linux kernel 如何在不导致系统冻结的情况下修改MSRlstar寄存器,linux-kernel,cpu,system-calls,kernel-module,Linux Kernel,Cpu,System Calls,Kernel Module,我开发了一个内核模块,以便设置另一个syscall_64 trampoline。为了做到这一点,我必须用蹦床的地址更改MSRlstar寄存器的值。 我试图通过on_each_cpu函数和wrmsrl函数更改所有可用cpu上的MSR_LSTAR寄存器值 这会导致我的系统冻结/挂起,因此我必须强制关闭电源,然后重新启动 此操作不会生成日志,也不会导致内核死机 我还尝试将MSRlstar更改为0,以使每个用户任务都因此崩溃,但系统冻结,没有日志,没有恐慌 我在装有linux-kernel-5.0.11

我开发了一个内核模块,以便设置另一个syscall_64 trampoline。为了做到这一点,我必须用蹦床的地址更改MSRlstar寄存器的值。 我试图通过on_each_cpu函数和wrmsrl函数更改所有可用cpu上的MSR_LSTAR寄存器值

这会导致我的系统冻结/挂起,因此我必须强制关闭电源,然后重新启动

此操作不会生成日志,也不会导致内核死机

我还尝试将MSRlstar更改为0,以使每个用户任务都因此崩溃,但系统冻结,没有日志,没有恐慌

我在装有linux-kernel-5.0.11和amd-a6处理器arch:x86_64的联想IdeaPad 330上测试了它

有人有什么建议吗