mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
Merge "arm64: defconfig: Enable CONFIG_UNUSED_KSYMS_WHITELIST_ONLY"
This commit is contained in:
commit
fc82c60db2
11 changed files with 80961 additions and 116475 deletions
2
Makefile
2
Makefile
|
|
@ -1362,6 +1362,8 @@ all: modules
|
|||
|
||||
PHONY += modules
|
||||
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order modules.builtin
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
87
abi_gki_aarch64_qcom_internal_whitelist
Normal file
87
abi_gki_aarch64_qcom_internal_whitelist
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# List of symbols exported by QCOM in-kernel drivers and used by external DLKMs
|
||||
# QCOM internal whitelist
|
||||
[abi_whitelist]
|
||||
cnss_athdiag_read
|
||||
cnss_athdiag_write
|
||||
cnss_auto_resume
|
||||
cnss_auto_suspend
|
||||
cnss_device_crashed
|
||||
cnss_force_collect_rddm
|
||||
cnss_get_fw_files_for_target
|
||||
cnss_get_msi_address
|
||||
cnss_get_msi_irq
|
||||
cnss_get_platform_cap
|
||||
cnss_get_soc_info
|
||||
cnss_get_user_msi_assignment
|
||||
cnss_get_virt_ramdump_mem
|
||||
cnss_idle_restart
|
||||
cnss_idle_shutdown
|
||||
cnss_lock_pm_sem
|
||||
cnss_pci_allow_l1
|
||||
cnss_pci_force_wake_release
|
||||
cnss_pci_force_wake_request
|
||||
cnss_pci_is_device_awake
|
||||
cnss_pci_is_device_down
|
||||
cnss_pci_is_drv_connected
|
||||
cnss_pci_link_down
|
||||
cnss_pci_lock_reg_window
|
||||
cnss_pci_prevent_l1
|
||||
cnss_pci_unlock_reg_window
|
||||
cnss_qmi_send
|
||||
cnss_qmi_send_get
|
||||
cnss_qmi_send_put
|
||||
cnss_release_pm_sem
|
||||
cnss_remove_pm_qos
|
||||
cnss_request_bus_bandwidth
|
||||
cnss_request_pm_qos
|
||||
cnss_self_recovery
|
||||
cnss_set_fw_log_mode
|
||||
cnss_smmu_get_domain
|
||||
cnss_smmu_map
|
||||
cnss_wlan_disable
|
||||
cnss_wlan_enable
|
||||
cnss_wlan_register_driver
|
||||
cnss_wlan_unregister_driver
|
||||
hdcp2_app_comm
|
||||
hdcp2_close_stream
|
||||
hdcp2_deinit
|
||||
hdcp2_force_encryption
|
||||
hdcp2_init
|
||||
hdcp2_open_stream
|
||||
ipa_register_rmnet_ctl_cb
|
||||
ipa_rmnet_ctl_xmit
|
||||
ipa_unregister_rmnet_ctl_cb
|
||||
qmi_rmnet_ps_ind_deregister
|
||||
qmi_rmnet_ps_ind_register
|
||||
qmi_rmnet_work_maybe_restart
|
||||
rmnet_ctl_log
|
||||
rmnet_ctl_register_client
|
||||
rmnet_ctl_send_client
|
||||
rmnet_ctl_unregister_client
|
||||
rmnet_deliver_skb
|
||||
rmnet_frag_deliver
|
||||
rmnet_frag_ipv6_skip_exthdr
|
||||
rmnet_get_endpoint
|
||||
rmnet_get_port
|
||||
rmnet_is_real_dev_registered
|
||||
rmnet_map_checksum_downlink_packet
|
||||
rmnet_map_dl_ind_deregister
|
||||
rmnet_map_dl_ind_register
|
||||
rmnet_map_flow_command
|
||||
rmnet_perf_chain_end
|
||||
rmnet_perf_deag_entry
|
||||
rmnet_perf_desc_entry
|
||||
rmnet_recycle_frag_descriptor
|
||||
rmnet_set_skb_proto
|
||||
rmnet_shs_skb_entry
|
||||
socinfo_get_id
|
||||
socinfo_get_id_string
|
||||
subsys_bus_type
|
||||
__tracepoint_rmnet_freq_boost
|
||||
__tracepoint_rmnet_freq_reset
|
||||
__tracepoint_rmnet_perf_low
|
||||
__tracepoint_rmnet_shs_err
|
||||
__tracepoint_rmnet_shs_high
|
||||
__tracepoint_rmnet_shs_low
|
||||
__tracepoint_rmnet_shs_wq_high
|
||||
__tracepoint_rmnet_shs_wq_low
|
||||
2637
abi_gki_aarch64_qcom_whitelist
Normal file
2637
abi_gki_aarch64_qcom_whitelist
Normal file
File diff suppressed because it is too large
Load diff
3
arch/arm64/configs/vendor/holi_GKI.config
vendored
3
arch/arm64/configs/vendor/holi_GKI.config
vendored
|
|
@ -1,5 +1,8 @@
|
|||
CONFIG_ARCH_QCOM=y
|
||||
CONFIG_ARCH_HOLI=y
|
||||
CONFIG_TRIM_UNUSED_KSYMS=y
|
||||
CONFIG_UNUSED_KSYMS_WHITELIST="abi_gki_aarch64_qcom_whitelist abi_gki_aarch64_qcom_internal_whitelist"
|
||||
CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y
|
||||
CONFIG_PINCTRL_HOLI=m
|
||||
CONFIG_HVC_DCC=y
|
||||
CONFIG_HVC_DCC_SERIALIZE_SMP=y
|
||||
|
|
|
|||
1
arch/arm64/configs/vendor/holi_QGKI.config
vendored
1
arch/arm64/configs/vendor/holi_QGKI.config
vendored
|
|
@ -1,3 +1,4 @@
|
|||
# CONFIG_TRIM_UNUSED_KSYMS is not set
|
||||
CONFIG_QCOM_IOMMU_IO_PGTABLE_QUIRKS=y
|
||||
CONFIG_IOMMU_DEBUGFS=y
|
||||
CONFIG_QCOM_LAZY_MAPPING=y
|
||||
|
|
|
|||
3
arch/arm64/configs/vendor/lahaina_GKI.config
vendored
3
arch/arm64/configs/vendor/lahaina_GKI.config
vendored
|
|
@ -1,6 +1,9 @@
|
|||
CONFIG_ARCH_QCOM=y
|
||||
CONFIG_ARCH_LAHAINA=y
|
||||
CONFIG_ARCH_SHIMA=y
|
||||
CONFIG_TRIM_UNUSED_KSYMS=y
|
||||
CONFIG_UNUSED_KSYMS_WHITELIST="abi_gki_aarch64_qcom_whitelist abi_gki_aarch64_qcom_internal_whitelist"
|
||||
CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y
|
||||
CONFIG_HVC_DCC=y
|
||||
CONFIG_HVC_DCC_SERIALIZE_SMP=y
|
||||
CONFIG_REGULATOR_STUB=m
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
CONFIG_LOCALVERSION="-qgki"
|
||||
# CONFIG_TRIM_UNUSED_KSYMS is not set
|
||||
CONFIG_QCOM_IOMMU_IO_PGTABLE_QUIRKS=y
|
||||
CONFIG_QCOM_LAZY_MAPPING=y
|
||||
CONFIG_QCOM_SECURE_BUFFER=y
|
||||
|
|
|
|||
11
init/Kconfig
11
init/Kconfig
|
|
@ -2250,6 +2250,17 @@ config UNUSED_KSYMS_WHITELIST
|
|||
one per line. The path can be absolute, or relative to the kernel
|
||||
source tree.
|
||||
|
||||
config UNUSED_KSYMS_WHITELIST_ONLY
|
||||
bool "Export ONLY the symbols that are a part of whitelist"
|
||||
depends on UNUSED_KSYMS_WHITELIST != ""
|
||||
help
|
||||
Keep ONLY the symbols that are defined in the whitelist. The
|
||||
CONFIG works on top of CONFIG_UNUSED_KSYMS_WHITELIST which takes
|
||||
whitelist file(s) as its settings, and would export only the
|
||||
symbols listed in these file(s).
|
||||
This is mainly used to detect if drivers are using the symbols
|
||||
outside of the whitelist.
|
||||
|
||||
endif # MODULES
|
||||
|
||||
config MODULES_TREE_LOOKUP
|
||||
|
|
|
|||
|
|
@ -40,6 +40,11 @@ esac
|
|||
# Generate a new symbol list file
|
||||
$CONFIG_SHELL $srctree/scripts/gen_autoksyms.sh "$new_ksyms_file"
|
||||
|
||||
if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST_ONLY" ] && [ -f "vmlinux" ] ; then
|
||||
info "WARNING" "CONFIG_UNUSED_KSYMS_WHITELIST_ONLY is enabled. "\
|
||||
"Non-whitelisted symbols will be undefined!"
|
||||
fi
|
||||
|
||||
# Extract changes between old and new list and touch corresponding
|
||||
# dependency files.
|
||||
changed=$(
|
||||
|
|
|
|||
|
|
@ -21,13 +21,18 @@ esac
|
|||
|
||||
ksym_wl=/dev/null
|
||||
if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST" ]; then
|
||||
# Use 'eval' to expand the whitelist path and check if it is relative
|
||||
eval ksym_wl="$CONFIG_UNUSED_KSYMS_WHITELIST"
|
||||
[ "${ksym_wl}" != "${ksym_wl#/}" ] || ksym_wl="$abs_srctree/$ksym_wl"
|
||||
if [ ! -f "$ksym_wl" ]; then
|
||||
echo "ERROR: '$ksym_wl' whitelist file not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
for UNUSED_KSYMS_WHITELIST_FILE in $CONFIG_UNUSED_KSYMS_WHITELIST; do
|
||||
# Use 'eval' to expand the whitelist path and
|
||||
# check if it is relative
|
||||
eval ksym_wl="$UNUSED_KSYMS_WHITELIST_FILE"
|
||||
[ "${ksym_wl}" != "${ksym_wl#/}" ] ||
|
||||
ksym_wl="$abs_srctree/$ksym_wl"
|
||||
if [ ! -f "$ksym_wl" ]; then
|
||||
echo "ERROR: '$ksym_wl' whitelist file not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
ksym_wls="$ksym_wls $ksym_wl"
|
||||
done
|
||||
fi
|
||||
|
||||
# Generate a new ksym list file with symbols needed by the current
|
||||
|
|
@ -42,7 +47,8 @@ EOT
|
|||
[ -f modules.order ] && modlist=modules.order || modlist=/dev/null
|
||||
sed 's/ko$/mod/' $modlist |
|
||||
xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- |
|
||||
cat - "$ksym_wl" |
|
||||
cat - $ksym_wls |
|
||||
sed 's/^#.*//;s/^ *//;/[[abi_whitelist]]/g' |
|
||||
sort -u |
|
||||
sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$output_file"
|
||||
|
||||
|
|
@ -50,3 +56,27 @@ sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$output_file"
|
|||
if [ -n "$CONFIG_MODVERSIONS" ]; then
|
||||
echo "#define __KSYM_module_layout 1" >> "$output_file"
|
||||
fi
|
||||
|
||||
if [ -n "$CONFIG_UNUSED_KSYMS_WHITELIST_ONLY" ] && [ -f "vmlinux" ] ; then
|
||||
syms_from_whitelist="$(mktemp)"
|
||||
syms_from_vmlinux="$(mktemp)"
|
||||
|
||||
cat $ksym_wls |
|
||||
sed 's/^#.*//;s/^ *//;/[[abi_whitelist]]/g' |
|
||||
sort -u > "$syms_from_whitelist"
|
||||
|
||||
$NM --defined-only vmlinux |
|
||||
grep "__ksymtab_" |
|
||||
sed 's/^.*__ksymtab_//' |
|
||||
sort -u > "$syms_from_vmlinux"
|
||||
|
||||
# Forcefully unexport the symbols that are not declared in the whitelist
|
||||
syms_to_unexport=$(comm -13 "$syms_from_whitelist" "$syms_from_vmlinux")
|
||||
|
||||
for sym_to_unexport in $syms_to_unexport; do
|
||||
sed -i "/^#define __KSYM_${sym_to_unexport} 1/d" \
|
||||
"$output_file"
|
||||
done
|
||||
|
||||
rm -f "$syms_from_whitelist" "$syms_from_vmlinux"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue