On 2012-06-12 07:12, Andreas Färber wrote:
> This looks fishy to me... why should the kernel use a bigger address
> space than hardware? For arm on x86_64 such a workaround was not
> necessary iirc.

I can tell you what I observe.  That with a certain sequence of
allocations the x86_64 kernel will quit accepting an address "near"
(1<<38) as a hint for where to allocate memory and begin returning
an addresses near (1<<48).  Further, the logic in find_mmap_vma tries
about 5 times (with different hints) to get a target-page-aligned
address at a lower address, all of which fail: the kernel continues
to return the (1<<48) address.  At which point one wonders why we 
should keep refusing the (1<<48) address when the target is in fact
64-bit capable.

I believe the host vs target page size difference plays a part in
this, which is why you wouldn't see this on arm.

All of the other targets with page size larger than 4k are 64 bit,
and set TARGET_VIRT_ADDR_SPACE_BITS to 64.  So Alpha was unique in
being an 8k page size with T_B_A_S_B < 48, and so probably unique
in being able to tickle this problem.


r~

Reply via email to