On Wed, Aug 23, 2017 at 7:39 AM, Peter Zijlstra <pet...@infradead.org> 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.

Reply via email to