From 81ccaa1f4babaf5f5af6a8d65003794bc29f90f6243ad98064f7fdae479089c8 Mon Sep 17 00:00:00 2001 From: Chris Bradbury Date: Wed, 19 Jul 2023 23:58:24 +0000 Subject: [PATCH] Accepting request 1099600 from home:chrBrd:branches:hardware Patch to fix bulds with kernel version >= 6.4 OBS-URL: https://build.opensuse.org/request/show/1099600 OBS-URL: https://build.opensuse.org/package/show/hardware/gasket-driver?expand=0&rev=11 --- fix-kernel-gte-6.4.patch | 43 ++++++++++++++++++++++++++++++++++++++++ gasket-driver.changes | 5 +++++ gasket-driver.spec | 31 ++++++++++++++++++++--------- 3 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 fix-kernel-gte-6.4.patch diff --git a/fix-kernel-gte-6.4.patch b/fix-kernel-gte-6.4.patch new file mode 100644 index 0000000..82f464d --- /dev/null +++ b/fix-kernel-gte-6.4.patch @@ -0,0 +1,43 @@ +From 83cbe8264fc63511e4e6250f2426749951a340c8 Mon Sep 17 00:00:00 2001 +From: Chris Bradbury +Date: Fri, 14 Jul 2023 18:55:56 +0100 +Subject: [PATCH] Amend use of `class_create()` for kernels >= 6.4 + +The function signature for `class_create()` was changed in kernels >= 6.4.x to only accept a single argument (see kernel commit #dcfbb67). + +This change will conditionally modify how `class_create()` is called depending on the kernel version. +--- + src/gasket_core.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/gasket_core.c b/src/gasket_core.c +index 139616b..b1c2726 100644 +--- a/src/gasket_core.c ++++ b/src/gasket_core.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + #ifdef GASKET_KERNEL_TRACE_SUPPORT + #define CREATE_TRACE_POINTS +@@ -1837,8 +1838,15 @@ int gasket_register_device(const struct gasket_driver_desc *driver_desc) + internal = &g_descs[desc_idx]; + mutex_init(&internal->mutex); + memset(internal->devs, 0, sizeof(struct gasket_dev *) * GASKET_DEV_MAX); +- internal->class = +- class_create(driver_desc->module, driver_desc->name); ++ ++ /* Function signature for `class_create()` is changed in kernel >= 6.4.x ++ * to only accept a single argument. ++ * */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) ++ internal->class = class_create(driver_desc->module, driver_desc->name); ++#else ++ internal->class = class_create(driver_desc->name); ++#endif + + if (IS_ERR(internal->class)) { + pr_err("Cannot register %s class [ret=%ld]\n", + diff --git a/gasket-driver.changes b/gasket-driver.changes index 50fb3ad..7b87ea5 100644 --- a/gasket-driver.changes +++ b/gasket-driver.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Jul 19 23:18:19 UTC 2023 - Chris Bradbury + +- Patch to fix bulds with kernel version >= 6.4 + ------------------------------------------------------------------- Thu May 11 19:12:53 UTC 2023 - Chris Bradbury diff --git a/gasket-driver.spec b/gasket-driver.spec index ae13494..83f12e4 100644 --- a/gasket-driver.spec +++ b/gasket-driver.spec @@ -11,8 +11,10 @@ # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# + # Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + #=== # Packaging Notes: @@ -43,8 +45,8 @@ Source1: group.conf Source2: preamble Source3: gasket-driver-rpmlintrc BuildRequires: %kernel_module_package_buildreqs -BuildRequires: sysuser-tools BuildRequires: pesign-obs-integration +BuildRequires: sysuser-tools Requires: %{name}-kmp %sysusers_requires @@ -57,7 +59,12 @@ Requires: %{name}-kmp # https://github.com/google/gasket-driver/pull/10 # https://github.com/google/gasket-driver/commit/a87c105c14e826dafd4b25c36fa7c7c657a7ad03.patch # PATCH-FIX-OPENSUSE fix-for-backported-dma-buf-ns.patch gh#google/gasket-driver!10 -Patch0: fix-for-backported-dma-buf-ns.patch +Patch0: fix-for-backported-dma-buf-ns.patch + +# The function signature for `class_create()` was changed in kernels >= 6.4.x to only accept a +# single argument (see kernel commit #dcfbb67). +# This patch conditionally modifies how `class_create()` is called depending on the kernel version. +Patch1: fix-kernel-gte-6.4.patch # This directive instructs the build service to temporarily save the project's # certificate as %%_sourcedir/_projectcert.crt. See: @@ -74,15 +81,19 @@ Patch0: fix-for-backported-dma-buf-ns.patch %description The Coral Gasket Driver allows usage of the Coral EdgeTPU on Linux systems. -The driver contains two modules: +The driver contains two modules: - Gasket (Google ASIC Software, Kernel Extensions, and Tools) is a top level driver for lightweight communication with Google ASICs. - Apex refers to the EdgeTPU v1. -# This magic "KMP" subpackage is documented in + + + +# This magic "KMP" subpackage is documented in # https://en.opensuse.org/Kernel_Module_Packages#Specfile_mechanisms + %package KMP -Summary: Gasket Driver kernel modules +Summary: Gasket Driver kernel modules Group: System/Kernel %description KMP @@ -93,11 +104,14 @@ The Linux Kernel Module Package for the Coral Gasket Driver. mkdir -p obj # The `DMA_BUF` module namespace has been backported to the 5.14 kernel used -# in Leap 15.5, so apply the relevant patch. +# in Leap 15.5, so apply the relevant patch. %if 0%{?sle_version} == 150500 %patch0 -p1 %endif +# Apply patches without conditions. +%patch1 -p1 + %build # Build the kernel modules. for flavor in %flavors_to_build; do @@ -118,7 +132,7 @@ export INSTALL_MOD_DIR=updates for flavor in %flavors_to_build; do make -C %{kernel_source $flavor} modules_install M=$PWD/obj/$flavor done -# Install the system group used by the driver. +# Install the system group used by the driver. mkdir -p %{buildroot}%{_sysusersdir} install -m 0644 %{SOURCE1} -D %{buildroot}%{_sysusersdir}/group-apex.conf # Install the udev rules defined in the module source. @@ -136,4 +150,3 @@ export BRP_PESIGN_COMPRESS_MODULE="xz" %{_udevrulesdir}/70-apex.rules %changelog -