* [PATCH] driver core: platform: tests: add a shared software node test case
@ 2026-11-04 20:24 Stuart Summers
2026-11-04 22:04 ` Andy Shevchenko
0 siblings, 1 reply; 3+ messages in thread
From: Stuart Summers @ 2026-11-04 20:24 UTC (permalink / raw)
Cc: driver-core, bartosz.golaszewski, balasubramani.vivekanandan,
intel-xe, heikki.krogerus, dakr, andriy.shevchenko,
Stuart Summers
Cover the pattern used by drm/xe + i2c-designware, where a software node
assigned as a platform device's primary firmware node is handed to a
second device via device_set_node(), and make sure removing that second
device leaves the owner's node intact.
A potential fix for this issue in the drm/xe driver is being discussed
in [1].
The signature in this case looks like this:
Oops: general protection fault, probably for non-canonical address
0x6b6b6b6b6b6b6b73
RIP: platform_device_release+0x6f/0x80
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Assisted-by: LLM
[1]: https://patchwork.freedesktop.org/series/175858/
---
drivers/base/test/platform-device-test.c | 57 ++++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/drivers/base/test/platform-device-test.c b/drivers/base/test/platform-device-test.c
index 9ce563f76aad..378ba7fab2ac 100644
--- a/drivers/base/test/platform-device-test.c
+++ b/drivers/base/test/platform-device-test.c
@@ -420,9 +420,66 @@ static void platform_device_two_swnodes(struct kunit *test)
"Expected errno == -EINVAL, got: %pe", pdev);
}
+static void platform_device_swnode_sharer_release(struct device *dev)
+{
+}
+
+/*
+ * A software node assigned as a platform device's primary firmware node may be
+ * shared with other devices: i2c-designware passes dev_fwnode() of its platform
+ * device down to the i2c adapter device it creates. Check that removing the
+ * sharing device leaves the owner's software node intact.
+ */
+static void platform_device_swnode_shared(struct kunit *test)
+{
+ static const struct property_entry properties[] = {
+ PROPERTY_ENTRY_STRING("compatible", "test,shared-swnode"),
+ { }
+ };
+ struct fwnode_handle *fwnode;
+ struct platform_device *pdev;
+ struct device *shared;
+ int ret;
+
+ pdev = platform_device_alloc(DEVICE_NAME, PLATFORM_DEVID_NONE);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
+
+ fwnode = fwnode_create_software_node(properties, NULL);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode);
+ platform_device_set_fwnode(pdev, fwnode);
+
+ ret = platform_device_add(pdev);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ /*
+ * A second, non-platform device referencing the same fwnode, like the
+ * i2c adapter device created by i2c-designware.
+ */
+ shared = kunit_kzalloc(test, sizeof(*shared), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, shared);
+
+ device_initialize(shared);
+ shared->release = platform_device_swnode_sharer_release;
+ ret = dev_set_name(shared, "test-swnode-sharer");
+ KUNIT_ASSERT_EQ(test, ret, 0);
+ device_set_node(shared, dev_fwnode(&pdev->dev));
+
+ ret = device_add(shared);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ device_unregister(shared);
+
+ /* The owner must still have its software node. */
+ KUNIT_EXPECT_PTR_EQ(test, dev_fwnode(&pdev->dev), fwnode);
+
+ platform_device_unregister(pdev);
+ fwnode_remove_software_node(fwnode);
+}
+
static struct kunit_case platform_device_swnode_tests[] = {
KUNIT_CASE(platform_device_swnode_add_twice),
KUNIT_CASE(platform_device_swnode_as_primary),
+ KUNIT_CASE(platform_device_swnode_shared),
KUNIT_CASE(platform_device_two_swnodes),
{}
};
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] driver core: platform: tests: add a shared software node test case
2026-11-04 20:24 [PATCH] driver core: platform: tests: add a shared software node test case Stuart Summers
@ 2026-11-04 22:04 ` Andy Shevchenko
2026-11-04 22:51 ` Summers, Stuart
0 siblings, 1 reply; 3+ messages in thread
From: Andy Shevchenko @ 2026-11-04 22:04 UTC (permalink / raw)
To: Stuart Summers
Cc: driver-core, bartosz.golaszewski, balasubramani.vivekanandan,
intel-xe, heikki.krogerus, dakr
On Wed, Nov 04, 2026 at 08:24:16PM +0000, Stuart Summers wrote:
> Cover the pattern used by drm/xe + i2c-designware, where a software node
> assigned as a platform device's primary firmware node is handed to a
> second device via device_set_node(), and make sure removing that second
> device leaves the owner's node intact.
>
> A potential fix for this issue in the drm/xe driver is being discussed
> in [1].
>
> The signature in this case looks like this:
> Oops: general protection fault, probably for non-canonical address
> 0x6b6b6b6b6b6b6b73
> RIP: platform_device_release+0x6f/0x80
> Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> Assisted-by: LLM
>
> [1]: https://patchwork.freedesktop.org/series/175858/
This is wrongly formatter tag block, also URL can be made a Link tag.
On top, Assisted-by is obsolete.
At the result it's expected to be
Link: https://patchwork.freedesktop.org/series/175858/ [1]
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
And last, but not least — thanks for the test cases! It's always appreciated.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] driver core: platform: tests: add a shared software node test case
2026-11-04 22:04 ` Andy Shevchenko
@ 2026-11-04 22:51 ` Summers, Stuart
0 siblings, 0 replies; 3+ messages in thread
From: Summers, Stuart @ 2026-11-04 22:51 UTC (permalink / raw)
To: andriy.shevchenko@linux.intel.com
Cc: intel-xe@lists.freedesktop.org, Vivekanandan, Balasubramani,
driver-core@lists.linux.dev, bartosz.golaszewski@oss.qualcomm.com,
dakr@kernel.org, heikki.krogerus@linux.intel.com
On Thu, 2026-11-05 at 00:04 +0200, Andy Shevchenko wrote:
> On Wed, Nov 04, 2026 at 08:24:16PM +0000, Stuart Summers wrote:
> > Cover the pattern used by drm/xe + i2c-designware, where a software
> > node
> > assigned as a platform device's primary firmware node is handed to
> > a
> > second device via device_set_node(), and make sure removing that
> > second
> > device leaves the owner's node intact.
> >
> > A potential fix for this issue in the drm/xe driver is being
> > discussed
> > in [1].
> >
> > The signature in this case looks like this:
> > Oops: general protection fault, probably for non-canonical address
> > 0x6b6b6b6b6b6b6b73
> > RIP: platform_device_release+0x6f/0x80
>
> > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > Assisted-by: LLM
> >
> > [1]: https://patchwork.freedesktop.org/series/175858/
>
> This is wrongly formatter tag block, also URL can be made a Link tag.
> On top, Assisted-by is obsolete.
>
> At the result it's expected to be
>
> Link: https://patchwork.freedesktop.org/series/175858/ [1]
> Signed-off-by: Stuart Summers <stuart.summers@intel.com>
>
> And last, but not least — thanks for the test cases! It's always
> appreciated.
Thanks for the review! And yeah makes sense, thanks. Let me fix that up
and resubmit.
Thanks,
Stuart
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-04 22:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04 20:24 [PATCH] driver core: platform: tests: add a shared software node test case Stuart Summers
2026-11-04 22:04 ` Andy Shevchenko
2026-11-04 22:51 ` Summers, Stuart
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox