Re: [PATCH V6] perf: Add PERF_SAMPLE_PHYS_ADDR

From: Stephane Eranian
Date: Wed Aug 23 2017 - 13:00:43 EST


On Wed, Aug 23, 2017 at 7:39 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> On Wed, Aug 23, 2017 at 04:33:08PM +0200, Peter Zijlstra wrote:
>> > @@ -6145,6 +6183,9 @@ void perf_prepare_sample(struct perf_event_header *header,
>> >
>> > header->size += size;
>> > }
>> > +
>> > + if (sample_type & PERF_SAMPLE_PHYS_ADDR)
>> > + data->phys_addr = perf_virt_to_phys(data->addr);
>>
>> Only problem with this now is that it requires SAMPLE_ADDR to also be
>> set in order to obtain data->addr.
>>
>> Either fix all to set data->attr for (SAMPLE_ADDR || SAMPLE_PHYS_ADDR)
>> or mandate SAMPLE_ADDR when SAMPLE_PHYS_ADDR.
>
> I think the former suggestion is better, as it allows for smaller
> samples.

Agreed. I may only care about physical addresses, so SAMPLE_PHYS_ADDR
should suffice from the user.
The kernel must save the virtual address in data->addr, and then convert it.