Hi, Once I've hit BUG_ON(in_interrupt()); when hacking PCI drivers locally on MIPS board. I see the problem but don't know the solution. 1) I think "read" and "write" of struct pci_ops should be safe to call in IRQ handler 2) In drivers/bcma/driver_pci_host.c we use ioremap_nocache This causes a problem for boards with 2 PCI(e) cards. The base address for the 2nd card is #define BCMA_SOC_PCI1_CFG 0x44000000U which doesn't allow MIPS to use KSEG1. As the result forwardtrace looks like this: 1) ioremap_nocache 2) __ioremap_mode 3) __ioremap 4) get_vm_area 5) __get_vm_area_node And then we can hit BUG_ON(in_interrupt()); Can you see any solution for this? Currently there isn't any mainline code triggering this problem, but it would be nice to have everything working anyway. As one of workarounds I was thinking about mapping whole space early. Unfortunately there are many possible registers (0xffff), few PCI functions (0x30000), many possible PCI devices (0xf80000). It's way to big space I guess to keep it mapped all the time. -- Rafał