<div dir="ltr">Well, in that case it would be even simpler. We don't even need the "unplugged" flag check in udl_detect because all connectors are already unplugged in udl_usb_disconnect (in drm_connector_unplug_all()).<div><br></div><div>It is not necessary to check the flag in udl_fb_open() either, if the intention is to keep the device alive.</div><div><br></div><div>As for code paths that uses udl->udev, I only see the following 3 places:</div><div><br></div><div>(1) udl_parse_vendor_description and udl_alloc_urb_list: both are only called at udl_driver_load(), so not a problem</div><div>(2) udl_usb_probe: won't happen after USB device is unplugged</div><div>(3) udl_get_edid: only called from udl_get_modes, won't be an issue because connectors are already unplugged</div><div><br></div><div>So, it seems that I *really* just need to drop the "unplugged" flag and update the commit message.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 11, 2016 at 2:30 AM, David Herrmann <span dir="ltr"><<a href="mailto:dh.herrmann@gmail.com" target="_blank">dh.herrmann@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi<br>
<span class=""><br>
On Thu, Feb 11, 2016 at 12:18 AM, Haixia Shi <<a href="mailto:hshi@chromium.org">hshi@chromium.org</a>> wrote:<br>
> When USB cable is disconnected, we mark udl device as unplugged so that<br>
> udl_detect reports connector status as disconnected, but still keep<br>
> the drm device alive until user-space closes it.<br>
><br>
> Signed-off-by: Haixia Shi <<a href="mailto:hshi@chromium.org">hshi@chromium.org</a>><br>
> Reviewed-by: Stéphane Marchesin <<a href="mailto:marcheu@chromium.org">marcheu@chromium.org</a>><br>
<br>
</span>I assume this is based on the discussion I had with Stephane on IRC.<br>
I'm fine with going this way and keeping the device fully alive, and<br>
just treat the device removal as a connector-unplug. However, you<br>
really must document all this in your commit message.<br>
<br>
Anyway, if you want to keep the device alive, then please change the<br>
code to entirely drop the "unplugged" flag and all related code. Then<br>
make sure you somehow reset "udl->udev" to NULL and make sure no<br>
code-path uses the usb-device after it was unplugged. I guess there<br>
should be appropriate locks already.<br>
<br>
This way, you end up with a fully functional UDL device, which just<br>
happens to have to connector plugged. But you *really* have to be<br>
careful that no-one touches the usb device, as the interface might be<br>
re-used by some other device any time (or in case the usb-core<br>
provides protection against this, please document it).<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">David<br>
</font></span></blockquote></div><br></div>