From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032913AbbKFIHh (ORCPT ); Fri, 6 Nov 2015 03:07:37 -0500 Received: from www.linutronix.de ([62.245.132.108]:58634 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1032001AbbKFIHg (ORCPT ); Fri, 6 Nov 2015 03:07:36 -0500 Date: Fri, 6 Nov 2015 09:06:42 +0100 (CET) From: Thomas Gleixner To: Dan Williams cc: Ross Zwisler , Jeff Moyer , linux-nvdimm , X86 ML , Dave Chinner , "linux-kernel@vger.kernel.org" , Ingo Molnar , "H. Peter Anvin" , Jan Kara Subject: Re: [PATCH 0/2] "big hammer" for DAX msync/fsync correctness In-Reply-To: Message-ID: References: <1446070176-14568-1-git-send-email-ross.zwisler@linux.intel.com> <20151028225112.GA30284@linux.intel.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001,URIBL_BLOCKED=0.001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 5 Nov 2015, Dan Williams wrote: > On Wed, Oct 28, 2015 at 3:51 PM, Ross Zwisler > wrote: > > On Wed, Oct 28, 2015 at 06:24:29PM -0400, Jeff Moyer wrote: > >> Ross Zwisler writes: > >> > >> > This series implements the very slow but correct handling for > >> > blkdev_issue_flush() with DAX mappings, as discussed here: > >> > > >> > https://lkml.org/lkml/2015/10/26/116 > >> > > >> > I don't think that we can actually do the > >> > > >> > on_each_cpu(sync_cache, ...); > >> > > >> > ...where sync_cache is something like: > >> > > >> > cache_disable(); > >> > wbinvd(); > >> > pcommit(); > >> > cache_enable(); > >> > > >> > solution as proposed by Dan because WBINVD + PCOMMIT doesn't guarantee that > >> > your writes actually make it durably onto the DIMMs. I believe you really do > >> > need to loop through the cache lines, flush them with CLWB, then fence and > >> > PCOMMIT. > >> > >> *blink* > >> *blink* > >> > >> So much for not violating the principal of least surprise. I suppose > >> you've asked the hardware folks, and they've sent you down this path? > > > > Sadly, yes, this was the guidance from the hardware folks. > > So it turns out we weren't asking the right question. wbinvd may > indeed be viable... we're still working through the caveats. Just for the record. Such a flush mechanism with on_each_cpu() wbinvd() ... will make that stuff completely unusable on Real-Time systems. We've been there with the big hammer approach of the intel graphics driver. Thanks, tglx