x86/entry: replace two GET_CURRENT() uses

Now that we have %r14 set up using GET_STACK_END() in a number of
places, in two places we can eliminate the redundancy of GET_CURRENT()
also invoking that macro. In handle_ist_exception() actually go a step
farther and avoid using %rbx altogether when retrieving the processor
ID: Obtain the current vCPU pointer only in the PV32-specific code
actually needing it.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
Jan Beulich committed 2024-01-25 16:10:58 +01:00
1 parent f575f05524
commit e047b8d0fa
2 files changed
+4 -3

No files matched your search

+1
View File
@@ -118,6 +118,7 @@ void __dummy__(void)
#endif
OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
OFFSET(CPUINFO_processor_id, struct cpu_info, processor_id);
OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
+3 -3
View File
@@ -749,7 +749,7 @@ FUNC(handle_exception, 0)
.Lxcpt_cr3_okay:
handle_exception_saved:
GET_CURRENT(bx)
mov STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
jz exception_with_ints_disabled
@@ -1130,9 +1130,8 @@ FUNC(handle_ist_exception)
#ifdef CONFIG_PV
testb $3,UREGS_cs(%rsp)
jz restore_all_xen
GET_CURRENT(bx)
/* Send an IPI to ourselves to cover for the lack of event checking. */
movl VCPU_processor(%rbx),%eax
mov STACK_CPUINFO_FIELD(processor_id)(%r14), %eax
shll $IRQSTAT_shift,%eax
leaq irq_stat+IRQSTAT_softirq_pending(%rip),%rcx
cmpl $0,(%rcx,%rax,1)
@@ -1141,6 +1140,7 @@ FUNC(handle_ist_exception)
call send_IPI_self
1:
#ifdef CONFIG_PV32
mov STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
movq VCPU_domain(%rbx),%rax
cmpb $0,DOMAIN_is_32bit_pv(%rax)
je restore_all_guest
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.