drivers: Fix bus->match for Linux v6.11

In Linux v6.11, the 'bus_type' structure match() callback was updated to
make its 'drv' argument constant. Add a conftest test to detect this and
update the relevant drivers according to fix building them for Linux
v6.11.

Bug 4749580

Change-Id: I895d97241a7357074bb34b8e7a5bdfa2e31d5ca5
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3183068
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Jon Hunter
2024-07-12 18:08:31 +01:00
committed by mobile promotions
parent 19c93284bd
commit fc171fe539
5 changed files with 39 additions and 7 deletions

View File

@@ -97,6 +97,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_destroy_queue
NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_queue_max_hw_sectors
NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_open_has_gendisk_arg
NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_release_has_no_mode_arg
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_match_has_const_drv_arg
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_remove_has_int_return_type
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_uevent_has_const_dev_arg
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_attribute_struct_has_const_struct_class_attribute

View File

@@ -6662,6 +6662,26 @@ compile_test() {
"NV_BLOCK_DEVICE_OPERATIONS_RELEASE_HAS_NO_MODE_ARG" "" "types"
;;
bus_type_struct_match_has_const_drv_arg)
#
# Determine if the 'match' callback from the 'bus_type' structure
# has a const 'struct device_driver' argument.
#
# Commit d69d80484598 ("driver core: have match() callback in struct
# bus_type take a const *") updated the match() function for the
# 'bus_type' structure to take a constant 'drv' argument.
#
CODE="
#include <linux/device/bus.h>
int conftest_bus_type_struct_match_has_const_drv_arg(struct device *dev,
const struct device_driver *drv,
struct bus_type *bus) {
return bus->match(dev, drv);
}"
compile_check_conftest "$CODE" "NV_BUS_TYPE_STRUCT_MATCH_HAS_CONST_DRV_ARG" "" "types"
;;
bus_type_struct_remove_has_int_return_type)
#
# Determine if the 'remove' callback from the 'bus_type' structure