Ah, I think I found it ! Try this and tell me if IDE still hangs:
--- 1.56/drivers/ide/ppc/pmac.c Wed Apr 23 15:59:55 2003 +++ edited/drivers/ide/ppc/pmac.c Sun Apr 27 19:04:11 2003 @@ -941,7 +941,7 @@ struct device_node *np; int i; struct device_node *atas = NULL; - struct device_node *p, **pp, *removables, **rp; + struct device_node *p, *nextp, **pp, *removables, **rp; unsigned long base, regbase; int irq; ide_hwif_t *hwif; @@ -959,7 +959,8 @@ p = find_type_devices("ata"); /* Move removable devices such as the media-bay CDROM on the PB3400 to the end of the list. */ - for (; p != NULL; p = p->next) { + for (; p != NULL; p = nextp) { + nextp = p->next; if (p->parent && p->parent->type && strcasecmp(p->parent->type, "media-bay") == 0) { *rp = p;