Slimbook-Team/slimbook-qc71-dkms

Compilation breaks on kernel 6.x

Closed this issue · 3 comments

j3j5 commented

I'm running Arch with the latest kernel (6.3.1) and trying to compile this module throws some errors.

❯ make
make -C /lib/modules/6.3.1-arch1-1/build M=/home/user/bin/slimbook-qc71-dkms/slimbook-qc71 modules
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/ec.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/features.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/main.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/misc.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/pdev.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/events.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/debugfs.o
  CC [M]  /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.o
/home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.c:93:27: error: initialization of ‘int (*)(struct power_supply *, struct acpi_battery_hook *)’ from incompatible pointer type ‘int (*)(struct power_supply *)’ [-Werror=incompatible-pointer-types]
   93 |         .add_battery    = qc71_laptop_batt_add,
      |                           ^~~~~~~~~~~~~~~~~~~~
/home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.c:93:27: note: (near initialization for ‘qc71_laptop_batt_hook.add_battery’)
/home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.c:94:27: error: initialization of ‘int (*)(struct power_supply *, struct acpi_battery_hook *)’ from incompatible pointer type ‘int (*)(struct power_supply *)’ [-Werror=incompatible-pointer-types]
   94 |         .remove_battery = qc71_laptop_batt_remove,
      |                           ^~~~~~~~~~~~~~~~~~~~~~~
/home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.c:94:27: note: (near initialization for ‘qc71_laptop_batt_hook.remove_battery’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:252: /home/user/bin/slimbook-qc71-dkms/slimbook-qc71/battery.o] Error 1
make[1]: *** [Makefile:2025: /home/user/bin/slimbook-qc71-dkms/slimbook-qc71] Error 2
make: *** [Makefile:25: all] Error 2

Let me know if I can provide any more info.

This also happens with Ubuntu:

 * dkms: running auto installation service for kernel 6.2.0-20-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der

Building module:
Cleaning build area...
make -j20 KERNELRELEASE=6.2.0-20-generic KDIR=/lib/modules/6.2.0-20-generic/build...(bad exit status: 2)
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/slimbook-qc71-dkms.0.crash'
Error! Bad return status for module build on kernel: 6.2.0-20-generic (x86_64)
Consult /var/lib/dkms/slimbook-qc71/0.2/build/make.log for more information.
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
   ...fail!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: error al procesar el paquete linux-image-6.2.0-20-generic (--configure):
 el subproceso instalado paquete linux-image-6.2.0-20-generic script post-installation devolvió el código de salida de error 1
Se encontraron errores al procesar:
 linux-headers-6.2.0-20-generic
 linux-headers-generic
 linux-generic
 linux-image-6.2.0-20-generic

I had the same error with my Slimbook Executive 14 after upgrading it to Ubuntu 23.04, which currently comes with the 6.2.0-25-generic kernel. To solve it, I looked for the battery.c file of the slimbook-qc71, in my case it was in this path /var/lib/dkms/slimbook-qc71/0.2.1/source/battery.c, and added the second parameter struct acpi_battery_hook *hook to the functions qc71_laptop_batt_add and qc71_laptop_batt_remove.

❯ diff /var/lib/dkms/slimbook-qc71/0.2.1/source/battery.c.old /var/lib/dkms/slimbook-qc71/0.2.1/source/battery.c
75c75
< static int qc71_laptop_batt_add(struct power_supply *battery)
---
> static int qc71_laptop_batt_add(struct power_supply *battery, struct acpi_battery_hook *hook)
83c83
< static int qc71_laptop_batt_remove(struct power_supply *battery)
---
> static int qc71_laptop_batt_remove(struct power_supply *battery, struct acpi_battery_hook *hook)

With this, I was able to finish installing Ubuntu 23.04 with the 6.2.0-25-generic kernel.

Same problem with 22.04.3 LTS. Same solution. Thanks.