On Sat, Mar 25, 2023 at 11:20:38PM -0700, Kuppuswamy Sathyanarayanan wrote:
Since GetQuote support requires usage of DMA APIs, convert TDX guest driver to a platform driver.
Sorry, but that's not a valid reason to use a platform device for fake things like this:
+static struct platform_device *tdx_dev;
Especially a single static one.
+static int tdx_guest_probe(struct platform_device *pdev) +{
- if (tdx_register_event_irq_cb(attestation_callback_handler, pdev))
return -EIO;
- return misc_register(&tdx_misc_dev);
+}
+static int tdx_guest_remove(struct platform_device *pdev) +{
- tdx_unregister_event_irq_cb(attestation_callback_handler, pdev);
- misc_deregister(&tdx_misc_dev);
- return 0;
+}
+static struct platform_driver tdx_guest_driver = {
- .probe = tdx_guest_probe,
- .remove = tdx_guest_remove,
- .driver.name = KBUILD_MODNAME,
+};
static const struct x86_cpu_id tdx_guest_ids[] = { X86_MATCH_FEATURE(X86_FEATURE_TDX_GUEST, NULL), {} @@ -84,16 +310,35 @@ MODULE_DEVICE_TABLE(x86cpu, tdx_guest_ids); static int __init tdx_guest_init(void) {
- int ret;
- if (!x86_match_cpu(tdx_guest_ids)) return -ENODEV;
- return misc_register(&tdx_misc_dev);
- ret = platform_driver_register(&tdx_guest_driver);
- if (ret) {
pr_err("failed to register driver, err=%d\n", ret);
return ret;
- }
No, please do not create a fake platform driver.
- tdx_dev = platform_device_register_simple(KBUILD_MODNAME,
PLATFORM_DEVID_NONE,
NULL, 0);
And please do not create a fake platform device.
As always, do not create fake platform devices for things that are NOT platform devices.
If this device needs DMA (but why?) then make it a real device and tie it to the bus it belongs to (that it is obviously doing DMA on.)
But as-is, this isn't ok, sorry.
thanks,
greg k-h