From nobody Sat Feb 7 06:13:27 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B54D32609CC for ; Fri, 23 Jan 2026 19:45:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197537; cv=pass; b=ftyZM6SQCL0Yaxo9CAdTo0RC21039Z+AUnbG3sIK8rrfJLHFzQZu0TVs/zA34dwqbQMroqJhvha0spgsVhC4LeUWVGk2O/biv7RcYa3f8uOAu29OslYBcYiZlCx59GvdTAuoHw1Tf4Qop5uHPBAcC8hl3F+d95ou5XX5ULoPqgk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197537; c=relaxed/simple; bh=VSOWHO7qSoBhLMMDu1ZtirEYP6/lWMiNT1QvNkR3Xj0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RJmCSgaPPA7fRCHkrDa+ZatU3ezmNWPjw5rst3nnLc8+a/f6exBcKPpmzSJk8+wh5jWWjCqiJzClL0BWfiIEM+fdLNoOWPZu32w/dM9c4Z2V4xxOB7ku/PqUt++73p4EjgR4Gv4yq1kYYrJjrjSaAwv4hMQ3eDQ5udwmIJ9fKtg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=VYPsuIma; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="VYPsuIma" ARC-Seal: i=1; a=rsa-sha256; t=1769197510; cv=none; d=zohomail.com; s=zohoarc; b=enAVAkZDmsZx/cxX2A+I7dzwbG8zkdbtKZsssTKEX+WlrvNfcBevuhLzufWpiMcnungbLSVJkQAkb2NgjP5c3/b5I0CeHZ0Y3FB6ZjYwUlcq8aBW6Qc25LJmI5RukQiDzOPR7r7yQBaa1QSDYXi2caWHRsqYRSrUD1Kok0msSeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769197510; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=b5DrjrFd3ths/f83Nvi9aIkbTsYKWmh6t6bRYlmzwEk=; b=JLWQ7BRYjdYslcEhDvc4/jItdCQSrT7JEPPAxqzorWhamREgnR3e4MiF4y3lm0uP1+LmoIXXXdZcN4FmOf0ys2mwYBJSwoe9N6HyUbe0mGETaKqq9/r5Bqfq3A1KIfISbLnOqKgldfStcWe4F3ppj2eOSFjpw99A8ldTfbJHoDg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1769197510; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=b5DrjrFd3ths/f83Nvi9aIkbTsYKWmh6t6bRYlmzwEk=; b=VYPsuImapyFdTYNoUPpHJ3sn2Em9wjNgeaQgLC0jm29aE9hTV1TYe6wOsApzixfj hiH85VcTcIxy9OwTNWgIautuEaQoWJZOUMA4BBFc156MyC0+DYDgeX6TiONMnKMZc51 rtQgBnw+rPCvozEKJH5SE+ahlJ7SW1ZL3HNQHWBs= Received: by mx.zohomail.com with SMTPS id 1769197508504213.9494803911332; Fri, 23 Jan 2026 11:45:08 -0800 (PST) From: Nicolas Frattaroli Date: Fri, 23 Jan 2026 20:44:02 +0100 Subject: [PATCH v6 1/4] drm: Introduce pending_hp to drm_connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-hot-plug-passup-v6-1-aaaf61d960bb@collabora.com> References: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> In-Reply-To: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> To: =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Louis Chauvet , Haneen Mohammed , Melissa Wen , Daniel Stone , Ian Forbes , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli , Marius Vlad X-Mailer: b4 0.14.3 From: Marius Vlad Introduce a new boolean variable used to track whether a connector has changed its status since the last hotplug event for it was sent to userspace. It is used by both the polling and HPD path. A subsequent change will make use of this new member to propagate per-connector udev hotplug events to userspace, rather than sending a global hotplug event. Signed-off-by: Marius Vlad Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/drm_connector.c | 1 + drivers/gpu/drm/drm_probe_helper.c | 17 +++++++++++++++++ drivers/gpu/drm/drm_sysfs.c | 2 ++ include/drm/drm_connector.h | 3 +++ 4 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connecto= r.c index 4f5b27fab475..aa8a187578da 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -274,6 +274,7 @@ static int drm_connector_init_only(struct drm_device *d= ev, =20 /* provide ddc symlink in sysfs */ connector->ddc =3D ddc; + connector->pending_hp =3D false; =20 INIT_LIST_HEAD(&connector->head); INIT_LIST_HEAD(&connector->global_connector_list_entry); diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe= _helper.c index 09b12c30df69..91de34a25bf8 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -732,6 +732,17 @@ EXPORT_SYMBOL(drm_helper_probe_single_connector_modes); */ void drm_kms_helper_hotplug_event(struct drm_device *dev) { + struct drm_connector *connector; + struct drm_connector_list_iter conn_iter; + + mutex_lock(&dev->mode_config.mutex); + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + connector->pending_hp =3D false; + } + drm_connector_list_iter_end(&conn_iter); + mutex_unlock(&dev->mode_config.mutex); + drm_sysfs_hotplug_event(dev); drm_client_dev_hotplug(dev); } @@ -748,6 +759,10 @@ void drm_kms_helper_connector_hotplug_event(struct drm= _connector *connector) { struct drm_device *dev =3D connector->dev; =20 + mutex_lock(&dev->mode_config.mutex); + connector->pending_hp =3D false; + mutex_unlock(&dev->mode_config.mutex); + drm_sysfs_connector_hotplug_event(connector); drm_client_dev_hotplug(dev); } @@ -837,6 +852,7 @@ static void output_poll_execute(struct work_struct *wor= k) old_epoch_counter, connector->epoch_counter); =20 changed =3D true; + connector->pending_hp =3D true; } } drm_connector_list_iter_end(&conn_iter); @@ -1101,6 +1117,7 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev) first_changed_connector =3D connector; } =20 + connector->pending_hp =3D true; changed++; } } diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index b01ffa4d6509..53076c2afd12 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -216,6 +216,8 @@ static ssize_t status_store(struct device *device, connector->base.id, connector->name, old_force, connector->force); =20 + connector->pending_hp =3D true; + connector->funcs->fill_modes(connector, dev->mode_config.max_width, dev->mode_config.max_height); diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 7eaec37ae1c7..84968b2d967a 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -2191,6 +2191,9 @@ struct drm_connector { /** @force: a DRM_FORCE_ state for forced mode sets */ enum drm_connector_force force; =20 + /** @pending_hp: true if connector changed since last hotplug event */ + bool pending_hp; + /** * @edid_override: Override EDID set via debugfs. * --=20 2.52.0 From nobody Sat Feb 7 06:13:27 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DADD42C15B5 for ; Fri, 23 Jan 2026 19:45:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197542; cv=pass; b=Xd7i8udZT17xUK3WibSwi0UPZcZUdhE1/iPendytF6TC/B5WrDe/4WcwLa+BiPfS8NCMRPj+WSsBkkdjtcEdA/k90/mEJ5x6kcXKnHJVklnJU20mJXRlgiLqWNewu8B3Ssg/7WOt/IhNR57eXRGuzrmGA18B/SwTQXDt0oTQmuI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197542; c=relaxed/simple; bh=E6w27phQuF7b65tQ6QnE4cyuh1uIaL5CVKufSM6cTWw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FS+NNNGWrlkazWK2Pu571fEJrWoT46qIF8xVHH8ba7wreUprNi8YVUGNq7uiK7NbWBjNxXjLwL2TAlkOgOIE3aurIqXex6c/TP+JDSpWj/dcO1+EZbTYe6M8VENInpOfDpCj1R9tVVVHynJxdeMoYWg4wMBk5Kjy9RL1RsB/QQc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=NrcgTu2L; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="NrcgTu2L" ARC-Seal: i=1; a=rsa-sha256; t=1769197514; cv=none; d=zohomail.com; s=zohoarc; b=M46UzeG5oxoiCwszLu0Dv9RhzHZr/3x6DcBjxIHm5hr/6b7tp59zxPQMwzYBBkXvGRR7GL/PeC2IRH1Z+Kngl12T2rLH4J9N+3LjylkCoB3gq/mLP2veGACXblQZTaPjZUUXt65a3W5SefUUlW+7/uPKdocnyYIc9tj+Ufbb68w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769197514; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=L97jc63KKwlERs1XaD4aOTXye/NUs+d9FajbwfZz7iw=; b=QGF2kDu37lrhZ4muSxUnbOLXRfFBiBUYVYNglghnTjd31g6BZqJbRoP9wu0i5Igg5rCBMa7l+/8JTWCQjgbBfg7DwNbaTM8KXXIJ36q3Fyoebk53YJKzu+8KVF+SERCbLdei1MQge1xokHQ5PmpnaO/29gAQ2lgQG00u5U96jq8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1769197514; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=L97jc63KKwlERs1XaD4aOTXye/NUs+d9FajbwfZz7iw=; b=NrcgTu2Lx5UI8boFu5JaVEuNiyM8vzHLPZjdylwEM5E6ZAg6EcQ/oqZJt+dg2s0f 93UIup2OqJsYgLEgVIOW11tWBJIrWE3tdYxjsNMFS0P4oMMOClbkW6ua1rWVzdWUadf 5+xCLZQtFWZ5nHS307Kb/gVFgiDs03yaygAq0my4= Received: by mx.zohomail.com with SMTPS id 1769197512654833.8088981435692; Fri, 23 Jan 2026 11:45:12 -0800 (PST) From: Nicolas Frattaroli Date: Fri, 23 Jan 2026 20:44:03 +0100 Subject: [PATCH v6 2/4] drm: Send per-connector hotplug events Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-hot-plug-passup-v6-2-aaaf61d960bb@collabora.com> References: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> In-Reply-To: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> To: =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Louis Chauvet , Haneen Mohammed , Melissa Wen , Daniel Stone , Ian Forbes , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli , Marius Vlad X-Mailer: b4 0.14.3 From: Marius Vlad Use the new pending_hp member of drm_connector to always send per-connector hotplug events for those connectors that need it, rather than sending a global event, or only an event for one connector. On the HPD (Hot Plug Detect) path this change notifies all connectors, rather than just first changed connector. The polling path is changed to no longer send a connector-less hotplug event, but similarly send a hotplug event for each changed connector. Signed-off-by: Marius Vlad Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/drm_probe_helper.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe= _helper.c index 91de34a25bf8..b60b1ef39748 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -860,8 +860,14 @@ static void output_poll_execute(struct work_struct *wo= rk) mutex_unlock(&dev->mode_config.mutex); =20 out: - if (changed) - drm_kms_helper_hotplug_event(dev); + if (changed) { + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + if (connector->pending_hp) + drm_kms_helper_connector_hotplug_event(connector); + } + drm_connector_list_iter_end(&conn_iter); + } =20 if (repoll) schedule_delayed_work(delayed_work, DRM_OUTPUT_POLL_PERIOD); @@ -1124,10 +1130,16 @@ bool drm_helper_hpd_irq_event(struct drm_device *de= v) drm_connector_list_iter_end(&conn_iter); mutex_unlock(&dev->mode_config.mutex); =20 - if (changed =3D=3D 1) + if (changed =3D=3D 1) { drm_kms_helper_connector_hotplug_event(first_changed_connector); - else if (changed > 0) - drm_kms_helper_hotplug_event(dev); + } else if (changed > 0) { + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + if (connector->pending_hp) + drm_kms_helper_connector_hotplug_event(connector); + } + drm_connector_list_iter_end(&conn_iter); + } =20 if (first_changed_connector) drm_connector_put(first_changed_connector); --=20 2.52.0 From nobody Sat Feb 7 06:13:27 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F0682C21E8 for ; Fri, 23 Jan 2026 19:45:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197539; cv=pass; b=D4RuL8MbeDH86Ry8immGGS1OmTsIGFhIPiiftR7SvyrvCFlOjrWVp/+E8pyuUo9Xl3Kh8jKG3piDCk1gOzBOsoVzYrzJXi2K60OXxSr/tlU+psG1XsgnD8h9Hm6WCsgaGNRK2Vrm89hqUftRa8Job2V3KzkQZUAeOTn7/+bOY2A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197539; c=relaxed/simple; bh=/m4KDxWnbmfGCZXqyHkrvZkPC1qep7H7RgkDVEn5+/k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KznGKVhojfaBrdk3Ue5q2LeKps4/2kuvz0FyOWcG8ArMWUxm4KTewPVGsx8WAedqPwBvJ0iN5RoNIbGym97fQFGLf0KYnaFHfaLvG2nm32k/aZL+YbmAF1b37mDYuQYkOPtILOLzv5aGOwT+CWNAJqe6T+XJtllmC+MVr4AFHtw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=B0ghJ9sX; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="B0ghJ9sX" ARC-Seal: i=1; a=rsa-sha256; t=1769197518; cv=none; d=zohomail.com; s=zohoarc; b=JsFWpU0wQ0VGgUT3qGiqpKYYlUH0HR2iZuLPDAR3YwDjXY1+MYap5x8bBM71BhWMeTQsmRbqhwi8l4hU4QK84M3vA0vZHfd4qS9dh1r6rOw0deoSA0BcKnpNnnrA0n4KHpK+PrXhs0iguUP8VEnEknNgqTY/HFYCrkML2KAvMsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769197518; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=GYnkaFMMP6LgjK9TzPtJx+rtche8wwgijXG7e64m8mk=; b=XYbctznHaworXkpgoM3k+9q09/obooRCPacgzzNaVR2d45Wi5F5PhPrhoZrQn/gkJ28MPNNgcJOXdeBgEN0WDehM45FVv3gilcTA8zKscFg6/tqM89CFSTwKBi3mY6ipQJ8Q0vDlKxtMKwrt1XZhx71fVQys3bkkG6j8AiaIvlg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1769197518; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=GYnkaFMMP6LgjK9TzPtJx+rtche8wwgijXG7e64m8mk=; b=B0ghJ9sX6x3rJGn6fydvvuOHUbKO+121Lc6W+fP1ysxzO6v5RpvQ4VFReRBuL4Il aow7P37laiNiCOaZNJGhhRBGyBntL9bPyapRSCl2ba/Uxo4rYDNMm2c/+nhDolXyV1O EK+WffcyUUsjisUTfGr8UYG3+7n+LsweP5PtSB4Y= Received: by mx.zohomail.com with SMTPS id 1769197516720900.6204900005016; Fri, 23 Jan 2026 11:45:16 -0800 (PST) From: Nicolas Frattaroli Date: Fri, 23 Jan 2026 20:44:04 +0100 Subject: [PATCH v6 3/4] vkms: Do not send hotplug events for same connector status Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-hot-plug-passup-v6-3-aaaf61d960bb@collabora.com> References: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> In-Reply-To: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> To: =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Louis Chauvet , Haneen Mohammed , Melissa Wen , Daniel Stone , Ian Forbes , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli , Marius Vlad X-Mailer: b4 0.14.3 From: Marius Vlad Only send a new hotplug event when writing to the connector status configfs entry if the connector status changed compared to its previous value. Signed-off-by: Marius Vlad Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/vkms/vkms_configfs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vkms/vkms_configfs.c b/drivers/gpu/drm/vkms/vk= ms_configfs.c index 506666e21c91..d6e203d59b45 100644 --- a/drivers/gpu/drm/vkms/vkms_configfs.c +++ b/drivers/gpu/drm/vkms/vkms_configfs.c @@ -549,9 +549,11 @@ static ssize_t connector_status_store(struct config_it= em *item, return -EINVAL; =20 scoped_guard(mutex, &connector->dev->lock) { + enum drm_connector_status old_status =3D + vkms_config_connector_get_status(connector->config); vkms_config_connector_set_status(connector->config, status); =20 - if (connector->dev->enabled) + if (connector->dev->enabled && old_status !=3D status) vkms_trigger_connector_hotplug(connector->dev->config->dev); } =20 --=20 2.52.0 From nobody Sat Feb 7 06:13:27 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3260E19C553 for ; Fri, 23 Jan 2026 19:45:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197548; cv=pass; b=E9e0KYjixNQoQ2Fb2XEYteS/rSW6B02SwcEA+isaj9SRK3VO3QDOXHVobL/Fg0x8IJfNaixN9xvxt84gM7UwWdVxmfUrX2jGzblTToaQFNBE/1v4ZvE2hk4sQFT2qt1NT1CCdeuvCZn3a/TPRKdAg3PBOPb9kpSVLJukzVba6kc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769197548; c=relaxed/simple; bh=lF3zJnNP0x+thagUYnYlAACarOFJ9DOJ2QB53SgOR8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=htHoh+gn5IpPlfEWmzBKRw07nTA408ocEqJDes1fZHsrs8PW43vApk0Hy7WCXUwDTwCwSxZhwsNbmBWkpdswKwYKC2PyRPsphZd8dUamMcOrNqEW6i2ZFWW69Xax2+PqcFt5dcYimEq/ECH29rIRghlZcUvt2iB0orHjxn7pS1s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=OfGUP//K; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="OfGUP//K" ARC-Seal: i=1; a=rsa-sha256; t=1769197522; cv=none; d=zohomail.com; s=zohoarc; b=hNNULrcj1AJr1RkfjHxHuEZO+QQYS7r6AkFM3UjljZPaucLq5uTp/M+JnESLRFRE+3A0wJePmL9VXUgfSuH3ub9MIoZQllQso8Woamr+ST9ooCUksjxoLAkrMItR8f/u7mqp630K+91J+Jz/Avm9exD+Y89n0EHNXXiXO8pAPHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769197522; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=1PEjpErw/3Petkysh+3xd0dhTHn6vG457g9XrkwCPew=; b=JBwcFI8PuYt+KT8Z/e/pRubo1Bt0cYCNKJSfk61Lpqolw2pJF3WfnM3DfP7DiehjIGXWUwVKYBEFTRER441VZ6zevvybwEjIayNsJqzGyIBv8RErWpkh4YZYqtO7QBQBvPY64UJbS7GNLbxlNzJdenQZCz4XI05svl6o/QnZZqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1769197522; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=1PEjpErw/3Petkysh+3xd0dhTHn6vG457g9XrkwCPew=; b=OfGUP//KU3b0QostuWYDjb8zGjWV6FbzR+OPUIrtomQoOpsDbJPkgmx5u+4XEym7 NSE/29W14x7DmjhuEaMvLVHNePUBrPHdjXwnIu/iV49USdNCcUPaovsy7tua5b5htDU 4RkPNP3W2J1ULzTMd3AK8Gzu47IDqflZebFCxepg= Received: by mx.zohomail.com with SMTPS id 1769197520992670.7017319382686; Fri, 23 Jan 2026 11:45:20 -0800 (PST) From: Nicolas Frattaroli Date: Fri, 23 Jan 2026 20:44:05 +0100 Subject: [PATCH v6 4/4] vkms: Pass the vkms connector as opposed to the device on hotplug Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260123-hot-plug-passup-v6-4-aaaf61d960bb@collabora.com> References: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> In-Reply-To: <20260123-hot-plug-passup-v6-0-aaaf61d960bb@collabora.com> To: =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Louis Chauvet , Haneen Mohammed , Melissa Wen , Daniel Stone , Ian Forbes , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli , Marius Vlad X-Mailer: b4 0.14.3 From: Marius Vlad By passing the connector rather than the device to vkms_trigger_connector_hotplug, vkms can trigger connector hotplugging events that contain the connector ID. Signed-off-by: Marius Vlad Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/vkms/vkms_configfs.c | 2 +- drivers/gpu/drm/vkms/vkms_connector.c | 6 +++--- drivers/gpu/drm/vkms/vkms_connector.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_configfs.c b/drivers/gpu/drm/vkms/vk= ms_configfs.c index d6e203d59b45..63a27f671e6a 100644 --- a/drivers/gpu/drm/vkms/vkms_configfs.c +++ b/drivers/gpu/drm/vkms/vkms_configfs.c @@ -554,7 +554,7 @@ static ssize_t connector_status_store(struct config_ite= m *item, vkms_config_connector_set_status(connector->config, status); =20 if (connector->dev->enabled && old_status !=3D status) - vkms_trigger_connector_hotplug(connector->dev->config->dev); + vkms_trigger_connector_hotplug(connector->config->connector); } =20 return (ssize_t)count; diff --git a/drivers/gpu/drm/vkms/vkms_connector.c b/drivers/gpu/drm/vkms/v= kms_connector.c index b0a6b212d3f4..cad64eff72ea 100644 --- a/drivers/gpu/drm/vkms/vkms_connector.c +++ b/drivers/gpu/drm/vkms/vkms_connector.c @@ -88,9 +88,9 @@ struct vkms_connector *vkms_connector_init(struct vkms_de= vice *vkmsdev) return connector; } =20 -void vkms_trigger_connector_hotplug(struct vkms_device *vkmsdev) +void vkms_trigger_connector_hotplug(struct vkms_connector *vkms_connector) { - struct drm_device *dev =3D &vkmsdev->drm; + struct drm_connector *connector =3D &vkms_connector->base; =20 - drm_kms_helper_hotplug_event(dev); + drm_kms_helper_connector_hotplug_event(connector); } diff --git a/drivers/gpu/drm/vkms/vkms_connector.h b/drivers/gpu/drm/vkms/v= kms_connector.h index ed312f4eff3a..7cd76d01b10b 100644 --- a/drivers/gpu/drm/vkms/vkms_connector.h +++ b/drivers/gpu/drm/vkms/vkms_connector.h @@ -28,8 +28,8 @@ struct vkms_connector *vkms_connector_init(struct vkms_de= vice *vkmsdev); =20 /** * vkms_trigger_connector_hotplug() - Update the device's connectors status - * @vkmsdev: VKMS device to update + * @vkms_connector: VKMS connector to update */ -void vkms_trigger_connector_hotplug(struct vkms_device *vkmsdev); +void vkms_trigger_connector_hotplug(struct vkms_connector *vkms_connector); =20 #endif /* _VKMS_CONNECTOR_H_ */ --=20 2.52.0