Hi Yinbo,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on hid/for-next v5.16-rc4 next-20211208]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Yinbo-Zhu/HID-usbhid-enable-remo...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: hexagon-randconfig-r045-20211207
(
https://download.01.org/0day-ci/archive/20211208/202112082256.02orEkq6-lk...)
compiler: clang version 14.0.0 (
https://github.com/llvm/llvm-project
097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/0day-ci/linux/commit/e900e8c9eb7fd4fda123036095e7e7ec8...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Yinbo-Zhu/HID-usbhid-enable-remote-wakeup-function-for-usbhid-device/20211208-174035
git checkout e900e8c9eb7fd4fda123036095e7e7ec87439547
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir
ARCH=hexagon SHELL=/bin/bash drivers/usb/core/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
> drivers/usb/core/hub.c:2550:10: error: implicit declaration of
function 'usb_enable_remote_wakeup' [-Werror,-Wimplicit-function-declaration]
err = usb_enable_remote_wakeup(udev);
^
1 error generated.
vim +/usb_enable_remote_wakeup +2550 drivers/usb/core/hub.c
2488
2489 /**
2490 * usb_new_device - perform initial device setup (usbcore-internal)
2491 * @udev: newly addressed device (in ADDRESS state)
2492 *
2493 * This is called with devices which have been detected but not fully
2494 * enumerated. The device descriptor is available, but not descriptors
2495 * for any device configuration. The caller must have locked either
2496 * the parent hub (if udev is a normal device) or else the
2497 * usb_bus_idr_lock (if udev is a root hub). The parent's pointer to
2498 * udev has already been installed, but udev is not yet visible through
2499 * sysfs or other filesystem code.
2500 *
2501 * This call is synchronous, and may not be used in an interrupt context.
2502 *
2503 * Only the hub driver or root-hub registrar should ever call this.
2504 *
2505 * Return: Whether the device is configured properly or not. Zero if the
2506 * interface was registered with the driver core; else a negative errno
2507 * value.
2508 *
2509 */
2510 int usb_new_device(struct usb_device *udev)
2511 {
2512 struct usb_host_config *config;
2513 int ncfg;
2514 int err;
2515
2516 if (udev->parent) {
2517 /* Initialize non-root-hub device wakeup to disabled;
2518 * device (un)configuration controls wakeup capable
2519 * sysfs power/wakeup controls wakeup enabled/disabled
2520 */
2521 device_init_wakeup(&udev->dev, 0);
2522 }
2523
2524 /* Tell the runtime-PM framework the device is active */
2525 pm_runtime_set_active(&udev->dev);
2526 pm_runtime_get_noresume(&udev->dev);
2527 pm_runtime_use_autosuspend(&udev->dev);
2528 pm_runtime_enable(&udev->dev);
2529
2530 /* By default, forbid autosuspend for all devices. It will be
2531 * allowed for hubs during binding.
2532 */
2533 usb_disable_autosuspend(udev);
2534
2535 err = usb_enumerate_device(udev); /* Read descriptors */
2536 if (err < 0)
2537 goto fail;
2538 dev_dbg(&udev->dev, "udev %d, busnum %d, minor = %d\n",
2539 udev->devnum, udev->bus->busnum,
2540 (((udev->bus->busnum-1) * 128) + (udev->devnum-1)));
2541 /* export the usbdev device-node for libusb */
2542 udev->dev.devt = MKDEV(USB_DEVICE_MAJOR,
2543 (((udev->bus->busnum-1) * 128) + (udev->devnum-1)));
2544
2545 for (ncfg = 0; ncfg < udev->descriptor.bNumConfigurations; ncfg++) {
2546 config = &udev->config[ncfg];
2547 if ((config->desc.bmAttributes & (1 << 5)) == 0)
2548 break;
2549 if (ncfg + 1 == udev->descriptor.bNumConfigurations) {
2550 err = usb_enable_remote_wakeup(udev);
2551 if
(err)
2552 dev_dbg(&udev->dev,
2553 "won't remote wakeup, err %d\n", err);
2554 }
2555 }
2556
2557 /* Tell the world! */
2558 announce_device(udev);
2559
2560 if (udev->serial)
2561 add_device_randomness(udev->serial, strlen(udev->serial));
2562 if (udev->product)
2563 add_device_randomness(udev->product, strlen(udev->product));
2564 if (udev->manufacturer)
2565 add_device_randomness(udev->manufacturer,
2566 strlen(udev->manufacturer));
2567
2568 device_enable_async_suspend(&udev->dev);
2569
2570 /* check whether the hub or firmware marks this port as non-removable */
2571 set_usb_port_removable(udev);
2572
2573 /* Register the device. The device driver is responsible
2574 * for configuring the device and invoking the add-device
2575 * notifier chain (used by usbfs and possibly others).
2576 */
2577 err = device_add(&udev->dev);
2578 if (err) {
2579 dev_err(&udev->dev, "can't device_add, error %d\n", err);
2580 goto fail;
2581 }
2582
2583 /* Create link files between child device and usb port device. */
2584 if (udev->parent) {
2585 struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent);
2586 int port1 = udev->portnum;
2587 struct usb_port *port_dev = hub->ports[port1 - 1];
2588
2589 err = sysfs_create_link(&udev->dev.kobj,
2590 &port_dev->dev.kobj, "port");
2591 if (err)
2592 goto fail;
2593
2594 err = sysfs_create_link(&port_dev->dev.kobj,
2595 &udev->dev.kobj, "device");
2596 if (err) {
2597 sysfs_remove_link(&udev->dev.kobj, "port");
2598 goto fail;
2599 }
2600
2601 if (!test_and_set_bit(port1, hub->child_usage_bits))
2602 pm_runtime_get_sync(&port_dev->dev);
2603 }
2604
2605 (void) usb_create_ep_devs(&udev->dev, &udev->ep0, udev);
2606 usb_mark_last_busy(udev);
2607 pm_runtime_put_sync_autosuspend(&udev->dev);
2608 return err;
2609
2610 fail:
2611 usb_set_device_state(udev, USB_STATE_NOTATTACHED);
2612 pm_runtime_disable(&udev->dev);
2613 pm_runtime_set_suspended(&udev->dev);
2614 return err;
2615 }
2616
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org