diff -uNr linux-2.5.69/arch/i386/kernel/i8259.c linux-2.5.69.i8259_shutdown/arch/i386/kernel/i8259.c --- linux-2.5.69/arch/i386/kernel/i8259.c Sun May 11 09:09:25 2003 +++ linux-2.5.69.i8259_shutdown/arch/i386/kernel/i8259.c Sun May 11 17:26:20 2003 @@ -245,10 +245,21 @@ return 0; } +static void i8259A_shutdown(struct device *dev) +{ + /* Put the i8259A into a quiescent state that + * the kernel initialization code can get it + * out of. + */ + outb(0xff, 0x21); /* mask all of 8259A-1 */ + outb(0xff, 0xA1); /* mask all of 8259A-1 */ +} + static struct device_driver i8259A_driver = { .name = "pic", .bus = &system_bus_type, .resume = i8259A_resume, + .shutdown = i8259A_shutdown, }; static struct sys_device device_i8259A = {