search for: __flush_tlb

Displaying 20 results from an estimated 72 matches for "__flush_tlb".

2007 Apr 18
0
[RFC, PATCH 18/24] i386 Vmi tlbflush header
...--- linux-2.6.16-rc5.orig/include/asm-i386/tlbflush.h 2006-03-10 12:55:06.000000000 -0800 +++ linux-2.6.16-rc5/include/asm-i386/tlbflush.h 2006-03-10 13:03:38.000000000 -0800 @@ -4,38 +4,7 @@ #include <linux/config.h> #include <linux/mm.h> #include <asm/processor.h> - -#define __flush_tlb() \ - do { \ - unsigned int tmpreg; \ - \ - __asm__ __volatile__( \ - "movl %%cr3, %0; \n" \ - "movl %0, %%cr3; # flush TLB \n" \ - : "=r" (tmpreg) \ - :: "memory"); \ - } while (0) - -/* - * Glob...
2007 Apr 18
0
[RFC, PATCH 18/24] i386 Vmi tlbflush header
...--- linux-2.6.16-rc5.orig/include/asm-i386/tlbflush.h 2006-03-10 12:55:06.000000000 -0800 +++ linux-2.6.16-rc5/include/asm-i386/tlbflush.h 2006-03-10 13:03:38.000000000 -0800 @@ -4,38 +4,7 @@ #include <linux/config.h> #include <linux/mm.h> #include <asm/processor.h> - -#define __flush_tlb() \ - do { \ - unsigned int tmpreg; \ - \ - __asm__ __volatile__( \ - "movl %%cr3, %0; \n" \ - "movl %0, %%cr3; # flush TLB \n" \ - : "=r" (tmpreg) \ - :: "memory"); \ - } while (0) - -/* - * Glob...
2019 Jul 22
2
[PATCH v3 4/9] x86/mm/tlb: Flush remote and local TLBs concurrently
...ude/asm/tlbflush.h @@ -546,8 +546,9 @@ struct flush_tlb_info { unsigned long start; unsigned long end; u64 new_tlb_gen; - unsigned int stride_shift; - bool freed_tables; + unsigned int cpu; + unsigned short stride_shift; + unsigned char freed_tables; }; #define local_flush_tlb() __flush_tlb() Index: linux-2.6/arch/x86/mm/tlb.c =================================================================== --- linux-2.6.orig/arch/x86/mm/tlb.c +++ linux-2.6/arch/x86/mm/tlb.c @@ -659,6 +659,27 @@ static void flush_tlb_func_remote(void * flush_tlb_func_common(f, false, TLB_REMOTE_SHOOTDOWN); } +...
2019 Jul 22
2
[PATCH v3 4/9] x86/mm/tlb: Flush remote and local TLBs concurrently
...ude/asm/tlbflush.h @@ -546,8 +546,9 @@ struct flush_tlb_info { unsigned long start; unsigned long end; u64 new_tlb_gen; - unsigned int stride_shift; - bool freed_tables; + unsigned int cpu; + unsigned short stride_shift; + unsigned char freed_tables; }; #define local_flush_tlb() __flush_tlb() Index: linux-2.6/arch/x86/mm/tlb.c =================================================================== --- linux-2.6.orig/arch/x86/mm/tlb.c +++ linux-2.6/arch/x86/mm/tlb.c @@ -659,6 +659,27 @@ static void flush_tlb_func_remote(void * flush_tlb_func_common(f, false, TLB_REMOTE_SHOOTDOWN); } +...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 08/17] paravirt_ops - memory managment
...============ --- clean-start.orig/arch/x86_64/mm/init.c +++ clean-start/arch/x86_64/mm/init.c @@ -384,7 +384,7 @@ void __meminit init_memory_mapping(unsig } if (!after_bootmem) - asm volatile("movq %%cr4,%0" : "=r" (mmu_cr4_features)); + mmu_cr4_features = read_cr4(); __flush_tlb_all(); } @@ -398,7 +398,7 @@ void __cpuinit zap_low_mappings(int cpu) * For AP's, zap the low identity mappings by changing the cr3 * to init_level4_pgt and doing local flush tlb all */ - asm volatile("movq %0,%%cr3" :: "r" (__pa_symbol(&init_level4_pgt))...
2007 Apr 18
0
[RFC/PATCH PV_OPS X86_64 08/17] paravirt_ops - memory managment
...============ --- clean-start.orig/arch/x86_64/mm/init.c +++ clean-start/arch/x86_64/mm/init.c @@ -384,7 +384,7 @@ void __meminit init_memory_mapping(unsig } if (!after_bootmem) - asm volatile("movq %%cr4,%0" : "=r" (mmu_cr4_features)); + mmu_cr4_features = read_cr4(); __flush_tlb_all(); } @@ -398,7 +398,7 @@ void __cpuinit zap_low_mappings(int cpu) * For AP's, zap the low identity mappings by changing the cr3 * to init_level4_pgt and doing local flush tlb all */ - asm volatile("movq %0,%%cr3" :: "r" (__pa_symbol(&init_level4_pgt))...
2007 Feb 14
2
[PATCH 8/8] 2.6.17: scan DMI early
...me more */ + if (size >= LARGE_PAGE_SIZE) { + printk("SMBIOS area too long %lu\n", size); + return NULL; + } + set_pmd(temp_mappings[0].pmd, __pmd(map | _KERNPG_TABLE | _PAGE_PSE)); + map += LARGE_PAGE_SIZE; + set_pmd(temp_mappings[1].pmd, __pmd(map | _KERNPG_TABLE | _PAGE_PSE)); + __flush_tlb(); + return temp_mappings[0].address + (addr & (LARGE_PAGE_SIZE-1)); } /* To avoid virtual aliases later */ __init void early_iounmap(void *addr, unsigned long size) { - iounmap(addr); + if ((void *)round_down((unsigned long)addr, LARGE_PAGE_SIZE) != temp_mappings[0].address) + printk(&q...
2007 Apr 18
0
[PATCH 4/6] SMP boot hook for paravirt
...,6 +325,13 @@ static inline unsigned long apic_read(un } #endif +#ifdef CONFIG_SMP +static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip, + unsigned long start_esp) +{ + return paravirt_ops.startup_ipi_hook(phys_apicid, start_eip, start_esp); +} +#endif #define __flush_tlb() paravirt_ops.flush_tlb_user() #define __flush_tlb_global() paravirt_ops.flush_tlb_kernel() diff -r acfb7a15715f include/asm-i386/smp.h --- a/include/asm-i386/smp.h Thu Dec 14 16:22:03 2006 -0800 +++ b/include/asm-i386/smp.h Thu Dec 14 16:52:21 2006 -0800 @@ -52,6 +52,11 @@ extern void cpu_uninit...
2007 Apr 18
0
[PATCH 4/6] SMP boot hook for paravirt
...,6 +325,13 @@ static inline unsigned long apic_read(un } #endif +#ifdef CONFIG_SMP +static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip, + unsigned long start_esp) +{ + return paravirt_ops.startup_ipi_hook(phys_apicid, start_eip, start_esp); +} +#endif #define __flush_tlb() paravirt_ops.flush_tlb_user() #define __flush_tlb_global() paravirt_ops.flush_tlb_kernel() diff -r acfb7a15715f include/asm-i386/smp.h --- a/include/asm-i386/smp.h Thu Dec 14 16:22:03 2006 -0800 +++ b/include/asm-i386/smp.h Thu Dec 14 16:52:21 2006 -0800 @@ -52,6 +52,11 @@ extern void cpu_uninit...
2019 Jul 22
0
[PATCH v3 4/9] x86/mm/tlb: Flush remote and local TLBs concurrently
...sh_tlb_info { > unsigned long start; > unsigned long end; > u64 new_tlb_gen; > - unsigned int stride_shift; > - bool freed_tables; > + unsigned int cpu; > + unsigned short stride_shift; > + unsigned char freed_tables; > }; > > #define local_flush_tlb() __flush_tlb() > Index: linux-2.6/arch/x86/mm/tlb.c > =================================================================== > --- linux-2.6.orig/arch/x86/mm/tlb.c > +++ linux-2.6/arch/x86/mm/tlb.c > @@ -659,6 +659,27 @@ static void flush_tlb_func_remote(void * > flush_tlb_func_common(f, false,...
2007 Aug 10
9
[PATCH 0/25 -v2] paravirt_ops for x86_64, second round
Here is an slightly updated version of the paravirt_ops patch. If your comments and criticism were welcome before, now it's even more! There are some issues that are _not_ addressed in this revision, and here are the causes: * split debugreg into multiple functions, suggested by Andi: - Me and jsfg agree that introducing more pvops (specially 14!) is not worthwhile. So, although we do
2007 Aug 10
9
[PATCH 0/25 -v2] paravirt_ops for x86_64, second round
Here is an slightly updated version of the paravirt_ops patch. If your comments and criticism were welcome before, now it's even more! There are some issues that are _not_ addressed in this revision, and here are the causes: * split debugreg into multiple functions, suggested by Andi: - Me and jsfg agree that introducing more pvops (specially 14!) is not worthwhile. So, although we do
2019 May 31
2
[RFC PATCH v2 04/12] x86/mm/tlb: Flush remote and local TLBs concurrently
...avirt.h b/arch/x86/include/asm/paravirt.h index c25c38a05c1c..192be7254457 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -47,6 +47,8 @@ static inline void slow_down_io(void) #endif } +DECLARE_STATIC_KEY_TRUE(flush_tlb_multi_enabled); + static inline void __flush_tlb(void) { PVOP_VCALL0(mmu.flush_tlb_user); @@ -62,6 +64,12 @@ static inline void __flush_tlb_one_user(unsigned long addr) PVOP_VCALL1(mmu.flush_tlb_one_user, addr); } +static inline void flush_tlb_multi(const struct cpumask *cpumask, + const struct flush_tlb_info *info) +{ + PVOP_VCALL2...
2019 May 31
2
[RFC PATCH v2 04/12] x86/mm/tlb: Flush remote and local TLBs concurrently
...avirt.h b/arch/x86/include/asm/paravirt.h index c25c38a05c1c..192be7254457 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -47,6 +47,8 @@ static inline void slow_down_io(void) #endif } +DECLARE_STATIC_KEY_TRUE(flush_tlb_multi_enabled); + static inline void __flush_tlb(void) { PVOP_VCALL0(mmu.flush_tlb_user); @@ -62,6 +64,12 @@ static inline void __flush_tlb_one_user(unsigned long addr) PVOP_VCALL1(mmu.flush_tlb_one_user, addr); } +static inline void flush_tlb_multi(const struct cpumask *cpumask, + const struct flush_tlb_info *info) +{ + PVOP_VCALL2...
2019 May 25
0
[RFC PATCH 5/6] x86/mm/tlb: Flush remote and local TLBs concurrently
...ex c25c38a05c1c..192be7254457 100644 > --- a/arch/x86/include/asm/paravirt.h > +++ b/arch/x86/include/asm/paravirt.h > @@ -47,6 +47,8 @@ static inline void slow_down_io(void) > #endif > } > > +DECLARE_STATIC_KEY_TRUE(flush_tlb_multi_enabled); > + > static inline void __flush_tlb(void) > { > PVOP_VCALL0(mmu.flush_tlb_user); > @@ -62,6 +64,12 @@ static inline void __flush_tlb_one_user(unsigned long addr) > PVOP_VCALL1(mmu.flush_tlb_one_user, addr); > } > > +static inline void flush_tlb_multi(const struct cpumask *cpumask, > + const struc...
2019 May 31
0
[RFC PATCH v2 04/12] x86/mm/tlb: Flush remote and local TLBs concurrently
...ex c25c38a05c1c..192be7254457 100644 > --- a/arch/x86/include/asm/paravirt.h > +++ b/arch/x86/include/asm/paravirt.h > @@ -47,6 +47,8 @@ static inline void slow_down_io(void) > #endif > } > > +DECLARE_STATIC_KEY_TRUE(flush_tlb_multi_enabled); > + > static inline void __flush_tlb(void) > { > PVOP_VCALL0(mmu.flush_tlb_user); > @@ -62,6 +64,12 @@ static inline void __flush_tlb_one_user(unsigned long addr) > PVOP_VCALL1(mmu.flush_tlb_one_user, addr); > } > > +static inline void flush_tlb_multi(const struct cpumask *cpumask, > + const struc...
2007 Aug 15
13
[PATCH 0/25][V3] pvops_64 last round (hopefully)
This is hopefully the last iteration of the pvops64 patch. >From the last version, we have only one change, which is include/asm-x86_64/processor.h: There were still one survivor in raw asm. Also, git screwed me up for some reason, and the 25th patch was missing the new files, paravirt.{c,h}. (although I do remember having git-add'ed it, but who knows...) Andrew, could you please push it
2007 Aug 15
13
[PATCH 0/25][V3] pvops_64 last round (hopefully)
This is hopefully the last iteration of the pvops64 patch. >From the last version, we have only one change, which is include/asm-x86_64/processor.h: There were still one survivor in raw asm. Also, git screwed me up for some reason, and the 25th patch was missing the new files, paravirt.{c,h}. (although I do remember having git-add'ed it, but who knows...) Andrew, could you please push it
2007 Aug 08
19
Introducing paravirt_ops for x86_64
Hi folks, After some time away from it, and a big rebase as a consequence, here is the updated version of paravirt_ops for x86_64, heading to inclusion. Your criticism is of course, very welcome. Have fun -- arch/x86_64/Kconfig | 11 arch/x86_64/ia32/syscall32.c | 2 arch/x86_64/kernel/Makefile | 1 arch/x86_64/kernel/apic.c | 2
2007 Aug 08
19
Introducing paravirt_ops for x86_64
Hi folks, After some time away from it, and a big rebase as a consequence, here is the updated version of paravirt_ops for x86_64, heading to inclusion. Your criticism is of course, very welcome. Have fun -- arch/x86_64/Kconfig | 11 arch/x86_64/ia32/syscall32.c | 2 arch/x86_64/kernel/Makefile | 1 arch/x86_64/kernel/apic.c | 2