Re: 4.14-rc2 on thinkpad x220: out of memory when inserting mmc card

From: Adrian Hunter
Date: Tue Oct 24 2017 - 03:06:37 EST


On 24/10/17 00:27, Pavel Machek wrote:
> On Mon 2017-10-23 14:16:40, Linus Walleij wrote:
>> On Mon, Oct 23, 2017 at 11:31 AM, Pavel Machek <pavel@xxxxxx> wrote:
>>
>>>>> Thinkpad X220... how do I tell if I was using them? I believe so,
>>>>> because I uncovered bug in them before.
>>>>
>>>> You are certainly using bounce buffers. What does lspci -knn show?
>>>
>>> Here is the output:
>>> 0d:00.0 System peripheral [0880]: Ricoh Co Ltd PCIe SDXC/MMC Host Controller [1180:e823] (rev 07)
>>> Subsystem: Lenovo Device [17aa:21da]
>>> Kernel driver in use: sdhci-pci
>>
>> So that is a Ricoh driver, one of the few that was supposed to benefit
>> from bounce buffers.
>>
>> Except that if you actually turned it on:
>>> [10994.302196] kworker/2:1: page allocation failure: order:4,
>> so it doesn't have enough memory to use these bounce buffers
>> anyway.
>
> Well, look at archives: driver failed completely when allocation failed.
>
>> I'm now feel it was the right thing to delete them.
>
> Which means I may have been geting benefit -- when it worked. I
> believe solution is to allocate at driver probing time.
>
> (OTOH ... SPI is slow compared to rest of the system, right? Where
> does the benefit come from?)

Do you mean what is the benefit of the bounce buffer? With SDMA, only a
single segment is transferred at a time - that can mean just a single page
i.e. 4k. But the buffer is a single segment so it should enable larger
transfer sizes (i.e. buffer size 64k) which performs better.

You need to compare performance with and without the bounce buffer
(particularly when memory is fragmented) to determine how much benefit you get.