Re: [HMM-CDM 5/5] mm/hmm: simplify kconfig and enable HMM and DEVICE_PUBLIC for ppc64

From: John Hubbard
Date: Wed Jun 14 2017 - 23:16:10 EST


On 06/14/2017 07:09 PM, Jerome Glisse wrote:
On Wed, Jun 14, 2017 at 04:10:32PM -0700, John Hubbard wrote:
On 06/14/2017 01:11 PM, JÃrÃme Glisse wrote:
[...]
Hi Jerome,

There are still some problems with using this configuration. First and
foremost, it is still possible (and likely, given the complete dissimilarity
in naming, and difference in location on the screen) to choose HMM_MIRROR,
and *not* to choose either DEVICE_PRIVATE or DEVICE_PUBLIC. And then we end
up with a swath of important page fault handling code being ifdef'd out, and
one ends up having to investigate why.

As for solutions, at least for the x86 (DEVICE_PRIVATE)case, we could do this:

diff --git a/mm/Kconfig b/mm/Kconfig
index 7de939a29466..f64182d7b956 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -279,6 +279,7 @@ config HMM_MIRROR
bool "HMM mirror CPU page table into a device page table"
depends on ARCH_HAS_HMM && X86_64
select MMU_NOTIFIER
+ select DEVICE_PRIVATE
select HMM
help
Select HMM_MIRROR if you want to mirror range of the CPU page table of a

...and that is better than the other direction (having HMM_MIRROR depend on
DEVICE_PRIVATE), because in the latter case, HMM_MIRROR will disappear (and
it's several lines above) until you select DEVICE_PRIVATE. That is hard to
work with for the user.

The user will tend to select HMM_MIRROR, but it is *not* obvious that he/she
should also select DEVICE_PRIVATE. So Kconfig should do it for them.

In fact, I'm not even sure if the DEVICE_PRIVATE and DEVICE_PUBLIC actually
need Kconfig protection, but if they don't, then life would be easier for
whoever is configuring their kernel.


We do need Kconfig for DEVICE_PRIVATE and DEVICE_PUBLIC. I can remove HMM_MIRROR
and have HMM mirror code ifdef on DEVICE_PRIVATE.

Cheers,
JÃrÃme

That's probably fine.

(I see that you may have missed the rest of my response, but looks like Balbir covered it.)

thanks,
john h