From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Grodzovsky Subject: [PATCH 3/4] drm/gem: adjust per file OOM badness on handling buffers Date: Thu, 18 Jan 2018 11:47:51 -0500 Message-ID: <1516294072-17841-4-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Andrey Grodzovsky , Christian.Koenig-5C7GfCeVMHo@public.gmane.org TGFyZ2UgYW1vdW50cyBvZiBWUkFNIGFyZSB1c3VhbGx5IG5vdCBDUFUgYWNjZXNzaWJsZSwgc28g dGhleSBhcmUgbm90IG1hcHBlZAppbnRvIHRoZSBwcm9jZXNzZXMgYWRkcmVzcyBzcGFjZS4gQnV0 IHNpbmNlIHRoZSBkZXZpY2UgZHJpdmVycyB1c3VhbGx5IHN1cHBvcnQKc3dhcHBpbmcgYnVmZmVy cyBmcm9tIFZSQU0gdG8gc3lzdGVtIG1lbW9yeSB3ZSBjYW4gc3RpbGwgcnVuIGludG8gYW4gb3V0 IG9mCm1lbW9yeSBzaXR1YXRpb24gd2hlbiB1c2Vyc3BhY2Ugc3RhcnRzIHRvIGFsbG9jYXRlIHRv IG11Y2guCgpUaGlzIHBhdGNoIGdpdmVzIHRoZSBPT00gYW5vdGhlciBoaW50IHdoaWNoIHByb2Nl c3MgaXMKaG9sZGluZyBob3cgbWFueSByZXNvdXJjZXMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXkg R3JvZHpvdnNreSA8YW5kcmV5Lmdyb2R6b3Zza3lAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2ZpbGUuYyB8IDEyICsrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9nZW0u YyAgfCAgOCArKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgfCAgNCArKysrCiAz IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZpbGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCmluZGV4IGIzYzZl OTkuLjYyNmNjNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCkBAIC03NDcsMyArNzQ3LDE1IEBAIHZvaWQgZHJt X3NlbmRfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wZW5kaW5nX2V2 ZW50ICplKQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxh Z3MpOwogfQogRVhQT1JUX1NZTUJPTChkcm1fc2VuZF9ldmVudCk7CisKK2xvbmcgZHJtX29vbV9i YWRuZXNzKHN0cnVjdCBmaWxlICpmKQoreworCisJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYg PSBmLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoZmlsZV9wcml2KQorCQlyZXR1cm4gYXRvbWljX2xv bmdfcmVhZCgmZmlsZV9wcml2LT5mX29vbV9iYWRuZXNzKTsKKworCXJldHVybiAwOworfQorRVhQ T1JUX1NZTUJPTChkcm1fb29tX2JhZG5lc3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKaW5kZXggMDFmOGQ5NC4uZmZi YWRjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2dlbS5jCkBAIC0yNjQsNiArMjY0LDkgQEAgZHJtX2dlbV9vYmplY3RfcmVs ZWFzZV9oYW5kbGUoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCiAJCWRybV9nZW1fcmVt b3ZlX3ByaW1lX2hhbmRsZXMob2JqLCBmaWxlX3ByaXYpOwogCWRybV92bWFfbm9kZV9yZXZva2Uo Jm9iai0+dm1hX25vZGUsIGZpbGVfcHJpdik7CiAKKwlhdG9taWNfbG9uZ19zdWIob2JqLT5zaXpl ID4+IFBBR0VfU0hJRlQsCisJCQkJJmZpbGVfcHJpdi0+Zl9vb21fYmFkbmVzcyk7CisKIAlkcm1f Z2VtX29iamVjdF9oYW5kbGVfcHV0X3VubG9ja2VkKG9iaik7CiAKIAlyZXR1cm4gMDsKQEAgLTI5 OSw2ICszMDIsOCBAQCBkcm1fZ2VtX2hhbmRsZV9kZWxldGUoc3RydWN0IGRybV9maWxlICpmaWxw LCB1MzIgaGFuZGxlKQogCWlkcl9yZW1vdmUoJmZpbHAtPm9iamVjdF9pZHIsIGhhbmRsZSk7CiAJ c3Bpbl91bmxvY2soJmZpbHAtPnRhYmxlX2xvY2spOwogCisJYXRvbWljX2xvbmdfc3ViKG9iai0+ c2l6ZSA+PiBQQUdFX1NISUZULCAmZmlscC0+Zl9vb21fYmFkbmVzcyk7CisKIAlyZXR1cm4gMDsK IH0KIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9oYW5kbGVfZGVsZXRlKTsKQEAgLTQxNyw2ICs0MjIs OSBAQCBkcm1fZ2VtX2hhbmRsZV9jcmVhdGVfdGFpbChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwKIAl9CiAKIAkqaGFuZGxlcCA9IGhhbmRsZTsKKworCWF0b21pY19sb25nX2FkZChvYmotPnNp emUgPj4gUEFHRV9TSElGVCwKKwkJCQkmZmlsZV9wcml2LT5mX29vbV9iYWRuZXNzKTsKIAlyZXR1 cm4gMDsKIAogZXJyX3Jldm9rZToKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgg Yi9pbmNsdWRlL2RybS9kcm1fZmlsZS5oCmluZGV4IDBlMGM4NjguLmFjM2FhNzUgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaApA QCAtMzE3LDYgKzMxNyw4IEBAIHN0cnVjdCBkcm1fZmlsZSB7CiAKIAkvKiBwcml2YXRlOiAqLwog CXVuc2lnbmVkIGxvbmcgbG9ja19jb3VudDsgLyogRFJJMSBsZWdhY3kgbG9jayBjb3VudCAqLwor CisJYXRvbWljX2xvbmdfdAkJZl9vb21fYmFkbmVzczsKIH07CiAKIC8qKgpAQCAtMzc4LDQgKzM4 MCw2IEBAIHZvaWQgZHJtX2V2ZW50X2NhbmNlbF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiB2b2lkIGRybV9zZW5kX2V2ZW50X2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmUpOwogdm9pZCBkcm1fc2VuZF9ldmVudChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmUpOwogCitsb25nIGRybV9v b21fYmFkbmVzcyhzdHJ1Y3QgZmlsZSAqZik7CisKICNlbmRpZiAvKiBfRFJNX0ZJTEVfSF8gKi8K LS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f199.google.com (mail-pf0-f199.google.com [209.85.192.199]) by kanga.kvack.org (Postfix) with ESMTP id 19F2F6B0261 for ; Thu, 18 Jan 2018 11:49:22 -0500 (EST) Received: by mail-pf0-f199.google.com with SMTP id u26so4191366pfi.3 for ; Thu, 18 Jan 2018 08:49:22 -0800 (PST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0065.outbound.protection.outlook.com. [104.47.37.65]) by mx.google.com with ESMTPS id a19si7063755pfi.52.2018.01.18.08.49.20 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 18 Jan 2018 08:49:20 -0800 (PST) From: Andrey Grodzovsky Subject: [PATCH 3/4] drm/gem: adjust per file OOM badness on handling buffers Date: Thu, 18 Jan 2018 11:47:51 -0500 Message-ID: <1516294072-17841-4-git-send-email-andrey.grodzovsky@amd.com> In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> MIME-Version: 1.0 Content-Type: text/plain Sender: owner-linux-mm@kvack.org List-ID: To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: Christian.Koenig@amd.com, Andrey Grodzovsky Large amounts of VRAM are usually not CPU accessible, so they are not mapped into the processes address space. But since the device drivers usually support swapping buffers from VRAM to system memory we can still run into an out of memory situation when userspace starts to allocate to much. This patch gives the OOM another hint which process is holding how many resources. Signed-off-by: Andrey Grodzovsky --- drivers/gpu/drm/drm_file.c | 12 ++++++++++++ drivers/gpu/drm/drm_gem.c | 8 ++++++++ include/drm/drm_file.h | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c index b3c6e99..626cc76 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -747,3 +747,15 @@ void drm_send_event(struct drm_device *dev, struct drm_pending_event *e) spin_unlock_irqrestore(&dev->event_lock, irqflags); } EXPORT_SYMBOL(drm_send_event); + +long drm_oom_badness(struct file *f) +{ + + struct drm_file *file_priv = f->private_data; + + if (file_priv) + return atomic_long_read(&file_priv->f_oom_badness); + + return 0; +} +EXPORT_SYMBOL(drm_oom_badness); diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 01f8d94..ffbadc8 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -264,6 +264,9 @@ drm_gem_object_release_handle(int id, void *ptr, void *data) drm_gem_remove_prime_handles(obj, file_priv); drm_vma_node_revoke(&obj->vma_node, file_priv); + atomic_long_sub(obj->size >> PAGE_SHIFT, + &file_priv->f_oom_badness); + drm_gem_object_handle_put_unlocked(obj); return 0; @@ -299,6 +302,8 @@ drm_gem_handle_delete(struct drm_file *filp, u32 handle) idr_remove(&filp->object_idr, handle); spin_unlock(&filp->table_lock); + atomic_long_sub(obj->size >> PAGE_SHIFT, &filp->f_oom_badness); + return 0; } EXPORT_SYMBOL(drm_gem_handle_delete); @@ -417,6 +422,9 @@ drm_gem_handle_create_tail(struct drm_file *file_priv, } *handlep = handle; + + atomic_long_add(obj->size >> PAGE_SHIFT, + &file_priv->f_oom_badness); return 0; err_revoke: diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 0e0c868..ac3aa75 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -317,6 +317,8 @@ struct drm_file { /* private: */ unsigned long lock_count; /* DRI1 legacy lock count */ + + atomic_long_t f_oom_badness; }; /** @@ -378,4 +380,6 @@ void drm_event_cancel_free(struct drm_device *dev, void drm_send_event_locked(struct drm_device *dev, struct drm_pending_event *e); void drm_send_event(struct drm_device *dev, struct drm_pending_event *e); +long drm_oom_badness(struct file *f); + #endif /* _DRM_FILE_H_ */ -- 2.7.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932700AbeARQt2 (ORCPT ); Thu, 18 Jan 2018 11:49:28 -0500 Received: from mail-cys01nam02on0087.outbound.protection.outlook.com ([104.47.37.87]:53758 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753361AbeARQtU (ORCPT ); Thu, 18 Jan 2018 11:49:20 -0500 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; From: Andrey Grodzovsky To: , , , CC: , Andrey Grodzovsky Subject: [PATCH 3/4] drm/gem: adjust per file OOM badness on handling buffers Date: Thu, 18 Jan 2018 11:47:51 -0500 Message-ID: <1516294072-17841-4-git-send-email-andrey.grodzovsky@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> MIME-Version: 1.0 Content-Type: text/plain 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)(376002)(39380400002)(346002)(396003)(39860400002)(2980300002)(428003)(189003)(199004)(6666003)(2950100002)(97736004)(478600001)(106466001)(105586002)(72206003)(4326008)(51416003)(68736007)(76176011)(59450400001)(7696005)(2906002)(356003)(36756003)(48376002)(5660300001)(54906003)(53416004)(2201001)(8936002)(77096007)(305945005)(47776003)(110136005)(575784001)(86362001)(8676002)(316002)(81166006)(81156014)(104016004)(26005)(16586007)(50466002)(53936002)(50226002)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR1201MB0051;H:SATLEXCHOV02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CO1NAM03FT012;1:DXdrSn5PoerUBMbHXqxqzLPp6eWZv9BYqFcVE2Tqdt2xMuLsRosTNhnGFSQ7imoxbgZV5US0CXNKp9bYD7uNe8D1xB72DQzShiV+IpkNB8k3dGdFO1OK/0+FZ7Aq1lYR X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 61be75ec-1e9d-4030-3f9c-08d55e936a7f X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060);SRVR:BN6PR1201MB0051; X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0051;3:mfZE6SALYOblZ2tXusA6qBrbJeAlyrsmY6SY6xMvksoISZBK7bwEk/hurLY2YPip+HwEwsivd0MqfnXzTOvi6cfDz4P0/VvxL2xXXn+f8OK4DLsHb5uMvB31wKLSsxRsw+rOKW9DM7T7dJPKZm59e1SqwbEYOnQ9iWq7MAMY9MijMS6kpo5FpbB6g4+2zGOFevmWz8OzXozEU2onQ8gPTbnLDEv+adXJ87lX5MqbGs+fneM++MIbGkyzIq34zZlatV95rAxpQDyd7nMA0C4mu4R39mJb5/3hfrv1VaikyBrPJmIZ4iVW8iMs3f6jKWqIEkguCO8n8Yk+c0FoWUVIiYhW1a/7erWW+bp8i29glzM=;25:jWtrGC/VveZjddFVhwchMA97gn++Uj9yVXMlOitLJ28BTxQG+n/3ajP1dYb5InUnGt/fHMTUQl3cPVismN/HZmFfYmaIM8yJI0aVAjr7Wtb5mfLbnUB8OIsvEjEqO6+9KCNUbYcHbJ0BWk8usmQ+54VVVWS9yhL8cuznjUzc/ISvqM0n7m8L2XtYXl+RPky7Repa0EJPxki+WM+lEBl6NgU4O+EusmgQ93QmJWtWMkFf+sL5iD+I8t1W1xb+5zxp8LkzG8uDHhsmA2IuM/C7xqcx8RAub1jdm3+yBIHkDGm9Fd2H1zq5Gka1YFDckUR2sZzJ8xVHVJ1sKUqtQ4IMlQ== X-MS-TrafficTypeDiagnostic: BN6PR1201MB0051: X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0051;31:ZnsxP8HclAdEAMmD+cvibkiTQTEjn1TxS1Kmi90RfiQn/iAE5UkDMxm8v0YClgBU39XQUe3oWCwiRYF+Br35I/VD7vDprp8uQVAxXwPHistrGSERQxbX/7rB+uDI2Ikmtj2z82wqQG3p+hr6fYCZk/YeAOevKHfsU6cWO/8kQyg+X4gNT8WXL3DUUSrtdx/P5DMIvNRVYNnSMPGCSQ5Cch9HdCz0TQN/+92voEbQbh4=;20:SHi+y/13FelsqMjtcUdn/tTbtWJYUWau0SnQNTTvug2/ErfS6TAFfzwx3H9CBFfKQRBy9j9BMLlD8TveDM2h1p0NJwFpodbWFhnfQW9H6bkF7voNKtc5DD2WQi/tkgxRPnatOrpxkgZVS6vYXE+tHSeT69NoXyilHSTlqZicRYE67t62KIBzdytZMQpeBqJelSmoD4zyyQq2t4yoU+Ze9MfPKJRpuTU1ZTEpKRDEiBZaUOdHBQhw+FhlMKqKdmwyknWkoq6V7BFyYxZiBkYXYDLeckBhr6H9f5St3ifVZc9+S3uTaloQPMhx9jN53VvUdJoBHWnN9p7ucrXdoqO/U1Gbgl7tmhvGSokjsR6SWn9gj56GAijcVI8EGpH3sexyr97qaEH1BOzzU+lqk8WFP6EObFFB7FzXiZfCl9rVGDK13l6KKYjgO7XUpvT/BNObFgYbaqqFYS5TQvpjKkddxVPzv8gdu73pKkDT70xopzz1AyQTGnKx4rmrSNqNNaj4 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(93006095)(93003095)(3231023)(944501161)(3002001)(10201501046)(6055026)(6041268)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011);SRVR:BN6PR1201MB0051;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:BN6PR1201MB0051; X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0051;4:sg8OtXqCTzZG0GqNoww4j2xWd3gwqYQgOUC3jYuDB5hdB18McdKf415o31hnyoANUc0EPYBFEwYEJRazF/Z4Pr0IiFRzNw9Ke7mjjTpLHnlmg5d8m1hkQ53Ul0Uw00aP1Rm9ntLsAeOjlrOzx48DlmYsqvnxq6QmLCzHEQKW14l8Zo8RHs/VuX5WGSbAeIO1/sTPfXLJyAoQ2792WXtuZ8NbGM7t78ggVtgnjpbfCEQaNlTw+hMKs6HN8JDAi46QCwKPIR89qTGLth+mXnMtoIBQiY9qpmeupuCIDRP/Wg0= X-Forefront-PRVS: 05568D1FF7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR1201MB0051;23:5uciec0ayq7g/Z1M+QyxF/0fyLkPqhWLI4YqP0S?= =?us-ascii?Q?LLUqy/2M55yFw85ygpjbo1Gd5k0F+PpxVJc4kzOlUwnKRmvBiameInVb9osc?= =?us-ascii?Q?kbwZvh14/pjtHn/aAtdred0ZoDoy2dCmX+2u8f5Gf/2SJ54s1Cg99V4FbHuT?= =?us-ascii?Q?uo5ey7XNa2IIleIM6LjmWsrSFe3/e0OAFIBP6xlxJN/KxRgdpsO5Yu+CU0rt?= =?us-ascii?Q?G0usTOfMxFyJKw4wCiZI0xwh9C2iW7L4DUaWes5/PzJ35az7lwwQXLd14yf0?= =?us-ascii?Q?VoOaQXkHK26kMYsCzUk/A0pGwN01owrN0GfgoXRiTKlWIn6o7ZK54JZecedA?= =?us-ascii?Q?BjuJZIPNp6tYHhnZ5a3jxG/pqFxhvBSJH0LqW6B5aXm+/i83N3lVJjAIlbHu?= =?us-ascii?Q?B+9qw9ju/yOfO4vc+3Sa5239KLAAihAdMKWq6Tr9cJc0+vMduTHEVCAwvdIc?= =?us-ascii?Q?Wc6irTZJfd7H9scuQ/nm9GXmwtSJc1aoven1tATcF0PJpVGQyKjRM8X74r8Y?= =?us-ascii?Q?KEwto4ug1IntCDBbLrpQtnKZQRsOuV+Oh9bwg5iQeHqJfKoFGyIi+8CSQolA?= =?us-ascii?Q?8AGy/He8p7E7LZguuNBNF6VJJ17/992OZC/X/odJUlgq7nuW73B6IHfA5KCY?= =?us-ascii?Q?f7vjcil54rzY9ckDDNZEwE1vK1+1aQXyTRkgf7MQVYcP2h4dgnH0W2QVeJyv?= =?us-ascii?Q?U/XH/cB/Ll5D9RKD8MkB5ZUOySWYj+5AXRahVQNkbyJzP+Ws9P2Xx2wxLNv3?= =?us-ascii?Q?ZC4xiW0zv9bWpib8kwBRsdluJ5R5HlCXKjvmONQKruSst+FKhdgpyUf5cuT0?= =?us-ascii?Q?J+9Ji9BUbyRiIfgsCP5KQMZxce8Y5itE1VvxipBcIdKnZUzjhLeOY03ObFeg?= =?us-ascii?Q?kqU3nUYv7zZ92kZvaKrEyAXIED5W6zWAXcMNyaSwWaVMZLS6NSdJDstaDfrz?= =?us-ascii?Q?mqz6Jzf73AGUgLpr1qLnFwfyfuCNhGIFuvLXddJ5w167rnxWZN42+Cs23/yT?= =?us-ascii?Q?DMFsWn+VeswwGJRqZDgXmmU7LzlZM0ZFfS+fAZJVLyGTiDYjIOO0Zx5vXgin?= =?us-ascii?Q?baoAZP2mLiyBYBKYKK74mdrxKHvsFqyl/HnQrKm47xdLUfyrouWZ+a/buJQy?= =?us-ascii?Q?c63TMQcyg4VY=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0051;6:KtRs3VWEIrKWWpAJEFrYcX1SV5wB4FvEkiyGDcXSsioqce0KVCeM4u8U4cTKs2rAiGQdAF+GWVe7gAgqwl40bhpmJe/RFYaIf9uIEBsf8Xgx01kg5RceQ1rZ7ulpZa9nv9lY5ln+qrMyNIoeSsIhh88ebJJVigkcemd7DGD/1wNYK4XEjvJUiJGedzXGde46AN8/Oji301yrIawIH9RZsbUHCOIwfWF21SSRh+pk07NiYdsWzttx3U2ri4e5xJw0h84F+pXhk/lQgIcCK+fAO8RQjsg5KzV68SBD1qRwIsWMlUun0/yqaOrp9jZmuZQvUgfR6XDeW/CTX7XniO77fw==;5:hnryawdNLl0rDSueXGyFF3aunJWNVZOFxj/cnGze/DcYjsAWS/TU1gfl8Wqd3ZbuynJcuM4cuvD82qdovTNNYzYC5DyJPMwzsAci5KMsADcy+nqRqQmBDE4P3UT09pElPYuzLpzLjIMA3i7Pmgz1t5pwcrVmMxz2bbsyzJ6OzXY=;24:PyVnSJwdRx6FtYQW6A1hGIDOJOhOv/CRU35yFJDSqBqF1VEgHjvcvsu1hjr9dEzlxro1wSFBIMyQi8Gr8tzxlFUAq1R7ySuG8xrHLFr4I7g=;7:Umv5aNvo8fBpGJ2TwZ7vW86AP4Ja8W+IHwb8UYTPK2k5UoO+vw29LdzBLPXIGx6ITby8eNOAubiITu13oNp4ti8LSlnSwPoE71fxCt4gHOIWJ1dKA3MbsM92BkGdSs+74cBYRUG+stx6sLGS2eXGnYdk1VLljktiqd7qD8F54Uh0TaEBmyBpjkP460YJQekdNxPmLZd7DKX62DJsE0wUcaPzmKWD94zwVYvJB59WDrNpCDHs2F1t/cqgZu6xMeca SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0051;20:eQurHGewbNuU+YZa09HQr+NM1pqKLAiEu/YB+h9ZtOHUj+2KAoGtKJ/DKT5GvSzAtbMB9tRHDCS8cuySNc/wkDHHmp9IaGEd55bN/yOXNNz9s0wpgoluSHlgrVyKeZoS8/HwntocgFIbTpFPXFb78xd20v9KxOcx3/Ympe4Hs0qvQT8hdkR6A4la+BQ7K718U5CW9XDE2uTO8J2hjYPT485qJ1b4TqKxETIFFTesudY8s508rg9MQOjGgKQP4iJ+ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2018 16:49:18.0845 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61be75ec-1e9d-4030-3f9c-08d55e936a7f 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=[SATLEXCHOV02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1201MB0051 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Large amounts of VRAM are usually not CPU accessible, so they are not mapped into the processes address space. But since the device drivers usually support swapping buffers from VRAM to system memory we can still run into an out of memory situation when userspace starts to allocate to much. This patch gives the OOM another hint which process is holding how many resources. Signed-off-by: Andrey Grodzovsky --- drivers/gpu/drm/drm_file.c | 12 ++++++++++++ drivers/gpu/drm/drm_gem.c | 8 ++++++++ include/drm/drm_file.h | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c index b3c6e99..626cc76 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -747,3 +747,15 @@ void drm_send_event(struct drm_device *dev, struct drm_pending_event *e) spin_unlock_irqrestore(&dev->event_lock, irqflags); } EXPORT_SYMBOL(drm_send_event); + +long drm_oom_badness(struct file *f) +{ + + struct drm_file *file_priv = f->private_data; + + if (file_priv) + return atomic_long_read(&file_priv->f_oom_badness); + + return 0; +} +EXPORT_SYMBOL(drm_oom_badness); diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 01f8d94..ffbadc8 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -264,6 +264,9 @@ drm_gem_object_release_handle(int id, void *ptr, void *data) drm_gem_remove_prime_handles(obj, file_priv); drm_vma_node_revoke(&obj->vma_node, file_priv); + atomic_long_sub(obj->size >> PAGE_SHIFT, + &file_priv->f_oom_badness); + drm_gem_object_handle_put_unlocked(obj); return 0; @@ -299,6 +302,8 @@ drm_gem_handle_delete(struct drm_file *filp, u32 handle) idr_remove(&filp->object_idr, handle); spin_unlock(&filp->table_lock); + atomic_long_sub(obj->size >> PAGE_SHIFT, &filp->f_oom_badness); + return 0; } EXPORT_SYMBOL(drm_gem_handle_delete); @@ -417,6 +422,9 @@ drm_gem_handle_create_tail(struct drm_file *file_priv, } *handlep = handle; + + atomic_long_add(obj->size >> PAGE_SHIFT, + &file_priv->f_oom_badness); return 0; err_revoke: diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 0e0c868..ac3aa75 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -317,6 +317,8 @@ struct drm_file { /* private: */ unsigned long lock_count; /* DRI1 legacy lock count */ + + atomic_long_t f_oom_badness; }; /** @@ -378,4 +380,6 @@ void drm_event_cancel_free(struct drm_device *dev, void drm_send_event_locked(struct drm_device *dev, struct drm_pending_event *e); void drm_send_event(struct drm_device *dev, struct drm_pending_event *e); +long drm_oom_badness(struct file *f); + #endif /* _DRM_FILE_H_ */ -- 2.7.4