| /linux/tools/testing/selftests/memory-hotplug/ |
| H A D | mem-on-off-test.sh | 25 if ! ls $SYSFS/devices/system/memory/memory* > /dev/null 2>&1; then 26 echo $msg memory hotplug is not supported >&2 30 if ! grep -q 1 $SYSFS/devices/system/memory/memory*/removable; then 31 echo $msg no hot-pluggable memory >&2 43 for memory in $SYSFS/devices/system/memory/memory*; do 44 if grep -q 1 $memory/removable && 45 grep -q $state $memory/state; then 46 echo ${memory##/*/memory} 63 grep -q online $SYSFS/devices/system/memory/memory$1/state 68 grep -q offline $SYSFS/devices/system/memory/memory$1/state [all …]
|
| /linux/drivers/gpu/drm/nouveau/nvkm/core/ |
| H A D | memory.c | 30 nvkm_memory_tags_put(struct nvkm_memory *memory, struct nvkm_device *device, in nvkm_memory_tags_put() argument 39 kfree(memory->tags); in nvkm_memory_tags_put() 40 memory->tags = NULL; in nvkm_memory_tags_put() 48 nvkm_memory_tags_get(struct nvkm_memory *memory, struct nvkm_device *device, in nvkm_memory_tags_get() argument 56 if ((tags = memory->tags)) { in nvkm_memory_tags_get() 94 *ptags = memory->tags = tags; in nvkm_memory_tags_get() 101 struct nvkm_memory *memory) in nvkm_memory_ctor() argument 103 memory->func = func; in nvkm_memory_ctor() 104 kref_init(&memory->kref); in nvkm_memory_ctor() 110 struct nvkm_memory *memory = container_of(kref, typeof(*memory), kref); in nvkm_memory_del() local [all …]
|
| H A D | firmware.c | 113 #define nvkm_firmware_mem(p) container_of((p), struct nvkm_firmware, mem.memory) 116 nvkm_firmware_mem_sgl(struct nvkm_memory *memory) in nvkm_firmware_mem_sgl() argument 118 struct nvkm_firmware *fw = nvkm_firmware_mem(memory); in nvkm_firmware_mem_sgl() 132 nvkm_firmware_mem_map(struct nvkm_memory *memory, u64 offset, struct nvkm_vmm *vmm, in nvkm_firmware_mem_map() argument 135 struct nvkm_firmware *fw = nvkm_firmware_mem(memory); in nvkm_firmware_mem_map() 137 .memory = &fw->mem.memory, in nvkm_firmware_mem_map() 139 .sgl = nvkm_firmware_mem_sgl(memory), in nvkm_firmware_mem_map() 149 nvkm_firmware_mem_size(struct nvkm_memory *memory) in nvkm_firmware_mem_size() argument 151 struct scatterlist *sgl = nvkm_firmware_mem_sgl(memory); in nvkm_firmware_mem_size() 157 nvkm_firmware_mem_addr(struct nvkm_memory *memory) in nvkm_firmware_mem_addr() argument [all …]
|
| /linux/Documentation/arch/arm64/ |
| H A D | kdump.rst | 2 crashkernel memory reservation on arm64 9 reserved memory is needed to pre-load the kdump kernel and boot such 12 That reserved memory for kdump is adapted to be able to minimally 19 Through the kernel parameters below, memory can be reserved accordingly 21 large chunk of memomy can be found. The low memory reservation needs to 22 be considered if the crashkernel is reserved from the high memory area. 28 Low memory and high memory 31 For kdump reservations, low memory is the memory area under a specific 34 vmcore dumping can be ignored. On arm64, the low memory upper bound is 37 whole system RAM is low memory. Outside of the low memory described [all …]
|
| /linux/arch/arm64/boot/dts/renesas/ |
| H A D | r8a78000-ironhide.dts | 23 memory@60600000 { 24 device_type = "memory"; 29 memory@1080000000 { 30 device_type = "memory"; 34 memory@1200000000 { 35 device_type = "memory"; 39 memory@1400000000 { 40 device_type = "memory"; 44 memory@1600000000 { 45 device_type = "memory"; [all …]
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/ |
| H A D | mem.c | 22 #define nvkm_mem(p) container_of((p), struct nvkm_mem, memory) 31 struct nvkm_memory memory; member 43 nvkm_mem_target(struct nvkm_memory *memory) in nvkm_mem_target() argument 45 return nvkm_mem(memory)->target; in nvkm_mem_target() 49 nvkm_mem_page(struct nvkm_memory *memory) in nvkm_mem_page() argument 55 nvkm_mem_addr(struct nvkm_memory *memory) in nvkm_mem_addr() argument 57 struct nvkm_mem *mem = nvkm_mem(memory); in nvkm_mem_addr() 64 nvkm_mem_size(struct nvkm_memory *memory) in nvkm_mem_size() argument 66 return nvkm_mem(memory)->pages << PAGE_SHIFT; in nvkm_mem_size() 70 nvkm_mem_map_dma(struct nvkm_memory *memory, u64 offset, struct nvkm_vmm *vmm, in nvkm_mem_map_dma() argument [all …]
|
| H A D | umem.c | 38 struct nvkm_memory *memory = NULL; in nvkm_umem_search() local 48 memory = nvkm_memory_ref(umem->memory); in nvkm_umem_search() 56 memory = nvkm_memory_ref(umem->memory); in nvkm_umem_search() 59 return memory ? memory : ERR_PTR(-ENOENT); in nvkm_umem_search() 98 int ret = nvkm_mem_map_host(umem->memory, &umem->map); in nvkm_umem_map() 103 *length = nvkm_memory_size(umem->memory); in nvkm_umem_map() 109 int ret = mmu->func->mem.umap(mmu, umem->memory, argv, argc, in nvkm_umem_map() 130 nvkm_memory_unref(&umem->memory); in nvkm_umem_dtor() 178 &umem->memory); in nvkm_umem_new() 186 args->v0.page = nvkm_memory_page(umem->memory); in nvkm_umem_new() [all …]
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-devices-memory | 1 What: /sys/devices/system/memory 5 The /sys/devices/system/memory contains a snapshot of the 6 internal state of the kernel memory blocks. Files could be 9 Users: hotplug memory add/remove tools 12 What: /sys/devices/system/memory/memoryX/removable 16 The file /sys/devices/system/memory/memoryX/removable is a 17 legacy interface used to indicated whether a memory block is 19 "1" if and only if the kernel supports memory offlining. 20 Users: hotplug memory remove tools 24 What: /sys/devices/system/memory/memoryX/phys_device [all …]
|
| H A D | sysfs-kernel-mm-memory-tiers | 3 Contact: Linux memory management mailing list <linux-mm@kvack.org> 4 Description: A collection of all the memory tiers allocated. 6 Individual memory tier details are contained in subdirectories 7 named by the abstract distance of the memory tier. 15 Contact: Linux memory management mailing list <linux-mm@kvack.org> 16 Description: Directory with details of a specific memory tier 19 memory tier, memtierN, where N is derived based on abstract distance. 21 A smaller value of N implies a higher (faster) memory tier in the 24 nodelist: NUMA nodes that are part of this memory tier.
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/ |
| H A D | base.c | 34 struct nvkm_memory *memory = &iobj->memory; in nvkm_instobj_load() local 35 const u64 size = nvkm_memory_size(memory); in nvkm_instobj_load() 39 if (!(map = nvkm_kmap(memory))) { in nvkm_instobj_load() 41 nvkm_wo32(memory, i, iobj->suspend[i / 4]); in nvkm_instobj_load() 45 nvkm_done(memory); in nvkm_instobj_load() 54 struct nvkm_memory *memory = &iobj->memory; in nvkm_instobj_save() local 55 const u64 size = nvkm_memory_size(memory); in nvkm_instobj_save() 63 if (!(map = nvkm_kmap(memory))) { in nvkm_instobj_save() 65 iobj->suspend[i / 4] = nvkm_ro32(memory, i); in nvkm_instobj_save() 69 nvkm_done(memory); in nvkm_instobj_save() [all …]
|
| H A D | nv50.c | 44 #define nv50_instobj(p) container_of((p), struct nv50_instobj, base.memory) 57 nv50_instobj_wr32_slow(struct nvkm_memory *memory, u64 offset, u32 data) in nv50_instobj_wr32_slow() argument 59 struct nv50_instobj *iobj = nv50_instobj(memory); in nv50_instobj_wr32_slow() 76 nv50_instobj_rd32_slow(struct nvkm_memory *memory, u64 offset) in nv50_instobj_rd32_slow() argument 78 struct nv50_instobj *iobj = nv50_instobj(memory); in nv50_instobj_rd32_slow() 103 nv50_instobj_wr32(struct nvkm_memory *memory, u64 offset, u32 data) in nv50_instobj_wr32() argument 105 iowrite32_native(data, nv50_instobj(memory)->map + offset); in nv50_instobj_wr32() 109 nv50_instobj_rd32(struct nvkm_memory *memory, u64 offset) in nv50_instobj_rd32() argument 111 return ioread32_native(nv50_instobj(memory)->map + offset); in nv50_instobj_rd32() 125 struct nvkm_memory *memory = &iobj->base.memory; in nv50_instobj_kmap() local [all …]
|
| H A D | gk20a.c | 59 #define gk20a_instobj(p) container_of((p), struct gk20a_instobj, base.memory) 116 gk20a_instobj_target(struct nvkm_memory *memory) in gk20a_instobj_target() argument 122 gk20a_instobj_page(struct nvkm_memory *memory) in gk20a_instobj_page() argument 128 gk20a_instobj_addr(struct nvkm_memory *memory) in gk20a_instobj_addr() argument 130 return (u64)gk20a_instobj(memory)->mn->offset << 12; in gk20a_instobj_addr() 134 gk20a_instobj_size(struct nvkm_memory *memory) in gk20a_instobj_size() argument 136 return (u64)gk20a_instobj(memory)->mn->length << 12; in gk20a_instobj_size() 151 imem->vaddr_use -= nvkm_memory_size(&obj->base.base.memory); in gk20a_instobj_iommu_recycle_vaddr() 174 gk20a_instobj_acquire_dma(struct nvkm_memory *memory) in gk20a_instobj_acquire_dma() argument 176 struct gk20a_instobj *node = gk20a_instobj(memory); in gk20a_instobj_acquire_dma() [all …]
|
| H A D | nv40.c | 39 #define nv40_instobj(p) container_of((p), struct nv40_instobj, base.memory) 48 nv40_instobj_wr32(struct nvkm_memory *memory, u64 offset, u32 data) in nv40_instobj_wr32() argument 50 struct nv40_instobj *iobj = nv40_instobj(memory); in nv40_instobj_wr32() 55 nv40_instobj_rd32(struct nvkm_memory *memory, u64 offset) in nv40_instobj_rd32() argument 57 struct nv40_instobj *iobj = nv40_instobj(memory); in nv40_instobj_rd32() 68 nv40_instobj_release(struct nvkm_memory *memory) in nv40_instobj_release() argument 74 nv40_instobj_acquire(struct nvkm_memory *memory) in nv40_instobj_acquire() argument 76 struct nv40_instobj *iobj = nv40_instobj(memory); in nv40_instobj_acquire() 81 nv40_instobj_size(struct nvkm_memory *memory) in nv40_instobj_size() argument 83 return nv40_instobj(memory)->node->length; in nv40_instobj_size() [all …]
|
| H A D | nv04.c | 38 #define nv04_instobj(p) container_of((p), struct nv04_instobj, base.memory) 47 nv04_instobj_wr32(struct nvkm_memory *memory, u64 offset, u32 data) in nv04_instobj_wr32() argument 49 struct nv04_instobj *iobj = nv04_instobj(memory); in nv04_instobj_wr32() 55 nv04_instobj_rd32(struct nvkm_memory *memory, u64 offset) in nv04_instobj_rd32() argument 57 struct nv04_instobj *iobj = nv04_instobj(memory); in nv04_instobj_rd32() 69 nv04_instobj_release(struct nvkm_memory *memory) in nv04_instobj_release() argument 74 nv04_instobj_acquire(struct nvkm_memory *memory) in nv04_instobj_acquire() argument 76 struct nv04_instobj *iobj = nv04_instobj(memory); in nv04_instobj_acquire() 82 nv04_instobj_size(struct nvkm_memory *memory) in nv04_instobj_size() argument 84 return nv04_instobj(memory)->node->length; in nv04_instobj_size() [all …]
|
| /linux/Documentation/admin-guide/mm/ |
| H A D | numaperf.rst | 8 Some platforms may have multiple types of memory attached to a compute 9 node. These disparate memory ranges may share some characteristics, such 13 A system supports such heterogeneous memory by grouping each memory type 15 characteristics. Some memory may share the same node as a CPU, and others 16 are provided as memory only nodes. While memory only nodes do not provide 19 nodes with local memory and a memory only node for each of compute node:: 30 A "memory initiator" is a node containing one or more devices such as 31 CPUs or separate memory I/O devices that can initiate memory requests. 32 A "memory target" is a node containing one or more physical address 33 ranges accessible from one or more memory initiators. [all …]
|
| H A D | concepts.rst | 5 The memory management in Linux is a complex system that evolved over the 7 systems from MMU-less microcontrollers to supercomputers. The memory 19 The physical memory in a computer system is a limited resource and 20 even for systems that support memory hotplug there is a hard limit on 21 the amount of memory that can be installed. The physical memory is not 27 All this makes dealing directly with physical memory quite complex and 28 to avoid this complexity a concept of virtual memory was developed. 30 The virtual memory abstracts the details of physical memory from the 32 physical memory (demand paging) and provides a mechanism for the 35 With virtual memory, each and every memory access uses a virtual [all …]
|
| /linux/Documentation/edac/ |
| H A D | memory_repair.rst | 20 Some memory devices support repair operations to address issues in their 21 memory media. Post Package Repair (PPR) and memory sparing are examples of 27 Post Package Repair is a maintenance operation which requests the memory 28 device to perform repair operation on its media. It is a memory self-healing 29 feature that fixes a failing memory location by replacing it with a spare row 32 For example, a CXL memory device with DRAM components that support PPR 42 The data may not be retained and memory requests may not be correctly 46 For example, for CXL memory devices, see CXL spec rev 3.1 [1]_ sections 53 Memory sparing is a repair function that replaces a portion of memory with 54 a portion of functional memory at a particular granularity. Memory [all …]
|
| H A D | scrub.rst | 19 Increasing DRAM size and cost have made memory subsystem reliability an 25 reads data from each memory media location, corrects if necessary and writes 26 the corrected data back to the same memory media location. 28 DIMMs can be scrubbed at a configurable rate to detect uncorrected memory 35 2. When detected, uncorrected errors caught in unallocated memory pages are 39 memory errors. 41 4. The additional data on failures in memory may be used to build up 42 statistics that are later used to decide whether to use memory repair 45 There are 2 types of memory scrubbing: 49 2. On-demand scrubbing for a specific address range or region of memory. [all …]
|
| /linux/drivers/staging/octeon/ |
| H A D | ethernet-mem.c | 49 char *memory; in cvm_oct_free_hw_skbuff() local 52 memory = cvmx_fpa_alloc(pool); in cvm_oct_free_hw_skbuff() 53 if (memory) { in cvm_oct_free_hw_skbuff() 55 *(struct sk_buff **)(memory - sizeof(void *)); in cvm_oct_free_hw_skbuff() 59 } while (memory); in cvm_oct_free_hw_skbuff() 79 char *memory; in cvm_oct_fill_hw_memory() local 94 memory = kmalloc(size + 256, GFP_ATOMIC); in cvm_oct_fill_hw_memory() 95 if (unlikely(!memory)) { in cvm_oct_fill_hw_memory() 100 fpa = (char *)(((unsigned long)memory + 256) & ~0x7fUL); in cvm_oct_fill_hw_memory() 101 *((char **)fpa - 1) = memory; in cvm_oct_fill_hw_memory() [all …]
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
| H A D | ram.c | 24 #define nvkm_vram(p) container_of((p), struct nvkm_vram, memory) 32 struct nvkm_memory memory; member 39 nvkm_vram_kmap(struct nvkm_memory *memory, struct nvkm_memory **pmemory) in nvkm_vram_kmap() argument 41 return nvkm_instobj_wrap(nvkm_vram(memory)->ram->fb->subdev.device, memory, pmemory); in nvkm_vram_kmap() 45 nvkm_vram_map(struct nvkm_memory *memory, u64 offset, struct nvkm_vmm *vmm, in nvkm_vram_map() argument 48 struct nvkm_vram *vram = nvkm_vram(memory); in nvkm_vram_map() 50 .memory = &vram->memory, in nvkm_vram_map() 59 nvkm_vram_size(struct nvkm_memory *memory) in nvkm_vram_size() argument 61 return (u64)nvkm_mm_size(nvkm_vram(memory)->mn) << NVKM_RAM_MM_SHIFT; in nvkm_vram_size() 65 nvkm_vram_addr(struct nvkm_memory *memory) in nvkm_vram_addr() argument [all …]
|
| /linux/Documentation/userspace-api/media/v4l/ |
| H A D | dev-mem2mem.rst | 10 A V4L2 memory-to-memory device can compress, decompress, transform, or 11 otherwise convert video data from one format into another format, in memory. 12 Such memory-to-memory devices set the ``V4L2_CAP_VIDEO_M2M`` or 13 ``V4L2_CAP_VIDEO_M2M_MPLANE`` capability. Examples of memory-to-memory 17 A memory-to-memory video node acts just like a normal video node, but it 18 supports both output (sending frames from memory to the hardware) 20 memory) stream I/O. An application will have to setup the stream I/O for 24 Memory-to-memory devices function as a shared resource: you can 33 One of the most common memory-to-memory device is the codec. Codecs 36 See :ref:`codec-controls`. More details on how to use codec memory-to-memory
|
| /linux/tools/testing/memblock/tests/ |
| H A D | basic_api.c | 17 ASSERT_NE(memblock.memory.regions, NULL); in memblock_initialization_check() 18 ASSERT_EQ(memblock.memory.cnt, 0); in memblock_initialization_check() 19 ASSERT_EQ(memblock.memory.max, EXPECTED_MEMBLOCK_REGIONS); in memblock_initialization_check() 20 ASSERT_EQ(strcmp(memblock.memory.name, "memory"), 0); in memblock_initialization_check() 24 ASSERT_EQ(memblock.memory.max, EXPECTED_MEMBLOCK_REGIONS); in memblock_initialization_check() 45 rgn = &memblock.memory.regions[0]; in memblock_add_simple_check() 60 ASSERT_EQ(memblock.memory.cnt, 1); in memblock_add_simple_check() 61 ASSERT_EQ(memblock.memory.total_size, r.size); in memblock_add_simple_check() 78 rgn = &memblock.memory.regions[0]; in memblock_add_node_simple_check() 97 ASSERT_EQ(memblock.memory.cnt, 1); in memblock_add_node_simple_check() [all …]
|
| /linux/Documentation/driver-api/cxl/linux/ |
| H A D | dax-driver.rst | 7 memory-like access mechanism to memory-like block-devices. It was 9 memory devices. 14 - Engage the memory-hotplug interface to add CXL memory to page allocator. 23 memory region exposed via dax device can be accessed via userland software 27 Users wishing to manually handle allocation of CXL memory should use this 33 memory blocks` managed by :code:`kernel/memory-hotplug.c`. This capacity 34 will be exposed to the kernel page allocator in the user-selected memory 39 for this memory will come from. If :code:`memmap_on_memory` is set, memory 40 hotplug will set aside a portion of the memory block capacity to allocate 41 folios. If unset, the memory is allocated via a normal :code:`GFP_KERNEL`
|
| /linux/drivers/cxl/ |
| H A D | Kconfig | 16 memory targets, the CXL.io protocol is equivalent to PCI Express. 27 The CXL specification defines a "CXL memory device" sub-class in the 28 PCI "memory controller" base class of devices. Device's identified by 30 memory to be mapped into the system address map (Host-managed Device 33 Say 'y/m' to enable a driver that will attach to CXL memory expander 34 devices enumerated by the memory device class code for configuration 54 potential impact to memory currently in use by the kernel. 68 Enable support for host managed device memory (HDM) resources 69 published by a platform's ACPI CXL memory layout description. See 84 In addition to typical memory resources a platform may also advertise [all …]
|
| /linux/Documentation/devicetree/bindings/reserved-memory/ |
| H A D | xen,shared-memory.txt | 1 * Xen hypervisor reserved-memory binding 3 Expose one or more memory regions as reserved-memory to the guest 5 to be a shared memory area across multiple virtual machines for 8 For each of these pre-shared memory regions, a range is exposed under 9 the /reserved-memory node as a child node. Each range sub-node is named 13 compatible = "xen,shared-memory-v1" 16 the base guest physical address and size of the shared memory region 20 memory region used for the mapping in the borrower VM. 23 a string that identifies the shared memory region as specified in
|