From: Jarkko Sakkinen <jarkko@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: codalist@telemann.coda.cs.cmu.edu, jaharkes@cs.cmu.edu,
Nathaniel McCallum <nathaniel@profian.com>,
linux-unionfs@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Dave Hansen <dave.hansen@linux.intel.com>,
linux-mips@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org,
Reinette Chatre <reinette.chatre@intel.com>,
linux-sgx@vger.kernel.org
Subject: Re: [Intel-gfx] [PATCH RFC v2] mm: Add f_ops->populate()
Date: Mon, 7 Mar 2022 15:00:25 +0200 [thread overview]
Message-ID: <YiYB6WWz8cbvaAqX@iki.fi> (raw)
In-Reply-To: <20220306152456.2649b1c56da2a4ce4f487be4@linux-foundation.org>
On Sun, Mar 06, 2022 at 03:24:56PM -0800, Andrew Morton wrote:
> On Sun, 6 Mar 2022 05:26:55 +0200 Jarkko Sakkinen <jarkko@kernel.org> wrote:
>
> > Sometimes you might want to use MAP_POPULATE to ask a device driver to
> > initialize the device memory in some specific manner. SGX driver can use
> > this to request more memory by issuing ENCLS[EAUG] x86 opcode for each
> > page in the address range.
>
> Why is this useful? Please fully describe the benefit to kernel users.
> Convince us that the benefit justifies the code churn, maintenance
> cost and larger kernel footprint.
>
> Do we know of any other drivers which might use this?
Brutal honesty: I don't know if any other drivers would use this but
neither I would not be surprised if they did. The need for this might
very well be "masked" by ioctl API's. I was first proposing a ioctl
for this but Dave suggested to at least try out this route.
> > Add f_ops->populate() with the same parameters as f_ops->mmap() and make
> > it conditionally called inside call_mmap(). Update call sites
> > accodingly.
>
> spello
Thanks, I noticed that but did not want to spam with a new version just
because of that :-)
>
> > -static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
> > +static inline int call_mmap(struct file *file, struct vm_area_struct *vma, bool do_populate)
> > {
> > - return file->f_op->mmap(file, vma);
> > + int ret = file->f_op->mmap(file, vma);
> > +
> > + if (!ret && do_populate && file->f_op->populate)
> > + ret = file->f_op->populate(file, vma);
> > +
> > + return ret;
> > }
>
> Should this still be inlined?
I think it might make sense at least to have call_mmap_populate() so and
mmap_region_populate() instead of putting that boolean parameter to every
flow (based on Greg's feedback). But only if this implementation approach
is used in the first place.
As said, I chose to use RFC to pinpoint a bottleneck for us, not claiming
that this would be the best possible way to work around it.
BR, Jarkko
WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
Nathaniel McCallum <nathaniel@profian.com>,
Reinette Chatre <reinette.chatre@intel.com>,
linux-sgx@vger.kernel.org, jaharkes@cs.cmu.edu,
linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
codalist@telemann.coda.cs.cmu.edu, linux-unionfs@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH RFC v2] mm: Add f_ops->populate()
Date: Mon, 7 Mar 2022 15:00:25 +0200 [thread overview]
Message-ID: <YiYB6WWz8cbvaAqX@iki.fi> (raw)
In-Reply-To: <20220306152456.2649b1c56da2a4ce4f487be4@linux-foundation.org>
On Sun, Mar 06, 2022 at 03:24:56PM -0800, Andrew Morton wrote:
> On Sun, 6 Mar 2022 05:26:55 +0200 Jarkko Sakkinen <jarkko@kernel.org> wrote:
>
> > Sometimes you might want to use MAP_POPULATE to ask a device driver to
> > initialize the device memory in some specific manner. SGX driver can use
> > this to request more memory by issuing ENCLS[EAUG] x86 opcode for each
> > page in the address range.
>
> Why is this useful? Please fully describe the benefit to kernel users.
> Convince us that the benefit justifies the code churn, maintenance
> cost and larger kernel footprint.
>
> Do we know of any other drivers which might use this?
Brutal honesty: I don't know if any other drivers would use this but
neither I would not be surprised if they did. The need for this might
very well be "masked" by ioctl API's. I was first proposing a ioctl
for this but Dave suggested to at least try out this route.
> > Add f_ops->populate() with the same parameters as f_ops->mmap() and make
> > it conditionally called inside call_mmap(). Update call sites
> > accodingly.
>
> spello
Thanks, I noticed that but did not want to spam with a new version just
because of that :-)
>
> > -static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
> > +static inline int call_mmap(struct file *file, struct vm_area_struct *vma, bool do_populate)
> > {
> > - return file->f_op->mmap(file, vma);
> > + int ret = file->f_op->mmap(file, vma);
> > +
> > + if (!ret && do_populate && file->f_op->populate)
> > + ret = file->f_op->populate(file, vma);
> > +
> > + return ret;
> > }
>
> Should this still be inlined?
I think it might make sense at least to have call_mmap_populate() so and
mmap_region_populate() instead of putting that boolean parameter to every
flow (based on Greg's feedback). But only if this implementation approach
is used in the first place.
As said, I chose to use RFC to pinpoint a bottleneck for us, not claiming
that this would be the best possible way to work around it.
BR, Jarkko
WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: codalist@telemann.coda.cs.cmu.edu, jaharkes@cs.cmu.edu,
Nathaniel McCallum <nathaniel@profian.com>,
linux-unionfs@vger.kernel.org, intel-gfx@lists.freedesktop.org,
Dave Hansen <dave.hansen@linux.intel.com>,
linux-mips@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org,
Reinette Chatre <reinette.chatre@intel.com>,
linux-sgx@vger.kernel.org
Subject: Re: [PATCH RFC v2] mm: Add f_ops->populate()
Date: Mon, 7 Mar 2022 15:00:25 +0200 [thread overview]
Message-ID: <YiYB6WWz8cbvaAqX@iki.fi> (raw)
In-Reply-To: <20220306152456.2649b1c56da2a4ce4f487be4@linux-foundation.org>
On Sun, Mar 06, 2022 at 03:24:56PM -0800, Andrew Morton wrote:
> On Sun, 6 Mar 2022 05:26:55 +0200 Jarkko Sakkinen <jarkko@kernel.org> wrote:
>
> > Sometimes you might want to use MAP_POPULATE to ask a device driver to
> > initialize the device memory in some specific manner. SGX driver can use
> > this to request more memory by issuing ENCLS[EAUG] x86 opcode for each
> > page in the address range.
>
> Why is this useful? Please fully describe the benefit to kernel users.
> Convince us that the benefit justifies the code churn, maintenance
> cost and larger kernel footprint.
>
> Do we know of any other drivers which might use this?
Brutal honesty: I don't know if any other drivers would use this but
neither I would not be surprised if they did. The need for this might
very well be "masked" by ioctl API's. I was first proposing a ioctl
for this but Dave suggested to at least try out this route.
> > Add f_ops->populate() with the same parameters as f_ops->mmap() and make
> > it conditionally called inside call_mmap(). Update call sites
> > accodingly.
>
> spello
Thanks, I noticed that but did not want to spam with a new version just
because of that :-)
>
> > -static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
> > +static inline int call_mmap(struct file *file, struct vm_area_struct *vma, bool do_populate)
> > {
> > - return file->f_op->mmap(file, vma);
> > + int ret = file->f_op->mmap(file, vma);
> > +
> > + if (!ret && do_populate && file->f_op->populate)
> > + ret = file->f_op->populate(file, vma);
> > +
> > + return ret;
> > }
>
> Should this still be inlined?
I think it might make sense at least to have call_mmap_populate() so and
mmap_region_populate() instead of putting that boolean parameter to every
flow (based on Greg's feedback). But only if this implementation approach
is used in the first place.
As said, I chose to use RFC to pinpoint a bottleneck for us, not claiming
that this would be the best possible way to work around it.
BR, Jarkko
next prev parent reply other threads:[~2022-03-08 12:50 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-06 3:26 [Intel-gfx] [PATCH RFC v2] mm: Add f_ops->populate() Jarkko Sakkinen
2022-03-06 3:26 ` Jarkko Sakkinen
2022-03-06 3:26 ` Jarkko Sakkinen
2022-03-06 23:24 ` [Intel-gfx] " Andrew Morton
2022-03-06 23:24 ` Andrew Morton
2022-03-06 23:24 ` Andrew Morton
2022-03-06 23:41 ` [Intel-gfx] " Dave Hansen
2022-03-06 23:41 ` Dave Hansen
2022-03-06 23:41 ` Dave Hansen
2022-03-07 11:27 ` [Intel-gfx] " Jarkko Sakkinen
2022-03-07 11:27 ` Jarkko Sakkinen
2022-03-07 11:27 ` Jarkko Sakkinen
2022-03-07 15:29 ` [Intel-gfx] " Dave Hansen
2022-03-07 15:29 ` Dave Hansen
2022-03-07 15:29 ` Dave Hansen
2022-03-07 15:44 ` [Intel-gfx] " Jarkko Sakkinen
2022-03-07 15:44 ` Jarkko Sakkinen
2022-03-07 15:44 ` Jarkko Sakkinen
2022-03-07 14:37 ` [Intel-gfx] " Matthew Wilcox
2022-03-07 14:37 ` Matthew Wilcox
2022-03-07 14:37 ` Matthew Wilcox
2022-03-07 15:43 ` [Intel-gfx] " Jarkko Sakkinen
2022-03-07 15:43 ` Jarkko Sakkinen
2022-03-07 15:43 ` Jarkko Sakkinen
2022-03-07 13:00 ` Jarkko Sakkinen [this message]
2022-03-07 13:00 ` Jarkko Sakkinen
2022-03-07 13:00 ` Jarkko Sakkinen
2022-03-08 8:28 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YiYB6WWz8cbvaAqX@iki.fi \
--to=jarkko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=codalist@telemann.coda.cs.cmu.edu \
--cc=dave.hansen@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jaharkes@cs.cmu.edu \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-sgx@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=nathaniel@profian.com \
--cc=reinette.chatre@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.