From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752360AbbE1FlN (ORCPT ); Thu, 28 May 2015 01:41:13 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:30992 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751916AbbE1Fk5 (ORCPT ); Thu, 28 May 2015 01:40:57 -0400 Message-ID: <5566AA4A.4070602@huawei.com> Date: Thu, 28 May 2015 13:40:26 +0800 From: Li Bin User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Masami Hiramatsu CC: AKASHI Takahiro , , , , , , , , , , , , , Subject: Re: [RFC 0/4] arm64: add livepatch support References: <1429843449-7388-1-git-send-email-takahiro.akashi@linaro.org> <5539B782.8060507@huawei.com> <5539DD2B.3010603@hitachi.com> In-Reply-To: <5539DD2B.3010603@hitachi.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.25.181] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020201.5566AA5D.0028,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 041f2d22e4fbe7ab3cb71786162dd18a Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015/4/24 14:05, Masami Hiramatsu wrote: > (2015/04/24 12:24), Li Bin wrote: >> On 2015/4/24 10:44, AKASHI Takahiro wrote: >>> This patchset enables livepatch support on arm64. >>> >>> Livepatch was merged in v4.0, and allows replacying a function dynamically >>> based on ftrace framework, but it also requires -mfentry option of gcc. >>> Currently arm64 gcc doesn't support it, but by adding a helper function to >>> ftrace, we will be able to support livepatch on arch's which don't support >>> this option. >>> >> >> This is not correct for the case that the prologue of the old and new function >> is different. > > Hmm, is that possible to support -mfentry on arm64? > > Of course we can not call a function directly at the first > instruction of functions on arm, because it can overwrite > link register which stores caller address. However, we can > do "store link register to stack and branch with link" > on arm. That is actually almost same as -mfentry does :), > and that may not depend on the prologue. > Yes, but the method "store link register to stack" will break the arm64 ABI rules, and memory operations may bring performance cost. We have a gcc -mfentry implementation strategy for arm64, and based on this we implement the livepatch for arm64. I will post the patchset for review soon. Thank you, Li Bin > Thank you, > > >> Thanks, >> Li Bin >> >>> I submit this patchset as RFC since I'm not quite sure that I'm doing >>> in the right way, or we should definitely support -fentry instead. >>> >>> Please note that I tested the feature only with livepatch-sample, and >>> the code for DYNAMIC_TRACE_WITH_REGS is still rough-edged. >>> >>> To: Steven Rostedt >>> To: Ingo Molnar >>> To: Josh Poimboeuf >>> To: Seth Jennings >>> To: Jiri Kosina >>> To: Vojtech Pavlik >>> To: Catalin Marinas >>> To: Will Deacon >>> >>> AKASHI Takahiro (4): >>> ftrace: add a helper function for livepatch >>> livepatch: adjust a patched function's address >>> arm64: ftrace: add DYNAMIC_TRACE_WITH_REGS version >>> arm64: add livepatch support >>> >>> arch/arm64/Kconfig | 4 ++ >>> arch/arm64/include/asm/ftrace.h | 4 ++ >>> arch/arm64/include/asm/livepatch.h | 38 +++++++++++ >>> arch/arm64/kernel/Makefile | 1 + >>> arch/arm64/kernel/entry-ftrace.S | 124 ++++++++++++++++++++++++++++++++++++ >>> arch/arm64/kernel/ftrace.c | 24 ++++++- >>> arch/arm64/kernel/livepatch.c | 68 ++++++++++++++++++++ >>> arch/x86/include/asm/livepatch.h | 5 ++ >>> include/linux/ftrace.h | 2 + >>> include/linux/livepatch.h | 2 + >>> kernel/livepatch/core.c | 16 +++-- >>> kernel/trace/ftrace.c | 26 ++++++++ >>> 12 files changed, 309 insertions(+), 5 deletions(-) >>> create mode 100644 arch/arm64/include/asm/livepatch.h >>> create mode 100644 arch/arm64/kernel/livepatch.c >>> >> >> >> > >