CVSROOT: /cvs Module name: src Changes by: u...@cvs.openbsd.org 2015/10/18 14:24:10
Modified files: sys/dev/pci : pciide.c Log message: The change of 5.7's sys/arch/i386/i386/bus_space.c and sys/arch/i386/include/bus.h invokes the kernel crash at boot when ignored (disabled) channel is detected. In all ATA controllers, ignored (disabled) channel is still set cp->hwok = 1. And pciide_mapregs_native() is not called, wdc_cp->cmd_iot is 0. 5.6 and before, cmd_iot = 0 is treated as I386_BUS_SPACE_IO, so there is no problem to call bus_space_read_1() in wdcintr(). 5.7 and after, cmd_iot is used as function pointer. We have to initialize it with pciide_mapregs_native() or something, otherwise set cp->hwok = 0 to prevent calling wdcintr(). When ignored (disabled) channel is found, default_chip_map() should set cp->hwok = 0. So all controllers do same thing. ok by deraadt@