[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/entry: replace two GET_CURRENT() uses
commit e047b8d0fa05c6c051ad6e4f5ff6e0fe426965b3 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Jan 25 16:10:58 2024 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Jan 25 16:10:58 2024 +0100 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@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/x86_64/asm-offsets.c | 1 + xen/arch/x86/x86_64/entry.S | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c index 57b73a4e62..f9546ec60b 100644 --- a/xen/arch/x86/x86_64/asm-offsets.c +++ b/xen/arch/x86/x86_64/asm-offsets.c @@ -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); diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index c3f6b667a7..5dab3e4832 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -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 -- generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |