Received: by 10.223.148.5 with SMTP id 5csp6094675wrq; Wed, 17 Jan 2018 09:17:06 -0800 (PST) X-Google-Smtp-Source: ACJfBovqvdSTfnXkolNy+KR2kBk2vEFQXo18RuFaLZ6ed7vuWrv+Q89oxRVW5PoJO2nr7pE57wGc X-Received: by 10.98.181.14 with SMTP id y14mr14952667pfe.216.1516209426060; Wed, 17 Jan 2018 09:17:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516209426; cv=none; d=google.com; s=arc-20160816; b=iKlXKPw6sIeRoCJ1+vRCAZvqsBX1fA9BVEnPZDCSAKEFShYGl/lEdKPVMLXb59UgXO fe1SDlwYL3G6H0/dvpJS1RJs8fJC9kHn7WAHF6sha8nKuGJO3fOtQ4OM4Lu6cHF2NEqe 4hFLzbkczBmvIWWiLSz/pCx5FuLoUYPUK+9FeDxiv5N68ANqKfJS7J0qu2DERSapg/st nSB7FKDhp0pe+G+KuakvsOdU8vEBOKoqsZQplvRPkL+OaBxVOUF7FNRAn5krlP6MYmRG 9VMPqja8njhaaOfgGKA9he/GURZx4CAP1z/9jv5nBVEj7cIdb3ttC/fDUU2AZ33ytlng QkYQ== 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:dkim-signature:arc-authentication-results; bh=gg+g/rAeU9nDeoXNd5CiG+sXC2HYgEI7dE/XDMwLm6Y=; b=ETQvNP2Ez0XrKDbwgH0r2gq/ZYfmkiBHocHNUr2K250h2EWO8i92T3GOhz1qmjUsdd XVTJLIQQJehVCgarSTK2dsSOn+Gsma2Kmxco/Y0V34V9q2TBg1+vWiO9anjHz8Ahs9/w iBnwLLnKqYiJNiByEwiwUhBs69o0LoK467qEmwRUVkIRk0c95mF2nvnz4xdfji6phzOD 9Ou6oDFiwAi8XD2ja2RXD/oHL35teYwm5zdeyxYzZAR35RoERzxXThjWT6Qc1p3Smj02 L1IH++mjSMHnRriupFlyzEtF4hMY5jkUnNhmd2QR98Z8Bc69fc5fntMePErNlnSXcDGz faTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@armlinux.org.uk header.s=pandora-2014 header.b=qaqvHIzD; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t88si4705507pfj.196.2018.01.17.09.16.50; Wed, 17 Jan 2018 09:17:06 -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; dkim=fail header.i=@armlinux.org.uk header.s=pandora-2014 header.b=qaqvHIzD; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754229AbeAQROs (ORCPT + 99 others); Wed, 17 Jan 2018 12:14:48 -0500 Received: from pandora.armlinux.org.uk ([78.32.30.218]:58258 "EHLO pandora.armlinux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750969AbeAQROo (ORCPT ); Wed, 17 Jan 2018 12:14:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2014; h=Sender:In-Reply-To:Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date; bh=gg+g/rAeU9nDeoXNd5CiG+sXC2HYgEI7dE/XDMwLm6Y=; b=qaqvHIzDO85bXZrYfcqG4+yvyNUUgf+Gw9EDef9CqQKr0alrxV0VhZVlT4yWSDqoVl+lcIlUgFiyga7wYAg2FqL4h838tqtYveCPjpwwTOwJ6vkWrlsbU/hWXwJXF51b2FbjCHCw2yuD9G58iJcpvLYlHSzygv7DOdusx8edkrI=; Received: from n2100.armlinux.org.uk ([2002:4e20:1eda:1:214:fdff:fe10:4f86]:39725) by pandora.armlinux.org.uk with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1ebrID-0007Mi-8Y; Wed, 17 Jan 2018 17:14:29 +0000 Received: from linux by n2100.armlinux.org.uk with local (Exim 4.76) (envelope-from ) id 1ebrI9-0005rH-SU; Wed, 17 Jan 2018 17:14:26 +0000 Date: Wed, 17 Jan 2018 17:14:25 +0000 From: Russell King - ARM Linux To: "Eric W. Biederman" Cc: Dave Martin , 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 , Al Viro , Olof Johansson , Santosh Shilimkar , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 07/11] signal/arm64: Document conflicts with SI_USER and SIGFPE, SIGTRAP, SIGBUS Message-ID: <20180117171425.GQ17719@n2100.armlinux.org.uk> 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> <87y3kwh1t5.fsf@xmission.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87y3kwh1t5.fsf@xmission.com> 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 10:45:10AM -0600, Eric W. Biederman wrote: > Russell King - ARM Linux writes: > >From your description there still seems to be an association with an > instruction so I don't know if I would really call the signal > asynchronous. It sounds like the exception is delayed and not > asynchronous. Traps can only be passed from ARM coprocessors by a coprocessor refusing to execute an instruction. That's what happens in this case - the VFP gets offered an instruction to execute. It accepts it, and the CPU continues, leaving the VFP to execute its instruction independently. If this instruction generates an error, then nothing happens at this point. That error remains pending until the CPU offers the coprocessor the next VFP instruction, which it refuses. That causes an undefined instruction exception, and we trap into the kernel VFP code which reads the VFP status and works out what needs to be done. What this means is that if you execute a VFP instruction, wait 10 minutes and then execute another VFP instruction, if the first VFP instruction raised an exception, you'll get to hear about it 10 minutes later. You can use whatever weasel words you want to describe that situation, my choice is "asynchronous", your choice is "delayed". However, it is clearly not "synchronous", and arguing that we should report something synchronously that is not reported to _us_ synchronously (where synchronous means "at the same time") is IMHO daft. So, let's take an example: installs SIGFPE handler ..fp instructions.. one of which raises an exception returns to main loop main loop blocks all signals while it sets stuff up calls ppoll() In the synchronous SIGFPE delivery case, the SIGFPE handler will be called when the exception is generated in the FP code, and delivered at that time. The fact that the main loop blocks all signals happens later, so the users handler gets called as one expects. In the VFP case, however, the FP instructions towards the end may not end up causing the exception to be signalled until sometime later, and as I've already explained, that may be the result of a C library function accessing the VFP registers. This could well end up trying to deliver the SIGFPE while signals are blocked, and we get drastically different behaviour if force_sig_info() is used. In the VFP case, if force_sig_info() is used, the program gets killed at this point. In the non-VFP case, the program's signal handler was called. Using send_sig_info() results in the already delayed or asynchronous signal being held off until ppoll() drops the blocking, at which point the signal is delivered, the program handles it in its handler, and the program continues to run. So 1. non-VFP case, program doesn't get killed but gets the opportunity to handle the signal. 2. VFP case with send_sig_info, program doesn't get killed but gets the opportunity to handle the signal. 3. VFP case with force_sig_info, the program gets killed and dumps core. Which one of these results in a big change of behaviour in your opinion? -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up