LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Jerome Glisse <jglisse@redhat.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Dave Airlie <airlied@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Logan Gunthorpe <logang@deltatee.com>,
	Christoph Hellwig <hch@lst.de>, Michal Hocko <mhocko@suse.com>,
	Linux MM <linux-mm@kvack.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/5] mm: rework hmm to use devm_memremap_pages
Date: Tue, 5 Jun 2018 14:48:11 -0400	[thread overview]
Message-ID: <20180605184811.GC4423@redhat.com> (raw)
In-Reply-To: <CAPcyv4jTty4k1xXCOWbeRjzv-KjxNH1L4oOkWW1EbJt66jF4_w@mail.gmail.com>

On Tue, May 29, 2018 at 04:33:49PM -0700, Dan Williams wrote:
> On Tue, May 29, 2018 at 4:00 PM, Dave Airlie <airlied@gmail.com> wrote:
> > On 30 May 2018 at 08:31, Dan Williams <dan.j.williams@intel.com> wrote:
> >> On Tue, May 29, 2018 at 3:22 PM, Dave Airlie <airlied@gmail.com> wrote:
> >>>
> >>> On 24 May 2018 at 13:18, Dan Williams <dan.j.williams@intel.com> wrote:
> >>> > On Wed, May 23, 2018 at 5:10 PM, Jerome Glisse <jglisse@redhat.com> wrote:
> >>> >> On Mon, May 21, 2018 at 03:35:14PM -0700, Dan Williams wrote:
> >>> >>> Hi Andrew, please consider this series for 4.18.
> >>> >>>
> >>> >>> For maintainability, as ZONE_DEVICE continues to attract new users,
> >>> >>> it is useful to keep all users consolidated on devm_memremap_pages() as
> >>> >>> the interface for create "device pages".
> >>> >>>
> >>> >>> The devm_memremap_pages() implementation was recently reworked to make
> >>> >>> it more generic for arbitrary users, like the proposed peer-to-peer
> >>> >>> PCI-E enabling. HMM pre-dated this rework and opted to duplicate
> >>> >>> devm_memremap_pages() as hmm_devmem_pages_create().
> >>> >>>
> >>> >>> Rework HMM to be a consumer of devm_memremap_pages() directly and fix up
> >>> >>> the licensing on the exports given the deep dependencies on the mm.
> >>> >>
> >>> >> I am on PTO right now so i won't be able to quickly review it all
> >>> >> but forcing GPL export is problematic for me now. I rather have
> >>> >> device driver using "sane" common helpers than creating their own
> >>> >> crazy thing.
> >>> >
> >>> > Sane drivers that need this level of deep integration with Linux
> >>> > memory management need to be upstream. Otherwise, HMM is an
> >>> > unprecedented departure from the norms of Linux kernel development.
> >>>
> >>> Isn't it the author of code choice what EXPORT_SYMBOL to use? and
> >>> isn't the agreement that if something is EXPORT_SYMBOL now, changing
> >>> underlying exports isn't considered a good idea. We've seen this before
> >>> with the refcount fun,
> >>>
> >>> See d557d1b58b3546bab2c5bc2d624c5709840e6b10
> >>>
> >>> Not commenting on the legality or what derived works are considered,
> >>> since really the markings are just an indication of the authors opinion,
> >>> and at this stage I think are actually meaningless, since we've diverged
> >>> considerably from the advice given to Linus back when this started.
> >>
> >> Yes, and in this case devm_memremap_pages() was originally written by
> >> Christoph and I:
> >>
> >>     41e94a851304 add devm_memremap_pages
> >
> > So you wrote some code in 2015 (3 years ago) and you've now decided
> > to change the EXPORT marker on it? what changed in 3 years, and why
> > would changing that marker 3 years later have any effect on your original
> > statement that it was an EXPORT_SYMBOL.
> >
> > Think what EXPORT_SYMBOL vs GPL means, it isn't a bit stick that magically
> > makes things into derived works. If something wasn't a derived work for 3 years
> > using that API, then it isn't a derived work now 3 years later because you
> > changed the marker. Retrospectively changing the markers doesn't really
> > make any sense legally or otherwise.
> 
> It honestly was an oversight, and as we've gone on to add deeper and
> deeper ties into the mm and filesystems [1] I realized this symbol was
> mis-labeled.  It would be one thing if this was just some random
> kernel leaf / library function, but this capability when turned on
> causes the entire kernel to be recompiled as things like the
> definition of put_page() changes. It's deeply integrated with how
> Linux manages memory.

I am personaly on the fence on deciding GPL versus non GPL export
base on subjective view of what is deeply integrated and what is
not. I think one can argue that every single linux kernel function
is deeply integrated within the kernel, starting with all device
drivers functions. One could similarly argue that nothing is ...

I see more value in consistency of symbol export over time. Once
we pick one it should stay that way.


> >> HMM started off by duplicating devm_memremap_pages() which is fixed up
> >> by this series:
> >
> > Just looking in my current tree hmm_devmem_pages_create and
> > devm_memremap_pages don't look like duplicates, they might have
> > code but they definitely aren't one for one copies. I'm not sure you can
> > just say Jerome copied that code in, you've now refactored the code
> > so HMM can use it and are changing the symbol exports underneath it,
> 
> The initial patches for HMM used devm_memremap_pages() directly, and
> during review I asked for the exact same arrangement as implemented
> here, i.e. for the dev_pagemap structure to be a sub-structure of the
> HMM data [2]. At some point along the way we lost that review
> feedback. It was not until Christoph and Logan recently reworked
> devm_memermap_pages() that I realized that HMM had unnecessarily
> diverged.
> 
> > Again if Christoph believes all uses of this are a derived work he didn't
> > indicate it 3 years ago, but neither does the mark make any legal difference
> > in this case, since everything in the kernel is GPL, and if you
> > consider something
> > a derived work or not is well into legal land.
> >
> > I'd rather anyways the original author of HMM wishes were respected
> > on his code, or at least you wait until he gets back from holidays before
> > pushing to merge this.
> 
> To be clear this only affects the usage of the ZONE_DEVICE facility,
> I'm not touching the other pieces of HMM that are original to HMM. I
> didn't realize Jerome was on vacation when I sent the patches, and I
> think it is otherwise healthy to have this discussion in the meantime.

While HMM is a toolbox and i intend to use some part of HMM to replace
some existing GUP user. Biggest user of HMM will use all the tools in
the HMM box. Thus having a mix of GPL and non GPL defeat its usefulness
for out of tree drivers.

I still want to review this patchset, i am going through a backlog of
urgent emails so i probably won't be able to review before a day or two.

I am just strongly against changing to GPL only export.

Cheers,
Jérôme

  reply	other threads:[~2018-06-05 18:48 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-21 22:35 Dan Williams
2018-05-21 22:35 ` [PATCH 1/5] mm, devm_memremap_pages: mark devm_memremap_pages() EXPORT_SYMBOL_GPL Dan Williams
2018-05-22  6:29   ` Christoph Hellwig
2018-05-21 22:35 ` [PATCH 2/5] mm, devm_memremap_pages: handle errors allocating final devres action Dan Williams
2018-05-21 23:10   ` Andrew Morton
2018-05-22  0:07     ` Dan Williams
2018-05-22 16:42       ` Logan Gunthorpe
2018-05-22 16:56         ` Dan Williams
2018-05-22 17:03           ` Logan Gunthorpe
2018-05-22 17:25             ` Dan Williams
2018-05-22 17:36               ` Logan Gunthorpe
2018-05-22  6:30   ` Christoph Hellwig
2018-05-21 22:35 ` [PATCH 3/5] mm, hmm: use devm semantics for hmm_devmem_{add, remove} Dan Williams
2018-05-22  6:30   ` Christoph Hellwig
2018-05-21 22:35 ` [PATCH 4/5] mm, hmm: replace hmm_devmem_pages_create() with devm_memremap_pages() Dan Williams
2018-05-22  6:31   ` Christoph Hellwig
2018-05-22 17:13   ` Logan Gunthorpe
2018-05-22 21:38     ` Dan Williams
2018-05-21 22:35 ` [PATCH 5/5] mm, hmm: mark hmm_devmem_{add, add_resource} EXPORT_SYMBOL_GPL Dan Williams
2018-05-22  6:32   ` Christoph Hellwig
2018-05-22 21:31     ` Andrew Morton
2018-06-05 18:24       ` Jerome Glisse
2018-05-24  0:10 ` [PATCH 0/5] mm: rework hmm to use devm_memremap_pages Jerome Glisse
2018-05-24  3:18   ` Dan Williams
2018-05-24  6:35     ` Christoph Hellwig
2018-05-29 22:22     ` Dave Airlie
2018-05-29 22:31       ` Dan Williams
2018-05-29 23:00         ` Dave Airlie
2018-05-29 23:33           ` Dan Williams
2018-06-05 18:48             ` Jerome Glisse [this message]
2018-06-05 22:19               ` Dave Airlie
2018-06-05 23:06                 ` Dan Williams
2018-06-06  0:08                   ` Jerome Glisse
2018-06-06  1:33                     ` Dan Williams
2018-06-06  7:14                       ` Christoph Hellwig
2018-06-07 14:16                       ` Jerome Glisse
2018-06-07 18: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=20180605184811.GC4423@redhat.com \
    --to=jglisse@redhat.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=logang@deltatee.com \
    --cc=mhocko@suse.com \
    --subject='Re: [PATCH 0/5] mm: rework hmm to use devm_memremap_pages' \
    /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

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).