Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77e65977 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

perf machine: Use machine__kernel_map() thoroughly

In places where we were using its open coded equivalent.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-khkdugcdoqy3tkszm3jdxgbe@git.kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent eb56db54
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ static int build_alloc_func_list(void)
		return -EINVAL;
	}

	kernel_map = machine->vmlinux_maps[MAP__FUNCTION];
	kernel_map = machine__kernel_map(machine, MAP__FUNCTION)
	if (map__load(kernel_map, NULL) < 0) {
		pr_err("cannot load kernel map\n");
		return -ENOENT;
+1 −1
Original line number Diff line number Diff line
@@ -387,7 +387,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,

static void report__warn_kptr_restrict(const struct report *rep)
{
	struct map *kernel_map = rep->session->machines.host.vmlinux_maps[MAP__FUNCTION];
	struct map *kernel_map = machine__kernel_map(&rep->session->machines.host, MAP__FUNCTION);
	struct kmap *kernel_kmap = kernel_map ? map__kmap(kernel_map) : NULL;

	if (kernel_map == NULL ||
+1 −1
Original line number Diff line number Diff line
@@ -473,7 +473,7 @@ static int do_test_code_reading(bool try_kcore)
		symbol_conf.kallsyms_name = "/proc/kallsyms";

	/* Load kernel map */
	map = machine->vmlinux_maps[MAP__FUNCTION];
	map = machine__kernel_map(machine, MAP__FUNCTION);
	ret = map__load(map, NULL);
	if (ret < 0) {
		pr_debug("map__load failed\n");
+3 −4
Original line number Diff line number Diff line
@@ -649,12 +649,12 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
	size_t size;
	const char *mmap_name;
	char name_buff[PATH_MAX];
	struct map *map;
	struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
	struct kmap *kmap;
	int err;
	union perf_event *event;

	if (machine->vmlinux_maps[0] == NULL)
	if (map == NULL)
		return -1;

	/*
@@ -680,7 +680,6 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
		event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL;
	}

	map = machine->vmlinux_maps[MAP__FUNCTION];
	kmap = map__kmap(map);
	size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
			"%s%s", mmap_name, kmap->ref_reloc_sym->name) + 1;
@@ -1008,7 +1007,7 @@ int perf_event__preprocess_sample(const union perf_event *event,
	 * it now.
	 */
	if (cpumode == PERF_RECORD_MISC_KERNEL &&
	    machine->vmlinux_maps[MAP__FUNCTION] == NULL)
	    machine__kernel_map(machine, MAP__FUNCTION) == NULL)
		machine__create_kernel_maps(machine);

	thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al);
+12 −11
Original line number Diff line number Diff line
@@ -625,7 +625,7 @@ size_t machine__fprintf_vmlinux_path(struct machine *machine, FILE *fp)
{
	int i;
	size_t printed = 0;
	struct dso *kdso = machine->vmlinux_maps[MAP__FUNCTION]->dso;
	struct dso *kdso = machine__kernel_map(machine, MAP__FUNCTION)->dso;

	if (kdso->has_build_id) {
		char filename[PATH_MAX];
@@ -741,6 +741,7 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)

	for (type = 0; type < MAP__NR_TYPES; ++type) {
		struct kmap *kmap;
		struct map *map;

		machine->vmlinux_maps[type] = map__new2(start, kernel, type);
		if (machine->vmlinux_maps[type] == NULL)
@@ -749,13 +750,13 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
		machine->vmlinux_maps[type]->map_ip =
			machine->vmlinux_maps[type]->unmap_ip =
				identity__map_ip;
		kmap = map__kmap(machine->vmlinux_maps[type]);
		map = machine__kernel_map(machine, type);
		kmap = map__kmap(map);
		if (!kmap)
			return -1;

		kmap->kmaps = &machine->kmaps;
		map_groups__insert(&machine->kmaps,
				   machine->vmlinux_maps[type]);
		map_groups__insert(&machine->kmaps, map);
	}

	return 0;
@@ -767,13 +768,13 @@ void machine__destroy_kernel_maps(struct machine *machine)

	for (type = 0; type < MAP__NR_TYPES; ++type) {
		struct kmap *kmap;
		struct map *map = machine__kernel_map(machine, type);

		if (machine->vmlinux_maps[type] == NULL)
		if (map == NULL)
			continue;

		kmap = map__kmap(machine->vmlinux_maps[type]);
		map_groups__remove(&machine->kmaps,
				   machine->vmlinux_maps[type]);
		kmap = map__kmap(map);
		map_groups__remove(&machine->kmaps, map);
		if (kmap && kmap->ref_reloc_sym) {
			/*
			 * ref_reloc_sym is shared among all maps, so free just
@@ -867,7 +868,7 @@ int machines__create_kernel_maps(struct machines *machines, pid_t pid)
int machine__load_kallsyms(struct machine *machine, const char *filename,
			   enum map_type type, symbol_filter_t filter)
{
	struct map *map = machine->vmlinux_maps[type];
	struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
	int ret = dso__load_kallsyms(map->dso, filename, map, filter);

	if (ret > 0) {
@@ -886,7 +887,7 @@ int machine__load_kallsyms(struct machine *machine, const char *filename,
int machine__load_vmlinux_path(struct machine *machine, enum map_type type,
			       symbol_filter_t filter)
{
	struct map *map = machine->vmlinux_maps[type];
	struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
	int ret = dso__load_vmlinux_path(map->dso, map, filter);

	if (ret > 0)
@@ -1244,7 +1245,7 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
			/*
			 * preload dso of guest kernel and modules
			 */
			dso__load(kernel, machine->vmlinux_maps[MAP__FUNCTION],
			dso__load(kernel, machine__kernel_map(machine, MAP__FUNCTION),
				  NULL);
		}
	}
Loading