Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Dec 2012 10:27:20 +0100
From:      Andre Oppermann <andre@freebsd.org>
To:        Oleksandr Tymoshenko <gonzo@bluezbox.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Alan Cox <alc@rice.edu>
Subject:   Re: svn commit: r243631 - in head/sys: kern sys
Message-ID:  <50D036F8.1000406@freebsd.org>
In-Reply-To: <330405A1-312A-45A5-BB86-4969478D8BBD@bluezbox.com>
References:  <201211272119.qARLJxXV061083@svn.freebsd.org> <ABB3E29B-91F3-4C25-8FAB-869BBD7459E1@bluezbox.com> <50C1BC90.90106@freebsd.org> <50C25A27.4060007@bluezbox.com> <50C26331.6030504@freebsd.org> <50C26AE9.4020600@bluezbox.com> <50C3A3D3.9000804@freebsd.org> <50C3AF72.4010902@rice.edu> <330405A1-312A-45A5-BB86-4969478D8BBD@bluezbox.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 18.12.2012 06:40, Oleksandr Tymoshenko wrote:
>
> On 2012-12-08, at 1:21 PM, Alan Cox <alc@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50D036F8.1000406>