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