![]() 1. ABI diff by BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh -j64 2. symbol added: Leaf changes summary: 370 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 353 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 17 Added variables Function symbols changes summary: 0 Removed, 2 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info 353 Added functions: [A] 'function buffer_head* __bread_gfp(block_device*, sector_t, unsigned int, gfp_t)' [A] 'function void __brelse(buffer_head*)' [A] 'function int __cpufreq_driver_target(cpufreq_policy*, unsigned int, unsigned int)' [A] 'function buffer_head* __getblk_gfp(block_device*, sector_t, unsigned int, gfp_t)' [A] 'function int __iio_device_register(iio_dev*, module*)' [A] 'function void __insert_inode_hash(inode*, unsigned long int)' [A] 'function unsigned int __kfifo_in_r(__kfifo*, void*, unsigned int, size_t)' [A] 'function unsigned int __kfifo_out_r(__kfifo*, void*, unsigned int, size_t)' [A] 'function void __lock_buffer(buffer_head*)' [A] 'function int __media_device_register(media_device*, module*)' [A] 'function int __mmc_claim_host(mmc_host*, mmc_ctx*, atomic_t*)' [A] 'function void __module_put_and_exit(module*, long int)' [A] 'function int __platform_register_drivers(platform_driver* const*, unsigned int, module*)' [A] 'function regmap* __regmap_init_i2c(i2c_client*, const regmap_config*, lock_class_key*, const char*)' [A] 'function void* __symbol_get(const char*)' [A] 'function void __symbol_put(const char*)' [A] 'function int __trace_bprintk(unsigned long int, const char*, ...)' [A] 'function int __trace_bputs(unsigned long int, const char*)' [A] 'function int __trace_puts(unsigned long int, const char*, int)' [A] 'function void __wait_on_buffer(buffer_head*)' [A] 'function unsigned long int _snd_pcm_stream_lock_irqsave(snd_pcm_substream*)' [A] 'function int alloc_contig_range(unsigned long int, unsigned long int, unsigned int, gfp_t)' [A] 'function file* anon_inode_getfile(const char*, const file_operations*, void*, int)' [A] 'function backlight_device* backlight_device_register(const char*, device*, void*, const backlight_ops*, const backlight_properties*)' [A] 'function void backlight_device_unregister(backlight_device*)' [A] 'function void baswap(bdaddr_t*, const bdaddr_t*)' [A] 'function int bitmap_find_free_region(unsigned long int*, unsigned int, int)' [A] 'function void bitmap_release_region(unsigned long int*, unsigned int, int)' [A] 'function int block_is_partially_uptodate(page*, unsigned long int, unsigned long int)' [A] 'function void bt_procfs_cleanup(net*, const char*)' [A] 'function int bt_procfs_init(net*, const char*, bt_sock_list*, int (seq_file*, void*)*)' [A] 'function void bt_sock_link(bt_sock_list*, sock*)' [A] 'function int bt_sock_register(int, const net_proto_family*)' [A] 'function void bt_sock_unlink(bt_sock_list*, sock*)' [A] 'function void bt_sock_unregister(int)' [A] 'function int buffer_migrate_page(address_space*, page*, page*, migrate_mode)' [A] 'function void cec_transmit_done_ts(cec_adapter*, u8, u8, u8, u8, u8, ktime_t)' [A] 'function device* class_find_device(class*, device*, void*, int (device*, void*)*)' [A] 'function void clear_inode(inode*)' [A] 'function void clk_bulk_put_all(int, clk_bulk_data*)' [A] 'function int clk_hw_set_parent(clk_hw*, clk_hw*)' [A] 'function clk* clk_register_composite(device*, const char*, const char* const*, int, clk_hw*, const clk_ops*, clk_hw*, const clk_ops*, clk_hw*, const clk_ops*, unsigned long int)' [A] 'function clk* clk_register_divider_table(device*, const char*, const char*, unsigned long int, void*, u8, u8, u8, const clk_div_table*, spinlock_t*)' [A] 'function void cpufreq_dbs_governor_exit(cpufreq_policy*)' [A] 'function int cpufreq_dbs_governor_init(cpufreq_policy*)' [A] 'function void cpufreq_dbs_governor_limits(cpufreq_policy*)' [A] 'function int cpufreq_dbs_governor_start(cpufreq_policy*)' [A] 'function void cpufreq_dbs_governor_stop(cpufreq_policy*)' [A] 'function int cpufreq_register_governor(cpufreq_governor*)' [A] 'function int cpufreq_table_index_unsorted(cpufreq_policy*, unsigned int, unsigned int)' [A] 'function void cpufreq_unregister_governor(cpufreq_governor*)' [A] 'function void cpufreq_update_policy(unsigned int)' [A] 'function u32 crc32_be(u32, const unsigned char*, size_t)' [A] 'function void create_empty_buffers(page*, unsigned long int, unsigned long int)' [A] 'function int crypto_register_alg(crypto_alg*)' [A] 'function void crypto_unregister_alg(crypto_alg*)' [A] 'function void crypto_unregister_scomp(scomp_alg*)' [A] 'function void d_add(dentry*, inode*)' [A] 'function dentry* d_add_ci(dentry*, inode*, qstr*)' [A] 'function dentry* d_make_root(inode*)' [A] 'function dentry* d_obtain_alias(inode*)' [A] 'function dentry* d_splice_alias(inode*, dentry*)' [A] 'function unsigned int dbs_update(cpufreq_policy*)' [A] 'function void debugfs_create_devm_seqfile(device*, const char*, dentry*, int (seq_file*, void*)*)' [A] 'function void debugfs_create_regset32(const char*, umode_t, dentry*, debugfs_regset32*)' [A] 'function dentry* debugfs_create_symlink(const char*, dentry*, const char*)' [A] 'function opp_table* dev_pm_opp_get_opp_table(device*)' [A] 'function int dev_pm_opp_init_cpufreq_table(device*, cpufreq_frequency_table**)' [A] 'function int dev_pm_opp_of_add_table_indexed(device*, int)' [A] 'function int dev_pm_opp_of_cpumask_add_table(const cpumask*)' [A] 'function int dev_pm_opp_of_get_sharing_cpus(device*, cpumask*)' [A] 'function void dev_pm_opp_put_opp_table(opp_table*)' [A] 'function devfreq* devfreq_get_devfreq_by_phandle(device*, const char*, int)' [A] 'function int devfreq_remove_governor(devfreq_governor*)' [A] 'function unsigned int device_get_child_node_count(device*)' [A] 'function fwnode_handle* device_get_next_child_node(device*, fwnode_handle*)' [A] 'function int device_match_of_node(device*, void*)' [A] 'function regmap* device_node_to_regmap(device_node*)' [A] 'function int devm_devfreq_register_notifier(device*, devfreq*, notifier_block*, unsigned int)' [A] 'function void devm_devfreq_remove_device(device*, devfreq*)' [A] 'function void devm_devfreq_unregister_notifier(device*, devfreq*, notifier_block*, unsigned int)' [A] 'function int devm_extcon_register_notifier(device*, extcon_dev*, unsigned int, notifier_block*)' [A] 'function gpio_desc* devm_fwnode_gpiod_get_index(device*, fwnode_handle*, const char*, int, gpiod_flags, const char*)' [A] 'function gpio_desc* devm_gpiod_get_index_optional(device*, const char*, unsigned int, gpiod_flags)' [A] 'function int devm_hwrng_register(device*, hwrng*)' [A] 'function int devm_hwspin_lock_unregister(device*, hwspinlock_device*)' [A] 'function int devm_led_classdev_register_ext(device*, led_classdev*, led_init_data*)' [A] 'function nvmem_device* devm_nvmem_device_get(device*, const char*)' [A] 'function phy* devm_of_phy_get_by_index(device*, device_node*, int)' [A] 'function pci_host_bridge* devm_pci_alloc_host_bridge(device*, size_t)' [A] 'function pwm_device* devm_pwm_get(device*, const char*)' [A] 'function int devm_request_pci_bus_resources(device*, list_head*)' [A] 'function dma_fence_array* dma_fence_array_create(int, dma_fence**, u64, unsigned int, bool)' [A] 'function int dma_supported(device*, u64)' [A] 'function void do_exit(long int)' [A] 'function int down_timeout(semaphore*, long int)' [A] 'function device_driver* driver_find(const char*, bus_type*)' [A] 'function void drm_atomic_helper_async_commit(drm_device*, drm_atomic_state*)' [A] 'function void drm_atomic_state_default_clear(drm_atomic_state*)' [A] 'function void drm_display_mode_from_videomode(const videomode*, drm_display_mode*)' [A] 'function int drm_gem_mmap_obj(drm_gem_object*, unsigned long int, vm_area_struct*)' [A] 'function drm_display_mode* drm_mode_create(drm_device*)' [A] 'function int drm_mode_crtc_set_gamma_size(drm_crtc*, int)' [A] 'function drm_property* drm_property_create_signed_range(drm_device*, u32, const char*, int64_t, int64_t)' [A] 'function void drm_self_refresh_helper_update_avg_times(drm_atomic_state*, unsigned int, unsigned int)' [A] 'function void end_buffer_read_sync(buffer_head*, int)' [A] 'function int eth_header(sk_buff*, net_device*, unsigned short int, void*, void*, unsigned int)' [A] 'function int eth_header_parse(const sk_buff*, unsigned char*)' [A] 'function int follow_pfn(vm_area_struct*, unsigned long int, unsigned long int*)' [A] 'function unsigned long int gen_pool_best_fit(unsigned long int*, unsigned long int, unsigned long int, unsigned int, void*, gen_pool*, unsigned long int)' [A] 'function void* gen_pool_dma_alloc(gen_pool*, size_t, dma_addr_t*)' [A] 'function gen_pool* gen_pool_get(device*, const char*)' [A] 'function void gen_pool_set_algo(gen_pool*, genpool_algo_t, void*)' [A] 'function phys_addr_t gen_pool_virt_to_phys(gen_pool*, unsigned long int)' [A] 'function int generic_error_remove_page(address_space*, page*)' [A] 'function dentry* generic_fh_to_dentry(super_block*, fid*, int, int, inode* (super_block*, typedef u64, typedef u32)*)' [A] 'function dentry* generic_fh_to_parent(super_block*, fid*, int, int, inode* (super_block*, typedef u64, typedef u32)*)' [A] 'function int generic_file_mmap(file*, vm_area_struct*)' [A] 'function int generic_file_open(inode*, file*)' [A] 'function ssize_t generic_file_read_iter(kiocb*, iov_iter*)' [A] 'function ssize_t generic_file_splice_read(file*, loff_t*, pipe_inode_info*, size_t, unsigned int)' [A] 'function ssize_t generic_read_dir(file*, char*, size_t, loff_t*)' [A] 'function int get_kernel_pages(const kvec*, int, int, page**)' [A] 'function long int get_user_pages_locked(unsigned long int, unsigned long int, unsigned int, page**, int*)' [A] 'function long int get_user_pages_remote(mm_struct*, unsigned long int, unsigned long int, unsigned int, page**, vm_area_struct**, int*)' [A] 'function void gov_update_cpu_data(dbs_data*)' [A] 'function int gpiod_cansleep(const gpio_desc*)' [A] 'function int gpiod_is_active_low(const gpio_desc*)' [A] 'function int i2c_bit_add_numbered_bus(i2c_adapter*)' [A] 'function void i2c_clients_command(i2c_adapter*, unsigned int, void*)' [A] 'function void ida_destroy(ida*)' [A] 'function inode* iget5_locked(super_block*, unsigned long int, int (inode*, void*)*, int (inode*, void*)*, void*)' [A] 'function inode* igrab(inode*)' [A] 'function void ihold(inode*)' [A] 'function int in_egroup_p(kgid_t)' [A] 'function void inode_init_once(inode*)' [A] 'function void invalidate_bh_lrus()' [A] 'function void io_schedule()' [A] 'function void* ioremap_cache(phys_addr_t, size_t)' [A] 'function void irq_domain_free_irqs_parent(irq_domain*, unsigned int, unsigned int)' [A] 'function irq_data* irq_domain_get_irq_data(irq_domain*, unsigned int)' [A] 'function irq_desc* irq_to_desc(unsigned int)' [A] 'function bool is_bad_inode(inode*)' [A] 'function u64 jiffies64_to_nsecs(u64)' [A] 'function int kern_path(const char*, unsigned int, path*)' [A] 'function void kernel_sigaction(int, __sighandler_t)' [A] 'function void kill_block_super(super_block*)' [A] 'function void ktime_get_coarse_real_ts64(timespec64*)' [A] 'function bool l2cap_is_socket(socket*)' [A] 'function led_default_state led_init_default_state_get(fwnode_handle*)' [A] 'function nls_table* load_nls(char*)' [A] 'function nls_table* load_nls_default()' [A] 'function int lzo1x_1_compress(const unsigned char*, size_t, unsigned char*, size_t*, void*)' [A] 'function int lzo1x_decompress_safe(const unsigned char*, size_t, unsigned char*, size_t*)' [A] 'function void make_bad_inode(inode*)' [A] 'function void mark_buffer_dirty(buffer_head*)' [A] 'function media_link* media_create_intf_link(media_entity*, media_interface*, u32)' [A] 'function int media_create_pad_link(media_entity*, u16, media_entity*, u16, u32)' [A] 'function int media_create_pad_links(const media_device*, const u32, media_entity*, const u16, const u32, media_entity*, const u16, u32, const bool)' [A] 'function void media_device_cleanup(media_device*)' [A] 'function void media_device_init(media_device*)' [A] 'function int media_device_register_entity(media_device*, media_entity*)' [A] 'function int media_device_register_entity_notify(media_device*, media_entity_notify*)' [A] 'function void media_device_unregister(media_device*)' [A] 'function void media_device_unregister_entity(media_entity*)' [A] 'function media_intf_devnode* media_devnode_create(media_device*, u32, u32, u32, u32)' [A] 'function void media_devnode_remove(media_intf_devnode*)' [A] 'function media_link* media_entity_find_link(media_pad*, media_pad*)' [A] 'function int media_entity_pads_init(media_entity*, u16, media_pad*)' [A] 'function int media_get_pad_index(media_entity*, bool, media_pad_signal_type)' [A] 'function void mmc_release_host(mmc_host*)' [A] 'function void mmc_wait_for_req(mmc_host*, mmc_request*)' [A] 'function dentry* mount_bdev(file_system_type*, int, const char*, void*, int (super_block*, void*, int)*)' [A] 'function inode* new_inode(super_block*)' [A] 'function clk* of_clk_get_from_provider(of_phandle_args*)' [A] 'function thermal_cooling_device* of_cpufreq_cooling_register(cpufreq_policy*)' [A] 'function device_node* of_find_node_with_property(device_node*, const char*)' [A] 'function int of_get_mac_address(device_node*, u8*)' [A] 'function int of_irq_parse_and_map_pci(const pci_dev*, u8, u8)' [A] 'function int of_pci_get_devfn(device_node*)' [A] 'function int of_pci_parse_bus_range(device_node*, resource*)' [A] 'function int of_pci_range_parser_init(of_pci_range_parser*, device_node*)' [A] 'function of_pci_range* of_pci_range_parser_one(of_pci_range_parser*, of_pci_range*)' [A] 'function int of_pci_range_to_resource(of_pci_range*, device_node*, resource*)' [A] 'function page* pagecache_get_page(address_space*, unsigned long int, int, gfp_t)' [A] 'function void path_put(const path*)' [A] 'function void pci_add_resource(list_head*, resource*)' [A] 'function void pci_add_resource_offset(list_head*, resource*, resource_size_t)' [A] 'function void pci_bus_add_devices(const pci_bus*)' [A] 'function void pci_bus_assign_resources(const pci_bus*)' [A] 'function void pci_bus_size_bridges(pci_bus*)' [A] 'function u8 pci_common_swizzle(pci_dev*, u8*)' [A] 'function void pci_free_resource_list(list_head*)' [A] 'function int pci_generic_config_read32(pci_bus*, unsigned int, int, int, u32*)' [A] 'function int pci_generic_config_write32(pci_bus*, unsigned int, int, int, u32)' [A] 'function irq_domain* pci_msi_create_irq_domain(fwnode_handle*, msi_domain_info*, irq_domain*)' [A] 'function void pci_msi_mask_irq(irq_data*)' [A] 'function void pci_msi_unmask_irq(irq_data*)' [A] 'function int pci_remap_iospace(const resource*, phys_addr_t)' [A] 'function void pci_remove_root_bus(pci_bus*)' [A] 'function int pci_scan_root_bus_bridge(pci_host_bridge*)' [A] 'function void pci_stop_root_bus(pci_bus*)' [A] 'function void pci_unmap_iospace(resource*)' [A] 'function void pcie_bus_configure_settings(pci_bus*)' [A] 'function void pinconf_generic_dump_config(pinctrl_dev*, seq_file*, unsigned long int)' [A] 'function int pinctrl_count_index_with_args(const device_node*, const char*)' [A] 'function int pinctrl_generic_add_group(pinctrl_dev*, const char*, int*, int, void*)' [A] 'function int pinctrl_generic_get_group_count(pinctrl_dev*)' [A] 'function const char* pinctrl_generic_get_group_name(pinctrl_dev*, unsigned int)' [A] 'function int pinctrl_generic_get_group_pins(pinctrl_dev*, unsigned int, const unsigned int**, unsigned int*)' [A] 'function int pinctrl_generic_remove_group(pinctrl_dev*, unsigned int)' [A] 'function int pinctrl_parse_index_with_args(const device_node*, const char*, int, of_phandle_args*)' [A] 'function int pinctrl_register_and_init(pinctrl_desc*, device*, void*, pinctrl_dev**)' [A] 'function void pinctrl_unregister(pinctrl_dev*)' [A] 'function int pinmux_generic_add_function(pinctrl_dev*, const char*, const char**, const unsigned int, void*)' [A] 'function function_desc* pinmux_generic_get_function(pinctrl_dev*, unsigned int)' [A] 'function int pinmux_generic_get_function_count(pinctrl_dev*)' [A] 'function int pinmux_generic_get_function_groups(pinctrl_dev*, unsigned int, const char* const**, unsigned int* const)' [A] 'function const char* pinmux_generic_get_function_name(pinctrl_dev*, unsigned int)' [A] 'function int pinmux_generic_remove_function(pinctrl_dev*, unsigned int)' [A] 'function void platform_unregister_drivers(platform_driver* const*, unsigned int)' [A] 'function proc_dir_entry* proc_create_single_data(const char*, umode_t, proc_dir_entry*, int (seq_file*, void*)*, void*)' [A] 'function int pwm_apply_state(pwm_device*, const pwm_state*)' [A] 'function void pwm_free(pwm_device*)' [A] 'function pwm_device* pwm_request(int, const char*)' [A] 'function int pwmchip_add(pwm_chip*)' [A] 'function void pwmchip_remove(pwm_chip*)' [A] 'function page* read_cache_page(address_space*, unsigned long int, int (void*, page*)*, void*)' [A] 'function int register_filesystem(file_system_type*)' [A] 'function int regulator_get_voltage(regulator*)' [A] 'function int regulator_set_mode(regulator*, unsigned int)' [A] 'function int regulator_set_voltage_time(regulator*, int, int)' [A] 'function int remove_proc_subtree(const char*, proc_dir_entry*)' [A] 'function device* rpmsg_find_device(device*, rpmsg_channel_info*)' [A] 'function int rpmsg_sendto(rpmsg_endpoint*, void*, int, u32)' [A] 'function void rproc_add_carveout(rproc*, rproc_mem_entry*)' [A] 'function rproc_mem_entry* rproc_mem_entry_init(device*, void*, dma_addr_t, size_t, u32, int (rproc*, rproc_mem_entry*)*, int (rproc*, rproc_mem_entry*)*, const char*, ...)' [A] 'function rproc_mem_entry* rproc_of_resm_mem_entry_init(device*, u32, size_t, u32, const char*, ...)' [A] 'function irqreturn_t rproc_vq_interrupt(rproc*, int)' [A] 'function int rtc_add_group(rtc_device*, const attribute_group*)' [A] 'function int sb_min_blocksize(super_block*, int)' [A] 'function int sb_set_blocksize(super_block*, int)' [A] 'function int schedule_hrtimeout(ktime_t*, const hrtimer_mode)' [A] 'function void serial8250_do_pm(uart_port*, unsigned int, unsigned int)' [A] 'function void serial8250_do_set_termios(uart_port*, ktermios*, ktermios*)' [A] 'function unsigned int serial8250_modem_status(uart_8250_port*)' [A] 'function int serial8250_register_8250_port(const uart_8250_port*)' [A] 'function void serial8250_resume_port(int)' [A] 'function unsigned char serial8250_rx_chars(uart_8250_port*, unsigned char)' [A] 'function void serial8250_suspend_port(int)' [A] 'function void serial8250_tx_chars(uart_8250_port*)' [A] 'function void serial8250_unregister_port(int)' [A] 'function void set_nlink(inode*, unsigned int)' [A] 'function void set_user_nice(task_struct*, long int)' [A] 'function snd_card* snd_card_ref(int)' [A] 'function int snd_devm_card_new(device*, int, const char*, module*, size_t, snd_card**)' [A] 'function int snd_info_get_line(snd_info_buffer*, char*, int)' [A] 'function int snd_interval_refine(snd_interval*, const snd_interval*)' [A] 'function int snd_pcm_format_set_silence(snd_pcm_format_t, void*, unsigned int)' [A] 'function int snd_pcm_hw_rule_add(snd_pcm_runtime*, unsigned int, int, snd_pcm_hw_rule_func_t, void*, int, ...)' [A] 'function int snd_pcm_stop(snd_pcm_substream*, snd_pcm_state_t)' [A] 'function int snd_pcm_stop_xrun(snd_pcm_substream*)' [A] 'function void snd_pcm_stream_unlock_irqrestore(snd_pcm_substream*, unsigned long int)' [A] 'function int snd_soc_bytes_info_ext(snd_kcontrol*, snd_ctl_elem_info*)' [A] 'function void snd_timer_close(snd_timer_instance*)' [A] 'function void snd_timer_instance_free(snd_timer_instance*)' [A] 'function snd_timer_instance* snd_timer_instance_new(const char*)' [A] 'function int snd_timer_open(snd_timer_instance*, snd_timer_id*, unsigned int)' [A] 'function int snd_timer_start(snd_timer_instance*, unsigned int)' [A] 'function int snd_timer_stop(snd_timer_instance*)' [A] 'function int sock_no_bind(socket*, sockaddr*, int)' [A] 'function int sock_no_connect(socket*, sockaddr*, int, int)' [A] 'function int sock_no_getname(socket*, sockaddr*, int)' [A] 'function int sock_no_recvmsg(socket*, msghdr*, size_t, int)' [A] 'function int sock_no_sendmsg(socket*, msghdr*, size_t)' [A] 'function spi_device* spi_new_device(spi_controller*, spi_board_info*)' [A] 'function ssize_t store_sampling_rate(gov_attr_set*, const char*, size_t)' [A] 'function int submit_bh(int, int, buffer_head*)' [A] 'function void suspend_set_ops(const platform_suspend_ops*)' [A] 'function void symbol_put_addr(void*)' [A] 'function int sync_dirty_buffer(buffer_head*)' [A] 'function int sync_filesystem(super_block*)' [A] 'function int sysfs_merge_group(kobject*, const attribute_group*)' [A] 'function void sysfs_unmerge_group(kobject*, const attribute_group*)' [A] 'function int trace_array_destroy(trace_array*)' [A] 'function trace_array* trace_array_get_by_name(const char*)' [A] 'function int trace_array_init_printk(trace_array*)' [A] 'function int trace_array_printk(trace_array*, unsigned long int, const char*, ...)' [A] 'function void truncate_inode_pages_final(address_space*)' [A] 'function unsigned int uart_get_divisor(uart_port*, unsigned int)' [A] 'function void unload_nls(nls_table*)' [A] 'function void unlock_buffer(buffer_head*)' [A] 'function void unlock_new_inode(inode*)' [A] 'function void unpin_user_pages(page**, unsigned long int)' [A] 'function int unregister_filesystem(file_system_type*)' [A] 'function int usb_ep_set_halt(usb_ep*)' [A] 'function int usb_gadget_map_request(usb_gadget*, usb_request*, int)' [A] 'function void usb_gadget_unmap_request(usb_gadget*, usb_request*, int)' [A] 'function usb_dr_mode usb_get_dr_mode(device*)' [A] 'function void v4l2_ctrl_auto_cluster(unsigned int, v4l2_ctrl**, u8, bool)' [A] 'function int v4l2_ctrl_handler_setup(v4l2_ctrl_handler*)' [A] 'function __poll_t v4l2_ctrl_poll(file*, poll_table_struct*)' [A] 'function void v4l2_ctrl_request_complete(media_request*, v4l2_ctrl_handler*)' [A] 'function int v4l2_ctrl_request_setup(media_request*, v4l2_ctrl_handler*)' [A] 'function int v4l2_ctrl_subdev_log_status(v4l2_subdev*)' [A] 'function int v4l2_ctrl_subscribe_event(v4l2_fh*, const v4l2_event_subscription*)' [A] 'function int v4l2_device_register_subdev(v4l2_device*, v4l2_subdev*)' [A] 'function void v4l2_device_unregister_subdev(v4l2_subdev*)' [A] 'function void v4l2_event_queue(video_device*, const v4l2_event*)' [A] 'function void v4l2_event_queue_fh(v4l2_fh*, const v4l2_event*)' [A] 'function int v4l2_event_subscribe(v4l2_fh*, const v4l2_event_subscription*, unsigned int, const v4l2_subscribed_event_ops*)' [A] 'function int v4l2_event_unsubscribe(v4l2_fh*, const v4l2_event_subscription*)' [A] 'function int v4l2_fh_is_singular(v4l2_fh*)' [A] 'function void v4l2_i2c_subdev_init(v4l2_subdev*, i2c_client*, const v4l2_subdev_ops*)' [A] 'function void v4l2_m2m_buf_copy_metadata(const vb2_v4l2_buffer*, vb2_v4l2_buffer*, bool)' [A] 'function int v4l2_m2m_dqbuf(file*, v4l2_m2m_ctx*, v4l2_buffer*)' [A] 'function int v4l2_m2m_ioctl_create_bufs(file*, void*, v4l2_create_buffers*)' [A] 'function int v4l2_m2m_ioctl_expbuf(file*, void*, v4l2_exportbuffer*)' [A] 'function int v4l2_m2m_ioctl_prepare_buf(file*, void*, v4l2_buffer*)' [A] 'function int v4l2_m2m_ioctl_qbuf(file*, void*, v4l2_buffer*)' [A] 'function int v4l2_m2m_querybuf(file*, v4l2_m2m_ctx*, v4l2_buffer*)' [A] 'function int v4l2_m2m_register_media_controller(v4l2_m2m_dev*, video_device*, int)' [A] 'function int v4l2_m2m_reqbufs(file*, v4l2_m2m_ctx*, v4l2_requestbuffers*)' [A] 'function void v4l2_m2m_request_queue(media_request*)' [A] 'function int v4l2_m2m_streamoff(file*, v4l2_m2m_ctx*, v4l2_buf_type)' [A] 'function int v4l2_m2m_streamon(file*, v4l2_m2m_ctx*, v4l2_buf_type)' [A] 'function void v4l2_m2m_try_schedule(v4l2_m2m_ctx*)' [A] 'function void v4l2_m2m_unregister_media_controller(v4l2_m2m_dev*)' [A] 'function void v4l2_spi_subdev_init(v4l2_subdev*, spi_device*, const v4l2_subdev_ops*)' [A] 'function int v4l2_src_change_event_subscribe(v4l2_fh*, const v4l2_event_subscription*)' [A] 'function void v4l2_subdev_init(v4l2_subdev*, const v4l2_subdev_ops*)' [A] 'function void v4l_bound_align_image(u32*, unsigned int, unsigned int, unsigned int, u32*, unsigned int, unsigned int, unsigned int, unsigned int)' [A] 'function int vb2_core_dqbuf(vb2_queue*, unsigned int*, void*, bool)' [A] 'function int vb2_core_expbuf(vb2_queue*, int*, unsigned int, unsigned int, unsigned int, unsigned int)' [A] 'function __poll_t vb2_core_poll(vb2_queue*, file*, poll_table*)' [A] 'function int vb2_core_qbuf(vb2_queue*, unsigned int, void*, media_request*)' [A] 'function void vb2_core_querybuf(vb2_queue*, unsigned int, void*)' [A] 'function int vb2_core_queue_init(vb2_queue*)' [A] 'function void vb2_core_queue_release(vb2_queue*)' [A] 'function int vb2_core_reqbufs(vb2_queue*, vb2_memory, unsigned int*)' [A] 'function int vb2_core_streamoff(vb2_queue*, unsigned int)' [A] 'function int vb2_core_streamon(vb2_queue*, unsigned int)' [A] 'function int vb2_request_validate(media_request*)' [A] 'function loff_t vfs_llseek(file*, loff_t, int)' [A] 'function void videomode_from_timing(const display_timing*, videomode*)' [A] 'function int vm_iomap_memory(vm_area_struct*, phys_addr_t, unsigned long int)' [A] 'function int xhci_add_endpoint(usb_hcd*, usb_device*, usb_host_endpoint*)' [A] 'function int xhci_check_bandwidth(usb_hcd*, usb_device*)' [A] 'function int xhci_drop_endpoint(usb_hcd*, usb_device*, usb_host_endpoint*)' [A] 'function unsigned int xhci_get_endpoint_index(usb_endpoint_descriptor*)' [A] 'function xhci_ep_ctx* xhci_get_ep_ctx(xhci_hcd*, xhci_container_ctx*, unsigned int)' [A] 'function void xhci_reset_bandwidth(usb_hcd*, usb_device*)' [A] 'function void yield()' 17 Added variables: [A] 'const clk_ops clk_divider_ops' [A] 'const clk_ops clk_gate_ops' [A] 'const clk_ops clk_mux_ops' [A] 'int console_printk[4]' [A] 'const dma_fence_ops dma_fence_array_ops' [A] 'const vm_operations_struct drm_gem_cma_vm_ops' [A] 'irq_chip dummy_irq_chip' [A] 'const fwnode_operations irqchip_fwnode_ops' [A] 'int overflowgid' [A] 'int overflowuid' [A] 'const kernel_param_ops param_ops_short' [A] 'const kernel_param_ops param_ops_ushort' [A] 'workqueue_struct* pm_wq' [A] 'int snd_ecards_limit' [A] 'const dev_pm_ops snd_soc_pm_ops' [A] 'const uuid_t uuid_null' [A] 'const vb2_mem_ops vb2_dma_contig_memops' 2 Added function symbols not referenced by debug info: [A] __arm_smccc_hvc [A] memchr Bug: 211722396 Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> Change-Id: Ieb488bd9cdacbc71ac7564a1e7dd925da5c0ba30 |
||
---|---|---|
Documentation | ||
LICENSES | ||
android | ||
arch | ||
block | ||
certs | ||
crypto | ||
drivers | ||
fs | ||
include | ||
init | ||
ipc | ||
kernel | ||
lib | ||
mm | ||
net | ||
samples | ||
scripts | ||
security | ||
sound | ||
tools | ||
usr | ||
virt | ||
.clang-format | ||
.cocciconfig | ||
.get_maintainer.ignore | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
BUILD.bazel | ||
COPYING | ||
CREDITS | ||
Kbuild | ||
Kconfig | ||
Kconfig.ext | ||
MAINTAINERS | ||
Makefile | ||
OWNERS | ||
README | ||
README.md | ||
build.config.aarch64 | ||
build.config.allmodconfig | ||
build.config.allmodconfig.aarch64 | ||
build.config.allmodconfig.arm | ||
build.config.allmodconfig.x86_64 | ||
build.config.amlogic | ||
build.config.arm | ||
build.config.common | ||
build.config.constants | ||
build.config.db845c | ||
build.config.gki | ||
build.config.gki-debug.aarch64 | ||
build.config.gki-debug.x86_64 | ||
build.config.gki.aarch64 | ||
build.config.gki.x86_64 | ||
build.config.gki_kasan | ||
build.config.gki_kasan.aarch64 | ||
build.config.gki_kasan.x86_64 | ||
build.config.gki_kprobes | ||
build.config.gki_kprobes.aarch64 | ||
build.config.gki_kprobes.x86_64 | ||
build.config.khwasan | ||
build.config.rockpi4 | ||
build.config.x86_64 |
README.md
How do I submit patches to Android Common Kernels
-
BEST: Make all of your changes to upstream Linux. If appropriate, backport to the stable releases. These patches will be merged automatically in the corresponding common kernels. If the patch is already in upstream Linux, post a backport of the patch that conforms to the patch requirements below.
- Do not send patches upstream that contain only symbol exports. To be considered for upstream Linux,
additions of
EXPORT_SYMBOL_GPL()
require an in-tree modular driver that uses the symbol -- so include the new driver or changes to an existing driver in the same patchset as the export. - When sending patches upstream, the commit message must contain a clear case for why the patch is needed and beneficial to the community. Enabling out-of-tree drivers or functionality is not not a persuasive case.
- Do not send patches upstream that contain only symbol exports. To be considered for upstream Linux,
additions of
-
LESS GOOD: Develop your patches out-of-tree (from an upstream Linux point-of-view). Unless these are fixing an Android-specific bug, these are very unlikely to be accepted unless they have been coordinated with kernel-team@android.com. If you want to proceed, post a patch that conforms to the patch requirements below.
Common Kernel patch requirements
- All patches must conform to the Linux kernel coding standards and pass
scripts/checkpatch.pl
- Patches shall not break gki_defconfig or allmodconfig builds for arm, arm64, x86, x86_64 architectures (see https://source.android.com/setup/build/building-kernels)
- If the patch is not merged from an upstream branch, the subject must be tagged with the type of patch:
UPSTREAM:
,BACKPORT:
,FROMGIT:
,FROMLIST:
, orANDROID:
. - All patches must have a
Change-Id:
tag (see https://gerrit-review.googlesource.com/Documentation/user-changeid.html) - If an Android bug has been assigned, there must be a
Bug:
tag. - All patches must have a
Signed-off-by:
tag by the author and the submitter
Additional requirements are listed below based on patch type
Requirements for backports from mainline Linux: UPSTREAM:
, BACKPORT:
- If the patch is a cherry-pick from Linux mainline with no changes at all
- tag the patch subject with
UPSTREAM:
. - add upstream commit information with a
(cherry picked from commit ...)
line - Example:
- if the upstream commit message is
- tag the patch subject with
important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
- then Joe Smith would upload the patch for the common kernel as
UPSTREAM: important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
Bug: 135791357
Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
(cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
Signed-off-by: Joe Smith <joe.smith@foo.org>
- If the patch requires any changes from the upstream version, tag the patch with
BACKPORT:
instead ofUPSTREAM:
.- use the same tags as
UPSTREAM:
- add comments about the changes under the
(cherry picked from commit ...)
line - Example:
- use the same tags as
BACKPORT: important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
Bug: 135791357
Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
(cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
[joe: Resolved minor conflict in drivers/foo/bar.c ]
Signed-off-by: Joe Smith <joe.smith@foo.org>
Requirements for other backports: FROMGIT:
, FROMLIST:
,
- If the patch has been merged into an upstream maintainer tree, but has not yet
been merged into Linux mainline
- tag the patch subject with
FROMGIT:
- add info on where the patch came from as
(cherry picked from commit <sha1> <repo> <branch>)
. This must be a stable maintainer branch (not rebased, so don't uselinux-next
for example). - if changes were required, use
BACKPORT: FROMGIT:
- Example:
- if the commit message in the maintainer tree is
- tag the patch subject with
important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
- then Joe Smith would upload the patch for the common kernel as
FROMGIT: important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
Bug: 135791357
(cherry picked from commit 878a2fd9de10b03d11d2f622250285c7e63deace
https://git.kernel.org/pub/scm/linux/kernel/git/foo/bar.git test-branch)
Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
Signed-off-by: Joe Smith <joe.smith@foo.org>
- If the patch has been submitted to LKML, but not accepted into any maintainer tree
- tag the patch subject with
FROMLIST:
- add a
Link:
tag with a link to the submittal on lore.kernel.org - add a
Bug:
tag with the Android bug (required for patches not accepted into a maintainer tree) - if changes were required, use
BACKPORT: FROMLIST:
- Example:
- tag the patch subject with
FROMLIST: important patch from upstream
This is the detailed description of the important patch
Signed-off-by: Fred Jones <fred.jones@foo.org>
Bug: 135791357
Link: https://lore.kernel.org/lkml/20190619171517.GA17557@someone.com/
Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
Signed-off-by: Joe Smith <joe.smith@foo.org>
Requirements for Android-specific patches: ANDROID:
- If the patch is fixing a bug to Android-specific code
- tag the patch subject with
ANDROID:
- add a
Fixes:
tag that cites the patch with the bug - Example:
- tag the patch subject with
ANDROID: fix android-specific bug in foobar.c
This is the detailed description of the important fix
Fixes: 1234abcd2468 ("foobar: add cool feature")
Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
Signed-off-by: Joe Smith <joe.smith@foo.org>
- If the patch is a new feature
- tag the patch subject with
ANDROID:
- add a
Bug:
tag with the Android bug (required for android-specific features)
- tag the patch subject with