Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Aug 2008 10:24:25 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-arch@freebsd.org
Cc:        Nathan Whitehorn <nwhitehorn@freebsd.org>
Subject:   Re: UMA MD Small Allocator Runtime Switching
Message-ID:  <200808051024.27043.jhb@freebsd.org>
In-Reply-To: <48981C19.8060009@freebsd.org>
References:  <48981C19.8060009@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 05 August 2008 05:23:37 am Nathan Whitehorn wrote:
> I'm working on the PowerPC G5 port right now, and have run into a 
> problem with the way the UMA small allocator works. On G3/G4 systems, 
> there is a direct physical->virtual mapping, and on G5s there isn't. All 
> of the infrastructure is in place to support both types of system with a 
> single kernel image, except that UMA_MD_SMALL_ALLOC must be switched 
> on/off at runtime.
> 
> One solution is to put if (direct_map) use_nonsmall_case() into the MD 
> small_alloc/free() routines and define UMA_MD_SMALL_ALLOC everywhere. 
> This works well, except that the MI UMA code then sets booted = 1 too 
> early in the boot process, before the kmem_alloc*() routines are available.
> 
> Basically, I need to find a way have an MD UMA allocator without the MI 
> UMA code assuming anything about how it works internally. Maybe adding a 
> UMA_MD_ALLOC_LATE define to prevent setting booted=1 early on?
> -Nathan

Have you considered creating an artificial direct map region in the address 
space on the G5?  Some of the other 64-bit ports (amd64 and sparc64) do this 
to gain the benefits of the direct map even though it isn't a mandated part 
of the architecture like it is on some other platforms (alpha and mips).

-- 
John Baldwin



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