On Wed, May 23, 2018 at 11:50 AM, Gerald Schaefer
<gerald.schaefer(a)de.ibm.com> wrote:
On Tue, 22 May 2018 08:28:06 +0200
Christoph Hellwig <hch(a)lst.de> wrote:
> On Mon, May 21, 2018 at 11:04:10AM +0200, Jan Kara wrote:
> > We definitely do have customers using "execute in place" on s390x
from
> > dcssblk. I've got about two bug reports for it when customers were updating
> > from old kernels using original XIP to kernels using DAX. So we need to
> > keep that working.
>
> That is all good an fine, but I think time has come where s390 needs
> to migrate to provide the pmem API so that we can get rid of these
> special cases. Especially given that the old XIP/legacy DAX has all
> kinds of known bugs at this point in time.
I haven't yet looked at this patch series, but I can feel that this
FS_DAX_LIMITED workaround is beginning to cause some headaches, apart
from being quite ugly of course.
Just to make sure I still understand the basic problem, which I thought
was missing struct pages for the dcssblk memory, what exactly do you
mean with "provide the pmem API", is there more to do?
No, just 'struct page' is needed.
What used to be the pmem API is now pushed down into to dax_operations
provided by the device driver. dcssblk is free to just redirect to the
generic implementations for copy_from_iter() and copy_to_iter(), and
be done. I.e. we've removed the "pmem API" requirement.
I do have a prototype patch lying around that adds struct pages, but
didn't yet have time to fully test/complete it. Of course we initially
introduced XIP as a mechanism to reduce memory consumption, and that
is probably the use case for the remaining customer(s). Adding struct
pages would somehow reduce that benefit, but as long as we can still
"execute in place", I guess it will be OK.
The pmem driver has the option to allocate the 'struct page' map out
of pmem directly. If the overhead of having the map in System RAM is
too high it could borrow the same approach, but that adds another
degree of configuration complexity freedom.