Received: by 10.223.148.5 with SMTP id 5csp5951242wrq; Wed, 17 Jan 2018 07:38:16 -0800 (PST) X-Google-Smtp-Source: ACJfBovAE55xomaRy2yVCaN2P2qj5Iqlvx7QYRj3GefvZO46S4oLETwJhuoPgbJH8yst8roPB4cz X-Received: by 10.101.74.129 with SMTP id b1mr11449824pgu.317.1516203496299; Wed, 17 Jan 2018 07:38:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516203496; cv=none; d=google.com; s=arc-20160816; b=JZcvbWqNnU+WBfygSQdlVFe8eu/PvVR/ux6BcAHk2VYrruC5EwQH+h119FN97ELv2T +U+cUTAVnnX2rG7m0JgPis831DYvQY8ZW/JoWjM2lneZ2+XfpIbLhIMooo2eBRmCW5I1 OFwvlWmYK/c9EdX6WpPoCrYRsxTbiRZLhUkrGCUBUskwAJoyjNmk8vvCJFepZucJNEFn LzTHRuteW3xFWAaEUJFxBsG8MAvBZiCE6wN882V8erV/YJn3ab9MXw2eY8pimlGK3qWn kxyhQCPGDLkPDaoxrXeggglGOaPTEk3zAOf0tBp4f/K8P71GsXtviI5DYgJgBvAPWMfr qNYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=k48vsIqc8xmbUnlPtik8ADVBXhe9ZtnUIyWPUzlfv7A=; b=PSerpK2NNeQBfyaZogpGZAQpyPbMDDYELRkvyLg/ApQ7+Zgl6vTHB/CcXXTksLA6uL A7rZIvP+Ffz/c/TIkYyj9qZ31SDLVobh7F5O42nk67EDJuzHjvSCkrYPxpjXhm3izWTU wXta/NBDR5+lbOLP6Afe6ohVt9LrLLule6LrVLqei4ry9ITc6ZA6xuCzo5FY8c88HzPf LsjCG7XIstwE4DJe9P7NH1zt+24L3ihwEc0REEev+kuhRlVWfd1D8RmofBro8k3EFjih R/3Ioxh5mk6am97z/SrtBF/5Ywb9dwY97tbQl1YNM5V3pisv27J84AgVIJfckFwr+T82 bVOQ== 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 4si4953859pld.494.2018.01.17.07.38.01; Wed, 17 Jan 2018 07:38:16 -0800 (PST) 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 S1754072AbeAQPhj (ORCPT + 99 others); Wed, 17 Jan 2018 10:37:39 -0500 Received: from foss.arm.com ([217.140.101.70]:42570 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753794AbeAQPhh (ORCPT ); Wed, 17 Jan 2018 10:37:37 -0500 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 0A6AA80D; Wed, 17 Jan 2018 07:37:37 -0800 (PST) Received: from e103592.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5CCF23F557; Wed, 17 Jan 2018 07:37:34 -0800 (PST) Date: Wed, 17 Jan 2018 15:37:31 +0000 From: Dave Martin To: Russell King - ARM Linux Cc: linux-arch@vger.kernel.org, Arnd Bergmann , Nicolas Pitre , Tony Lindgren , Catalin Marinas , Tyler Baicar , Will Deacon , linux-kernel@vger.kernel.org, Oleg Nesterov , James Morse , "Eric W. Biederman" , Olof Johansson , Santosh Shilimkar , linux-arm-kernel@lists.infradead.org, Al Viro Subject: Re: [PATCH 07/11] signal/arm64: Document conflicts with SI_USER and SIGFPE, SIGTRAP, SIGBUS Message-ID: <20180117153731.GG22781@e103592.cambridge.arm.com> References: <87373b6ghs.fsf@xmission.com> <20180112005940.23279-7-ebiederm@xmission.com> <20180115163028.GU22781@e103592.cambridge.arm.com> <87h8rnox3c.fsf@xmission.com> <20180116172407.GA22781@e103592.cambridge.arm.com> <871sipl9p9.fsf@xmission.com> <20180117115708.GM17719@n2100.armlinux.org.uk> <20180117121505.GD22781@e103592.cambridge.arm.com> <20180117123752.GN17719@n2100.armlinux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180117123752.GN17719@n2100.armlinux.org.uk> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 17, 2018 at 12:37:52PM +0000, Russell King - ARM Linux wrote: > On Wed, Jan 17, 2018 at 12:15:05PM +0000, Dave Martin wrote: > > On Wed, Jan 17, 2018 at 11:57:09AM +0000, Russell King - ARM Linux wrote: [...] > > > VFP used to use force_sig_info(), but it seems to be really the wrong > > > call to use. force_sig_info() checks whether the program decided to > > > ignore or block the signal, and if it did, replaces the signal handler > > > with the default handler and unblocks the signal. > > > > > > Are you really suggesting that FP all FP signals should get this > > > treatment? > > > > feenableexcept(FE_OVERFLOW) kind of means "I can't run safely past > > an fp overflow exception, please signal me instead". > > > > If the process also blocked SIGFPE, that could be taken to mean > > "I can't run safely past an fp overflow exception _and_ I can't > > take SIGFPE either" ... i.e., if an fp overflow happens there is > > no way to proceed and it's really fatal. > > > > What SIG_IGN ought to mean is rather more debatable, but again, > > the process could be asking for two opposite things: guarantee a > > SIGFPE is delivered instead of running past an fp exception, and > > also guarantee that SIGFPE is _not_ delivered. > > > > It looks like arm and arm64 are different from most other arches > > (including x86) here, but I'm not sure what is considered correct, and > > it looks like the answer is not standardised. There's a possibility > > that some software goes subtly wrong on arm/arm64 where on other arches > > it would get terminated with SIGKILL. > > > > Whether this matters depends on how harmless the fp exception is to > > the work of the program. I think if an exception is set to trap > > via feenableexcept() then that's a strong hint the programmer thinks > > that exception is not harmless. OTOH, trapping is not always > > available anyway... > > Like many of these things, there is no clear answer. It's a set of > conflicting requirements, and as you point out, even if you've called > feenableexcept(), you are not guaranteed to get a trap. > > However, do remember that FP exceptions on ARM hardware are already > asynchronous - they get reported by the _next_ FP operation to the one > that caused them, which means they could be raised by a library function > sometime after it occured (when the library function decides to save the > FP registers to the stack before it makes use of them.) It's entirely > possible that the library function has blocked FP signals temporarily > (not explicitly, just decided to block all signals while it does > something sensitive) and will unblock them again afterwards - at which > point we get the SIGFPE, and it would be quite right to deliver that > signal to the user SIGFPE handler, rather than forcing it onto the > program mid-library function. > > It's also possible that SIGFPE could be blocked by another signal handler > having been invoked, and it triggers the latent generation of the SIGFPE. > > I'd be more inclined to agree with you if VFP exceptions were synchronous > but they aren't. Hmmm, it looks like imprecise fp exception traps are disallowed from ARMv8 onwards. I guess they made more sense when the FPU really was a coprocessor, or at least semidetached from the integer core. I think force_sig_info() makes sense here if and only if the traps are guaranteed to be precise, so we probably should use this on arm64. Not arm though (alpha doesn't either, if I understand the code correctly.) Does that make sense? Apparently, few recent cores (at least ARM's own ones) support fp exception trapping anyway... 1176 may be the most recent. Cheers ---Dave