search for: mm_context_t

Displaying 20 results from an estimated 30 matches for "mm_context_t".

2007 Apr 18
0
[PATCH 20/21] i386 Ldt cleanups 3
...#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ +#ifdef CONFIG_SMP /* avoids "defined but not used" warning */ static void flush_ldt(void *null) { if (current->active_mm) @@ -27,33 +27,33 @@ static void flush_ldt(void *null) } #endif -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) +static inline int alloc_ldt(mm_context_t *pc, const int old_pages, int new_pages, const int reload) { - void *oldldt; - void *newldt; - int oldsize; + struct desc_struct *oldldt; + struct desc_struct *newldt; - if (mincount <= pc->size) - return 0; - oldsiz...
2007 Apr 18
0
[PATCH 20/21] i386 Ldt cleanups 3
...#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ +#ifdef CONFIG_SMP /* avoids "defined but not used" warning */ static void flush_ldt(void *null) { if (current->active_mm) @@ -27,33 +27,33 @@ static void flush_ldt(void *null) } #endif -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) +static inline int alloc_ldt(mm_context_t *pc, const int old_pages, int new_pages, const int reload) { - void *oldldt; - void *newldt; - int oldsize; + struct desc_struct *oldldt; + struct desc_struct *newldt; - if (mincount <= pc->size) - return 0; - oldsiz...
2007 Apr 18
0
[PATCH 12/14] i386 / Move context switch inline
...; #include <asm/desc.h> -#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ +#ifdef CONFIG_SMP /* avoids "defined but not used" warning */ static void flush_ldt(void *null) { if (current->active_mm) @@ -27,15 +27,11 @@ } #endif -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) +static inline int alloc_ldt(mm_context_t *pc, const int oldsize, int mincount, const int reload) { void *oldldt; void *newldt; - int oldsize; - if (mincount <= pc->size) - return 0; - oldsize = pc->size; mincount = (mincount+511)&(~511); if (...
2007 Apr 18
0
[PATCH 12/14] i386 / Move context switch inline
...; #include <asm/desc.h> -#ifdef CONFIG_SMP /* avoids "defined but not used" warnig */ +#ifdef CONFIG_SMP /* avoids "defined but not used" warning */ static void flush_ldt(void *null) { if (current->active_mm) @@ -27,15 +27,11 @@ } #endif -static int alloc_ldt(mm_context_t *pc, int mincount, int reload) +static inline int alloc_ldt(mm_context_t *pc, const int oldsize, int mincount, const int reload) { void *oldldt; void *newldt; - int oldsize; - if (mincount <= pc->size) - return 0; - oldsize = pc->size; mincount = (mincount+511)&(~511); if (...
2007 Apr 18
2
[PATCH 21/21] i386 Ldt context inline
...================ --- linux-2.6.14-zach-work.orig/include/asm-i386/desc.h 2005-11-05 02:30:35.000000000 -0800 +++ linux-2.6.14-zach-work/include/asm-i386/desc.h 2005-11-05 02:32:51.000000000 -0800 @@ -271,6 +271,9 @@ static inline void restore_bios_segments put_cpu(); } +extern void destroy_ldt(mm_context_t *pc); +extern int copy_ldt(mm_context_t *new, mm_context_t *old); + #endif /* !__ASSEMBLY__ */ #endif Index: linux-2.6.14-zach-work/include/asm-i386/mmu_context.h =================================================================== --- linux-2.6.14-zach-work.orig/include/asm-i386/mmu_context.h 2...
2007 Apr 18
2
[PATCH 21/21] i386 Ldt context inline
...================ --- linux-2.6.14-zach-work.orig/include/asm-i386/desc.h 2005-11-05 02:30:35.000000000 -0800 +++ linux-2.6.14-zach-work/include/asm-i386/desc.h 2005-11-05 02:32:51.000000000 -0800 @@ -271,6 +271,9 @@ static inline void restore_bios_segments put_cpu(); } +extern void destroy_ldt(mm_context_t *pc); +extern int copy_ldt(mm_context_t *new, mm_context_t *old); + #endif /* !__ASSEMBLY__ */ #endif Index: linux-2.6.14-zach-work/include/asm-i386/mmu_context.h =================================================================== --- linux-2.6.14-zach-work.orig/include/asm-i386/mmu_context.h 2...
2007 Apr 18
2
[PATCH 3/6] i386 virtualization - Make ldt a desc struct
...6.13/include/asm-i386/mmu.h 2005-08-15 11:19:49.000000000 -0700 > @@ -9,9 +9,9 @@ > * cpu_vm_mask is used to optimize ldt flushing. > */ > typedef struct { > - int size; > struct semaphore sem; > - void *ldt; > + struct desc_struct *ldt; > + int ldt_pages; > } mm_context_t; > > #endif > Index: linux-2.6.13/include/asm-i386/desc.h > =================================================================== > --- linux-2.6.13.orig/include/asm-i386/desc.h 2005-08-15 11:16:59.000000000 -0700 > +++ linux-2.6.13/include/asm-i386/desc.h 2005-08-15 11:19:49.000...
2007 Apr 18
2
[PATCH 3/6] i386 virtualization - Make ldt a desc struct
...6.13/include/asm-i386/mmu.h 2005-08-15 11:19:49.000000000 -0700 > @@ -9,9 +9,9 @@ > * cpu_vm_mask is used to optimize ldt flushing. > */ > typedef struct { > - int size; > struct semaphore sem; > - void *ldt; > + struct desc_struct *ldt; > + int ldt_pages; > } mm_context_t; > > #endif > Index: linux-2.6.13/include/asm-i386/desc.h > =================================================================== > --- linux-2.6.13.orig/include/asm-i386/desc.h 2005-08-15 11:16:59.000000000 -0700 > +++ linux-2.6.13/include/asm-i386/desc.h 2005-08-15 11:19:49.000...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 07/17] paravirt_ops - descriptor changes.
...set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_LDT], (unsigned long)addr, + DESC_LDT, entries * 8 - 1); + __asm__ __volatile__ ("lldt %w0"::"r" (GDT_ENTRY_LDT*8)); + } +} + /* * load one particular LDT into the current CPU */ -static inline void load_LDT_nolock (mm_context_t *pc, int cpu) +static inline void load_LDT_nolock (mm_context_t *pc) { - int count = pc->size; - - if (likely(!count)) { - clear_LDT(); - return; - } - - set_ldt_desc(cpu, pc->ldt, count); - load_LDT_desc(); + set_ldt(pc->ldt, pc->size); } static inline void load_LDT(mm_context...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 07/17] paravirt_ops - descriptor changes.
...set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_LDT], (unsigned long)addr, + DESC_LDT, entries * 8 - 1); + __asm__ __volatile__ ("lldt %w0"::"r" (GDT_ENTRY_LDT*8)); + } +} + /* * load one particular LDT into the current CPU */ -static inline void load_LDT_nolock (mm_context_t *pc, int cpu) +static inline void load_LDT_nolock (mm_context_t *pc) { - int count = pc->size; - - if (likely(!count)) { - clear_LDT(); - return; - } - - set_ldt_desc(cpu, pc->ldt, count); - load_LDT_desc(); + set_ldt(pc->ldt, pc->size); } static inline void load_LDT(mm_context...
2007 Dec 06
51
[PATCH 0/19] desc_struct integration
Hi, this is a series of patches that unify the struct desc_struct and friends across x86_64 and i386. As usual, it provides paravirt capabilities as a side-effect for x86_64. I consider the main goal, namely, of unifying the desc_struct, an ongoing effort, being this the beginning. A lot of old code has to be touched to accomplish that. I don't consider this patch ready for inclusion.
2007 Dec 06
51
[PATCH 0/19] desc_struct integration
Hi, this is a series of patches that unify the struct desc_struct and friends across x86_64 and i386. As usual, it provides paravirt capabilities as a side-effect for x86_64. I consider the main goal, namely, of unifying the desc_struct, an ongoing effort, being this the beginning. A lot of old code has to be touched to accomplish that. I don't consider this patch ready for inclusion.
2007 Apr 18
2
[PATCH 19/21] i386 Kprobes semaphore fix
...are only used in user space. Must + * disable pre-emption to reading the GDT, and must take the LDT semaphore + * for LDT segments. The fast path handles standard kernel and user CS + * as well as V8086 mode. + */ +unsigned long convert_eip_to_linear_slow(unsigned long eip, unsigned long seg, + mm_context_t *context, unsigned long *eip_limit) { - unsigned long addr, seg; + unsigned long base, seg_limit; + u32 seg_ar; + struct desc_struct *desc; + unsigned long flags; - addr = regs->eip; - seg = regs->xcs & 0xffff; - if (regs->eflags & VM_MASK) { - addr = (addr & 0xffff) + (se...
2007 Apr 18
2
[PATCH 19/21] i386 Kprobes semaphore fix
...are only used in user space. Must + * disable pre-emption to reading the GDT, and must take the LDT semaphore + * for LDT segments. The fast path handles standard kernel and user CS + * as well as V8086 mode. + */ +unsigned long convert_eip_to_linear_slow(unsigned long eip, unsigned long seg, + mm_context_t *context, unsigned long *eip_limit) { - unsigned long addr, seg; + unsigned long base, seg_limit; + u32 seg_ar; + struct desc_struct *desc; + unsigned long flags; - addr = regs->eip; - seg = regs->xcs & 0xffff; - if (regs->eflags & VM_MASK) { - addr = (addr & 0xffff) + (se...
2007 Apr 18
0
[PATCH 18/21] i386 Ldt cleanups 2
...ed int segment) +{ + return segment & LDT_SEGMENT; +} + +static inline struct desc_struct *get_gdt_desc(int cpu, unsigned int segment) +{ + char *gdt = (char *)get_cpu_gdt_table(cpu); + return (struct desc_struct *)&gdt[segment & ~7]; +} + +static inline struct desc_struct *get_ldt_desc(mm_context_t *ctx, unsigned int segment) +{ + char *ldt = (char *)ctx->ldt; + return (struct desc_struct *)&ldt[segment & ~7]; +} + #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) #define load_LDT_desc() __asm__ __volatile__("lldt %w0"::&q...
2007 Apr 18
0
[PATCH 18/21] i386 Ldt cleanups 2
...ed int segment) +{ + return segment & LDT_SEGMENT; +} + +static inline struct desc_struct *get_gdt_desc(int cpu, unsigned int segment) +{ + char *gdt = (char *)get_cpu_gdt_table(cpu); + return (struct desc_struct *)&gdt[segment & ~7]; +} + +static inline struct desc_struct *get_ldt_desc(mm_context_t *ctx, unsigned int segment) +{ + char *ldt = (char *)ctx->ldt; + return (struct desc_struct *)&ldt[segment & ~7]; +} + #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) #define load_LDT_desc() __asm__ __volatile__("lldt %w0"::&q...
2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
...size) { - _set_tssldt_desc(&get_cpu_gdt_table(cpu)[GDT_ENTRY_LDT], (int)addr, ((size << 3)-1), 0x82); + set_tssldt_desc(&get_cpu_gdt_table(cpu)[GDT_ENTRY_LDT], (int)addr, ((size << 3)-1), 0x82); } #define LDT_entry_a(info) \ @@ -149,22 +197,13 @@ static inline void load_LDT(mm_context_t put_cpu(); } -static inline unsigned long get_desc_base(unsigned long *desc) -{ - unsigned long base; - base = ((desc[0] >> 16) & 0x0000ffff) | - ((desc[1] << 16) & 0x00ff0000) | - (desc[1] & 0xff000000); - return base; -} - static inline void prepare_protected_segm...
2007 Apr 18
3
[PATCH 12/21] i386 Deprecate descriptor asm
...size) { - _set_tssldt_desc(&get_cpu_gdt_table(cpu)[GDT_ENTRY_LDT], (int)addr, ((size << 3)-1), 0x82); + set_tssldt_desc(&get_cpu_gdt_table(cpu)[GDT_ENTRY_LDT], (int)addr, ((size << 3)-1), 0x82); } #define LDT_entry_a(info) \ @@ -149,22 +197,13 @@ static inline void load_LDT(mm_context_t put_cpu(); } -static inline unsigned long get_desc_base(unsigned long *desc) -{ - unsigned long base; - base = ((desc[0] >> 16) & 0x0000ffff) | - ((desc[1] << 16) & 0x00ff0000) | - (desc[1] & 0xff000000); - return base; -} - static inline void prepare_protected_segm...
2008 Mar 20
1
[RFC/PATCH 01/15] preparation: provide hook to enable pgstes in user pagetable
...nable_sie); Index: kvm/include/asm-s390/mmu.h =================================================================== --- kvm.orig/include/asm-s390/mmu.h +++ kvm/include/asm-s390/mmu.h @@ -7,6 +7,7 @@ typedef struct { unsigned long asce_bits; unsigned long asce_limit; int noexec; + int pgstes; } mm_context_t; #endif Index: kvm/include/asm-s390/mmu_context.h =================================================================== --- kvm.orig/include/asm-s390/mmu_context.h +++ kvm/include/asm-s390/mmu_context.h @@ -20,7 +20,13 @@ static inline int init_new_context(struc #ifdef CONFIG_64BIT mm->conte...
2007 Apr 18
2
[PATCH] x86_64 paravirt_ops port
...set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_LDT], (unsigned long)addr, + DESC_LDT, entries * 8 - 1); + __asm__ __volatile__ ("lldt %w0"::"r" (GDT_ENTRY_LDT*8)); + } +} + /* * load one particular LDT into the current CPU */ -static inline void load_LDT_nolock (mm_context_t *pc, int cpu) +static inline void load_LDT_nolock (mm_context_t *pc) { - int count = pc->size; - - if (likely(!count)) { - clear_LDT(); - return; - } - - set_ldt_desc(cpu, pc->ldt, count); - load_LDT_desc(); + set_ldt(pc->ldt, pc->size); } static inline void load_LDT(mm_context...