Re: [PATCH] perf/x86: Further optimize copy_from_user_nmi()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2015/5/19 15:39, Peter Zijlstra wrote:
> On Tue, May 19, 2015 at 12:08:39PM +0800, Zhiqiang Zhang wrote:
>> commit e00b12e64be9a34ef071de7b6052ca9ea29dd460 upstream
>>
>> Now that we can deal with nested NMI due to IRET re-enabling NMIs and
>> can deal with faults from NMI by making sure we preserve CR2 over NMIs
>> we can in fact simply access user-space memory from NMI context.
>>
>> So rewrite copy_from_user_nmi() to use __copy_from_user_inatomic() and
>> rework the fault path to do the minimal required work before taking
>> the in_atomic() fault handler.
>>
>> In particular avoid perf_sw_event() which would make perf recurse on
>> itself (it should be harmless as our recursion protections should be
>> able to deal with this -- but why tempt fate).
>>
>> Also rename notify_page_fault() to kprobes_fault() as that is a much
>> better name; there is no notifier in it and its specific to kprobes.
>>
>> Don measured that his worst case NMI path shrunk from ~300K cycles to
>> ~150K cycles.
>>
>> Cc: Stephane Eranian <eranian@xxxxxxxxxx>
>> Cc: jmario@xxxxxxxxxx
>> Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxx>
>> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>> Cc: dave.hansen@xxxxxxxxxxxxxxx
>> Tested-by: Don Zickus <dzickus@xxxxxxxxxx>
>> Signed-off-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>> Link: http://lkml.kernel.org/r/20131024105206.GM2490@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
>> [zhangzhiqiang: backport to 3.10:
> 
> Did you make sure all the nested NMI fixes are in 3.10?
> 
> .
> 
Sorry, i am not quite sure about that, i just using it fixes page fault from PMI.
I will looking farther carefully.

thanks very much.

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]