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 717AE6B0033 for ; Fri, 6 Oct 2017 10:51:14 -0400 (EDT) Received: by mail-pf0-f199.google.com with SMTP id u12so11103563pfl.0 for ; Fri, 06 Oct 2017 07:51:14 -0700 (PDT) Received: from mga14.intel.com (mga14.intel.com. [192.55.52.115]) by mx.google.com with ESMTPS id h13si1237197pgn.39.2017.10.06.07.51.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Oct 2017 07:51:12 -0700 (PDT) From: Matthew Auld Subject: [PATCH 01/21] mm/shmem: introduce shmem_file_setup_with_mnt Date: Fri, 6 Oct 2017 15:50:21 +0100 Message-Id: <20171006145041.21673-2-matthew.auld@intel.com> In-Reply-To: <20171006145041.21673-1-matthew.auld@intel.com> References: <20171006145041.21673-1-matthew.auld@intel.com> Sender: owner-linux-mm@kvack.org List-ID: To: intel-gfx@lists.freedesktop.org Cc: Joonas Lahtinen , Chris Wilson , Dave Hansen , "Kirill A . Shutemov" , Hugh Dickins , linux-mm@kvack.org We are planning to use our own tmpfs mnt in i915 in place of the shm_mnt, such that we can control the mount options, in particular huge=, which we require to support huge-gtt-pages. So rather than roll our own version of __shmem_file_setup, it would be preferred if we could just give shmem our mnt, and let it do the rest. Signed-off-by: Matthew Auld Cc: Joonas Lahtinen Cc: Chris Wilson Cc: Dave Hansen Cc: Kirill A. Shutemov Cc: Hugh Dickins Cc: linux-mm@kvack.org Acked-by: Andrew Morton Acked-by: Kirill A. Shutemov Reviewed-by: Joonas Lahtinen --- include/linux/shmem_fs.h | 2 ++ mm/shmem.c | 30 ++++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index b6c3540e07bc..0937d9a7d8fb 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -53,6 +53,8 @@ extern struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); extern struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned long flags); +extern struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt, + const char *name, loff_t size, unsigned long flags); extern int shmem_zero_setup(struct vm_area_struct *); extern unsigned long shmem_get_unmapped_area(struct file *, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); diff --git a/mm/shmem.c b/mm/shmem.c index 07a1d22807be..3229d27503ec 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -4183,7 +4183,7 @@ static const struct dentry_operations anon_ops = { .d_dname = simple_dname }; -static struct file *__shmem_file_setup(const char *name, loff_t size, +static struct file *__shmem_file_setup(struct vfsmount *mnt, const char *name, loff_t size, unsigned long flags, unsigned int i_flags) { struct file *res; @@ -4192,8 +4192,8 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, struct super_block *sb; struct qstr this; - if (IS_ERR(shm_mnt)) - return ERR_CAST(shm_mnt); + if (IS_ERR(mnt)) + return ERR_CAST(mnt); if (size < 0 || size > MAX_LFS_FILESIZE) return ERR_PTR(-EINVAL); @@ -4205,8 +4205,8 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, this.name = name; this.len = strlen(name); this.hash = 0; /* will go */ - sb = shm_mnt->mnt_sb; - path.mnt = mntget(shm_mnt); + sb = mnt->mnt_sb; + path.mnt = mntget(mnt); path.dentry = d_alloc_pseudo(sb, &this); if (!path.dentry) goto put_memory; @@ -4251,7 +4251,7 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, */ struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned long flags) { - return __shmem_file_setup(name, size, flags, S_PRIVATE); + return __shmem_file_setup(shm_mnt, name, size, flags, S_PRIVATE); } /** @@ -4262,11 +4262,25 @@ struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned lon */ struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags) { - return __shmem_file_setup(name, size, flags, 0); + return __shmem_file_setup(shm_mnt, name, size, flags, 0); } EXPORT_SYMBOL_GPL(shmem_file_setup); /** + * shmem_file_setup_with_mnt - get an unlinked file living in tmpfs + * @mnt: the tmpfs mount where the file will be created + * @name: name for dentry (to be seen in /proc//maps + * @size: size to be set for the file + * @flags: VM_NORESERVE suppresses pre-accounting of the entire object size + */ +struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt, const char *name, + loff_t size, unsigned long flags) +{ + return __shmem_file_setup(mnt, name, size, flags, 0); +} +EXPORT_SYMBOL_GPL(shmem_file_setup_with_mnt); + +/** * shmem_zero_setup - setup a shared anonymous mapping * @vma: the vma to be mmapped is prepared by do_mmap_pgoff */ @@ -4281,7 +4295,7 @@ int shmem_zero_setup(struct vm_area_struct *vma) * accessible to the user through its mapping, use S_PRIVATE flag to * bypass file security, in the same way as shmem_kernel_file_setup(). */ - file = __shmem_file_setup("dev/zero", size, vma->vm_flags, S_PRIVATE); + file = shmem_kernel_file_setup("dev/zero", size, vma->vm_flags); if (IS_ERR(file)) return PTR_ERR(file); -- 2.13.5 -- 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 From: Matthew Auld Subject: [PATCH 01/21] mm/shmem: introduce shmem_file_setup_with_mnt Date: Fri, 6 Oct 2017 15:50:21 +0100 Message-ID: <20171006145041.21673-2-matthew.auld@intel.com> References: <20171006145041.21673-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id DF4A46FA48 for ; Fri, 6 Oct 2017 14:50:45 +0000 (UTC) In-Reply-To: <20171006145041.21673-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Dave Hansen , Hugh Dickins , linux-mm@kvack.org, "Kirill A . Shutemov" List-Id: intel-gfx@lists.freedesktop.org V2UgYXJlIHBsYW5uaW5nIHRvIHVzZSBvdXIgb3duIHRtcGZzIG1udCBpbiBpOTE1IGluIHBsYWNl IG9mIHRoZQpzaG1fbW50LCBzdWNoIHRoYXQgd2UgY2FuIGNvbnRyb2wgdGhlIG1vdW50IG9wdGlv bnMsIGluIHBhcnRpY3VsYXIKaHVnZT0sIHdoaWNoIHdlIHJlcXVpcmUgdG8gc3VwcG9ydCBodWdl LWd0dC1wYWdlcy4gU28gcmF0aGVyIHRoYW4gcm9sbApvdXIgb3duIHZlcnNpb24gb2YgX19zaG1l bV9maWxlX3NldHVwLCBpdCB3b3VsZCBiZSBwcmVmZXJyZWQgaWYgd2UgY291bGQKanVzdCBnaXZl IHNobWVtIG91ciBtbnQsIGFuZCBsZXQgaXQgZG8gdGhlIHJlc3QuCgpTaWduZWQtb2ZmLWJ5OiBN YXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhdmUgSGFuc2VuIDxkYXZlLmhhbnNlbkBpbnRlbC5j b20+CkNjOiBLaXJpbGwgQS4gU2h1dGVtb3YgPGtpcmlsbEBzaHV0ZW1vdi5uYW1lPgpDYzogSHVn aCBEaWNraW5zIDxodWdoZEBnb29nbGUuY29tPgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCkFja2Vk LWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpBY2tlZC1ieTog S2lyaWxsIEEuIFNodXRlbW92IDxraXJpbGwuc2h1dGVtb3ZAbGludXguaW50ZWwuY29tPgpSZXZp ZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29t PgotLS0KIGluY2x1ZGUvbGludXgvc2htZW1fZnMuaCB8ICAyICsrCiBtbS9zaG1lbS5jICAgICAg ICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L3NobWVtX2ZzLmggYi9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgKaW5kZXggYjZj MzU0MGUwN2JjLi4wOTM3ZDlhN2Q4ZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2htZW1f ZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgKQEAgLTUzLDYgKzUzLDggQEAgZXh0 ZXJuIHN0cnVjdCBmaWxlICpzaG1lbV9maWxlX3NldHVwKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJ CWxvZmZfdCBzaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIGV4dGVybiBzdHJ1Y3QgZmlsZSAq c2htZW1fa2VybmVsX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFtZSwgbG9mZl90IHNpemUsCiAJ CQkJCSAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKK2V4dGVybiBzdHJ1Y3QgZmlsZSAqc2htZW1f ZmlsZV9zZXR1cF93aXRoX21udChzdHJ1Y3QgdmZzbW91bnQgKm1udCwKKwkJY29uc3QgY2hhciAq bmFtZSwgbG9mZl90IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogZXh0ZXJuIGludCBzaG1l bV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKIGV4dGVybiB1bnNpZ25lZCBs b25nIHNobWVtX2dldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcg YWRkciwKIAkJdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVk IGxvbmcgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmMKaW5kZXgg MDdhMWQyMjgwN2JlLi4zMjI5ZDI3NTAzZWMgMTAwNjQ0Ci0tLSBhL21tL3NobWVtLmMKKysrIGIv bW0vc2htZW0uYwpAQCAtNDE4Myw3ICs0MTgzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZW50 cnlfb3BlcmF0aW9ucyBhbm9uX29wcyA9IHsKIAkuZF9kbmFtZSA9IHNpbXBsZV9kbmFtZQogfTsK IAotc3RhdGljIHN0cnVjdCBmaWxlICpfX3NobWVtX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFt ZSwgbG9mZl90IHNpemUsCitzdGF0aWMgc3RydWN0IGZpbGUgKl9fc2htZW1fZmlsZV9zZXR1cChz dHJ1Y3QgdmZzbW91bnQgKm1udCwgY29uc3QgY2hhciAqbmFtZSwgbG9mZl90IHNpemUsCiAJCQkJ ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHVuc2lnbmVkIGludCBpX2ZsYWdzKQogewogCXN0 cnVjdCBmaWxlICpyZXM7CkBAIC00MTkyLDggKzQxOTIsOCBAQCBzdGF0aWMgc3RydWN0IGZpbGUg Kl9fc2htZW1fZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwKIAlzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiOwogCXN0cnVjdCBxc3RyIHRoaXM7CiAKLQlpZiAoSVNfRVJSKHNo bV9tbnQpKQotCQlyZXR1cm4gRVJSX0NBU1Qoc2htX21udCk7CisJaWYgKElTX0VSUihtbnQpKQor CQlyZXR1cm4gRVJSX0NBU1QobW50KTsKIAogCWlmIChzaXplIDwgMCB8fCBzaXplID4gTUFYX0xG U19GSUxFU0laRSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CkBAIC00MjA1LDggKzQyMDUs OCBAQCBzdGF0aWMgc3RydWN0IGZpbGUgKl9fc2htZW1fZmlsZV9zZXR1cChjb25zdCBjaGFyICpu YW1lLCBsb2ZmX3Qgc2l6ZSwKIAl0aGlzLm5hbWUgPSBuYW1lOwogCXRoaXMubGVuID0gc3RybGVu KG5hbWUpOwogCXRoaXMuaGFzaCA9IDA7IC8qIHdpbGwgZ28gKi8KLQlzYiA9IHNobV9tbnQtPm1u dF9zYjsKLQlwYXRoLm1udCA9IG1udGdldChzaG1fbW50KTsKKwlzYiA9IG1udC0+bW50X3NiOwor CXBhdGgubW50ID0gbW50Z2V0KG1udCk7CiAJcGF0aC5kZW50cnkgPSBkX2FsbG9jX3BzZXVkbyhz YiwgJnRoaXMpOwogCWlmICghcGF0aC5kZW50cnkpCiAJCWdvdG8gcHV0X21lbW9yeTsKQEAgLTQy NTEsNyArNDI1MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1lbV9maWxlX3NldHVwKGNv bnN0IGNoYXIgKm5hbWUsIGxvZmZfdCBzaXplLAogICovCiBzdHJ1Y3QgZmlsZSAqc2htZW1fa2Vy bmVsX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFtZSwgbG9mZl90IHNpemUsIHVuc2lnbmVkIGxv bmcgZmxhZ3MpCiB7Ci0JcmV0dXJuIF9fc2htZW1fZmlsZV9zZXR1cChuYW1lLCBzaXplLCBmbGFn cywgU19QUklWQVRFKTsKKwlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKHNobV9tbnQsIG5hbWUs IHNpemUsIGZsYWdzLCBTX1BSSVZBVEUpOwogfQogCiAvKioKQEAgLTQyNjIsMTEgKzQyNjIsMjUg QEAgc3RydWN0IGZpbGUgKnNobWVtX2tlcm5lbF9maWxlX3NldHVwKGNvbnN0IGNoYXIgKm5hbWUs IGxvZmZfdCBzaXplLCB1bnNpZ25lZCBsb24KICAqLwogc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVf c2V0dXAoY29uc3QgY2hhciAqbmFtZSwgbG9mZl90IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp CiB7Ci0JcmV0dXJuIF9fc2htZW1fZmlsZV9zZXR1cChuYW1lLCBzaXplLCBmbGFncywgMCk7CisJ cmV0dXJuIF9fc2htZW1fZmlsZV9zZXR1cChzaG1fbW50LCBuYW1lLCBzaXplLCBmbGFncywgMCk7 CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChzaG1lbV9maWxlX3NldHVwKTsKIAogLyoqCisgKiBzaG1l bV9maWxlX3NldHVwX3dpdGhfbW50IC0gZ2V0IGFuIHVubGlua2VkIGZpbGUgbGl2aW5nIGluIHRt cGZzCisgKiBAbW50OiB0aGUgdG1wZnMgbW91bnQgd2hlcmUgdGhlIGZpbGUgd2lsbCBiZSBjcmVh dGVkCisgKiBAbmFtZTogbmFtZSBmb3IgZGVudHJ5ICh0byBiZSBzZWVuIGluIC9wcm9jLzxwaWQ+ L21hcHMKKyAqIEBzaXplOiBzaXplIHRvIGJlIHNldCBmb3IgdGhlIGZpbGUKKyAqIEBmbGFnczog Vk1fTk9SRVNFUlZFIHN1cHByZXNzZXMgcHJlLWFjY291bnRpbmcgb2YgdGhlIGVudGlyZSBvYmpl Y3Qgc2l6ZQorICovCitzdHJ1Y3QgZmlsZSAqc2htZW1fZmlsZV9zZXR1cF93aXRoX21udChzdHJ1 Y3QgdmZzbW91bnQgKm1udCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgICAgbG9mZl90IHNp emUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJcmV0dXJuIF9fc2htZW1fZmlsZV9zZXR1cCht bnQsIG5hbWUsIHNpemUsIGZsYWdzLCAwKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNobWVtX2Zp bGVfc2V0dXBfd2l0aF9tbnQpOworCisvKioKICAqIHNobWVtX3plcm9fc2V0dXAgLSBzZXR1cCBh IHNoYXJlZCBhbm9ueW1vdXMgbWFwcGluZwogICogQHZtYTogdGhlIHZtYSB0byBiZSBtbWFwcGVk IGlzIHByZXBhcmVkIGJ5IGRvX21tYXBfcGdvZmYKICAqLwpAQCAtNDI4MSw3ICs0Mjk1LDcgQEAg aW50IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJICogYWNj ZXNzaWJsZSB0byB0aGUgdXNlciB0aHJvdWdoIGl0cyBtYXBwaW5nLCB1c2UgU19QUklWQVRFIGZs YWcgdG8KIAkgKiBieXBhc3MgZmlsZSBzZWN1cml0eSwgaW4gdGhlIHNhbWUgd2F5IGFzIHNobWVt X2tlcm5lbF9maWxlX3NldHVwKCkuCiAJICovCi0JZmlsZSA9IF9fc2htZW1fZmlsZV9zZXR1cCgi ZGV2L3plcm8iLCBzaXplLCB2bWEtPnZtX2ZsYWdzLCBTX1BSSVZBVEUpOworCWZpbGUgPSBzaG1l bV9rZXJuZWxfZmlsZV9zZXR1cCgiZGV2L3plcm8iLCBzaXplLCB2bWEtPnZtX2ZsYWdzKTsKIAlp ZiAoSVNfRVJSKGZpbGUpKQogCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKIAotLSAKMi4xMy41Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK