From: Olaf Hering The last change for partport_pc did fix the common case for all PowerMacs, but it broke the case for PCI multiport IO cards. In fact, the config option CONFIG_PARPORT_PC_SUPERIO=y lead to a hard crash when cups probed the parport driver. It enables the winbond and smsc probing. Remove the PARPORT_BASE check again, parport_pc_find_nonpci_ports() will take care of it. All powerpc configs should have CONFIG_PARPORT_PC_SUPERIO=n, the code did not find anything on the chrp boards we tested it on. Tested on a G4/466 with a PCI card: 0001:10:13.0 Serial controller: Timedia Technology Co Ltd PCI2S550 (Dual 16550 UART) (rev 01) (prog-if 02 [16550]) Subsystem: Timedia Technology Co Ltd Unknown device 5079 Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Adam Belay Cc: Dmitry Torokhov Signed-off-by: Andrew Morton --- arch/powerpc/platforms/pseries/setup.c | 6 ------ drivers/parport/parport_pc.c | 4 ---- include/asm-powerpc/io.h | 1 - 3 files changed, 11 deletions(-) diff -puN arch/powerpc/platforms/pseries/setup.c~restore-parport_pc-probing-on-powermac arch/powerpc/platforms/pseries/setup.c --- a/arch/powerpc/platforms/pseries/setup.c~restore-parport_pc-probing-on-powermac +++ a/arch/powerpc/platforms/pseries/setup.c @@ -415,12 +415,6 @@ static int pSeries_check_legacy_ioport(u return -ENODEV; of_node_put(np); break; - case PARALLEL_BASE: - np = of_find_node_by_type(NULL, "parallel"); - if (np == NULL) - return -ENODEV; - of_node_put(np); - break; } return 0; } diff -puN drivers/parport/parport_pc.c~restore-parport_pc-probing-on-powermac drivers/parport/parport_pc.c --- a/drivers/parport/parport_pc.c~restore-parport_pc-probing-on-powermac +++ a/drivers/parport/parport_pc.c @@ -3374,10 +3374,6 @@ __setup("parport_init_mode=",parport_ini static int __init parport_pc_init(void) { -#if defined(CONFIG_PPC_MERGE) - if (check_legacy_ioport(PARALLEL_BASE)) - return -ENODEV; -#endif if (parse_parport_params()) return -EINVAL; diff -puN include/asm-powerpc/io.h~restore-parport_pc-probing-on-powermac include/asm-powerpc/io.h --- a/include/asm-powerpc/io.h~restore-parport_pc-probing-on-powermac +++ a/include/asm-powerpc/io.h @@ -11,7 +11,6 @@ /* Check of existence of legacy devices */ extern int check_legacy_ioport(unsigned long base_port); -#define PARALLEL_BASE 0x378 #define PNPBIOS_BASE 0xf000 /* only relevant for PReP */ #ifndef CONFIG_PPC64 _