From patchwork Mon Dec 20 16:38:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Leroy X-Patchwork-Id: 1571122 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JHljV1jhBz9sCD for ; Tue, 21 Dec 2021 03:41:50 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4JHljV0rMYz3cZm for ; Tue, 21 Dec 2021 03:41:50 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=csgroup.eu (client-ip=2a01:111:f400:7e18::615; helo=fra01-pr2-obe.outbound.protection.outlook.com; envelope-from=christophe.leroy@csgroup.eu; receiver=) Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on0615.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e18::615]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4JHldf3qPQz3017 for ; Tue, 21 Dec 2021 03:38:30 +1100 (AEDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nrVc5EXITf5R7O94nGBgdeEgjtO1AnC9lSJVdNAUhsMQL7SA1S/DCCg5VmUDsbu6n+Hwx9sUc40ctptGGZFvhFlIdyjmCQ4g6lRc+QHMA5mcSzhWooMKNNZUpnmak3Hu3oFA2sZVsyA0bKwn56uvF/+NIem4V0mGCPMrObIYaIUYgqhKpjulXV4+jgVOHzdnV3DwBD1eMdugxWYCaWHHX6KlQSEs6KPwFBwRB5K/MQtPZk5CvDD5y1sMRzmECh7qNmShBE6zHs5HAfBTB4GMqh5WGVia47DIw43VLfg2h+m2SMtMouaPFk29aFeukulG03f6Eja13/sr6uVjLIkX/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+ov6GPVxo9wBYfd/W3HMywq0/UCxDk0eakf75NTpYu8=; b=HMp/2RNXwBF1YPuZH/TtI4dKJF22tUUuNctfl3J8WoLUXawG08xopbPfOsjsNRLL8zFJ/rG7f30g2ptHlt/fO0xX889b3/N9Dyn1bGYi7S/klfSI6bB/8IjY90kGAjt2vPgMlz94JewsSiwcwhJ1Donclz5bpByT7lv4tT3q2psBCNxpyNBUCS9SqnZMajbcrU3/HoUY10vpGJpyFYo/W2U4HXX0M61WUEOoMhwhgpH21sz578yI50TAsUIxVGBjGsGIVi2XmedyCSMiFkLmSx+Iv+T2/6UKJ8uqWylFflP/GT5/1qMXXru4X69psy97VOe59mwkXTlBbpHt39t9Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by MR1P264MB2161.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:14::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.15; Mon, 20 Dec 2021 16:38:25 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::f0ef:856d:b0de:e85d]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::f0ef:856d:b0de:e85d%5]) with mapi id 15.20.4801.020; Mon, 20 Dec 2021 16:38:25 +0000 From: Christophe Leroy To: Josh Poimboeuf , Jiri Kosina , Miroslav Benes , Petr Mladek , Joe Lawrence , Steven Rostedt , Ingo Molnar , "Naveen N . Rao" Subject: [PATCH v2 08/13] powerpc/ftrace: Prepare PPC64's ftrace_caller() for CONFIG_DYNAMIC_FTRACE_WITH_ARGS Thread-Topic: [PATCH v2 08/13] powerpc/ftrace: Prepare PPC64's ftrace_caller() for CONFIG_DYNAMIC_FTRACE_WITH_ARGS Thread-Index: AQHX9cACt01RUCspvki4igFCqynk8A== Date: Mon, 20 Dec 2021 16:38:25 +0000 Message-ID: <850817333cc76593699032e8e9a70d8c36e1af1e.1640017960.git.christophe.leroy@csgroup.eu> References: In-Reply-To: Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d819a140-1d10-4cff-d2e9-08d9c3d724e9 x-ms-traffictypediagnostic: MR1P264MB2161:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /lHcZkeKWrHTzjw93/8q0Z9NJVMIySfieR5hxV503U6PEHEmIvULZYVig/iVgNzgW0/h0J6aqrgl5lW/YjmRIT590oA1mYK43rOUX2NuIrbzobzCUtORcmDTEq93fwa5RfEbPH+c5B8LK7O1dutozcLQAr0zvJjXjozXIusLThx5rWX/RULc68H4+WMLP05IKQYOTBV7RKIIis+lnaSFSIio6U8gVpYhuy/KMwOh+qF1ihd2RadRejjrrRvinRT48oxlFFU6AVxzP6WT2j88oMzLplxv5u7HGxmvyXyJPuvndJCErM5bOiW+enRGX51/aII4RSv9BCpLkarnSNP17SsIc+DM06qXzEc7DwYZV3HiEf91Qn7FTrjk2GLUf6mzrv9fY8Q+knEzbi2UXwcqoGh9TmQQgyll92D176csCW2WLHMmrahqT56L3gV74es/bUBOYmIJ2hkciTV4raqMzn49kbSTCWramC4uEHI9p6k9jyXOf2EBMymYbsoszf0g8gLHFRGxn693zQ1yCWqQJWuWBB+IyGwVu+bw/Brg7LudUPpYznviad1FJjpqAmf7KuEs4MMa/5FNdV+WPh36KTN37Qlswxyyr+G8/Yv0ATjko77FLZlVDBHKk69ASs9SC8jAO9JdwdSAKFLB0Ml6NBjbK9JJXQJGzZnp5Tt0fQNeNccOjraFH0CRmrq9mKQjZa/x2GqrR+OGsVUkR+jq9A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(5660300002)(6506007)(508600001)(83380400001)(86362001)(2616005)(8676002)(71200400001)(4326008)(6512007)(36756003)(54906003)(122000001)(8936002)(110136005)(44832011)(26005)(316002)(6486002)(186003)(64756008)(66946007)(66446008)(2906002)(38100700002)(38070700005)(7416002)(76116006)(66556008)(66476007)(91956017); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?vIGJpk8xAeqSDRI3NAwOyJE?= =?iso-8859-1?q?ZuPWX6g+rmgBeyMLCa9tUGfjpjAPelO6ojpwbbJr2j21ybWD8PbOe9m2kmTY?= =?iso-8859-1?q?Jd/VYrMfHp/9z3n+WmAw3Ykp4bdv6YeomOlrokVr8LXGMwAs9s5gBo5p9xrr?= =?iso-8859-1?q?aWXUWBEnwJ6hYqr61eEre6R88N0tEX23F7TlL0//DKlp3ENFF7BgVirKPkbA?= =?iso-8859-1?q?8j9W89S0lDiS5NB/Bj3Vbep+ESru9kpch2mMGDyrqjKQGGAq/7hgmanjlAET?= =?iso-8859-1?q?38GTAXiRutpHNwCnprueme2YyVDmjkaBtDXg3HahQM8qg53q3//wrItKeRVR?= =?iso-8859-1?q?z/YeZ/wz7eyRbJER0E95q7rYngPTVnKoT+AhyjjiF56K0eCNUDHB9uQu8PHo?= =?iso-8859-1?q?YpNXmjkBbMlElKZTS4cJLXlqDUL+SZjH+Cl3rQoSoz3YAdsMHLY4vYZFF1hZ?= =?iso-8859-1?q?AKz6s0A593hBKEQStobfUX4CxRTbiyUKbQ2GSxunVY8U1G0+IoxyK4xUe5G4?= =?iso-8859-1?q?T2dw2ABRzVtA81ttFbQmN8GP8GZ1BfPXrQuW2vc2AAM27ZgRtzMsJyZMdmuF?= =?iso-8859-1?q?z+DBuUSFR4IyK7kg3E8FoM4B+INaJVYQJoZJL/RBqh/3CRl+lTN/PfM7RVVj?= =?iso-8859-1?q?VtWv5Ez4zQjP5dIRID4TynkKRBiNBbUEjyNuGVnlauR5WgCVKfoVa8xpjNl6?= =?iso-8859-1?q?T8AN6ccbR3TIPcbD4qr7bKbpi7/9vFY25zOerFWDOm8NgtJhcRRbQFa9DSD9?= =?iso-8859-1?q?8V9oy73NWUvWlYiyiAKKtOf/Qie9FfYNtKAyOCEwiaH/iOhdE5j8qRGp8IK+?= =?iso-8859-1?q?6mSDo8lwdI5vZCrCavsWgvNQEps9O2GNjleCp3gwp74xXfn6S2O7zc/4vzR5?= =?iso-8859-1?q?UQi3ov33tAayQwMpth2uIKOx74nr0i8pQ86tdQoV1txjz++E4hKBscQokEtW?= =?iso-8859-1?q?/t/YQq8jfGpyN11mTMlS3CPmrXtVXflnGR/LVjcm/K9AA5RWCHwQ9NG/TESP?= =?iso-8859-1?q?jYzuqIACjlxaCA/3F3PY20cIjmQQbQPMqRmLGepRequ+ix1sl5e0XGJIruQT?= =?iso-8859-1?q?cdZiNVIcNNMij0X3S0Jh3yXZ6Atuq/27HiVr5MWqGqDVBwMevv0Z7/jMG7qy?= =?iso-8859-1?q?e9wDDU07zTZ4412fLe6fSnmOJijI7UND4inQ0k94RXL4CQCV8AK9Y3QNeiDb?= =?iso-8859-1?q?jZc5rm8D85lTV5tBwP+btiWWh8Ycikq/pk7rMi4T/p9HIdAhW5LxaJ/I4vYP?= =?iso-8859-1?q?Li5GfGq0pjsKPNG6FK2I6DpLmLkl/fMxb4qPDdqZahfvPS3BkEkGKoEV+ORR?= =?iso-8859-1?q?ou2b2XWLoYGCTqwMF3K42zGCAHtJcEFF3lQetpCY8UWnVhO5LnK5qyIFQ4GG?= =?iso-8859-1?q?6gNO8qxV4diLHnkCmCDm18oTW46sTc7+2EWNVUd868hOfp7oeCGcX4qxMcsc?= =?iso-8859-1?q?XPzMrMizPqoUWQ6M+/MINHxYaJlT9y4VXijqHe85WQp0aayAPwPPpZL1xVpN?= =?iso-8859-1?q?BMmYQ61EyTpht1abMKkmeSP2rJ3vzqOLpiQP5qVm3ujsJzVE5dhD1AH6YJ8R?= =?iso-8859-1?q?ZgaVYcZpmn2iMVzlmz6FJ+3vu8ZbqdqYzC6TDEaeNZ8hfdEGB7l69EyO7Ced?= =?iso-8859-1?q?O1Fg3wAbLdZNlGvI6gAy+TwAuKhdCZTGxM4RIHmKovCAbTltJ8Bds9tXFhPu?= =?iso-8859-1?q?DR8qH1izjTribsCt/g2/29uQA+bui/yahwovELDkIhRNoxuXp4IXHY6WSsD5?= =?iso-8859-1?q?QrBw=3D?= MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d819a140-1d10-4cff-d2e9-08d9c3d724e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2021 16:38:25.3699 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6amDrLrHoIZS+eGHRs7sQ8Jd/QlRfTVAZF4Dki45NN+a/ibA+u9AyyD0Xy2DUE7Vj9gSsWXKdGxQsckGcvj3fFxvLMtD4gXkHmJFYhINMqM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR1P264MB2161 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "live-patching@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" In order to implement CONFIG_DYNAMIC_FTRACE_WITH_ARGS, change ftrace_caller() to handle LIVEPATCH the same way as frace_caller_regs(). Signed-off-by: Christophe Leroy --- .../powerpc/kernel/trace/ftrace_64_mprofile.S | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S index d636fc755f60..f6f787819273 100644 --- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S +++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S @@ -172,14 +172,19 @@ _GLOBAL(ftrace_caller) addi r3, r3, function_trace_op@toc@l ld r5, 0(r3) +#ifdef CONFIG_LIVEPATCH_64 + SAVE_GPR(14, r1) + mr r14,r7 /* remember old NIP */ +#endif /* Calculate ip from nip-4 into r3 for call below */ subi r3, r7, MCOUNT_INSN_SIZE /* Put the original return address in r4 as parent_ip */ + std r0, _LINK(r1) mr r4, r0 - /* Set pt_regs to NULL */ - li r6, 0 + /* Load &pt_regs in r6 for call below */ + addi r6, r1 ,STACK_FRAME_OVERHEAD /* ftrace_call(r3, r4, r5, r6) */ .globl ftrace_call @@ -189,6 +194,10 @@ ftrace_call: ld r3, _NIP(r1) mtctr r3 +#ifdef CONFIG_LIVEPATCH_64 + cmpd r14, r3 /* has NIP been altered? */ + REST_GPR(14, r1) +#endif /* Restore gprs */ REST_GPRS(3, 10, r1) @@ -196,13 +205,17 @@ ftrace_call: /* Restore callee's TOC */ ld r2, 24(r1) + /* Restore possibly modified LR */ + ld r0, _LINK(r1) + mtlr r0 + /* Pop our stack frame */ addi r1, r1, SWITCH_FRAME_SIZE - /* Reload original LR */ - ld r0, LRSAVE(r1) - mtlr r0 - +#ifdef CONFIG_LIVEPATCH_64 + /* Based on the cmpd above, if the NIP was altered handle livepatch */ + bne- livepatch_handler +#endif /* Handle function_graph or go back */ b ftrace_caller_common