search for: sysenter_setup

Displaying 20 results from an estimated 34 matches for "sysenter_setup".

2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
4
[patch 0/2] Updates to compat VDSOs
Hi Andi, Here's a couple of patches to fix up COMPAT_VDSO: The first is a straightforward implementation of Jan's original idea of relocating the VDSO to match its mapped location. Unlike Jan and Zach's version, I changed it to relocate based on the phdrs rather than the sections; the result is pleasantly compact. The second patch takes advantage of the fact that all the
2007 Apr 18
0
[PATCH 2/2] x86: clean up identify_cpu
...cpuin for (i = 0; i < NCAPINTS; i++) printk(" %08lx", c->x86_capability[i]); printk("\n"); - +} + +void __init identify_boot_cpu(void) +{ + identify_cpu(&boot_cpu_data); + + /* Init Machine Check Exception if available. */ + mcheck_init(&boot_cpu_data); + + sysenter_setup(); + enable_sep_cpu(); + + mtrr_bp_init(); +} + +void __cpuinit identify_secondary_cpu(struct cpuinfo_x86 *c) +{ + int i; + + BUG_ON(c == &boot_cpu_data); + identify_cpu(c); /* * On SMP, boot_cpu_data holds the common feature set between * all CPUs; so make sure that we indicate which f...
2007 Apr 18
0
[PATCH 2/2] x86: clean up identify_cpu
...cpuin for (i = 0; i < NCAPINTS; i++) printk(" %08lx", c->x86_capability[i]); printk("\n"); - +} + +void __init identify_boot_cpu(void) +{ + identify_cpu(&boot_cpu_data); + + /* Init Machine Check Exception if available. */ + mcheck_init(&boot_cpu_data); + + sysenter_setup(); + enable_sep_cpu(); + + mtrr_bp_init(); +} + +void __cpuinit identify_secondary_cpu(struct cpuinfo_x86 *c) +{ + int i; + + BUG_ON(c == &boot_cpu_data); + identify_cpu(c); /* * On SMP, boot_cpu_data holds the common feature set between * all CPUs; so make sure that we indicate which f...
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --
2007 Apr 18
4
[patch 0/4] Clean up asm/bugs.h, identify_cpu() and update COMPAT_VDSO
Hi Andi, Four patches: - clean up asm/bugs.h, by moving all the C code into its own C file - split identify_cpu() into boot and secondary variants, so that boot-time setup functions can be marked __init - repost of the COMPAT_VDSO patches with a bit more robustness from unknown DT_tags, and functions marked __init, since all this is boot-time only setup. Thanks, J --
2007 Apr 18
4
paravirt repo rebased to 2.6.21-rc6-mm1
Seems to work OK for native and Xen. I had to play a bit with the paravirt-sched-clock patch to deal with the VMI changes. Zach, can you check that it still works? Thanks, J
2007 Apr 18
4
paravirt repo rebased to 2.6.21-rc6-mm1
Seems to work OK for native and Xen. I had to play a bit with the paravirt-sched-clock patch to deal with the VMI changes. Zach, can you check that it still works? Thanks, J
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...D 0; i < foo; i++) { + if (l1[i] !=3D l2[i]) { + printk("vsyscall - delta [%03x] orig %08x new %08x\n", + i, l2[i], l1[i]); + } + } +} +#endif +} +#else /* !CONFIG_COMPAT_VDSO */ +static inline void fixup_vsyscall_elf(char *page) {} +#endif /* CONFIG_COMPAT_VDSO */ + int __init sysenter_setup(void) { void *syscall_page =3D (void *)get_zeroed_page(GFP_ATOMIC); @@ -86,20 +179,22 @@ int __init sysenter_setup(void) memcpy(syscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + fixup_vsyscall_elf((char *)syscall_page); re...
2007 Apr 18
2
[RFC, PATCH] Fixup COMPAT_VDSO to work with CONFIG_PARAVIRT
...D 0; i < foo; i++) { + if (l1[i] !=3D l2[i]) { + printk("vsyscall - delta [%03x] orig %08x new %08x\n", + i, l2[i], l1[i]); + } + } +} +#endif +} +#else /* !CONFIG_COMPAT_VDSO */ +static inline void fixup_vsyscall_elf(char *page) {} +#endif /* CONFIG_COMPAT_VDSO */ + int __init sysenter_setup(void) { void *syscall_page =3D (void *)get_zeroed_page(GFP_ATOMIC); @@ -86,20 +179,22 @@ int __init sysenter_setup(void) memcpy(syscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + fixup_vsyscall_elf((char *)syscall_page); re...
2010 Aug 05
0
[GIT PULL] x86/mm for 2.6.36
...git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c index 02b442e..36df991 100644 --- a/arch/x86/vdso/vdso32-setup.c +++ b/arch/x86/vdso/vdso32-setup.c @@ -374,7 +374,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) #ifdef CONFIG_X86_64 -__initcall(sysenter_setup); +subsys_initcall(sysenter_setup); #ifdef CONFIG_SYSCTL /* Register vsyscall32 into the ABI table */ diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c index ac74869..43456ee 100644 --- a/arch/x86/vdso/vma.c +++ b/arch/x86/vdso/vma.c @@ -74,7 +74,7 @@ static int __init init_vdso_vars(void)...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...ABS) + continue; + sym->st_value += new_base - old_base; + } +#endif +} +#else +#define relocate_vdso(ehdr, old, new, start, end) ((void)0) +#endif + /* * These symbols are defined by vsyscall.o to mark the bounds * of the ELF DSO images included therein. @@ -104,12 +245,16 @@ int __init sysenter_setup(void) memcpy(syscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_pa...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...ABS) + continue; + sym->st_value += new_base - old_base; + } +#endif +} +#else +#define relocate_vdso(ehdr, old, new, start, end) ((void)0) +#endif + /* * These symbols are defined by vsyscall.o to mark the bounds * of the ELF DSO images included therein. @@ -104,12 +245,16 @@ int __init sysenter_setup(void) memcpy(syscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_pa...
2007 Mar 05
7
[PATCH 2/10] linux 2.6.18: COMPAT_VDSO
...ABS) + continue; + sym->st_value += new_base - old_base; + } +#endif +} +#else +#define relocate_vdso(ehdr, old, new, start, end) ((void)0) +#endif + /* * These symbols are defined by vsyscall.o to mark the bounds * of the ELF DSO images included therein. @@ -104,12 +245,16 @@ int __init sysenter_setup(void) memcpy(syscall_page, &vsyscall_int80_start, &vsyscall_int80_end - &vsyscall_int80_start); + relocate_vdso(syscall_page, VDSO_PRELINK, __fix_to_virt(FIX_VDSO), + vdso_rel_int80_start, vdso_rel_int80_end); return 0; } memcpy(syscall_pa...
2007 Apr 18
3
[patch] paravirt: VDSO page is essential
On Mon, 2007-03-05 at 13:06 +0100, Ingo Molnar wrote: > Subject: [patch] paravirt: VDSO page is essential > From: Ingo Molnar <mingo@elte.hu> > > commit 3bbf54725467d604698721384d858b5983b87e8f disables the VDSO for > CONFIG_PARAVIRT kernels. This #ifdeffery was a bad change: the VDSO is > an essential component of Linux, and this change forces all of them to > use
2007 Apr 18
3
[patch] paravirt: VDSO page is essential
On Mon, 2007-03-05 at 13:06 +0100, Ingo Molnar wrote: > Subject: [patch] paravirt: VDSO page is essential > From: Ingo Molnar <mingo@elte.hu> > > commit 3bbf54725467d604698721384d858b5983b87e8f disables the VDSO for > CONFIG_PARAVIRT kernels. This #ifdeffery was a bad change: the VDSO is > an essential component of Linux, and this change forces all of them to > use
2007 Apr 18
1
[PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch
...inux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,88 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP)) { - memcpy(page, + memcpy(syscall_page, &vsyscall_int80_start,...
2007 Apr 18
1
[PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch
...inux/mm.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -45,23 +46,88 @@ void enable_sep_cpu(void) */ extern const char vsyscall_int80_start, vsyscall_int80_end; extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; +static void *syscall_page; int __init sysenter_setup(void) { - void *page = (void *)get_zeroed_page(GFP_ATOMIC); - - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); + syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); if (!boot_cpu_has(X86_FEATURE_SEP)) { - memcpy(page, + memcpy(syscall_page, &vsyscall_int80_start,...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...ON; + } + } + phdr =3D (void *)hdr + hdr->e_phoff; + for (i =3D 0; i < hdr->e_phnum; i++) { + phdr[i].p_vaddr +=3D VSYSCALL_RELOCATION; + phdr[i].p_paddr +=3D VSYSCALL_RELOCATION; + } + SYSENTER_RETURN_ADDR =3D (char *)&SYSENTER_RETURN + VSYSCALL_RELOCATION; +} +#endif + int __init sysenter_setup(void) { void *page =3D (void *)get_zeroed_page(GFP_ATOMIC); = - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); - - if (!boot_cpu_has(X86_FEATURE_SEP)) { + if (!boot_cpu_has(X86_FEATURE_SEP)) memcpy(page, &vsyscall_int80_start, &vsyscall_int80_end - &...
2007 Apr 18
1
[PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
...ON; + } + } + phdr =3D (void *)hdr + hdr->e_phoff; + for (i =3D 0; i < hdr->e_phnum; i++) { + phdr[i].p_vaddr +=3D VSYSCALL_RELOCATION; + phdr[i].p_paddr +=3D VSYSCALL_RELOCATION; + } + SYSENTER_RETURN_ADDR =3D (char *)&SYSENTER_RETURN + VSYSCALL_RELOCATION; +} +#endif + int __init sysenter_setup(void) { void *page =3D (void *)get_zeroed_page(GFP_ATOMIC); = - __set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC); - - if (!boot_cpu_has(X86_FEATURE_SEP)) { + if (!boot_cpu_has(X86_FEATURE_SEP)) memcpy(page, &vsyscall_int80_start, &vsyscall_int80_end - &...