($INBOX_DIR/description missing)
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Baoquan He <bhe@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, robh+dt@kernel.org,
	dan.j.williams@intel.com, nicolas.pitre@linaro.org,
	josh@joshtriplett.org, fengguang.wu@intel.com, bp@suse.de,
	andy.shevchenko@gmail.com, patrik.r.jakobsson@gmail.com,
	airlied@linux.ie, kys@microsoft.com, haiyangz@microsoft.com,
	sthemmin@microsoft.com, dmitry.torokhov@gmail.com,
	frowand.list@gmail.com, keith.busch@intel.com,
	jonathan.derrick@intel.com, lorenzo.pieralisi@arm.com,
	bhelgaas@google.com, tglx@linutronix.de, brijesh.singh@amd.com,
	jglisse@redhat.com, thomas.lendacky@amd.com,
	gregkh@linuxfoundation.org, baiyaowei@cmss.chinamobile.com,
	richard.weiyang@gmail.com, devel@linuxdriverproject.org,
	linux-input@vger.kernel.org, linux-nvdimm@lists.01.org,
	devicetree@vger.kernel.org, linux-pci@vger.kernel.org,
	ebiederm@xmission.com, vgoyal@redhat.com, dyoung@redhat.com,
	yinghai@kernel.org, monstr@monstr.eu, davem@davemloft.net,
	chris@zankel.net, jcmvbkbc@gmail.com, gustavo@padovan.org,
	maarten.lankhorst@linux.intel.com, seanpaul@chromium.org,
	linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
Subject: Re: [PATCH v7 4/4] kexec_file: Load kernel at top of system RAM if required
Date: Thu, 26 Jul 2018 14:59:57 +0200
Message-ID: <20180726125957.GH28386@dhcp22.suse.cz> (raw)
In-Reply-To: <20180725064813.GI6480@MiWiFi-R3L-srv>

On Wed 25-07-18 14:48:13, Baoquan He wrote:
> On 07/23/18 at 04:34pm, Michal Hocko wrote:
> > On Thu 19-07-18 23:17:53, Baoquan He wrote:
> > > Kexec has been a formal feature in our distro, and customers owning
> > > those kind of very large machine can make use of this feature to speed
> > > up the reboot process. On uefi machine, the kexec_file loading will
> > > search place to put kernel under 4G from top to down. As we know, the
> > > 1st 4G space is DMA32 ZONE, dma, pci mmcfg, bios etc all try to consume
> > > it. It may have possibility to not be able to find a usable space for
> > > kernel/initrd. From the top down of the whole memory space, we don't
> > > have this worry. 
> > 
> > I do not have the full context here but let me note that you should be
> > careful when doing top-down reservation because you can easily get into
> > hotplugable memory and break the hotremove usecase. We even warn when
> > this is done. See memblock_find_in_range_node
> Kexec read kernel/initrd file into buffer, just search usable positions
> for them to do the later copying. You can see below struct kexec_segment, 
> for the old kexec_load, kernel/initrd are read into user space buffer,
> the @buf stores the user space buffer address, @mem stores the position
> where kernel/initrd will be put. In kernel, it calls
> kimage_load_normal_segment() to copy user space buffer to intermediate
> pages which are allocated with flag GFP_KERNEL. These intermediate pages
> are recorded as entries, later when user execute "kexec -e" to trigger
> kexec jumping, it will do the final copying from the intermediate pages
> to the real destination pages which @mem pointed. Because we can't touch
> the existed data in 1st kernel when do kexec kernel loading. With my
> understanding, GFP_KERNEL will make those intermediate pages be
> allocated inside immovable area, it won't impact hotplugging. But the
> @mem we searched in the whole system RAM might be lost along with
> hotplug. Hence we need do kexec kernel again when hotplug event is
> detected.

I am not sure I am following. If @mem is placed at movable node then the
memory hotremove simply won't work, because we are seeing reserved pages
and do not know what to do about them. They are not migrateable.
Allocating intermediate pages from other nodes doesn't really help.

The memblock code warns exactly for that reason.
Michal Hocko
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2018-07-26 13:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-18  2:49 [PATCH v7 0/4] resource: Use list_head to link sibling resource Baoquan He
2018-07-18  2:49 ` [PATCH v7 1/4] resource: Move reparent_resources() to kernel/resource.c and make it public Baoquan He
2018-07-18  2:49 ` [PATCH v7 2/4] resource: Use list_head to link sibling resource Baoquan He
2018-07-18  2:49 ` [PATCH v7 3/4] resource: add walk_system_ram_res_rev() Baoquan He
2018-07-18  2:49 ` [PATCH v7 4/4] kexec_file: Load kernel at top of system RAM if required Baoquan He
2018-07-18 22:33   ` Andrew Morton
2018-07-19 15:17     ` Baoquan He
2018-07-19 19:44       ` Andrew Morton
2018-07-25  2:21         ` Baoquan He
2018-07-23 14:34       ` Michal Hocko
2018-07-25  6:48         ` Baoquan He
2018-07-26 12:59           ` Michal Hocko [this message]
2018-07-26 13:09             ` Baoquan He
2018-07-26 13:12               ` Michal Hocko
2018-07-26 13:14                 ` Michal Hocko
2018-07-26 13:37                   ` Baoquan He
2018-07-26 14:01                     ` Michal Hocko
2018-07-26 15:10                       ` Baoquan He

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180726125957.GH28386@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=airlied@linux.ie \
    --cc=akpm@linux-foundation.org \
    --cc=andy.shevchenko@gmail.com \
    --cc=baiyaowei@cmss.chinamobile.com \
    --cc=bhe@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=bp@suse.de \
    --cc=brijesh.singh@amd.com \
    --cc=chris@zankel.net \
    --cc=dan.j.williams@intel.com \
    --cc=davem@davemloft.net \
    --cc=devel@linuxdriverproject.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=fengguang.wu@intel.com \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo@padovan.org \
    --cc=haiyangz@microsoft.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=jglisse@redhat.com \
    --cc=jonathan.derrick@intel.com \
    --cc=josh@joshtriplett.org \
    --cc=keith.busch@intel.com \
    --cc=kexec@lists.infradead.org \
    --cc=kys@microsoft.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=monstr@monstr.eu \
    --cc=nicolas.pitre@linaro.org \
    --cc=patrik.r.jakobsson@gmail.com \
    --cc=richard.weiyang@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=seanpaul@chromium.org \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=vgoyal@redhat.com \
    --cc=yinghai@kernel.org \


* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

($INBOX_DIR/description missing)

This inbox may be cloned and mirrored by anyone:

	# this inbox consists of 2 epochs:
	git clone --mirror http://archive.lwn.net:8080/devicetree/0 devicetree/git/0.git	# oldest
	git clone --mirror http://archive.lwn.net:8080/devicetree/1 devicetree/git/1.git	# newest

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devicetree devicetree/ http://archive.lwn.net:8080/devicetree \
		devicetree@vger.kernel.org lwn-devicetree@archive.lwn.net
	public-inbox-index devicetree

Example config snippet for mirrors.
Newsgroup available over NNTP:

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git