v1
2026-09-07
s390/cio: replace page allocator calls with k[mz]alloc() · v1
原始补丁链接
子 Patch(13)
1/13
s390/chsc: Use kzalloc() for CUBs
cub_alloc() 分配 CUB/扩展 CUB 改用 kzalloc()/kfree(),替代 get_zeroed_page()/free_page() 的整页分配,移除 cast,API/释放路径更简洁,性能相当。
2/13
s390/chsc: Use kzalloc() for the SEI work area
chsc_init() 的 SEI work area 改用 kzalloc()/kfree() 替代 get_zeroed_page()/free_page(),不再整页分配与显式转换,释放处理更简洁。
3/13
s390/chsc_sch: Use kzalloc() for CHSC requests
s390 CHSC ioctl 的请求/响应缓冲改由 kzalloc()/kfree() 分配释放,替代 get_zeroed_page()/free_page(),减少整页分配和类型转换,错误路径更简洁。
4/13
s390/chsc_sch: Use __free(kfree) for synchronous CHSC requests
同步 CHSC ioctl 的本地请求缓冲改用 __free(kfree) 自动释放,删除 cleanup label、改为提前 return;异步与关闭路径保持不变。
5/13
s390/cio: Use kzalloc() for CHSC work areas
chsc_init() 和 qdio_allocate() 的 CHSC work area 改用 kzalloc()/kfree(),qdio_irq.chsc_page 改为 void*,替代整页分配、消除强制转换。
6/13
s390/cmf: Use kmalloc() for the CMB area
alloc_cmb() 的 CMB 区域改用 kmalloc()/kfree() 替代 __get_free_pages()/free_pages();CMB 要求页对齐,2 次幂大小的 kmalloc 能保证,释放不需 order。
7/13
s390/idals: Use kmalloc() for IDAL data buffers
idal_buffer_alloc() 的 IDAL 数据块改由 kmalloc()/kfree() 分配释放,替代 __get_free_pages()/free_pages(),不再直接用 page allocator,释放也更自然。
8/13
s390/qdio_main: Use kzalloc() for the IRQ structure
qdio_allocate() 的 QDIO IRQ 结构体改用 kzalloc()/kfree() 替代 get_zeroed_page()/free_page(),去掉整页分配与类型转换,释放简洁。
9/13
s390/qdio_main: Use kzalloc() for the QDR
qdio_allocate() 分配 QDR 时改由 kzalloc()/kfree() 管理,替代 get_zeroed_page()/free_page(),避免整页分配和强制类型转换。
10/13
s390/qdio_setup: Use kzalloc() for QDIO buffers
qdio_alloc_buffers() 的 QDIO buffers 改用 kzalloc()/kfree() 替代 get_zeroed_page()/free_page(),释放不再依赖整页语义,代码更简洁。
11/13
s390/qdio_setup: Use kzalloc() for the storage list
__qdio_allocate_qs() 的 storage list 信息块改用 kzalloc()/kfree() 替代 __get_free_page()/free_page(),避免整页分配,简化释放。
12/13
s390/qdio_setup: Use kzalloc() for the SSQD request
qdio_setup_get_ssqd() 的 SSQD CHSC 请求块改用 kzalloc()/kfree() 替代 __get_free_page()/free_page(),只分配所需大小并自动释放。
13/13
s390/scm: Use kmalloc() for SCM information
scm_update_information() 的 CHSC SCM 响应缓冲改用 kmalloc(),并用 __free(kfree) 自动管理释放,替代 __get_free_page()/free_page(),降低错误路径泄漏风险。