Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2045277yba; Thu, 25 Apr 2019 09:44:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqyyBHhYODf96xL+cK5Y82MCXQq5/m74sU7U93Kbq7VVHxK0Ulrlut3a8eKdSj9QEE082Jnm X-Received: by 2002:a65:5c42:: with SMTP id v2mr37408809pgr.360.1556210663301; Thu, 25 Apr 2019 09:44:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556210663; cv=none; d=google.com; s=arc-20160816; b=FRes0TGFZXsyo//32UnBNWj8xM4h67gCwTA2JyMUfWwX3V4LD89qGhLv1znkzSqDZG SAdWQ0KYvIIUKb5+YWXZa4HUW5fjx7S2TyOmQjRp6tpecg1Fx8pzS59CSV4VefPtUD/a fkOp6wnGPg35bw9Mkh5CK7lr8mz/04QjOufr2apkWudZeHDNfI9r+4USw0wbJsT+Mh82 RLnLek6LhEtOQpwmChpUfpwO7FrA1Ih1Fb6CY5zZh4dp4vHSuF0I81J2MUVk9ES4+4b1 Xp4ibvSrxFmwWhw56VGDpxrzrcpoGmEwW6gpz8POeON7qC9VBkAgcypyVoK9Jz4KW7QS tn9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=GzoHZ1uTCxDXFHAtotfNOhSZC0N7lOXPk9nTEvL4vto=; b=Tqt+OQuBRYfM4Y3kk3vaViaRb6/CorVWHFkSb2IU0uNYh//lE9xq4fZGRA4DtoiWcA p03NWk00vznrzvrJUYRJZurMJVGPK8bckv09hNKTFM18Sc8+nVZsjHcDh1z05a7OGDZL iUbIxzLQUhQsTsYDII2uvmKrYcDO/15E9tEQrTELuz2IXp5ZwF+VO8ikE2VUHPF63x+D +v2ebQcIpFCr7ZG0HRFAy8hYxF7ucpWyB3ddGgLaQ6inZLDNRVUJUwmsKckXfhQ+S1cp ifn7Bp+4GIpV6m03ZXD1DXOBvOHo7OfgNOAqK5tsadBJWRh/QIJ1pyMRMmJ5tf9FojJV 5Xhw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m2si22074753pll.44.2019.04.25.09.44.08; Thu, 25 Apr 2019 09:44:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727563AbfDYQjj (ORCPT + 99 others); Thu, 25 Apr 2019 12:39:39 -0400 Received: from foss.arm.com ([217.140.101.70]:48166 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726380AbfDYQjj (ORCPT ); Thu, 25 Apr 2019 12:39:39 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 379DE80D; Thu, 25 Apr 2019 09:39:39 -0700 (PDT) Received: from [10.1.196.105] (eglon.cambridge.arm.com [10.1.196.105]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8B2DB3F557; Thu, 25 Apr 2019 09:39:38 -0700 (PDT) Subject: Re: [RFC PATCH] kprobes/arm64: Blacklist functions called in '_sdei_handler' To: Xiongfeng Wang Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <1555751217-54310-1-git-send-email-wangxiongfeng2@huawei.com> From: James Morse Message-ID: Date: Thu, 25 Apr 2019 17:39:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <1555751217-54310-1-git-send-email-wangxiongfeng2@huawei.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Xiongfeng Wang, On 20/04/2019 10:06, Xiongfeng Wang wrote: > Functions called in '_sdei_handler' are needed to be marked as > 'nokprobe'. + "Because these functions are called in NMI context and neither the arch-code's debug infrastructure nor kprobes core supports this." > --- > When I kprobe 'sdei_smccc_smc', Heh, when debugging this I put printk()s on the other side. > the cpu hungs. I am not sure if it is > becase when SDEI events interrupt EL0, '__sdei_asm_entry_trampoline' > didn't restore vbar_el1 with kernel vectors. Yes, we don't expect exceptions from the NMI handler, so VBAR_EL1 is left as whatever its current state is. Today it could be the EL0 trampoline, the kernel vectors proper, or KVMs vectors. This may change in the future, all SDEI does with VBAR_EL1 is emulate the architecture: read it in order to fake up an interrupt on exit. > Or is it becasue brk > exception corrupt elr_el1 and trust firmware didn't preserve it for us? Yes, this too! "5.2.1.1 Client responsibilities" of [0] | The handler may modify the accessible System registers, but these must be restored | before the handler completes. We don't do this, because its extra work, and we don't ever anticipate it being necessary. > drivers/firmware/arm_sdei.c | 3 +++ > 1 file changed, 3 insertions(+) Nit: Because this patch only touches this file, the subject prefix should really be "firmware: arm_sdei:". Running 'git log --online' over a file should give you a hint at what the expected style is. This lets people spot the patches they need to look at. > diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c > index e6376f9..9cd70d1 100644 > --- a/drivers/firmware/arm_sdei.c > +++ b/drivers/firmware/arm_sdei.c > @@ -165,6 +165,7 @@ static int invoke_sdei_fn(unsigned long function_id, unsigned long arg0, > > return err; > } > +NOKPROBE_SYMBOL(invoke_sdei_fn); Ah! These are called via sdei_api_event_context(). Oops. > static struct sdei_event *sdei_event_find(u32 event_num) > { > @@ -879,6 +880,7 @@ static void sdei_smccc_smc(unsigned long function_id, > { > arm_smccc_smc(function_id, arg0, arg1, arg2, arg3, arg4, 0, 0, res); > } > +NOKPROBE_SYMBOL(sdei_smccc_smc); > > static void sdei_smccc_hvc(unsigned long function_id, > unsigned long arg0, unsigned long arg1, > @@ -887,6 +889,7 @@ static void sdei_smccc_hvc(unsigned long function_id, > { > arm_smccc_hvc(function_id, arg0, arg1, arg2, arg3, arg4, 0, 0, res); > } > +NOKPROBE_SYMBOL(sdei_smccc_hvc); > > int sdei_register_ghes(struct ghes *ghes, sdei_event_callback *normal_cb, > sdei_event_callback *critical_cb) Thanks for making this more robust! Reviewed-by: James Morse Thanks, James [0] http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf