Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 2f7f6ce2 authored by Todd Kjos's avatar Todd Kjos
Browse files

ANDROID: gki_defconfig: disable KPROBES, update ABI



Security teams from Google and Qualcomm request disabling
due to "large attack vector".

Also update the abi definition required for this change:

Leaf changes summary: 3 artifacts changed
Changed leaf types summary: 3 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct module at module.h:348:1' changed:
  type size changed from 7168 to 6656 (in bits)
  2 data member deletions:
    'error_injection_entry* module::ei_funcs', at offset 6656 (in bits) at module.h:514:1

    'unsigned int module::num_ei_funcs', at offset 6720 (in bits) at module.h:515:1

  1309 impacted interfaces:
    function void* PDE_DATA(const inode*)
    function gendisk* __alloc_disk_node(int, int)
    function sk_buff* __cfg80211_alloc_event_skb(wiphy*, wireless_dev*, nl80211_commands, nl80211_attrs, unsigned int, int, int, gfp_t)
    function sk_buff* __cfg80211_alloc_reply_skb(wiphy*, nl80211_commands, nl80211_attrs, int)
    function class* __class_create(module*, const char*, lock_class_key*)
    function int __class_register(class*, lock_class_key*)
    function int __close_fd(files_struct*, unsigned int)
    function net_device* __dev_get_by_index(net*, int)
    function int __devm_iio_device_register(device*, iio_dev*, module*)
    function phy_provider* __devm_of_phy_provider_register(device*, device_node*, module*, void ()*)
    function regmap* __devm_regmap_init(device*, const regmap_bus*, void*, const regmap_config*, lock_class_key*, const char*)
    function regmap* __devm_regmap_init_i2c(i2c_client*, const regmap_config*, lock_class_key*, const char*)
    function regmap* __devm_regmap_init_mmio_clk(device*, const char*, void*, const regmap_config*, lock_class_key*, const char*)
    function resource* __devm_request_region(device*, resource*, resource_size_t, resource_size_t, const char*)
    function reset_control* __devm_reset_control_get(device*, const char*, int, bool, bool, bool)
    function void* __devres_alloc_node(dr_release_t, size_t, gfp_t, int, const char*)
    function void __drm_atomic_helper_crtc_destroy_state(drm_crtc_state*)
    function void __drm_atomic_helper_crtc_duplicate_state(drm_crtc*, drm_crtc_state*)
    function void __drm_atomic_helper_crtc_reset(drm_crtc*, drm_crtc_state*)
    function void __drm_atomic_helper_plane_destroy_state(drm_plane_state*)
    function void __drm_atomic_helper_plane_duplicate_state(drm_plane*, drm_plane_state*)
    function void __drm_atomic_helper_private_obj_duplicate_state(drm_private_obj*, drm_private_state*)
    function int __ethtool_get_link_ksettings(net_device*, ethtool_link_ksettings*)
    function int __hci_cmd_send(hci_dev*, u16, u32, void*)
    function sk_buff* __hci_cmd_sync(hci_dev*, u16, u32, void*, u32)
    function sk_buff* __hci_cmd_sync_ev(hci_dev*, u16, u32, void*, u8, u32)
    function int __hid_register_driver(hid_driver*, module*, const char*)
    function irq_domain* __irq_domain_add(fwnode_handle*, int, irq_hw_number_t, int, const irq_domain_ops*, void*)
    function int __mdiobus_register(mii_bus*, module*)
    function void __module_get(module*)
    function sk_buff* __napi_alloc_skb(napi_struct*, unsigned int, gfp_t)
    function void __napi_schedule(napi_struct*)
    function sk_buff* __netdev_alloc_skb(net_device*, unsigned int, gfp_t)
    function int __netif_set_xps_queue(net_device*, const unsigned long int*, u16, bool)
    function int __netlink_dump_start(sock*, sk_buff*, const nlmsghdr*, netlink_dump_control*)
    function reset_control* __of_reset_control_get(device_node*, const char*, int, bool, bool, bool)
    function int __pci_register_driver(pci_driver*, module*, const char*)
    function int __platform_driver_register(platform_driver*, module*)
    function int __platform_register_drivers(platform_driver* const*, unsigned int, module*)
    function void __pm_relax(wakeup_source*)
    function void __pm_runtime_disable(device*, bool)
    function int __pm_runtime_idle(device*, int)
    function int __pm_runtime_resume(device*, int)
    function int __pm_runtime_set_status(device*, unsigned int)
    function int __pm_runtime_suspend(device*, int)
    function void __pm_runtime_use_autosuspend(device*, bool)
    function void __pm_stay_awake(wakeup_source*)
    function regmap* __regmap_init(device*, const regmap_bus*, void*, const regmap_config*, lock_class_key*, const char*)
    function int __rtc_register_device(module*, rtc_device*)
    function int __serdev_device_driver_register(serdev_device_driver*, module*)
    function bool __skb_flow_dissect(const net*, const sk_buff*, flow_dissector*, void*, void*, __be16, int, int, unsigned int)
    function int __spi_register_driver(module*, spi_driver*)
    function int __spmi_driver_register(spmi_driver*, module*)
    function tty_driver* __tty_alloc_driver(unsigned int, module*, unsigned long int)
    function int __tty_insert_flip_char(tty_port*, unsigned char, char)
    function usb_hcd* __usb_create_hcd(const hc_driver*, device*, device*, const char*, usb_hcd*)
    function unsigned long int _copy_from_iter(void*, unsigned long int, iov_iter*)
    function bool _copy_from_iter_full(void*, unsigned long int, iov_iter*)
    function unsigned long int _copy_to_iter(void*, unsigned long int, iov_iter*)
    function void _dev_emerg(const device*, const char*, ...)
    function void _dev_err(const device*, const char*, ...)
    function void _dev_info(const device*, const char*, ...)
    function void _dev_notice(const device*, const char*, ...)
    function void _dev_warn(const device*, const char*, ...)
    function net_device* alloc_etherdev_mqs(int, unsigned int, unsigned int)
    function net_device* alloc_netdev_mqs(int, const char*, unsigned char, void ()*, unsigned int, unsigned int)
    function bool arch_bpf_jit_check_func(const bpf_prog*)
    function bio* bio_alloc_bioset(unsigned int, unsigned int, bio_set*)
    function void bio_chain(bio*, bio*)
    function void bio_clone_blkg_association(bio*, bio*)
    function void blk_cleanup_queue(request_queue*)
    function void blk_execute_rq(request_queue*, gendisk*, request*, int)
    function request* blk_get_request(request_queue*, unsigned int, blk_mq_req_flags_t)
    function bool blk_mq_complete_request(request*)
    function void blk_mq_end_request(request*, unsigned char)
    function request_queue* blk_mq_init_queue(blk_mq_tag_set*)
    function void blk_mq_quiesce_queue(request_queue*)
    function void blk_mq_start_request(request*)
    function void blk_mq_start_stopped_hw_queues(request_queue*, bool)
    function void blk_mq_stop_hw_queue(blk_mq_hw_ctx*)
    function void blk_mq_unquiesce_queue(request_queue*)
    function void blk_put_request(request*)
    function void blk_queue_alignment_offset(request_queue*, unsigned int)
    function void blk_queue_bounce_limit(request_queue*, u64)
    function void blk_queue_flag_set(unsigned int, request_queue*)
    function void blk_queue_io_min(request_queue*, unsigned int)
    function void blk_queue_io_opt(request_queue*, unsigned int)
    function void blk_queue_logical_block_size(request_queue*, unsigned int)
    function void blk_queue_max_discard_sectors(request_queue*, unsigned int)
    function void blk_queue_max_discard_segments(request_queue*, unsigned short int)
    function void blk_queue_max_hw_sectors(request_queue*, unsigned int)
    function void blk_queue_max_segment_size(request_queue*, unsigned int)
    function void blk_queue_max_segments(request_queue*, unsigned short int)
    function void blk_queue_max_write_zeroes_sectors(request_queue*, unsigned int)
    function void blk_queue_physical_block_size(request_queue*, unsigned int)
    function void blk_queue_update_dma_alignment(request_queue*, int)
    function void blk_queue_write_cache(request_queue*, bool, bool)
    function int blk_rq_map_kern(request_queue*, request*, void*, unsigned int, gfp_t)
    function int blk_rq_map_sg(request_queue*, request*, scatterlist*)
    function bpf_prog* bpf_prog_add(bpf_prog*, int)
    function void bpf_prog_put(bpf_prog*)
    function void bpf_prog_sub(bpf_prog*, int)
    function void bpf_trace_run10(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)
    function void bpf_trace_run6(bpf_prog*, u64, u64, u64, u64, u64, u64)
    function void bpf_trace_run7(bpf_prog*, u64, u64, u64, u64, u64, u64, u64)
    function void bpf_trace_run8(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64)
    function int bprm_change_interp(const char*, linux_binprm*)
    function device* bus_find_device(bus_type*, device*, void*, void ()*)
    function int bus_for_each_drv(bus_type*, device_driver*, void*, void ()*)
    function int bus_register(bus_type*)
    function void bus_unregister(bus_type*)
    function int call_netdevice_notifiers(unsigned long int, net_device*)
    function int cdc_parse_cdc_header(usb_cdc_parsed_header*, usb_interface*, u8*, int)
    function int cdev_add(cdev*, unsigned int, unsigned int)
    function cdev* cdev_alloc()
    function void cdev_del(cdev*)
    function int cdev_device_add(cdev*, device*)
    function void cdev_device_del(cdev*, device*)
    function void cdev_init(cdev*, const file_operations*)
    function void cfg80211_connect_done(net_device*, cfg80211_connect_resp_params*, gfp_t)
    function void cfg80211_cqm_rssi_notify(net_device*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)
    function void cfg80211_del_sta_sinfo(net_device*, const u8*, station_info*, gfp_t)
    function void cfg80211_disconnected(net_device*, u16, const u8*, size_t, bool, gfp_t)
    function cfg80211_bss* cfg80211_get_bss(wiphy*, ieee80211_channel*, const u8*, const u8*, size_t, ieee80211_bss_type, ieee80211_privacy)
    function cfg80211_bss* cfg80211_inform_bss_data(wiphy*, cfg80211_inform_bss*, cfg80211_bss_frame_type, const u8*, u64, u16, u16, const u8*, size_t, gfp_t)
    function void cfg80211_mgmt_tx_status(wireless_dev*, u64, const u8*, size_t, bool, gfp_t)
    function void cfg80211_michael_mic_failure(net_device*, const u8*, nl80211_key_type, int, const u8*, gfp_t)
    function void cfg80211_new_sta(net_device*, const u8*, station_info*, gfp_t)
    function void cfg80211_put_bss(wiphy*, cfg80211_bss*)
    function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)
    function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)
    function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)
    function bool cfg80211_rx_mgmt(wireless_dev*, int, int, const u8*, size_t, u32)
    function void cfg80211_rx_unprot_mlme_mgmt(net_device*, const u8*, size_t)
    function void cfg80211_scan_done(cfg80211_scan_request*, cfg80211_scan_info*)
    function void cfg80211_sched_scan_results(wiphy*, u64)
    function void cfg80211_tdls_oper_request(net_device*, const u8*, nl80211_tdls_operation, u16, gfp_t)
    function void cfg80211_unlink_bss(wiphy*, cfg80211_bss*)
    function void cfg80211_unregister_wdev(wireless_dev*)
    function void class_destroy(class*)
    function device* class_find_device(class*, device*, void*, void ()*)
    function void class_unregister(class*)
    function void clear_inode(inode*)
    function int clk_bulk_get_all(device*, clk_bulk_data**)
    function clk* clk_get(device*, const char*)
    function int clk_hw_register(device*, clk_hw*)
    function clk_hw* clk_hw_register_fixed_factor(device*, const char*, const char*, unsigned long int, unsigned int, unsigned int)
    function void clk_sync_state(device*)
    function int component_add(device*, const component_ops*)
    function int component_bind_all(device*, void*)
    function void component_del(device*, const component_ops*)
    function int component_master_add_with_match(device*, const component_master_ops*, component_match*)
    function void component_master_del(device*, const component_master_ops*)
    function void component_match_add_release(device*, component_match**, void ()*, void ()*, void*)
    function void component_unbind_all(device*, void*)
    function void console_stop(console*)
    function int copy_strings_kernel(int, const char* const*, linux_binprm*)
    function int cpufreq_register_driver(cpufreq_driver*)
    function int cpufreq_unregister_driver(cpufreq_driver*)
    function crypto_engine* crypto_engine_alloc_init(device*, bool)
    function int crypto_engine_exit(crypto_engine*)
    function int crypto_engine_start(crypto_engine*)
    function void crypto_finalize_ablkcipher_request(crypto_engine*, ablkcipher_request*, int)
    function int crypto_register_alg(crypto_alg*)
    function int crypto_transfer_ablkcipher_request_to_engine(crypto_engine*, ablkcipher_request*)
    function int crypto_unregister_alg(crypto_alg*)
    function timespec64 current_time(inode*)
    function void d_drop(dentry*)
    function void d_instantiate(dentry*, inode*)
    function int dapm_regulator_event(snd_soc_dapm_widget*, snd_kcontrol*, int)
    function __poll_t datagram_poll(file*, socket*, poll_table*)
    function loff_t default_llseek(file*, loff_t, int)
    function void del_gendisk(gendisk*)
    function file* dentry_open(const path*, int, const cred*)
    function void dev_close(net_device*)
    function const char* dev_driver_string(const device*)
    function fwnode_handle* dev_fwnode(device*)
    function net_device* dev_get_by_index(net*, int)
    function net_device* dev_get_by_index_rcu(net*, int)
    function net_device* dev_get_by_name(net*, const char*)
    function regmap* dev_get_regmap(device*, const char*)
    function rtnl_link_stats64* dev_get_stats(net_device*, rtnl_link_stats64*)
    function int dev_mc_sync_multiple(net_device*, net_device*)
    function void dev_mc_unsync(net_device*, net_device*)
    function int dev_open(net_device*, netlink_ext_ack*)
    function device* dev_pm_domain_attach_by_name(device*, const char*)
    function void dev_pm_domain_detach(device*, bool)
    function int dev_pm_opp_add(device*, unsigned long int, unsigned long int)
    function dev_pm_opp* dev_pm_opp_find_freq_ceil(device*, unsigned long int*)
    function dev_pm_opp* dev_pm_opp_find_freq_exact(device*, unsigned long int, bool)
    function dev_pm_opp* dev_pm_opp_find_freq_floor(device*, unsigned long int*)
    function int dev_pm_opp_get_opp_count(device*)
    function int dev_pm_opp_of_add_table(device*)
    function void dev_pm_opp_of_remove_table(device*)
    function opp_table* dev_pm_opp_set_supported_hw(device*, const u32*, unsigned int)
    function void dev_printk(const char*, const device*, const char*, ...)
    function int dev_set_mtu(net_device*, int)
    function int dev_set_name(device*, const char*, ...)
    function int dev_uc_sync_multiple(net_device*, net_device*)
    function void dev_uc_unsync(net_device*, net_device*)
    function void devfreq_cooling_unregister(thermal_cooling_device*)
    function dev_pm_opp* devfreq_recommended_opp(device*, unsigned long int*, unsigned int)
    function int devfreq_register_opp_notifier(device*, devfreq*)
    function int devfreq_resume_device(devfreq*)
    function int devfreq_suspend_device(devfreq*)
    function int devfreq_unregister_opp_notifier(device*, devfreq*)
    function int device_add(device*)
    function void device_add_disk(device*, gendisk*, const attribute_group**)
    function void* device_connection_find_match(device*, const char*, void*, devcon_match_fn_t)
    function device* device_create(class*, device*, unsigned int, void*, const char*, ...)
    function int device_create_file(device*, const device_attribute*)
    function void device_del(device*)
    function void device_destroy(class*, unsigned int)
    function device* device_find_child(device*, void*, void ()*)
    function int device_for_each_child(device*, void*, void ()*)
    function void* device_get_match_data(device*)
    function fwnode_handle* device_get_named_child_node(device*, const char*)
    function fwnode_handle* device_get_next_child_node(device*, fwnode_handle*)
    function int device_init_wakeup(device*, bool)
    function void device_initialize(device*)
    function int device_match_fwnode(device*, void*)
    function int device_match_name(device*, void*)
    function int device_pm_wait_for_dev(device*, device*)
    function bool device_property_present(device*, const char*)
    function int device_property_read_string(device*, const char*, const char**)
    function int device_property_read_u32_array(device*, const char*, unsigned int*, unsigned long int)
    function int device_property_read_u8_array(device*, const char*, u8*, size_t)
    function int device_register(device*)
    function void device_release_driver(device*)
    function void device_remove_file(device*, const device_attribute*)
    function void device_set_wakeup_capable(device*, bool)
    function void device_unregister(device*)
    function int device_wakeup_enable(device*)
    function int devm_add_action(device*, void ()*, void*)
    function backlight_device* devm_backlight_device_register(device*, const char*, device*, void*, const backlight_ops*, const backlight_properties*)
    function int devm_clk_bulk_get(device*, int, clk_bulk_data*)
    function int devm_clk_bulk_get_all(device*, clk_bulk_data**)
    function clk* devm_clk_get(device*, const char*)
    function clk* devm_clk_get_optional(device*, const char*)
    function int devm_clk_hw_register(device*, clk_hw*)
    function clk* devm_clk_register(device*, clk_hw*)
    function devfreq* devm_devfreq_add_device(device*, devfreq_dev_profile*, const char*, void*)
    function void devm_devfreq_remove_device(device*, devfreq*)
    function extcon_dev* devm_extcon_dev_allocate(device*, const unsigned int*)
    function int devm_extcon_dev_register(device*, extcon_dev*)
    function int devm_extcon_register_notifier(device*, extcon_dev*, unsigned int, notifier_block*)
    function int devm_extcon_register_notifier_all(device*, extcon_dev*, notifier_block*)
    function void devm_free_irq(device*, unsigned int, void*)
    function int devm_gpio_request(device*, unsigned int, const char*)
    function int devm_gpio_request_one(device*, unsigned int, unsigned long int, const char*)
    function gpio_desc* devm_gpiod_get(device*, const char*, gpiod_flags)
    function gpio_desc* devm_gpiod_get_index(device*, const char*, unsigned int, gpiod_flags)
    function gpio_desc* devm_gpiod_get_optional(device*, const char*, gpiod_flags)
    function iio_channel* devm_iio_channel_get(device*, const char*)
    function iio_dev* devm_iio_device_alloc(device*, int)
    function input_dev* devm_input_allocate_device(device*)
    function void* devm_ioremap(device*, long long unsigned int, long long unsigned int)
    function void* devm_ioremap_nocache(device*, long long unsigned int, long long unsigned int)
    function void* devm_ioremap_resource(device*, const resource*)
    function void* devm_ioremap_wc(device*, resource_size_t, resource_size_t)
    function void devm_iounmap(device*, void*)
    function void devm_kfree(device*, void*)
    function void* devm_kmalloc(device*, unsigned long int, unsigned int)
    function void* devm_kmemdup(device*, void*, unsigned long int, unsigned int)
    function void* devm_memremap(device*, long long unsigned int, unsigned long int, unsigned long int)
    function int devm_mfd_add_devices(device*, int, const mfd_cell*, int, resource*, int, irq_domain*)
    function nvmem_cell* devm_nvmem_cell_get(device*, const char*)
    function nvmem_device* devm_nvmem_register(device*, const nvmem_config*)
    function int devm_of_clk_add_hw_provider(device*, void ()*, void*)
    function int devm_of_platform_populate(device*)
    function phy* devm_phy_create(device*, device_node*, const phy_ops*)
    function phy* devm_phy_get(device*, const char*)
    function pinctrl* devm_pinctrl_get(device*)
    function pinctrl_dev* devm_pinctrl_register(device*, pinctrl_desc*, void*)
    function void* devm_platform_ioremap_resource(platform_device*, unsigned int)
    function power_supply* devm_power_supply_register(device*, const power_supply_desc*, const power_supply_config*)
    function int devm_register_reboot_notifier(device*, notifier_block*)
    function int devm_regmap_add_irq_chip(device*, regmap*, int, int, int, const regmap_irq_chip*, regmap_irq_chip_data**)
    function regmap_field* devm_regmap_field_alloc(device*, regmap*, reg_field)
    function int devm_regulator_bulk_get(device*, int, regulator_bulk_data*)
    function regulator* devm_regulator_get(device*, const char*)
    function regulator* devm_regulator_get_exclusive(device*, const char*)
    function regulator* devm_regulator_get_optional(device*, const char*)
    function void devm_regulator_put(regulator*)
    function regulator_dev* devm_regulator_register(device*, const regulator_desc*, const regulator_config*)
    function int devm_request_any_context_irq(device*, unsigned int, void ()*, unsigned long int, const char*, void*)
    function int devm_request_threaded_irq(device*, unsigned int, void ()*, void ()*, unsigned long int, const char*, void*)
    function reset_control* devm_reset_control_array_get(device*, bool, bool)
    function int devm_reset_controller_register(device*, reset_controller_dev*)
    function rtc_device* devm_rtc_allocate_device(device*)
    function rtc_device* devm_rtc_device_register(device*, const char*, const rtc_class_ops*, module*)
    function int devm_snd_soc_register_card(device*, snd_soc_card*)
    function int devm_snd_soc_register_component(device*, const snd_soc_component_driver*, snd_soc_dai_driver*, int)
    function void devres_add(device*, void*)
    function int devres_destroy(device*, void ()*, void ()*, void*)
    function int devres_release(device*, void ()*, void ()*, void*)
    function void* dma_alloc_attrs(device*, unsigned long int, long long unsigned int*, unsigned int, unsigned long int)
    function dma_buf_attachment* dma_buf_attach(dma_buf*, device*)
    function int dma_buf_begin_cpu_access(dma_buf*, dma_data_direction)
    function void dma_buf_detach(dma_buf*, dma_buf_attachment*)
    function int dma_buf_end_cpu_access(dma_buf*, dma_data_direction)
    function dma_buf* dma_buf_export(const dma_buf_export_info*)
    function int dma_buf_fd(dma_buf*, int)
    function dma_buf* dma_buf_get(int)
    function void* dma_buf_kmap(dma_buf*, unsigned long int)
    function void dma_buf_kunmap(dma_buf*, unsigned long int, void*)
    function sg_table* dma_buf_map_attachment(dma_buf_attachment*, dma_data_direction)
    function int dma_buf_mmap(dma_buf*, vm_area_struct*, unsigned long int)
    function void dma_buf_put(dma_buf*)
    function void dma_buf_unmap_attachment(dma_buf_attachment*, sg_table*, dma_data_direction)
    function void* dma_buf_vmap(dma_buf*)
    function void dma_buf_vunmap(dma_buf*, void*)
    function long long unsigned int dma_direct_map_page(device*, page*, unsigned long int, unsigned long int, dma_data_direction, unsigned long int)
    function int dma_direct_map_sg(device*, scatterlist*, int, dma_data_direction, unsigned long int)
    function void dma_direct_sync_sg_for_device(device*, scatterlist*, int, dma_data_direction)
    function void dma_direct_sync_single_for_cpu(device*, long long unsigned int, unsigned long int, dma_data_direction)
    function void dma_direct_sync_single_for_device(device*, long long unsigned int, unsigned long int, dma_data_direction)
    function void dma_direct_unmap_page(device*, long long unsigned int, unsigned long int, dma_data_direction, unsigned long int)
    function void dma_direct_unmap_sg(device*, scatterlist*, int, dma_data_direction, unsigned long int)
    function void dma_free_attrs(device*, unsigned long int, void*, long long unsigned int, unsigned long int)
    function int dma_get_sgtable_attrs(device*, sg_table*, void*, dma_addr_t, size_t, unsigned long int)
    function size_t dma_max_mapping_size(device*)
    function int dma_mmap_attrs(device*, vm_area_struct*, void*, dma_addr_t, size_t, unsigned long int)
    function void* dma_pool_alloc(dma_pool*, gfp_t, dma_addr_t*)
    function dma_pool* dma_pool_create(const char*, device*, size_t, size_t, size_t)
    function void dma_pool_destroy(dma_pool*)
    function void dma_pool_free(dma_pool*, void*, dma_addr_t)
    function void dma_release_channel(dma_chan*)
    function dma_chan* dma_request_chan(device*, const char*)
    function int dma_set_coherent_mask(device*, long long unsigned int)
    function int dma_set_mask(device*, long long unsigned int)
    function void* dmam_alloc_attrs(device*, size_t, dma_addr_t*, gfp_t, unsigned long int)
    function void dmam_free_coherent(device*, size_t, void*, dma_addr_t)
    function void do_SAK(tty_struct*)
    function void dput(dentry*)
    function int driver_attach(device_driver*)
    function int driver_register(device_driver*)
    function void driver_unregister(device_driver*)
    function int drm_add_edid_modes(drm_connector*, edid*)
    function int drm_add_modes_noedid(drm_connector*, int, int)
    function drm_private_state* drm_atomic_get_private_obj_state(drm_atomic_state*, drm_private_obj*)
    function void drm_atomic_helper_async_commit(drm_device*, drm_atomic_state*)
    function int drm_atomic_helper_check(drm_device*, drm_atomic_state*)
    function int drm_atomic_helper_check_plane_state(drm_plane_state*, const drm_crtc_state*, int, int, bool, bool)
    function void drm_atomic_helper_cleanup_planes(drm_device*, drm_atomic_state*)
    function int drm_atomic_helper_commit(drm_device*, drm_atomic_state*, bool)
    function void drm_atomic_helper_commit_cleanup_done(drm_atomic_state*)
    function void drm_atomic_helper_commit_hw_done(drm_atomic_state*)
    function void drm_atomic_helper_commit_modeset_disables(drm_device*, drm_atomic_state*)
    function void drm_atomic_helper_commit_modeset_enables(drm_device*, drm_atomic_state*)
    function void drm_atomic_helper_commit_planes(drm_device*, drm_atomic_state*, unsigned int)
    function void drm_atomic_helper_commit_tail(drm_atomic_state*)
    function void drm_atomic_helper_connector_destroy_state(drm_connector*, drm_connector_state*)
    function drm_connector_state* drm_atomic_helper_connector_duplicate_state(drm_connector*)
    function void drm_atomic_helper_connector_reset(drm_connector*)
    function void drm_atomic_helper_crtc_destroy_state(drm_crtc*, drm_crtc_state*)
    function drm_crtc_state* drm_atomic_helper_crtc_duplicate_state(drm_crtc*)
    function void drm_atomic_helper_crtc_reset(drm_crtc*)
    function int drm_atomic_helper_dirtyfb(drm_framebuffer*, drm_file*, unsigned int, unsigned int, drm_clip_rect*, unsigned int)
    function int drm_atomic_helper_disable_plane(drm_plane*, drm_modeset_acquire_ctx*)
    function int drm_atomic_helper_page_flip(drm_crtc*, drm_framebuffer*, drm_pending_vblank_event*, uint32_t, drm_modeset_acquire_ctx*)
    function void drm_atomic_helper_plane_destroy_state(drm_plane*, drm_plane_state*)
    function drm_plane_state* drm_atomic_helper_plane_duplicate_state(drm_plane*)
    function void drm_atomic_helper_plane_reset(drm_plane*)
    function int drm_atomic_helper_prepare_planes(drm_device*, drm_atomic_state*)
    function int drm_atomic_helper_resume(drm_device*, drm_atomic_state*)
    function int drm_atomic_helper_set_config(drm_mode_set*, drm_modeset_acquire_ctx*)
    function void drm_atomic_helper_shutdown(drm_device*)
    function drm_atomic_state* drm_atomic_helper_suspend(drm_device*)
    function int drm_atomic_helper_swap_state(drm_atomic_state*, bool)
    function int drm_atomic_helper_update_plane(drm_plane*, drm_crtc*, drm_framebuffer*, int, int, unsigned int, unsigned int, uint32_t, uint32_t, uint32_t, uint32_t, drm_modeset_acquire_ctx*)
    function void drm_atomic_helper_wait_for_dependencies(drm_atomic_state*)
    function void drm_atomic_helper_wait_for_vblanks(drm_device*, drm_atomic_state*)
    function void drm_atomic_private_obj_fini(drm_private_obj*)
    function void drm_atomic_private_obj_init(drm_device*, drm_private_obj*, drm_private_state*, const drm_private_state_funcs*)
    function void drm_bridge_add(drm_bridge*)
    function int drm_bridge_attach(drm_encoder*, drm_bridge*, drm_bridge*)
    function void drm_bridge_remove(drm_bridge*)
    function bool drm_calc_vbltimestamp_from_scanoutpos(drm_device*, unsigned int, int*, ktime_t*, bool)
    function int drm_class_device_register(device*)
    function void drm_class_device_unregister(device*)
    function long int drm_compat_ioctl(file*, unsigned int, unsigned long int)
    function void drm_connector_attach_edid_property(drm_connector*)
    function int drm_connector_attach_encoder(drm_connector*, drm_encoder*)
    function void drm_connector_cleanup(drm_connector*)
    function bool drm_connector_has_possible_encoder(drm_connector*, drm_encoder*)
    function int drm_connector_init(drm_device*, drm_connector*, const drm_connector_funcs*, int)
    function int drm_connector_register(drm_connector*)
    function void drm_connector_unregister(drm_connector*)
    function int drm_connector_update_edid_property(drm_connector*, const edid*)
    function void drm_crtc_cleanup(drm_crtc*)
    function bool drm_crtc_handle_vblank(drm_crtc*)
    function int drm_crtc_init_with_planes(drm_device*, drm_crtc*, drm_plane*, drm_plane*, const drm_crtc_funcs*, const char*, ...)
    function void drm_crtc_send_vblank_event(drm_crtc*, drm_pending_vblank_event*)
    function void drm_crtc_set_max_vblank_count(drm_crtc*, u32)
    function int drm_crtc_vblank_get(drm_crtc*)
    function void drm_crtc_vblank_off(drm_crtc*)
    function void drm_crtc_vblank_on(drm_crtc*)
    function void drm_crtc_vblank_put(drm_crtc*)
    function void drm_crtc_vblank_reset(drm_crtc*)
    function drm_display_mode* drm_cvt_mode(drm_device*, int, int, int, bool, bool, bool)
    function drm_device* drm_dev_alloc(drm_driver*, device*)
    function void drm_dev_dbg(const device*, unsigned int, const char*, ...)
    function void drm_dev_printk(const device*, const char*, const char*, ...)
    function void drm_dev_put(drm_device*)
    function int drm_dev_register(drm_device*, unsigned long int)
    function int drm_dev_set_unique(drm_device*, const char*)
    function void drm_dev_unregister(drm_device*)
    function edid* drm_do_get_edid(drm_connector*, void ()*, void*)
    function int drm_dp_aux_register(drm_dp_aux*)
    function void drm_dp_aux_unregister(drm_dp_aux*)
    function ssize_t drm_dp_dpcd_read(drm_dp_aux*, unsigned int, void*, size_t)
    function int drm_dp_dpcd_read_link_status(drm_dp_aux*, u8*)
    function ssize_t drm_dp_dpcd_write(drm_dp_aux*, unsigned int, void*, size_t)
    function int drm_dp_link_configure(drm_dp_aux*, drm_dp_link*)
    function int drm_dp_link_power_down(drm_dp_aux*, drm_dp_link*)
    function int drm_dp_link_power_up(drm_dp_aux*, drm_dp_link*)
    function int drm_dp_link_probe(drm_dp_aux*, drm_dp_link*)
    function void drm_encoder_cleanup(drm_encoder*)
    function int drm_encoder_init(drm_device*, drm_encoder*, const drm_encoder_funcs*, int, const char*, ...)
    function int drm_framebuffer_init(drm_device*, drm_framebuffer*, const drm_framebuffer_funcs*)
    function int drm_gem_create_mmap_offset(drm_gem_object*)
    function drm_framebuffer* drm_gem_fb_create(drm_device*, drm_file*, const drm_mode_fb_cmd2*)
    function int drm_gem_fb_create_handle(drm_framebuffer*, drm_file*, unsigned int*)
    function void drm_gem_fb_destroy(drm_framebuffer*)
    function drm_gem_object* drm_gem_fb_get_obj(drm_framebuffer*, unsigned int)
    function int drm_gem_fb_prepare_fb(drm_plane*, drm_plane_state*)
    function void drm_gem_free_mmap_offset(drm_gem_object*)
    function page** drm_gem_get_pages(drm_gem_object*)
    function int drm_gem_handle_create(drm_file*, drm_gem_object*, unsigned int*)
    function int drm_gem_mmap(file*, vm_area_struct*)
    function int drm_gem_mmap_obj(drm_gem_object*, unsigned long int, vm_area_struct*)
    function int drm_gem_object_init(drm_device*, drm_gem_object*, size_t)
    function drm_gem_object* drm_gem_object_lookup(drm_file*, unsigned int)
    function void drm_gem_object_put(drm_gem_object*)
    function void drm_gem_object_put_unlocked(drm_gem_object*)
    function void drm_gem_object_release(drm_gem_object*)
    function int drm_gem_prime_fd_to_handle(drm_device*, drm_file*, int, uint32_t*)
    function int drm_gem_prime_handle_to_fd(drm_device*, drm_file*, uint32_t, uint32_t, int*)
    function drm_gem_object* drm_gem_prime_import(drm_device*, dma_buf*)
    function int drm_gem_prime_mmap(drm_gem_object*, vm_area_struct*)
    function void drm_gem_private_object_init(drm_device*, drm_gem_object*, unsigned long int)
    function void drm_gem_put_pages(drm_gem_object*, page**, bool, bool)
    function edid* drm_get_edid(drm_connector*, i2c_adapter*)
    function const drm_format_info* drm_get_format_info(drm_device*, const drm_mode_fb_cmd2*)
    function bool drm_handle_vblank(drm_device*, unsigned int)
    function int drm_hdmi_avi_infoframe_from_display_mode(hdmi_avi_infoframe*, drm_connector*, const drm_display_mode*)
    function bool drm_helper_hpd_irq_event(drm_device*)
    function void drm_helper_mode_fill_fb_struct(drm_device*, drm_framebuffer*, const drm_mode_fb_cmd2*)
    function int drm_helper_probe_single_connector_modes(drm_connector*, uint32_t, uint32_t)
    function long int drm_ioctl(file*, unsigned int, unsigned long int)
    function int drm_irq_install(drm_device*, int)
    function int drm_irq_uninstall(drm_device*)
    function void drm_kms_helper_hotplug_event(drm_device*)
    function void drm_kms_helper_poll_fini(drm_device*)
    function void drm_kms_helper_poll_init(drm_device*)
    function void drm_mode_config_cleanup(drm_device*)
    function void drm_mode_config_init(drm_device*)
    function void drm_mode_config_reset(drm_device*)
    function drm_display_mode* drm_mode_create(drm_device*)
    function int drm_mode_crtc_set_gamma_size(drm_crtc*, int)
    function void drm_mode_destroy(drm_device*, drm_display_mode*)
    function drm_display_mode* drm_mode_duplicate(drm_device*, const drm_display_mode*)
    function drm_mode_object* drm_mode_object_find(drm_device*, drm_file*, unsigned int, unsigned int)
    function void drm_mode_probed_add(drm_connector*, drm_display_mode*)
    function void drm_object_attach_property(drm_mode_object*, drm_property*, long long unsigned int)
    function void drm_of_component_match_add(device*, component_match**, void ()*, device_node*)
    function int drm_open(inode*, file*)
    function int drm_panel_add(drm_panel*)
    function int drm_panel_attach(drm_panel*, drm_connector*)
    function void drm_panel_detach(drm_panel*)
    function int drm_panel_disable(drm_panel*)
    function int drm_panel_enable(drm_panel*)
    function int drm_panel_get_modes(drm_panel*)
    function void drm_panel_init(drm_panel*)
    function int drm_panel_prepare(drm_panel*)
    function void drm_panel_remove(drm_panel*)
    function int drm_panel_unprepare(drm_panel*)
    function void drm_plane_cleanup(drm_plane*)
    function int drm_plane_create_alpha_property(drm_plane*)
    function int drm_plane_create_blend_mode_property(drm_plane*, unsigned int)
    function int drm_plane_create_rotation_property(drm_plane*, unsigned int, unsigned int)
    function int drm_plane_create_zpos_immutable_property(drm_plane*, unsigned int)
    function int drm_plane_create_zpos_property(drm_plane*, unsigned int, unsigned int, unsigned int)
    function void drm_plane_enable_fb_damage_clips(drm_plane*)
    function __poll_t drm_poll(file*, poll_table_struct*)
    function void drm_prime_gem_destroy(drm_gem_object*, sg_table*)
    function drm_property* drm_property_create(drm_device*, unsigned int, const char*, int)
    function drm_property_blob* drm_property_create_blob(drm_device*, unsigned long int, void*)
    function drm_property* drm_property_create_range(drm_device*, unsigned int, const char*, long long unsigned int, long long unsigned int)
    function void drm_put_dev(drm_device*)
    function ssize_t drm_read(file*, char*, size_t, loff_t*)
    function int drm_release(inode*, file*)
    function void drm_set_preferred_mode(drm_connector*, int, int)
    function void drm_state_dump(drm_device*, drm_printer*)
    function int drm_universal_plane_init(drm_device*, drm_plane*, unsigned int, const drm_plane_funcs*, const unsigned int*, unsigned int, const long long unsigned int*, drm_plane_type, const char*, ...)
    function int drm_vblank_init(drm_device*, unsigned int)
    function void drop_nlink(inode*)
    function void dst_release(dst_entry*)
    function int dw_pcie_host_init(pcie_port*)
    function void dw_pcie_msi_init(pcie_port*)
    function void dw_pcie_setup_rc(pcie_port*)
    function int dw_pcie_wait_for_link(dw_pcie*)
    function void eth_commit_mac_addr_change(net_device*, void*)
    function int eth_mac_addr(net_device*, void*)
    function int eth_platform_get_mac_address(device*, u8*)
    function int eth_prepare_mac_addr_change(net_device*, void*)
    function unsigned short int eth_type_trans(sk_buff*, net_device*)
    function int eth_validate_addr(net_device*)
    function void ether_setup(net_device*)
    function unsigned int ethtool_op_get_link(net_device*)
    function int ethtool_op_get_ts_info(net_device*, ethtool_ts_info*)
    function event_trigger_type event_triggers_call(trace_event_file*, void*, ring_buffer_event*)
    function extcon_dev* extcon_find_edev_by_node(device_node*)
    function extcon_dev* extcon_get_edev_by_phandle(device*, int)
    function extcon_dev* extcon_get_extcon_dev(const char*)
    function int extcon_get_state(extcon_dev*, const unsigned int)
    function int extcon_register_notifier(extcon_dev*, unsigned int, notifier_block*)
    function int extcon_set_state_sync(extcon_dev*, unsigned int, bool)
    function int extcon_unregister_notifier(extcon_dev*, unsigned int, notifier_block*)
    function void fd_install(unsigned int, file*)
    function file* fget(unsigned int)
    function int filp_close(file*, void*)
    function void fput(file*)
    function void free_netdev(net_device*)
    function const ieee80211_reg_rule* freq_reg_info(wiphy*, u32)
    function void* fwnode_connection_find_match(fwnode_handle*, const char*, void*, devcon_match_fn_t)
    function fwnode_handle* fwnode_get_parent(const fwnode_handle*)
    function void fwnode_handle_put(fwnode_handle*)
    function bool fwnode_property_present(const fwnode_handle*, const char*)
    function int fwnode_property_read_string(const fwnode_handle*, const char*, const char**)
    function int fwnode_property_read_u16_array(const fwnode_handle*, const char*, unsigned short int*, unsigned long int)
    function int fwnode_property_read_u32_array(const fwnode_handle*, const char*, unsigned int*, unsigned long int)
    function loff_t generic_file_llseek(file*, loff_t, int)
    function int generic_mii_ioctl(mii_if_info*, mii_ioctl_data*, int, unsigned int*)
    function int genl_register_family(genl_family*)
    function int genl_unregister_family(const genl_family*)
    function void* genlmsg_put(sk_buff*, unsigned int, unsigned int, const genl_family*, int, unsigned char)
    function int genphy_resume(phy_device*)
    function device* get_device(device*)
    function int get_tree_single(fs_context*, void ()*)
    function gnss_device* gnss_allocate_device(device*)
    function void gnss_deregister_device(gnss_device*)
    function int gnss_insert_raw(gnss_device*, const unsigned char*, size_t)
    function void gnss_put_device(gnss_device*)
    function int gnss_register_device(gnss_device*)
    function int gpiochip_add_data_with_key(gpio_chip*, void*, lock_class_key*, lock_class_key*)
    function int gpiochip_add_pin_range(gpio_chip*, const char*, unsigned int, unsigned int, unsigned int)
    function void gpiochip_generic_free(gpio_chip*, unsigned int)
    function int gpiochip_generic_request(gpio_chip*, unsigned int)
    function void* gpiochip_get_data(gpio_chip*)
    function void gpiochip_populate_parent_fwspec_fourcell(gpio_chip*, irq_fwspec*, unsigned int, unsigned int)
    function void gpiochip_remove(gpio_chip*)
    function void handle_edge_irq(irq_desc*)
    function void handle_level_irq(irq_desc*)
    function hci_dev* hci_alloc_dev()
    function void hci_free_dev(hci_dev*)
    function int hci_recv_diag(hci_dev*, sk_buff*)
    function int hci_recv_frame(hci_dev*, sk_buff*)
    function int hci_register_dev(hci_dev*)
    function void hci_unregister_dev(hci_dev*)
    function int hid_hw_start(hid_device*, unsigned int)
    function const hid_device_id* hid_match_device(hid_device*, hid_driver*)
    function int hid_open_report(hid_device*)
    function void hid_unregister_driver(hid_driver*)
    function int hwspin_lock_register(hwspinlock_device*, device*, const hwspinlock_ops*, int, int)
    function int hwspin_lock_unregister(hwspinlock_device*)
    function int i2c_add_adapter(i2c_adapter*)
    function void i2c_del_adapter(i2c_adapter*)
    function void i2c_del_driver(i2c_driver*)
    function i2c_client* i2c_new_probed_device(i2c_adapter*, i2c_board_info*, const unsigned short int*, void ()*)
    function int i2c_register_driver(module*, i2c_driver*)
    function int i2c_smbus_read_byte_data(const i2c_client*, unsigned char)
    function int i2c_smbus_write_byte_data(const i2c_client*, unsigned char, unsigned char)
    function int i2c_transfer(i2c_adapter*, i2c_msg*, int)
    function int icc_link_create(icc_node*, const int)
    function void icc_node_add(icc_node*, icc_provider*)
    function icc_node* icc_node_create(int)
    function void icc_node_del(icc_node*)
    function int icc_provider_add(icc_provider*)
    function int icc_provider_del(icc_provider*)
    function void icc_put(icc_path*)
    function int icc_set_bw(icc_path*, u32, u32)
    function ieee80211_channel* ieee80211_get_channel(wiphy*, int)
    function iio_channel* iio_channel_get(device*, const char*)
    function iio_dev* iio_device_alloc(int)
    function void iio_device_free(iio_dev*)
    function void iio_device_unregister(iio_dev*)
    function int iio_read_channel_processed(iio_channel*, int*)
    function int iio_read_channel_raw(iio_channel*, int*)
    function int iio_write_channel_attribute(iio_channel*, int, int, iio_chan_info_enum)
    function unsigned int inet_select_addr(const net_device*, unsigned int, int)
    function void input_alloc_absinfo(input_dev*)
    function input_dev* input_allocate_device()
    function void input_event(input_dev*, unsigned int, unsigned int, int)
    function void input_free_device(input_dev*)
    function int input_mt_init_slots(input_dev*, unsigned int, unsigned int)
    function bool input_mt_report_slot_state(input_dev*, unsigned int, bool)
    function int input_register_device(input_dev*)
    function void input_set_abs_params(input_dev*, unsigned int, int, int, int, int)
    function void input_set_capability(input_dev*, unsigned int, unsigned int)
    function void input_unregister_device(input_dev*)
    function unsigned long int invalidate_mapping_pages(address_space*, unsigned long int, unsigned long int)
    function int iommu_attach_device(iommu_domain*, device*)
    function void iommu_detach_device(iommu_domain*, device*)
    function iommu_domain* iommu_domain_alloc(bus_type*)
    function void iommu_domain_free(iommu_domain*)
    function int iommu_map(iommu_domain*, unsigned long int, phys_addr_t, size_t, int)
    function size_t iommu_map_sg(iommu_domain*, unsigned long int, scatterlist*, unsigned int, int)
    function bool iommu_present(bus_type*)
    function void iommu_set_fault_handler(iommu_domain*, iommu_fault_handler_t, void*)
    function unsigned long int iommu_unmap(iommu_domain*, unsigned long int, unsigned long int)
    function int ip6_local_out(net*, sock*, sk_buff*)
    function dst_entry* ip6_route_output_flags(net*, const sock*, flowi6*, int)
    function int ip_local_out(net*, sock*, sk_buff*)
    function rtable* ip_route_output_flow(net*, flowi4*, const sock*)
    function void iput(inode*)
    function int ipv6_dev_get_saddr(net*, const net_device*, const in6_addr*, unsigned int, in6_addr*)
    function void irq_chip_ack_parent(irq_data*)
    function void irq_chip_mask_parent(irq_data*)
    function int irq_chip_set_type_parent(irq_data*, unsigned int)
    function int irq_chip_set_wake_parent(irq_data*, unsigned int)
    function void irq_chip_unmask_parent(irq_data*)
    function unsigned int irq_create_of_mapping(of_phandle_args*)
    function void irq_domain_free_irqs_common(irq_domain*, unsigned int, unsigned int)
    function void irq_domain_remove(irq_domain*)
    function void irq_domain_set_info(irq_domain*, unsigned int, unsigned long int, irq_chip*, void*, void ()*, void*, const char*)
    function int irq_domain_xlate_onecell(irq_domain*, device_node*, const u32*, unsigned int, unsigned long int*, unsigned int*)
    function int irq_domain_xlate_twocell(irq_domain*, device_node*, const u32*, unsigned int, irq_hw_number_t*, unsigned int*)
    function unsigned int irq_find_mapping(irq_domain*, unsigned long int)
    function irq_domain* irq_find_matching_fwspec(irq_fwspec*, irq_domain_bus_token)
    function irq_data* irq_get_irq_data(unsigned int)
    function unsigned int irq_of_parse_and_map(device_node*, int)
    function void irq_set_chained_handler_and_data(unsigned int, void ()*, void*)
    function void irq_set_chip_and_handler_name(unsigned int, irq_chip*, void ()*, const char*)
    function irq_desc* irq_to_desc(unsigned int)
    function long int kernel_read(file*, void*, unsigned long int, long long int*)
    function long int kernel_write(file*, void*, unsigned long int, long long int*)
    function void kill_litter_super(super_block*)
    function void lock_sock_nested(sock*, int)
    function dentry* lookup_one_len(const char*, dentry*, int)
    function mii_bus* mdiobus_alloc_size(size_t)
    function void mdiobus_free(mii_bus*)
    function void mdiobus_unregister(mii_bus*)
    function int mfd_add_devices(device*, int, const mfd_cell*, int, resource*, int, irq_domain*)
    function unsigned int mii_check_media(mii_if_info*, unsigned int, unsigned int)
    function void mii_ethtool_get_link_ksettings(mii_if_info*, ethtool_link_ksettings*)
    function int mii_ethtool_gset(mii_if_info*, ethtool_cmd*)
    function int mii_ethtool_set_link_ksettings(mii_if_info*, const ethtool_link_ksettings*)
    function int mii_link_ok(mii_if_info*)
    function int mii_nway_restart(mii_if_info*)
    function int mipi_dsi_attach(mipi_dsi_device*)
    function ssize_t mipi_dsi_dcs_read(mipi_dsi_device*, u8, void*, size_t)
    function ssize_t mipi_dsi_dcs_write_buffer(mipi_dsi_device*, void*, size_t)
    function int mipi_dsi_detach(mipi_dsi_device*)
    function mipi_dsi_device* mipi_dsi_device_register_full(mipi_dsi_host*, const mipi_dsi_device_info*)
    function void mipi_dsi_device_unregister(mipi_dsi_device*)
    function int mipi_dsi_driver_register_full(mipi_dsi_driver*, module*)
    function void mipi_dsi_driver_unregister(mipi_dsi_driver*)
    function ssize_t mipi_dsi_generic_read(mipi_dsi_device*, void*, size_t, void*, size_t)
    function ssize_t mipi_dsi_generic_write(mipi_dsi_device*, void*, size_t)
    function int mipi_dsi_host_register(mipi_dsi_host*)
    function void mipi_dsi_host_unregister(mipi_dsi_host*)
    function int mipi_dsi_set_maximum_return_packet_size(mipi_dsi_device*, u16)
    function void misc_deregister(miscdevice*)
    function int misc_register(miscdevice*)
    function void mmc_detect_change(mmc_host*, unsigned long int)
    function int mmc_of_parse(mmc_host*)
    function int mmc_send_tuning(mmc_host*, u32, int*)
    function void mmc_set_data_timeout(mmc_data*, const mmc_card*)
    function void mmc_wait_for_req(mmc_host*, mmc_request*)
    function void module_put(module*)
    function int msm_pinctrl_probe(platform_device*, const msm_pinctrl_soc_data*)
    function int msm_pinctrl_remove(platform_device*)
    function int n_tty_ioctl_helper(tty_struct*, file*, unsigned int, unsigned long int)
    function bool napi_complete_done(napi_struct*, int)
    function void napi_disable(napi_struct*)
    function gro_result napi_gro_receive(napi_struct*, sk_buff*)
    function bool napi_hash_del(napi_struct*)
    function bool napi_schedule_prep(napi_struct*)
    function void neigh_destroy(neighbour*)
    function void netdev_change_features(net_device*)
    function void netdev_err(const net_device*, const char*, ...)
    function void netdev_info(const net_device*, const char*, ...)
    function void netdev_lower_state_changed(net_device*, void*)
    function int netdev_master_upper_dev_link(net_device*, net_device*, void*, void*, netlink_ext_ack*)
    function void netdev_notify_peers(net_device*)
    function u16 netdev_pick_tx(net_device*, sk_buff*, net_device*)
    function int netdev_rx_handler_register(net_device*, rx_handler_func_t*, void*)
    function void netdev_rx_handler_unregister(net_device*)
    function int netdev_upper_dev_link(net_device*, net_device*, netlink_ext_ack*)
    function void netdev_upper_dev_unlink(net_device*, net_device*)
    function void netdev_warn(const net_device*, const char*, ...)
    function void netif_carrier_off(net_device*)
    function void netif_carrier_on(net_device*)
    function void netif_device_attach(net_device*)
    function void netif_device_detach(net_device*)
    function void netif_napi_add(net_device*, napi_struct*, void ()*, int)
    function void netif_napi_del(napi_struct*)
    function void netif_schedule_queue(netdev_queue*)
    function int netif_set_real_num_rx_queues(net_device*, unsigned int)
    function int netif_set_real_num_tx_queues(net_device*, unsigned int)
    function void netif_stacked_transfer_operstate(const net_device*, net_device*)
    function void netif_tx_stop_all_queues(net_device*)
    function void netif_tx_wake_queue(netdev_queue*)
    function int netlink_unicast(sock*, sk_buff*, unsigned int, int)
    function inode* new_inode(super_block*)
    function nf_conntrack_tuple_hash* nf_conntrack_find_get(net*, const nf_conntrack_zone*, const nf_conntrack_tuple*)
    function bool nf_ct_get_tuplepr(const sk_buff*, unsigned int, unsigned short int, net*, nf_conntrack_tuple*)
    function int nf_register_net_hooks(net*, const nf_hook_ops*, unsigned int)
    function void nf_unregister_net_hooks(net*, const nf_hook_ops*, unsigned int)
    function loff_t no_llseek(file*, loff_t, int)
    function int nonseekable_open(inode*, file*)
    function loff_t noop_llseek(file*, loff_t, int)
    function nvdimm_bus* nvdimm_bus_register(device*, nvdimm_bus_descriptor*)
    function nd_region* nvdimm_pmem_region_create(nvdimm_bus*, nd_region_desc*)
    function nvmem_cell* nvmem_cell_get(device*, const char*)
    function void nvmem_cell_put(nvmem_cell*)
    function void* nvmem_cell_read(nvmem_cell*, size_t*)
    function int of_address_to_resource(device_node*, int, resource*)
    function int of_alias_get_id(device_node*, const char*)
    function int of_clk_add_hw_provider(device_node*, void ()*, void*)
    function void of_clk_del_provider(device_node*)
    function clk* of_clk_get(device_node*, int)
    function unsigned int of_clk_get_parent_count(device_node*)
    function clk_hw* of_clk_hw_onecell_get(of_phandle_args*, void*)
    function clk_hw* of_clk_hw_simple_get(of_phandle_args*, void*)
    function int of_clk_set_defaults(device_node*, bool)
    function thermal_cooling_device* of_devfreq_cooling_register_power(device_node*, devfreq*, devfreq_cooling_power*)
    function void* of_device_get_match_data(const device*)
    function bool of_device_is_available(const device_node*)
    function int of_device_is_compatible(const device_node*, const char*)
    function long int of_device_modalias(device*, char*, long int)
    function int of_device_request_module(device*)
    function int of_device_uevent_modalias(device*, kobj_uevent_env*)
    function int of_dma_configure(device*, device_node*, bool)
    function dma_chan* of_dma_request_slave_channel(device_node*, const char*)
    function drm_bridge* of_drm_find_bridge(device_node*)
    function drm_panel* of_drm_find_panel(const device_node*)
    function void* of_fdt_unflatten_tree(const unsigned long int*, device_node*, device_node**)
    function backlight_device* of_find_backlight_by_node(device_node*)
    function device_node* of_find_compatible_node(device_node*, const char*, const char*)
    function platform_device* of_find_device_by_node(device_node*)
    function i2c_adapter* of_find_i2c_adapter_by_node(device_node*)
    function device_node* of_find_matching_node_and_match(device_node*, const of_device_id*, const of_device_id**)
    function mipi_dsi_host* of_find_mipi_dsi_host_by_node(device_node*)
    function device_node* of_find_node_by_name(device_node*, const char*)
    function device_node* of_find_node_opts_by_path(const char*, const char**)
    function property* of_find_property(const device_node*, const char*, int*)
    function int of_genpd_add_provider_simple(device_node*, generic_pm_domain*)
    function device_node* of_get_child_by_name(const device_node*, const char*)
    function device_node* of_get_compatible_child(const device_node*, const char*)
    function int of_get_drm_display_mode(device_node*, drm_display_mode*, u32*, int)
    function int of_get_named_gpio_flags(device_node*, const char*, int, of_gpio_flags*)
    function device_node* of_get_next_available_child(const device_node*, device_node*)
    function device_node* of_get_next_child(const device_node*, device_node*)
    function device_node* of_get_parent(const device_node*)
    function void* of_get_property(const device_node*, const char*, int*)
    function regulator_init_data* of_get_regulator_init_data(device*, device_node*, const regulator_desc*)
    function device_node* of_graph_get_endpoint_by_regs(const device_node*, int, int)
    function device_node* of_graph_get_next_endpoint(const device_node*, device_node*)
    function device_node* of_graph_get_remote_node(const device_node*, unsigned int, unsigned int)
    function device_node* of_graph_get_remote_port_parent(const device_node*)
    function int of_graph_parse_endpoint(const device_node*, of_endpoint*)
    function int of_hwspin_lock_get_id(device_node*, int)
    function icc_path* of_icc_get(device*, const char*)
    function icc_node* of_icc_xlate_onecell(of_phandle_args*, void*)
    function void* of_iomap(device_node*, int)
    function device_node* of_irq_find_parent(device_node*)
    function const of_device_id* of_match_device(const of_device_id*, const device*)
    function const of_device_id* of_match_node(const of_device_id*, const device_node*)
    function bool of_node_name_eq(const device_node*, const char*)
    function device_node* of_parse_phandle(const device_node*, const char*, int)
    function int of_parse_phandle_with_args(const device_node*, const char*, const char*, int, of_phandle_args*)
    function phy* of_phy_simple_xlate(device*, of_phandle_args*)
    function void of_platform_depopulate(device*)
    function int of_platform_populate(device_node*, const of_device_id*, const of_dev_auxdata*, device*)
    function int of_property_count_elems_of_size(const device_node*, const char*, int)
    function int of_property_match_string(const device_node*, const char*, const char*)
    function int of_property_read_string(const device_node*, const char*, const char**)
    function int of_property_read_string_helper(const device_node*, const char*, const char**, unsigned long int, int)
    function int of_property_read_u32_index(const device_node*, const char*, unsigned int, unsigned int*)
    function int of_property_read_variable_u32_array(const device_node*, const char*, unsigned int*, unsigned long int, unsigned long int)
    function int of_property_read_variable_u8_array(const device_node*, const char*, u8*, size_t, size_t)
    function pwm_device* of_pwm_get(device*, device_node*, const char*)
    function reserved_mem* of_reserved_mem_lookup(device_node*)
    function reset_control* of_reset_control_array_get(device_node*, bool, bool, bool)
    function usb_phy_interface of_usb_get_phy_mode(device_node*)
    function bool of_usb_host_tpl_support(device_node*)
    function file* open_exec(const char*)
    function netdev_features_t passthru_features_check(sk_buff*, net_device*, netdev_features_t)
    function int pci_alloc_irq_vectors_affinity(pci_dev*, unsigned int, unsigned int, unsigned int, irq_affinity*)
    function void pci_assign_unassigned_bus_resources(pci_bus*)
    function void pci_bus_add_devices(const pci_bus*)
    function void pci_clear_mwi(pci_dev*)
    function void pci_d3cold_disable(pci_dev*)
    function pci_dev* pci_dev_get(pci_dev*)
    function void pci_dev_put(pci_dev*)
    function void pci_disable_device(pci_dev*)
    function int pci_enable_device(pci_dev*)
    function int pci_find_capability(pci_dev*, int)
    function int pci_find_ext_capability(pci_dev*, int)
    function int pci_find_next_capability(pci_dev*, u8, int)
    function void pci_free_irq_vectors(pci_dev*)
    function pci_dev* pci_get_slot(pci_bus*, unsigned int)
    function void* pci_iomap(pci_dev*, int, unsigned long int)
    function void* pci_iomap_range(pci_dev*, int, unsigned long int, unsigned long int)
    function const cpumask* pci_irq_get_affinity(pci_dev*, int)
    function int pci_irq_vector(pci_dev*, unsigned int)
    function const pci_device_id* pci_match_id(const pci_device_id*, pci_dev*)
    function int pci_read_config_byte(const pci_dev*, int, u8*)
    function int pci_read_config_dword(const pci_dev*, int, unsigned int*)
    function int pci_read_config_word(const pci_dev*, int, unsigned short int*)
    function void pci_release_regions(pci_dev*)
    function void pci_release_selected_regions(pci_dev*, int)
    function int pci_request_regions(pci_dev*, const char*)
    function int pci_request_selected_regions(pci_dev*, int, const char*)
    function void pci_restore_state(pci_dev*)
    function int pci_save_state(pci_dev*)
    function unsigned int pci_scan_child_bus(pci_bus*)
    function void pci_set_master(pci_dev*)
    function int pci_set_mwi(pci_dev*)
    function int pci_set_power_state(pci_dev*, pci_power_t)
    function void pci_stop_and_remove_bus_device(pci_dev*)
    function void pci_unregister_driver(pci_driver*)
    function int pci_write_config_byte(const pci_dev*, int, u8)
    function int pci_write_config_dword(const pci_dev*, int, unsigned int)
    function void pcie_bus_configure_settings(pci_bus*)
    function int pcim_enable_device(pci_dev*)
    function void perf_trace_run_bpf_submit(void*, int, int, trace_event_call*, long long unsigned int, pt_regs*, hlist_head*, task_struct*)
    function phy_device* phy_connect(net_device*, const char*, void ()*, phy_interface_t)
    function void phy_disconnect(phy_device*)
    function int phy_ethtool_get_link_ksettings(net_device*, ethtool_link_ksettings*)
    function int phy_ethtool_nway_reset(net_device*)
    function int phy_ethtool_set_link_ksettings(net_device*, const ethtool_link_ksettings*)
    function int phy_exit(phy*)
    function int phy_init(phy*)
    function int phy_mii_ioctl(phy_device*, ifreq*, int)
    function int phy_pm_runtime_get_sync(phy*)
    function int phy_pm_runtime_put_sync(phy*)
    function int phy_power_off(phy*)
    function int phy_power_on(phy*)
    function void phy_print_status(phy_device*)
    function int phy_set_mode_ext(phy*, phy_mode, int)
    function void phy_start(phy_device*)
    function void phy_stop(phy_device*)
    function int pinconf_generic_dt_node_to_map(pinctrl_dev*, device_node*, pinctrl_map**, unsigned int*, pinctrl_map_type)
    function void* pinctrl_dev_get_drvdata(pinctrl_dev*)
    function pinctrl_state* pinctrl_lookup_state(pinctrl*, const char*)
    function int pinctrl_pm_select_default_state(device*)
    function int pinctrl_pm_select_sleep_state(device*)
    function pinctrl_dev* pinctrl_register(pinctrl_desc*, device*, void*)
    function int pinctrl_select_state(pinctrl*, pinctrl_state*)
    function void pinctrl_unregister(pinctrl_dev*)
    function int pinctrl_utils_add_map_configs(pinctrl_dev*, pinctrl_map**, unsigned int*, unsigned int*, const char*, unsigned long int*, unsigned int, pinctrl_map_type)
    function int pinctrl_utils_add_map_mux(pinctrl_dev*, pinctrl_map**, unsigned int*, unsigned int*, const char*, const char*)
    function void pinctrl_utils_free_map(pinctrl_dev*, pinctrl_map*, unsigned int)
    function int pinctrl_utils_reserve_map(pinctrl_dev*, pinctrl_map**, unsigned int*, unsigned int*, unsigned int)
    function int platform_device_add(platform_device*)
    function int platform_device_add_data(platform_device*, void*, size_t)
    function int platform_device_add_properties(platform_device*, const property_entry*)
    function int platform_device_add_resources(platform_device*, const resource*, unsigned int)
    function platform_device* platform_device_alloc(const char*, int)
    function void platform_device_del(platform_device*)
    function void platform_device_put(platform_device*)
    function int platform_device_register(platform_device*)
    function platform_device* platform_device_register_full(const platform_device_info*)
    function void platform_device_unregister(platform_device*)
    function void platform_driver_unregister(platform_driver*)
    function int platform_get_irq(platform_device*, unsigned int)
    function int platform_get_irq_byname(platform_device*, const char*)
    function int platform_get_irq_byname_optional(platform_device*, const char*)
    function resource* platform_get_resource(platform_device*, unsigned int, unsigned int)
    function resource* platform_get_resource_byname(platform_device*, unsigned int, const char*)
    function int platform_irq_count(platform_device*)
    function void platform_unregister_drivers(platform_driver* const*, unsigned int)
    function int pm_genpd_init(generic_pm_domain*, dev_power_governor*, bool)
    function int pm_genpd_remove(generic_pm_domain*)
    function void pm_runtime_allow(device*)
    function void pm_runtime_enable(device*)
    function void pm_runtime_forbid(device*)
    function int pm_runtime_force_resume(device*)
    function int pm_runtime_force_suspend(device*)
    function void pm_runtime_set_autosuspend_delay(device*, int)
    function void pm_wakeup_dev_event(device*, unsigned int, bool)
    function void pm_wakeup_ws_event(wakeup_source*, unsigned int, bool)
    function void power_supply_changed(power_supply*)
    function int power_supply_get_battery_info(power_supply*, power_supply_battery_info*)
    function power_supply* power_supply_get_by_name(const char*)
    function void* power_supply_get_drvdata(power_supply*)
    function int power_supply_get_property(power_supply*, power_supply_property, power_supply_propval*)
    function void power_supply_put(power_supply*)
    function void power_supply_put_battery_info(power_supply*, power_supply_battery_info*)
    function power_supply* power_supply_register(device*, const power_supply_desc*, const power_supply_config*)
    function void power_supply_unregister(power_supply*)
    function int prepare_binprm(linux_binprm*)
    function proc_dir_entry* proc_create(const char*, unsigned short int, proc_dir_entry*, const file_operations*)
    function proc_dir_entry* proc_create_data(const char*, unsigned short int, proc_dir_entry*, const file_operations*, void*)
    function int proto_register(proto*, int)
    function void proto_unregister(proto*)
    function void put_device(device*)
    function void put_disk(gendisk*)
    function void put_tty_driver(tty_driver*)
    function int pwm_apply_state(pwm_device*, const pwm_state*)
    function qcom_smem_state* qcom_smem_state_register(device_node*, const qcom_smem_state_ops*, void*)
    function void qcom_smem_state_unregister(qcom_smem_state*)
    function void* rdev_get_drvdata(regulator_dev*)
    function int register_filesystem(file_system_type*)
    function ctl_table_header* register_net_sysctl(net*, const char*, ctl_table*)
    function int register_netdev(net_device*)
    function int register_netdevice(net_device*)
    function int register_pernet_subsys(pernet_operations*)
    function int register_shrinker(shrinker*)
    function irq_domain* regmap_irq_get_domain(regmap_irq_chip_data*)
    function int regulator_disable_regmap(regulator_dev*)
    function int regulator_enable_regmap(regulator_dev*)
    function regulator* regulator_get(device*, const char*)
    function unsigned int regulator_get_mode(regulator*)
    function int regulator_get_voltage_sel_regmap(regulator_dev*)
    function int regulator_is_enabled(regulator*)
    function int regulator_is_enabled_regmap(regulator_dev*)
    function int regulator_is_supported_voltage(regulator*, int, int)
    function int regulator_list_voltage_linear(regulator_dev*, unsigned int)
    function int regulator_list_voltage_linear_range(regulator_dev*, unsigned int)
    function int regulator_map_voltage_linear(regulator_dev*, int, int)
    function int regulator_notifier_call_chain(regulator_dev*, unsigned long int, void*)
    function regulator_dev* regulator_register(const regulator_desc*, const regulator_config*)
    function int regulator_set_load(regulator*, int)
    function int regulator_set_mode(regulator*, unsigned int)
    function int regulator_set_voltage(regulator*, int, int)
    function int regulator_set_voltage_sel_regmap(regulator_dev*, unsigned int)
    function void regulator_unregister(regulator_dev*)
    function int regulatory_hint(wiphy*, const char*)
    function void release_sock(sock*)
    function int remove_arg_zero(linux_binprm*)
    function int request_firmware(const firmware**, const char*, device*)
    function int request_firmware_direct(const firmware**, const char*, device*)
    function int request_firmware_into_buf(const firmware**, const char*, device*, void*, size_t)
    function int request_firmware_nowait(module*, bool, const char*, device*, gfp_t, void*, void ()*)
    function int revalidate_disk(gendisk*)
    function rfkill* rfkill_alloc(const char*, device*, rfkill_type, const rfkill_ops*, void*)
    function int rpmh_invalidate(const device*)
    function int rpmh_write(const device*, rpmh_state, const tcs_cmd*, unsigned int)
    function int rpmh_write_async(const device*, rpmh_state, const tcs_cmd*, unsigned int)
    function int rpmh_write_batch(const device*, rpmh_state, const tcs_cmd*, u32*)
    function rt6_info* rt6_lookup(net*, const in6_addr*, const in6_addr*, int, const sk_buff*, int)
    function void rtc_update_irq(rtc_device*, unsigned long int, unsigned long int)
    function int rtnl_register_module(module*, int, int, rtnl_doit_func, rtnl_dumpit_func, unsigned int)
    function void sb800_prefetch(device*, int)
    function int scmi_driver_register(scmi_driver*, module*, const char*)
    function void scmi_driver_unregister(scmi_driver*)
    function int scsi_add_host_with_dma(Scsi_Host*, device*, device*)
    function void scsi_eh_prep_cmnd(scsi_cmnd*, scsi_eh_save*, unsigned char*, int, unsigned int)
    function void scsi_eh_restore_cmnd(scsi_cmnd*, scsi_eh_save*)
    function scsi_device* scsi_get_host_dev(Scsi_Host*)
    function Scsi_Host* scsi_host_alloc(scsi_host_template*, int)
    function void scsi_host_put(Scsi_Host*)
    function int scsi_is_host_device(const device*)
    function void scsi_remove_host(Scsi_Host*)
    function void scsi_report_bus_reset(Scsi_Host*, int)
    function void scsi_report_device_reset(Scsi_Host*, int, int)
    function void scsi_scan_host(Scsi_Host*)
    function int sdhci_add_host(sdhci_host*)
    function void sdhci_enable_clk(sdhci_host*, u16)
    function void sdhci_get_property(platform_device*)
    function void sdhci_pltfm_free(platform_device*)
    function sdhci_host* sdhci_pltfm_init(platform_device*, const sdhci_pltfm_data*, size_t)
    function void sdhci_remove_host(sdhci_host*, int)
    function void sdhci_reset(sdhci_host*, u8)
    function void sdhci_set_bus_width(sdhci_host*, int)
    function void sdio_claim_host(sdio_func*)
    function int sdio_enable_func(sdio_func*)
    function int sdio_memcpy_fromio(sdio_func*, void*, unsigned int, int)
    function int sdio_memcpy_toio(sdio_func*, unsigned int, void*, int)
    function u8 sdio_readb(sdio_func*, unsigned int, int*)
    function u32 sdio_readl(sdio_func*, unsigned int, int*)
    function int sdio_readsb(sdio_func*, void*, unsigned int, int)
    function int sdio_register_driver(sdio_driver*)
    function void sdio_release_host(sdio_func*)
    function int sdio_set_block_size(sdio_func*, unsigned int)
    function void sdio_unregister_driver(sdio_driver*)
    function void sdio_writeb(sdio_func*, u8, unsigned int, int*)
    function void sdio_writel(sdio_func*, u32, unsigned int, int*)
    function int sdio_writesb(sdio_func*, unsigned int, void*, int)
    function int search_binary_handler(linux_binprm*)
    function long long int seq_lseek(file*, long long int, int)
    function int seq_open_private(file*, const seq_operations*, int)
    function void seq_printf(seq_file*, const char*, ...)
    function void seq_putc(seq_file*, char)
    function void seq_puts(seq_file*, const char*)
    function ssize_t seq_read(file*, char*, size_t, loff_t*)
    function int seq_release(inode*, file*)
    function void seq_vprintf(seq_file*, const char*, __va_list)
    function void serdev_device_close(serdev_device*)
    function int serdev_device_open(serdev_device*)
    function unsigned int serdev_device_set_baudrate(serdev_device*, unsigned int)
    function void serdev_device_set_flow_control(serdev_device*, bool)
    function int serdev_device_set_tiocm(serdev_device*, int, int)
    function void serdev_device_wait_until_sent(serdev_device*, long int)
    function int serdev_device_write(serdev_device*, const unsigned char*, size_t, long int)
    function int serdev_device_write_buf(serdev_device*, const unsigned char*, size_t)
    function void serdev_device_write_flush(serdev_device*)
    function void serdev_device_write_wakeup(serdev_device*)
    function void set_disk_ro(gendisk*, int)
    function file* shmem_file_setup(const char*, long long int, unsigned long int)
    function page* shmem_read_mapping_page_gfp(address_space*, unsigned long int, unsigned int)
    function void shmem_truncate_range(inode*, loff_t, loff_t)
    function int simple_attr_open(inode*, file*, void ()*, void ()*, const char*)
    function ssize_t simple_attr_read(file*, char*, size_t, loff_t*)
    function int simple_attr_release(inode*, file*)
    function ssize_t simple_attr_write(file*, const char*, size_t, loff_t*)
    function int simple_fill_super(super_block*, unsigned long int, const tree_descr*)
    function int simple_open(inode*, file*)
    function int simple_pin_fs(file_system_type*, vfsmount**, int*)
    function void simple_release_fs(vfsmount**, int*)
    function int simple_statfs(dentry*, kstatfs*)
    function int single_open(file*, void ()*, void*)
    function int single_release(inode*, file*)
    function sock* sk_alloc(net*, int, unsigned int, proto*, int)
    function void sk_free(sock*)
    function int skb_copy_datagram_iter(const sk_buff*, int, iov_iter*, int)
    function void skb_free_datagram(sock*, sk_buff*)
    function sk_buff* skb_recv_datagram(sock*, unsigned int, int, int*)
    function void skb_set_owner_w(sk_buff*, sock*)
    function int snd_card_disconnect(snd_card*)
    function int snd_card_free(snd_card*)
    function int snd_card_new(device*, int, const char*, module*, int, snd_card**)
    function int snd_card_register(snd_card*)
    function int snd_card_rw_proc_new(snd_card*, const char*, void*, void ()*, void ()*)
    function int snd_component_add(snd_card*, const char*)
    function int snd_ctl_add(snd_card*, snd_kcontrol*)
    function snd_kcontrol* snd_ctl_find_id(snd_card*, snd_ctl_elem_id*)
    function int snd_ctl_remove_id(snd_card*, snd_ctl_elem_id*)
    function int snd_device_new(snd_card*, snd_device_type, void*, snd_device_ops*)
    function int snd_dma_alloc_pages(int, device*, unsigned long int, snd_dma_buffer*)
    function void snd_dma_free_pages(snd_dma_buffer*)
    function snd_info_entry* snd_info_create_card_entry(snd_card*, const char*, snd_info_entry*)
    function void snd_info_free_entry(snd_info_entry*)
    function int snd_info_register(snd_info_entry*)
    function int snd_jack_set_key(snd_jack*, snd_jack_types, int)
    function const snd_pci_quirk* snd_pci_quirk_lookup(pci_dev*, const snd_pci_quirk*)
    function int snd_pcm_add_chmap_ctls(snd_pcm*, int, const snd_pcm_chmap_elem*, int, unsigned long int, snd_pcm_chmap**)
    function int snd_pcm_hw_constraint_eld(snd_pcm_runtime*, void*)
    function int snd_pcm_hw_constraint_integer(snd_pcm_runtime*, int)
    function int snd_pcm_hw_constraint_list(snd_pcm_runtime*, unsigned int, snd_pcm_hw_param_t, const snd_pcm_hw_constraint_list*)
    function int snd_pcm_hw_constraint_minmax(snd_pcm_runtime*, int, unsigned int, unsigned int)
    function int snd_pcm_hw_constraint_msbits(snd_pcm_runtime*, unsigned int, unsigned int, unsigned int)
    function int snd_pcm_hw_constraint_step(snd_pcm_runtime*, unsigned int, snd_pcm_hw_param_t, unsigned long int)
    function int snd_pcm_hw_rule_add(snd_pcm_runtime*, unsigned int, int, void ()*, void*, int, ...)
    function int snd_pcm_lib_free_pages(snd_pcm_substream*)
    function int snd_pcm_lib_ioctl(snd_pcm_substream*, unsigned int, void*)
    function int snd_pcm_lib_malloc_pages(snd_pcm_substream*, size_t)
    function void snd_pcm_lib_preallocate_pages_for_all(snd_pcm*, int, void*, unsigned long int, unsigned long int)
    function int snd_pcm_limit_hw_rates(snd_pcm_runtime*)
    function int snd_pcm_new(snd_card*, const char*, int, int, int, snd_pcm**)
    function void snd_pcm_period_elapsed(snd_pcm_substream*)
    function void snd_pcm_set_ops(snd_pcm*, int, const snd_pcm_ops*)
    function int snd_soc_card_jack_new(snd_soc_card*, const char*, int, snd_soc_jack*, snd_soc_jack_pin*, unsigned int)
    function unsigned int snd_soc_component_read32(snd_soc_component*, unsigned int)
    function int snd_soc_component_update_bits(snd_soc_component*, unsigned int, unsigned int, unsigned int)
    function int snd_soc_component_write(snd_soc_component*, unsigned int, unsigned int)
    function int snd_soc_dapm_add_routes(snd_soc_dapm_context*, const snd_soc_dapm_route*, int)
    function int snd_soc_dapm_disable_pin(snd_soc_dapm_context*, const char*)
    function int snd_soc_dapm_enable_pin(snd_soc_dapm_context*, const char*)
    function int snd_soc_dapm_force_enable_pin(snd_soc_dapm_context*, const char*)
    function int snd_soc_dapm_ignore_suspend(snd_soc_dapm_context*, const char*)
    function snd_soc_dapm_context* snd_soc_dapm_kcontrol_dapm(snd_kcontrol*)
    function int snd_soc_dapm_sync(snd_soc_dapm_context*)
    function void snd_soc_jack_report(snd_soc_jack*, int, int)
    function int snd_soc_of_get_dai_name(device_node*, const char**)
    function int snd_soc_of_parse_audio_routing(snd_soc_card*, const char*)
    function int snd_soc_of_parse_audio_simple_widgets(snd_soc_card*, const char*)
    function int snd_soc_of_parse_card_name(snd_soc_card*, const char*)
    function unsigned int snd_soc_of_parse_daifmt(device_node*, const char*, device_node**, device_node**)
    function int snd_soc_of_parse_tdm_slot(device_node*, unsigned int*, unsigned int*, unsigned int*, unsigned int*)
    function int snd_soc_register_component(device*, const snd_soc_component_driver*, snd_soc_dai_driver*, int)
    function snd_soc_component* snd_soc_rtdcom_lookup(snd_soc_pcm_runtime*, const char*)
    function int snd_soc_set_runtime_hwparams(snd_pcm_substream*, const snd_pcm_hardware*)
    function void snd_soc_unregister_component(device*)
    function sk_buff* sock_alloc_send_skb(sock*, unsigned long int, int, int*)
    function int sock_diag_register(const sock_diag_handler*)
    function void sock_diag_save_cookie(sock*, unsigned int*)
    function void sock_diag_unregister(const sock_diag_handler*)
    function int sock_gettstamp(socket*, void*, bool, bool)
    function unsigned long int sock_i_ino(sock*)
    function void sock_init_data(socket*, sock*)
    function int sock_no_accept(socket*, socket*, int, bool)
    function int sock_no_getsockopt(socket*, int, int, char*, int*)
    function int sock_no_ioctl(socket*, unsigned int, unsigned long int)
    function int sock_no_listen(socket*, int)
    function int sock_no_mmap(file*, socket*, vm_area_struct*)
    function long int sock_no_sendpage(socket*, page*, int, unsigned long int, int)
    function int sock_no_setsockopt(socket*, int, int, char*, unsigned int)
    function int sock_no_shutdown(socket*, int)
    function int sock_no_socketpair(socket*, socket*)
    function int sock_queue_rcv_skb(sock*, sk_buff*)
    function int sock_register(const net_proto_family*)
    function int spi_sync(spi_device*, spi_message*)
    function int spmi_controller_add(spmi_controller*)
    function spmi_controller* spmi_controller_alloc(device*, size_t)
    function void spmi_controller_remove(spmi_controller*)
    function int spmi_ext_register_read(spmi_device*, u8, u8*, size_t)
    function int spmi_ext_register_readl(spmi_device*, u16, u8*, size_t)
    function int spmi_ext_register_write(spmi_device*, u8, const u8*, size_t)
    function int spmi_ext_register_writel(spmi_device*, u16, const u8*, size_t)
    function int spmi_register_read(spmi_device*, u8, u8*)
    function int spmi_register_write(spmi_device*, u8, u8)
    function int spmi_register_zero_write(spmi_device*, u8)
    function int stream_open(inode*, file*)
    function unsigned int submit_bio(bio*)
    function sync_file* sync_file_create(dma_fence*)
    function regmap* syscon_node_to_regmap(device_node*)
    function regmap* syscon_regmap_lookup_by_phandle(device_node*, const char*)
    function regmap* syscon_regmap_lookup_by_phandle_args(device_node*, const char*, int, unsigned int*)
    function int trace_define_field(trace_event_call*, const char*, const char*, int, int, int, int)
    function void trace_event_buffer_commit(trace_event_buffer*)
    function void* trace_event_buffer_reserve(trace_event_buffer*, trace_event_file*, unsigned long int)
    function bool trace_event_ignore_this_pid(trace_event_file*)
    function int trace_event_raw_init(trace_event_call*)
    function int trace_event_reg(trace_event_call*, trace_reg, void*)
    function bool try_module_get(module*)
    function void tty_driver_flush_buffer(tty_struct*)
    function void tty_flip_buffer_push(tty_port*)
    function void tty_hangup(tty_struct*)
    function int tty_insert_flip_string_fixed_flag(tty_port*, const unsigned char*, char, unsigned long int)
    function void tty_kref_put(tty_struct*)
    function void tty_ldisc_deref(tty_ldisc*)
    function void tty_ldisc_flush(tty_struct*)
    function tty_ldisc* tty_ldisc_ref(tty_struct*)
    function void tty_port_close(tty_port*, tty_struct*, file*)
    function void tty_port_destroy(tty_port*)
    function void tty_port_hangup(tty_port*)
    function void tty_port_init(tty_port*)
    function void tty_port_link_device(tty_port*, tty_driver*, unsigned int)
    function int tty_port_open(tty_port*, tty_struct*, file*)
    function void tty_port_put(tty_port*)
    function device* tty_port_register_device(tty_port*, tty_driver*, unsigned int, device*)
    function tty_struct* tty_port_tty_get(tty_port*)
    function void tty_port_tty_hangup(tty_port*, bool)
    function void tty_port_tty_wakeup(tty_port*)
    function int tty_register_driver(tty_driver*)
    function int tty_register_ldisc(int, tty_ldisc_ops*)
    function void tty_schedule_flip(tty_port*)
    function void tty_set_operations(tty_driver*, const tty_operations*)
    function int tty_set_termios(tty_struct*, ktermios*)
    function int tty_standard_install(tty_driver*, tty_struct*)
    function void tty_unregister_device(tty_driver*, unsigned int)
    function int tty_unregister_driver(tty_driver*)
    function void tty_unthrottle(tty_struct*)
    function void tty_vhangup(tty_struct*)
    function int uart_add_one_port(uart_driver*, uart_port*)
    function tty_driver* uart_console_device(console*, int*)
    function void uart_console_write(uart_port*, const char*, unsigned int, void ()*)
    function unsigned int uart_get_baud_rate(uart_port*, ktermios*, ktermios*, unsigned int, unsigned int)
    function int uart_register_driver(uart_driver*)
    function int uart_remove_one_port(uart_driver*, uart_port*)
    function int uart_resume_port(uart_driver*, uart_port*)
    function int uart_set_options(uart_port*, console*, int, int, int, int)
    function int uart_suspend_port(uart_driver*, uart_port*)
    function void uart_unregister_driver(uart_driver*)
    function void uart_update_timeout(uart_port*, unsigned int, unsigned int)
    function void uart_write_wakeup(uart_port*)
    function int ufshcd_dme_get_attr(ufs_hba*, u32, u32*, u8)
    function int ufshcd_dme_set_attr(ufs_hba*, u32, u8, u32, u8)
    function int ufshcd_dump_regs(ufs_hba*, size_t, size_t, const char*)
    function u32 ufshcd_get_local_unipro_ver(ufs_hba*)
    function int ufshcd_hold(ufs_hba*, bool)
    function int ufshcd_pltfrm_init(platform_device*, const ufs_hba_variant_ops*)
    function int ufshcd_pltfrm_resume(device*)
    function int ufshcd_pltfrm_runtime_idle(device*)
    function int ufshcd_pltfrm_runtime_resume(device*)
    function int ufshcd_pltfrm_runtime_suspend(device*)
    function void ufshcd_pltfrm_shutdown(platform_device*)
    function int ufshcd_pltfrm_suspend(device*)
    function void ufshcd_release(ufs_hba*)
    function void ufshcd_remove(ufs_hba*)
    function int ufshcd_uic_hibern8_enter(ufs_hba*)
    function int ufshcd_uic_hibern8_exit(ufs_hba*)
    function void unmap_mapping_range(address_space*, long long int, long long int, int)
    function int unregister_filesystem(file_system_type*)
    function void unregister_netdev(net_device*)
    function void unregister_netdevice_queue(net_device*, list_head*)
    function void unregister_pernet_subsys(pernet_operations*)
    function void unregister_shrinker(shrinker*)
    function int usb_add_gadget_udc(device*, usb_gadget*)
    function int usb_add_hcd(usb_hcd*, unsigned int, unsigned long int)
    function void* usb_alloc_coherent(usb_device*, unsigned long int, unsigned int, long long unsigned int*)
    function urb* usb_alloc_urb(int, unsigned int)
    function bool usb_amd_pt_check_port(device*, int)
    function void usb_anchor_urb(urb*, usb_anchor*)
    function void usb_asmedia_modifyflowcontrol(pci_dev*)
    function int usb_autopm_get_interface(usb_interface*)
    function int usb_autopm_get_interface_async(usb_interface*)
    function void usb_autopm_get_interface_no_resume(usb_interface*)
    function void usb_autopm_put_interface(usb_interface*)
    function void usb_autopm_put_interface_async(usb_interface*)
    function void usb_autopm_put_interface_no_suspend(usb_interface*)
    function int usb_clear_halt(usb_device*, int)
    function int usb_control_msg(usb_device*, unsigned int, unsigned char, unsigned char, unsigned short int, unsigned short int, void*, unsigned short int, int)
    function usb_hcd* usb_create_hcd(const hc_driver*, device*, const char*)
    function usb_hcd* usb_create_shared_hcd(const hc_driver*, device*, const char*, usb_hcd*)
    function void usb_del_gadget_udc(usb_gadget*)
    function void usb_deregister(usb_driver*)
    function void usb_disable_xhci_ports(pci_dev*)
    function int usb_driver_claim_interface(usb_driver*, usb_interface*, void*)
    function void usb_driver_release_interface(usb_driver*, usb_interface*)
    function void usb_enable_intel_xhci_ports(pci_dev*)
    function int usb_for_each_dev(void*, void ()*)
    function void usb_free_coherent(usb_device*, unsigned long int, void*, long long unsigned int)
    function void usb_free_urb(urb*)
    function int usb_gadget_map_request_by_dev(device*, usb_request*, int)
    function void usb_gadget_set_state(usb_gadget*, usb_device_state)
    function void usb_gadget_udc_reset(usb_gadget*, usb_gadget_driver*)
    function void usb_gadget_unmap_request_by_dev(device*, usb_request*, int)
    function usb_device* usb_get_dev(usb_device*)
    function usb_dr_mode usb_get_dr_mode(device*)
    function urb* usb_get_from_anchor(usb_anchor*)
    function usb_interface* usb_get_intf(usb_interface*)
    function usb_device_speed usb_get_maximum_speed(device*)
    function void usb_hc_died(usb_hcd*)
    function int usb_hcd_check_unlink_urb(usb_hcd*, urb*, int)
    function void usb_hcd_end_port_resume(usb_bus*, int)
    function void usb_hcd_giveback_urb(usb_hcd*, urb*, int)
    function int usb_hcd_is_primary_hcd(usb_hcd*)
    function int usb_hcd_link_urb_to_ep(usb_hcd*, urb*)
    function int usb_hcd_map_urb_for_dma(usb_hcd*, urb*, gfp_t)
    function int usb_hcd_pci_probe(pci_dev*, const pci_device_id*)
    function void usb_hcd_pci_remove(pci_dev*)
    function void usb_hcd_pci_shutdown(pci_dev*)
    function void usb_hcd_platform_shutdown(platform_device*)
    function void usb_hcd_poll_rh_status(usb_hcd*)
    function void usb_hcd_resume_root_hub(usb_hcd*)
    function void usb_hcd_start_port_resume(usb_bus*, int)
    function void usb_hcd_unlink_urb_from_ep(usb_hcd*, urb*)
    function void usb_hcd_unmap_urb_for_dma(usb_hcd*, urb*)
    function int usb_hub_clear_tt_buffer(urb*)
    function usb_interface* usb_ifnum_to_if(const usb_device*, unsigned int)
    function void usb_kill_urb(urb*)
    function int usb_lock_device_for_reset(usb_device*, const usb_interface*)
    function const usb_device_id* usb_match_id(usb_interface*, const usb_device_id*)
    function int usb_match_one_id(usb_interface*, const usb_device_id*)
    function device* usb_of_get_companion_dev(device*)
    function void usb_poison_urb(urb*)
    function void usb_put_dev(usb_device*)
    function void usb_put_hcd(usb_hcd*)
    function void usb_put_intf(usb_interface*)
    function int usb_register_driver(usb_driver*, module*, const char*)
    function void usb_remove_hcd(usb_hcd*)
    function int usb_reset_device(usb_device*)
    function void usb_reset_endpoint(usb_device*, unsigned int)
    function void usb_root_hub_lost_power(usb_device*)
    function void usb_sg_cancel(usb_sg_request*)
    function int usb_sg_init(usb_sg_request*, usb_device*, unsigned int, unsigned int, scatterlist*, int, size_t, gfp_t)
    function void usb_sg_wait(usb_sg_request*)
    function ssize_t usb_store_new_id(usb_dynids*, const usb_device_id*, device_driver*, const char*, size_t)
    function int usb_submit_urb(urb*, unsigned int)
    function int usb_unlink_urb(urb*)
    function void usb_unpoison_urb(urb*)
    function void usb_wakeup_notification(usb_device*, unsigned int)
    function int usbnet_change_mtu(net_device*, int)
    function void usbnet_disconnect(usb_interface*)
    function void usbnet_get_drvinfo(net_device*, ethtool_drvinfo*)
    function int usbnet_get_endpoints(usbnet*, usb_interface*)
    function u32 usbnet_get_link(net_device*)
    function int usbnet_get_link_ksettings(net_device*, ethtool_link_ksettings*)
    function u32 usbnet_get_msglevel(net_device*)
    function void usbnet_get_stats64(net_device*, rtnl_link_stats64*)
    function void usbnet_link_change(usbnet*, bool, bool)
    function int usbnet_nway_reset(net_device*)
    function int usbnet_open(net_device*)
    function int usbnet_probe(usb_interface*, const usb_device_id*)
    function int usbnet_read_cmd(usbnet*, u8, u8, u16, u16, void*, u16)
    function int usbnet_read_cmd_nopm(usbnet*, u8, u8, u16, u16, void*, u16)
    function int usbnet_resume(usb_interface*)
    function int usbnet_set_link_ksettings(net_device*, const ethtool_link_ksettings*)
    function void usbnet_set_msglevel(net_device*, u32)
    function void usbnet_skb_return(usbnet*, sk_buff*)
    function netdev_tx_t usbnet_start_xmit(sk_buff*, net_device*)
    function int usbnet_stop(net_device*)
    function int usbnet_suspend(usb_interface*, pm_message_t)
    function void usbnet_tx_timeout(net_device*)
    function void usbnet_unlink_rx_urbs(usbnet*)
    function void usbnet_update_max_qlen(usbnet*)
    function int usbnet_write_cmd(usbnet*, u8, u8, u16, u16, void*, u16)
    function int usbnet_write_cmd_async(usbnet*, u8, u8, u16, u16, void*, u16)
    function int usbnet_write_cmd_nopm(usbnet*, u8, u8, u16, u16, void*, u16)
    function int vfs_getattr(const path*, kstat*, u32, unsigned int)
    function long long int vfs_llseek(file*, long long int, int)
    function long int vfs_read(file*, char*, unsigned long int, long long int*)
    function long int vfs_write(file*, const char*, unsigned long int, long long int*)
    function void wakeup_source_add(wakeup_source*)
    function wakeup_source* wakeup_source_create(const char*)
    function void wakeup_source_destroy(wakeup_source*)
    function wakeup_source* wakeup_source_register(device*, const char*)
    function void wakeup_source_remove(wakeup_source*)
    function void wakeup_source_unregister(wakeup_source*)
    function void wiphy_free(wiphy*)
    function wiphy* wiphy_new_nm(const cfg80211_ops*, int, const char*)
    function int wiphy_register(wiphy*)
    function void wiphy_unregister(wiphy*)
    function void would_dump(linux_binprm*, file*)
    function xdp_frame* xdp_convert_zc_to_xdp_frame(xdp_buff*)
    function int xdp_do_redirect(net_device*, xdp_buff*, bpf_prog*)
    function void xdp_return_frame(xdp_frame*)
    function void xdp_return_frame_rx_napi(xdp_frame*)
    function int xdp_rxq_info_reg(xdp_rxq_info*, net_device*, unsigned int)
    function int xdp_rxq_info_reg_mem_model(xdp_rxq_info*, xdp_mem_type, void*)
    function void xdp_rxq_info_unreg(xdp_rxq_info*)
    function dst_entry* xfrm_lookup(net*, dst_entry*, const flowi*, const sock*, int)

'struct ufs_dev_info at ufs.h:530:1' changed:
  type size changed from 64 to 192 (in bits)
  2 data member insertions:
    'u16 ufs_dev_info::wmanufacturerid', at offset 16 (in bits) at ufs.h:534:1
    'u8* ufs_dev_info::model', at offset 64 (in bits) at ufs.h:536:1
  there are data member changes:
   'u16 ufs_dev_info::spec_version' offset changed from 16 to 128 (in bits) (by +112 bits)
   'u32 ufs_dev_info::clk_gating_wait_us' offset changed from 32 to 160 (in bits) (by +128 bits)

  10 impacted interfaces:
    function int ufshcd_dme_get_attr(ufs_hba*, u32, u32*, u8)
    function int ufshcd_dme_set_attr(ufs_hba*, u32, u8, u32, u8)
    function int ufshcd_dump_regs(ufs_hba*, size_t, size_t, const char*)
    function u32 ufshcd_get_local_unipro_ver(ufs_hba*)
    function int ufshcd_hold(ufs_hba*, bool)
    function int ufshcd_pltfrm_init(platform_device*, const ufs_hba_variant_ops*)
    function void ufshcd_release(ufs_hba*)
    function void ufshcd_remove(ufs_hba*)
    function int ufshcd_uic_hibern8_enter(ufs_hba*)
    function int ufshcd_uic_hibern8_exit(ufs_hba*)

'struct ufs_hba at ufshcd.h:559:1' changed:
  type size changed from 27520 to 27648 (in bits)
  there are data member changes:
   type 'struct ufs_dev_info' of 'ufs_hba::dev_info' changed as reported earlier
   and size changed from 64 to 192 (in bits) (by +128 bits)
   'bool ufs_hba::auto_bkops_enabled' offset changed from 16000 to 16128 (in bits) (by +128 bits)
   'ufs_vreg_info ufs_hba::vreg_info' offset changed from 16064 to 16192 (in bits) (by +128 bits)
   'list_head ufs_hba::clk_list_head' offset changed from 16320 to 16448 (in bits) (by +128 bits)
   'bool ufs_hba::wlun_dev_clr_ua' offset changed from 16448 to 16576 (in bits) (by +128 bits)
   'int ufs_hba::req_abort_count' offset changed from 16480 to 16608 (in bits) (by +128 bits)
   'u32 ufs_hba::lanes_per_direction' offset changed from 16512 to 16640 (in bits) (by +128 bits)
   'ufs_pa_layer_attr ufs_hba::pwr_info' offset changed from 16544 to 16672 (in bits) (by +128 bits)
   'ufs_pwr_mode_info ufs_hba::max_pwr_info' offset changed from 16768 to 16896 (in bits) (by +128 bits)
   'ufs_clk_gating ufs_hba::clk_gating' offset changed from 17024 to 17152 (in bits) (by +128 bits)
   'u32 ufs_hba::caps' offset changed from 18816 to 18944 (in bits) (by +128 bits)
   'devfreq* ufs_hba::devfreq' offset changed from 18880 to 19008 (in bits) (by +128 bits)
   'ufs_clk_scaling ufs_hba::clk_scaling' offset changed from 18944 to 19072 (in bits) (by +128 bits)
   'bool ufs_hba::is_sys_suspended' offset changed from 20352 to 20480 (in bits) (by +128 bits)
   'bkops_status ufs_hba::urgent_bkops_lvl' offset changed from 20384 to 20512 (in bits) (by +128 bits)
   'bool ufs_hba::is_urgent_bkops_lvl_checked' offset changed from 20416 to 20544 (in bits) (by +128 bits)
   'rw_semaphore ufs_hba::clk_scaling_lock' offset changed from 20480 to 20608 (in bits) (by +128 bits)
   'ufs_desc_size ufs_hba::desc_size' offset changed from 20800 to 20928 (in bits) (by +128 bits)
   'atomic_t ufs_hba::scsi_block_reqs_cnt' offset changed from 21024 to 21152 (in bits) (by +128 bits)
   'device ufs_hba::bsg_dev' offset changed from 21056 to 21184 (in bits) (by +128 bits)
   'request_queue* ufs_hba::bsg_queue' offset changed from 27200 to 27328 (in bits) (by +128 bits)
   'ufs_crypto_capabilities ufs_hba::crypto_capabilities' offset changed from 27264 to 27392 (in bits) (by +128 bits)
   'ufs_crypto_cap_entry* ufs_hba::crypto_cap_array' offset changed from 27328 to 27456 (in bits) (by +128 bits)
   'u32 ufs_hba::crypto_cfg_register' offset changed from 27392 to 27520 (in bits) (by +128 bits)
   'keyslot_manager* ufs_hba::ksm' offset changed from 27456 to 27584 (in bits) (by +128 bits)

  10 impacted interfaces:
    function int ufshcd_dme_get_attr(ufs_hba*, u32, u32*, u8)
    function int ufshcd_dme_set_attr(ufs_hba*, u32, u8, u32, u8)
    function int ufshcd_dump_regs(ufs_hba*, size_t, size_t, const char*)
    function u32 ufshcd_get_local_unipro_ver(ufs_hba*)
    function int ufshcd_hold(ufs_hba*, bool)
    function int ufshcd_pltfrm_init(platform_device*, const ufs_hba_variant_ops*)
    function void ufshcd_release(ufs_hba*)
    function void ufshcd_remove(ufs_hba*)
    function int ufshcd_uic_hibern8_enter(ufs_hba*)
    function int ufshcd_uic_hibern8_exit(ufs_hba*)

Bug: 149659981
Signed-off-by: default avatarTodd Kjos <tkjos@google.com>
Change-Id: Ie0a8e835bca8c7111f74440b1a44680856aae182
parent dfa82329
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment