On Wed, Jan 29, 2025 at 10:51:48AM +0100, Hans Verkuil wrote: > If the hotplug detect of a display is low for longer than one second > (configurable through drm_dp_cec_unregister_delay), then the CEC adapter > is unregistered since we assume the display was disconnected. If the > HPD went low for less than one second, then we check if the properties > of the CEC adapter have changed, since that indicates that we actually > switch to new hardware and we have to unregister the old CEC device and > register a new one. > > Unfortunately, the test for changed properties was written poorly, and > after a new CEC capability was added to the CEC core code the test always > returned true (i.e. the properties had changed). > > As a result the CEC device was unregistered and re-registered for every > HPD toggle. If the CEC remote controller integration was also enabled > (CONFIG_MEDIA_CEC_RC was set), then the corresponding input device was > also unregistered and re-registered. As a result the input device in > /sys would keep incrementing its number, e.g.: > > /sys/devices/pci0000:00/0000:00:08.1/0000:e7:00.0/rc/rc0/input20 > > Since short HPD toggles are common, the number could over time get into > the thousands. > > While not a serious issue (i.e. nothing crashes), it is not intended > to work that way. > > This patch changes the test so that it only checks for the single CEC > capability that can actually change, and it ignores any other > capabilities, so this is now safe as well if new caps are added in > the future. > > With the changed test the bit under #ifndef CONFIG_MEDIA_CEC_RC can be > dropped as well, so that's a nice cleanup. > > Signed-off-by: Hans Verkuil <hverkuil@xxxxxxxxx> > Reported-by: Farblos <farblos@xxxxxxxxxxxxxxx> > --- > Jens (aka Farblos), can you test this patch? > --- > drivers/gpu/drm/display/drm_dp_cec.c | 14 +++----------- > 1 file changed, 3 insertions(+), 11 deletions(-) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> -- With best wishes Dmitry