On Fri, 2021-11-12 at 17:32 +0300, Dmitry Osipenko wrote: > 12.11.2021 13:52, Thierry Reding пишет: > > On Tue, Nov 09, 2021 at 05:39:02PM +0300, Dmitry Osipenko wrote: > > > 09.11.2021 17:17, Dmitry Osipenko пишет: > > > > 09.11.2021 17:08, Dmitry Osipenko пишет: > > > > > > +static void host1x_drm_dev_deinit(struct host1x_device *dev) > > > > > > +{ > > > > > > + struct drm_device *drm = dev_get_drvdata(&dev->dev); > > > > > And platform_unregister_drivers() should be moved here. > > > > > > > > > > > > > Nah, that should cause deadlock. This ad-hoc is too lame. > > > > > > Actually, there is no problem here as I see now. The host1x driver > > > populates DT nodes after host1x_register() [1], meaning that Host1x DRM > > > will be always inited first. > > > > > > [1] > > > https://elixir.bootlin.com/linux/v5.15/source/drivers/gpu/host1x/dev.c#L475 > > > > > > Still I'm not a fan of the ad-hoc solution. > > > > Could we not fix this by making the panel "hot-pluggable"? I don't think > > there's anything inherent to the driver that would prevent doing so. The > > original reason for why things are as intertwined as they are now is > > because back at the time deferred framebuffer creation didn't exist. In > > fact I added deferred framebuffer support with Daniel's help precisely > > to fix a similar issue for things like HDMI and DP. > > I don't understand what do you mean by "hot-pluggable", panel is static. > Please either clarify more or type the patch. > > Keep in mind that fix should be simple and portable because stable > kernels are wrecked. > > > With HDMI and DP it's slightly less critical, because a lack of mode > > support would've created a 1024x768 framebuffer, which most HDMI/DP > > monitors support. However, with panels we need to ensure that the exact > > mode from the panel is used to create the framebuffer, so it can only be > > created when the panel is available. > > > > But, given that deferred framebuffer creation works now (which allows > > the framebuffer console to show up at the preferred resolution for HDMI > > and DP), even if a monitor is attached only after the driver has probed > > already, we should be able to make something like that work with panels > > as well. > > BTW, I see now that DPAUX I2C transfer helper may access > aux->drm_device. Hence v1 patch isn't correct anyways. JFYI - unless I'm misunderstanding you, the aux->drm_dev accesses in the DPAUX i2c transfer functions are just from the various drm_{dbg,err,etc.} calls, which means that they all should be able to handle aux->drm_dev being NULL. If you can set aux->drm_dev before i2c transfers start that's more ideal, since otherwise you'll see the AUX device name as "(null)" in the kernel log, but any point before device registration should work. > > For now I'll try to test more the ad-hoc variant with Thomas and send it > as v2 if we won't have a better solution. > -- Cheers, Lyude Paul (she/her) Software Engineer at Red Hat