dell-wmi and dell-smbios-wmi are dependent upon dell-wmi-descriptor finishing probe successfully to probe themselves. Currently if dell-wmi-descriptor fails probing in a non-recoverable way (such as invalid header) dell-wmi and dell-smbios-wmi will continue to try to redo probing due to deferred probing. To solve this have the dependent drivers query the dell-wmi-descriptor driver whether the descriptor has been determined valid. The possible results are: -ENODEV: Descriptor GUID missing from WMI bus -EPROBE_DEFER: Descriptor not yet probed, dependent driver should wait and use deferred probing < 0: Descriptor probed, invalid. Dependent driver should return an error. 0: Successful descriptor probe, dependent driver can continue Successful descriptor probe still doesn't mean that the descriptor driver is necessarily bound at the time of initialization of dependent driver. Userspace can unbind the driver, so all methods used from driver should still be verified to return success values otherwise deferred probing be used. Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Reviewed-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
28 lines
741 B
C
28 lines
741 B
C
/*
|
|
* Dell WMI descriptor driver
|
|
*
|
|
* Copyright (c) 2017 Dell Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef _DELL_WMI_DESCRIPTOR_H_
|
|
#define _DELL_WMI_DESCRIPTOR_H_
|
|
|
|
#include <linux/wmi.h>
|
|
|
|
/* possible return values:
|
|
* -ENODEV: Descriptor GUID missing from WMI bus
|
|
* -EPROBE_DEFER: probing for dell-wmi-descriptor not yet run
|
|
* 0: valid descriptor, successfully probed
|
|
* < 0: invalid descriptor, don't probe dependent devices
|
|
*/
|
|
int dell_wmi_get_descriptor_valid(void);
|
|
|
|
bool dell_wmi_get_interface_version(u32 *version);
|
|
bool dell_wmi_get_size(u32 *size);
|
|
|
|
#endif
|