Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp195206pxj; Tue, 15 Jun 2021 23:47:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyewg6ayLM28/rJdbpPiANsxWuga2kwX61FIv6pA79kTm8DJ2AgvYhnaulnVr/pJyddNX8S X-Received: by 2002:aa7:c547:: with SMTP id s7mr2242423edr.239.1623826075330; Tue, 15 Jun 2021 23:47:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623826075; cv=none; d=google.com; s=arc-20160816; b=Ec77D12rpLKOop3ggGvm30pf/d4jEgGQVT5wbRg0YKQ9OGa+p2drvmDgf/h1rMrfdq dMb0nHQ84njBYngn0FXZbFWOl5Od/qE89y5l0n5RE9NI9l98EyDj59vJZjIwYVekbmNP J19MY4jz2mFb6RE3nGSeKQiUoW/qKpq45rea3VfOTS/FnPWHW5AG2gmaK7otWLGbakYC b8lX1hcb7NNNjLocpJgMR0ys0NrsmoIPzNWnHc4wrMquW5APLDLbRdnSCllyuS4MuxzF O9niGQL5YDxYwlR7O1+zB/hwl2NrMZo/jh6ywntkpiaTCg1Gr0bRl7Vm01rwOiNqiQek Po0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=9Q/YFKuXl5/2dB28pxnkzMjC2oeRT4Jr7tP5hNtsvlY=; b=WTweM8vGqzna3IcXjgZtkAcGJRyz36WlEmeFtVclksIEUn5zpVtWAamF7xkl3NzpWg zqzQ+xiN/PQESmoiTxaGsHjYvdWa6E+rzGJSAvsUDP7W5wGvzb/E/D28hWHv/0CJL+8a Z9C4GtQ3KZ9EPHzTYtS+R6jYnwMtWR/JGljQ9cdffryOWY/iqYc0CEH+f9Vp8hGiux8E Hc/Do39H/c9VO4YM7NvRNmLuu478EDNBmo5sd/b3M+sCTEH0tLSLCunhTcYWm+ABqaSE 1roysu0azXXDVDPMmTXjdfHIjiZ0NdgAZ/4wkOKwKEUPeVKNAnYvCheN+X2p/E1RapEh mN5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PBPKC4ue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b15si1317700eds.298.2021.06.15.23.47.32; Tue, 15 Jun 2021 23:47:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PBPKC4ue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231168AbhFPGsm (ORCPT + 99 others); Wed, 16 Jun 2021 02:48:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230370AbhFPGsm (ORCPT ); Wed, 16 Jun 2021 02:48:42 -0400 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 860E1C061574 for ; Tue, 15 Jun 2021 23:46:36 -0700 (PDT) Received: by mail-ej1-x62f.google.com with SMTP id l1so1999266ejb.6 for ; Tue, 15 Jun 2021 23:46:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=9Q/YFKuXl5/2dB28pxnkzMjC2oeRT4Jr7tP5hNtsvlY=; b=PBPKC4ue4+w8gUL2t8AwuX8yYxE8BTj9GkFcbDhiY29kyYe/WcHbTCqxe8VPq/alxs mQE4i+7i5B7hpz5rVBvj2Y3wbSabpo029LIvRHAADAKOFQdufckP2EJFt9iUTMSpkYcV MMxdu509/ZAHMJ6aDucl958Gfy16etNyJa0PikU885w+j/mom6RH94BXBsHk9kyH8yeD qBxtfGB3ozibl41DLtfIb7/JYgL2ZMZjlOrM6tp2ZvIu1Uu2zJbJcJEz4ChFQJaq9ip8 BhsNwDHZ1xwN8SGQ7DYmq457gF3iB31LoUDsehne3mSp3+ZZgrMWgPXn76eKcPslIB2h IsFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=9Q/YFKuXl5/2dB28pxnkzMjC2oeRT4Jr7tP5hNtsvlY=; b=Fu3tSx0bEx6uJiskeyu8lhBi2kczRdGyiID1a/Y4KPmAqo0WtGaksuS97Cr6TOwqYV oBUIm7cL/udEnd2CxpV5zjYoAscfbvpm/4wabuyT21AQzujo5xJWIMVXE/BNz+f8WYl+ apoQyy9r2atem8TEBhvGo/tSQExrOGburRRLFSDIuAmwq5g0gZwN4Tqqn+Tz+Zs7JHUF e06YgGtKm70/cEpGGTaIv1ZUN1OwoYTVX2KbAq53s1aORIgHxPzTbmXXj8vJofAqX3Mc 9/58yZiHkY5OKvCpUsNSRUuTrUp/x6fRpgy5LnYGl6MSHGqOpfVUg3ll6v+iIF6pcMWV r1jg== X-Gm-Message-State: AOAM5318l2Vm+o7JFOZf1nz8lBwISHjXph+CEMmKYoLBuuonmycLCjBe goB6tEm18EEzRXjKCYK9gnSxb8qedtA= X-Received: by 2002:a17:906:f9d1:: with SMTP id lj17mr3705563ejb.345.1623825995191; Tue, 15 Jun 2021 23:46:35 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:8a3d:472:da0b:d908? ([2a02:908:1252:fb60:8a3d:472:da0b:d908]) by smtp.gmail.com with ESMTPSA id by23sm464004ejc.85.2021.06.15.23.46.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Jun 2021 23:46:34 -0700 (PDT) Subject: Re: [PATCH] drm/ttm: fix error handling in ttm_bo_handle_move_mem() To: Dan Carpenter , Thomas Hellstr , B6@mwanda, m Cc: Huang Rui , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <03d0b798-d1ab-5b6f-2c27-8140d923d445@gmail.com> Date: Wed, 16 Jun 2021 08:46:33 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Sending the first message didn't worked, so let's try again. Am 16.06.21 um 08:30 schrieb Dan Carpenter: > There are three bugs here: > 1) We need to call unpopulate() if ttm_tt_populate() succeeds. > 2) The "new_man = ttm_manager_type(bdev, bo->mem.mem_type);" assignment > was wrong and it was really assigning "new_mem = old_mem;". There > is no need for this assignment anyway as we already have the value > for "new_mem". > 3) The (!new_man->use_tt) condition is reversed. > > Fixes: ba4e7d973dd0 ("drm: Add the TTM GPU memory manager subsystem.") > Signed-off-by: Dan Carpenter > --- > This is from reading the code and I can't swear that I have understood > it correctly. My nouveau driver is currently unusable and this patch > has not helped. But hopefully if I fix enough bugs eventually it will > start to work. Well NAK, the code previously looked quite well and you are breaking it now. What's the problem with nouveau? > drivers/gpu/drm/ttm/ttm_bo.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index ebcffe794adb..72dde093f754 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -180,12 +180,12 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, > */ > ret = ttm_tt_create(bo, old_man->use_tt); > if (ret) > - goto out_err; > + return ret; > > if (mem->mem_type != TTM_PL_SYSTEM) { > ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx); > if (ret) > - goto out_err; > + goto err_destroy; > } > } > > @@ -193,15 +193,17 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, > if (ret) { > if (ret == -EMULTIHOP) > return ret; > - goto out_err; > + goto err_unpopulate; > } > > ctx->bytes_moved += bo->base.size; > return 0; > > -out_err: > - new_man = ttm_manager_type(bdev, bo->mem.mem_type); This here switches new and old manager. E.g. the new_man is now pointing to the existing resource manager. > - if (!new_man->use_tt) So we should destroy the TT object only if the old manager is not using one. > +err_unpopulate: > + if (new_man->use_tt) > + ttm_tt_unpopulate(bo->bdev, bo->ttm); Unpopulate is not necessary, destroying is sufficient. Christian. > +err_destroy: > + if (new_man->use_tt) > ttm_bo_tt_destroy(bo); > > return ret;