diff mbox series

[hid,v11,01/14] HID: Kconfig: split HID support and hid-core compilation

Message ID 20221025093458.457089-2-benjamin.tissoires@redhat.com (mailing list archive)
State Superseded
Delegated to: BPF
Headers show
Series Introduce eBPF support for HID devices | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch, async
bpf/vmtest-bpf-next-VM_Test-4 success Logs for llvm-toolchain
bpf/vmtest-bpf-next-VM_Test-5 success Logs for set-matrix
bpf/vmtest-bpf-next-VM_Test-2 success Logs for build for x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-3 success Logs for build for x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-1 success Logs for build for s390x with gcc
bpf/vmtest-bpf-next-VM_Test-13 success Logs for test_progs_no_alu32 on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-14 success Logs for test_progs_no_alu32 on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-15 success Logs for test_verifier on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-16 success Logs for test_verifier on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-17 success Logs for test_verifier on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-7 success Logs for test_maps on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-8 success Logs for test_maps on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-9 success Logs for test_progs on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-10 success Logs for test_progs on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-11 success Logs for test_progs on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-12 success Logs for test_progs_no_alu32 on s390x with gcc
bpf/vmtest-bpf-next-PR success PR summary
bpf/vmtest-bpf-next-VM_Test-6 success Logs for test_maps on s390x with gcc

Commit Message

Benjamin Tissoires Oct. 25, 2022, 9:34 a.m. UTC
Currently, we step into drivers/hid/ based on the value of
CONFIG_HID.

However, that value is a tristate, meaning that it can be a module.

As per the documentation, if we jump into the subdirectory by
following an obj-m, we can not compile anything inside that
subdirectory in vmlinux. It is considered as a bug.

To make things more friendly to HID-BPF, split HID (the HID core
parameter) from HID_SUPPORT (do we want any kind of HID support in the
system?), and make this new config a boolean.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>

---

no changes in v11

no changes in v10

no changes in v9

no changes in v8

new in v7
---
 drivers/Makefile    |  2 +-
 drivers/hid/Kconfig | 20 +++++++++++---------
 2 files changed, 12 insertions(+), 10 deletions(-)

Comments

kernel test robot Oct. 29, 2022, 1:55 p.m. UTC | #1
Hi Benjamin,

I love your patch! Yet something to improve:

[auto build test ERROR on hid/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Benjamin-Tissoires/Introduce-eBPF-support-for-HID-devices/20221025-173852
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git master
patch link:    https://lore.kernel.org/r/20221025093458.457089-2-benjamin.tissoires%40redhat.com
patch subject: [PATCH hid v11 01/14] HID: Kconfig: split HID support and hid-core compilation
config: s390-zfcpdump_defconfig
compiler: s390-linux-gcc (GCC) 12.1.0
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/intel-lab-lkp/linux/commit/b6e78c340cbaf82c96ab3148db0b13f737abe8d7
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Benjamin-Tissoires/Introduce-eBPF-support-for-HID-devices/20221025-173852
        git checkout b6e78c340cbaf82c96ab3148db0b13f737abe8d7
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   s390-linux-ld: drivers/hid/hid-a4tech.o: in function `hid_parse':
>> include/linux/hid.h:1094: undefined reference to `hid_open_report'
   s390-linux-ld: drivers/hid/hid-a4tech.o: in function `a4_probe':
>> drivers/hid/hid-a4tech.c:134: undefined reference to `hid_hw_start'
   s390-linux-ld: drivers/hid/hid-a4tech.o: in function `a4_driver_init':
>> drivers/hid/hid-a4tech.c:164: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-a4tech.o: in function `a4_driver_exit':
>> drivers/hid/hid-a4tech.c:164: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-belkin.o: in function `hid_parse':
>> include/linux/hid.h:1094: undefined reference to `hid_open_report'
   s390-linux-ld: drivers/hid/hid-belkin.o: in function `belkin_probe':
>> drivers/hid/hid-belkin.c:59: undefined reference to `hid_hw_start'
   s390-linux-ld: drivers/hid/hid-belkin.o: in function `belkin_driver_init':
>> drivers/hid/hid-belkin.c:86: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-belkin.o: in function `belkin_driver_exit':
>> drivers/hid/hid-belkin.c:86: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-cherry.o: in function `ch_driver_init':
>> drivers/hid/hid-cherry.c:69: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-cherry.o: in function `ch_driver_exit':
>> drivers/hid/hid-cherry.c:69: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-cypress.o: in function `hid_parse':
>> include/linux/hid.h:1094: undefined reference to `hid_open_report'
   s390-linux-ld: drivers/hid/hid-cypress.o: in function `cp_probe':
>> drivers/hid/hid-cypress.c:141: undefined reference to `hid_hw_start'
   s390-linux-ld: drivers/hid/hid-cypress.o: in function `cp_driver_init':
>> drivers/hid/hid-cypress.c:177: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-cypress.o: in function `cp_driver_exit':
>> drivers/hid/hid-cypress.c:177: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-ezkey.o: in function `ez_driver_init':
>> drivers/hid/hid-ezkey.c:76: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-ezkey.o: in function `ez_driver_exit':
>> drivers/hid/hid-ezkey.c:76: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-ite.o: in function `ite_probe':
>> drivers/hid/hid-ite.c:99: undefined reference to `hid_open_report'
>> s390-linux-ld: drivers/hid/hid-ite.c:103: undefined reference to `hid_hw_start'
   s390-linux-ld: drivers/hid/hid-ite.o: in function `ite_driver_init':
>> drivers/hid/hid-ite.c:136: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-ite.o: in function `ite_driver_exit':
>> drivers/hid/hid-ite.c:136: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-kensington.o: in function `ks_driver_init':
   drivers/hid/hid-kensington.c:47: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-kensington.o: in function `ks_driver_exit':
   drivers/hid/hid-kensington.c:47: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `ms_remove':
   drivers/hid/hid-microsoft.c:409: undefined reference to `hid_hw_stop'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `hid_parse':
   include/linux/hid.h:1094: undefined reference to `hid_open_report'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `ms_probe':
   drivers/hid/hid-microsoft.c:391: undefined reference to `hid_hw_start'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `ms_ff_worker':
   drivers/hid/hid-microsoft.c:302: undefined reference to `hid_hw_output_report'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `ms_driver_init':
   drivers/hid/hid-microsoft.c:467: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-microsoft.o: in function `ms_driver_exit':
   drivers/hid/hid-microsoft.c:467: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-monterey.o: in function `mr_driver_init':
   drivers/hid/hid-monterey.c:63: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-monterey.o: in function `mr_driver_exit':
   drivers/hid/hid-monterey.c:63: undefined reference to `hid_unregister_driver'
   s390-linux-ld: drivers/hid/hid-redragon.o: in function `redragon_driver_init':
   drivers/hid/hid-redragon.c:60: undefined reference to `__hid_register_driver'
   s390-linux-ld: drivers/hid/hid-redragon.o: in function `redragon_driver_exit':
   drivers/hid/hid-redragon.c:60: undefined reference to `hid_unregister_driver'
   pahole: .tmp_vmlinux.btf: No such file or directory
   .btf.vmlinux.bin.o: file not recognized: file format not recognized


vim +1094 include/linux/hid.h

022e8c4d08b3b0 Jiri Slaby     2008-05-16  1082  
c500c9714011ed Jiri Slaby     2008-05-16  1083  /**
c500c9714011ed Jiri Slaby     2008-05-16  1084   * hid_parse - parse HW reports
c500c9714011ed Jiri Slaby     2008-05-16  1085   *
c500c9714011ed Jiri Slaby     2008-05-16  1086   * @hdev: hid device
c500c9714011ed Jiri Slaby     2008-05-16  1087   *
c500c9714011ed Jiri Slaby     2008-05-16  1088   * Call this from probe after you set up the device (if needed). Your
c500c9714011ed Jiri Slaby     2008-05-16  1089   * report_fixup will be called (if non-NULL) after reading raw report from
c500c9714011ed Jiri Slaby     2008-05-16  1090   * device before passing it to hid layer for real parsing.
c500c9714011ed Jiri Slaby     2008-05-16  1091   */
c500c9714011ed Jiri Slaby     2008-05-16  1092  static inline int __must_check hid_parse(struct hid_device *hdev)
c500c9714011ed Jiri Slaby     2008-05-16  1093  {
a7197c2e4120ce Henrik Rydberg 2012-04-22 @1094  	return hid_open_report(hdev);
c500c9714011ed Jiri Slaby     2008-05-16  1095  }
c500c9714011ed Jiri Slaby     2008-05-16  1096
diff mbox series

Patch

diff --git a/drivers/Makefile b/drivers/Makefile
index bdf1c66141c9..cf5d8b86da8f 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -137,7 +137,7 @@  obj-$(CONFIG_CRYPTO)		+= crypto/
 obj-$(CONFIG_SUPERH)		+= sh/
 obj-y				+= clocksource/
 obj-$(CONFIG_DCA)		+= dca/
-obj-$(CONFIG_HID)		+= hid/
+obj-$(CONFIG_HID_SUPPORT)	+= hid/
 obj-$(CONFIG_PPC_PS3)		+= ps3/
 obj-$(CONFIG_OF)		+= of/
 obj-$(CONFIG_SSB)		+= ssb/
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 185a077d59cd..ad767955ee62 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -2,12 +2,18 @@ 
 #
 # HID driver configuration
 #
-menu "HID support"
-     depends on INPUT
+menuconfig HID_SUPPORT
+	bool "HID bus support"
+	default y
+	depends on INPUT
+	help
+	  This option adds core support for human interface device (HID).
+	  You will also need drivers from the following menu to make use of it.
+
+if HID_SUPPORT
 
 config HID
-	tristate "HID bus support"
-	depends on INPUT
+	tristate "HID bus core support"
 	default y
 	help
 	  A human interface device (HID) is a type of computer device that
@@ -24,8 +30,6 @@  config HID
 
 	  If unsure, say Y.
 
-if HID
-
 config HID_BATTERY_STRENGTH
 	bool "Battery level reporting for HID devices"
 	select POWER_SUPPLY
@@ -1278,8 +1282,6 @@  config HID_KUNIT_TEST
 
 endmenu
 
-endif # HID
-
 source "drivers/hid/usbhid/Kconfig"
 
 source "drivers/hid/i2c-hid/Kconfig"
@@ -1290,4 +1292,4 @@  source "drivers/hid/amd-sfh-hid/Kconfig"
 
 source "drivers/hid/surface-hid/Kconfig"
 
-endmenu
+endif # HID_SUPPORT