Skip to content
  • Konstantin Belousov's avatar
    Make MAXPHYS tunable. Bump MAXPHYS to 1M. · cd853791
    Konstantin Belousov authored
    Replace MAXPHYS by runtime variable maxphys. It is initialized from
    MAXPHYS by default, but can be also adjusted with the tunable kern.maxphys.
    
    Make b_pages[] array in struct buf flexible.  Size b_pages[] for buffer
    cache buffers exactly to atop(maxbcachebuf) (currently it is sized to
    atop(MAXPHYS)), and b_pages[] for pbufs is sized to atop(maxphys) + 1.
    The +1 for pbufs allow several pbuf consumers, among them vmapbuf(),
    to use unaligned buffers still sized to maxphys, esp. when such
    buffers come from userspace (*).  Overall, we save significant amount
    of otherwise wasted memory in b_pages[] for buffer cache buffers,
    while bumping MAXPHYS to desired high value.
    
    Eliminate all direct uses of the MAXPHYS constant in kernel and driver
    sources, except a place which initialize maxphys.  Some random (and
    arguably weird) uses of MAXPHYS, e.g. in linuxolator, are converted
    straight.  Some drivers, which use MAXPHYS to size embeded structures,
    get private MAXPHYS-like constant; their convertion is out of scope
    for this work.
    
    Changes to cam/, dev/ahci, dev/ata, dev/mpr, dev/mpt, dev/mvs,
    dev/siis, where either submitted by, or based on changes by mav.
    
    Suggested by: mav (*)
    Reviewed by:	imp, mav, imp, mckusick, scottl (intermediate versions)
    Tested by:	pho
    Sponsored by:	The FreeBSD Foundation
    Differential revision:	https://reviews.freebsd.org/D27225
    cd853791