并口、Legacy 与专用字符驱动
1. 并口打印
lp.c在parport Core之上创建/dev/lpN:
- claim/release port;
- 分块write;
- 检查busy/paper/error/select;
- wait或轮询;
- ioctl获取状态/超时。
打印机离线可让blocking write长时间等待。
2. PPDEV
ppdev.c创建/dev/parportN,让用户态执行并口协议:
- claim/release;
- data/control/status;
- direction;
- negotiate mode;
- IRQ等待;
- timeout。
它比直接I/O port安全一些,但仍允许控制物理引脚,应限制权限。
RK3588一般没有PC parport controller。
3. NVRAM
nvram.c暴露架构NVRAM操作。空间可能包含firmware/BIOS关键配置,写错会破坏启动。
RK3588通常使用EEPROM、OTP、RPMB或nvmem framework,不使用PC /dev/nvram。
4. HPET与MMTimer
hpet.c:HPET timer miscdevice和可选mmap;uv_mmtimer.c:SGI UV memory-mapped RTC。
Mmap硬件timer寄存器会扩大侧信道和MMIO风险,配置明确警告page可能包含其它寄存器。
RK3588使用ARM arch timer,不使用HPET。
5. Hangcheck
hangcheck-timer.c比较monotonic时间与预期timer间隔,判断系统是否长时间未调度,并可reboot。
它不是硬件watchdog:若CPU完全锁死到timer无法执行,可能无法采取动作。RK3588产品应使用硬件watchdog。
6. TTY Printk
ttyprintk.c提供/dev/ttyprintk,把用户写入转为printk。适合把早期/容器console消息并入kernel log。
不可信用户可制造日志洪泛和伪造内核风格消息,默认关闭合理。
7. APM Emulation
apm-emulation.c为ARM用户态提供旧APM接口兼容。现代系统使用sysfs、电源管理daemon和reboot/suspend syscall。
8. 平台历史驱动
顶层还包括:
- NetWinder温度、button和flash;
- Sony VAIO PI;
- Toshiba SMM;
- IBM Mwave modem;
- NatSemi GPIO;
- Applicom fieldbus;
- PS3 flash;
- POWER operator panel;
- SPARC ADI;
- telecom clock。
这些受严格architecture Kconfig限制。
9. Legacy Ioctl风险
老驱动常包含:
- 固定major/minor;
- packed user struct;
- raw I/O port;
- 大量自定义ioctl;
- 不完整compat ioctl;
- 缺少现代device-managed生命周期。
移植到64位ARM不能只解除Kconfig依赖,必须审计pointer size、endianness、alignment、DMA和并发。
10. 配置原则
RK3588量产内核应关闭无硬件对应的:
- PRINTER/PPDEV;
- HPET;
- NVRAM;
- PCMCIA legacy;
- x86 GPIO/PI;
- NetWinder/PS3/POWER/SPARC模块。
减少攻击面和镜像体积比保留“可能有用”更可靠。
正在加载留言…