Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Dec 2008 09:30:33 -0800
From:      Marcel Moolenaar <xcllnt@mac.com>
To:        Grzegorz Bernacki <gjb@semihalf.com>
Cc:        arm@freebsd.org, embedded@freebsd.org
Subject:   Re: Multiple virtual mappings considered harmful on ARM
Message-ID:  <D7878EEF-511A-43EF-AE2B-9465C9301674@mac.com>
In-Reply-To: <494BAA90.7000801@semihalf.com>
References:  <494BAA90.7000801@semihalf.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Dec 19, 2008, at 6:07 AM, Grzegorz Bernacki wrote:

> 2. Root cause.
> The root cause of the problem is additional virtual mapping of read/ 
> write
> buffers at cluster read/write (sys/kern/vfs_cluster.c,  
> cluster_rbuild(),
> cluster_wbuild(). Buffers for sequential read/write operation are  
> concatenated
> and sent to device as one big buffer. Concatenation of buffers uses
> pmap_qenter(), which puts *additional* mapping in the KVA for  
> physical area
> already mapped. For each buffer we extract pages it contains and  
> then all the
> pages from all the buffers are mapped into new virtual address of  
> new buffer.
> So we end up with at least two virtual addresses for each page.

Could this also affect I-cache coherency by virtue of not
flushing the D-cache properly before synchronizing the
I-cache, as you mention reading?

-- 
Marcel Moolenaar
xcllnt@mac.com






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D7878EEF-511A-43EF-AE2B-9465C9301674>