mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
KVM: selftests: Add and use a helper function for x86's LIDT
Implement a function for setting the IDT descriptor from the guest code. Replace the existing lidt occurrences with calls to this function as `lidt` is used in multiple places. Signed-off-by: Ivan Orlov <iorlov@amazon.com> Link: https://lore.kernel.org/r/20241217181458.68690-7-iorlov@amazon.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
7bd7ff9911
commit
4e9427aeb9
|
|
@ -569,6 +569,11 @@ static inline void set_cr4(uint64_t val)
|
|||
__asm__ __volatile__("mov %0, %%cr4" : : "r" (val) : "memory");
|
||||
}
|
||||
|
||||
static inline void set_idt(const struct desc_ptr *idt_desc)
|
||||
{
|
||||
__asm__ __volatile__("lidt %0"::"m"(*idt_desc));
|
||||
}
|
||||
|
||||
static inline u64 xgetbv(u32 index)
|
||||
{
|
||||
u32 eax, edx;
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ static void guest_code_delete_memory_region(void)
|
|||
* in the guest will never succeed, and so isn't an option.
|
||||
*/
|
||||
memset(&idt, 0, sizeof(idt));
|
||||
__asm__ __volatile__("lidt %0" :: "m"(idt));
|
||||
set_idt(&idt);
|
||||
|
||||
GUEST_SYNC(0);
|
||||
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ static void guest_shutdown_code(void)
|
|||
|
||||
/* Clobber the IDT so that #UD is guaranteed to trigger SHUTDOWN. */
|
||||
memset(&idt, 0, sizeof(idt));
|
||||
__asm__ __volatile__("lidt %0" :: "m"(idt));
|
||||
set_idt(&idt);
|
||||
|
||||
__asm__ __volatile__("ud2");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user