mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +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");
|
__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)
|
static inline u64 xgetbv(u32 index)
|
||||||
{
|
{
|
||||||
u32 eax, edx;
|
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.
|
* in the guest will never succeed, and so isn't an option.
|
||||||
*/
|
*/
|
||||||
memset(&idt, 0, sizeof(idt));
|
memset(&idt, 0, sizeof(idt));
|
||||||
__asm__ __volatile__("lidt %0" :: "m"(idt));
|
set_idt(&idt);
|
||||||
|
|
||||||
GUEST_SYNC(0);
|
GUEST_SYNC(0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ static void guest_shutdown_code(void)
|
||||||
|
|
||||||
/* Clobber the IDT so that #UD is guaranteed to trigger SHUTDOWN. */
|
/* Clobber the IDT so that #UD is guaranteed to trigger SHUTDOWN. */
|
||||||
memset(&idt, 0, sizeof(idt));
|
memset(&idt, 0, sizeof(idt));
|
||||||
__asm__ __volatile__("lidt %0" :: "m"(idt));
|
set_idt(&idt);
|
||||||
|
|
||||||
__asm__ __volatile__("ud2");
|
__asm__ __volatile__("ud2");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user