From patchwork Wed Dec 20 10:35:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "He, Hongbo" X-Patchwork-Id: 10125427 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C5EF26019C for ; Wed, 20 Dec 2017 10:37:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AF1C82962E for ; Wed, 20 Dec 2017 10:37:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A401F296CA; Wed, 20 Dec 2017 10:37:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 14D2029685 for ; Wed, 20 Dec 2017 10:37:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 58CDA6E3C6; Wed, 20 Dec 2017 10:37:09 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0076.outbound.protection.outlook.com [104.47.37.76]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C4696E3B9; Wed, 20 Dec 2017 10:37:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=TYW7ShETQsg35/rjQpRy4pC1BscRO/DEW+wFyIjlLkU=; b=Nzvb3ktF2nnJ9dwpZ+YrAU8beZeZvYTvFM0VqWTUHtfUR3a6DATly/72U4gb90Q8HLydfcS+vL4UbU11/NtKcP1ICqvm3jiJadh1Nztkkv63PufF5PbTmwnHx0bY+VIHKNmQfHCERWHzsjwV3idM6RwgG/tFOeCJYxYPrdGo8do= Received: from BN4PR12CA0014.namprd12.prod.outlook.com (10.164.241.24) by MWHPR1201MB0063.namprd12.prod.outlook.com (10.174.98.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.323.15; Wed, 20 Dec 2017 10:37:05 +0000 Received: from CO1NAM03FT020.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e48::204) by BN4PR12CA0014.outlook.office365.com (2603:10b6:403:2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.218.12 via Frontend Transport; Wed, 20 Dec 2017 10:37:04 +0000 Authentication-Results: spf=none (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; lists.freedesktop.org; dkim=none (message not signed) header.d=none;lists.freedesktop.org; dmarc=permerror action=none header.from=amd.com; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) Received: from SATLEXCHOV01.amd.com (165.204.84.17) by CO1NAM03FT020.mail.protection.outlook.com (10.152.80.178) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.302.6 via Frontend Transport; Wed, 20 Dec 2017 10:37:04 +0000 Received: from roger-build-server.amd.com (10.34.1.3) by SATLEXCHOV01.amd.com (10.181.40.71) with Microsoft SMTP Server id 14.3.361.1; Wed, 20 Dec 2017 04:37:03 -0600 From: Roger He To: , Subject: [PATCH 7/7] drm/ttm: enable swapout of per VM BOs during allocation and allows reaping of deleted BOs Date: Wed, 20 Dec 2017 18:35:01 +0800 Message-ID: <1513766101-15993-7-git-send-email-Hongbo.He@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1513766101-15993-1-git-send-email-Hongbo.He@amd.com> References: <1513766101-15993-1-git-send-email-Hongbo.He@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:165.204.84.17; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(979002)(376002)(396003)(39860400002)(346002)(39380400002)(2980300002)(428003)(199004)(189003)(305945005)(105586002)(106466001)(36756003)(478600001)(7696005)(72206003)(2906002)(53936002)(50226002)(450100002)(51416003)(81156014)(8676002)(8936002)(81166006)(76176011)(5660300001)(104016004)(316002)(4326008)(68736007)(86362001)(50466002)(48376002)(356003)(16586007)(77096006)(59450400001)(47776003)(97736004)(110136005)(2950100002)(53416004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR1201MB0063; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CO1NAM03FT020; 1:N97br+xkmtqbe8AFTzPVe0vq1KHReZLPbsSfJj393RZc+plNmAkI6ctJh/ruvTD6/XQv22oUHGTP+0Hcb9DquJPlzTF4x4tPxDsfoXfy275ORXez/6N/Io9CbSarzsvI X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 42944e1f-0f55-4039-efaa-08d547959ca2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307)(7153060); SRVR:MWHPR1201MB0063; X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0063; 3:oZ+2HqxkJnRkqk+L5yaKEpOJneQkcFJyekkggclSY0FqhKJYvV83lfqb+Pd51rRckG35+gcSpcb2i97BbYRO1yzhqx7AbgVpznVpqtawkhuwMkWopzqpUa8lyEcDZSwn+j0Q7Y4p/bvINjl8T7YMCrKOPs2V0k1UTkyGZRL2tXh7wqb3waDAH+QqDuepRhEycn1gCGDxBrVqKhxvRu7clRVI1t1ehx194VKoQ9NmytLk0wSuVIOOEv0MrxhU7S+hk0NDZJCXmg31RhpUuTJVK0ewphkhUUKbUrsAPLOjwHbQkGgS6t6A0k7vA8ZGwQbLBwo3B/dUyOcqHNPUItwu5gRhe8n6Y//stA2ohj0ZZdo=; 25:8l/8wznUclzOv4dDcZQUroExr7mA+UpStFNTw3LhUl9mp0IW0jAwAqL8algZNS+HjeWTZMw/rR5KOGgPMfkBCENttJk9QKiIJrEpgAYZRnK6lDiRyAOQG7o7ltXBrP0MIri+Dg1WryPeMoX2H5qU3lQvcG+WCvczxxOmlWwlQyRUolNwtSUAsV5L586CWd3DhNo5h0B3YZLB6IuoFB7XVbuIjcByxqxOiZQL/2H/gCLOE1ccXhO0SA4jeMytpwm3gQXQLTZAZ5vN9z7TlOFGJBlg1Kli0HZf3+3zM6sSjCsrO1m4WkCYUWxM48ArU/PySO5dInSe/s/yxNjWwuU60w== X-MS-TrafficTypeDiagnostic: MWHPR1201MB0063: X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0063; 31:hl1bTXgsAqaoOP9g1W6xwCRuzgarkqSChpHvlBickzIao3dU+06xpAlQEFn1PjiL5qbREaSEzC3D41/aUhxLd1eJWjUxwZgoE8mOmITbn2y876NQPPL0eCn4BdDdDrV7BOINrmSpyi3HB31z5j1p3tvFVzEAtDYi/MstFZ+ux7WVrh36OZQnbUh7LH/6BHBHx6hlKfNG6su88+OXm7MdEVKTW4Dj8/aCISJqVapmAjQ=; 20:Zn7yR3mHiIjc7KO2lJ1EFayB0msOK5QZND1fRQbhZe2uk/fiEFwk4zH5Nl+oPMS04Z5PjxW01dDYShhfBXwXDBPA8eu5X6l3+lx6OwqTiYl2ovaPY36FAPMAriHqq2Y93k6Ng6kr6u5eLSqO3EIBli5yTNArxJHFMDdB1WRtUB5xZV1nvzNPWwGnKyX/kPPr/nVGzhhjlY8R52v2rPWuaYn+cJhSbFqnDFavzZSa/rnfA1BP6iUVqD1vUwEq24Xm1EmQJgkTJ0S7U3Y01BNk4YxwDteojtLmlVBaudwDz5Qz9Mz/ki6HDok+X3x8WLmx6rw4pxKbHoF0ZrDUZkwuRFTCOHA4pnFsF5LMBPZxlz662ype9E9YqHonePpD0JYL7utA+om3yDDsi67fqaiBJa6nggmPNbfvNIoDlHE/YDEWZ30QG+K3WhXTUFgetzMseWIW3mTsSIjj36NKNrWo8ukg03XYl/S2g0X10pS0QUIfMw3WU7If41NO16d+5zgs X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231023)(93006095)(93003095)(6055026)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MWHPR1201MB0063; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:MWHPR1201MB0063; X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0063; 4:uuRoydWtNzditrM5PrCgYjTSQwbbImor3m1giaA2+pnNDyPCTL8zB/qmm04Pg2PNmS/p73kI3YJJHfLz6R6iOfjBuVbd719vJbH/Oxae4vyqcf8t3IZ9AgJtLdFogN4WwwczVIO2BZpjfF2QsiZEcULkJuVFS4Q7noSFaO9doFq6pq6UbZKzR0BusK9ZV6DsFA6xt9HVfhe8qWMP3yu3QGFBgyVR81OqZxioCSXl4CLZgFVvkLD7BlfWqNHMV2oLFQwhz5CJPhbwCqNmPXVgpoWY85l/89KOrkrnSvWyFnLt9EskGBc4hBSygnShsoF7 X-Forefront-PRVS: 0527DFA348 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR1201MB0063; 23:CiSTLqsM4Ziw941MLtYuOMY55dGIPky1yqSKiZW?= =?us-ascii?Q?AtCikLLiYhGkiWUJ+AXWkO3KVHxQxdkw0zgYaKwndxnS+PQuOdgfOuUjpqAA?= =?us-ascii?Q?TrQVrlqlqhGDdjBOxl73iq0+OxKvvDV9d/LGTK5TMjwpV7G9QlBx6JQyZjhj?= =?us-ascii?Q?0GIZGAivF3QTfh3zZKiV4G4n6G5zOqtXjqcDl6iQVPUflaTGglk1CnxJWXEj?= =?us-ascii?Q?Wreldk+ISTCvpvZjqkWBiIfArtHaBXzLmSs6lTLYCvHrA6X6woxKi+YvnvFI?= =?us-ascii?Q?QngZMUGYA0sSrzWEza7AKCh+tjrJUEMtVC3vcfFLspDbSPFi/wOx9Sjnn3q/?= =?us-ascii?Q?QQ6wgbxLey0NYwNMYMta0xgRg3w3gekoZQ2HnPAFSf0YSnYln3va0t1p2lQn?= =?us-ascii?Q?Nc+PBL+xTILjwjxHhC31VvTSzhFhkcDnkOzKRiptjLzE+icc03SkWiNsWVnx?= =?us-ascii?Q?kxeK3Wplvo0SP8HU5UPKy+fU/1f105iPhRx+zLM5bt8mcforraYyPoeDBC0o?= =?us-ascii?Q?a0lLRc+9S3K1+YaAMqusyOh10wSyJR68vTzbeC4IiNE/JHG91n/J82OPg1wh?= =?us-ascii?Q?59xdZLydWul42jc6PDlL22mQxEgoNn1JqCXC4MLGOX60oS9TQ9x8bJyj+hdY?= =?us-ascii?Q?cd3UsQPMaJTcvOl6yik3Vt3zY+21zHlp00JEFHf3UFWRdHr0rHe/ZibfnQM8?= =?us-ascii?Q?ZggNjVzWi39Gvi3xWws4VrbpWs+YkWVRR3Tb+eSUBjccAhHzD2UCSauOdhTZ?= =?us-ascii?Q?ummD917DeKfvYV1dPW4cEvqEEt6hw7eP7i7ayfgx2hFfwT8vETsTDV3Em/2j?= =?us-ascii?Q?YJOLzvaysle/QmAbXD9SanzlzZH77CKB/K8Xqc+mswSo/+XThKu6Io4mDDoW?= =?us-ascii?Q?GzMLqj8EzV3KylakaWJzLh65SPa7UEqu8lUkPi4HoWXwalHa8V2GDaET3qZo?= =?us-ascii?Q?NFyV5LGX9PD7uy/vkdWnha0WM6vhZP0jCPj0GD6XX2M+7HJYkvdUK9dezAs9?= =?us-ascii?Q?pbwLMF86CtPpAY9I5eE1U8cyWdSYgm8WDFXotsghw5g9od2GHARFfS7PtEHD?= =?us-ascii?Q?wbSXR32uDQFtIToHOsKQWKbbSCx5AHLba7HVYzdqKZz2q1i6whZ6q0JdBa4A?= =?us-ascii?Q?jLDbGgQ1c5dn0LjbdjMdU4j7TRg8jrHJn?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0063; 6:UBonB6I8l43qLZrIiFqziX0EX7pUuxdbSG4faUHulaIjH1ljlDklXQyDZiqwx++z+LvLBQNf4UyTWQK1QcSBxsS7VlTB2QSeLivQhGPMIr+kLJPrG8ohCNTswWSNm55UhdE0o2Hqk9TKcOkdMJ1vyuDNuTKGrDCvat7TTLTV0j9YnyVlNaog85wEdMrad1SuPLNhsl1ETIePW6aVXyBon0xGHMul2jjVtHemY4gW1IwgbExPY6gXe61yxq914H/Zn7F5JOaXdwrKIlYFq/ZcA/ErZb8MnoMzR8EsFgjYZg4LcklJsst04BKHwuPRQWYMIrSTAXas+7+YWLZwUt38UfdG84UT07qm2yuQRTltMPY=; 5:CNTSkWApwsjx70JpV7cEsOmmQ3BYn10JKFkiO7V1zJn9A4QCvaRm3fQ4wKz0bJTA72IhnLC6ssfsVT1PdyopOSdWVWEyQK7/d3mPqpc1zfA/0w1FF/gJq/DfWQo1Dw2y/kcftnZ13O6cnaFjWeDCgGX0zoREcPbi8IUp/iMsVkY=; 24:dYLrjah+DInmFVk8GK9u+Bo+MRiOduqec6WC8tG4XFiNyo2EqEsXmgE2LjVq9Qpu8ym2UV0J9ffzX28QQvZbllVnmcF36NGwZu/8yOoZHWo=; 7:NKCeAOn78bt2PLbe9ZfmMitNT9uHEcp7H5pifRjSiiOURUEJc958g5xjLoITiL6T/Z6kqQ/JYArX4SK/A310xo/Q4Eh7RJ7ytK0TzFd9GiOToEbOj3pAZFFjQa7DPMUR0cKJmDvZXhrGNN8q50dkFlEbEcTz/o7x/4xCdC8q4pJ/g9wQjl35eCqan6F16Ks04cCCNrRuwXqmE1EWtgB1suK4PJW+i6H4aZakzMtzLBg9cosNwNL/gZv/rv547Evd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0063; 20:lMvD0meuXRg6wDl2QqxsZ5Ezc77Qjy0a0bGtvp4HXc5m3vTkKsYtZjMHTHgj518fY+lsIgNM07rUim2ebKDkInBzKIEtdM7gWZka1adU+fmojeI1wyFM82rf18UgKV4/1uRrk6gTCKYdcxRAHx6CgFtqfb151QDttzwWVKLZN/ZW7pdayHa2cFUQC4JBqVU42GwvAsMgZGyglZqed0s+XqW1Mn4Tpl0J8Z36mRzSCyQxxbJaj9uc5hoKXzKy719S X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2017 10:37:04.4541 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 42944e1f-0f55-4039-efaa-08d547959ca2 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXCHOV01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB0063 Cc: Roger He X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Change-Id: I1e87954564f38ad298bf6e4ff88c9f26f291a62d Signed-off-by: Roger He --- drivers/gpu/drm/ttm/ttm_bo.c | 15 +++++++++++---- drivers/gpu/drm/ttm/ttm_memory.c | 12 ++++++++---- include/drm/ttm/ttm_bo_api.h | 3 ++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 313925c..ecb8916 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -1686,18 +1686,20 @@ EXPORT_SYMBOL(ttm_bo_synccpu_write_release); * A buffer object shrink method that tries to swap out the first * buffer object on the bo_global::swap_lru list. */ -int ttm_bo_swapout(struct ttm_bo_global *glob) +int ttm_bo_swapout(struct ttm_bo_global *glob, struct ttm_operation_ctx *ctx) { struct ttm_buffer_object *bo; int ret = -EBUSY; + bool locked; unsigned i; spin_lock(&glob->lru_lock); for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i) { list_for_each_entry(bo, &glob->swap_lru[i], swap) { - ret = reservation_object_trylock(bo->resv) ? 0 : -EBUSY; - if (!ret) + if (ttm_bo_evict_swapout_allowable(bo, ctx, &locked)) { + ret = 0; break; + } } if (!ret) break; @@ -1773,7 +1775,12 @@ EXPORT_SYMBOL(ttm_bo_swapout); void ttm_bo_swapout_all(struct ttm_bo_device *bdev) { - while (ttm_bo_swapout(bdev->glob) == 0) + struct ttm_operation_ctx ctx = { + .interruptible = false, + .no_wait_gpu = false + }; + + while (ttm_bo_swapout(bdev->glob, &ctx) == 0) ; } EXPORT_SYMBOL(ttm_bo_swapout_all); diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c index 8df0755..8817b86 100644 --- a/drivers/gpu/drm/ttm/ttm_memory.c +++ b/drivers/gpu/drm/ttm/ttm_memory.c @@ -211,7 +211,7 @@ static bool ttm_zones_above_swap_target(struct ttm_mem_global *glob, */ static void ttm_shrink(struct ttm_mem_global *glob, bool from_wq, - uint64_t extra) + uint64_t extra, struct ttm_operation_ctx *ctx) { int ret; @@ -219,7 +219,7 @@ static void ttm_shrink(struct ttm_mem_global *glob, bool from_wq, while (ttm_zones_above_swap_target(glob, from_wq, extra)) { spin_unlock(&glob->lock); - ret = ttm_bo_swapout(glob->bo_glob); + ret = ttm_bo_swapout(glob->bo_glob, ctx); spin_lock(&glob->lock); if (unlikely(ret != 0)) break; @@ -230,10 +230,14 @@ static void ttm_shrink(struct ttm_mem_global *glob, bool from_wq, static void ttm_shrink_work(struct work_struct *work) { + struct ttm_operation_ctx ctx = { + .interruptible = false, + .no_wait_gpu = false + }; struct ttm_mem_global *glob = container_of(work, struct ttm_mem_global, work); - ttm_shrink(glob, true, 0ULL); + ttm_shrink(glob, true, 0ULL, &ctx); } static int ttm_mem_init_kernel_zone(struct ttm_mem_global *glob, @@ -520,7 +524,7 @@ static int ttm_mem_global_alloc_zone(struct ttm_mem_global *glob, return -ENOMEM; if (unlikely(count-- == 0)) return -ENOMEM; - ttm_shrink(glob, false, memory + (memory >> 2) + 16); + ttm_shrink(glob, false, memory + (memory >> 2) + 16, ctx); } return 0; diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h index 24a8db7..f1c74c2 100644 --- a/include/drm/ttm/ttm_bo_api.h +++ b/include/drm/ttm/ttm_bo_api.h @@ -752,7 +752,8 @@ ssize_t ttm_bo_io(struct ttm_bo_device *bdev, struct file *filp, const char __user *wbuf, char __user *rbuf, size_t count, loff_t *f_pos, bool write); -int ttm_bo_swapout(struct ttm_bo_global *glob); +int ttm_bo_swapout(struct ttm_bo_global *glob, + struct ttm_operation_ctx *ctx); void ttm_bo_swapout_all(struct ttm_bo_device *bdev); int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo); #endif