Re: [PATCH] usb: dwc3: Add shutdown toplatform_driver
From: Vicente Bergas <hidden>
Date: 2019-08-27 12:16:35
Also in:
linux-rockchip, linux-usb
On Tuesday, August 27, 2019 1:53:04 PM CEST, Felipe Balbi wrote:
Hi, Vicente Bergas [off-list ref] writes:quoted
On Saturday, August 17, 2019 7:41:40 PM CEST, Vicente Bergas wrote:quoted
Otherwise the device keeps writing to memory after kexec and disturbs the next kernel.
...
why don't you just have shutdown use the same exact function as remove? Frankly, though, I still don't fully understand what's going wrong here. Why is the device still alive during kexec? cheers
Hi Felipe, the remove and shutdown functions have different prototypes, so shutdown is wrapping remove. Would it be preferable to cast remove as shutdown? The issue with kexec is that the device is being used during the livetime of the first kernel. When the first kernel executes kexec it calls the shutdown function of drivers (instead of remove). Because of this the dwc3 device keeps doing things like DMA. While the second kernel is taking over, it gets its memory corrupted with such DMA accesses from the device. When the second kernel reaches the point of taking over the dwc3 device, re-initializes it, but it is already too late. Still worse, if the second kernel did not have the dwc3 driver, it would get endless memory corruptions. All in all, devices that can do DMA need to stop doing it on shutdown. Regards, Vicenç. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel