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

Commit bc7d352c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'perf-fixes-for-linus' of...

Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  perf tui: Fix last use_browser problem related to .perfconfig
  perf symbols: Add the build id cache to the vmlinux path
  perf tui: Reset use_browser if stdout is not a tty
  ring-buffer: Move zeroing out excess in page to ring buffer code
  ring-buffer: Reset "real_end" when page is filled
parents b3f2f6cd 92af1abd
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -1768,6 +1768,14 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
	 * must fill the old tail_page with padding.
	 */
	if (tail >= BUF_PAGE_SIZE) {
		/*
		 * If the page was filled, then we still need
		 * to update the real_end. Reset it to zero
		 * and the reader will ignore it.
		 */
		if (tail == BUF_PAGE_SIZE)
			tail_page->real_end = 0;

		local_sub(length, &tail_page->write);
		return;
	}
@@ -3894,12 +3902,12 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
	ret = read;

	cpu_buffer->lost_events = 0;

	commit = local_read(&bpage->commit);
	/*
	 * Set a flag in the commit field if we lost events
	 */
	if (missed_events) {
		commit = local_read(&bpage->commit);

		/* If there is room at the end of the page to save the
		 * missed events, then record it there.
		 */
@@ -3907,10 +3915,17 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
			memcpy(&bpage->data[commit], &missed_events,
			       sizeof(missed_events));
			local_add(RB_MISSED_STORED, &bpage->commit);
			commit += sizeof(missed_events);
		}
		local_add(RB_MISSED_EVENTS, &bpage->commit);
	}

	/*
	 * This page may be off to user land. Zero it out here.
	 */
	if (commit < BUF_PAGE_SIZE)
		memset(&bpage->data[commit], 0, BUF_PAGE_SIZE - commit);

 out_unlock:
	spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);

+0 −6
Original line number Diff line number Diff line
@@ -3666,7 +3666,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
		     size_t count, loff_t *ppos)
{
	struct ftrace_buffer_info *info = filp->private_data;
	unsigned int pos;
	ssize_t ret;
	size_t size;

@@ -3693,11 +3692,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
	if (ret < 0)
		return 0;

	pos = ring_buffer_page_len(info->spare);

	if (pos < PAGE_SIZE)
		memset(info->spare + pos, 0, PAGE_SIZE - pos);

read:
	size = PAGE_SIZE - info->read;
	if (size > count)
+1 −1
Original line number Diff line number Diff line
@@ -343,7 +343,7 @@ static void hists__find_annotations(struct hists *self)
			continue;
		}

		if (use_browser) {
		if (use_browser > 0) {
			key = hist_entry__tui_annotate(he);
			if (is_exit_key(key))
				break;
+1 −1
Original line number Diff line number Diff line
@@ -1060,7 +1060,7 @@ static void event__process_sample(const event_t *self,
			pr_err("Can't annotate %s", sym->name);
			if (sym_filter_entry->map->dso->origin == DSO__ORIG_KERNEL) {
				pr_err(": No vmlinux file was found in the path:\n");
				vmlinux_path__fprintf(stderr);
				machine__fprintf_vmlinux_path(machine, stderr);
			} else
				pr_err(".\n");
			exit(1);
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ int eprintf(int level, const char *fmt, ...)

	if (verbose >= level) {
		va_start(args, fmt);
		if (use_browser)
		if (use_browser > 0)
			ret = browser__show_help(fmt, args);
		else
			ret = vfprintf(stderr, fmt, args);
Loading