search for: sti_sysexit

Displaying 20 results from an estimated 27 matches for "sti_sysexit".

2007 Apr 18
1
[PATCH 1/2] Transparent entry.S IRQ holdoff handling
...as a virtual interrupt mask) is required to be compatible with this requirement. This makes maintenance of the code in entry.S much more easy, and eliminates some very tricky code changes that would otherwise be required. CLI/STI/IRET may all assume a 32 bit flat stack for writing to data areas. STI_SYSEXIT is macroized together because it implicitly relies on the interrupt holdoff property of STI. The IRET from a 16-bit stack must be marked explicitly as IRET16, because at this point there are no flat data segments loaded. It is expected that the IRET translation for a hypervisor will need to acces...
2007 Apr 18
1
[PATCH 1/2] Transparent entry.S IRQ holdoff handling
...as a virtual interrupt mask) is required to be compatible with this requirement. This makes maintenance of the code in entry.S much more easy, and eliminates some very tricky code changes that would otherwise be required. CLI/STI/IRET may all assume a 32 bit flat stack for writing to data areas. STI_SYSEXIT is macroized together because it implicitly relies on the interrupt holdoff property of STI. The IRET from a 16-bit stack must be marked explicitly as IRET16, because at this point there are no flat data segments loaded. It is expected that the IRET translation for a hypervisor will need to acces...
2007 Apr 18
1
[RFC, PATCH 8/24] i386 Vmi syscall assembly
..._esp: jae syscall_badsys call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) - cli + CLI movl TI_flags(%ebp), %ecx testw $_TIF_ALLWORK_MASK, %cx jne syscall_exit_work @@ -217,8 +218,7 @@ sysenter_past_esp: movl EIP(%esp), %edx movl OLDESP(%esp), %ecx xorl %ebp,%ebp - sti - sysexit + STI_SYSEXIT # system call handler stub @@ -236,7 +236,7 @@ syscall_call: call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) # store the return value syscall_exit: - cli # make sure we don't miss an interrupt + CLI # make sure we don't miss an interrupt # setting need_resched or s...
2007 Apr 18
1
[RFC, PATCH 8/24] i386 Vmi syscall assembly
..._esp: jae syscall_badsys call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) - cli + CLI movl TI_flags(%ebp), %ecx testw $_TIF_ALLWORK_MASK, %cx jne syscall_exit_work @@ -217,8 +218,7 @@ sysenter_past_esp: movl EIP(%esp), %edx movl OLDESP(%esp), %ecx xorl %ebp,%ebp - sti - sysexit + STI_SYSEXIT # system call handler stub @@ -236,7 +236,7 @@ syscall_call: call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) # store the return value syscall_exit: - cli # make sure we don't miss an interrupt + CLI # make sure we don't miss an interrupt # setting need_resched or s...
2007 Apr 18
4
[RFC, PATCH 3/24] i386 Vmi interface definition
..._UINT16 gs; + VMI_UINT16 ldtr; + + VMI_UINT16 gdtr_limit; + VMI_UINT32 gdtr_base; + VMI_UINT32 idtr_base; + VMI_UINT16 idtr_limit; +} APState; + +// Historical 3.X revisions +//#define MIN_VMI_API_REV_MINOR 1 /* GetFlags_CLI is used */ +//#define MIN_VMI_API_REV_MINOR 2 /* STI_SYSEXIT is used */ +//#define MIN_VMI_API_REV_MINOR 3 /* IN/OUT are used */ +//#define MIN_VMI_API_REV_MINOR 4 /* Deferred calls used */ +//#define MIN_VMI_API_REV_MINOR 5 /* SetIOPLMask is used */ + +// 4.X revisions +//#define MIN_VMI_API_REV_MINOR 0 /* IN/OUT binary compat */ + +// 5.X...
2007 Apr 18
4
[RFC, PATCH 3/24] i386 Vmi interface definition
..._UINT16 gs; + VMI_UINT16 ldtr; + + VMI_UINT16 gdtr_limit; + VMI_UINT32 gdtr_base; + VMI_UINT32 idtr_base; + VMI_UINT16 idtr_limit; +} APState; + +// Historical 3.X revisions +//#define MIN_VMI_API_REV_MINOR 1 /* GetFlags_CLI is used */ +//#define MIN_VMI_API_REV_MINOR 2 /* STI_SYSEXIT is used */ +//#define MIN_VMI_API_REV_MINOR 3 /* IN/OUT are used */ +//#define MIN_VMI_API_REV_MINOR 4 /* Deferred calls used */ +//#define MIN_VMI_API_REV_MINOR 5 /* SetIOPLMask is used */ + +// 4.X revisions +//#define MIN_VMI_API_REV_MINOR 0 /* IN/OUT binary compat */ + +// 5.X...
2007 Apr 18
1
[PATCH 2/2] Transparent privilege levels in entry.S
...============================================= --- linux-2.6.13.orig/include/asm-i386/mach-default/mach_asm.h 2005-08-17 11:17:09.000000000 -0700 +++ linux-2.6.13/include/asm-i386/mach-default/mach_asm.h 2005-08-17 11:17:13.000000000 -0700 @@ -7,5 +7,6 @@ #define CLI cli #define STI sti #define STI_SYSEXIT sti; sysexit +#define MASK_RPL(seg) /* nop */ #endif
2007 Apr 18
1
[PATCH 2/2] Transparent privilege levels in entry.S
...============================================= --- linux-2.6.13.orig/include/asm-i386/mach-default/mach_asm.h 2005-08-17 11:17:09.000000000 -0700 +++ linux-2.6.13/include/asm-i386/mach-default/mach_asm.h 2005-08-17 11:17:13.000000000 -0700 @@ -7,5 +7,6 @@ #define CLI cli #define STI sti #define STI_SYSEXIT sti; sysexit +#define MASK_RPL(seg) /* nop */ #endif
2007 Apr 18
2
[PATCH 1/3] Paravirtualization: Kernel Ring Cleanups
Hi all, I've been looking at finding common ground between the VMI, Xen and other paravirtualization approaches, and after some discussion, we're getting somewhere. These first two patches are the fundamentals, stolen mainly from the VMI patches: removing assumptions about the kernel running in ring 0, and macro-izing all the obvious para-virtualize-needing insns. The third patch is
2007 Apr 18
2
[PATCH 1/3] Paravirtualization: Kernel Ring Cleanups
Hi all, I've been looking at finding common ground between the VMI, Xen and other paravirtualization approaches, and after some discussion, we're getting somewhere. These first two patches are the fundamentals, stolen mainly from the VMI patches: removing assumptions about the kernel running in ring 0, and macro-izing all the obvious para-virtualize-needing insns. The third patch is
2007 Apr 18
3
[RFC, PATCH 4/24] i386 Vmi inline implementation
...I_CALL_/**/call, VMI_CALL_CUR; \ + .equ VMI_CALL_CUR, VMI_CALL_CUR+1; +VMI_CALLS +#undef VDEF +#endif /* __ASSEMBLY__ */ + +#define IRET vmi_raw_call(VMI_CALL_IRET, iret) +#define CLI vmi_raw_call(VMI_CALL_DisableInterrupts, cli) +#define STI vmi_raw_call(VMI_CALL_EnableInterrupts, sti) +#define STI_SYSEXIT vmi_raw_call(VMI_CALL_SYSEXIT, sti; sysexit) + +/* + * Due to the presence of "," in the instruction, and the use of + * -traditional to compile entry.S, we can not use a macro to + * encapsulate (mov %cr0, %eax); the full expansion must be + * written. + */ +#define GET_CR0 vmi_native_s...
2007 Apr 18
3
[RFC, PATCH 4/24] i386 Vmi inline implementation
...I_CALL_/**/call, VMI_CALL_CUR; \ + .equ VMI_CALL_CUR, VMI_CALL_CUR+1; +VMI_CALLS +#undef VDEF +#endif /* __ASSEMBLY__ */ + +#define IRET vmi_raw_call(VMI_CALL_IRET, iret) +#define CLI vmi_raw_call(VMI_CALL_DisableInterrupts, cli) +#define STI vmi_raw_call(VMI_CALL_EnableInterrupts, sti) +#define STI_SYSEXIT vmi_raw_call(VMI_CALL_SYSEXIT, sti; sysexit) + +/* + * Due to the presence of "," in the instruction, and the use of + * -traditional to compile entry.S, we can not use a macro to + * encapsulate (mov %cr0, %eax); the full expansion must be + * written. + */ +#define GET_CR0 vmi_native_s...
2007 Apr 18
1
[PATCH] (with benchmarks) binary patching of paravirt_ops call sites
...PATCH(PARAVIRT_IRQ_DISABLE,pushl %eax; pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_irq_disable; popl %edx; popl %ecx; popl %eax) +#define STI PARA_PATCH(PARAVIRT_IRQ_ENABLE,pushl %eax; pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_irq_enable; popl %edx; popl %ecx; popl %eax) #define STI_SYSEXIT jmp *paravirt_ops+PARAVIRT_irq_enable_sysexit #define GET_CR0 pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_read_cr0; popl %edx; popl %ecx @@ -204,9 +283,6 @@ static inline void sync_core(void) popl %eax #endif /* __ASSEMBLY__ */ -#define CLI_STRING "pushl %eax; pushl %ecx; pus...
2007 Apr 18
1
[PATCH] (with benchmarks) binary patching of paravirt_ops call sites
...PATCH(PARAVIRT_IRQ_DISABLE,pushl %eax; pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_irq_disable; popl %edx; popl %ecx; popl %eax) +#define STI PARA_PATCH(PARAVIRT_IRQ_ENABLE,pushl %eax; pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_irq_enable; popl %edx; popl %ecx; popl %eax) #define STI_SYSEXIT jmp *paravirt_ops+PARAVIRT_irq_enable_sysexit #define GET_CR0 pushl %ecx; pushl %edx; call *paravirt_ops+PARAVIRT_read_cr0; popl %edx; popl %ecx @@ -204,9 +283,6 @@ static inline void sync_core(void) popl %eax #endif /* __ASSEMBLY__ */ -#define CLI_STRING "pushl %eax; pushl %ecx; pus...
2007 Apr 18
17
[patch 00/17] paravirt_ops updates
Hi Andi, This series of patches updates paravirt_ops in various ways. Some of the changes are plain cleanups and improvements, and some add some interfaces necessary for Xen. The brief overview: add-MAINTAINERS.patch - obvious remove-CONFIG_DEBUG_PARAVIRT.patch - no longer needed paravirt-nop.patch - mark nop operations consistently paravirt-pte-accessors.patch - operations to pack/unpack
2007 Apr 18
17
[patch 00/17] paravirt_ops updates
Hi Andi, This series of patches updates paravirt_ops in various ways. Some of the changes are plain cleanups and improvements, and some add some interfaces necessary for Xen. The brief overview: add-MAINTAINERS.patch - obvious remove-CONFIG_DEBUG_PARAVIRT.patch - no longer needed paravirt-nop.patch - mark nop operations consistently paravirt-pte-accessors.patch - operations to pack/unpack
2007 Apr 18
3
[PATCH 1/2] paravirt.h header
OK, this is the revised paravirt.h (Andi has seen this before), then the second is the binary patching stuff. More things get added to the paravirt struct in future patches, but this basic stuff hasn't changed for some time. ==== This patch does the dumbest possible replacement of paravirtualized instructions: calls through a "paravirt_ops" structure. Currently these are function
2007 Apr 18
23
[patch 00/20] paravirt_ops updates
Hi Andi, Here's a repost of the paravirt_ops update series I posted the other day. Since then, I found a few potential bugs with patching clobbering, cleaned up and documented paravirt.h and the patching machinery. Overview: add-MAINTAINERS.patch obvious remove-CONFIG_DEBUG_PARAVIRT.patch No longer meaningful or needed. paravirt-nop.patch Clean up nop paravirt_ops functions, mainly to
2007 Apr 18
23
[patch 00/20] paravirt_ops updates
Hi Andi, Here's a repost of the paravirt_ops update series I posted the other day. Since then, I found a few potential bugs with patching clobbering, cleaned up and documented paravirt.h and the patching machinery. Overview: add-MAINTAINERS.patch obvious remove-CONFIG_DEBUG_PARAVIRT.patch No longer meaningful or needed. paravirt-nop.patch Clean up nop paravirt_ops functions, mainly to
2007 Apr 18
8
[PATCH 0/7] x86 paravirtualization infrastructure
The following patches introduce the core infrastructure needed to paravirtualize the 32-bit x86 Linux kernel. This is done by moving virtualization sensitive insn's or code paths to a function table, paravirt_ops. This structure can be populated with hypervisor specific calls or native stubs and currently support running on bare metal, VMI, Xen, or Lhype. These patches apply to