Re: [PATCH v2 1/5] perf: add ability to sample machine state on interrupt

From: Peter Zijlstra
Date: Tue Jul 15 2014 - 10:25:38 EST


On Tue, Jul 15, 2014 at 02:31:40AM +0200, Stephane Eranian wrote:
> @@ -618,6 +619,8 @@ static inline void perf_sample_data_init(struct perf_sample_data *data,
> data->weight = 0;
> data->data_src.val = 0;
> data->txn = 0;
> + data->regs_intr.abi = PERF_SAMPLE_REGS_ABI_NONE;
> + data->regs_intr.regs = NULL;
> }

> +static void perf_sample_regs_intr(struct perf_regs *regs_intr,
> + struct pt_regs *regs)
> +{
> + regs_intr->regs = regs;
> + regs_intr->abi = perf_reg_abi(current);
> +}

> @@ -4800,6 +4824,20 @@ void perf_prepare_sample(struct perf_event_header *header,
> data->stack_user_size = stack_size;
> header->size += size;
> }
> +
> + if (sample_type & PERF_SAMPLE_REGS_INTR) {
> + /* regs dump ABI info */
> + int size = sizeof(u64);
> +
> + perf_sample_regs_intr(&data->regs_intr, regs);
> +
> + if (data->regs_intr.regs) {
> + u64 mask = event->attr.sample_regs_intr;
> + size += hweight64(mask) * sizeof(u64);
> + }
> +
> + header->size += size;
> + }

Given that the prepare_sample hunk sets both regs_intr fields, the
addition to perf_sample_data_init() is entirely superfluous, no?

Attachment: pgpMwGP8m3kMB.pgp
Description: PGP signature