From patchwork Sun Oct 29 23:01:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 159448 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp1896019vqb; Sun, 29 Oct 2023 16:23:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFDnQmIK4OHk1EIrqZ3pMtaowUVhvrfEvpoZcyMusV3/ZxwmfXNMOhCa/7AP7wFC76w6uxL X-Received: by 2002:a05:6a21:4887:b0:165:186:1560 with SMTP id av7-20020a056a21488700b0016501861560mr6028563pzc.53.1698621795254; Sun, 29 Oct 2023 16:23:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698621795; cv=none; d=google.com; s=arc-20160816; b=jI8AN/ep67ScR5SFjQOecrsPV+T8t9uZtKtKdzvSDX+3NAhPmlt0SWK9iqXbY+tpcP +d1SN/Rh2Sg+HEhMGhyU9AFaAOHfL+tX4m4KeWp+3oRVIIJw4OcRHv9YNzn6DQ2UEU5c a28s1idU6iui+5jHhi53coQl9FJRj4fIfOgF6wnVchnoMHWH2kiMT42jzmyLcoape+nF qBWE201fXhzCvmzi8KV/LUfm4sW148HYop9M/s/5C+UfxU3tFEHJsywjJHogd4+yBLAi aLVR+PUbpZneuk3taoJa2dBn1Gr6VR+LvRCPthjo6tOWjkriDtFn8a0KdFIT8f38afWS dKqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5MHcflXWxYfiU4GHksiEO8qkjt5CBoJSxW8lmEfO1VU=; fh=5cel2jD5h+yPMXVwxbomyVhwojHUqATy6nFjd4aOh4o=; b=akATGsuxh6lz4BYTy63bVbyxDy89MT1TJjNNIYS9dyxb+hMTQdN/w//vtaG28dzolV /M6sX05dPx7Fal+Jq8XcfaQWN8nz/Zzdd0umfrXdyphi5M86DHm1G5UwrbztZ/N95Q6K JM6SU07fnCv2jlvtcaTOSnIA8QkoItLTI2qTfuZ0KWG6IKce4UL9Rxeazwz0liAPejZ2 pUpRWScsVBELKypkYGzSzvBYZBH5yq9hFHsXCCISuMY+anpxUpgwvXRlMAxbz0YlCszk 4s81MZMPUM15dhdNuKV357DFdQ/CkqtAW5wT21XIyepoWbZyTJbUcDSClVWWiQ0biMMX GzSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="X5/Za5qX"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id j16-20020a170902da9000b001c9cc3a07c3si263034plx.280.2023.10.29.16.23.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Oct 2023 16:23:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="X5/Za5qX"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 08795807E463; Sun, 29 Oct 2023 16:23:13 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231417AbjJ2XWv (ORCPT + 31 others); Sun, 29 Oct 2023 19:22:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232316AbjJ2XWf (ORCPT ); Sun, 29 Oct 2023 19:22:35 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A7847D8A for ; Sun, 29 Oct 2023 16:04:17 -0700 (PDT) Received: from workpc.. (109-252-153-31.dynamic.spd-mgts.ru [109.252.153.31]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dmitry.osipenko) by madras.collabora.co.uk (Postfix) with ESMTPSA id EC9A36607324; Sun, 29 Oct 2023 23:02:50 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1698620572; bh=Jlmaekvj2hQJiZVYx0ur3VswhsYpjRjF0Slf4fhImyY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X5/Za5qX/f5RyiBjvLAk1GRX8JbJYZZxc4QRxhUA6GF1hRLeCIO5EbE+Hkv9N3EjK Pz1PUVy/2rpk4UWTW1+ccY6HQCO95x1NlavnfbU+de4gJ85ukcsDYceFr1lI3avV6J G7qaSLb1k2WLQdgnI2rMqCh1zK2IAA6MnMcsGSAbZvvIdG/62Op81b2ne4aPtCjifM rgbo9XiguiJSziDH9xM00EGN9a0g7TOR+Lw0k1hNNlzYw6QM9HZ16gwFnnmw0uHgft kMYRx86WLPfGHRPtoR0ez5igEZb1S1ZFCM+eTvLIKY020GQg71CFKmjQyOSYbxW1CZ QNCg2w3IJKnnA== From: Dmitry Osipenko To: David Airlie , Gerd Hoffmann , Gurchetan Singh , Chia-I Wu , Daniel Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , =?utf-8?q?Christian_K=C3=B6nig?= , Qiang Yu , Steven Price , Boris Brezillon , Emma Anholt , Melissa Wen Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, virtualization@lists.linux-foundation.org Subject: [PATCH v18 17/26] drm/v3d: Explicitly get and put drm-shmem pages Date: Mon, 30 Oct 2023 02:01:56 +0300 Message-ID: <20231029230205.93277-18-dmitry.osipenko@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231029230205.93277-1-dmitry.osipenko@collabora.com> References: <20231029230205.93277-1-dmitry.osipenko@collabora.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Sun, 29 Oct 2023 16:23:13 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1781134047466768541 X-GMAIL-MSGID: 1781134047466768541 To simplify the drm-shmem refcnt handling, we're moving away from the implicit get_pages() that is used by get_pages_sgt(). From now on drivers will have to pin pages while they use sgt. V3D driver doesn't support shrinker, hence pages are pinned and sgt is valid as long as pages' use-count > 0. Signed-off-by: Dmitry Osipenko Reviewed-by: Boris Brezillon --- drivers/gpu/drm/v3d/v3d_bo.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/v3d/v3d_bo.c b/drivers/gpu/drm/v3d/v3d_bo.c index 42cd874f6810..0597c6b01b6c 100644 --- a/drivers/gpu/drm/v3d/v3d_bo.c +++ b/drivers/gpu/drm/v3d/v3d_bo.c @@ -47,6 +47,9 @@ void v3d_free_object(struct drm_gem_object *obj) /* GPU execution may have dirtied any pages in the BO. */ bo->base.pages_mark_dirty_on_put = true; + if (!obj->import_attach) + drm_gem_shmem_put_pages(&bo->base); + drm_gem_shmem_free(&bo->base); } @@ -135,12 +138,18 @@ struct v3d_bo *v3d_bo_create(struct drm_device *dev, struct drm_file *file_priv, return ERR_CAST(shmem_obj); bo = to_v3d_bo(&shmem_obj->base); - ret = v3d_bo_create_finish(&shmem_obj->base); + ret = drm_gem_shmem_get_pages(shmem_obj); if (ret) goto free_obj; + ret = v3d_bo_create_finish(&shmem_obj->base); + if (ret) + goto put_pages; + return bo; +put_pages: + drm_gem_shmem_put_pages(shmem_obj); free_obj: drm_gem_shmem_free(shmem_obj); return ERR_PTR(ret);