On Sun, Sep 21, 2025 at 05:06:31PM +0530, Anshuman Khandual wrote:
On 18/09/25 1:24 AM, Luck, Tony wrote:
On Wed, Sep 17, 2025 at 12:32:47PM -0700, Jiaqi Yan wrote:
+1. Given /proc/sys/vm/enable_soft_offline is extensible, I would prefer a compact userspace API.
would create a new file, and the file has weird semantics such that it has no meaning when enable_soft_offline=0.
So the expand the bitmask idea from earlier in this thread?
Bit0 0 = soft offline disabled. 1 = Enabled (but see other bits) Bit1 0 = allow offline of 4K pages, 1 = suppress 4K offline Bit2 0 = allow offline of hugetlb, 1 = suppress hugetlb offline Bit3 0 = allow breakup of transparent huge pages to just offline 4K, 1 = suppress transparent breakup Bit4+ Reserved for suppressing other page types we invent in the future
Values 0 and 1 keep their original meaning.
Value 5 means: offline 4K, keep hugetlb, breakup transparent huge pages.
This disable bitmask (but when generally enabled via bit[0] = 1) method seems much better. But I am not sure about page size being a valid page type classification though. Just to start with, defining first two bits in this bitmask should be good enough, which will atleast help document and validate this new interface properly.
Bit1 0 = allow offline of hugetlb, 1 = suppress hugetlb offline Bit2 0 = allow breakup of transparent huge pages to just offline base pages, 1 = suppress transparent breakup Bit3+ Reserved for suppressing other page types we invent in the future
The current patch is already applied to mm-git and supports the following bits:
0 - Enable soft offline 1 - Disable soft offline for HugeTLB pages
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?h=mm-new...
Are any immediate changes needed?
Support for additional page types, such as transparent huge pages, can be added later as needed.
Thanks, Kyle Meyer