mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:38:03 +00:00
m68k: amiga: Turn off Warp1260 interrupts during boot
On an Amiga 1200 equipped with a Warp1260 accelerator, an interrupt storm coming from the accelerator board causes the machine to crash in local_irq_enable() or auto_irq_enable(). Disabling interrupts for the Warp1260 in amiga_parse_bootinfo() fixes the problem. Link: https://lore.kernel.org/r/ZkjwzVwYeQtyAPrL@amaterasu.local Cc: stable <stable@kernel.org> Signed-off-by: Paolo Pisati <p.pisati@gmail.com> Reviewed-by: Michael Schmitz <schmitzmic@gmail.com> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Link: https://lore.kernel.org/r/20240601153254.186225-1-p.pisati@gmail.com Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
parent
1613e604df
commit
1d8491d3e7
@ -180,6 +180,15 @@ int __init amiga_parse_bootinfo(const struct bi_record *record)
|
|||||||
dev->slotsize = be16_to_cpu(cd->cd_SlotSize);
|
dev->slotsize = be16_to_cpu(cd->cd_SlotSize);
|
||||||
dev->boardaddr = be32_to_cpu(cd->cd_BoardAddr);
|
dev->boardaddr = be32_to_cpu(cd->cd_BoardAddr);
|
||||||
dev->boardsize = be32_to_cpu(cd->cd_BoardSize);
|
dev->boardsize = be32_to_cpu(cd->cd_BoardSize);
|
||||||
|
|
||||||
|
/* CS-LAB Warp 1260 workaround */
|
||||||
|
if (be16_to_cpu(dev->rom.er_Manufacturer) == ZORRO_MANUF(ZORRO_PROD_CSLAB_WARP_1260) &&
|
||||||
|
dev->rom.er_Product == ZORRO_PROD(ZORRO_PROD_CSLAB_WARP_1260)) {
|
||||||
|
|
||||||
|
/* turn off all interrupts */
|
||||||
|
pr_info("Warp 1260 card detected: applying interrupt storm workaround\n");
|
||||||
|
*(uint32_t *)(dev->boardaddr + 0x1000) = 0xfff;
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
pr_warn("amiga_parse_bootinfo: too many AutoConfig devices\n");
|
pr_warn("amiga_parse_bootinfo: too many AutoConfig devices\n");
|
||||||
#endif /* CONFIG_ZORRO */
|
#endif /* CONFIG_ZORRO */
|
||||||
|
@ -449,6 +449,9 @@
|
|||||||
#define ZORRO_PROD_VMC_ISDN_BLASTER_Z2 ZORRO_ID(VMC, 0x01, 0)
|
#define ZORRO_PROD_VMC_ISDN_BLASTER_Z2 ZORRO_ID(VMC, 0x01, 0)
|
||||||
#define ZORRO_PROD_VMC_HYPERCOM_4 ZORRO_ID(VMC, 0x02, 0)
|
#define ZORRO_PROD_VMC_HYPERCOM_4 ZORRO_ID(VMC, 0x02, 0)
|
||||||
|
|
||||||
|
#define ZORRO_MANUF_CSLAB 0x1400
|
||||||
|
#define ZORRO_PROD_CSLAB_WARP_1260 ZORRO_ID(CSLAB, 0x65, 0)
|
||||||
|
|
||||||
#define ZORRO_MANUF_INFORMATION 0x157C
|
#define ZORRO_MANUF_INFORMATION 0x157C
|
||||||
#define ZORRO_PROD_INFORMATION_ISDN_ENGINE_I ZORRO_ID(INFORMATION, 0x64, 0)
|
#define ZORRO_PROD_INFORMATION_ISDN_ENGINE_I ZORRO_ID(INFORMATION, 0x64, 0)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user