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 C9170C76196 for ; Tue, 4 Apr 2023 01:28:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 64AA3900004; Mon, 3 Apr 2023 21:28:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5FAFF900008; Mon, 3 Apr 2023 21:28:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 47450900004; Mon, 3 Apr 2023 21:28:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 351C9900002 for ; Mon, 3 Apr 2023 21:28:40 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 194FC12030A for ; Tue, 4 Apr 2023 01:28:40 +0000 (UTC) X-FDA: 80641974000.24.CF96950 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf15.hostedemail.com (Postfix) with ESMTP id 1475BA0006 for ; Tue, 4 Apr 2023 01:28:37 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MFWEsoC7; spf=pass (imf15.hostedemail.com: domain of dakr@redhat.com designates 170.10.133.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=1680571718; 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=rFDnwLdkC+a84lmheZyyv02Y7sEGNyBLjO5UYHqgwOc=; b=cRo1lFL7/uFsSv6yOsC4teHFKtPPPRNJ2kPkDmhHG0TUCpmmUS5lDl8a0YKIll7iP4O4o7 2KtgoipWJ6/CzwqAAfFSYEfeeGZGDFQVbHsD3l/94mI6q6hKmD2hC5k5UqjTYKzJrwrL6V 77EFy0HOIzOkdfBlWuy2xUkNwR7eVwU= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MFWEsoC7; spf=pass (imf15.hostedemail.com: domain of dakr@redhat.com designates 170.10.133.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=1680571718; a=rsa-sha256; cv=none; b=tsNwoC0fHXKTnvZeIkPgGNioOrJIVZr1Gx1cIZp0GMJCbiW3fGWE8Ff5ENKheKgZDn1Hd+ adYoKoKee7IVcCadxAXeVmK4le8THDWIuGmtKAZGeeoxFPlFhLNyNPo8nIDvAgNUwcOvQL NZOVv9WH9H9+L8MDbeHaoOjg2wYhmBQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680571717; 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=rFDnwLdkC+a84lmheZyyv02Y7sEGNyBLjO5UYHqgwOc=; b=MFWEsoC7Wv6tYmFJKNqZ4iDLi0D6FQnvSuTA7rn2ua2XpSQ/JTyKWN4XlfrLcRsPqqd5Qy xSpVPg0qA6bbU3/0z3r5Wn3HzbIeXf262/6jJZUsounGBkfk9oWrIMr7i0YtYdkVNPdGaJ mNOFFTBY4y2H9C+PgxnaLQ+hsmi0HKM= 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_256_GCM_SHA384) id us-mta-460-IUUltFxOPNetuZUZhNFEbA-1; Mon, 03 Apr 2023 21:28:33 -0400 X-MC-Unique: IUUltFxOPNetuZUZhNFEbA-1 Received: by mail-ed1-f70.google.com with SMTP id c1-20020a0564021f8100b004acbe232c03so42922186edc.9 for ; Mon, 03 Apr 2023 18:28:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680571712; 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=rFDnwLdkC+a84lmheZyyv02Y7sEGNyBLjO5UYHqgwOc=; b=L+j9P6T/Dx81L8dNG0BQIyl8ciIYx/Y01PkjjyDk4pty0Tp/56s4NM7D8TijYD1zS7 TeDbeYYgrgr7LzyorH+98mneOfxCEvPmSij02OPVZBhrfdXKrp3PEIIP+iXqNNsoaNGM FiH5rGdv8igql8a2Chyan2VCGx5rdaDnlxqfNlFnB7SG14ffCdIl55Rha3rYfV4UdyTf GEA4yWPwDWmKfUH1XvLFYETtZTsaNuJDC7CPko0WX5roWmy0tusIKn4MMybwiNsUUZfi F8P65w/SjNOneT1RE3raGjl+iDY9T5VBQ6kinnODpcu7wQK1vSpNqWvQTUDPVd24Lbcf D/Tw== X-Gm-Message-State: AAQBX9eYIo7H7QInsNCzOprhfD9SINJB6bpdrx49fsEYgpvQwvvVVqfE tgFiFrxkQ3UKq3jxdy0YtZ2Sj0MvRV88l71+JGdXaVua5DWWK1Do9x6WIf1jm0QgXquW7L1ENfp iX6jGCbl1WGk= X-Received: by 2002:a17:907:3f22:b0:931:86cf:9556 with SMTP id hq34-20020a1709073f2200b0093186cf9556mr754090ejc.23.1680571712722; Mon, 03 Apr 2023 18:28:32 -0700 (PDT) X-Google-Smtp-Source: AKy350bTvpbIk/GmxFlxt18RFwL9YdKIZ4Q77ktCoQzFycA8gGsVYWiQjvWZuLDin9qz3iy+Fs1c5A== X-Received: by 2002:a17:907:3f22:b0:931:86cf:9556 with SMTP id hq34-20020a1709073f2200b0093186cf9556mr754076ejc.23.1680571712535; Mon, 03 Apr 2023 18:28:32 -0700 (PDT) Received: from cassiopeiae.. ([2a02:810d:4b3f:de78:642:1aff:fe31:a19f]) by smtp.gmail.com with ESMTPSA id n6-20020a5099c6000000b004aee4e2a56esm5318778edb.0.2023.04.03.18.28.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Apr 2023 18:28:32 -0700 (PDT) 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 v3 12/15] drm/nouveau: chan: provide nouveau_channel_kill() Date: Tue, 4 Apr 2023 03:27:38 +0200 Message-Id: <20230404012741.116502-13-dakr@redhat.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230404012741.116502-1-dakr@redhat.com> References: <20230404012741.116502-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-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: cacc6yhfytw3h3761e5oopn4m96kjjmx X-Rspamd-Queue-Id: 1475BA0006 X-HE-Tag: 1680571717-756453 X-HE-Meta: U2FsdGVkX18XPwwR324OlE//l5s61W3xo0KWkxucI+kyBmuxN2Z/JUMWF0lHJXg8xW0XksSWgmYA+JDbA6c1OaGXX9evm2AmY49fOcCxV9iDoVVYnjjM1mI9bhOjN6IHEtgwGAAS3F85wb8SbM90xddPDfeal4fYMlHKOgXXq1oD6lnANae2iCQos8kX2fOpZdTh4ULBSsAEaxyE3JxFOS4nYSe+DZFPHCAxI5cXYe80nhZPfQyWhYEWPtSF8+2CoahP1sUedevfNLHVo2q68S87RTL1kJNHxMPOjcmYIw57Qpy6MI+It9YLN1c1ozdYHhpVH4zPO7amMvNgwd+RcFttrvpglYmtjWdxMGYNKy08duIP+PCRbT38aXSO1tstR7KPSOr8htmRr/x4MJQTq+4mXENV70DFmqUBj1lezbxOUD4rym9v6nidHPUKjDwYDzM+0lDkDdbI2yaa8SA8HPjcpA2SHK5FokDRWvryu4BVOlF2eTmX+aZddOYHKsqUD8zk03LI7XcObcDKuIKlDRQn0/2PvTyM0dANpq5LTU2+levwb2h/57bZliAjMMdfMa7xKMUtSh1nmqj4ikm1fz00xo+pI3XVtUh2SXnj4+38h9voWANDiSRLawtXUQKpP89aeGe6NuwmpQdMJPS6Mi/LEwnh6cQhTg8VslasnsM1yVGLZv5YBuTVjdMZmrOtO+83U+gSXWtEfO+mfwSxNpHnwGojcDCe87ld8l/1K7BhtGDU9dQ6mHKpsCFYs4ELtO4GKeMjzCgHQuklEGlMEuPtNMBYwrXzWkfluxYj0AdIhfiXiwK1TsbDHyx9nBHZ6whh5MmJaxJz7iBhbf0utU1c5eCohhxyYIYf1nDO0Hr0VJxxpUjhZR4IbVo9jEytqO+ZkDL6JyjoQOYZ6h1LJED3iztlD2w4ivxph+N61Hd+DsRZV6iQiI79sKrD600dnUq+D43cVYwbQdZb2BI YWyZ+Qmt 112LWqYoUyW1+iqJOivkiS084nASNeayItXS4B+AFQGsM4v751btKrmgM4HEAsnM3kyLG7HUdC41yS/l6DeXPjhtjP0NOUz8ugZBw1xC9Gfz5MJjkXVLzr4P6uPFLt6Wl/+B9JsrqLtSdtssfIareqxiWzTs0jFOrmLWxm21AMjIptE8Y1FIM/OlkCFPyZY4hrHa0yHxlKEfLxZ1eFotBl5Az3CtarttH26n0qMed2zgJKK+Z/JmHiR6ARGjz06tlQEWWMGm36iGb5josZj+O5OQO5x4IGR8CZG6vniu0w6wA7nkQg/9VFaPlGi8uas4Avwldg65JrSoyyTpb1SkhldX0b2leeoNphnexLQQJihUq7QKwjRFUMKpNKOOhBKoUXus+rN0mNR70QLLcmdJZuB+q57EvqB487D+rfDgDmFxpaGKtlAkorVhoNadpvn3Tmdp8b8GkYvbtdIU= 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 f47c0363683c..a975f8b0e0e5 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.2