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
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
[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
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
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
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
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