Re: easy way to work around a lack of a direct map on i386

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Fri, 31 Jan 2020 01:37:34 +0200
On Thu, Jan 30, 2020 at 11:23:02PM +0000, Rick Macklem wrote:
> Hi,
> 
> The current code for KERN_TLS uses PHYS_TO_DMAP()
> to access unmapped external pages on m_ext.ext_pgs
> mbufs.
> I also need to do this to implement RPC-over-TLS.
> 
> The problem is that some arches, like i386, don't
> support PHYS_TO_DMAP().
> 
> Since it appears that there will be at most 4 pages on
> one of these mbufs, my thinking was...
> - Acquire four pages of kva from the kernel_map during
>   booting.
> - Then just use pmap_qenter() to fill in the physical page
>   mappings for long enough to copy the data.
> 
> Does this sound reasonable?
> Is there a better way?

Use sfbufs, they should work on all arches.  In essence, they provide MI
interface to DMAP where possible.  I do not remember did I bumped the
limit for i386 after 4/4 went in.

There is currently no limits for sfbufs use per subsystem, but I think it
is not very likely to cause too much troubles.  Main rule is to not sleep
waiting for more sfbufs if you already own one..
Received on Thu Jan 30 2020 - 22:37:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:22 UTC