/linux/arch/riscv/boot/dts/sifive/ |
H A D | fu540-c000.dtsi | 1 // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 /* Copyright (c) 2018-2019 SiFive, Inc */ 4 /dts-v1/; 6 #include <dt-bindings/clock/sifive-fu540-prci.h> 9 #address-cells = <2>; 10 #size-cells = <2>; 11 compatible = "sifive,fu540-c000", "sifive,fu540"; 23 #address-cells = <1>; 24 #size-cells = <0>; 28 i-cache-block-size = <64>; [all …]
|
H A D | fu740-c000.dtsi | 1 // SPDX-License-Identifier: (GPL-2.0 OR MIT) 4 /dts-v1/; 6 #include <dt-bindings/clock/sifive-fu740-prci.h> 9 #address-cells = <2>; 10 #size-cells = <2>; 11 compatible = "sifive,fu740-c000", "sifive,fu740"; 23 #address-cells = <1>; 24 #size-cells = <0>; 28 i-cache-block-size = <64>; 29 i-cache-sets = <128>; [all …]
|
/linux/arch/powerpc/boot/dts/ |
H A D | microwatt.dts | 1 /dts-v1/; 2 #include <dt-bindings/gpio/gpio.h> 5 #size-cells = <0x02>; 6 #address-cells = <0x02>; 8 compatible = "microwatt-soc"; 15 reserved-memory { 16 #size-cells = <0x02>; 17 #address-cells = <0x02>; 28 #clock-cells = <0>; 29 compatible = "fixed-clock"; [all …]
|
/linux/arch/riscv/boot/dts/microchip/ |
H A D | mpfs.dtsi | 1 // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 /* Copyright (c) 2020-2021 Microchip Technology Inc */ 4 /dts-v1/; 5 #include "dt-bindings/clock/microchip,mpfs-clock.h" 8 #address-cells = <2>; 9 #size-cells = <2>; 14 #address-cells = <1>; 15 #size-cells = <0>; 16 timebase-frequency = <1000000>; 21 i-cache-block-size = <64>; [all …]
|
/linux/arch/arc/mm/ |
H A D | tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * TLB Management (flush/create/diagnostics) for MMUv3 and MMUv4 5 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 22 unsigned int ver, pg_sz_k, s_pg_sz_m, pae, sets, ways; member 26 * Utility Routine to erase a J-TLB entry 63 /* Locate the TLB entry for this vaddr + ASID */ in tlb_entry_erase() 82 * This also sets up PD0 (vaddr, ASID..) for final commit in tlb_entry_insert() 89 * with existing location. This will cause Write CMD to over-write in tlb_entry_insert() 95 /* setup the other half of TLB entry (pfn, rwx..) */ in tlb_entry_insert() 101 * which doesn't flush uTLBs. I'd rather be safe than sorry. in tlb_entry_insert() [all …]
|
/linux/Documentation/devicetree/bindings/riscv/ |
H A D | cpus.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR MIT) 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: RISC-V CPUs 10 - Paul Walmsley <paul.walmsley@sifive.com> 11 - Palmer Dabbelt <palmer@sifive.com> 12 - Conor Dooley <conor@kernel.org> 15 This document uses some terminology common to the RISC-V community 19 mandated by the RISC-V ISA: a PC and some registers. This 27 - $ref: /schemas/cpu.yaml# [all …]
|
/linux/arch/riscv/boot/dts/starfive/ |
H A D | jh7110.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 OR MIT 7 /dts-v1/; 8 #include <dt-bindings/clock/starfive,jh7110-crg.h> 9 #include <dt-bindings/power/starfive,jh7110-pmu.h> 10 #include <dt-bindings/reset/starfive,jh7110-crg.h> 11 #include <dt-bindings/thermal/thermal.h> 15 #address-cells = <2>; 16 #size-cells = <2>; 19 #address-cells = <1>; 20 #size-cells = <0>; [all …]
|
/linux/arch/parisc/include/asm/ |
H A D | ropes.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 5 #include <asm/parisc-device.h> 8 /* "low end" PA8800 machines use ZX1 chipset: PAT PDC and only run 64-bit */ 21 ** allocated and free'd/purged at a time might make this 33 unsigned long ibase; /* pdir IOV Space base - shared w/lba_pci */ 34 unsigned long imask; /* pdir IOV Space mask - shared w/lba_pci */ 38 unsigned long *res_hint; /* next avail IOVP - circular search */ 85 unsigned int num_ioc; /* number of on-board IOC's */ 98 static inline int IS_ASTRO(struct parisc_device *d) { in IS_ASTRO() argument 99 return d->id.hversion == ASTRO_RUNWAY_PORT; in IS_ASTRO() [all …]
|
/linux/mm/ |
H A D | vma_exec.c | 1 // SPDX-License-Identifier: GPL-2.0-only 5 * explicitly VMA-only logic. 13 * this VMA and its relocated range, which will now reside at [vma->vm_start - 14 * shift, vma->vm_end - shift). 32 struct mm_struct *mm = vma->vm_mm; in relocate_vma_down() 33 unsigned long old_start = vma->vm_start; in relocate_vma_down() 34 unsigned long old_end = vma->vm_end; in relocate_vma_down() 35 unsigned long length = old_end - old_start; in relocate_vma_down() 36 unsigned long new_start = old_start - shift; in relocate_vma_down() 37 unsigned long new_end = old_end - shift; in relocate_vma_down() [all …]
|
H A D | madvise.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <linux/page-isolation.h> 28 #include <linux/backing-dev.h> 35 #include <asm/tlb.h> 42 * and return -ERESTARTNOINTR to have userspace try again. 47 struct mmu_gather *tlb; member 53 struct mmu_gather *tlb; member 57 * Any behaviour which results in changes to the vma->vm_flags needs to 89 /* Add 1 for NUL terminator at the end of the anon_name->name */ in anon_vma_name_alloc() 93 kref_init(&anon_name->kref); in anon_vma_name_alloc() [all …]
|
/linux/arch/mips/mm/ |
H A D | c-octeon.c | 6 * Copyright (C) 2005-2007 Cavium Networks 20 #include <asm/cpu-features.h> 21 #include <asm/cpu-type.h> 33 * Octeon automatically flushes the dcache on tlb changes, so 49 * Flush local I-cache for the specified range. 58 * octeon_flush_icache_all_cores - Flush caches as necessary for all cores 82 mask = *mm_cpumask(vma->vm_mm); in octeon_flush_icache_all_cores() 109 * octeon_flush_cache_mm - flush all memory associated with a memory context. 133 * octeon_flush_cache_range - Flush a range out of a vma 142 if (vma->vm_flags & VM_EXEC) in octeon_flush_cache_range() [all …]
|
/linux/Documentation/arch/x86/ |
H A D | pti.rst | 1 .. SPDX-License-Identifier: GPL-2.0 27 This approach helps to ensure that side-channel attacks leveraging 30 time. Once enabled at compile-time, it can be disabled at boot with 31 the 'nopti' or 'pti=' kernel parameters (see kernel-parameters.txt). 36 When PTI is enabled, the kernel manages two sets of page tables. 43 that any missed kernel->user CR3 switch will immediately crash 49 each CPU's copy of the area a compile-time-fixed virtual address. 65 Protection against side-channel attacks is important. But, 70 a. Each process now needs an order-1 PGD instead of order-0. 89 feature of the MMU allows different processes to share TLB [all …]
|
H A D | sva.rst | 1 .. SPDX-License-Identifier: GPL-2.0 19 application page-faults. For more information please refer to the PCIe 25 mmu_notifier() support to keep the device TLB cache and the CPU cache in 34 Unlike Single Root I/O Virtualization (SR-IOV), Scalable IOV (SIOV) permits 40 ID (PASID), which is a 20-bit number defined by the PCIe SIG. 43 IOMMU to track I/O on a per-PASID granularity in addition to using the PCIe 55 ENQCMD works with non-posted semantics and carries a status back if the 67 A new thread-scoped MSR (IA32_PASID) provides the connection between 69 accesses an SVA-capable device, this MSR is initialized with a newly 70 allocated PASID. The driver for the device calls an IOMMU-specific API [all …]
|
/linux/arch/openrisc/mm/ |
H A D | tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * OpenRISC tlb.c 11 * Copyright (C) 2010-2011 Julius Baxter <julius.baxter@orsoc.se> 12 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> 29 #define NO_CONTEXT -1 35 #define DTLB_OFFSET(addr) (((addr) >> PAGE_SHIFT) & (NUM_DTLB_SETS-1)) 36 #define ITLB_OFFSET(addr) (((addr) >> PAGE_SHIFT) & (NUM_ITLB_SETS-1)) 38 * Invalidate all TLB entries. 51 /* Determine number of sets for IMMU. */ in local_flush_tlb_all() 52 /* FIXME: Assumption is I & D nsets equal. */ in local_flush_tlb_all() [all …]
|
/linux/arch/mips/kvm/ |
H A D | tlb.c | 6 * KVM/MIPS TLB handling, this file is part of the Linux host kernel so that 7 * TLB handlers run from KSEG0 26 #include <asm/tlb.h> 42 struct mm_struct *gpa_mm = &vcpu->kvm->arch.gpa_mm; in kvm_mips_get_root_asid() 79 * clear_root_gid() - Set GuestCtl1.RID for normal root operation. 90 * set_root_gid_to_guest_gid() - Set GuestCtl1.RID to match GuestCtl1.ID. 92 * Sets the root GuestID to match the current guest GuestID, for TLB operation 93 * on the GPA->RPA mappings in the root TLB. 96 * possibly longer if TLB registers are modified. 121 /* Set root GuestID for root probe and write of guest TLB entry */ in kvm_vz_host_tlb_inv() [all …]
|
/linux/arch/parisc/include/uapi/asm/ |
H A D | pdc.h | 1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 14 #define PDC_BAD_PROC -1 /* Called non-existent procedure*/ 15 #define PDC_BAD_OPTION -2 /* Called with non-existent option */ 16 #define PDC_ERROR -3 /* Call could not complete without an error */ 17 #define PDC_NE_MOD -5 /* Module not found */ 18 #define PDC_NE_CELL_MOD -7 /* Cell module not found */ 19 #define PDC_NE_BOOTDEV -9 /* Cannot locate a console device or boot device */ 20 #define PDC_INVALID_ARG -10 /* Called with an invalid argument */ 21 #define PDC_BUS_POW_WARN -12 /* Call could not complete in allowed power budget */ 22 #define PDC_NOT_NARROW -17 /* Narrow mode not supported */ [all …]
|
/linux/arch/parisc/mm/ |
H A D | fault.c | 39 * parisc_acctyp(unsigned int inst) -- 40 * Given a PA-RISC memory access instruction, determine if the 81 * older PA-RISC platforms. The case where a block in parisc_acctyp() 89 * 01 Graphics flush write (IO space -> VM) in parisc_acctyp() 90 * 10 Graphics flush read (VM -> IO space) in parisc_acctyp() 91 * 11 Graphics flush read/write (VM <-> IO space) in parisc_acctyp() 106 * Data TLB miss fault/data page fault in parisc_acctyp() 127 * not, but I want it committed to CVS so I don't lose it :-) 130 if (tree->vm_start > addr) { 131 tree = tree->vm_avl_left; [all …]
|
/linux/drivers/misc/sgi-gru/ |
H A D | grufault.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 5 * FAULT HANDLER FOR GRU DETECTED TLB MISSES 7 * This file contains code that handles TLB misses within the GRU. 33 #define VTOP_INVALID -1 34 #define VTOP_RETRY -2 52 vma = vma_lookup(current->mm, vaddr); in gru_find_vma() 53 if (vma && vma->vm_ops == &gru_vm_ops) in gru_find_vma() 62 * - *gts with the mmap_lock locked for read and the GTS locked. 63 * - NULL if vaddr invalid OR is not a valid GSEG vaddr. 68 struct mm_struct *mm = current->mm; in gru_find_lock_gts() [all …]
|
/linux/arch/microblaze/include/asm/ |
H A D | pgtable.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> 4 * Copyright (C) 2008-2009 PetaLogix 17 #include <asm-generic/pgtable-nopmd.h> 60 * The MicroBlaze MMU is identical to the PPC-40x MMU, and uses a hash 64 * We use the hash table as an extended TLB, i.e. a cache of currently 65 * active mappings. We maintain a two-level page table tree, much 67 * management code. Low-level assembler code in hashtable.S 74 * The MicroBlaze processor has a TLB architecture identical to PPC-40x. The 75 * instruction and data sides share a unified, 64-entry, semi-associative [all …]
|
/linux/arch/x86/mm/ |
H A D | pgtable.c | 1 // SPDX-License-Identifier: GPL-2.0 6 #include <asm/tlb.h> 11 phys_addr_t physical_mask __ro_after_init = (1ULL << __PHYSICAL_MASK_SHIFT) - 1; 21 void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) in ___pte_free_tlb() argument 24 tlb_remove_ptdesc(tlb, page_ptdesc(pte)); in ___pte_free_tlb() 28 void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) in ___pmd_free_tlb() argument 32 * NOTE! For PAE, any changes to the top page-directory-pointer-table in ___pmd_free_tlb() 36 tlb->need_flush_all = 1; in ___pmd_free_tlb() 38 tlb_remove_ptdesc(tlb, virt_to_ptdesc(pmd)); in ___pmd_free_tlb() 42 void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud) in ___pud_free_tlb() argument [all …]
|
H A D | tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-only 18 #include <asm/nospec-branch.h> 24 #include <asm/tlb.h> 39 * TLB flushing, formerly SMP-only 70 * Instead we have a small per-cpu array of ASIDs and cache the last few mm's 77 * ASID - [0, TLB_NR_DYN_ASIDS-1] 79 * [TLB_NR_DYN_ASIDS, MAX_ASID_AVAILABLE-1] 82 * kPCID - [1, MAX_ASID_AVAILABLE] 86 * uPCID - [2048 + 1, 2048 + MAX_ASID_AVAILABLE] 103 #define CR3_AVAIL_PCID_BITS (X86_CR3_PCID_BITS - PTI_CONSUMED_PCID_BITS) [all …]
|
/linux/arch/sh/kernel/cpu/ |
H A D | init.c | 1 // SPDX-License-Identifier: GPL-2.0 7 * Copyright (C) 2002 - 2009 Paul Mundt 39 * Generic wrapper for command line arguments to disable on-chip 85 * Disable support for slottable sleep instruction, non-nop in expmask_init() 87 * the memory-mapped cache array. in expmask_init() 98 /* 2nd-level cache init */ 104 * Generic first-level cache init 115 * At this point we don't know whether the cache is enabled or not - a in cache_init() 120 * => before re-initialising the cache, we must do a purge of the whole in cache_init() 123 * - RPC in cache_init() [all …]
|
/linux/arch/powerpc/include/asm/book3s/32/ |
H A D | pgtable.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 5 #include <asm-generic/pgtable-nopmd.h> 8 * The "classic" 32-bit implementation of the PowerPC MMU uses a hash 12 * We use the hash table as an extended TLB, i.e. a cache of currently 13 * active mappings. We maintain a two-level page table tree, much 15 * management code. Low-level assembler code in hash_low_32.S 27 #define _PAGE_WRITETHRU 0x040 /* W: cache write-through */ 53 * Location of the PFN in the PTE. Most 32-bit platforms use the same 55 * Platform who don't just pre-define the value so we don't override it here. 60 * The mask covered by the RPN must be a ULL on 32-bit platforms with [all …]
|
/linux/drivers/iommu/ |
H A D | exynos-iommu.c | 1 // SPDX-License-Identifier: GPL-2.0-only 12 #include <linux/dma-mapping.h> 25 #include "iommu-pages.h" 40 #define SECT_MASK (~(SECT_SIZE - 1)) 41 #define LPAGE_MASK (~(LPAGE_SIZE - 1)) 42 #define SPAGE_MASK (~(SPAGE_SIZE - 1)) 57 * v1.x - v3.x SYSMMU supports 32bit physical and 32bit virtual address spaces 64 static short PG_ENT_SHIFT = -1; 100 #define section_offs(iova) (iova & (SECT_SIZE - 1)) 102 #define lpage_offs(iova) (iova & (LPAGE_SIZE - 1)) [all …]
|
/linux/drivers/thermal/tegra/ |
H A D | soctherm.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Copyright (c) 2014 - 2018, NVIDIA CORPORATION. All rights reserved. 34 #include <dt-bindings/thermal/tegra124-soctherm.h> 197 #define REG_GET_MASK(r, m) (((r) & (m)) >> (ffs(m) - 1)) 200 (((v) & (m >> (ffs(m) - 1))) << (ffs(m) - 1))) 203 #define THROT_DEPTH_DIVIDEND(depth) ((256 * (100 - (depth)) / 100) - 1) 205 /* gk20a nv_therm interface N:3 Mapping. Levels defined in tegra124-soctherm.h 212 #define THROT_LEVEL_TO_DEPTH(level) ((0x1 << (level)) - 1) 229 (ALARM_OFFSET * (throt - THROTTLE_OC1))) 232 (ALARM_OFFSET * (throt - THROTTLE_OC1))) [all …]
|