[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] x86: fix placement of ecrit labels


  • To: xen-changelog@xxxxxxxxxxxxxxxxxxx
  • From: Xen patchbot-linux-2.6.18-xen <patchbot@xxxxxxx>
  • Date: Tue, 02 Jun 2015 14:22:04 +0000
  • Delivery-date: Tue, 02 Jun 2015 14:22:11 +0000
  • List-id: "Change log for Mercurial \(receive only\)" <xen-changelog.lists.xen.org>

# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxx>
# Date 1433254422 -7200
# Node ID 8f6b99f4c45fbee6c5911fbd0835353b9de1fdeb
# Parent  a429985613f2ad6739ddbd44eb296954678b78ce
x86: fix placement of ecrit labels

On the 32-bit side, they must go ahead of TRACE_IRQS_OFF. On the 64-bit
side it was placed way too late (but isn't being used, so this was only
a latent issue). Also rename the labels to be local ones.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---


diff -r a429985613f2 -r 8f6b99f4c45f arch/i386/kernel/entry-xen.S
--- a/arch/i386/kernel/entry-xen.S      Tue Jun 02 16:10:19 2015 +0200
+++ b/arch/i386/kernel/entry-xen.S      Tue Jun 02 16:13:42 2015 +0200
@@ -362,14 +362,14 @@ 1:        movl (%ebp),%ebp
 #ifdef CONFIG_XEN
        TRACE_IRQS_ON
        __ENABLE_INTERRUPTS
-sysexit_scrit: /**** START OF SYSEXIT CRITICAL REGION ****/
+.Lsysexit_scrit: /**** START OF SYSEXIT CRITICAL REGION ****/
        __TEST_PENDING
        jnz  14f                        # process more events if necessary...
        movl ESI(%esp), %esi
        sysexit
 14:    __DISABLE_INTERRUPTS
+.Lsysexit_ecrit: /**** END OF SYSEXIT CRITICAL REGION ****/
        TRACE_IRQS_OFF
-sysexit_ecrit: /**** END OF SYSEXIT CRITICAL REGION ****/
        push %esp
        call evtchn_do_upcall
        add  $4,%esp
@@ -518,7 +518,7 @@ 1:  iret
 restore_all_enable_events:
        TRACE_IRQS_ON
        __ENABLE_INTERRUPTS
-scrit: /**** START OF CRITICAL REGION ****/
+.Lscrit: /**** START OF CRITICAL REGION ****/
        __TEST_PENDING
        jnz  14f                        # process more events if necessary...
        RESTORE_REGS
@@ -530,8 +530,8 @@ 1:  iret
        .long 1b,iret_exc
 .previous
 14:    __DISABLE_INTERRUPTS
+.Lecrit: /**** END OF CRITICAL REGION ****/
        TRACE_IRQS_OFF
-ecrit:  /**** END OF CRITICAL REGION ****/
        jmp  .Ldo_upcall
 
        CFI_RESTORE_STATE
@@ -793,15 +793,15 @@ ENTRY(hypervisor_callback)
        testb $2,CS(%esp)
        movl EIP(%esp),%eax
        jnz  .Ldo_upcall
-       cmpl $scrit,%eax
+       cmpl $.Lscrit,%eax
        jb   0f
-       cmpl $ecrit,%eax
+       cmpl $.Lecrit,%eax
        jb   critical_region_fixup
 0:
 #ifdef CONFIG_XEN_SUPERVISOR_MODE_KERNEL
-       cmpl $sysexit_scrit,%eax
+       cmpl $.Lsysexit_scrit,%eax
        jb   .Ldo_upcall
-       cmpl $sysexit_ecrit,%eax
+       cmpl $.Lsysexit_ecrit,%eax
        ja   .Ldo_upcall
        addl $OLDESP,%esp               # Remove eflags...ebx from stack frame.
 #endif
@@ -822,7 +822,7 @@ 0:
 # provides the number of bytes which have already been popped from the
 # interrupted stack frame.
 critical_region_fixup:
-       movsbl critical_fixup_table-scrit(%eax),%ecx # %ecx contains num slots 
popped
+       movsbl critical_fixup_table-.Lscrit(%eax),%ecx # %ecx contains num 
slots popped
        testl %ecx,%ecx
        leal (%esp,%ecx,4),%esi         # %esi points at end of src region
        leal OLDESP(%esp),%edi          # %edi points at end of dst region
diff -r a429985613f2 -r 8f6b99f4c45f arch/x86_64/kernel/entry-xen.S
--- a/arch/x86_64/kernel/entry-xen.S    Tue Jun 02 16:10:19 2015 +0200
+++ b/arch/x86_64/kernel/entry-xen.S    Tue Jun 02 16:13:42 2015 +0200
@@ -945,7 +945,7 @@ restore_all_enable_events:
        TRACE_IRQS_ON
        XEN_UNBLOCK_EVENTS(%rsi)        # %rsi is already set up...
 
-scrit: /**** START OF CRITICAL REGION ****/
+.Lscrit: /**** START OF CRITICAL REGION ****/
        XEN_TEST_PENDING(%rsi)
        CFI_REMEMBER_STATE
        jnz  14f                        # process more events if necessary...
@@ -955,12 +955,12 @@ scrit:    /**** START OF CRITICAL REGION **
         
        CFI_RESTORE_STATE
 14:    XEN_LOCKED_BLOCK_EVENTS(%rsi)
+.Lecrit: /**** END OF CRITICAL REGION ****/
        XEN_PUT_VCPU_INFO(%rsi)
        SAVE_REST
         movq %rsp,%rdi                  # set the argument again
        jmp  11b
        CFI_ENDPROC
-ecrit:  /**** END OF CRITICAL REGION ****/
 # At this point, unlike on x86-32, we don't do the fixup to simplify the 
 # code and the stack frame is more complex on x86-64.
 # When the kernel is interrupted in the critical section, the kernel 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.