Re: POWER: Unexpected fault when writing to brk-allocated memory
From: Kirill A. Shutemov <hidden>
Date: 2017-11-08 08:30:44
Also in:
linux-arch, linux-mm, lkml
On Wed, Nov 08, 2017 at 03:56:06PM +1100, Michael Ellerman wrote:
"Aneesh Kumar K.V" [off-list ref] writes:quoted
quoted
If it is decided to keep these kind of heuristics, can we get just a small but reasonably precise description of each change to the interface and ways for using the new functionality, such that would be suitable for the man page? I couldn't fix powerpc because nothing matches and even Aneesh and you differ on some details (MAP_FIXED behaviour).I would consider MAP_FIXED as my mistake. We never discussed this explicitly and I kind of assumed it to behave the same way. ie, we search in lower address space (128TB) if the hint addr is below 128TB. IIUC we agree on the below. 1) MAP_FIXED allow the addr to be used, even if hint addr is below 128TB but hint_addr + len is > 128TB.So: mmap(0x7ffffffff000, 0x2000, ..., MAP_FIXED ...) = 0x7ffffffff000quoted
2) For everything else we search in < 128TB space if hint addr is below 128TBmmap((x < 128T), 0x1000, ...) = (y < 128T) ... mmap(0x7ffffffff000, 0x1000, ...) = 0x7ffffffff000 mmap(0x800000000000, 0x1000, ...) = 0x800000000000 ... mmap((x >= 128T), 0x1000, ...) = (y >= 128T)quoted
3) We don't switch to large address space if hint_addr + len > 128TB. The decision to switch to large address space is primarily based on hint addrBut does the mmap succeed in that case or not? ie: mmap(0x7ffffffff000, 0x2000, ...) = ?
It does, but resulting address doesn't match the hint. It's somewhere below 47-bit border. -- Kirill A. Shutemov