So I am working iwth an interesting problem with the Xembedded Linux BSP for Tundra UniverseII , version 2.0.4, which uses the VME_UNIVERSE module/library. I have a process that access a device in a specific slot, which is specified at launch time. When the configured slot contains a device, everything is great. However, if the slot is empty, the entire VME bus appears to hang which freezes the SBC.
In going through the documentation for the VME_UNIVERSE library, it indicates that we should be able to detect an empty slot after getting an address returned by the call to vme_master_window_map(...) and examining the data from that pointer. If all of the data is 0xFF, then the slot is likely empty. Another way is to try to access the data an see if a SIGBUS event is raised from the VME controller/arbiter.
However, none of these solutions seem to work for us. With the target slot empty, everything hangs immediately as soon as we try to read the first byte (offset 0) from the returned pointer. The read never completes and the signal handler never gets invoked. Since these are the methods mentioned in the VME_UINIVERSE documentation for detecting an unpopulated slot, I believe something is buggy.
We cannot be the first people to every try to use a VME chassis partially-populated with this BSP, so what is the correct way to detect an empty slot with an xEmbedded VME SBC using the supplied/supported BSP?
Nothing in the Linux_BSP_Notes.txt has anything that helps. I even tried the acpi=noirq kernel parameter to no avail. (I get a message about an ignored IRQ 9 and a stack trace at boot, but that is all.)
Is an updated BSP available that fixes this problem, or is there a workaround that we should try?