From owner-freebsd-arm@FreeBSD.ORG Fri Dec 19 18:30:40 2008 Return-Path: Delivered-To: arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 231AD106564A; Fri, 19 Dec 2008 18:30:40 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from asmtpout018.mac.com (asmtpout018.mac.com [17.148.16.93]) by mx1.freebsd.org (Postfix) with ESMTP id 118498FC1E; Fri, 19 Dec 2008 18:30:40 +0000 (UTC) (envelope-from xcllnt@mac.com) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Received: from mdenny-t60.jnpr.net (natint3.juniper.net [66.129.224.36]) by asmtp018.mac.com (Sun Java(tm) System Messaging Server 6.3-7.03 (built Aug 7 2008; 32bit)) with ESMTPSA id <0KC400I0UWMYEW90@asmtp018.mac.com>; Fri, 19 Dec 2008 09:30:34 -0800 (PST) Message-id: From: Marcel Moolenaar To: Grzegorz Bernacki In-reply-to: <494BAA90.7000801@semihalf.com> Date: Fri, 19 Dec 2008 09:30:33 -0800 References: <494BAA90.7000801@semihalf.com> X-Mailer: Apple Mail (2.930.3) Cc: arm@freebsd.org, embedded@freebsd.org Subject: Re: Multiple virtual mappings considered harmful on ARM X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Dec 2008 18:30:40 -0000 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