When it doesn't work, I see something like the following in /proc/interrupts:
34: 0 0 0 0 GICv2 158 Level mmc0 35: 100001 0 0 0 GICv2 158 Level mmc1 which doesn't make sense, since this is a shared interrupt and should map to the same interrupt number. On a working system the following is seen: 34: 18707 0 0 0 GICv2 158 Level mmc1, mmc0 It looks like this might be caused by some sort of race among mapping shared IRQs, disabling of "nobody cared" interrupt lines, and the mmc driver/core probing the attached card. Disabling async probing of the sdhci-iproc driver and marking the SD card as non-removable using an overlay combined seem to decrease the chances of hitting this, but isn't guaranteed to not hit it.