]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
mbuf: Only allow extpg mbufs if the system has a direct map
authorMark Johnston <markj@FreeBSD.org>
Tue, 16 Nov 2021 18:31:04 +0000 (13:31 -0500)
committerMark Johnston <markj@FreeBSD.org>
Tue, 16 Nov 2021 18:31:04 +0000 (13:31 -0500)
commitfcaa890c4469118255d463495b4044eef484fa3e
tree2af18c574f81fe100e0d0d0c978b287c3afbcf95
parent42188bb5c118f456af0606a2ce6ae26378716415
mbuf: Only allow extpg mbufs if the system has a direct map

Some upcoming changes will modify software checksum routines like
in_cksum() to operate using m_apply(), which uses the direct map to
access packet data for unmapped mbufs.  This approach of course does not
work on platforms without a direct map, so we have to disallow the use
of unmapped mbufs on such platforms.

I believe this is the right tradeoff: we only configure KTLS on amd64
and arm64 today (and one KTLS consumer, NFS TLS, requires a direct map
already), and the use of unmapped mbufs with plain sendfile is a recent
optimization.  If need be, m_apply() could be modified to create
CPU-private mappings of extpg mbuf pages as a fallback.

So, change mb_use_ext_pgs to be hard-wired to zero on systems without a
direct map.  Note that PMAP_HAS_DMAP is not a compile-time constant on
some systems, so the default value of mb_use_ext_pgs has to be
determined during boot.

Reviewed by: jhb
Discussed with: gallatin
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32940
sys/kern/kern_mbuf.c
sys/rpc/rpcsec_tls/rpctls_impl.c