All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@saeurebad.de>
To: "Yinghai Lu" <yhlu.kernel@gmail.com>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
	"Andi Kleen" <andi@firstfloor.org>,
	linux-kernel@vger.kernel.org, "Ingo Molnar" <mingo@elte.hu>,
	"Yasunori Goto" <y-goto@jp.fujitsu.com>,
	"KAMEZAWA Hiroyuki" <kamezawa.hiroyu@jp.fujitsu.com>,
	"Christoph Lameter" <clameter@sgi.com>
Subject: Re: [patch 2/2] bootmem: Node-setup agnostic free_bootmem()
Date: Tue, 15 Apr 2008 21:43:59 +0200	[thread overview]
Message-ID: <87ve2ihpj4.fsf@saeurebad.de> (raw)
In-Reply-To: <86802c440804151152i1db7bff8n4b64eba8b912d49f@mail.gmail.com> (Yinghai Lu's message of "Tue, 15 Apr 2008 11:52:14 -0700")

Hi,

"Yinghai Lu" <yhlu.kernel@gmail.com> writes:

> On Tue, Apr 15, 2008 at 4:51 AM, Johannes Weiner <hannes@saeurebad.de> wrote:
>> Hi,
>>
>>
>>
>>  Andrew Morton <akpm@linux-foundation.org> writes:
>>
>>  > On Tue, 15 Apr 2008 00:28:34 -0700 "Yinghai Lu" <yhlu.kernel@gmail.com> wrote:
>>  >
>>  >> On Tue, Apr 15, 2008 at 12:15 AM, Andrew Morton
>>  >> <akpm@linux-foundation.org> wrote:
>>  >> >
>>  >> > On Tue, 15 Apr 2008 00:04:03 -0700 "Yinghai Lu" <yhlu.kernel@gmail.com> wrote:
>>  >> >
>>  >> >  > On Mon, Apr 14, 2008 at 11:23 PM, Andrew Morton
>>  >> >  > <akpm@linux-foundation.org> wrote:
>>  >> >  > >
>>  >> >  > > On Sun, 13 Apr 2008 18:56:57 +0200 Andi Kleen <andi@firstfloor.org> wrote:
>>  >> >  > >
>>  >> >  > >  > Johannes Weiner <hannes@saeurebad.de> writes:
>>  >> >  > >  >
>>  >> >  > >  > > Make free_bootmem() look up the node holding the specified address
>>  >> >  > >  > > range which lets it work transparently on single-node and multi-node
>>  >> >  > >  > > configurations.
>>  >> >  > >  >
>>  >> >  > >  > Acked-by: Andi Kleen <andi@firstfloor.org>
>>  >> >  > >  >
>>  >> >  > >  > This is far better than the original change it replaces and which
>>  >> >  > >  > I also objected to in review.
>>  >> >  > >  >
>>  >> >  > >
>>  >> >  > >  So...  do we think these two patches are sufficiently safe and important for
>>  >> >  > >  2.6.25?
>>  >> >  >
>>  >> >  > the patch is wrong
>>  >> >  >
>>  >> >
>>  >> >  The last I saw was this:
>>  >> >
>>  >> >
>>  >> >  On Sun, 13 Apr 2008 12:57:22 +0200 Johannes Weiner <hannes@saeurebad.de> wrote:
>>  >> >
>>  >> >  > Hi,
>>  >> >  >
>>  >> >  > "Yinghai Lu" <yhlu.kernel@gmail.com> writes:
>>  >> >  >
>>  >> >  > > On Sat, Apr 12, 2008 at 3:33 PM, Johannes Weiner <hannes@saeurebad.de> wrote:
>>  >> >  > > ...
>>  >> >
>>  >> > > >
>>  >> >  > > could have chance that bootmem with reserved_early that is crossing
>>  >> >  > > the nodes.
>>  >> >  >
>>  >> >  > Upstream reserve_bootmem_core() would BUG() on a caller trying to cross
>>  >> >  > nodes, so I don't see where this chance could come from.
>>  >> >
>>  >> >  Is that what you're referring to?
>>  >> >
>>  >> >  Was Johannes observation incorrect?  If so, why?
>>  >>
>>  >> my patch with free_bootmem will make sure free_bootmem_core only free
>>  >> bootmem in the bdata scope.
>>  >> so free_bootmem can handle the cross_node bootmem that is done by
>>  >> reserve_early ( done in another patch, is dropped by you because took
>>  >> Jonannes).
>>  >>
>>  >> in setup_arch for x86_64 there is one free_bootmem that is used when
>>  >> ramdisk is falled out of ram map. that could be crossed by bootloader
>>  >> and kexec, and kernel or second kernel is memmap=NN@SS to execlue some
>>  >> memory.
>>  >>
>>  >> anyway that is extrem case, but my patch could handle that.
>>
>>  Has this case ever occured?  If this could become real, I have no
>>  objections to implement a way to handle it (why would I?), but until now
>>  you just said that in some time in the future, this could be useful.
>>
>>
>>  >>
>>  >> I wonder if any regression caused by my previous patch? maybe on other platform?
>>  >>
>>  >
>>  > Not that I'm aware of.
>>
>>  It papers over buggy usage of free_bootmem().  If its arguments are
>>  bogus, it will just return again where it BUG()ed out before.  The pages
>>  might be never marked free and therefor never reach the buddy allocator.
>>
>>
>>  > I restored mm-make-reserve_bootmem-can-crossed-the-nodes.patch.  Johannes,
>>  > can you please check 2.6.28-rc8-mm2, see if it looks OK?
>>
>>  I object to the way it is implemented.  If it is really needed, that
>>  should be done properly:
>>
>>         - remove the double loop over the area on the likely succeeding
>>           path and unroll the reserving on the unlikely path as it was
>>           done before.  Better to punish exceptional branches than
>>           the working paths.
>>         - make reserve_bootmem_core be strict with its arguments.  If
>>           you want to iterate over the bdata list, you should not just
>>           throw every item at the _core functions and let them work it
>>           out for themselves.  The correct parameters should be
>>           calculated in advance and then passed to a strict
>>           _bootmem_core() function that BUG()s on failure.
>>
>>  But still, Yinghai, you never brought in practical reasons for this
>>  whole thing.  You talked about extreme and theoretical cases and I don't
>>  think that this justifies breaking API or pessimizing code at all.
>
> free_bootmem(ramdisk_image, ramdisk_size) is sitting in setup_arch of
> x86_64. or make that panic directly.
>
> what i needed is: free_bootmem can free bootmem cross the nodes.
>
> on numa
> alloc_bootmem always return blocks on same nodes. but some via
> reserve_early and then to bootmem via early_res_to_bootmem could be
> crossing nodes.
>
> BTW, can you look at patches in -mm about make reserve_bootmem cross
> the nodes?

Yep, already looked at them.  My patches were initially against Linus'
tree which does not allow bootmem to act across node boundaries yet.

Regarding node-crossing, what do you think about my idea in
http://lkml.org/lkml/2008/4/15/139?  That way we could preserve the core
functions and keep them clean.  The design could of course be applied to
the other node-crossing functions too.

	Hannes

  reply	other threads:[~2008-04-15 19:44 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-12 22:33 [patch 0/2] bootmem: Fix node-setup agnostic free_bootmem() Johannes Weiner
2008-04-12 22:33 ` [patch 1/2] bootmem: Revert "mm: fix boundary checking in free_bootmem_core" Johannes Weiner
2008-04-13  1:55   ` Yinghai Lu
2008-04-12 22:33 ` [patch 2/2] bootmem: Node-setup agnostic free_bootmem() Johannes Weiner
2008-04-13  1:59   ` Yinghai Lu
2008-04-13 10:57     ` Johannes Weiner
2008-04-13 16:56   ` Andi Kleen
2008-04-15  6:23     ` Andrew Morton
2008-04-15  7:04       ` Yinghai Lu
2008-04-15  7:15         ` Andrew Morton
2008-04-15  7:28           ` Yinghai Lu
2008-04-15  7:36             ` Andrew Morton
2008-04-15 11:51               ` Johannes Weiner
2008-04-15 18:52                 ` Yinghai Lu
2008-04-15 19:43                   ` Johannes Weiner [this message]
2008-04-15  7:46       ` Andi Kleen
2008-04-15 11:53         ` Johannes Weiner
2008-04-15 18:44           ` Yinghai Lu
2008-04-15 19:51             ` Johannes Weiner
2008-04-15 19:57               ` Yinghai Lu
2008-04-15 20:05                 ` Johannes Weiner

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=87ve2ihpj4.fsf@saeurebad.de \
    --to=hannes@saeurebad.de \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=clameter@sgi.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=y-goto@jp.fujitsu.com \
    --cc=yhlu.kernel@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.