On 14-07-21, 14:57, Dave Jiang wrote: > ->shutdown() call should only be responsible for quiescing the device. > Currently it is doing PCI device tear down. This causes issue when things > like MMIO mapping is removed while idxd_unregister_devices() will trigger > removal of idxd device sub-driver and still initiates MMIO writes to the > device. Another issue is with the unregistering of idxd 'struct device', > the memory context gets freed. So the teardown calls are accessing freed > memory and can cause kernel oops. Move all the teardown bits that doesn't > belong in shutdown to ->remove() call. Move unregistering of the idxd > conf_dev 'struct device' to after doing all the teardown to free all > the memory that's no longer needed. Applied to fixes, thanks -- ~Vinod