Bug 6377

Summary: highmem support with preempt-rt for powerpc
Product: [Yocto Project Subprojects] Kernel Reporter: Vasudevan <inbox.vasu>
Component: kernel-configurationAssignee: Bruce Ashfield <bruce.ashfield>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: Undecided CC: yp.kernel.watcher, yp.watcher
Version: 2.0   
Target Milestone: ---   
Hardware: Other   
OS: ppc   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Don't know

Description Vasudevan 2014-05-28 09:46:30 UTC
Hi

We are running linux kernel-3.4 on a powerpc based platform(LSI AXM3500). The system has 4GB of RAM. The kernel is supposed to run in RT-Preempt mode, and also need to enable HIGHMEM support in kernel configuration to be able to use all the available 4GB RAM.

It seems that the RT-Preempt &  HIGHMEM option cannot be enabled together. This restricts our platform to use only 1GB, if we run preempt-rt enabled. 

Can someone clarify how preempt RT & Highmem are related ?  Is there a solution/patch available to enable preempt RT & Highmem both for powerpc?

-Vasu
Comment 1 Bruce Ashfield 2014-05-28 14:58:03 UTC
HIGHMEM has periodically been a problem for preempt-rt, due to the locking
semantics in the allocator, kmap_atomic and a number of migration issues.

While it was sometimes enabled on pre 3.0-rt kernel's, it caused issues when
used under load.

I'm sure you've seen the mailing list posts on the topic, but I'll reference a few
here, just for completeness sake.

HIGHMEM was disabled for all architectures in the 3.0-rt release, due to the 
hacked implementation and the amount of runtime issues it was causing, 
this thread has the details: https://lkml.org/lkml/2011/7/27/428

It stayed disabled for all architectures until the 3.6-rt release, where it was
re-enabled for ARM and x86 due to some fixes in the impacted code: https://lkml.org/lkml/2013/2/4/377

There have been other discussions specifically about preempt-rt, powerpc and
highmem: http://marc.info/?l=linux-rt-users&m=134271352628041&w=3, with
no resolution to the issues in sight. Only doing a different high/low mem split has
currently been offered as a workaround.

There are better chances to get this working in the latest 3.10 or 3.14 -rt releases,
but I don't know of any  active development to get it working for ppc32, but there
of course is a reference in the ARM and x86 changes.