| /linux/tools/perf/tests/ |
| H A D | topology.c | 1 // SPDX-License-Identifier: GPL-2.0 15 #define TEMPL "/tmp/perf-test-XXXXXX" 27 return -1; in get_temp() 46 session->evlist = evlist__new_default(&target, /*sample_callchains=*/false); in session_write_header() 47 TEST_ASSERT_VAL("can't get evlist", session->evlist); in session_write_header() 48 session->evlist->sessio in session_write_header() 63 check_cpu_topology(char * path,struct perf_cpu_map * map) check_cpu_topology() argument 72 struct perf_cpu cpu; check_cpu_topology() local 205 struct perf_cpu_map *map; test__session_topology() local [all...] |
| H A D | mem2node.c | 1 // SPDX-License-Identifier: GPL-2.0 15 const char *map; member 17 { .node = 0, .map = "0" }, 18 { .node = 1, .map = "1-2" }, 19 { .node = 3, .map = "5-7,9" }, 26 struct perf_cpu_map *map in get_bitmap() local 32 struct perf_cpu cpu; get_bitmap() local 49 struct mem2node map; test__mem2node() local [all...] |
| /linux/tools/lib/perf/ |
| H A D | cpumap.c | 1 // SPDX-License-Identifier: GPL-2.0-only 18 void perf_cpu_map__set_nr(struct perf_cpu_map *map, unsigned int nr_cpus) in perf_cpu_map__set_nr() argument 20 RC_CHK_ACCESS(map)->nr = nr_cpus; in perf_cpu_map__set_nr() 33 cpus->nr = nr_cpus; in perf_cpu_map__alloc() 34 refcount_set(&cpus->refcnt, 1); in perf_cpu_map__alloc() 44 RC_CHK_ACCESS(cpus)->ma in perf_cpu_map__new_any_cpu() 49 cpu_map__delete(struct perf_cpu_map * map) cpu_map__delete() argument 58 perf_cpu_map__get(struct perf_cpu_map * map) perf_cpu_map__get() argument 68 perf_cpu_map__put(struct perf_cpu_map * map) perf_cpu_map__put() argument 245 perf_cpu_map__new_int(int cpu) perf_cpu_map__new_int() argument 277 perf_cpu_map__has_any_cpu_or_is_empty(const struct perf_cpu_map * map) perf_cpu_map__has_any_cpu_or_is_empty() argument 282 perf_cpu_map__is_any_cpu_or_is_empty(const struct perf_cpu_map * map) perf_cpu_map__is_any_cpu_or_is_empty() argument 290 perf_cpu_map__is_empty(const struct perf_cpu_map * map) perf_cpu_map__is_empty() argument 295 perf_cpu_map__idx(const struct perf_cpu_map * cpus,struct perf_cpu cpu) perf_cpu_map__idx() argument 320 perf_cpu_map__has(const struct perf_cpu_map * cpus,struct perf_cpu cpu) perf_cpu_map__has() argument 346 perf_cpu_map__has_any_cpu(const struct perf_cpu_map * map) perf_cpu_map__has_any_cpu() argument 351 perf_cpu_map__min(const struct perf_cpu_map * map) perf_cpu_map__min() argument 353 struct perf_cpu cpu, result = { perf_cpu_map__min() local 365 perf_cpu_map__max(const struct perf_cpu_map * map) perf_cpu_map__max() argument [all...] |
| H A D | evlist.c | 1 // SPDX-License-Identifier: GPL-2.0 30 INIT_LIST_HEAD(&evlist->entries); in perf_evlist__init() 31 evlist->nr_entries = 0; in perf_evlist__init() 32 fdarray__init(&evlist->pollfd, 64); in perf_evlist__init() 39 if (perf_cpu_map__is_empty(evsel->cpus)) { in __perf_evlist__propagate_maps() 40 if (perf_cpu_map__is_empty(evsel->pmu_cpus)) { in __perf_evlist__propagate_maps() 42 * Assume the unset PMU cpus were for a system-wide in __perf_evlist__propagate_maps() 45 evsel->pmu_cpus = perf_cpu_map__new_online_cpus(); in __perf_evlist__propagate_maps() 47 if (evlist->has_user_cpus && !evsel->system_wide) { in __perf_evlist__propagate_maps() 52 evsel->cpus = perf_cpu_map__get(evlist->user_requested_cpus); in __perf_evlist__propagate_maps() [all …]
|
| /linux/tools/lib/perf/include/perf/ |
| H A D | cpumap.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 9 /** A wrapper around a CPU to avoid confusion with the perf_cpu_map's map's indices. */ 11 int16_t cpu; member 22 * perf_cpu_map__new_any_cpu - a map with a singular "any CPU"/dummy - 90 perf_cpu_map__for_each_cpu(cpu,idx,cpus) global() argument [all...] |
| /linux/tools/perf/util/ |
| H A D | cpumap.c | 1 // SPDX-License-Identifier: GPL-2.0 22 * CPU number. 34 return (data->mask32_data.long_size == 4) in perf_record_cpu_map_data__test_bit() 35 ? (bit_word32 < data->mask32_data.nr) && in perf_record_cpu_map_data__test_bit() 36 (data->mask32_data.mask[bit_word32] & bit_mask32) != 0 in perf_record_cpu_map_data__test_bit() 37 : (bit_word64 < data->mask64_data.nr) && in perf_record_cpu_map_data__test_bit() 38 (data->mask64_data.mask[bit_word64] & bit_mask64) != 0; in perf_record_cpu_map_data__test_bit() 41 /* Read ith mask value from data into the given 64-bi 67 struct perf_cpu_map *map; cpu_map__from_entries() local 97 struct perf_cpu_map *map; cpu_map__from_mask() local 110 int cpu; cpu_map__from_mask() local 129 struct perf_cpu_map *map; cpu_map__from_range() local 140 for (int cpu = data->range_cpu_data.start_cpu; cpu <= data->range_cpu_data.end_cpu; cpu_map__from_range() local 169 cpu_map__fprintf(struct perf_cpu_map * map,FILE * fp) cpu_map__fprintf() argument 206 cpu__get_topology_int(int cpu,const char * name,int * value) cpu__get_topology_int() argument 216 cpu__get_socket_id(struct perf_cpu cpu) cpu__get_socket_id() argument 222 aggr_cpu_id__socket(struct perf_cpu cpu,void * data __maybe_unused) aggr_cpu_id__socket() argument 258 struct perf_cpu cpu; cpu_aggr_map__new() local 300 cpu__get_die_id(struct perf_cpu cpu) cpu__get_die_id() argument 307 aggr_cpu_id__die(struct perf_cpu cpu,void * data) aggr_cpu_id__die() argument 330 cpu__get_cluster_id(struct perf_cpu cpu) cpu__get_cluster_id() argument 337 aggr_cpu_id__cluster(struct perf_cpu cpu,void * data) aggr_cpu_id__cluster() argument 354 cpu__get_core_id(struct perf_cpu cpu) cpu__get_core_id() argument 360 aggr_cpu_id__core(struct perf_cpu cpu,void * data) aggr_cpu_id__core() argument 379 aggr_cpu_id__cpu(struct perf_cpu cpu,void * data) aggr_cpu_id__cpu() argument 393 aggr_cpu_id__node(struct perf_cpu cpu,void * data __maybe_unused) aggr_cpu_id__node() argument 401 aggr_cpu_id__global(struct perf_cpu cpu,void * data __maybe_unused) aggr_cpu_id__global() argument 544 cpu__get_node(struct perf_cpu cpu) cpu__get_node() argument 577 unsigned int cpu, mem; cpu__setup_cpunode_map() local 626 cpu_map__snprint(struct perf_cpu_map * map,char * buf,size_t size) cpu_map__snprint() argument 635 struct perf_cpu cpu = { .cpu = INT16_MAX }; cpu_map__snprint() local 680 cpu_map__snprint_mask(struct perf_cpu_map * map,char * buf,size_t size) cpu_map__snprint_mask() argument 704 for (int cpu = last_cpu.cpu / 4 * 4; cpu >= 0; cpu -= 4) { cpu_map__snprint_mask() local [all...] |
| H A D | mmap.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Copyright (C) 2011-2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com> 5 * Parts came from evlist.c builtin-{top,stat,record}.c, see those files for further 35 len = bitmap_scnprintf(mask->bits, mask->nbits, buf, MASK_SIZE); in mmap_cpu_mask__scnprintf() 37 pr_debug("%p: %s mask[%zd]: %s\n", mask, tag, mask->nbits, buf); in mmap_cpu_mask__scnprintf() 40 size_t mmap__mmap_len(struct mmap *map) in mmap__mmap_len() argument 42 return perf_mmap__mmap_len(&map->core); in mmap__mmap_len() 72 static int perf_mmap__aio_enabled(struct mmap *map) in perf_mmap__aio_enabled() argument 74 return map->aio.nr_cblocks > 0; in perf_mmap__aio_enabled() 78 static int perf_mmap__aio_alloc(struct mmap *map, int idx) in perf_mmap__aio_alloc() argument [all …]
|
| /linux/kernel/bpf/ |
| H A D | local_storage.c | 1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/bpf-cgroup.h> 16 #include "../cgroup/cgroup-internal.h" 22 struct bpf_map map; member 29 static struct bpf_cgroup_storage_map *map_to_storage(struct bpf_map *map) in map_to_storage() argument 31 return container_of(map, struct bpf_cgroup_storage_map, map); in map_to_storage() 34 static bool attach_type_isolated(const struct bpf_map *map) in attach_type_isolated() argument 36 return map->key_size == sizeof(struct bpf_cgroup_storage_key); in attach_type_isolated() 39 static int bpf_cgroup_storage_key_cmp(const struct bpf_cgroup_storage_map *map, in bpf_cgroup_storage_key_cmp() argument 42 if (attach_type_isolated(&map->map)) { in bpf_cgroup_storage_key_cmp() [all …]
|
| H A D | cpumap.c | 1 // SPDX-License-Identifier: GPL-2.0-only 8 * DOC: cpu map 9 * The 'cpumap' is primarily used as a backend map for XDP BPF helper 13 * this map type redirects raw XDP frames to another CPU. The remote 14 * CPU will do SKB-allocation and call the normal network stack. 20 * basically allows for 10G wirespeed pre-filtering via bpf. 40 /* General idea: XDP packets getting XDP redirected to another CPU, 41 * will maximum be stored/queued for one driver ->poll() call. It is 43 * same CPU. Thus, cpu_map_flush operation can deduct via this_cpu_ptr() 47 #define CPU_MAP_BULK_SIZE 8 /* 8 == one cacheline on 64-bit archs */ [all …]
|
| H A D | hashtab.c | 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com 48 * from sys_bpf(). BPF recursion is prevented by incrementing the per CPU 52 * by pinning the task to the current CPU and incrementing the recursion 53 * protection across the map operation. 74 * it is only safe to use raw spinlock for preallocated hash map on a RT kernel, 76 * after hash map was fully converted to use bpf_mem_alloc, there will be 77 * non-synchronous memory allocation for non-preallocated hash map, so it is 86 struct bpf_map map; member 96 /* number of elements in non-preallocated hashtable are kept [all …]
|
| H A D | arraymap.c | 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com 27 for (i = 0; i < array->map.max_entries; i++) { in bpf_array_free_percpu() 28 free_percpu(array->pptrs[i]); in bpf_array_free_percpu() 38 for (i = 0; i < array->map.max_entries; i++) { in bpf_array_alloc_percpu() 39 ptr = bpf_map_alloc_percpu(&array->map, array->elem_size, 8, in bpf_array_alloc_percpu() 43 return -ENOMEM; in bpf_array_alloc_percpu() 45 array->pptrs[i] = ptr; in bpf_array_alloc_percpu() 55 bool percpu = attr->map_type == BPF_MAP_TYPE_PERCPU_ARRAY; in array_map_alloc_check() 59 if (attr->max_entries == 0 || attr->key_size != 4 || in array_map_alloc_check() [all …]
|
| /linux/drivers/clocksource/ |
| H A D | ingenic-timer.c | 1 // SPDX-License-Identifier: GPL-2.0 14 #include <linux/mfd/ingenic-tcu.h> 23 #include <dt-bindings/clock/ingenic,tcu.h> 32 unsigned int cpu; member 40 struct regmap *map; member 56 regmap_read(tcu->map, TCU_REG_TCNTc(tcu->cs_channel), &count); in ingenic_tcu_timer_read() 69 return container_of(timer, struct ingenic_tcu, timers[timer->cpu]); in to_ingenic_tcu() 83 regmap_write(tcu->map, TCU_REG_TECR, BIT(timer->channel)); in ingenic_tcu_cevt_set_state_shutdown() 95 return -EINVAL; in ingenic_tcu_cevt_set_next() 97 regmap_write(tcu->map, TCU_REG_TDFRc(timer->channel), next); in ingenic_tcu_cevt_set_next() [all …]
|
| /linux/lib/ |
| H A D | cpu_rmap.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * cpu_rmap.c: CPU affinity reverse-map support 13 * objects with CPU affinities. This can be seen as a reverse-map of 14 * CPU affinity. However, we do not assume that the object affinities 17 * CPU topology. 21 * alloc_cpu_rmap - allocate CPU affinity reverse-map 28 unsigned int cpu; in alloc_cpu_rmap() local 39 rmap = kzalloc(obj_offset + size * sizeof(rmap->obj[0]), flags); in alloc_cpu_rmap() 43 kref_init(&rmap->refcount); in alloc_cpu_rmap() 44 rmap->obj = (void **)((char *)rmap + obj_offset); in alloc_cpu_rmap() [all …]
|
| /linux/Documentation/bpf/ |
| H A D | map_hash.rst | 1 .. SPDX-License-Identifier: GPL-2.0-only 3 .. Copyright (C) 2022-2023 Isovalent, Inc. 10 - ``BPF_MAP_TYPE_HASH`` was introduced in kernel version 3.19 11 - ``BPF_MAP_TYPE_PERCPU_HASH`` was introduced in version 4.6 12 - Both ``BPF_MAP_TYPE_LRU_HASH`` and ``BPF_MAP_TYPE_LRU_PERCPU_HASH`` 16 purpose hash map storage. Both the key and the value can be structs, 20 to the max_entries limit that you specify. Hash maps use pre-allocation 22 used to disable pre-allocation when it is too memory expensive. 25 CPU. The per-cpu values are stored internally in an array. 32 shared across CPUs but it is possible to request a per CPU LRU list with [all …]
|
| H A D | map_cpumap.rst | 1 .. SPDX-License-Identifier: GPL-2.0-only 9 - ``BPF_MAP_TYPE_CPUMAP`` was introduced in kernel version 4.15 11 .. kernel-doc:: kernel/bpf/cpumap.c 12 :doc: cpu map 14 An example use-case for this map type is software based Receive Side Scaling (RSS). 16 The CPUMAP represents the CPUs in the system indexed as the map-key, and the 17 map-value is the config setting (per CPUMAP entry). Each CPUMAP entry has a dedicated 18 kernel thread bound to the given CPU to represent the remote CPU execution unit. 21 on the remote CPU. This allows an XDP program to split its processing across 22 multiple CPUs. For example, a scenario where the initial CPU (that sees/receives [all …]
|
| H A D | map_cgroup_storage.rst | 1 .. SPDX-License-Identifier: GPL-2.0-only 8 The ``BPF_MAP_TYPE_CGROUP_STORAGE`` map type represents a local fix-sized 13 The map provide a local storage at the cgroup that the BPF program is attached 19 ``BPF_MAP_TYPE_CGROUP_STORAGE`` map type. Some of its behaviors was changed in 25 The map uses key of type of either ``__u64 cgroup_inode_id`` or 38 map will share the same storage. Otherwise, if the type is 44 void *bpf_get_local_storage(void *map, u64 flags) 75 Userspace accessing map declared above:: 80 __u32 map_lookup(struct bpf_map *map, __u64 cgrp, enum bpf_attach_type type) 87 bpf_map_lookup_elem(bpf_map__fd(map), &key, &value); [all …]
|
| /linux/samples/bpf/ |
| H A D | map_perf_test_user.c | 1 // SPDX-License-Identifier: GPL-2.0-only 82 static void test_hash_prealloc(int cpu) in test_hash_prealloc() argument 90 printf("%d:hash_map_perf pre-alloc %lld events per sec\n", in test_hash_prealloc() 91 cpu, max_cnt * 1000000000ll / (time_get_ns() - start_time)); in test_hash_prealloc() 106 * It is fine that the user requests for a map with in pre_test_lru_hash_lookup() 108 * may return not found. For LRU map, we are not interested in pre_test_lru_hash_lookup() 109 * in such small map performance. in pre_test_lru_hash_lookup() 120 static void do_test_lru(enum test_type test, int cpu) in do_test_lru() argument 129 if (test == INNER_LRU_HASH_PREALLOC && cpu) { in do_test_lru() 130 /* If CPU is not 0, create inner_lru hash map and insert the fd in do_test_lru() [all …]
|
| /linux/drivers/gpu/drm/i915/gem/selftests/ |
| H A D | i915_gem_coherency.c | 2 * SPDX-License-Identifier: MIT 27 u32 *cpu; in cpu_set() local 30 i915_gem_object_lock(ctx->obj, NULL); in cpu_set() 31 err = i915_gem_object_prepare_write(ctx->obj, &needs_clflush); in cpu_set() 35 page = i915_gem_object_get_page(ctx->obj, offset >> PAGE_SHIFT); in cpu_set() 36 cpu = kmap_local_page(page) + offset_in_page(offset); in cpu_set() 39 drm_clflush_virt_range(cpu, sizeof(*cpu)); in cpu_set() 41 *cpu = v; in cpu_set() 44 drm_clflush_virt_range(cpu, sizeof(*cpu)); in cpu_set() 46 kunmap_local(cpu); in cpu_set() [all …]
|
| /linux/arch/sh/kernel/cpu/sh4/ |
| H A D | sq.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * arch/sh/kernel/cpu/sh4/sq.c 5 * General management API for SH-4 integrated Store Queues 7 * Copyright (C) 2001 - 2006 Paul Mundt 11 #include <linux/cpu.h> 23 #include <cpu/sq.h> 50 * sq_flush_range - Flush (prefetch) a specific SQ range 62 for (len >>= 5; len--; sq += 8) in sq_flush_range() 70 static inline void sq_mapping_list_add(struct sq_mapping *map) in sq_mapping_list_add() argument 78 p = &tmp->next; in sq_mapping_list_add() [all …]
|
| /linux/arch/x86/kernel/cpu/ |
| H A D | topology.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * CPU/APIC topology 24 #define pr_fmt(fmt) "CPU topo: " fmt 25 #include <linux/cpu.h> 36 #include "cpu.h" 39 * Map cpu index to physical APIC ID 49 /* Used for CPU number allocation and parallel CPU bringup */ 50 u32 cpuid_to_apicid[] __ro_after_init = { [0 ... NR_CPUS - 1] = BAD_APICID, }; 53 static struct { DECLARE_BITMAP(map, MAX_LOCAL_APIC); } apic_maps[TOPO_MAX_DOMAIN] __ro_after_init; 57 * with 1 as CPU #0 is reserved for the boot CPU. [all …]
|
| /linux/drivers/dma/ |
| H A D | cv1800b-dmamux.c | 1 // SPDX-License-Identifier: GPL-2.0 73 unsigned int cpu; member 79 struct cv1800_dmamux_map *map = route_data; in cv1800_dmamux_free() local 81 guard(spinlock_irqsave)(&dmamux->lock); in cv1800_dmamux_free() 83 regmap_update_bits(dmamux->regmap, in cv1800_dmamux_free() 84 DMAMUX_CH_REG(map->channel), in cv1800_dmamux_free() 85 DMAMUX_CH_MASK(map->channel), in cv1800_dmamux_free() 88 regmap_update_bits(dmamux->regmap, REG_DMA_INT_MUX, in cv1800_dmamux_free() 89 DMAMUX_INT_CH_MASK(map->channel, map->cpu), in cv1800_dmamux_free() 90 DMAMUX_INTEN_BIT(map->cpu)); in cv1800_dmamux_free() [all …]
|
| /linux/arch/arc/plat-axs10x/ |
| H A D | axs10x.c | 1 // SPDX-License-Identifier: GPL-2.0-only 5 * Copyright (C) 2013-15 Synopsys, Inc. (www.synopsys.com) 11 #include <asm/asm-offsets.h> 30 * Peripherals on CPU Card and Mother Board are wired to cpu intc via in axs10x_enable_gpio_intc_wire() 33 * --------------------- in axs10x_enable_gpio_intc_wire() 34 * | snps,arc700-intc | in axs10x_enable_gpio_intc_wire() 35 * --------------------- in axs10x_enable_gpio_intc_wire() 37 * ------------------- ------------------- in axs10x_enable_gpio_intc_wire() 38 * | snps,dw-apb-gpio | | snps,dw-apb-gpio | in axs10x_enable_gpio_intc_wire() 39 * ------------------- ------------------- in axs10x_enable_gpio_intc_wire() [all …]
|
| /linux/tools/testing/selftests/ring-buffer/ |
| H A D | map_test.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Ring-buffer memory mapping tests 36 return ret == -1 ? -errno : 0; in __tracefs_write() 45 return -1; in __tracefs_write_int() 63 return -1; in tracefs_reset() 65 return -1; in tracefs_reset() 67 return -1; in tracefs_reset() 69 return -1; in tracefs_reset() 79 int tracefs_cpu_map(struct tracefs_cpu_map_desc *desc, int cpu) in tracefs_cpu_map() argument 83 void *map; in tracefs_cpu_map() local [all …]
|
| /linux/arch/csky/mm/ |
| H A D | asid.c | 1 // SPDX-License-Identifier: GPL-2.0 7 * Copyright (C) 2002-2003 Deep Blue Solutions Ltd, all rights reserved. 16 #define reserved_asid(info, cpu) *per_cpu_ptr((info)->reserved, cpu) argument 18 #define ASID_MASK(info) (~GENMASK((info)->bits - 1, 0)) 19 #define ASID_FIRST_VERSION(info) (1UL << ((info)->bits)) 21 #define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift) 22 #define idx2asid(info, idx) (((idx) << (info)->ctxt_shift) & ~ASID_MASK(info)) 30 bitmap_zero(info->map, NUM_CTXT_ASIDS(info)); in flush_context() 35 * If this CPU has already been through a in flush_context() 43 __set_bit(asid2idx(info, asid), info->map); in flush_context() [all …]
|
| /linux/drivers/irqchip/ |
| H A D | irq-hip04.c | 1 // SPDX-License-Identifier: GPL-2.0-only 5 * Copyright (C) 2002-2014 ARM Limited. 6 * Copyright (c) 2013-2014 HiSilicon Ltd. 7 * Copyright (c) 2013-2014 Linaro Ltd. 14 * o There is one CPU Interface per CPU, which sends interrupts sent 16 * associated CPU. The base address of the CPU interface is usually 18 * on the CPU it is accessed from. 20 * Note that IRQs 0-31 are special - they are local to each CPU. 22 * registers are banked per-cpu for these sources. 31 #include <linux/cpu.h> [all …]
|