On Friday 20 October 2017 12:40:20 Mario Limonciello wrote: > diff --git a/drivers/platform/x86/dell-wmi-descriptor.c b/drivers/platform/x86/dell-wmi-descriptor.c > new file mode 100644 > index 000000000000..3204c408e261 > --- /dev/null > +++ b/drivers/platform/x86/dell-wmi-descriptor.c This dell-wmi-descriptor.c looks good now! > diff --git a/drivers/platform/x86/dell-wmi-descriptor.h b/drivers/platform/x86/dell-wmi-descriptor.h > new file mode 100644 > index 000000000000..5f7b69c2c83a > --- /dev/null > +++ b/drivers/platform/x86/dell-wmi-descriptor.h > @@ -721,7 +652,9 @@ static int dell_wmi_events_set_enabled(bool enable) > static int dell_wmi_probe(struct wmi_device *wdev) > { > struct dell_wmi_priv *priv; > - int err; > + > + if (!wmi_has_guid(DELL_WMI_DESCRIPTOR_GUID)) > + return -ENODEV; > > priv = devm_kzalloc( > &wdev->dev, sizeof(struct dell_wmi_priv), GFP_KERNEL); > @@ -729,9 +662,8 @@ static int dell_wmi_probe(struct wmi_device *wdev) > return -ENOMEM; > dev_set_drvdata(&wdev->dev, priv); > > - err = dell_wmi_check_descriptor_buffer(wdev); > - if (err) > - return err; > + if (!dell_wmi_get_interface_version(&priv->interface_version)) > + return -EPROBE_DEFER; But here is still a problem. You added check that DELL_WMI_DESCRIPTOR_GUID exists in APCI table, but it does not mean that probe method of dell-wmi-descriptor cannot fail. With PROBE_DEFER, dell_wmi_probe function would be called later again and again, even when probing dell-wmi-descriptor failed and so dell-wmi in this case cannot work. > return dell_wmi_input_setup(wdev); > } -- Pali Rohár pali.rohar@xxxxxxxxx