linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Walleij <linus.walleij@linaro.org>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Cc: Pavel Machek <pavel@ucw.cz>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	linux-mm@kvack.org
Subject: Re: 4.14-rc2 on thinkpad x220: out of memory when inserting mmc card
Date: Mon, 2 Oct 2017 16:09:57 +0200	[thread overview]
Message-ID: <CACRpkdYirC+rh_KALgVqKZMjq2DgbW4oi9MJkmrzwn+1O+94-g@mail.gmail.com> (raw)
In-Reply-To: <201710011957.ICF15708.OOLOHFSQMFFVJt@I-love.SAKURA.ne.jp>

On Sun, Oct 1, 2017 at 12:57 PM, Tetsuo Handa
<penguin-kernel@i-love.sakura.ne.jp> wrote:

>> > I inserted u-SD card, only to realize that it is not detected as it
>> > should be. And dmesg indeed reveals:
>>
>> Tetsuo asked me to report this to linux-mm.
>>
>> But 2^4 is 16 pages, IIRC that can't be expected to work reliably, and
>> thus this sounds like MMC bug, not mm bug.


I'm not sure I fully understand this error message:
"worker/2:1: page allocation failure: order:4"

What I guess from context is that the mmc_init_request()
call is failing to allocate 16 pages, meaning for 4K pages
64KB which is the typical bounce buffer.

This is what the code has always allocated as bounce buffer,
but it used to happen upfront, when probing the MMC block layer,
rather than when allocating the requests.

Now it happens later, and that fails sometimes apparently.

> Yes, 16 pages is costly allocations which will fail without invoking the
> OOM killer. But I thought this is an interesting case, for mempool
> allocation should be able to handle memory allocation failure except
> initial allocations, and initial allocation is failing.
>
> I think that using kvmalloc() (and converting corresponding kfree() to
> kvfree()) will make initial allocations succeed, but that might cause
> needlessly succeeding subsequent mempool allocations under memory pressure?

Using kvmalloc() is against the design of the bounce buffer if that
means we allocate virtual (non-contigous) memory. These bounce
buffers exist exactly to be contigous.

I think it is better to delete the bounce buffer handling altogether since
it anyways turns out that noone is using them or getting any
benefit from them. AFAICT.
i.e. just cherry-pick commit a16a2cc4f37d4a35df7cdc5c976465f9867985c2
("mmc: Delete bounce buffer handling").

This should be fine to cherry-pick for fixes.

What we figured out is that bounce buffers are almost always enabled
but very seldom actually used by the drivers. It is only used by
drivers with max_segs == 1.

This MMC host driver (which one?) appears to be having max_segs == 1.
This doesn't mean that the bounce buffers actually provide a speedup.
Most probably not. It just happens that code enables them if
you have max_segs == 1.

Can you try cherry-picking the above patch, also here:
https://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git/commit/?h=next&id=a16a2cc4f37d4a35df7cdc5c976465f9867985c2

And see if this solves your problem?

Yours,
Linus Walleij

  parent reply	other threads:[~2017-10-02 14:10 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-05 19:47 4.13 on thinkpad x220: oops when writing to SD card Pavel Machek
2017-09-06  2:44 ` Shawn Lin
2017-09-06  6:03   ` Adrian Hunter
2017-09-07  7:18     ` Ulf Hansson
2017-09-07  7:53       ` Adrian Hunter
2017-09-07 10:47         ` Seraphime Kirkovski
2017-09-07 12:06         ` Ulf Hansson
2017-09-07 12:55           ` Pavel Machek
2017-09-07 15:03             ` Ulf Hansson
2017-09-08  8:51           ` Pavel Machek
2017-09-07 19:58         ` Linus Walleij
2017-09-07 20:02       ` Linus Walleij
2017-09-08  2:51         ` Shawn Lin
2017-09-12  9:42           ` Linus Walleij
2017-09-13  4:04             ` Shawn Lin
2017-10-01  9:37 ` 4.14-rc2 on thinkpad x220: out of memory when inserting mmc card Pavel Machek
2017-10-01 10:26   ` Pavel Machek
2017-10-01 10:57     ` Tetsuo Handa
2017-10-02  7:52       ` Adrian Hunter
2017-10-02  8:41         ` Pavel Machek
2017-10-02 12:06           ` Linus Walleij
2017-10-02 13:03             ` Pavel Machek
2017-10-03  6:27               ` Adrian Hunter
2017-10-23  9:31                 ` Pavel Machek
2017-10-23 12:13                   ` Adrian Hunter
2017-10-23 12:16                   ` Linus Walleij
2017-10-23 21:27                     ` Pavel Machek
2017-10-24  6:59                       ` Adrian Hunter
2017-10-26 13:44                       ` Linus Walleij
2017-10-02 14:09       ` Linus Walleij [this message]
2017-10-03  6:30         ` Adrian Hunter
2017-10-04  7:53           ` Linus Walleij
2017-10-04  8:01             ` Ulf Hansson
2017-10-02 14:44     ` Michal Hocko
2017-10-02 14:55       ` Tetsuo Handa

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=CACRpkdYirC+rh_KALgVqKZMjq2DgbW4oi9MJkmrzwn+1O+94-g@mail.gmail.com \
    --to=linus.walleij@linaro.org \
    --cc=adrian.hunter@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    /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).