Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3596355ybl; Tue, 21 Jan 2020 03:47:35 -0800 (PST) X-Google-Smtp-Source: APXvYqzPLzpX0UxSR5AtO1zgwQrwQt/kJZtytZeb+O1GG83ISR3pYXBGesEkHaJpEl83MNsYs3Gl X-Received: by 2002:a05:6830:1d7b:: with SMTP id l27mr2981586oti.251.1579607255480; Tue, 21 Jan 2020 03:47:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579607255; cv=none; d=google.com; s=arc-20160816; b=fEkHa3ZPpYPzs0g+m6n4/R0p00BuYEyBs0oeswR1doGUpd3+5f1pboYYNfj8FLYlQM oWzoMRYB4Fhl0CyPWXD4SO3KPSlCEAeL8ZtIAfGx5suBsEf+gN16FXNbfEN+7NcxAfNz IbJytals1/lvDz73YahL00E00sD8ZeoOAJh7D+s2Pxs1hEOc47plocgabsaVhGjC5O1n 9SNJPlWAPLob5IzM/4nU7s24+kuOcSELCWmeRkPsxxhQbIjiAk3vdGmGEjbODAo1AyEx j1OZLoPnXhmG5AN6pE+CeiFjFnkFoDFADS/M25yPJmwzaM8un74/m/VvRE4hCSBCfIcD 9F4A== 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:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=Rzem4qpUlZX5z0Ix0pyH8hIqPZv5kabhf4RQlt5VjI4=; b=sAk/5Wbti66i+1gFqmHr9u/lFz2+/fKpjBv0XwZ6cztMgpGrFKVGTFNsCLAZxIuTG5 vlgHRBTgFU0ZyvwCc/BtCl/L8zz3DpZHs9bArldFq04W0ZhjApZoKBtJR9Tg5b8Cml3Z OZWBAWfOG6ByAgu56XEUF/qhE778F18oOZTkXmbUA7VfYq+hbdQ2v/n+Tc+K7xJYeaHV GZH9fgOq7dGM+UDml/5yNMiFuKMy97Q1aQdjzgW5J2nYTE+UO47Xp/UpmdtdVUEpF7gV 2SuUGEQ9apzjW0R8NvzBP6fc0ZxiWnVPRrm0YrKOm3vkGDE6SuZbUvPPENaVa8FZc/P4 KLTw== 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 k2si3251066otp.155.2020.01.21.03.47.22; Tue, 21 Jan 2020 03:47:35 -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 S1729219AbgAULqV convert rfc822-to-8bit (ORCPT + 99 others); Tue, 21 Jan 2020 06:46:21 -0500 Received: from mout.kundenserver.de ([212.227.126.187]:35923 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726052AbgAULqU (ORCPT ); Tue, 21 Jan 2020 06:46:20 -0500 Received: from mail-qv1-f42.google.com ([209.85.219.42]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPSA (Nemesis) id 1MV2Sk-1j0ukv0vQs-00S3nR for ; Tue, 21 Jan 2020 12:46:19 +0100 Received: by mail-qv1-f42.google.com with SMTP id y8so1259460qvk.6 for ; Tue, 21 Jan 2020 03:46:19 -0800 (PST) X-Gm-Message-State: APjAAAVttoVmBLTrUHTVAfYnoIEDiVPAdj9bHUjGnSsfwcMzHUUaTAW0 1s8WowqXMqipFWg0W2hOFrT5kJTEJxPCFAJjIK8= X-Received: by 2002:a0c:e7c7:: with SMTP id c7mr4350634qvo.222.1579607178086; Tue, 21 Jan 2020 03:46:18 -0800 (PST) MIME-Version: 1.0 References: <20191213204936.3643476-1-arnd@arndb.de> <20191213205417.3871055-4-arnd@arndb.de> <20200117154726.GA328525@bogon.m.sigxcpu.org> <8d86fcb526ee14c7e6c80a787db645192c2c7c33.camel@pengutronix.de> In-Reply-To: <8d86fcb526ee14c7e6c80a787db645192c2c7c33.camel@pengutronix.de> From: Arnd Bergmann Date: Tue, 21 Jan 2020 12:46:01 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 13/24] drm/etnaviv: reject timeouts with tv_nsec >= NSEC_PER_SEC To: Lucas Stach Cc: =?UTF-8?Q?Guido_G=C3=BCnther?= , Philipp Zabel , y2038 Mailman List , The etnaviv authors , dri-devel , "linux-kernel@vger.kernel.org" , David Airlie , Christian Gmeiner , Daniel Vetter , Russell King , Emil Velikov , Sam Ravnborg Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Provags-ID: V03:K1:KBPpsYpnrBSGOdCwCE4yT4gNfvFTP/DIyrZDD00LB+G6/iaNwQs ntl1BvH3NIoSTPYU5TmFoGHnj3D3EUg8Wcy9CmWlumLul798VkaHzl8Re+vcJz/Tq1bec7P SE80JdS3fXvgaeJKRnG057tOQNr76wN8/Je/3/nKn/0MjaU7zPOxKt1EWwvCLwfMIN9Nyzi Uy/Uj+nwj/K+1z1mpY8Og== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:cBEZqDmt+Mo=:vedcsuiFNF4ab6FJwf4/q7 5WJJ9HMFXCkH4zHL26l3/gq/SUdzGZ1Tb320w1ejIBTupd09skVK3UPDmaylLWeoHrQ8KxdfF hbYQLhvDQujxWZcknq4LzkzBprqLeWVp9Xcq54R3E/WRhofe9+Gotkq2VYDdRm7B1LIF8vWb4 2KjS4D1a2dElMln6qsgEaQVBqMvG9NViPVnEQkjhMnX7T57V1iY9ohErBS8l0JyHylVbtk3O0 2d6214LMWcjCGR5n/oc9kIVrblhZjmddZnK6XedqbjkXz+KBkAL5Jz6XPyWNxiANAdYvffaYv wFBbU8iQsKKscbU4KG21BvkKP+jtyEQYSx+VSfwK5TMpGYSjnaAZmpEaPFdTvm1HmUD+DIJ2u mmiYG38SKfRB1xSOabTYkK5M6J2eS/oGcOeNfR7Mn8IOcOy8FBQ6QNfRs2HIEcrL9wdq34g67 v/Wlri3thoSp6exZHRQpoXUq1M8IVoSH1lj4/DZBOKkflL2ZnvyR7C2lumELvyK6JaeoqIlps huUIRn/Tn2CD4eooXorACvYg8GOIYqrXTPwpanlWJBT05Wo6emfp/A+EaFVECoPGXRfx0dKL3 kTy1wTXyILLKAVLJuIbNFDE1Unh3koDag+pEZ8e5+nnA5Z1hzub4BMCxecwlp5RZiGZlcLCnq CnDTlUp9rVlTkQwHG+pq9HEI5i9hy1WLc+vibNQ9ePegBaoc8KymZS/9kFCTs2ChUhXgoVCjn YGqiW6AQZmD1zSoGageZuRQIpHtaWJ7YZmaP8LwSrdlgXyL/tOIdnUnQmZiOjS8WV0ZBhNjMF DfKLMxlhkZV/DHvVrJljq+6j/Y5fAVraEZmviUbnuH/s6YFHXx3lvjXomynbJQaA9ONxrzilc +VZ4Zu1vTpvA0c6kupOA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 21, 2020 at 11:22 AM Lucas Stach wrote: > > On Mo, 2020-01-20 at 19:47 +0100, Arnd Bergmann wrote: > > On Mon, Jan 20, 2020 at 6:48 PM Lucas Stach wrote: > > > On Fr, 2020-01-17 at 16:47 +0100, Guido Günther wrote: > > > > This breaks rendering here on arm64/gc7000 due to > > > > > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_PREP or DRM_IOCTL_MSM_GEM_CPU_PREP, 0xfffff7888680) = -1 EINVAL (Invalid argument) > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_FINI or DRM_IOCTL_QXL_CLIENTCAP, 0xfffff78885e0) = 0 > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_PREP or DRM_IOCTL_MSM_GEM_CPU_PREP, 0xfffff7888680) = -1 EINVAL (Invalid argument) > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_FINI or DRM_IOCTL_QXL_CLIENTCAP, 0xfffff78885e0) = 0 > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_PREP or DRM_IOCTL_MSM_GEM_CPU_PREP, 0xfffff7888680) = -1 EINVAL (Invalid argument) > > > > ioctl(6, DRM_IOCTL_ETNAVIV_GEM_CPU_FINI or DRM_IOCTL_QXL_CLIENTCAP, 0xfffff78885e0) = 0 > > > > > > > > This is due to > > > > > > > > get_abs_timeout(&req.timeout, 5000000000); > > > > > > > > in etna_bo_cpu_prep which can exceed NSEC_PER_SEC. > > > > > > > > Should i send a patch to revert that change since it breaks existing userspace? > > > > > > No need to revert. This patch has not been applied to the etnaviv tree > > > yet, I guess it's just in one of Arnds branches feeding into -next. > > > > > > That part of userspace is pretty dumb, as it misses to renormalize > > > tv_nsec when it overflows the second boundary. So if what I see is > > > correct it should be enough to allow 2 * NSEC_PER_SEC, which should > > > both reject broken large timeout and keep existing userspace working. > > > > Ah, so it's never more than 2 billion nanoseconds in known user space? > > I can definitely change my patch (actually add one on top) to allow that > > and handle it as before, or alternatively accept any 64-bit nanosecond value > > as arm64 already did, but make it less inefficient to handle. > > So the broken userspace code looks like this: > > static inline void get_abs_timeout(struct drm_etnaviv_timespec *tv, uint64_t ns) > { > struct timespec t; > uint32_t s = ns / 1000000000; > clock_gettime(CLOCK_MONOTONIC, &t); > tv->tv_sec = t.tv_sec + s; > tv->tv_nsec = t.tv_nsec + ns - (s * 1000000000); > } > > Which means it _tries_ to do the right thing by putting the billion > part into the tv_sec member and only the remaining ns part is added to > tv_nsec, but then it fails to propagate a tv_nsec overflow over > NSEC_PER_SEC into tv_sec. > > Which means the tv_nsec should never be more than 2 * NSEC_PER_SEC in > known userspace. I would prefer if we could make the interface as > strict as possible (i.e. no arbitrary large numbers in tv_nsec), while > keeping this specific corner case working. I've added a patch on top of my 2038 branch, please have a look at that. Arnd