From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76B5CC05027 for ; Fri, 17 Feb 2023 13:49:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 85D8F6B0080; Fri, 17 Feb 2023 08:49:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E5816B0081; Fri, 17 Feb 2023 08:49:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 610DD6B0082; Fri, 17 Feb 2023 08:49:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 538DB6B0080 for ; Fri, 17 Feb 2023 08:49:05 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 30B28140669 for ; Fri, 17 Feb 2023 13:49:05 +0000 (UTC) X-FDA: 80476915050.18.3911DB7 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf13.hostedemail.com (Postfix) with ESMTP id 229EA20018 for ; Fri, 17 Feb 2023 13:49:02 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gk90RsR6; spf=pass (imf13.hostedemail.com: domain of dakr@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dakr@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676641743; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=nuqfhAPXoP8eMSRnoJXE/EUnRUmH5Dpmadrq5ZDJBI4=; b=I4Hjqb3VwcHsPba3NsQSHdXhU1oQFEUIduUTxRFQcePVfx5pOiHibwwHSDAkdbU9YcVJhz y0yq9jzmDPwK9GT7ubanAMMsvxFYMHm5wOr6VrmCG+eMbFv4Qg3Mk4DlvzqHtbcovRUjm1 xUrYvPDgvJ2HTwB7JYXE51Zo5Fqb6bM= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=gk90RsR6; spf=pass (imf13.hostedemail.com: domain of dakr@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dakr@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676641743; a=rsa-sha256; cv=none; b=EvxTrWZQ6yw6sFLImUS9BraWYxyPUdUmDc209caVxk/bsrMIrVaawCwMUCMKiOaZpcxWeb YtOctl163YlaE0H4415L4qiYCyDAJbsZNKT0jSQkAjS9e8hb7tnP59QBHTDCu99fJPtyeU QLG1QMvk+Bcp7rvV7UXgyYiZ4t0bjmc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676641742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nuqfhAPXoP8eMSRnoJXE/EUnRUmH5Dpmadrq5ZDJBI4=; b=gk90RsR6DTRHwGsLXyS/JgVjbC/BC+xugRterCc180pAijNjsrxYAinPlvIeh6tr0z/NvW VITumhAI5sE/Gv5SGpwjogaa0IhVarRi/UftR6f/quV0P2gDyOyUg895oS+UB+QQ3uTieo spNpHAY7N+uvoq+Kr3Yjv3xnma5r9DI= Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-249-qcrm-5GTOBqCdwl-bPPgnQ-1; Fri, 17 Feb 2023 08:48:51 -0500 X-MC-Unique: qcrm-5GTOBqCdwl-bPPgnQ-1 Received: by mail-ed1-f70.google.com with SMTP id ec16-20020a0564020d5000b004ad51f8fc36so1496229edb.22 for ; Fri, 17 Feb 2023 05:48:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nuqfhAPXoP8eMSRnoJXE/EUnRUmH5Dpmadrq5ZDJBI4=; b=fx007XPTPViEYgIshY0nfcnANcXlg65hEJPFGTlyEaEnCcT0Pr8tEezn6O865I5/cG GQ3O6zfFxLTCAZPt+vJGdMlK/6UvQOkGuv/r6p7iA49fOGFYkoJW5EsbPDmdKhzcfUek hibnyJy3WqLEUVRXQoaHwTQ0iLIBea4PyuoM9IdL0/kfegJcWYWqZzjF37PhsIOlU90T VciOmJW63ojSQYs4duesaNbmCRzh/ISigHDPs6lVhl24FparvMp9fr+wkESXLZxC8tLT 5ZBCp36rogYQV3BTANd64OfddcTPCyEcX2YkQbNhEBQsJM3JHB6OGqHdtK2rMunGjEOB VjAw== X-Gm-Message-State: AO0yUKWcQAku7Bg9Z6n5QWNYuHwFe+MtenLdQI/X1d23v4tnepXSGN7H IEt0QWokjfh/orTNowngE1laRrM1WMGYTPlXtBEx2QpwxIotKXelG2kGmENSpQaEiYX36Y3Lnml Zvu6SvX2ElxQ= X-Received: by 2002:a17:906:5012:b0:87d:9447:f7fb with SMTP id s18-20020a170906501200b0087d9447f7fbmr444194ejj.38.1676641730479; Fri, 17 Feb 2023 05:48:50 -0800 (PST) X-Google-Smtp-Source: AK7set89k4Od4Os7LWbT0Iek0fo+d31O5+Il7AqZlhgERwv5aHbfx3F8XejW0D6aFl2/IjkHLHgKFg== X-Received: by 2002:a17:906:5012:b0:87d:9447:f7fb with SMTP id s18-20020a170906501200b0087d9447f7fbmr444186ejj.38.1676641730324; Fri, 17 Feb 2023 05:48:50 -0800 (PST) Received: from cassiopeiae.. ([2a02:810d:4b3f:de78:642:1aff:fe31:a19f]) by smtp.gmail.com with ESMTPSA id y23-20020a17090614d700b008b155de0984sm2180964ejc.170.2023.02.17.05.48.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Feb 2023 05:48:49 -0800 (PST) From: Danilo Krummrich To: airlied@gmail.com, daniel@ffwll.ch, tzimmermann@suse.de, mripard@kernel.org, corbet@lwn.net, christian.koenig@amd.com, bskeggs@redhat.com, Liam.Howlett@oracle.com, matthew.brost@intel.com, boris.brezillon@collabora.com, alexdeucher@gmail.com, ogabbay@kernel.org, bagasdotme@gmail.com, willy@infradead.org, jason@jlekstrand.net Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-next v2 12/16] drm/nouveau: chan: provide nouveau_channel_kill() Date: Fri, 17 Feb 2023 14:48:16 +0100 Message-Id: <20230217134820.14672-7-dakr@redhat.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230217134422.14116-1-dakr@redhat.com> References: <20230217134422.14116-1-dakr@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 229EA20018 X-Stat-Signature: 6x97z6ihk44gcuq1bsuu7cznfetkb9jh X-Rspam-User: X-HE-Tag: 1676641742-246152 X-HE-Meta: U2FsdGVkX1+8o3IfB8xTFK8IL0enbIWdnCi5Ints1t/CXv+PhTVAovG6B0kv/6HOcGyLusCtmo9JI5S1R/GzyujwjJcq/of9hzo9a06eFq9zlu5lM4ux6stEYZwW+XI7yiNvyR6AYz0ZIHci0I2U6XwxIqWUgHtMFtOUsgGfWdV8DS8vv+2lm4aKOYJyMY7q18zJ/y96a1+R9rUZAAp5kE/HBkB7fphY9dMaSk1PG4ttPGQOWJvLeOpTfTF7tfcsWV98LpGMHPbfRTdcPxLj+068Cq348GnJ72Vzd3Qr2/Bw7brEdMCV11HeGWlgvk2tYQVCsiWU9NqQvR24wgdqq2KIRQ02pxFpXoaRMzoGEj/B7oIrxj8H9OAJtHkLk6wZxD9XTJZXmClT4YCBpiVWFMevGaLbIEuwmRuIy/9JzkhOFF4OGNIWgDsGpVi2pcmMqI5I5o4OtdPyaUNuiDmcMY88KsRoOQPDtvVgoFpY3vB1Ep+jP+JHmycbrrErZte+K44ewzL2tmncpIqcwqBtlLgX9hgO/x6plspUnAWh5MUON2BQVQjH+vt/qBBSf8MzuMFJzfm43IUTXGuTBRnwC6uhAG8Z2ns1G0R07Al8Ucxbvq8iSpgGZ0XsWeyuZH9I2h+f+mQljxf0zGApxfM3qR0EEBo6LLKGKJujDfrISRg5wBLaNPKwGW4amZ3b9Rmyqi9zRt4QsQgUpyxJv1V8zOH4dKBrg3hg73pjy+AOriVzklchbbgpkHPfGBL1c7heXu2hqEvvrCYIKelGquSrLlQ3M4q8koz880dEip0JV2dLEF5/JzL2tpO0KYKM/K6f33dx25Vg5p1XxIm3fx+fDMx5z+RQMWgoiEX/fVPAGmRn8tt1O4399lSDhy2mijCqHtFT5JYaYmnF7caEVRV4dFHJo0A4nJCw0NHAzhM6OhmU6FIvOg2ptH1KBhBNki4W3Uqt1RjspnT/alDWcCL scNrYrlD gLMYGNqThn0xEPBN4WG/nnYTWzWVy1qupygnNslkwvy2K+ULWrxg92eoxoNChD6bx0Lacr2idyA6eYZ59WnE64UiBznKb28L+OpzpDgQmcpH1/d85yM2A0Z9sTd5oqYooEOWFUOmLymvujsv8S+lKAq1C8V8oRaSUqOfpbnErUxFwnOgGjQWgBFad9Zzc4TqwhOzNYaJS3tV1AbQ3ENyg19JIt8MQf3vFrXuLNoOUlJyD92oxK9qn0y1O0Ps73IJqclV+r6lGcajDO7/p5F+ztc3r3awA0clx30EIG/tml3/UFbtRGAp/FbLXRrHIlZMJSFoVSxgf+wQ09Bj26tZNvx1HSW5zdVAnplSHxuZl2ofPjmVQoO1pfpnNy9oyw+grrK+HisPR8mHtHLC4Dnt8VnNqja2qh3ifSNAOXJuRQHgJIexSpsfyhIbuVA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The new VM_BIND UAPI implementation introduced in subsequent commits will allow asynchronous jobs processing push buffers and emitting fences. If a job times out, we need a way to recover from this situation. For now, simply kill the channel to unblock all hung up jobs and signal userspace that the device is dead on the next EXEC or VM_BIND ioctl. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/nouveau/nouveau_chan.c | 14 +++++++++++--- drivers/gpu/drm/nouveau/nouveau_chan.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.c b/drivers/gpu/drm/nouveau/nouveau_chan.c index 1068abe41024..6f47e997d9cf 100644 --- a/drivers/gpu/drm/nouveau/nouveau_chan.c +++ b/drivers/gpu/drm/nouveau/nouveau_chan.c @@ -40,6 +40,14 @@ MODULE_PARM_DESC(vram_pushbuf, "Create DMA push buffers in VRAM"); int nouveau_vram_pushbuf; module_param_named(vram_pushbuf, nouveau_vram_pushbuf, int, 0400); +void +nouveau_channel_kill(struct nouveau_channel *chan) +{ + atomic_set(&chan->killed, 1); + if (chan->fence) + nouveau_fence_context_kill(chan->fence, -ENODEV); +} + static int nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc) { @@ -47,9 +55,9 @@ nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc) struct nouveau_cli *cli = (void *)chan->user.client; NV_PRINTK(warn, cli, "channel %d killed!\n", chan->chid); - atomic_set(&chan->killed, 1); - if (chan->fence) - nouveau_fence_context_kill(chan->fence, -ENODEV); + + if (unlikely(!atomic_read(&chan->killed))) + nouveau_channel_kill(chan); return NVIF_EVENT_DROP; } diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.h b/drivers/gpu/drm/nouveau/nouveau_chan.h index e06a8ffed31a..e483f4a254da 100644 --- a/drivers/gpu/drm/nouveau/nouveau_chan.h +++ b/drivers/gpu/drm/nouveau/nouveau_chan.h @@ -65,6 +65,7 @@ int nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, bool priv, u32 vram, u32 gart, struct nouveau_channel **); void nouveau_channel_del(struct nouveau_channel **); int nouveau_channel_idle(struct nouveau_channel *); +void nouveau_channel_kill(struct nouveau_channel *); extern int nouveau_vram_pushbuf; -- 2.39.1