Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 May 2011 23:45:18 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Luigi Rizzo <rizzo@iet.unipi.it>
Cc:        current@freebsd.org
Subject:   Re: "lazy" mmap for a device driver ?
Message-ID:  <20110531204518.GX48734@deviant.kiev.zoral.com.ua>
In-Reply-To: <20110531202142.GA7105@onelab2.iet.unipi.it>
References:  <20110531202142.GA7105@onelab2.iet.unipi.it>

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

--OkGsJQGtcVL5ZVbY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, May 31, 2011 at 10:21:42PM +0200, Luigi Rizzo wrote:
> hi,
> i have a kernel module implementing a memory mapped special device
> which exports a large block of memory to the process.
> I see that when the process calls mmap(), my routine foo_mmap()
> is called immediately once per page, even though the process is
> not actually touching the pages. I believe this happens
> through dev_pager_alloc().
>=20
> Right now i can live with that because all the memory is allocated
> at module load time, but i might want to have a sparse memory
> region which is populated dynamically, so i was wondering if
> there is a way to achieve this. I see there are two other
> device routines, d_mmap2 and d_mmap_single, any pointer to
> documentation or comments on how they differ ?

During the porting of GEM to our kernel, I had to make a device
pager interface more flexible. In particular, the updated pager allows
the device to handle individual faults and return an explicit
page to satisfy the fault, instead of the physical address.

More, the driver can do any appropriate setup by ctr method.
The new interface is supposed to be used with d_mmap_single().

http://people.freebsd.org/~kib/misc/device_pager.2.patch

--OkGsJQGtcVL5ZVbY
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEARECAAYFAk3lU14ACgkQC3+MBN1Mb4hTmQCeIGrYXrb4zPG3zCucFqYg4l8/
5KgAmwbc0cbg0vMlQqJ2r4yybRIcX5Su
=tk7A
-----END PGP SIGNATURE-----

--OkGsJQGtcVL5ZVbY--



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