linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Jerome Glisse <jglisse@redhat.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
	dave@sr71.net, dan.j.williams@intel.com, dave.jiang@intel.com,
	zwisler@kernel.org, vishal.l.verma@intel.com,
	thomas.lendacky@amd.com, akpm@linux-foundation.org,
	mhocko@suse.com, linux-nvdimm@lists.01.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	ying.huang@intel.com, fengguang.wu@intel.com, bp@suse.de,
	bhelgaas@google.com, baiyaowei@cmss.chinamobile.com,
	tiwai@suse.de
Subject: Re: [PATCH 2/4] mm/memory-hotplug: allow memory resources to be children
Date: Wed, 16 Jan 2019 18:38:50 -0500	[thread overview]
Message-ID: <20190116233849.GE3617@redhat.com> (raw)
In-Reply-To: <2b52778d-f120-eec7-3e7a-3a9c182170f0@intel.com>

On Wed, Jan 16, 2019 at 03:01:39PM -0800, Dave Hansen wrote:
> On 1/16/19 11:16 AM, Jerome Glisse wrote:
> >> We also rework the old error message a bit since we do not get
> >> the conflicting entry back: only an indication that we *had* a
> >> conflict.
> > We should keep the device private check (moving it in __request_region)
> > as device private can try to register un-use physical address (un-use
> > at time of device private registration) that latter can block valid
> > physical address the error message you are removing report such event.
> 
> If a resource can't support having a child, shouldn't it just be marked
> IORESOURCE_BUSY, rather than trying to somehow special-case
> IORES_DESC_DEVICE_PRIVATE_MEMORY behavior?

So the thing about IORES_DESC_DEVICE_PRIVATE_MEMORY is that they
are not necessarily link to any real resource ie they can just be
random range of physical address that at the time of registration
had no resource.

Now you can latter hotplug some memory that would conflict with
this IORES_DESC_DEVICE_PRIVATE_MEMORY and if that happens we want
to tell that to the user ie:
    "Sorry we registered some fake memory at fake physical address
     and now you have hotplug something that conflict with that."


Why no existing resource ? Well it depends on the platform. In some
case memory for HMM is just not accessible by the CPU _at_ all so
there is obviously no physical address from CPU point of view for
this kind of memory. The other case is PCIE and BAR size. If we
have PCIE bar resizing working everywhere we could potentialy
use the resized PCIE bar (thought i think some device have bug on
that front so i need to check device side too). So when HMM was
design without the PCIE resize and with totaly un-accessible memory
the only option was to pick some unuse physical address range as
anyway memory we are hotpluging is not CPU accessible.

It has been on my TODO to try to find a better way to reserve a
physical range but this is highly platform specific. I need to
investigate if i can report to ACPI on x86 that i want to make
sure the system never assign some physical address range.

Checking PCIE bar resize is also on my TODO (on device side as
i think some device are just buggy there and won't accept BAR
bigger than 256MB and freakout if you try).

So right now i would rather that we keep properly reporting this
hazard so that at least we know it failed because of that. This
also include making sure that we can not register private memory
as a child of an un-busy resource that does exist but might not
have yet been claim by its rightful owner.

Existing code make sure of that, with your change this is a case
that i would not be able to stop. Well i would have to hot unplug
and try a different physical address i guess.

Cheers,
Jérôme

  reply	other threads:[~2019-01-16 23:38 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16 18:18 [PATCH 0/4] Allow persistent memory to be used like normal RAM Dave Hansen
2019-01-16 18:18 ` Dave Hansen
2019-01-16 18:19 ` [PATCH 1/4] mm/resource: return real error codes from walk failures Dave Hansen
2019-01-16 18:19   ` Dave Hansen
2019-01-16 20:38   ` Bjorn Helgaas
2019-01-16 20:38     ` Bjorn Helgaas
2019-01-16 18:19 ` [PATCH 2/4] mm/memory-hotplug: allow memory resources to be children Dave Hansen
2019-01-16 18:19   ` Dave Hansen
2019-01-16 19:16   ` Jerome Glisse
2019-01-16 23:01     ` Dave Hansen
2019-01-16 23:38       ` Jerome Glisse [this message]
2019-01-23 20:03         ` Dave Hansen
2019-01-23 20:15           ` Jerome Glisse
2019-01-18 19:58     ` Dave Hansen
2019-01-18 20:26       ` Jerome Glisse
2019-01-23 17:05   ` Michal Hocko
2019-01-16 18:19 ` [PATCH 3/4] dax/kmem: let walk_system_ram_range() search child resources Dave Hansen
2019-01-16 18:19   ` Dave Hansen
2019-01-16 18:19 ` [PATCH 4/4] dax: "Hotplug" persistent memory for use like normal RAM Dave Hansen
2019-01-16 18:19   ` Dave Hansen
2019-01-16 21:16   ` Bjorn Helgaas
2019-01-16 21:16     ` Bjorn Helgaas
2019-01-16 21:40     ` Dave Hansen
2019-01-16 21:44       ` Bjorn Helgaas
2019-01-16 21:44         ` Bjorn Helgaas
2019-01-16 22:06       ` Dan Williams
2019-01-16 22:06         ` Dan Williams
2019-01-16 21:53     ` Dave Hansen
2019-01-16 21:59       ` Bjorn Helgaas
2019-01-16 21:59         ` Bjorn Helgaas
2019-01-16 21:31   ` Dan Williams
2019-01-16 21:31     ` Dan Williams
2019-01-17  5:21   ` Du, Fan
2019-01-17 16:56     ` Dan Williams
2019-01-17 16:56       ` Dan Williams
2019-01-17  8:19   ` Yanmin Zhang
2019-01-17 15:17     ` Dave Hansen
2019-01-18  7:47       ` Yanmin Zhang
2019-01-18 15:20         ` Dave Hansen
2019-01-17 16:29 ` [PATCH 0/4] Allow persistent memory to be used " Jeff Moyer
2019-01-17 16:29   ` Jeff Moyer
2019-01-17 16:47   ` Keith Busch
2019-01-17 17:20     ` Jeff Moyer
2019-01-17 17:20       ` Jeff Moyer
2019-01-17 19:34       ` Keith Busch
2019-01-17 21:57         ` Jeff Moyer
2019-01-17 21:57           ` Jeff Moyer
2019-01-18 11:48       ` Fengguang Wu
2019-01-17 16:50   ` Dan Williams
2019-01-17 16:50     ` Dan Williams
2019-01-17 22:43   ` Dave Hansen

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=20190116233849.GE3617@redhat.com \
    --to=jglisse@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=baiyaowei@cmss.chinamobile.com \
    --cc=bhelgaas@google.com \
    --cc=bp@suse.de \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@sr71.net \
    --cc=fengguang.wu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=mhocko@suse.com \
    --cc=thomas.lendacky@amd.com \
    --cc=tiwai@suse.de \
    --cc=vishal.l.verma@intel.com \
    --cc=ying.huang@intel.com \
    --cc=zwisler@kernel.org \
    /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).