/linux-5.10/arch/riscv/boot/dts/sifive/ |
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 …]
|
/linux-5.10/sound/pci/trident/ |
D | trident_memory.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 7 * Trident 4DWave-NX memory page allocation (TLB area) 23 do { (trident)->tlb.entries[page] = cpu_to_le32((addr) & ~(SNDRV_TRIDENT_PAGE_SIZE-1)); \ 24 (trident)->tlb.shadow_entries[page] = (ptr); } while (0) 26 (void*)((trident)->tlb.shadow_entries[page]) 28 (dma_addr_t)le32_to_cpu((trident->tlb.entries[page]) & ~(SNDRV_TRIDENT_PAGE_SIZE - 1)) 31 /* page size == SNDRV_TRIDENT_PAGE_SIZE */ 32 #define ALIGN_PAGE_SIZE PAGE_SIZE /* minimum page size for allocation */ 34 /* fill TLB entrie(s) corresponding to page with ptr */ 36 /* fill TLB entrie(s) corresponding to page with silence pointer */ [all …]
|
/linux-5.10/arch/sparc/mm/ |
D | hugetlbpage.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * SPARC64 Huge TLB page support. 17 #include <asm/tlb.h> 22 /* Slightly simplified from the non-hugepage variant because by 48 VM_BUG_ON(addr != -ENOMEM); in hugetlb_get_unmapped_area_bottomup() 64 struct mm_struct *mm = current->mm; in hugetlb_get_unmapped_area_topdown() 68 /* This should only ever run for 32-bit processes. */ in hugetlb_get_unmapped_area_topdown() 74 info.high_limit = mm->mmap_base; in hugetlb_get_unmapped_area_topdown() 81 * so fall back to the bottom-up function here. This scenario in hugetlb_get_unmapped_area_topdown() 86 VM_BUG_ON(addr != -ENOMEM); in hugetlb_get_unmapped_area_topdown() [all …]
|
/linux-5.10/arch/powerpc/mm/ |
D | hugetlbpage.c | 2 * PPC Huge TLB Page Support for Kernel. 7 * Based on the IA-32 version: 23 #include <asm/tlb.h> 26 #include <asm/pte-walk.h> 32 #define PTE_T_ORDER (__builtin_ffs(sizeof(pte_basic_t)) - \ 41 return __find_linux_pte(mm->pgd, addr, NULL, NULL); in huge_pte_offset() 50 int i; in __hugepte_alloc() local 55 num_hugepd = 1 << (pshift - pdshift); in __hugepte_alloc() 57 cachep = PGT_CACHE(pdshift - pshift); in __hugepte_alloc() 63 return -ENOMEM; in __hugepte_alloc() [all …]
|
/linux-5.10/kernel/dma/ |
D | swiotlb.c | 1 // SPDX-License-Identifier: GPL-2.0-only 6 * I/O TLBs (aka DMA address translation hardware). 9 * Copyright (C) 2000, 2003 Hewlett-Packard Co 10 * David Mosberger-Tang <davidm@hpl.hp.com> 12 * 03/05/07 davidm Switch from PCI-DMA to generic device DMA API. 14 * unnecessary i-cache flushing. 21 #define pr_fmt(fmt) "software IO TLB: " fmt 24 #include <linux/dma-direct.h> 25 #include <linux/dma-map-ops.h> 48 #include <linux/iommu-helper.h> [all …]
|
/linux-5.10/include/asm-generic/ |
D | tlb.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* include/asm-generic/tlb.h 4 * Generic TLB shootdown code 32 * Generic MMU-gather implementation. 35 * correct and efficient ordering of freeing pages and TLB invalidations. 40 * 2) TLB invalidate page 49 * - tlb_gather_mmu() / tlb_finish_mmu(); start and finish a mmu_gather 51 * Finish in particular will issue a (final) TLB invalidate and free 54 * - tlb_start_vma() / tlb_end_vma(); marks the start / end of a VMA 59 * - tlb_remove_table() [all …]
|
/linux-5.10/Documentation/devicetree/bindings/riscv/ |
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 bindings for 'cpus' DT nodes 10 - Paul Walmsley <paul.walmsley@sifive.com> 11 - Palmer Dabbelt <palmer@sifive.com> 14 This document uses some terminology common to the RISC-V community 18 mandated by the RISC-V ISA: a PC and some registers. This 28 - items: 29 - enum: [all …]
|
/linux-5.10/arch/powerpc/mm/book3s64/ |
D | hash_tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 4 * TLB and MMU hash table. 7 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 25 #include <asm/tlb.h> 27 #include <asm/pte-walk.h> 49 int i, offset; in hpte_need_flush() local 51 i = batch->index; in hpte_need_flush() 54 * Get page size (maybe move back to caller). in hpte_need_flush() 57 * for SPEs, we obtain the page size from the slice, which thus in hpte_need_flush() 64 /* Mask the address for the correct page size */ in hpte_need_flush() [all …]
|
D | hash_native.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 23 #include <asm/tlb.h> 27 #include <asm/ppc-opcode.h> 28 #include <asm/feature-fixups.h> 30 #include <misc/cxl-base.h> 57 * i.e., r=1 and is=01 or is=10 or is=11 71 : : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "i"(r) in tlbiel_hash_set_isa300() 107 * * PRS=1, R=0, and RIC!=2 (The only process-scoped in tlbiel_all_isa300() 113 * Then flush the sets of the TLB proper. Hash mode uses in tlbiel_all_isa300() 114 * partition scoped TLB translations, which may be flushed in tlbiel_all_isa300() [all …]
|
/linux-5.10/arch/nios2/kernel/ |
D | cpuinfo.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 41 if (!of_property_read_bool(cpu, "altr,has-initda")) in setup_cpuinfo() 43 "hardware system to have more than 4-byte line data " in setup_cpuinfo() 46 cpuinfo.cpu_clock_freq = fcpu(cpu, "clock-frequency"); in setup_cpuinfo() 54 cpuinfo.has_div = of_property_read_bool(cpu, "altr,has-div"); in setup_cpuinfo() 55 cpuinfo.has_mul = of_property_read_bool(cpu, "altr,has-mul"); in setup_cpuinfo() 56 cpuinfo.has_mulx = of_property_read_bool(cpu, "altr,has-mulx"); in setup_cpuinfo() 57 cpuinfo.has_bmx = of_property_read_bool(cpu, "altr,has-bmx"); in setup_cpuinfo() 58 cpuinfo.has_cdx = of_property_read_bool(cpu, "altr,has-cdx"); in setup_cpuinfo() 59 cpuinfo.mmu = of_property_read_bool(cpu, "altr,has-mmu"); in setup_cpuinfo() [all …]
|
/linux-5.10/Documentation/core-api/ |
D | cachetlb.rst | 2 Cache and TLB Flushing Under Linux 7 This document describes the cache/tlb flushing interfaces called 17 thinking SMP cache/tlb flushing must be so inefficient, this is in 23 First, the TLB flushing interfaces, since they are the simplest. The 24 "TLB" is abstracted under Linux as something the cpu uses to cache 25 virtual-->physical address translations obtained from the software 27 possible for stale translations to exist in this "TLB" cache. 44 the TLB. After running, this interface must make sure that 47 there will be no entries in the TLB for 'mm'. 57 address translations from the TLB. After running, this [all …]
|
/linux-5.10/arch/powerpc/mm/nohash/ |
D | 44x.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 8 * -- paulus 11 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 27 #include <asm/code-patching.h> 31 /* Used by the 44x TLB replacement exception handler. 35 unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS; 42 /* The TLB miss handlers hard codes the watermark in a cmpli in ppc44x_update_tlb_hwater() 45 * in the 2 TLB miss handlers when updating the value in ppc44x_update_tlb_hwater() 52 * "Pins" a 256MB TLB entry in AS0 for kernel lowmem for 44x type MMU 56 unsigned int entry = tlb_44x_hwater--; in ppc44x_pin_tlb() [all …]
|
D | tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * This file contains the routines for TLB flushing. 6 * this does -not- include 603 however which shares the implementation with 9 * -- BenH 15 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) 39 #include <asm/tlb.h> 40 #include <asm/code-patching.h> 48 * This struct lists the sw-supported page sizes. The hardawre MMU may support 147 /* The variables below are currently only used on 64-bit Book3E 153 int mmu_linear_psize; /* Page size used for the linear mapping */ [all …]
|
/linux-5.10/drivers/parisc/ |
D | ccio-dma.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 ** ccio-dma.c: 4 ** DMA management routines for first generation cache-coherent machines. 5 ** Program U2/Uturn in "Virtual Mode" and use the I/O MMU. 9 ** (c) Copyright 2000 Hewlett-Packard Company 15 ** the I/O MMU - basically what x86 does. 17 ** Philipp Rumpf has a "Real Mode" driver for PCX-W machines at: 18 ** CVSROOT=:pserver:anonymous@198.186.203.37:/cvsroot/linux-parisc 19 ** cvs -z3 co linux/arch/parisc/kernel/dma-rm.c 21 ** I've rewritten his code to work under TPG's tree. See ccio-rm-dma.c. [all …]
|
/linux-5.10/arch/microblaze/include/asm/ |
D | mmu.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> 4 * Copyright (C) 2008-2009 PetaLogix 12 # include <asm-generic/mmu.h> 30 unsigned long w:1; /* Write-thru cache mode */ 31 unsigned long i:1; /* Cache inhibited */ member 46 unsigned long t:1; /* Normal or I/O type */ 49 unsigned long n:1; /* No-execute */ 54 extern void _tlbie(unsigned long va); /* invalidate a TLB entry */ 55 extern void _tlbia(void); /* invalidate all TLB entries */ [all …]
|
/linux-5.10/arch/parisc/kernel/ |
D | cache.c | 6 * Copyright (C) 1999-2006 Helge Deller <deller@gmx.de> (07-13-1999) 10 * Cache and TLB management 42 /* On some machines (i.e., ones with the Merced bus), there can be 44 * by software. We need a spinlock around all TLB flushes to ensure 99 test_bit(PG_dcache_dirty, &page->flags)) { in update_mmu_cache() 101 clear_bit(PG_dcache_dirty, &page->flags); in update_mmu_cache() 111 seq_printf(m, "I-cache\t\t: %ld KB\n", in show_cache_info() 114 snprintf(buf, 32, "%lu-way associative", cache_info.dc_loop); in show_cache_info() 115 seq_printf(m, "D-cache\t\t: %ld KB (%s%s, %s)\n", in show_cache_info() 118 (cache_info.dc_conf.cc_sh ? ", shared I/D":""), in show_cache_info() [all …]
|
/linux-5.10/arch/parisc/include/uapi/asm/ |
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-5.10/arch/powerpc/include/asm/nohash/32/ |
D | pte-44x.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 9 * Because of the 3 word TLB entries to support 36-bit addressing, 11 * are easily loaded during exception processing. I decided to 14 * in as sensibly as they can be in the area below a 4KB page size 16 * ERPN fields in the TLB. -Matt 19 * easier to move into the TLB from the PTE. -BenH. 21 * Note that these bits preclude future use of a page size 25 * PPC 440 core has following TLB attribute fields; 29 * RPN................................. - - - - - - ERPN....... 33 * - - - - - - U0 U1 U2 U3 W I M G E - UX UW UR SX SW SR [all …]
|
D | pte-40x.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 7 * At present, all PowerPC 400-class processors share a similar TLB 9 * 64-entry, fully-associative TLB which is maintained totally under 11 * hardware-managed, 4-entry, fully-associative TLB which serves as a 12 * first level to the shared TLB. These two TLBs are known as the UTLB 19 * RPN..................... 0 0 EX WR ZSEL....... W I M G 23 * - bits 20 and 21 must be cleared, because we use 4k pages (40x can 26 * - We use only zones 0 (for kernel pages) and 1 (for user pages) 27 * of the 16 available. Bit 24-26 of the TLB are cleared in the TLB 30 * - PRESENT *must* be in the bottom two bits because swap cache [all …]
|
/linux-5.10/arch/mips/netlogic/xlp/ |
D | setup.c | 2 * Copyright 2003-2011 NetLogic Microsystems, Inc. (NetLogic). All rights 47 #include <asm/netlogic/xlp-hal/iomap.h> 48 #include <asm/netlogic/xlp-hal/xlp.h> 49 #include <asm/netlogic/xlp-hal/sys.h> 58 uint64_t sysbase = nlm_get_node(0)->sysbase; in nlm_linux_exit() 74 memblock_remove(mem->base + mem->size - pref_backup, in nlm_fixup_mem() 82 int i, n; in xlp_init_mem_from_bars() local 84 n = nlm_get_dram_map(-1, map, ARRAY_SIZE(map)); /* -1 : all nodes */ in xlp_init_mem_from_bars() 85 for (i = 0; i < n; i += 2) { in xlp_init_mem_from_bars() 86 /* exclude 0x1000_0000-0x2000_0000, u-boot device */ in xlp_init_mem_from_bars() [all …]
|
/linux-5.10/arch/openrisc/mm/ |
D | init.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 11 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> 34 #include <asm/tlb.h> 62 * This is explicitly coded for two-level page tables, so if you need 75 u64 i; in map_ram() local 76 /* These mark extents of read-only kernel pages... in map_ram() 83 for_each_mem_range(i, &start, &end) { in map_ram() 98 "two-level page tables", in map_ram() 124 printk(KERN_INFO "%s: Memory: 0x%x-0x%x\n", __func__, in map_ram() 125 region->base, region->base + region->size); in map_ram() [all …]
|
/linux-5.10/arch/arc/mm/ |
D | tlb.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * TLB Management (flush/create/diagnostics) for ARC700 5 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 8 * -Reintroduce duplicate PD fixup - some customer chips still have the issue 11 * -No need to flush_cache_page( ) for each call to update_mmu_cache() 13 * = page-fault thrice as fast (75 usec to 28 usec) 18 * -MMU v3: PD{0,1} bits layout changed: They don't overlap anymore, 22 * -MMU v2/v3 BCRs decoded differently 23 * -Remove TLB_SIZE hardcoding as it's variable now: 256 or 512 24 * -tlb_entry_erase( ) can be void [all …]
|
/linux-5.10/arch/x86/mm/ |
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; 23 void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table) in paravirt_tlb_remove_table() argument 25 tlb_remove_page(tlb, table); in paravirt_tlb_remove_table() 39 return -EINVAL; in setup_userpte() 48 return -EINVAL; in setup_userpte() 53 void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) in ___pte_free_tlb() argument 57 paravirt_tlb_remove_table(tlb, pte); in ___pte_free_tlb() 61 void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) in ___pmd_free_tlb() argument [all …]
|
/linux-5.10/tools/perf/pmu-events/arch/powerpc/power9/ |
D | pipeline.json | 10 "BriefDescription": "Number of I-ERAT reloads" 25 …"BriefDescription": "Finish stall because the NTF instruction was a multi-cycle instruction issued… 35 …"BriefDescription": "A Page Table Entry was loaded into the TLB from another chip's L4 on a differ… 40 …"BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L2 without confl… 80 …"BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from anothe… 95 …"BriefDescription": "A Page Table Entry was loaded into the TLB with Modified (M) data from anothe… 110 "BriefDescription": "Data ERAT Miss (Data TLB Access) page size 4K" 115 …"BriefDescription": "A Page Table Entry was loaded into the TLB from local core's L3 without dispa… 120 …"BriefDescription": "Marked Data ERAT Miss (Data TLB Access) page size 16G (hpt mode) and 1G (radi… 160 …"BriefDescription": "A Page Table Entry was loaded into the TLB either shared or modified data fro… [all …]
|
/linux-5.10/arch/sparc/kernel/ |
D | tsb.S | 1 /* SPDX-License-Identifier: GPL-2.0 */ 17 /* Invoked from TLB miss handler, we are in the 23 * %g3: FAULT_CODE_{D,I}TLB 46 * %g1 -- PAGE_SIZE TSB entry address 47 * %g3 -- FAULT_CODE_{D,I}TLB 48 * %g4 -- missing virtual address 49 * %g6 -- TAG TARGET (vaddr >> 22) 67 cmp %g5, -1 106 * %g1 -- TSB entry address 107 * %g3 -- FAULT_CODE_{D,I}TLB [all …]
|