Re: [platform-drivers-x86:testing 4/6] drivers/platform/x86/dell-smbios-wmi.c:66: undefined reference to `wmidev_evaluate_method'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Resending to satisfy vger format rules

On March 10, 2018 10:20:49 AM PST, dvhart@xxxxxxxxxxxxx wrote:
>I'm traveling with family this weekend. Would appreciate if someone
>could take a closer look. My thinking is we may need another parallel
>depends for DELL_SMBIOS for WMI, eg: depends on (DCDBAS||DCDBAS=n)&&
>(WMI||WMI=n).
>
>On March 9, 2018 3:09:03 PM PST, kbuild test robot
><fengguang.wu@xxxxxxxxx> wrote:
>>tree:  
>>git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git
>>testing
>>head:   cc69c88fbeb915447b87e5179378d899d1f61554
>>commit: 41e36f2f85af758fd2f4be76112ebe649d07a801 [4/6] platform/x86:
>>dell-smbios: Link all dell-smbios-* modules together
>>config: x86_64-randconfig-s3-03100518 (attached as .config)
>>compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
>>reproduce:
>>        git checkout 41e36f2f85af758fd2f4be76112ebe649d07a801
>>        # save the attached .config to linux build tree
>>        make ARCH=x86_64 
>>
>>All errors (new ones prefixed by >>):
>>
>> drivers/platform/x86/dell-smbios-wmi.o: In function
>`run_smbios_call':
>>>> drivers/platform/x86/dell-smbios-wmi.c:66: undefined reference to
>>`wmidev_evaluate_method'
>>drivers/platform/x86/dell-smbios-wmi.o: In function
>>`dell_smbios_wmi_probe':
>>>> drivers/platform/x86/dell-smbios-wmi.c:157: undefined reference to
>>`dell_wmi_get_descriptor_valid'
>>>> drivers/platform/x86/dell-smbios-wmi.c:167: undefined reference to
>>`dell_wmi_get_size'
>>>> drivers/platform/x86/dell-smbios-wmi.c:171: undefined reference to
>>`dell_wmi_get_hotfix'
>>>> drivers/platform/x86/dell-smbios-wmi.c:182: undefined reference to
>>`set_required_buffer_size'
>>drivers/platform/x86/dell-smbios-wmi.o: In function
>>`exit_dell_smbios_wmi':
>>>> drivers/platform/x86/dell-smbios-wmi.c:276: undefined reference to
>>`wmi_driver_unregister'
>>
>>vim +66 drivers/platform/x86/dell-smbios-wmi.c
>>
>>1a258e670 Mario Limonciello 2017-11-01   48  
>>1a258e670 Mario Limonciello 2017-11-01   49  static int
>>run_smbios_call(struct wmi_device *wdev)
>>1a258e670 Mario Limonciello 2017-11-01   50  {
>>1a258e670 Mario Limonciello 2017-11-01   51  	struct acpi_buffer
>output
>>= {ACPI_ALLOCATE_BUFFER, NULL};
>>1a258e670 Mario Limonciello 2017-11-01   52  	struct wmi_smbios_priv
>>*priv;
>>1a258e670 Mario Limonciello 2017-11-01   53  	struct acpi_buffer
>input;
>>1a258e670 Mario Limonciello 2017-11-01   54  	union acpi_object *obj;
>>1a258e670 Mario Limonciello 2017-11-01   55  	acpi_status status;
>>1a258e670 Mario Limonciello 2017-11-01   56  
>>1a258e670 Mario Limonciello 2017-11-01   57  	priv =
>>dev_get_drvdata(&wdev->dev);
>>1a258e670 Mario Limonciello 2017-11-01   58  	input.length =
>>priv->req_buf_size - sizeof(u64);
>>1a258e670 Mario Limonciello 2017-11-01   59  	input.pointer =
>>&priv->buf->std;
>>1a258e670 Mario Limonciello 2017-11-01   60  
>>1a258e670 Mario Limonciello 2017-11-01   61  	dev_dbg(&wdev->dev,
>>"evaluating: %u/%u [%x,%x,%x,%x]\n",
>>1a258e670 Mario Limonciello 2017-11-01   62 
>>		priv->buf->std.cmd_class, priv->buf->std.cmd_select,
>>1a258e670 Mario Limonciello 2017-11-01   63 
>		priv->buf->std.input[0],
>>priv->buf->std.input[1],
>>1a258e670 Mario Limonciello 2017-11-01   64 
>		priv->buf->std.input[2],
>>priv->buf->std.input[3]);
>>1a258e670 Mario Limonciello 2017-11-01   65  
>>1a258e670 Mario Limonciello 2017-11-01  @66  	status =
>>wmidev_evaluate_method(wdev, 0, 1, &input, &output);
>>1a258e670 Mario Limonciello 2017-11-01   67  	if
>(ACPI_FAILURE(status))
>>1a258e670 Mario Limonciello 2017-11-01   68  		return -EIO;
>>1a258e670 Mario Limonciello 2017-11-01   69  	obj = (union acpi_object
>>*)output.pointer;
>>1a258e670 Mario Limonciello 2017-11-01   70  	if (obj->type !=
>>ACPI_TYPE_BUFFER) {
>>1a258e670 Mario Limonciello 2017-11-01   71  		dev_dbg(&wdev->dev,
>>"received type: %d\n", obj->type);
>>1a258e670 Mario Limonciello 2017-11-01   72  		if (obj->type ==
>>ACPI_TYPE_INTEGER)
>>1a258e670 Mario Limonciello 2017-11-01   73  			dev_dbg(&wdev->dev,
>>"SMBIOS call failed: %llu\n",
>>1a258e670 Mario Limonciello 2017-11-01   74  				obj->integer.value);
>>1a258e670 Mario Limonciello 2017-11-01   75  		return -EIO;
>>1a258e670 Mario Limonciello 2017-11-01   76  	}
>>1a258e670 Mario Limonciello 2017-11-01   77  	memcpy(&priv->buf->std,
>>obj->buffer.pointer, obj->buffer.length);
>>1a258e670 Mario Limonciello 2017-11-01   78  	dev_dbg(&wdev->dev,
>>"result: [%08x,%08x,%08x,%08x]\n",
>>1a258e670 Mario Limonciello 2017-11-01   79 
>>		priv->buf->std.output[0], priv->buf->std.output[1],
>>1a258e670 Mario Limonciello 2017-11-01   80 
>>		priv->buf->std.output[2], priv->buf->std.output[3]);
>>1a258e670 Mario Limonciello 2017-11-01   81  
>>1a258e670 Mario Limonciello 2017-11-01   82  	return 0;
>>1a258e670 Mario Limonciello 2017-11-01   83  }
>>1a258e670 Mario Limonciello 2017-11-01   84  
>>1a258e670 Mario Limonciello 2017-11-01   85  int
>>dell_smbios_wmi_call(struct calling_interface_buffer *buffer)
>>1a258e670 Mario Limonciello 2017-11-01   86  {
>>1a258e670 Mario Limonciello 2017-11-01   87  	struct wmi_smbios_priv
>>*priv;
>>1a258e670 Mario Limonciello 2017-11-01   88  	size_t difference;
>>1a258e670 Mario Limonciello 2017-11-01   89  	size_t size;
>>1a258e670 Mario Limonciello 2017-11-01   90  	int ret;
>>1a258e670 Mario Limonciello 2017-11-01   91  
>>1a258e670 Mario Limonciello 2017-11-01   92  	mutex_lock(&call_mutex);
>>1a258e670 Mario Limonciello 2017-11-01   93  	priv =
>>get_first_smbios_priv();
>>307ab2a99 Mario Limonciello 2017-11-05   94  	if (!priv) {
>>307ab2a99 Mario Limonciello 2017-11-05   95  		ret = -ENODEV;
>>307ab2a99 Mario Limonciello 2017-11-05   96  		goto out_wmi_call;
>>307ab2a99 Mario Limonciello 2017-11-05   97  	}
>>1a258e670 Mario Limonciello 2017-11-01   98  
>>1a258e670 Mario Limonciello 2017-11-01   99  	size = sizeof(struct
>>calling_interface_buffer);
>>1a258e670 Mario Limonciello 2017-11-01  100  	difference =
>>priv->req_buf_size - sizeof(u64) - size;
>>1a258e670 Mario Limonciello 2017-11-01  101  
>>1a258e670 Mario Limonciello 2017-11-01  102  	memset(&priv->buf->ext,
>>0, difference);
>>1a258e670 Mario Limonciello 2017-11-01  103  	memcpy(&priv->buf->std,
>>buffer, size);
>>1a258e670 Mario Limonciello 2017-11-01  104  	ret =
>>run_smbios_call(priv->wdev);
>>1a258e670 Mario Limonciello 2017-11-01  105  	memcpy(buffer,
>>&priv->buf->std, size);
>>307ab2a99 Mario Limonciello 2017-11-05  106  out_wmi_call:
>>1a258e670 Mario Limonciello 2017-11-01  107 
>>	mutex_unlock(&call_mutex);
>>1a258e670 Mario Limonciello 2017-11-01  108  
>>1a258e670 Mario Limonciello 2017-11-01  109  	return ret;
>>1a258e670 Mario Limonciello 2017-11-01  110  }
>>1a258e670 Mario Limonciello 2017-11-01  111  
>>f2645fa31 Mario Limonciello 2017-11-01  112  static long
>>dell_smbios_wmi_filter(struct wmi_device *wdev, unsigned int cmd,
>>f2645fa31 Mario Limonciello 2017-11-01  113  				   struct
>>wmi_ioctl_buffer *arg)
>>f2645fa31 Mario Limonciello 2017-11-01  114  {
>>f2645fa31 Mario Limonciello 2017-11-01  115  	struct wmi_smbios_priv
>>*priv;
>>f2645fa31 Mario Limonciello 2017-11-01  116  	int ret = 0;
>>f2645fa31 Mario Limonciello 2017-11-01  117  
>>f2645fa31 Mario Limonciello 2017-11-01  118  	switch (cmd) {
>>f2645fa31 Mario Limonciello 2017-11-01  119  	case
>DELL_WMI_SMBIOS_CMD:
>>f2645fa31 Mario Limonciello 2017-11-01  120 
>		mutex_lock(&call_mutex);
>>f2645fa31 Mario Limonciello 2017-11-01  121  		priv =
>>dev_get_drvdata(&wdev->dev);
>>f2645fa31 Mario Limonciello 2017-11-01  122  		if (!priv) {
>>f2645fa31 Mario Limonciello 2017-11-01  123  			ret = -ENODEV;
>>f2645fa31 Mario Limonciello 2017-11-01  124  			goto fail_smbios_cmd;
>>f2645fa31 Mario Limonciello 2017-11-01  125  		}
>>f2645fa31 Mario Limonciello 2017-11-01  126  		memcpy(priv->buf, arg,
>>priv->req_buf_size);
>>f2645fa31 Mario Limonciello 2017-11-01  127  		if
>>(dell_smbios_call_filter(&wdev->dev, &priv->buf->std)) {
>>f2645fa31 Mario Limonciello 2017-11-01  128  			dev_err(&wdev->dev,
>>"Invalid call %d/%d:%8x\n",
>>f2645fa31 Mario Limonciello 2017-11-01  129 
>>				priv->buf->std.cmd_class,
>>f2645fa31 Mario Limonciello 2017-11-01  130 
>>				priv->buf->std.cmd_select,
>>f2645fa31 Mario Limonciello 2017-11-01  131 
>>				priv->buf->std.input[0]);
>>f2645fa31 Mario Limonciello 2017-11-01  132  			ret = -EFAULT;
>>f2645fa31 Mario Limonciello 2017-11-01  133  			goto fail_smbios_cmd;
>>f2645fa31 Mario Limonciello 2017-11-01  134  		}
>>f2645fa31 Mario Limonciello 2017-11-01  135  		ret =
>>run_smbios_call(priv->wdev);
>>f2645fa31 Mario Limonciello 2017-11-01  136  		if (ret)
>>f2645fa31 Mario Limonciello 2017-11-01  137  			goto fail_smbios_cmd;
>>f2645fa31 Mario Limonciello 2017-11-01  138  		memcpy(arg, priv->buf,
>>priv->req_buf_size);
>>f2645fa31 Mario Limonciello 2017-11-01  139  fail_smbios_cmd:
>>f2645fa31 Mario Limonciello 2017-11-01  140 
>>		mutex_unlock(&call_mutex);
>>f2645fa31 Mario Limonciello 2017-11-01  141  		break;
>>f2645fa31 Mario Limonciello 2017-11-01  142  	default:
>>f2645fa31 Mario Limonciello 2017-11-01  143  		ret = -ENOIOCTLCMD;
>>f2645fa31 Mario Limonciello 2017-11-01  144  	}
>>f2645fa31 Mario Limonciello 2017-11-01  145  	return ret;
>>f2645fa31 Mario Limonciello 2017-11-01  146  }
>>f2645fa31 Mario Limonciello 2017-11-01  147  
>>1a258e670 Mario Limonciello 2017-11-01  148  static int
>>dell_smbios_wmi_probe(struct wmi_device *wdev)
>>1a258e670 Mario Limonciello 2017-11-01  149  {
>>4255c30fe Mario Limonciello 2017-11-16  150  	struct wmi_driver
>>*wdriver =
>>4255c30fe Mario Limonciello 2017-11-16  151 
>>		container_of(wdev->dev.driver, struct wmi_driver, driver);
>>1a258e670 Mario Limonciello 2017-11-01  152  	struct wmi_smbios_priv
>>*priv;
>>4255c30fe Mario Limonciello 2017-11-16  153  	u32 hotfix;
>>1a258e670 Mario Limonciello 2017-11-01  154  	int count;
>>1a258e670 Mario Limonciello 2017-11-01  155  	int ret;
>>1a258e670 Mario Limonciello 2017-11-01  156  
>>868b8d33f Mario Limonciello 2017-11-09 @157  	ret =
>>dell_wmi_get_descriptor_valid();
>>868b8d33f Mario Limonciello 2017-11-09  158  	if (ret)
>>868b8d33f Mario Limonciello 2017-11-09  159  		return ret;
>>1a258e670 Mario Limonciello 2017-11-01  160  
>>1a258e670 Mario Limonciello 2017-11-01  161  	priv =
>>devm_kzalloc(&wdev->dev, sizeof(struct wmi_smbios_priv),
>>1a258e670 Mario Limonciello 2017-11-01  162  			    GFP_KERNEL);
>>1a258e670 Mario Limonciello 2017-11-01  163  	if (!priv)
>>1a258e670 Mario Limonciello 2017-11-01  164  		return -ENOMEM;
>>1a258e670 Mario Limonciello 2017-11-01  165  
>>1a258e670 Mario Limonciello 2017-11-01  166  	/* WMI buffer size will
>>be either 4k or 32k depending on machine */
>>1a258e670 Mario Limonciello 2017-11-01 @167  	if
>>(!dell_wmi_get_size(&priv->req_buf_size))
>>1a258e670 Mario Limonciello 2017-11-01  168  		return -EPROBE_DEFER;
>>1a258e670 Mario Limonciello 2017-11-01  169  
>>4255c30fe Mario Limonciello 2017-11-16  170  	/* some SMBIOS calls
>fail
>>unless BIOS contains hotfix */
>>4255c30fe Mario Limonciello 2017-11-16 @171  	if
>>(!dell_wmi_get_hotfix(&hotfix))
>>4255c30fe Mario Limonciello 2017-11-16  172  		return -EPROBE_DEFER;
>>4255c30fe Mario Limonciello 2017-11-16  173  	if (!hotfix) {
>>4255c30fe Mario Limonciello 2017-11-16  174  		dev_warn(&wdev->dev,
>>4255c30fe Mario Limonciello 2017-11-16  175  			"WMI SMBIOS userspace
>>interface not supported(%u), try upgrading to a newer BIOS\n",
>>4255c30fe Mario Limonciello 2017-11-16  176  			hotfix);
>>4255c30fe Mario Limonciello 2017-11-16  177 
>		wdriver->filter_callback
>>= NULL;
>>4255c30fe Mario Limonciello 2017-11-16  178  	}
>>4255c30fe Mario Limonciello 2017-11-16  179  
>>f2645fa31 Mario Limonciello 2017-11-01  180  	/* add in the length
>>object we will use internally with ioctl */
>>f2645fa31 Mario Limonciello 2017-11-01  181  	priv->req_buf_size +=
>>sizeof(u64);
>>f2645fa31 Mario Limonciello 2017-11-01 @182  	ret =
>>set_required_buffer_size(wdev, priv->req_buf_size);
>>f2645fa31 Mario Limonciello 2017-11-01  183  	if (ret)
>>f2645fa31 Mario Limonciello 2017-11-01  184  		return ret;
>>f2645fa31 Mario Limonciello 2017-11-01  185  
>>1a258e670 Mario Limonciello 2017-11-01  186  	count =
>>get_order(priv->req_buf_size);
>>1a258e670 Mario Limonciello 2017-11-01  187  	priv->buf = (void
>>*)__get_free_pages(GFP_KERNEL, count);
>>1a258e670 Mario Limonciello 2017-11-01  188  	if (!priv->buf)
>>1a258e670 Mario Limonciello 2017-11-01  189  		return -ENOMEM;
>>1a258e670 Mario Limonciello 2017-11-01  190  
>>1a258e670 Mario Limonciello 2017-11-01  191  	/* ID is used by
>>dell-smbios to set priority of drivers */
>>1a258e670 Mario Limonciello 2017-11-01  192  	wdev->dev.id = 1;
>>1a258e670 Mario Limonciello 2017-11-01  193  	ret =
>>dell_smbios_register_device(&wdev->dev, &dell_smbios_wmi_call);
>>1a258e670 Mario Limonciello 2017-11-01  194  	if (ret)
>>1a258e670 Mario Limonciello 2017-11-01  195  		goto fail_register;
>>1a258e670 Mario Limonciello 2017-11-01  196  
>>1a258e670 Mario Limonciello 2017-11-01  197  	priv->wdev = wdev;
>>1a258e670 Mario Limonciello 2017-11-01  198 
>>	dev_set_drvdata(&wdev->dev, priv);
>>1a258e670 Mario Limonciello 2017-11-01  199  	mutex_lock(&list_mutex);
>>1a258e670 Mario Limonciello 2017-11-01  200 
>>	list_add_tail(&priv->list, &wmi_list);
>>1a258e670 Mario Limonciello 2017-11-01  201 
>>	mutex_unlock(&list_mutex);
>>1a258e670 Mario Limonciello 2017-11-01  202  
>>1a258e670 Mario Limonciello 2017-11-01  203  	return 0;
>>1a258e670 Mario Limonciello 2017-11-01  204  
>>1a258e670 Mario Limonciello 2017-11-01  205  fail_register:
>>1a258e670 Mario Limonciello 2017-11-01  206  	free_pages((unsigned
>>long)priv->buf, count);
>>1a258e670 Mario Limonciello 2017-11-01  207  	return ret;
>>1a258e670 Mario Limonciello 2017-11-01  208  }
>>1a258e670 Mario Limonciello 2017-11-01  209  
>>
>>:::::: The code at line 66 was first introduced by commit
>>:::::: 1a258e670434f404a4500b65ba1afea2c2b29bba platform/x86:
>>dell-smbios-wmi: Add new WMI dispatcher driver
>>
>>:::::: TO: Mario Limonciello <mario.limonciello@xxxxxxxx>
>>:::::: CC: Darren Hart (VMware) <dvhart@xxxxxxxxxxxxx>
>>
>>---
>>0-DAY kernel test infrastructure                Open Source Technology
>>Center
>>https://lists.01.org/pipermail/kbuild-all                   Intel
>>Corporation

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux