Displaying 20 results from an estimated 10000 matches similar to: "[PATCH 0/21] Descriptor table fixes / cleanup for i386"
2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
Ancient inline assembler that manipulates descriptor tables is unreadable
and has no type checking. Doing this in C actually generates better code,
saves code space, and improves readability.
The fact that you must cast descriptors to (char *) for the inline assembler
to work properly caused me no end of grief working on these patches.
Note that GCC does not generate rotations to utilize
2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
Ancient inline assembler that manipulates descriptor tables is unreadable
and has no type checking. Doing this in C actually generates better code,
saves code space, and improves readability.
The fact that you must cast descriptors to (char *) for the inline assembler
to work properly caused me no end of grief working on these patches.
Note that GCC does not generate rotations to utilize
2007 Apr 18
1
[PATCH 0/3] GDT virtualization performance
Three patches to clean up GDT access in Linux to make it friendly to
virtualization environments. The basic problem is that the GDT must
be write protected, which causes spurious overhead when the GDT lies
on the same page as other data. This problem exists both for VMware
and Xen; Xen actually requires page isolation, so we have implemented
the most general and compatible solution.
Patch 1
2007 Apr 18
1
[PATCH 0/3] GDT virtualization performance
Three patches to clean up GDT access in Linux to make it friendly to
virtualization environments. The basic problem is that the GDT must
be write protected, which causes spurious overhead when the GDT lies
on the same page as other data. This problem exists both for VMware
and Xen; Xen actually requires page isolation, so we have implemented
the most general and compatible solution.
Patch 1
2007 Apr 18
2
[PATCH 19/21] i386 Kprobes semaphore fix
IA-32 linear address translation is loads of fun.
While cleaning up the LDT code, I noticed that kprobes code was very bogus
with respect to segment handling. Many, many bugs are fixed here. I chose
to combine the three separate functions that try to do linear address
conversion into one, nice and working functions. All of the versions had
bugs.
1) Taking an int3 from v8086 mode could cause
2007 Apr 18
2
[PATCH 19/21] i386 Kprobes semaphore fix
IA-32 linear address translation is loads of fun.
While cleaning up the LDT code, I noticed that kprobes code was very bogus
with respect to segment handling. Many, many bugs are fixed here. I chose
to combine the three separate functions that try to do linear address
conversion into one, nice and working functions. All of the versions had
bugs.
1) Taking an int3 from v8086 mode could cause
2007 Apr 18
1
[PATCH 7/14] i386 / Add some descriptor convenience functions
Add some convenient descriptor access functions and move them all into desc.h
Patch-base: 2.6.13-rc5-mm1
Patch-keys: i386 desc cleanup
Signed-off-by: Zachary Amsden <zach@vmware.com>
Index: linux-2.6.13/include/asm-i386/desc.h
===================================================================
--- linux-2.6.13.orig/include/asm-i386/desc.h 2005-08-09 19:43:38.000000000 -0700
+++
2007 Apr 18
1
[PATCH 7/14] i386 / Add some descriptor convenience functions
Add some convenient descriptor access functions and move them all into desc.h
Patch-base: 2.6.13-rc5-mm1
Patch-keys: i386 desc cleanup
Signed-off-by: Zachary Amsden <zach@vmware.com>
Index: linux-2.6.13/include/asm-i386/desc.h
===================================================================
--- linux-2.6.13.orig/include/asm-i386/desc.h 2005-08-09 19:43:38.000000000 -0700
+++
2007 Apr 18
1
[PATCH 2/3] Pnp bios gdt fix
PnP BIOS for x86 is part of drivers, so I missed it in the initial
GDT page alignment patch. Kudos to Andrew for fixing that.
Unfortunately, fixing the build introduced a kernel panic when
trying to setup the as of yet unallocated GDTs for the APs.
This fixes the problem by setting only the BSP's GDT, then copying
the PnP segments back to the cpu_gdt_table template.
Signed-off-by: Zachary
2007 Apr 18
1
[PATCH 2/3] Pnp bios gdt fix
PnP BIOS for x86 is part of drivers, so I missed it in the initial
GDT page alignment patch. Kudos to Andrew for fixing that.
Unfortunately, fixing the build introduced a kernel panic when
trying to setup the as of yet unallocated GDTs for the APs.
This fixes the problem by setting only the BSP's GDT, then copying
the PnP segments back to the cpu_gdt_table template.
Signed-off-by: Zachary
2007 Apr 18
2
proposed interface change for setting the ldt
At the moment, all the places where the LDT are set in the kernel are of
the form:
set_ldt_desc(cpu, segments, count);
load_LDT_desc();
(two instances in asm-i386/desc.h). set_ldt_desc() sets an LDT
descriptor in the GDT, and load_LDT_desc() is basically just lldt. These
map to the write_gdt_entry and load_ldt_desc paravirt ops.
This doesn't work well for Xen, because you set
2007 Apr 18
3
[RFC, PATCH 10/24] i386 Vmi descriptor changes
Descriptor and trap table cleanups. Add cleanly written accessors for
IDT and GDT gates so the subarch may override them. Note that this
allows the hypervisor to transparently tweak the DPL of the descriptors
as well as the RPL of segments in those descriptors, with no unnecessary
kernel code modification. It also allows the hypervisor implementation
of the VMI to tweak the gates, allowing for
2007 Apr 18
3
[RFC, PATCH 10/24] i386 Vmi descriptor changes
Descriptor and trap table cleanups. Add cleanly written accessors for
IDT and GDT gates so the subarch may override them. Note that this
allows the hypervisor to transparently tweak the DPL of the descriptors
as well as the RPL of segments in those descriptors, with no unnecessary
kernel code modification. It also allows the hypervisor implementation
of the VMI to tweak the gates, allowing for
2007 Apr 18
0
[PATCH 18/21] i386 Ldt cleanups 2
Add an acessor function to get a pointer to an LDT descriptor. Add one for
the GDT too, while we are here, and a function to tell the difference.
Turns out on some GCC versions, converting to char * and back gives better
code output than gdt[seg >> 3]. Lets keep that trick in the header file
so the C-code can be clean.
Not used yet, but soon.
Signed-off-by: Zachary Amsden
2007 Apr 18
0
[PATCH 18/21] i386 Ldt cleanups 2
Add an acessor function to get a pointer to an LDT descriptor. Add one for
the GDT too, while we are here, and a function to tell the difference.
Turns out on some GCC versions, converting to char * and back gives better
code output than gdt[seg >> 3]. Lets keep that trick in the header file
so the C-code can be clean.
Not used yet, but soon.
Signed-off-by: Zachary Amsden
2007 Apr 18
0
[PATCH 8/12] base-limit-cleanup
Found some stray descriptor table accessors that had non-optimal assembler
constraints. Use "q" to get word, high and low byte access without forcing
a specific register constraint. Add desc as a memory output operand.
Also, get_base was completely unused. Deprecate it.
The function get_limit is also unused, but I did not deprecate it; it could
be used in arch/i386/mm/fault.c.
2007 Apr 18
0
[PATCH 8/12] base-limit-cleanup
Found some stray descriptor table accessors that had non-optimal assembler
constraints. Use "q" to get word, high and low byte access without forcing
a specific register constraint. Add desc as a memory output operand.
Also, get_base was completely unused. Deprecate it.
The function get_limit is also unused, but I did not deprecate it; it could
be used in arch/i386/mm/fault.c.
2007 Apr 18
0
[PATCH 8/21] i386 Segment protect properly
It is impossible to have a zero length segment in descriptor tables using
"normal" segments. One of many ways to properly protect segments to zero
length is to map the base to an umapped page. Create a nicer way to do
this, and stop subtracting 1 from the length passed to set_limit (note
calling set limit with a zero limit does something very bad! - not anymore).
Signed-off-by:
2007 Apr 18
0
[PATCH 8/21] i386 Segment protect properly
It is impossible to have a zero length segment in descriptor tables using
"normal" segments. One of many ways to properly protect segments to zero
length is to map the base to an umapped page. Create a nicer way to do
this, and stop subtracting 1 from the length passed to set_limit (note
calling set limit with a zero limit does something very bad! - not anymore).
Signed-off-by:
2007 Apr 18
1
[PATCH 2/12] ldt-accessors
Introduce a write acessor for updating the current LDT. This is required for
hypervisors like Xen that do not allow LDT pages to be directly written.
Testing - here's a fun little LDT test that can be trivially modified to test
limits as well.
/*
* Copyright (c) 2005, Zachary Amsden (zach@vmware.com)
* This is licensed under the GPL.
*/
#include <stdio.h>
#include <signal.h>