types.h defines device_t to be a struct device *, but the definition of
struct device is internal to subr_bus. But, the LinuxKPI also defines a
struct device, so type confusion is possible.
In this case, we were copying a FreeBSD device structure into a Linux
device structure. The Linux device structure is only used for the IB
device, for allocating DMA'able memory. I believe the old version
worked more or less by accident.
Use linux_pci_attach_device() instead, following the example of the
Chelso iwarp driver. Also ensure that we don't leak the faked device
during detach.