cregit-Linux how code gets into the kernel

Release 4.11 arch/x86/mm/pgtable_32.c

Directory: arch/x86/mm
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/nmi.h>
#include <linux/swap.h>
#include <linux/smp.h>
#include <linux/highmem.h>
#include <linux/pagemap.h>
#include <linux/spinlock.h>

#include <asm/pgtable.h>
#include <asm/pgalloc.h>
#include <asm/fixmap.h>
#include <asm/e820.h>
#include <asm/tlb.h>
#include <asm/tlbflush.h>
#include <asm/io.h>


unsigned int __VMALLOC_RESERVE = 128 << 20;

/*
 * Associate a virtual page frame with a given physical page frame 
 * and protection flags for that frame.
 */ 

void set_pte_vaddr(unsigned long vaddr, pte_t pteval) { pgd_t *pgd; pud_t *pud; pmd_t *pmd; pte_t *pte; pgd = swapper_pg_dir + pgd_index(vaddr); if (pgd_none(*pgd)) { BUG(); return; } pud = pud_offset(pgd, vaddr); if (pud_none(*pud)) { BUG(); return; } pmd = pmd_offset(pud, vaddr); if (pmd_none(*pmd)) { BUG(); return; } pte = pte_offset_kernel(pmd, vaddr); if (!pte_none(pteval)) set_pte_at(&init_mm, vaddr, pte, pteval); else pte_clear(&init_mm, vaddr, pte); /* * It's enough to flush this one mapping. * (PGE mappings get flushed as well) */ __flush_tlb_one(vaddr); }

Contributors

PersonTokensPropCommitsCommitProp
Dan Aloni7653.15%111.11%
Andi Kleen2819.58%111.11%
Jan Beulich2114.69%222.22%
Andrew Morton106.99%222.22%
Jeremy Fitzhardinge64.20%222.22%
Dave Hansen21.40%111.11%
Total143100.00%9100.00%

unsigned long __FIXADDR_TOP = 0xfffff000; EXPORT_SYMBOL(__FIXADDR_TOP); /* * vmalloc=size forces the vmalloc area to be exactly 'size' * bytes. This can be used to increase (or decrease) the * vmalloc area - the default is 128m. */
static int __init parse_vmalloc(char *arg) { if (!arg) return -EINVAL; /* Add VMALLOC_OFFSET to the parsed value due to vm area guard hole*/ __VMALLOC_RESERVE = memparse(arg, &arg) + VMALLOC_OFFSET; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Yinghai Lu3391.67%150.00%
Dave Young38.33%150.00%
Total36100.00%2100.00%

early_param("vmalloc", parse_vmalloc); /* * reservetop=size reserves a hole at the top of the kernel address space which * a hypervisor can load into later. Needed for dynamically loaded hypervisors, * so relocating the fixmap can be done before paging initialization. */
static int __init parse_reservetop(char *arg) { unsigned long address; if (!arg) return -EINVAL; address = memparse(arg, &arg); reserve_top_address(address); early_ioremap_init(); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Yinghai Lu4293.33%133.33%
Liang Li24.44%133.33%
Mark Salter12.22%133.33%
Total45100.00%3100.00%

early_param("reservetop", parse_reservetop);

Overall Contributors

PersonTokensPropCommitsCommitProp
Dan Aloni11637.30%15.26%
Yinghai Lu9129.26%15.26%
Andi Kleen289.00%15.26%
Jan Beulich216.75%210.53%
Jeremy Fitzhardinge175.47%315.79%
Andrew Morton165.14%421.05%
Pekka J Enberg82.57%15.26%
Dave Young30.96%15.26%
Ingo Molnar30.96%15.26%
Prarit Bhargava30.96%15.26%
Liang Li20.64%15.26%
Dave Hansen20.64%15.26%
Mark Salter10.32%15.26%
Total311100.00%19100.00%
Directory: arch/x86/mm
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.