remove block layer bounce buffering

Christoph Hellwig
2025-05-02T06:49:36Z

Hi all,

the block layer bounce buffering from the early days of highmem keeps
being a wart in the block layer despite usage by only four drivers,
all through the SCSI layer. One of them is an old PIO-only ISA
card, two are parallel port adapters, and the fourth is the usb-storage
driver.

This series makes the first three depend on !HIGHMEM and for the fourth
rejects the probe only when used on highmem system and the HCD is one
of the few annoying one that does not support DMA.

This is not the most pretty way to do things, but none of the driver
maintainers stepped up to convert them to properly kmapping buffers
before doing PIO or MMIO operations it does shift the burden to these
drivers and might get them to actually move that way if there are any
users of the drivers, or in case of usb-storage configurations left.

A nice benefit is that we remove the per-numa node stat used for the
number of bounce buffer operations.

Diffstat:
b/arch/mips/configs/gcw0_defconfig | 1
b/block/Makefile | 1
b/block/blk-map.c | 5
b/block/blk-mq.c | 2
b/block/blk-settings.c | 5
b/block/blk.h | 17 --
b/drivers/base/node.c | 2
b/drivers/scsi/Kconfig | 3
b/drivers/scsi/aha152x.c | 1
b/drivers/scsi/imm.c | 1
b/drivers/scsi/ppa.c | 1
b/drivers/scsi/scsi_lib.c | 3
b/drivers/usb/storage/usb.c | 14 +
b/fs/proc/meminfo.c | 3
b/include/linux/blk_types.h | 1
b/include/linux/blkdev.h | 5
b/include/linux/mmzone.h | 1
b/include/scsi/scsi_host.h | 2
b/include/trace/events/block.h | 15 --
b/include/uapi/linux/blktrace_api.h | 2
b/kernel/trace/blktrace.c | 9 -
b/mm/show_mem.c | 4
block/bounce.c | 267 ------------------------------------
23 files changed, 19 insertions(+), 346 deletions(-)