1
Lowlevel-Coding / Antw:Herausfinden, ob ein MSR implementiert ist
« am: 19. June 2019, 06:44 »
Genauso habe ich jetzt auch mein konkretes Problem gelöst. War der Weg des geringsten Widerstands.
Die allgemeine Lösung gefällt mir grundsätzlich besser und es müsste auch grundsätzlich mit einem Exception Handler funktionieren.
In grub scheinen keine Exception Handler aktiv zu sein, deswegen scheint ein Zugriff auf einen nicht existierenden MSR einen Triple-Fault und somit einen Reboot auszulösen.
Interessanterweise habe ich festgestellt, dass grub im "git head" seit März die Kommandos "rdmsr" und "wrmsr" auf der grub-Kommandozeilen-Ebene implementiert. Allerdings auch ohne Exception-Handler, statt sogar als "todo" in der Source drin...
Dennoch, wenn ich mal Zeit und Lust hab, versuche ich mal einen Exception-Handler für innerhalb grub zu implementieren...
Übrigens, der Linux-Kernel implementiert folgende Lösung, die ich aber noch nicht wirklich verstanden habe:
https://github.com/torvalds/linux/blob/afe6fe7036c6efdcb46cabc64bec9b6e4a005210/arch/x86/include/asm/msr.h#L137
Die allgemeine Lösung gefällt mir grundsätzlich besser und es müsste auch grundsätzlich mit einem Exception Handler funktionieren.
In grub scheinen keine Exception Handler aktiv zu sein, deswegen scheint ein Zugriff auf einen nicht existierenden MSR einen Triple-Fault und somit einen Reboot auszulösen.
Interessanterweise habe ich festgestellt, dass grub im "git head" seit März die Kommandos "rdmsr" und "wrmsr" auf der grub-Kommandozeilen-Ebene implementiert. Allerdings auch ohne Exception-Handler, statt sogar als "todo" in der Source drin...
Dennoch, wenn ich mal Zeit und Lust hab, versuche ich mal einen Exception-Handler für innerhalb grub zu implementieren...
Übrigens, der Linux-Kernel implementiert folgende Lösung, die ich aber noch nicht wirklich verstanden habe:
https://github.com/torvalds/linux/blob/afe6fe7036c6efdcb46cabc64bec9b6e4a005210/arch/x86/include/asm/msr.h#L137