svn commit: r243631 - in head/sys: kern sys

Andre Oppermann andre at freebsd.org
Tue Dec 18 09:27:28 UTC 2012


On 18.12.2012 06:40, Oleksandr Tymoshenko wrote:
>
> On 2012-12-08, at 1:21 PM, Alan Cox <alc at rice.edu> wrote:
>
>> On 12/08/2012 14:32, Andre Oppermann wrote:
>>>>
>
> .. skipped ..
>
>>>
>>> The trouble seems to come from NSFBUFS which is (512 + maxusers * 16)
>>> resulting in a kernel map of (512 + 400 * 16) * PAGE_SIZE = 27MB.  This
>>> seem to be pushing it with the smaller ARM kmap layout.
>>>
>>> Does it boot and run when you set the tunable kern.ipc.nsfbufs=3500?
>>>
>>> ARM does have a direct map mode as well which doesn't require the
>>> allocation
>>> of sfbufs.  I'm not sure which other problems that approach has.
>>>
>>
>>
>> Only a few (3?) platforms use it.  It reduces the size of the user
>> address space, and translation between physical addresses and direct map
>> addresses is not computationally trivial as it is on other
>> architectures, e.g., amd64, ia64.  However, it does try to use large
>> page mappings.
>>
>>
>>> Hopefully alc@ (added to cc) can answer that and also why the kmap of
>>> 27MB
>>> manages to wrench the ARM kernel.
>>>
>>
>>
>> Arm does not define caps on either the buffer map size (param.h) or the
>> kmem map size (vmparam.h).  It would probably make sense to copy these
>> definitions from i386.
>
>
> Adding caps didn't help. I did some digging and found out that although address range
> 0xc0000000 .. 0xffffffff is indeed valid for ARM in general actual KVA space varies for
> each specific hardware platform. This "real" KVA is defined by <virtual_avail, virtual_end>
> pair and ifI use them instead of <VM_MIN_KERNEL_ADDRESS, VM_MAX_KERNEL_ADDRESS>
> in init_param2 function my pandaboard successfully boots. Since former pair is used for defining
> kernel_map boundaries I believe it should be used for auto tuning as well.

OK.  Thank you for debugging this on ARM.  I'll adjust the auto-tuning
code accordingly.

-- 
Andre



More information about the svn-src-head mailing list