Re: [PATCH 09/10] mm/hmm: allow to mirror vma of a file on a DAX backed filesystem

From: Jerome Glisse
Date: Tue Mar 12 2019 - 20:10:25 EST

On Tue, Mar 12, 2019 at 02:52:14PM -0700, Andrew Morton wrote:
> On Tue, 12 Mar 2019 12:30:52 -0700 Dan Williams <dan.j.williams@xxxxxxxxx> wrote:
> > On Tue, Mar 12, 2019 at 12:06 PM Jerome Glisse <jglisse@xxxxxxxxxx> wrote:
> > > On Tue, Mar 12, 2019 at 09:06:12AM -0700, Dan Williams wrote:
> > > > On Tue, Mar 12, 2019 at 8:26 AM Jerome Glisse <jglisse@xxxxxxxxxx> wrote:
> > [..]
> > > > > Spirit of the rule is better than blind application of rule.
> > > >
> > > > Again, I fail to see why HMM is suddenly unable to make forward
> > > > progress when the infrastructure that came before it was merged with
> > > > consumers in the same development cycle.
> > > >
> > > > A gate to upstream merge is about the only lever a reviewer has to
> > > > push for change, and these requests to uncouple the consumer only
> > > > serve to weaken that review tool in my mind.
> > >
> > > Well let just agree to disagree and leave it at that and stop
> > > wasting each other time
> >
> > I'm fine to continue this discussion if you are. Please be specific
> > about where we disagree and what aspect of the proposed rules about
> > merge staging are either acceptable, painful-but-doable, or
> > show-stoppers. Do you agree that HMM is doing something novel with
> > merge staging, am I off base there?
> You're correct. We chose to go this way because the HMM code is so
> large and all-over-the-place that developing it in a standalone tree
> seemed impractical - better to feed it into mainline piecewise.
> This decision very much assumed that HMM users would definitely be
> merged, and that it would happen soon. I was skeptical for a long time
> and was eventually persuaded by quite a few conversations with various
> architecture and driver maintainers indicating that these HMM users
> would be forthcoming.
> In retrospect, the arrival of HMM clients took quite a lot longer than
> was anticipated and I'm not sure that all of the anticipated usage
> sites will actually be using it. I wish I'd kept records of
> who-said-what, but I didn't and the info is now all rather dissipated.
> So the plan didn't really work out as hoped. Lesson learned, I would
> now very much prefer that new HMM feature work's changelogs include
> links to the driver patchsets which will be using those features and
> acks and review input from the developers of those driver patchsets.

This is what i am doing now and this patchset falls into that. I did
post the ODP and nouveau bits to use the 2 new functions (dma map and
unmap). I expect to merge both ODP and nouveau bits for that during
the next merge window.

Also with 5.1 everything that is upstream is use by nouveau at least.
They are posted patches to use HMM for AMD, Intel, Radeon, ODP, PPC.
Some are going through several revisions so i do not know exactly when
each will make it upstream but i keep working on all this.

So the guideline we agree on:
- no new infrastructure without user
- device driver maintainer for which new infrastructure is done
must either sign off or review of explicitly say that they want
the feature I do not expect all driver maintainer will have
the bandwidth to do proper review of the mm part of the infra-
structure and it would not be fair to ask that from them. They
can still provide feedback on the API expose to the device
- driver bits must be posted at the same time as the new infra-
structure even if they target the next release cycle to avoid
inter-tree dependency
- driver bits must be merge as soon as possible

Thing we do not agree on:
- If driver bits miss for any reason the +1 target directly
revert the new infra-structure. I think it should not be black
and white and the reasons why the driver bit missed the merge
window should be taken into account. If the feature is still
wanted and the driver bits missed the window for simple reasons
then it means that we push everything by 2 release ie the
revert is done in +1 then we reupload the infra-structure in
+2 and finaly repush the driver bit in +3 so we loose 1 cycle.
Hence why i would rather that the revert would only happen if
it is clear that the infrastructure is not ready or can not
be use in timely (over couple kernel release) fashion by any