similar to: [PATCH 8/21] i386 Segment protect properly

Displaying 20 results from an estimated 300 matches similar to: "[PATCH 8/21] i386 Segment protect properly"

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
0
[PATCH 1/3] Gdt page isolation fix
Andrew Morton's fix for PnP BIOS. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c =================================================================== --- linux-2.6.14-rc1.orig/drivers/pnp/pnpbios/bioscalls.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 13:13:42.000000000 -0700
2007 Apr 18
0
[PATCH 1/3] Gdt page isolation fix
Andrew Morton's fix for PnP BIOS. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c =================================================================== --- linux-2.6.14-rc1.orig/drivers/pnp/pnpbios/bioscalls.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.14-rc1/drivers/pnp/pnpbios/bioscalls.c 2005-09-28 13:13:42.000000000 -0700
2007 Apr 18
0
[PATCH 6/21] i386 Fixed pnp bios limits
PnP BIOS data, code, and 32-bit entry segments all have fixed limits as well; set them in the GDT rather than adding more code. It would be nice to add these fixups to the boot GDT rather than setting the GDT for each CPU; perhaps I can wiggle this in later, but getting it in before the subsys init looks tricky. Also, make some progress on deprecating the ugly Q_SET_SEL macros. Signed-off-by:
2007 Apr 18
0
[PATCH 6/21] i386 Fixed pnp bios limits
PnP BIOS data, code, and 32-bit entry segments all have fixed limits as well; set them in the GDT rather than adding more code. It would be nice to add these fixups to the boot GDT rather than setting the GDT for each CPU; perhaps I can wiggle this in later, but getting it in before the subsys init looks tricky. Also, make some progress on deprecating the ugly Q_SET_SEL macros. Signed-off-by:
2007 Apr 18
2
[PATCH 4/21] i386 Broken bios common
Both the APM BIOS and PnP BIOS code use a segment hack to simulate real mode selector 0x40 (which points to the BIOS data area at 0x00400 in real mode). Several broken BIOSen use selector 0x40 as if they were running in real mode, which we make work by faking up selector 0x40 in the GDT to point to physical memory starting at 0x400. We limit the access to the remainder of this physical page
2007 Apr 18
2
[PATCH 4/21] i386 Broken bios common
Both the APM BIOS and PnP BIOS code use a segment hack to simulate real mode selector 0x40 (which points to the BIOS data area at 0x00400 in real mode). Several broken BIOSen use selector 0x40 as if they were running in real mode, which we make work by faking up selector 0x40 in the GDT to point to physical memory starting at 0x400. We limit the access to the remainder of this physical page
2007 Apr 18
0
[PATCH 1/21] i386 Pnp segments in segment h
Move PnP BIOS segment definitions into segment.h; the segments are reserved here, so they might as well be defined here as well. Note I didn't do this for APM BIOS, as Macintosh and other systems use those values to emulate APM in some scary way I don't want to understand. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-zach-work/include/asm-i386/segment.h
2007 Apr 18
0
[PATCH 1/21] i386 Pnp segments in segment h
Move PnP BIOS segment definitions into segment.h; the segments are reserved here, so they might as well be defined here as well. Note I didn't do this for APM BIOS, as Macintosh and other systems use those values to emulate APM in some scary way I don't want to understand. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-zach-work/include/asm-i386/segment.h
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
0
[PATCH 13/21] i386 Gdt page isolation
Make GDT page aligned and page padded to support running inside of a hypervisor. This prevents false sharing of the GDT page with other hot data, which is not allowed in Xen, and causes performance problems in VMware. Rather than go back to the old method of statically allocating the GDT (which wastes unneded space for non-present CPUs), the GDT for APs is allocated dynamically. Signed-off-by:
2007 Apr 18
0
[PATCH 13/21] i386 Gdt page isolation
Make GDT page aligned and page padded to support running inside of a hypervisor. This prevents false sharing of the GDT page with other hot data, which is not allowed in Xen, and causes performance problems in VMware. Rather than go back to the old method of statically allocating the GDT (which wastes unneded space for non-present CPUs), the GDT for APs is allocated dynamically. Signed-off-by:
2007 Apr 18
1
[PATCH 7/21] i386 Losing fs gs to bios
I discovered an even more subtle problem; the PnP BIOS code is saving the %fs and %gs segments in inline assembler, yet it also uses the same hack for patching in a fake real mode selector for the BIOS data area. Note that the protected mode selector 0x40 overlaps the user TLS area in the GDT; this means that badly timed PnP BIOS calls could come in, save %fs, come back, and restore %fs -- to
2007 Apr 18
1
[PATCH 7/21] i386 Losing fs gs to bios
I discovered an even more subtle problem; the PnP BIOS code is saving the %fs and %gs segments in inline assembler, yet it also uses the same hack for patching in a fake real mode selector for the BIOS data area. Note that the protected mode selector 0x40 overlaps the user TLS area in the GDT; this means that badly timed PnP BIOS calls could come in, save %fs, come back, and restore %fs -- to
2007 Apr 18
0
[PATCH 5/21] i386 Pnp byte granularity
The one remaining caller of set_limit, the PnP BIOS code, calls into the PnP BIOS, passing kernel parameters in and out. These parameteres may be passed from arbitrary kernel virtual memory, so they deserve strict protection to stop a bad BIOS from smashing beyond the object size. Unfortunately, the use of set_limit was badly botching this by setting the limit in terms of pages, when it really
2007 Apr 18
0
[PATCH 5/21] i386 Pnp byte granularity
The one remaining caller of set_limit, the PnP BIOS code, calls into the PnP BIOS, passing kernel parameters in and out. These parameteres may be passed from arbitrary kernel virtual memory, so they deserve strict protection to stop a bad BIOS from smashing beyond the object size. Unfortunately, the use of set_limit was badly botching this by setting the limit in terms of pages, when it really
2007 Apr 18
0
[PATCH 10/21] i386 Use protected segment for 16bit stack
Use prepare_protected_segment macro to set up the 16-bit stack. Whee!! This code is almost readable now. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-zach-work/arch/i386/kernel/cpu/common.c =================================================================== --- linux-2.6.14-zach-work.orig/arch/i386/kernel/cpu/common.c 2005-11-04 16:54:45.000000000 -0800 +++
2007 Apr 18
0
[PATCH 10/21] i386 Use protected segment for 16bit stack
Use prepare_protected_segment macro to set up the 16-bit stack. Whee!! This code is almost readable now. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.14-zach-work/arch/i386/kernel/cpu/common.c =================================================================== --- linux-2.6.14-zach-work.orig/arch/i386/kernel/cpu/common.c 2005-11-04 16:54:45.000000000 -0800 +++