search for: oldmm

Displaying 20 results from an estimated 65 matches for "oldmm".

2023 Feb 07
1
[PATCH v2] x86/paravirt: merge activate_mm and dup_mmap callbacks
...(struct mm_struct *prev, struct mm_struct *next, #define activate_mm(prev, next) \ do { \ - paravirt_activate_mm((prev), (next)); \ + paravirt_enter_mmap(next); \ switch_mm((prev), (next), NULL); \ } while (0); @@ -167,7 +167,7 @@ static inline void arch_dup_pkeys(struct mm_struct *oldmm, static inline int arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm) { arch_dup_pkeys(oldmm, mm); - paravirt_arch_dup_mmap(oldmm, mm); + paravirt_enter_mmap(mm); return ldt_dup_context(oldmm, mm); } diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h i...
2007 Jun 26
2
RFC: multiple address spaces for one process
...return -ENOMEM; + (*mp)->token_priority = 0; + (*mp)->last_interval = 0; + + return mp - current->mm_avail; +} + +/* + * Could combine ... create on the fly if n is in range and + * the context doesn't exist yet + */ +asmlinkage unsigned long sys_switch_as(int n) +{ + struct mm_struct *oldmm; + if (n < 0 || n >= N_MM || + !current->mm_avail || !current->mm_avail[n]) + return -ENOENT; + /* + * Lock against /proc and ptrace attempts to look at mm + */ + task_lock(current); + oldmm = current->mm; + + current->mm = current->mm_avail[n]; + BUG_ON (current->act...
2007 Jun 26
2
RFC: multiple address spaces for one process
...return -ENOMEM; + (*mp)->token_priority = 0; + (*mp)->last_interval = 0; + + return mp - current->mm_avail; +} + +/* + * Could combine ... create on the fly if n is in range and + * the context doesn't exist yet + */ +asmlinkage unsigned long sys_switch_as(int n) +{ + struct mm_struct *oldmm; + if (n < 0 || n >= N_MM || + !current->mm_avail || !current->mm_avail[n]) + return -ENOENT; + /* + * Lock against /proc and ptrace attempts to look at mm + */ + task_lock(current); + oldmm = current->mm; + + current->mm = current->mm_avail[n]; + BUG_ON (current->act...
2007 Apr 18
0
[PATCH 2/6] Paravirt CPU hypercall batching mode
...*instr; /* original instructions */ diff -r 01f2e46c1416 kernel/sched.c --- a/kernel/sched.c Thu Dec 14 14:26:24 2006 -0800 +++ b/kernel/sched.c Thu Dec 14 14:44:56 2006 -0800 @@ -1842,6 +1842,13 @@ context_switch(struct rq *rq, struct tas struct mm_struct *mm = next->mm; struct mm_struct *oldmm = prev->active_mm; + /* + * For paravirt, this is coupled with an exit in switch_to to + * combine the page table reload and the switch backend into + * one hypercall. + */ + arch_enter_lazy_cpu_mode(); + if (!mm) { next->active_mm = oldmm; atomic_inc(&oldmm->mm_count);
2007 Apr 18
0
[PATCH 2/6] Paravirt CPU hypercall batching mode
...*instr; /* original instructions */ diff -r 01f2e46c1416 kernel/sched.c --- a/kernel/sched.c Thu Dec 14 14:26:24 2006 -0800 +++ b/kernel/sched.c Thu Dec 14 14:44:56 2006 -0800 @@ -1842,6 +1842,13 @@ context_switch(struct rq *rq, struct tas struct mm_struct *mm = next->mm; struct mm_struct *oldmm = prev->active_mm; + /* + * For paravirt, this is coupled with an exit in switch_to to + * combine the page table reload and the switch backend into + * one hypercall. + */ + arch_enter_lazy_cpu_mode(); + if (!mm) { next->active_mm = oldmm; atomic_inc(&oldmm->mm_count);
2007 Apr 18
2
[PATCH 2/5] Paravirt cpu batching.patch
...*instr; /* original instructions */ diff -r 320f0d4d2280 kernel/sched.c --- a/kernel/sched.c Tue Dec 12 13:50:50 2006 -0800 +++ b/kernel/sched.c Tue Dec 12 13:50:53 2006 -0800 @@ -1833,6 +1833,13 @@ context_switch(struct rq *rq, struct tas struct mm_struct *mm = next->mm; struct mm_struct *oldmm = prev->active_mm; + /* + * For paravirt, this is coupled with an exit in switch_to to + * combine the page table reload and the switch backend into + * one hypercall. + */ + arch_enter_lazy_cpu_mode(); + if (!mm) { next->active_mm = oldmm; atomic_inc(&oldmm->mm_count);
2007 Apr 18
2
[PATCH 2/5] Paravirt cpu batching.patch
...*instr; /* original instructions */ diff -r 320f0d4d2280 kernel/sched.c --- a/kernel/sched.c Tue Dec 12 13:50:50 2006 -0800 +++ b/kernel/sched.c Tue Dec 12 13:50:53 2006 -0800 @@ -1833,6 +1833,13 @@ context_switch(struct rq *rq, struct tas struct mm_struct *mm = next->mm; struct mm_struct *oldmm = prev->active_mm; + /* + * For paravirt, this is coupled with an exit in switch_to to + * combine the page table reload and the switch backend into + * one hypercall. + */ + arch_enter_lazy_cpu_mode(); + if (!mm) { next->active_mm = oldmm; atomic_inc(&oldmm->mm_count);
2017 Oct 04
0
[PATCH 05/13] x86/paravirt: Move paravirt asm macros to paravirt-asm.h
...- jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64)) -#endif /* CONFIG_X86_32 */ - -#endif /* __ASSEMBLY__ */ -#else /* CONFIG_PARAVIRT */ +#else /* !CONFIG_PARAVIRT */ # define default_banner x86_init_noop -#ifndef __ASSEMBLY__ static inline void paravirt_arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm) { @@ -936,6 +818,8 @@ static inline void paravirt_arch_dup_mmap(struct mm_struct *oldmm, static inline void paravirt_arch_exit_mmap(struct mm_struct *mm) { } -#endif /* __ASSEMBLY__ */ #endif /* !CONFIG_PARAVIRT */ + +#endif /* __ASSEMBLY__ */ + #endif /* _ASM_X...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 01/17] paravirt_ops - core changes
...u32 low, u32 high); + void (*load_rsp0)(struct tss_struct *tss, + struct thread_struct *thread); + + void (*io_delay)(void); + void (*const_udelay)(unsigned long loops); + + void (*activate_mm)(struct mm_struct *prev, + struct mm_struct *next); + void (*dup_mmap)(struct mm_struct *oldmm, + struct mm_struct *mm); + void (*exit_mmap)(struct mm_struct *mm); + +#ifdef CONFIG_X86_LOCAL_APIC + void (*apic_write)(unsigned long reg, unsigned int v); + unsigned int (*apic_read)(unsigned long reg); +#endif + + void (*flush_tlb_user)(void); + void (*flush_tlb_kernel)(void); + void (*flu...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 01/17] paravirt_ops - core changes
...u32 low, u32 high); + void (*load_rsp0)(struct tss_struct *tss, + struct thread_struct *thread); + + void (*io_delay)(void); + void (*const_udelay)(unsigned long loops); + + void (*activate_mm)(struct mm_struct *prev, + struct mm_struct *next); + void (*dup_mmap)(struct mm_struct *oldmm, + struct mm_struct *mm); + void (*exit_mmap)(struct mm_struct *mm); + +#ifdef CONFIG_X86_LOCAL_APIC + void (*apic_write)(unsigned long reg, unsigned int v); + unsigned int (*apic_read)(unsigned long reg); +#endif + + void (*flush_tlb_user)(void); + void (*flush_tlb_kernel)(void); + void (*flu...
2007 Oct 09
2
[PATCH RFC REPOST 1/2] paravirt: refactor struct paravirt_ops into smaller pv_*_ops
...rrupt state. save_fl and restore_fl are only + * expected to use X86_EFLAGS_IF; all other bits + * returned from save_fl are undefined, and may be ignored by + * restore_fl. */ - void (*activate_mm)(struct mm_struct *prev, - struct mm_struct *next); - void (*dup_mmap)(struct mm_struct *oldmm, - struct mm_struct *mm); - void (*exit_mmap)(struct mm_struct *mm); - + unsigned long (*save_fl)(void); + void (*restore_fl)(unsigned long); + void (*irq_disable)(void); + void (*irq_enable)(void); + void (*safe_halt)(void); + void (*halt)(void); +}; + +struct pv_apic_ops { #ifdef CONFIG_X86_L...
2007 Oct 09
2
[PATCH RFC REPOST 1/2] paravirt: refactor struct paravirt_ops into smaller pv_*_ops
...rrupt state. save_fl and restore_fl are only + * expected to use X86_EFLAGS_IF; all other bits + * returned from save_fl are undefined, and may be ignored by + * restore_fl. */ - void (*activate_mm)(struct mm_struct *prev, - struct mm_struct *next); - void (*dup_mmap)(struct mm_struct *oldmm, - struct mm_struct *mm); - void (*exit_mmap)(struct mm_struct *mm); - + unsigned long (*save_fl)(void); + void (*restore_fl)(unsigned long); + void (*irq_disable)(void); + void (*irq_enable)(void); + void (*safe_halt)(void); + void (*halt)(void); +}; + +struct pv_apic_ops { #ifdef CONFIG_X86_L...
2008 May 31
1
[PATCH] xen: avoid hypercalls when updating unpinned pud/pmd
...-void xen_set_pte(pte_t *ptep, pte_t pteval); -void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t pteval); -void xen_set_pmd(pmd_t *pmdp, pmd_t pmdval); void xen_activate_mm(struct mm_struct *prev, struct mm_struct *next); void xen_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm); @@ -45,10 +41,14 @@ pmd_t xen_make_pmd(pmdval_t); pgd_t xen_make_pgd(pgdval_t); +void xen_set_pte(pte_t *ptep, pte_t pteval); void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval); void xen_set_pte_atomic(pte_t *ptep, pte_t pte...
2018 Feb 26
0
[v1 1/1] xen, mm: Allow deferred page initialization for xen pv domains
...he callsites for optimal performance. I'd put it into struct x86_hyper_init and pre-init it with x86_init_noop > #else /* __ASSEMBLY__ */ > > #define _PVSITE(ptype, clobbers, ops, word, algn) \ > @@ -964,6 +969,10 @@ static inline void paravirt_arch_dup_mmap(struct mm_struct *oldmm, > static inline void paravirt_arch_exit_mmap(struct mm_struct *mm) > { > } > + > +static inline void paravirt_after_bootmem(void) > +{ > +} > #endif /* __ASSEMBLY__ */ > #endif /* !CONFIG_PARAVIRT */ > #endif /* _ASM_X86_PARAVIRT_H */ > diff --git a/arch/x86/...
2007 Sep 28
2
[PATCH RFC] paravirt_ops: refactor struct paravirt_ops into smaller pv_*_ops
...rrupt state. save_fl and restore_fl are only + * expected to use X86_EFLAGS_IF; all other bits + * returned from save_fl are undefined, and may be ignored by + * restore_fl. */ - void (*activate_mm)(struct mm_struct *prev, - struct mm_struct *next); - void (*dup_mmap)(struct mm_struct *oldmm, - struct mm_struct *mm); - void (*exit_mmap)(struct mm_struct *mm); - + unsigned long (*save_fl)(void); + void (*restore_fl)(unsigned long); + void (*irq_disable)(void); + void (*irq_enable)(void); + void (*safe_halt)(void); + void (*halt)(void); +} pv_irq_ops; + +struct pv_apic_ops { #ifdef C...
2007 Sep 28
2
[PATCH RFC] paravirt_ops: refactor struct paravirt_ops into smaller pv_*_ops
...rrupt state. save_fl and restore_fl are only + * expected to use X86_EFLAGS_IF; all other bits + * returned from save_fl are undefined, and may be ignored by + * restore_fl. */ - void (*activate_mm)(struct mm_struct *prev, - struct mm_struct *next); - void (*dup_mmap)(struct mm_struct *oldmm, - struct mm_struct *mm); - void (*exit_mmap)(struct mm_struct *mm); - + unsigned long (*save_fl)(void); + void (*restore_fl)(unsigned long); + void (*irq_disable)(void); + void (*irq_enable)(void); + void (*safe_halt)(void); + void (*halt)(void); +} pv_irq_ops; + +struct pv_apic_ops { #ifdef C...
2007 Apr 18
34
[patch 00/26] Xen-paravirt_ops: Xen guest implementation for paravirt_ops interface
Hi Andi, This patch series implements the Linux Xen guest as a paravirt_ops backend. The features in implemented this patch series are: * domU only * UP only (most code is SMP-safe, but there's no way to create a new vcpu) * writable pagetables, with late pinning/early unpinning (no shadow pagetable support) * supports both PAE and non-PAE modes * xen hvc console (console=hvc0) *
2007 Apr 18
34
[patch 00/26] Xen-paravirt_ops: Xen guest implementation for paravirt_ops interface
Hi Andi, This patch series implements the Linux Xen guest as a paravirt_ops backend. The features in implemented this patch series are: * domU only * UP only (most code is SMP-safe, but there's no way to create a new vcpu) * writable pagetables, with late pinning/early unpinning (no shadow pagetable support) * supports both PAE and non-PAE modes * xen hvc console (console=hvc0) *
2007 Apr 18
34
[patch 00/26] Xen-paravirt_ops: Xen guest implementation for paravirt_ops interface
Hi Andi, This patch series implements the Linux Xen guest as a paravirt_ops backend. The features in implemented this patch series are: * domU only * UP only (most code is SMP-safe, but there's no way to create a new vcpu) * writable pagetables, with late pinning/early unpinning (no shadow pagetable support) * supports both PAE and non-PAE modes * xen hvc console (console=hvc0) *
2007 Apr 18
24
[patch 00/24] Xen-paravirt_ops: Xen guest implementation for paravirt_ops interface
Hi Andi, This patch series implements the Linux Xen guest as a paravirt_ops backend. The features in implemented this patch series are: * domU only * UP only (most code is SMP-safe, but there's no way to create a new vcpu) * writable pagetables, with late pinning/early unpinning (no shadow pagetable support) * supports both PAE and non-PAE modes * xen hvc console (console=hvc0) *