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 |
||
---|---|---|
.. | ||
scil | ||
environment.h | ||
isci_controller.c | ||
isci_domain.c | ||
isci_interrupt.c | ||
isci_io_request.c | ||
isci_logger.c | ||
isci_oem_parameters.c | ||
isci_remote_device.c | ||
isci_sysctl.c | ||
isci_task_request.c | ||
isci_timer.c | ||
isci.c | ||
isci.h | ||
README | ||
sci_environment.h | ||
types.h |
FreeBSD Driver for Intel(R) C600 SAS Controller =============================================== This driver has been developed for use with FreeBSD, version 9.0 and later. This driver uses an OS-agnostic abstraction layer library named SCIL that is published by Intel specifically for the C600 SAS controller. The SAS controller has no firmware, so the driver is extensive and using SCIL minimizes the development and maintenance cost of the driver. The FreeBSD implementation files are in the isci directory, and SCIL files are in the isci/scil subdirectory. As Intel publishes new versions of SCIL (to add features or fix bugs), the isci/scil subdirectory will be updated appropriately.