From: Jeff Moyer <jmoyer@redhat.com>
To: Mike Snitzer <snitzer@redhat.com>, Mikulas Patocka <mpatocka@redhat.com>
Cc: Christoph Hellwig <hch@infradead.org>,
device-mapper development <dm-devel@redhat.com>,
linux-nvdimm <linux-nvdimm@lists.01.org>
Subject: Re: [dm-devel] [patch 4/4] dm-writecache: use new API for flushing
Date: Tue, 22 May 2018 18:53:39 -0400 [thread overview]
Message-ID: <x49r2m3nvyk.fsf@segfault.boston.devel.redhat.com> (raw)
In-Reply-To: <20180522205214.GA26259@redhat.com> (Mike Snitzer's message of "Tue, 22 May 2018 16:52:17 -0400")
Hi, Mike,
Mike Snitzer <snitzer@redhat.com> writes:
> Looking at Mikulas' wrapper API that you and hch are calling into
> question:
>
> For ARM it is using arch/arm64/mm/flush.c:arch_wb_cache_pmem().
> (And ARM does seem to be providing CONFIG_ARCH_HAS_PMEM_API.)
>
> Whereas x86_64 is using memcpy_flushcache() as provided by
> CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE.
> (Yet ARM does provide arch/arm64/lib/uaccess_flushcache.c:memcpy_flushcache)
>
> Just seems this isn't purely about ARM lacking on an API level (given on
> x86_64 Mikulas isn't only using CONFIG_ARCH_HAS_PMEM_API).
>
> Seems this is more to do with x86_64 having efficient Non-temporal
> stores?
Yeah, I think you've got that all right.
> Anyway, I'm still trying to appreciate the details here before I can
> make any forward progress.
Making data persistent on x64 requires 3 steps:
1) copy the data into pmem (store instructions)
2) flush the cache lines associated with the data (clflush, clflush_opt, clwb)
3) wait on the flush to complete (sfence)
I'm not sure if other architectures require step 3. Mikulas'
implementation seems to imply that arm64 doesn't require the fence.
The current pmem api provides:
memcpy* -- step 1
memcpy_flushcache -- this combines steps 1 and 2
dax_flush -- step 2
wmb* -- step 3
* not strictly part of the pmem api
So, if you didn't care about performance, you could write generic code
that only used memcpy, dax_flush, and wmb (assuming other arches
actually need the wmb). What Mikulas did was to abstract out an API
that could be called by generic code that would work optimally on all
architectures.
This looks like a worth-while addition to the PMEM API, to me. Mikulas,
what do you think about refactoring the code as Christoph suggested?
Cheers,
Jeff
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2018-05-22 22:53 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20180519052503.325953342@debian.vm>
[not found] ` <20180519052635.567438191@debian.vm>
2018-05-22 6:39 ` [dm-devel] [patch 4/4] dm-writecache: use new API for flushing Christoph Hellwig
2018-05-22 18:41 ` Mike Snitzer
2018-05-22 19:00 ` Dan Williams
2018-05-22 19:19 ` Mike Snitzer
2018-05-22 19:27 ` Dan Williams
2018-05-22 20:52 ` Mike Snitzer
2018-05-22 22:53 ` Jeff Moyer [this message]
2018-05-23 20:57 ` [dm-devel] " Mikulas Patocka
2018-05-28 13:52 ` Mikulas Patocka
2018-05-28 17:41 ` Dan Williams
2018-05-30 13:42 ` [dm-devel] " Jeff Moyer
2018-05-30 13:51 ` Mikulas Patocka
2018-05-30 13:52 ` Jeff Moyer
2018-05-24 8:15 ` Mikulas Patocka
[not found] ` <CAPcyv4iEtfuVGPR0QMKcafv2XFwSj3nzxjX8cuXpXe00akAvYA@mail.gmail.com>
[not found] ` <alpine.LRH.2.02.1805250213270.13894@file01.intranet.prod.int.rdu2.redhat.com>
2018-05-25 12:51 ` Mike Snitzer
2018-05-25 15:57 ` Dan Williams
2018-05-26 7:02 ` Mikulas Patocka
2018-05-26 15:26 ` Dan Williams
2018-05-28 13:32 ` Mikulas Patocka
2018-05-28 18:14 ` Dan Williams
2018-05-30 13:07 ` Mikulas Patocka
2018-05-30 13:16 ` Mike Snitzer
2018-05-30 13:21 ` Mikulas Patocka
2018-05-30 13:26 ` Mike Snitzer
2018-05-30 13:33 ` Mikulas Patocka
2018-05-30 13:54 ` Mike Snitzer
2018-05-30 14:09 ` Mikulas Patocka
2018-05-30 14:21 ` Mike Snitzer
2018-05-30 14:46 ` Mikulas Patocka
2018-05-31 3:42 ` Mike Snitzer
2018-06-03 15:03 ` Mikulas Patocka
2018-05-31 3:39 ` Mike Snitzer
2018-05-31 8:16 ` Mikulas Patocka
2018-05-31 12:09 ` Mike Snitzer
2018-05-30 15:58 ` Dan Williams
2018-05-30 22:39 ` Dan Williams
2018-05-31 8:19 ` Mikulas Patocka
2018-05-31 14:51 ` Dan Williams
2018-05-31 15:31 ` Mikulas Patocka
2018-05-31 16:39 ` Dan Williams
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=x49r2m3nvyk.fsf@segfault.boston.devel.redhat.com \
--to=jmoyer@redhat.com \
--cc=dm-devel@redhat.com \
--cc=hch@infradead.org \
--cc=linux-nvdimm@lists.01.org \
--cc=mpatocka@redhat.com \
--cc=snitzer@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).