FreeBSD cache memory allocation

icantthinkofone icantthinkofone at
Wed Nov 14 10:21:41 PST 2007

Heiko Wundram (Beenic) wrote:
> Am Mittwoch, 14. November 2007 17:04:37 schrieb icantthinkofone:
>> Ivan Voras wrote:
>>> icantthinkofone wrote:
>>>> Someone I can't stand said this about FreeBSD.  Though I know C, I don't
>>>> know anything about it and would love to respond.
>>>> [QUOTE]The kernel is really lacking some features. They need a method to
>>>> set precise type of memory cache but BSD doesn't provide way to specify
>>>> memory cache.
>>>> For that reason MS has the beautiful
>>>> MmAllocateContigousMemorySpecifyCache()[/QUOTE]
>>> Well, I know there's contigmalloc(9) in FreeBSD but you will get a
>>> better answer if you ask this question on freebsd-hackers at .
>> That's what I thought but not sure if they were equivalent.
>> I'm not signed up over there but I will now.  Thanks.
> That's not entirely true. MmAllocateContiguousMemorySpecifyCache does 
> something that's currently not (easily) possible with FreeBSD, namely set up 
> an MTRR entry (i.e. a specific caching state) specifically for the portion of 
> contiguous memory being allocated (normally, the driver wants to set the 
> memory to uncached if using this call).
> This is something that the NVIDIA driver development guys have wanted to have 
> for a long time (for performance reasons) in the FreeBSD kernel, and there's 
> someone developing a patch to implement this (AFAICT from reading some 
> websites), but it doesn't seem like it's finished so far.
> Read up on the NVIDIA requirements to develop an accelerated graphics driver 
> on AMD64 to get more details on this (there's a "workaround" on i386, but 
> that depends on the specific system's pre-setup MTRR records from the BIOS; 
> this one of the reasons there's an accelerated graphics driver for i386 and 
> not for AMD64).
I thought that might be the case.  (I did ask about this on 'hackers'). 
Is it possible Nvidia is trying to make FreeBSD work like Windows, in a 
sense?  iow, they used this function in their driver and now everyone 
has to use it?  Or is this really a fault of FreeBSD?

More information about the freebsd-questions mailing list