| /linux/Documentation/translations/zh_CN/mm/ |
| H A D | highmem.rst | 64 在本地的kmap区域中采取pagefaults是有效的,除非获取本地映射的上下文由于其他原因不允许 76 虽然它比kmap()快得多,但在高内存的情况下,它对指针的有效性有限制。与kmap()映射相反, 81 kmap(),将页面映射到将被使用的同一线程中,并优先使用kmap_local_page()。 98 * kmap()。这应该被用来对单个页面进行短时间的映射,对抢占或迁移没有限制。它会带来开销, 102 映射变化必须广播到所有CPU(核)上,kmap()还需要在kmap的池被回绕(TLB项用光了,需要从第 104 槽出现。因此,kmap()只能从可抢占的上下文中调用。 107 高内存映射都是短暂的,而且只在一个地方使用。这意味着在这种情况下,kmap()的成本大 108 多被浪费了。kmap()并不是为长期映射而设计的,但是它已经朝着这个方向发展了,在较新 111 在64位系统中,调用kmap_local_page()、kmap_atomic()和kmap()没有实际作用,因为64位
|
| /linux/tools/perf/util/ |
| H A D | map.c | 226 map = calloc(1, sizeof(*map) + (dso__kernel(dso) ? sizeof(struct kmap) : 0)); in map__new2() 244 struct kmap *kmap = __map__kmap((struct map *)map); in __map__is_extra_kernel_map() local 246 return kmap && kmap->name[0]; in __map__is_extra_kernel_map() 419 size += sizeof(struct kmap); in map__clone() 516 static const struct kmap *__map__const_kmap(const struct map *map); 531 const struct kmap *kmap = __map__const_kmap(map); in map__rip_2objdump() local 539 if (kmap && is_entry_trampoline(kmap->name) && kmap->kmaps) { in map__rip_2objdump() 540 struct machine *machine = maps__machine(kmap->kmaps); in map__rip_2objdump() 614 struct kmap *__map__kmap(struct map *map) in __map__kmap() 620 return (struct kmap *)(&RC_CHK_ACCESS(map)[1]); in __map__kmap() [all …]
|
| H A D | bpf_lock_contention.c | 114 struct map *kmap; in init_numa_data() local 144 &kmap); in init_numa_data() 146 skel->rodata->contig_page_data_addr = map__unmap_ip(kmap, sym->start); in init_numa_data() 147 map__put(kmap); in init_numa_data() 158 &kmap); in init_numa_data() 162 skel->rodata->node_data_addr = map__unmap_ip(kmap, sym->start); in init_numa_data() 163 map__put(kmap); in init_numa_data() 244 struct map *kmap; in lock_contention_prepare() 255 &kmap); in lock_contention_prepare() 269 addrs[con->filters->nr_addrs++] = map__unmap_ip(kmap, sy in lock_contention_prepare() 243 struct map *kmap; lock_contention_prepare() local 273 struct map *kmap; lock_contention_prepare() local 569 struct map *kmap; lock_contention_get_name() local [all...] |
| H A D | symbol-elf.c | 1347 * @kmap: kernel maps and relocation reference symbol in dso__process_kernel_symbol() 1353 static bool ref_reloc_sym_not_found(struct kmap *kmap) in dso__process_kernel_symbol() 1355 return kmap && kmap->ref_reloc_sym && kmap->ref_reloc_sym->name && in dso__process_kernel_symbol() 1356 !kmap->ref_reloc_sym->unrelocated_addr; in dso__process_kernel_symbol() 1361 * @kmap: kernel maps and relocation reference symbol in dso__process_kernel_symbol() 1367 static u64 ref_reloc(struct kmap *kmap) in dso__process_kernel_symbol() 1320 ref_reloc_sym_not_found(struct kmap * kmap) ref_reloc_sym_not_found() argument 1334 ref_reloc(struct kmap * kmap) ref_reloc() argument 1348 dso__process_kernel_symbol(struct dso * dso,struct map * map,GElf_Sym * sym,GElf_Shdr * shdr,struct maps * kmaps,struct kmap * kmap,struct dso ** curr_dsop,const char * section_name,bool adjust_kernel_syms,bool kmodule,bool * remap_kernel,u64 max_text_sh_offset) dso__process_kernel_symbol() argument 1474 struct kmap *kmap = dso__kernel(dso) ? map__kmap(map) : NULL; dso__load_sym_internal() local [all...] |
| H A D | machine.c | 1069 struct kmap *kmap; in find_entry_trampoline() 1080 kmap = map__kmap(map); in find_entry_trampoline() 1082 strlcpy(kmap->name, xm->name, KMAP_NAME_LEN); in find_entry_trampoline() 1088 kmap->name, map__start(map), map__end(map)); in find_entry_trampoline() 1136 struct kmap *kmap = __map__kmap(map); in machine__map_x86_64_entry_trampolines() 1138 if (!kmap || !is_entry_trampoline(kmap->name)) in machine__map_x86_64_entry_trampolines() 1221 struct kmap *kma in machines__create_guest_kernel_maps() 1042 struct kmap *kmap; machine__create_extra_kernel_map() local 1109 struct kmap *kmap = __map__kmap(map); machine__map_x86_64_entry_trampolines_cb() local 1194 struct kmap *kmap; machine__destroy_kernel_maps() local 3276 struct map *kmap; machine__is_lock_function() local [all...] |
| H A D | symbol.c | 1377 struct kmap *kmap = map__kmap(map); in validate_kcore_addresses() local 1379 if (!kmap) in validate_kcore_addresses() 1382 if (kmap->ref_reloc_sym && kmap->ref_reloc_sym->name) { in validate_kcore_addresses() 1386 kmap->ref_reloc_sym->name, &start)) in validate_kcore_addresses() 1388 if (start != kmap->ref_reloc_sym->addr) in validate_kcore_addresses() 1606 static int kallsyms__delta(struct kmap *kmap, const char *filename, u64 *delta) in kallsyms__delta() argument 1610 if (!kmap->ref_reloc_sym || !kmap->ref_reloc_sym->name) in kallsyms__delta() 1613 if (kallsyms__get_function_start(filename, kmap->ref_reloc_sym->name, &addr)) in kallsyms__delta() 1616 *delta = addr - kmap->ref_reloc_sym->addr; in kallsyms__delta() 1623 struct kmap *kmap = map__kmap(map); in __dso__load_kallsyms() local [all …]
|
| H A D | map.h | 40 struct kmap; 42 struct kmap *__map__kmap(struct map *map); 43 struct kmap *map__kmap(struct map *map);
|
| H A D | maps.h | 17 struct kmap { struct 19 kmapskmap global() argument 20 namekmap global() argument
|
| /linux/tools/perf/arch/x86/util/ |
| H A D | event.c | 28 struct kmap *kmap; in perf_event__synthesize_extra_kmaps_cb() local 34 kmap = map__kmap(map); in perf_event__synthesize_extra_kmaps_cb() 37 PERF_ALIGN(strlen(kmap->name) + 1, sizeof(u64)) + in perf_event__synthesize_extra_kmaps_cb() 60 strlcpy(event->mmap.filename, kmap->name, PATH_MAX); in perf_event__synthesize_extra_kmaps_cb()
|
| /linux/Documentation/mm/ |
| H A D | highmem.rst | 61 These functions should always be used, whereas kmap_atomic() and kmap() have 70 It's valid to take pagefaults in a local kmap region, unless the context 87 While they are significantly faster than kmap(), for the highmem case they 88 come with restrictions about the pointers validity. Contrary to kmap() 95 therefore try to design their code to avoid the use of kmap() by mapping 131 * kmap(). This function has been deprecated; use kmap_local_page(). 146 Mapping changes must be propagated across all the CPUs. kmap() also 147 requires global TLB invalidation when the kmap's pool wraps and it might 149 available. Therefore, kmap() is only callable from preemptible context. 154 kmap() is mostly wasted in such cases. kmap() was not intended for long [all …]
|
| /linux/arch/m68k/mm/ |
| H A D | Makefile | 9 obj-$(CONFIG_MMU_MOTOROLA) += kmap.o memory.o motorola.o hwtest.o 11 obj-$(CONFIG_MMU_COLDFIRE) += kmap.o memory.o mcfmmu.o
|
| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_chan.c | 181 chan->chan.push.mem.object.map.ptr = chan->push.buffer->kmap.virtual; in nouveau_channel_prep() 447 (u8*)chan->push.buffer->kmap.virtual + 0x10000, 0x2000, in nouveau_channel_init() 448 chan->push.buffer->kmap.virtual, chan->push.addr, 0x10000); in nouveau_channel_init() 454 (u8*)chan->push.buffer->kmap.virtual + 0x10000, 0x2000, in nouveau_channel_init() 455 chan->push.buffer->kmap.virtual, chan->push.addr, 0x10000, in nouveau_channel_init() 456 chan->sema.bo->kmap.virtual, chan->sema.vma->addr); in nouveau_channel_init() 461 (u8*)chan->push.buffer->kmap.virtual + 0x10000, 0x2000, in nouveau_channel_init() 462 chan->push.buffer->kmap.virtual, chan->push.addr, 0x10000, in nouveau_channel_init() 463 chan->sema.bo->kmap.virtual, chan->sema.vma->addr, in nouveau_channel_init()
|
| H A D | nouveau_gem.c | 444 ttm_bo_kunmap(&nvbo->kmap); in validate_fini_no_ticket() 707 if (!nvbo->kmap.virtual) { in nouveau_gem_pushbuf_reloc_apply() 709 &nvbo->kmap); in nouveau_gem_pushbuf_reloc_apply() 912 if (!nvbo->kmap.virtual) { in nouveau_gem_ioctl_pushbuf() 915 &nvbo->kmap); in nouveau_gem_ioctl_pushbuf()
|
| /linux/drivers/gpu/drm/nouveau/include/nvkm/core/ |
| H A D | memory.h | 41 int (*kmap)(struct nvkm_memory *, struct nvkm_memory **); member 68 #define nvkm_memory_kmap(p,i) ((p)->func->kmap ? (p)->func->kmap((p), (i)) : -ENOSYS)
|
| /linux/drivers/gpu/drm/panthor/ |
| H A D | panthor_fw.c | 451 bool was_mapped = !!section->mem->kmap; in panthor_fw_init_section_mem() 462 memcpy(section->mem->kmap, section->data.buf, section->data.size); in panthor_fw_init_section_mem() 464 memset(section->mem->kmap + section->data.size, 0, in panthor_fw_init_section_mem() 513 memset(mem->kmap, 0, panthor_kernel_bo_size(mem)); in panthor_fw_alloc_queue_iface_mem() 514 *input = mem->kmap; in panthor_fw_alloc_queue_iface_mem() 515 *output = mem->kmap + SZ_4K; in panthor_fw_alloc_queue_iface_mem() 888 return ptdev->fw->shared_section->mem->kmap + offset; in iface_fw_to_cpu_addr() 910 cs_iface->control = ptdev->fw->shared_section->mem->kmap + iface_offset; in panthor_init_cs_iface() 965 csg_iface->control = ptdev->fw->shared_section->mem->kmap + iface_offset; in panthor_init_csg_iface() 1016 if (!ptdev->fw->shared_section->mem->kmap) in panthor_fw_init_ifaces() [all …]
|
| H A D | panthor_sched.c | 442 void *kmap; member 855 if (queue->syncwait.kmap) { in panthor_queue_put_syncwait_obj() 856 struct iosys_map map = IOSYS_MAP_INIT_VADDR(queue->syncwait.kmap); in panthor_queue_put_syncwait_obj() 859 queue->syncwait.kmap = NULL; in panthor_queue_put_syncwait_obj() 874 if (queue->syncwait.kmap) { in panthor_queue_get_syncwait_obj() 890 queue->syncwait.kmap = map.vaddr; in panthor_queue_get_syncwait_obj() 891 if (drm_WARN_ON(&ptdev->base, !queue->syncwait.kmap)) in panthor_queue_get_syncwait_obj() 906 return queue->syncwait.kmap + queue->syncwait.offset; in panthor_queue_get_syncwait_obj() 2195 syncobj = group->syncobjs->kmap + (i * sizeof(*syncobj)); in group_term_post_processing() 3026 struct panthor_job_profiling_data *slots = queue->profiling.slots->kmap; in update_fdinfo_stats() [all …]
|
| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_bo_types.h | 56 struct ttm_bo_kmap_obj kmap; member
|
| /linux/drivers/gpu/drm/loongson/ |
| H A D | lsdc_ttm.h | 35 struct ttm_bo_kmap_obj kmap; member
|
| H A D | lsdc_ttm.c | 371 err = ttm_bo_kmap(tbo, 0, PFN_UP(lsdc_bo_size(lbo)), &lbo->kmap); in lsdc_bo_kmap() 377 lbo->kptr = ttm_kmap_obj_virtual(&lbo->kmap, &lbo->is_iomem); in lsdc_bo_kmap() 388 ttm_bo_kunmap(&lbo->kmap); in lsdc_bo_kunmap()
|
| /linux/arch/sh/mm/ |
| H A D | Makefile | 19 mmu-$(CONFIG_MMU) := extable_32.o fault.o ioremap.o kmap.o \
|
| /linux/tools/perf/ |
| H A D | builtin-lock.c | 976 struct map *kmap; in report_lock_contention_begin_event() 994 &kmap); in report_lock_contention_begin_event() 1008 addrs[filters.nr_addrs++] = map__unmap_ip(kmap, sym->start); in report_lock_contention_begin_event() 1020 sym = machine__find_kernel_symbol(machine, key, &kmap); in report_lock_contention_begin_event() 1657 struct map *kmap; in print_lock_stat_stdio() 1667 sym = machine__find_kernel_symbol(con->machine, ip, &kmap); in print_lock_stat_stdio() 1668 get_symbol_name_offset(kmap, sym, ip, buf, sizeof(buf)); in print_lock_stat_stdio() 1710 struct map *kmap; in print_lock_stat_csv() 1720 sym = machine__find_kernel_symbol(con->machine, ip, &kmap); in print_lock_stat_csv() 1721 get_symbol_name_offset(kmap, sy in print_lock_stat_csv() 978 struct map *kmap; report_lock_contention_begin_event() local 1660 struct map *kmap; print_lock_stat_stdio() local 1713 struct map *kmap; print_lock_stat_csv() local [all...] |
| /linux/tools/testing/scatterlist/linux/ |
| H A D | mm.h | 78 static inline void *kmap(struct page *page) in kmap() function
|
| /linux/net/ceph/ |
| H A D | pagelist.c | 70 pl->mapped_tail = kmap(page); in ceph_pagelist_addpage()
|
| /linux/drivers/gpu/drm/radeon/ |
| H A D | radeon_object.c | 234 r = ttm_bo_kmap(&bo->tbo, 0, PFN_UP(bo->tbo.base.size), &bo->kmap); in radeon_bo_kmap() 238 bo->kptr = ttm_kmap_obj_virtual(&bo->kmap, &is_iomem); in radeon_bo_kmap() 252 ttm_bo_kunmap(&bo->kmap); in radeon_bo_kunmap()
|
| /linux/drivers/mtd/ |
| H A D | mtd_blkdevs.c | 67 buf = kmap(bio_page(req->bio)) + bio_offset(req->bio); in do_blktrans_request() 86 buf = kmap(bio_page(req->bio)) + bio_offset(req->bio); in do_blktrans_request()
|