/linux-6.14.4/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 …]
|
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-6.14.4/arch/sparc/mm/ |
D | hugetlbpage.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * SPARC64 Huge TLB page support. 17 #include <asm/tlb.h> 159 unsigned long size = 1UL << huge_tte_to_shift(pte); in huge_tte_to_size() local 161 if (size == REAL_HPAGE_SIZE) in huge_tte_to_size() 162 size = HPAGE_SIZE; in huge_tte_to_size() 163 return size; in huge_tte_to_size() 224 unsigned long i, size; in __set_huge_pte_at() local 227 size = huge_tte_to_size(entry); in __set_huge_pte_at() 230 if (size >= PUD_SIZE) in __set_huge_pte_at() [all …]
|
/linux-6.14.4/arch/riscv/boot/dts/microchip/ |
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-6.14.4/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 (trident)->tlb.entries[page] = cpu_to_le32((addr) & ~(SNDRV_TRIDENT_PAGE_SIZE-1)) 25 (dma_addr_t)le32_to_cpu((trident->tlb.entries[page]) & ~(SNDRV_TRIDENT_PAGE_SIZE - 1)) 28 /* page size == SNDRV_TRIDENT_PAGE_SIZE */ 29 #define ALIGN_PAGE_SIZE PAGE_SIZE /* minimum page size for allocation */ 31 /* fill TLB entrie(s) corresponding to page with ptr */ 33 /* fill TLB entrie(s) corresponding to page with silence pointer */ 34 #define set_silent_tlb(trident,page) __set_tlb_bus(trident, page, trident->tlb.silent_page->addr) 43 /* page size == SNDRV_TRIDENT_PAGE_SIZE x 2*/ [all …]
|
/linux-6.14.4/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 <[email protected]> 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 27 #include <linux/dma-direct.h> 28 #include <linux/dma-map-ops.h> 33 #include <linux/iommu-helper.h> [all …]
|
/linux-6.14.4/arch/powerpc/boot/dts/ |
D | microwatt.dts | 1 /dts-v1/; 4 #size-cells = <0x02>; 5 #address-cells = <0x02>; 6 model-name = "microwatt"; 7 compatible = "microwatt-soc"; 13 reserved-memory { 14 #size-cells = <0x02>; 15 #address-cells = <0x02>; 26 #clock-cells = <0>; 27 compatible = "fixed-clock"; [all …]
|
/linux-6.14.4/arch/riscv/boot/dts/starfive/ |
D | jh7100.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 OR MIT 7 /dts-v1/; 8 #include <dt-bindings/clock/starfive-jh7100.h> 9 #include <dt-bindings/reset/starfive-jh7100.h> 13 #address-cells = <2>; 14 #size-cells = <2>; 17 #address-cells = <1>; 18 #size-cells = <0>; 21 compatible = "sifive,u74-mc", "riscv"; 23 d-cache-block-size = <64>; [all …]
|
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-6.14.4/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_gather_mmu_fullmm() / tlb_finish_mmu() 53 * Finish in particular will issue a (final) TLB invalidate and free 56 * - tlb_start_vma() / tlb_end_vma(); marks the start / end of a VMA 61 * - tlb_remove_table() [all …]
|
/linux-6.14.4/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 ([email protected]) 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> 95 va &= ~((1ul << (64 - 52)) - 1); in ___tlbie() 100 : : "r" (va), "r"(0), "i" (CPU_FTR_ARCH_206) in ___tlbie() 104 /* We need 14 to 14 + i bits of va */ in ___tlbie() 106 va &= ~((1ul << mmu_psize_defs[apsize].shift) - 1); in ___tlbie() 119 : : "r" (va), "r"(0), "i" (CPU_FTR_ARCH_206) in ___tlbie() [all …]
|
/linux-6.14.4/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 CPUs 10 - Paul Walmsley <[email protected]> 11 - Palmer Dabbelt <[email protected]> 12 - Conor Dooley <[email protected]> 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-6.14.4/mm/ |
D | mmu_gather.c | 14 #include <asm/tlb.h> 18 static bool tlb_next_batch(struct mmu_gather *tlb) in tlb_next_batch() argument 23 if (tlb->delayed_rmap && tlb->active != &tlb->local) in tlb_next_batch() 26 batch = tlb->active; in tlb_next_batch() 27 if (batch->next) { in tlb_next_batch() 28 tlb->active = batch->next; in tlb_next_batch() 32 if (tlb->batch_count == MAX_GATHER_BATCH_COUNT) in tlb_next_batch() 39 tlb->batch_count++; in tlb_next_batch() 40 batch->next = NULL; in tlb_next_batch() 41 batch->nr = 0; in tlb_next_batch() [all …]
|
/linux-6.14.4/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-6.14.4/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 ([email protected]) 27 #include <asm/text-patching.h> 32 /* Used by the 44x TLB replacement exception handler. 36 unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS; 43 /* The TLB miss handlers hard codes the watermark in a cmpli in ppc44x_update_tlb_hwater() 46 * in the 2 TLB miss handlers when updating the value in ppc44x_update_tlb_hwater() 53 * "Pins" a 256MB TLB entry in AS0 for kernel lowmem for 44x type MMU 57 unsigned int entry = tlb_44x_hwater--; in ppc44x_pin_tlb() [all …]
|
/linux-6.14.4/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-6.14.4/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 13 ** the I/O MMU - basically what x86 does. 16 ** o outbound DMA is slower - U2 won't prefetch data (GSC+ XQL signal). 17 ** o Inbound DMA less efficient - U2 can't use DMA_FAST attribute. 19 ** o Doesn't work under PCX-U/U+ machines since they didn't follow 20 ** the coherency design originally worked out. Only PCX-W does. [all …]
|
/linux-6.14.4/arch/parisc/kernel/ |
D | cache.c | 6 * Copyright (C) 1999-2006 Helge Deller <[email protected]> (07-13-1999) 10 * Cache and TLB management 55 void flush_data_cache_local(void *); /* flushes local data-cache only */ 56 void flush_instruction_cache_local(void); /* flushes local code-cache only */ 60 /* On some machines (i.e., ones with the Merced bus), there can be 62 * by software. We need a spinlock around all TLB flushes to ensure 125 test_bit(PG_dcache_dirty, &folio->flags)) { in __update_cache() 126 while (nr--) in __update_cache() 128 clear_bit(PG_dcache_dirty, &folio->flags); in __update_cache() 130 while (nr--) in __update_cache() [all …]
|
/linux-6.14.4/arch/microblaze/include/asm/ |
D | mmu.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 * Copyright (C) 2008-2009 Michal Simek <[email protected]> 4 * Copyright (C) 2008-2009 PetaLogix 27 unsigned long w:1; /* Write-thru cache mode */ 28 unsigned long i:1; /* Cache inhibited */ member 43 unsigned long t:1; /* Normal or I/O type */ 46 unsigned long n:1; /* No-execute */ 51 extern void _tlbie(unsigned long va); /* invalidate a TLB entry */ 52 extern void _tlbia(void); /* invalidate all TLB entries */ 55 * tlb_skip size stores actual number skipped TLBs from TLB0 - every directy TLB [all …]
|
/linux-6.14.4/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-6.14.4/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 …]
|
/linux-6.14.4/arch/alpha/kernel/ |
D | pci_iommu.c | 1 // SPDX-License-Identifier: GPL-2.0 14 #include <linux/dma-map-ops.h> 15 #include <linux/iommu-helper.h> 44 return (paddr >> (PAGE_SHIFT-1)) | 1; in mk_iommu_pte() 68 /* Note that the TLB lookup logic uses bitwise concatenation, in iommu_arena_new_node() 70 the size of the window. Retain the align parameter so that in iommu_arena_new_node() 71 particular systems can over-align the arena. */ in iommu_arena_new_node() 76 arena->ptes = memblock_alloc_or_panic(mem_size, align); in iommu_arena_new_node() 78 spin_lock_init(&arena->lock); in iommu_arena_new_node() 79 arena->hose = hose; in iommu_arena_new_node() [all …]
|
/linux-6.14.4/drivers/gpu/drm/msm/ |
D | msm_iommu.c | 1 // SPDX-License-Identifier: GPL-2.0-only 7 #include <linux/adreno-smmu-priv.h> 8 #include <linux/io-pgtable.h> 24 const struct iommu_flush_ops *tlb; member 38 size_t size, size_t *count) in calc_pgsize() argument 45 /* Page sizes supported by the hardware and small enough for @size */ in calc_pgsize() 46 pgsizes = pagetable->pgsize_bitmap & GENMASK(__fls(size), 0); in calc_pgsize() 52 /* Make sure we have at least one suitable page size */ in calc_pgsize() 55 /* Pick the biggest page size remaining */ in calc_pgsize() 61 /* Find the next biggest support page size, if it exists */ in calc_pgsize() [all …]
|
/linux-6.14.4/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; 24 void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table) in paravirt_tlb_remove_table() argument 29 tlb_remove_page(tlb, ptdesc_page(ptdesc)); in paravirt_tlb_remove_table() 33 void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table) in paravirt_tlb_remove_table() argument 35 tlb_remove_table(tlb, table); in paravirt_tlb_remove_table() 50 return -EINVAL; in setup_userpte() 59 return -EINVAL; in setup_userpte() 64 void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte) in ___pte_free_tlb() argument [all …]
|