Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 1d8491d

Browse files
piso77geertu
authored andcommitted
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>
1 parent 1613e60 commit 1d8491d

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

arch/m68k/amiga/config.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,15 @@ int __init amiga_parse_bootinfo(const struct bi_record *record)
180180
dev->slotsize = be16_to_cpu(cd->cd_SlotSize);
181181
dev->boardaddr = be32_to_cpu(cd->cd_BoardAddr);
182182
dev->boardsize = be32_to_cpu(cd->cd_BoardSize);
183+
184+
/* CS-LAB Warp 1260 workaround */
185+
if (be16_to_cpu(dev->rom.er_Manufacturer) == ZORRO_MANUF(ZORRO_PROD_CSLAB_WARP_1260) &&
186+
dev->rom.er_Product == ZORRO_PROD(ZORRO_PROD_CSLAB_WARP_1260)) {
187+
188+
/* turn off all interrupts */
189+
pr_info("Warp 1260 card detected: applying interrupt storm workaround\n");
190+
*(uint32_t *)(dev->boardaddr + 0x1000) = 0xfff;
191+
}
183192
} else
184193
pr_warn("amiga_parse_bootinfo: too many AutoConfig devices\n");
185194
#endif /* CONFIG_ZORRO */

include/uapi/linux/zorro_ids.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,9 @@
449449
#define ZORRO_PROD_VMC_ISDN_BLASTER_Z2 ZORRO_ID(VMC, 0x01, 0)
450450
#define ZORRO_PROD_VMC_HYPERCOM_4 ZORRO_ID(VMC, 0x02, 0)
451451

452+
#define ZORRO_MANUF_CSLAB 0x1400
453+
#define ZORRO_PROD_CSLAB_WARP_1260 ZORRO_ID(CSLAB, 0x65, 0)
454+
452455
#define ZORRO_MANUF_INFORMATION 0x157C
453456
#define ZORRO_PROD_INFORMATION_ISDN_ENGINE_I ZORRO_ID(INFORMATION, 0x64, 0)
454457

0 commit comments

Comments
 (0)