HomeFreeBSD

mbuf: Only allow extpg mbufs if the system has a direct map

Description

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
Sponsored by: The FreeBSD Foundation

(cherry picked from commit fcaa890c4469118255d463495b4044eef484fa3e)

Details

Provenance
markjAuthored on Nov 16 2021, 6:31 PM
Parents
rG5c50e93e6ce4: ext2fs: check for eh_depth in ext4_ext_check_header()
Branches
Unknown
Tags
Unknown