Re: [BUG] Devices breaking due to CONFIG_ZONE_DEVICE

From: Dan Williams
Date: Sat Jan 23 2016 - 01:15:36 EST


On Fri, Jan 22, 2016 at 9:47 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote:
> On Fri, Jan 22, 2016 at 8:46 PM, Sudip Mukherjee
> <sudipm.mukherjee@xxxxxxxxx> wrote:
>> Hi All,
>> Commit 033fbae988fc ("mm: ZONE_DEVICE for "device memory"") has
>> introduced CONFIG_ZONE_DEVICE while sacrificing CONFIG_ZONE_DMA.
>> Distributions like Ubuntu has started enabling CONFIG_ZONE_DEVICE and
>> thus breaking parallel port. Please have a look at
>> https://bugzilla.kernel.org/show_bug.cgi?id=110931 for the bug report.
>>
>> Apart from parallel port I can see some sound drivers will also break.
>>
>> Now what is the possible solution for this?
>
> The tradeoff here is enabling direct-I/O for persistent memory vs
> support for legacy devices.
>
> One possible solution is to alias ZONE_DMA and ZONE_DEVICE. At early
> boot if pmem is detected disable these legacy devices, or the reverse
> disable DMA to persistent memory if a legacy device is detected. The
> latter is a bit harder to do as I think we would want to make the
> decision early during memory init before we would know if any parallel
> ports or ISA sound cards are present.

...another option that might be cleaner is to teach GFP_DMA to get
memory from a different mechanism. I.e. don't use the mm-zone
infrastructure to organize that small 16MB pool of memory.