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>