Go to file
John Stultz 8874c96125 ANDROID: ABI/Whitelist: update for hikey960
This adds a whitelist for the symbols used by the hikey960
device, adds the list to the build.config.gki.aarch64 file,
and updates the abi_gki_aarch64.xml file with build_abi.sh

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

464 Added functions:

  [A] 'function void __blk_mq_end_request(request*, blk_status_t)'
  [A] 'function int __blkdev_issue_discard(block_device*, sector_t, sector_t, gfp_t, int, bio**)'
  [A] 'function int __blkdev_issue_zeroout(block_device*, sector_t, sector_t, gfp_t, bio**, unsigned int)'
  [A] 'function int __close_fd(files_struct*, unsigned int)'
  [A] 'function dma_chan* __dma_request_channel(const dma_cap_mask_t*, dma_filter_fn, void*, device_node*)'
  [A] 'function void __do_once_done(bool*, static_key_true*, unsigned long int*)'
  [A] 'function bool __do_once_start(bool*, unsigned long int*)'
  [A] 'function int __ion_device_add_heap(ion_heap*, module*)'
  [A] 'function int __mmc_claim_host(mmc_host*, mmc_ctx*, atomic_t*)'
  [A] 'function int __mmc_send_status(mmc_card*, u32*, unsigned int)'
  [A] 'function void __mmdrop(mm_struct*)'
  [A] 'function void __module_put_and_exit(module*, long int)'
  [A] 'function sock* __netlink_kernel_create(net*, int, module*, netlink_kernel_cfg*)'
  [A] 'function int __register_chrdev(unsigned int, unsigned int, unsigned int, const char*, const file_operations*)'
  [A] 'function void __serio_register_port(serio*, module*)'
  [A] 'function void __unregister_chrdev(unsigned int, unsigned int, unsigned int, const char*)'
  [A] 'function void _dev_crit(const device*, const char*, ...)'
  [A] 'function void add_wait_queue_exclusive(wait_queue_head*, wait_queue_entry*)'
  [A] 'function int amba_driver_register(amba_driver*)'
  [A] 'function void amba_driver_unregister(amba_driver*)'
  [A] 'function void amba_release_regions(amba_device*)'
  [A] 'function int amba_request_regions(amba_device*, const char*)'
  [A] 'function int anon_inode_getfd(const char*, const file_operations*, void*, int)'
  [A] 'function void arch_set_freq_scale(cpumask*, unsigned long int, unsigned long int)'
  [A] 'function async_cookie_t async_schedule_node(async_func_t, void*, int)'
  [A] 'function void baswap(bdaddr_t*, const bdaddr_t*)'
  [A] 'function char* bin2hex(char*, void*, unsigned long int)'
  [A] 'function int bio_add_page(bio*, page*, unsigned int, unsigned int)'
  [A] 'function void bio_associate_blkg(bio*)'
  [A] 'function void bio_endio(bio*)'
  [A] 'function void bio_init(bio*, bio_vec*, unsigned short int)'
  [A] 'function void bio_put(bio*)'
  [A] 'function void blk_execute_rq_nowait(request_queue*, gendisk*, request*, int, rq_end_io_fn*)'
  [A] 'function void blk_freeze_queue_start(request_queue*)'
  [A] 'function bool blk_get_queue(request_queue*)'
  [A] 'function request* blk_mq_alloc_request(request_queue*, unsigned int, unsigned int)'
  [A] 'function request* blk_mq_alloc_request_hctx(request_queue*, unsigned int, blk_mq_req_flags_t, unsigned int)'
  [A] 'function void blk_mq_delay_kick_requeue_list(request_queue*, unsigned long int)'
  [A] 'function void blk_mq_free_request(request*)'
  [A] 'function void blk_mq_freeze_queue(request_queue*)'
  [A] 'function void blk_mq_freeze_queue_wait(request_queue*)'
  [A] 'function int blk_mq_freeze_queue_wait_timeout(request_queue*, unsigned long int)'
  [A] 'function int blk_mq_pci_map_queues(blk_mq_queue_map*, pci_dev*, int)'
  [A] 'function int blk_mq_request_completed(request*)'
  [A] 'function void blk_mq_requeue_request(request*, bool)'
  [A] 'function void blk_mq_run_hw_queues(request_queue*, bool)'
  [A] 'function request* blk_mq_tag_to_rq(blk_mq_tags*, unsigned int)'
  [A] 'function void blk_mq_tagset_busy_iter(blk_mq_tag_set*, busy_tag_iter_fn*, void*)'
  [A] 'function void blk_mq_tagset_wait_completed_request(blk_mq_tag_set*)'
  [A] 'function void blk_mq_unfreeze_queue(request_queue*)'
  [A] 'function u32 blk_mq_unique_tag(request*)'
  [A] 'function void blk_mq_update_nr_hw_queues(blk_mq_tag_set*, int)'
  [A] 'function int blk_poll(request_queue*, unsigned int, bool)'
  [A] 'function void blk_put_queue(request_queue*)'
  [A] 'function bool blk_queue_can_use_dma_map_merging(request_queue*, device*)'
  [A] 'function void blk_queue_chunk_sectors(request_queue*, unsigned int)'
  [A] 'function void blk_queue_flag_clear(unsigned int, request_queue*)'
  [A] 'function bool blk_queue_flag_test_and_set(unsigned int, request_queue*)'
  [A] 'function void blk_queue_rq_timeout(request_queue*, unsigned int)'
  [A] 'function void blk_queue_virt_boundary(request_queue*, unsigned long int)'
  [A] 'function int blk_rq_map_user(request_queue*, request*, rq_map_data*, void*, unsigned long int, gfp_t)'
  [A] 'function int blk_rq_unmap_user(bio*)'
  [A] 'function void blk_set_queue_dying(request_queue*)'
  [A] 'function void blk_sync_queue(request_queue*)'
  [A] 'function bool blk_update_request(request*, blk_status_t, unsigned int)'
  [A] 'function block_device* blkdev_get_by_path(const char*, unsigned int, void*)'
  [A] 'function int blkdev_issue_flush(block_device*, unsigned int, long long unsigned int*)'
  [A] 'function void blkdev_put(block_device*, unsigned int)'
  [A] 'function sock* bt_accept_dequeue(sock*, socket*)'
  [A] 'function void bt_accept_enqueue(sock*, sock*, bool)'
  [A] 'function void bt_accept_unlink(sock*)'
  [A] 'function void bt_procfs_cleanup(net*, const char*)'
  [A] 'function int bt_procfs_init(net*, const char*, bt_sock_list*, void ()*)'
  [A] 'function int bt_sock_ioctl(socket*, unsigned int, unsigned long int)'
  [A] 'function void bt_sock_link(bt_sock_list*, sock*)'
  [A] 'function __poll_t bt_sock_poll(file*, socket*, poll_table*)'
  [A] 'function void bt_sock_reclassify_lock(sock*, int)'
  [A] 'function int bt_sock_register(int, const net_proto_family*)'
  [A] 'function int bt_sock_stream_recvmsg(socket*, msghdr*, size_t, int)'
  [A] 'function void bt_sock_unlink(bt_sock_list*, sock*)'
  [A] 'function void bt_sock_unregister(int)'
  [A] 'function int bt_sock_wait_ready(sock*, unsigned long int)'
  [A] 'function int bt_sock_wait_state(sock*, int, unsigned long int)'
  [A] 'function void bt_warn(const char*, ...)'
  [A] 'function int bus_register_notifier(bus_type*, notifier_block*)'
  [A] 'function int bus_unregister_notifier(bus_type*, notifier_block*)'
  [A] 'function const element* cfg80211_find_elem_match(unsigned char, const unsigned char*, unsigned int, const unsigned char*, unsigned int, unsigned int)'
  [A] 'function const element* cfg80211_find_vendor_elem(unsigned int, int, const u8*, unsigned int)'
  [A] 'function int check_disk_change(block_device*)'
  [A] 'function void cleanup_srcu_struct(srcu_struct*)'
  [A] 'function page* cma_alloc(cma*, unsigned long int, unsigned int, bool)'
  [A] 'function int cma_for_each_area(void ()*, void*)'
  [A] 'function const char* cma_get_name(const cma*)'
  [A] 'function bool cma_release(cma*, const page*, unsigned int)'
  [A] 'function bool completion_done(completion*)'
  [A] 'function int cpufreq_enable_boost_support()'
  [A] 'function int cpufreq_generic_frequency_table_verify(cpufreq_policy_data*)'
  [A] 'function unsigned int cpufreq_generic_get(unsigned int)'
  [A] 'function int cpufreq_generic_suspend(cpufreq_policy*)'
  [A] 'function timespec64 current_time(inode*)'
  [A] 'function void d_add(dentry*, inode*)'
  [A] 'function dentry* d_alloc_name(dentry*, const char*)'
  [A] 'function void d_delete(dentry*)'
  [A] 'function void dev_pm_clear_wake_irq(device*)'
  [A] 'function void dev_pm_opp_free_cpufreq_table(device*, cpufreq_frequency_table**)'
  [A] 'function unsigned long int dev_pm_opp_get_max_transition_latency(device*)'
  [A] 'function int dev_pm_opp_get_sharing_cpus(device*, cpumask*)'
  [A] 'function unsigned long int dev_pm_opp_get_suspend_opp_freq(device*)'
  [A] 'function int dev_pm_opp_init_cpufreq_table(device*, cpufreq_frequency_table**)'
  [A] 'function int dev_pm_opp_of_cpumask_add_table(const cpumask*)'
  [A] 'function void dev_pm_opp_of_cpumask_remove_table(const cpumask*)'
  [A] 'function int dev_pm_opp_of_get_sharing_cpus(device*, cpumask*)'
  [A] 'function void dev_pm_opp_of_register_em(cpumask*)'
  [A] 'function void dev_pm_opp_put_regulators(opp_table*)'
  [A] 'function int dev_pm_opp_set_rate(device*, unsigned long int)'
  [A] 'function opp_table* dev_pm_opp_set_regulators(device*, const char* const*, unsigned int)'
  [A] 'function int dev_pm_opp_set_sharing_cpus(device*, const cpumask*)'
  [A] 'function int dev_pm_qos_expose_latency_tolerance(device*)'
  [A] 'function void dev_pm_qos_hide_latency_tolerance(device*)'
  [A] 'function int dev_pm_qos_update_user_latency_tolerance(device*, int)'
  [A] 'function int dev_pm_set_dedicated_wake_irq(device*, int)'
  [A] 'function devfreq* devfreq_add_device(device*, devfreq_dev_profile*, const char*, void*)'
  [A] 'function int devfreq_remove_device(devfreq*)'
  [A] 'function int device_create_bin_file(device*, const bin_attribute*)'
  [A] 'function int device_move(device*, device*, dpm_order)'
  [A] 'function int device_property_read_string_array(device*, const char*, const char**, size_t)'
  [A] 'function void device_remove_bin_file(device*, const bin_attribute*)'
  [A] 'function bool device_remove_file_self(device*, const device_attribute*)'
  [A] 'function clk* devm_get_clk_from_child(device*, device_node*, const char*)'
  [A] 'function char* devm_kasprintf(device*, unsigned int, const char*, ...)'
  [A] 'function char* devm_kvasprintf(device*, gfp_t, const char*, va_list)'
  [A] 'function int devm_mbox_controller_register(device*, mbox_controller*)'
  [A] 'function int devm_snd_dmaengine_pcm_register(device*, const snd_dmaengine_pcm_config*, unsigned int)'
  [A] 'function thermal_zone_device* devm_thermal_zone_of_sensor_register(device*, int, void*, const thermal_zone_of_device_ops*)'
  [A] 'function usb_phy* devm_usb_get_phy(device*, usb_phy_type)'
  [A] 'function usb_phy* devm_usb_get_phy_by_phandle(device*, const char*, u8)'
  [A] 'function void dma_direct_sync_sg_for_cpu(device*, scatterlist*, int, dma_data_direction)'
  [A] 'function int dma_fence_get_status(dma_fence*)'
  [A] 'function bool dma_fence_remove_callback(dma_fence*, dma_fence_cb*)'
  [A] 'function unsigned long int dma_get_merge_boundary(device*)'
  [A] 'function dma_chan* dma_get_slave_channel(dma_chan*)'
  [A] 'function dma_pool* dmam_pool_create(const char*, device*, size_t, size_t, size_t)'
  [A] 'function int down_trylock(semaphore*)'
  [A] 'function void downgrade_write(rw_semaphore*)'
  [A] 'function drm_crtc_state* drm_atomic_get_crtc_state(drm_atomic_state*, drm_crtc*)'
  [A] 'function void drm_connector_list_iter_begin(drm_device*, drm_connector_list_iter*)'
  [A] 'function void drm_connector_list_iter_end(drm_connector_list_iter*)'
  [A] 'function drm_connector* drm_connector_list_iter_next(drm_connector_list_iter*)'
  [A] 'function void drm_crtc_arm_vblank_event(drm_crtc*, drm_pending_vblank_event*)'
  [A] 'function drm_gem_cma_object* drm_fb_cma_get_gem_obj(drm_framebuffer*, unsigned int)'
  [A] 'function int drm_gem_cma_dumb_create_internal(drm_file*, drm_device*, drm_mode_create_dumb*)'
  [A] 'function void drm_gem_cma_free_object(drm_gem_object*)'
  [A] 'function int drm_gem_cma_mmap(file*, vm_area_struct*)'
  [A] 'function sg_table* drm_gem_cma_prime_get_sg_table(drm_gem_object*)'
  [A] 'function drm_gem_object* drm_gem_cma_prime_import_sg_table(drm_device*, dma_buf_attachment*, sg_table*)'
  [A] 'function int drm_gem_cma_prime_mmap(drm_gem_object*, vm_area_struct*)'
  [A] 'function void* drm_gem_cma_prime_vmap(drm_gem_object*)'
  [A] 'function void drm_gem_cma_prime_vunmap(drm_gem_object*, void*)'
  [A] 'function dma_buf* drm_gem_prime_export(drm_gem_object*, int)'
  [A] 'function void drm_mode_copy(drm_display_mode*, const drm_display_mode*)'
  [A] 'function uint32_t drm_of_find_possible_crtcs(drm_device*, device_node*)'
  [A] 'function void drm_sysfs_hotplug_event(drm_device*)'
  [A] 'function void* dup_iter(iov_iter*, iov_iter*, gfp_t)'
  [A] 'function int fasync_helper(int, file*, int, fasync_struct**)'
  [A] 'function device* get_cpu_device(unsigned int)'
  [A] 'function unsigned int get_next_ino()'
  [A] 'function unsigned int get_random_u32()'
  [A] 'function int get_tree_single(fs_context*, void ()*)'
  [A] 'function long int get_user_pages(unsigned long int, unsigned long int, unsigned int, page**, vm_area_struct**)'
  [A] 'function int get_user_pages_fast(unsigned long int, int, unsigned int, page**)'
  [A] 'function long int get_user_pages_remote(task_struct*, mm_struct*, unsigned long int, unsigned long int, unsigned int, page**, vm_area_struct**, int*)'
  [A] 'function unsigned long int get_zeroed_page(unsigned int)'
  [A] 'function int hci_conn_check_secure(hci_conn*, __u8)'
  [A] 'function int hci_conn_security(hci_conn*, __u8, __u8, bool)'
  [A] 'function int hci_conn_switch_role(hci_conn*, __u8)'
  [A] 'function hci_dev* hci_get_route(bdaddr_t*, bdaddr_t*, uint8_t)'
  [A] 'function int hci_register_cb(hci_cb*)'
  [A] 'function int hci_unregister_cb(hci_cb*)'
  [A] 'function int hdmi_avi_infoframe_init(hdmi_avi_infoframe*)'
  [A] 'function ssize_t hdmi_avi_infoframe_pack(hdmi_avi_infoframe*, void*, size_t)'
  [A] 'function int hex_to_bin(char)'
  [A] 'function int hid_add_device(hid_device*)'
  [A] 'function hid_device* hid_allocate_device()'
  [A] 'function void hid_destroy_device(hid_device*)'
  [A] 'function bool hid_ignore(hid_device*)'
  [A] 'function int hid_input_report(hid_device*, int, unsigned char*, unsigned int, int)'
  [A] 'function int hid_parse_report(hid_device*, unsigned char*, unsigned int)'
  [A] 'function int i2c_for_each_dev(void*, void ()*)'
  [A] 'function int i2c_generic_scl_recovery(i2c_adapter*)'
  [A] 'function i2c_adapter* i2c_get_adapter(int)'
  [A] 'function i2c_client* i2c_new_ancillary_device(i2c_client*, const char*, u16)'
  [A] 'function void i2c_parse_fw_timings(device*, i2c_timings*, bool)'
  [A] 'function void i2c_put_adapter(i2c_adapter*)'
  [A] 'function int i2c_recover_bus(i2c_adapter*)'
  [A] 'function int i2c_smbus_read_word_data(const i2c_client*, unsigned char)'
  [A] 'function int i2c_smbus_xfer(i2c_adapter*, unsigned short int, unsigned short int, char, unsigned char, int, i2c_smbus_data*)'
  [A] 'function int i2c_transfer_buffer_flags(const i2c_client*, char*, int, unsigned short int)'
  [A] 'function void i2c_unregister_device(i2c_client*)'
  [A] 'function i2c_client* i2c_verify_client(device*)'
  [A] 'function ieee80211_hw* ieee80211_alloc_hw_nm(size_t, const ieee80211_ops*, const char*)'
  [A] 'function sk_buff* ieee80211_ap_probereq_get(ieee80211_hw*, ieee80211_vif*)'
  [A] 'function sk_buff* ieee80211_beacon_get_tim(ieee80211_hw*, ieee80211_vif*, u16*, u16*)'
  [A] 'function void ieee80211_chswitch_done(ieee80211_vif*, bool)'
  [A] 'function void ieee80211_connection_loss(ieee80211_vif*)'
  [A] 'function void ieee80211_cqm_beacon_loss_notify(ieee80211_vif*, gfp_t)'
  [A] 'function void ieee80211_cqm_rssi_notify(ieee80211_vif*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)'
  [A] 'function void ieee80211_csa_finish(ieee80211_vif*)'
  [A] 'function ieee80211_sta* ieee80211_find_sta(ieee80211_vif*, const u8*)'
  [A] 'function void ieee80211_free_hw(ieee80211_hw*)'
  [A] 'function void ieee80211_free_txskb(ieee80211_hw*, sk_buff*)'
  [A] 'function unsigned int ieee80211_get_hdrlen_from_skb(const sk_buff*)'
  [A] 'function unsigned int ieee80211_hdrlen(__le16)'
  [A] 'function void ieee80211_iterate_active_interfaces_atomic(ieee80211_hw*, u32, void ()*, void*)'
  [A] 'function void ieee80211_iterate_interfaces(ieee80211_hw*, u32, void ()*, void*)'
  [A] 'function sk_buff* ieee80211_nullfunc_get(ieee80211_hw*, ieee80211_vif*, bool)'
  [A] 'function sk_buff* ieee80211_probereq_get(ieee80211_hw*, const u8*, const u8*, size_t, size_t)'
  [A] 'function sk_buff* ieee80211_proberesp_get(ieee80211_hw*, ieee80211_vif*)'
  [A] 'function sk_buff* ieee80211_pspoll_get(ieee80211_hw*, ieee80211_vif*)'
  [A] 'function void ieee80211_queue_delayed_work(ieee80211_hw*, delayed_work*, unsigned long int)'
  [A] 'function void ieee80211_queue_work(ieee80211_hw*, work_struct*)'
  [A] 'function void ieee80211_radar_detected(ieee80211_hw*)'
  [A] 'function void ieee80211_ready_on_channel(ieee80211_hw*)'
  [A] 'function int ieee80211_register_hw(ieee80211_hw*)'
  [A] 'function void ieee80211_remain_on_channel_expired(ieee80211_hw*)'
  [A] 'function void ieee80211_report_low_ack(ieee80211_sta*, u32)'
  [A] 'function void ieee80211_restart_hw(ieee80211_hw*)'
  [A] 'function void ieee80211_rx_napi(ieee80211_hw*, ieee80211_sta*, sk_buff*, napi_struct*)'
  [A] 'function void ieee80211_scan_completed(ieee80211_hw*, cfg80211_scan_info*)'
  [A] 'function void ieee80211_sched_scan_results(ieee80211_hw*)'
  [A] 'function void ieee80211_sched_scan_stopped(ieee80211_hw*)'
  [A] 'function int ieee80211_sta_ps_transition(ieee80211_sta*, bool)'
  [A] 'function void ieee80211_stop_queue(ieee80211_hw*, int)'
  [A] 'function void ieee80211_stop_queues(ieee80211_hw*)'
  [A] 'function void ieee80211_stop_rx_ba_session(ieee80211_vif*, u16, const u8*)'
  [A] 'function void ieee80211_tx_status(ieee80211_hw*, sk_buff*)'
  [A] 'function void ieee80211_unregister_hw(ieee80211_hw*)'
  [A] 'function void ieee80211_wake_queue(ieee80211_hw*, int)'
  [A] 'function void ieee80211_wake_queues(ieee80211_hw*)'
  [A] 'function int init_srcu_struct(srcu_struct*)'
  [A] 'function void ion_buffer_prep_noncached(ion_buffer*)'
  [A] 'function void ion_device_remove_heap(ion_heap*)'
  [A] 'function void iov_iter_bvec(iov_iter*, unsigned int, const bio_vec*, unsigned long int, unsigned long int)'
  [A] 'function int kernel_accept(socket*, socket**, int)'
  [A] 'function int kernel_bind(socket*, sockaddr*, int)'
  [A] 'function int kernel_connect(socket*, sockaddr*, int, int)'
  [A] 'function int kernel_listen(socket*, int)'
  [A] 'function int kernel_sendmsg(socket*, msghdr*, kvec*, size_t, size_t)'
  [A] 'function void kill_fasync(fasync_struct**, int, int)'
  [A] 'function void kill_litter_super(super_block*)'
  [A] 'function void kiocb_set_cancel_fn(kiocb*, kiocb_cancel_fn*)'
  [A] 'function int kobject_set_name(kobject*, const char*, ...)'
  [A] 'function char* kstrndup(const char*, unsigned long int, unsigned int)'
  [A] 'function int kstrtou16(const char*, unsigned int, unsigned short int*)'
  [A] 'function ktime_t ktime_add_safe(const ktime_t, const ktime_t)'
  [A] 'function l2cap_conn* l2cap_conn_get(l2cap_conn*)'
  [A] 'function void l2cap_conn_put(l2cap_conn*)'
  [A] 'function bool l2cap_is_socket(socket*)'
  [A] 'function int l2cap_register_user(l2cap_conn*, l2cap_user*)'
  [A] 'function void l2cap_unregister_user(l2cap_conn*, l2cap_user*)'
  [A] 'function void list_sort(void*, list_head*, void ()*)'
  [A] 'function void* memchr_inv(void*, int, size_t)'
  [A] 'function mempool_s* mempool_create_node(int, void ()*, void ()*, void*, unsigned int, int)'
  [A] 'function void mempool_kfree(void*, void*)'
  [A] 'function void* mempool_kmalloc(gfp_t, void*)'
  [A] 'function void* memscan(void*, int, size_t)'
  [A] 'function void mfd_remove_devices(device*)'
  [A] 'function void mm_trace_rss_stat(mm_struct*, int, long int, long int)'
  [A] 'function int mmc_add_host(mmc_host*)'
  [A] 'function mmc_host* mmc_alloc_host(int, device*)'
  [A] 'function int mmc_app_cmd(mmc_host*, mmc_card*)'
  [A] 'function unsigned int mmc_calc_max_discard(mmc_card*)'
  [A] 'function int mmc_can_erase(mmc_card*)'
  [A] 'function bool mmc_can_gpio_cd(mmc_host*)'
  [A] 'function int mmc_can_sanitize(mmc_card*)'
  [A] 'function int mmc_can_secure_erase_trim(mmc_card*)'
  [A] 'function int mmc_can_trim(mmc_card*)'
  [A] 'function int mmc_cmdq_disable(mmc_card*)'
  [A] 'function int mmc_cmdq_enable(mmc_card*)'
  [A] 'function void mmc_cqe_post_req(mmc_host*, mmc_request*)'
  [A] 'function int mmc_cqe_recovery(mmc_host*)'
  [A] 'function int mmc_cqe_start_req(mmc_host*, mmc_request*)'
  [A] 'function int mmc_detect_card_removed(mmc_host*)'
  [A] 'function int mmc_erase(mmc_card*, unsigned int, unsigned int, unsigned int)'
  [A] 'function int mmc_erase_group_aligned(mmc_card*, unsigned int, unsigned int)'
  [A] 'function int mmc_flush_cache(mmc_card*)'
  [A] 'function void mmc_get_card(mmc_card*, mmc_ctx*)'
  [A] 'function int mmc_get_ext_csd(mmc_card*, unsigned char**)'
  [A] 'function int mmc_gpio_get_cd(mmc_host*)'
  [A] 'function int mmc_gpio_get_ro(mmc_host*)'
  [A] 'function int mmc_gpiod_request_cd(mmc_host*, const char*, unsigned int, bool, unsigned int, bool*)'
  [A] 'function void mmc_gpiod_request_cd_irq(mmc_host*)'
  [A] 'function int mmc_gpiod_request_ro(mmc_host*, const char*, unsigned int, unsigned int, bool*)'
  [A] 'function int mmc_hw_reset(mmc_host*)'
  [A] 'function int mmc_of_parse_voltage(device_node*, u32*)'
  [A] 'function void mmc_put_card(mmc_card*, mmc_ctx*)'
  [A] 'function int mmc_register_driver(mmc_driver*)'
  [A] 'function int mmc_regulator_get_supply(mmc_host*)'
  [A] 'function int mmc_regulator_set_ocr(mmc_host*, regulator*, unsigned short int)'
  [A] 'function void mmc_release_host(mmc_host*)'
  [A] 'function void mmc_request_done(mmc_host*, mmc_request*)'
  [A] 'function void mmc_retune_pause(mmc_host*)'
  [A] 'function void mmc_retune_release(mmc_host*)'
  [A] 'function void mmc_retune_unpause(mmc_host*)'
  [A] 'function void mmc_run_bkops(mmc_card*)'
  [A] 'function int mmc_send_status(mmc_card*, unsigned int*)'
  [A] 'function int mmc_start_request(mmc_host*, mmc_request*)'
  [A] 'function int mmc_switch(mmc_card*, unsigned char, unsigned char, unsigned char, unsigned int)'
  [A] 'function void mmc_unregister_driver(mmc_driver*)'
  [A] 'function int mmc_wait_for_cmd(mmc_host*, mmc_command*, int)'
  [A] 'function unsigned long int msleep_interruptible(unsigned int)'
  [A] 'function int netlink_broadcast(sock*, sk_buff*, unsigned int, unsigned int, unsigned int)'
  [A] 'function int netlink_has_listeners(sock*, unsigned int)'
  [A] 'function void netlink_kernel_release(sock*)'
  [A] 'function inode* new_inode(super_block*)'
  [A] 'function bool of_device_is_big_endian(const device_node*)'
  [A] 'function int of_property_read_u64(const device_node*, const char*, long long unsigned int*)'
  [A] 'function int of_thermal_get_ntrips(thermal_zone_device*)'
  [A] 'function const thermal_trip* of_thermal_get_trip_points(thermal_zone_device*)'
  [A] 'function int param_get_int(char*, const kernel_param*)'
  [A] 'function int param_set_int(const char*, const kernel_param*)'
  [A] 'function bool pci_device_is_present(pci_dev*)'
  [A] 'function int pci_enable_device_mem(pci_dev*)'
  [A] 'function void pci_free_irq(pci_dev*, unsigned int, void*)'
  [A] 'function int pci_load_saved_state(pci_dev*, pci_saved_state*)'
  [A] 'function int pci_request_irq(pci_dev*, unsigned int, irq_handler_t, irq_handler_t, void*, const char*, ...)'
  [A] 'function int pci_select_bars(pci_dev*, unsigned long int)'
  [A] 'function bool pcie_aspm_enabled(pci_dev*)'
  [A] 'function void percpu_ref_exit(percpu_ref*)'
  [A] 'function int percpu_ref_init(percpu_ref*, void ()*, unsigned int, unsigned int)'
  [A] 'function void percpu_ref_kill_and_confirm(percpu_ref*, void ()*)'
  [A] 'function int pinctrl_pm_select_idle_state(device*)'
  [A] 'function void pinctrl_put(pinctrl*)'
  [A] 'function bool policy_has_boost_freq(cpufreq_policy*)'
  [A] 'function proc_dir_entry* proc_create_single_data(const char*, unsigned short int, proc_dir_entry*, void ()*, void*)'
  [A] 'function void** radix_tree_next_chunk(const xarray*, radix_tree_iter*, unsigned int)'
  [A] 'function void rb_erase(rb_node*, rb_root*)'
  [A] 'function rb_node* rb_first(const rb_root*)'
  [A] 'function void rb_insert_color(rb_node*, rb_root*)'
  [A] 'function rb_node* rb_next(const rb_node*)'
  [A] 'function rb_node* rb_prev(const rb_node*)'
  [A] 'function void rb_replace_node(rb_node*, rb_node*, rb_root*)'
  [A] 'function void regcache_mark_dirty(regmap*)'
  [A] 'function int regcache_sync(regmap*)'
  [A] 'fution int register_chrdev_region(dev_t, unsigned int, const char*)'
  [A] 'function int regmap_add_irq_chip(regmap*, int, int, int, const regmap_irq_chip*, regmap_irq_chip_data**)'
  [A] 'function void regmap_del_irq_chip(int, regmap_irq_chip_data*)'
  [A] 'function int regmap_raw_read(regmap*, unsigned int, void*, size_t)'
  [A] 'function int regmap_raw_write(regmap*, unsigned int, void*, size_t)'
  [A] 'function int regmap_register_patch(regmap*, const reg_sequence*, int)'
  [A] 'function regulator* regulator_get_optional(device*, const char*)'
  [A] 'function int regulator_list_voltage_table(regulator_dev*, unsigned int)'
  [A] 'function int regulator_map_voltage_ascend(regulator_dev*, int, int)'
  [A] 'function int remap_vmalloc_range(vm_area_struct*, void*, unsigned long int)'
  [A] 'function rfkill_type rfkill_find_type(const char*)'
  [A] 'function int rtc_year_days(unsigned int, unsigned int, unsigned int)'
  [A] 'function int sdio_claim_irq(sdio_func*, sdio_irq_handler_t*)'
  [A] 'function int sdio_disable_func(sdio_func*)'
  [A] 'function unsigned char sdio_f0_readb(sdio_func*, unsigned int, int*)'
  [A] 'function void sdio_f0_writeb(sdio_func*, unsigned char, unsigned int, int*)'
  [A] 'function mmc_pm_flag_t sdio_get_host_pm_caps(sdio_func*)'
  [A] 'function int sdio_release_irq(sdio_func*)'
  [A] 'function int sdio_set_host_pm_flags(sdio_func*, mmc_pm_flag_t)'
  [A] 'function void sdio_signal_irq(mmc_host*)'
  [A] 'function void security_sk_clone(const sock*, sock*)'
  [A] 'function int serdev_device_get_tiocm(serdev_device*)'
  [A] 'function void serial8250_clear_and_reinit_fifos(uart_8250_port*)'
  [A] 'function void serial8250_do_pm(uart_port*, unsigned int, unsigned int)'
  [A] 'function void serial8250_do_set_ldisc(uart_port*, ktermios*)'
  [A] 'function void serial8250_do_set_termios(uart_port*, ktermios*, ktermios*)'
  [A] 'function int serial8250_handle_irq(uart_port*, unsigned int)'
  [A] 'function int serial8250_register_8250_port(uart_8250_port*)'
  [A] 'function void serial8250_resume_port(int)'
  [A] 'function void serial8250_suspend_port(int)'
  [A] 'function void serial8250_unregister_port(int)'
  [A] 'function irqreturn serio_interrupt(serio*, unsigned char, unsigned int)'
  [A] 'function void serio_reconnect(serio*)'
  [A] 'function void serio_unregister_port(serio*)'
  [A] 'function int set_page_dirty_lock(page*)'
  [A] 'function int sg_alloc_table(sg_table*, unsigned int, unsigned int)'
  [A] 'function size_t sg_zero_buffer(scatterlist*, unsigned int, size_t, off_t)'
  [A] 'function scatterlist* sgl_alloc(long long unsigned int, unsigned int, unsigned int*)'
  [A] 'function void sgl_free(scatterlist*)'
  [A] 'function int simple_statfs(dentry*, kstatfs*)'
  [A] 'function void skb_queue_head(sk_buff_head*, sk_buff*)'
  [A] 'function int snd_dmaengine_pcm_prepare_slave_config(snd_pcm_substream*, snd_pcm_hw_params*, dma_slave_config*)'
  [A] 'function int snd_soc_dai_set_sysclk(snd_soc_dai*, int, unsigned int, int)'
  [A] 'function int snd_soc_dai_set_tdm_slot(snd_soc_dai*, unsigned int, unsigned int, int, int)'
  [A] 'function int snd_soc_dapm_get_pin_switch(snd_kcontrol*, snd_ctl_elem_value*)'
  [A] 'function int snd_soc_dapm_info_pin_switch(snd_kcontrol*, snd_ctl_elem_info*)'
  [A] 'function int snd_soc_dapm_put_pin_switch(snd_kcontrol*, snd_ctl_elem_value*)'
  [A] 'function int snd_soc_jack_add_gpios(snd_soc_jack*, int, snd_soc_jack_gpio*)'
  [A] 'function void snd_soc_of_parse_node_prefix(device_node*, snd_soc_codec_conf*, device_node*, const char*)'
  [A] 'function int sock_create_kern(net*, int, int, int, socket**)'
  [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 void sock_release(socket*)'
  [A] 'function socket* sockfd_lookup(int, int*)'
  [A] 'function int spi_bus_lock(spi_controller*)'
  [A] 'functionnt spi_bus_unlock(spi_controller*)'
  [A] 'function int spi_controller_resume(spi_controller*)'
  [A] 'function void spi_finalize_current_message(spi_controller*)'
  [A] 'function spi_message* spi_get_next_queued_message(spi_controller*)'
  [A] 'function int spi_setup(spi_device*)'
  [A] 'function int spi_sync_locked(spi_device*, spi_message*)'
  [A] 'function unsigned long int strcspn(const char*, const char*)'
  [A] 'function int stream_open(inode*, file*)'
  [A] 'function char* strpbrk(const char*, const char*)'
  [A] 'function long int strscpy(char*, const char*, unsigned long int)'
  [A] 'function void synchronize_srcu(srcu_struct*)'
  [A] 'function void sysfs_remove_file_from_group(kobject*, const attribute*, const char*)'
  [A] 'function void thermal_zone_device_update(thermal_zone_device*, thermal_notify_event)'
  [A] 'function int thermal_zone_get_temp(thermal_zone_device*, int*)'
  [A] 'function thermal_zone_device* thermal_zone_get_zone_by_name(const char*)'
  [A] 'function void trace_seq_putc(trace_seq*, unsigned char)'
  [A] 'function int tty_port_install(tty_port*, tty_driver*, tty_struct*)'
  [A] 'function void tty_wakeup(tty_struct*)'
  [A] 'function void typec_altmode_attention(typec_altmode*, u32)'
  [A] 'function int typec_altmode_notify(typec_altmode*, unsigned long int, void*)'
  [A] 'function void typec_altmode_update_active(typec_altmode*, bool)'
  [A] 'function int typec_altmode_vdm(typec_altmode*, const u32, const u32*, int)'
  [A] 'function int typec_find_port_data_role(const char*)'
  [A] 'function int typec_find_port_power_role(const char*)'
  [A] 'function int typec_find_power_role(const char*)'
  [A] 'function typec_altmode* typec_match_altmode(typec_altmode**, size_t, u16, u8)'
  [A] 'function typec_altmode* typec_partner_register_altmode(typec_partner*, const typec_altmode_desc*)'
  [A] 'function int typec_partner_set_identity(typec_partner*)'
  [A] 'function typec_altmode* typec_port_register_altmode(typec_port*, const typec_altmode_desc*)'
  [A] 'function typec_partner* typec_register_partner(typec_port*, typec_partner_desc*)'
  [A] 'function typec_port* typec_register_port(device*, const typec_capability*)'
  [A] 'function void typec_set_data_role(typec_port*, typec_data_role)'
  [A] 'function int typec_set_mode(typec_port*, int)'
  [A] 'function int typec_set_orientation(typec_port*, typec_orientation)'
  [A] 'function void typec_set_pwr_opmode(typec_port*, typec_pwr_opmode)'
  [A] 'function void typec_set_pwr_role(typec_port*, typec_role)'
  [A] 'function void typec_set_vconn_role(typec_port*, typec_role)'
  [A] 'function void typec_unregister_altmode(typec_altmode*)'
  [A] 'function void typec_unregister_partner(typec_partner*)'
  [A] 'function void typec_unregister_port(typec_port*)'
  [A] 'function void unuse_mm(mm_struct*)'
  [A] 'function usb_request* usb_ep_alloc_request(usb_ep*, unsigned int)'
  [A] 'function int usb_ep_clear_halt(usb_ep*)'
  [A] 'function int usb_ep_dequeue(usb_ep*, usb_request*)'
  [A] 'function int usb_ep_enable(usb_ep*)'
  [A] 'function void usb_ep_fifo_flush(usb_ep*)'
  [A] 'function int usb_ep_fifo_status(usb_ep*)'
  [A] 'function void usb_ep_free_request(usb_ep*, usb_request*)'
  [A] 'function int usb_ep_queue(usb_ep*, usb_request*, unsigned int)'
  [A] 'function int usb_gadget_probe_driver(usb_gadget_driver*)'
  [A] 'function int usb_gadget_unregister_driver(usb_gadget_driver*)'
  [A] 'function int usb_gadget_vbus_draw(usb_gadget*, unsigned int)'
  [A] 'function char* usb_get_gadget_udc_name()'
  [A] 'function void use_mm(mm_struct*)'
  [A] 'function void uuid_gen(__anonymous_struct__26*)'
  [A] 'function int uuid_parse(const char*, uuid_t*)'
  [A] 'function int vfs_fallocate(file*, int, long long int, long long int)'
  [A] 'function int vfs_fsync(file*, int)'
  [A] 'function unsigned long int vm_mmap(file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int, unsigned long int)'
  [A] 'function void* vmalloc_user(unsigned long int)'
  [A] 'function int vscnprintf(char*, unsigned long int, const char*, __va_list)'
  [A] 'function signed long int wait_for_completion_io_timeout(completion*, unsigned long int)'
  [A] 'function ieee80211_hw* wiphy_to_ieee80211_hw(wiphy*)'

Bug: 146450171
Change-Id: I189626865424855bf91f754f6689e1e1da1ef52f
Signed-off-by: John Stultz <john.stultz@linaro.org>
2020-03-23 23:39:45 +00:00
arch ANDROID: config: Add hikey960_gki fragment 2020-03-23 22:55:17 +00:00
block This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
certs PKCS#7: Refactor verify_pkcs7_signature() 2019-08-05 18:40:18 -04:00
crypto This is the 5.4.23 stable release 2020-03-01 10:17:44 +01:00
Documentation ANDROID: dt-bindings: misc: Add bindings for HiSilicon usb hub and data role switch functionality on HiKey960 2020-03-23 22:55:17 +00:00
drivers ANDROID: misc: hisi_hikey_usb: Driver to support usb functionality of Hikey960 2020-03-23 22:55:17 +00:00
fs This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
include ANDROID: GKI: USB: add Android ABI padding to some structures 2020-03-20 09:27:54 +01:00
init ANDROID: GKI: Enable CONFIG_USB_PHY for usb drivers like dwc3 2020-03-20 06:48:55 -07:00
ipc This is the 5.4.23 stable release 2020-03-01 10:17:44 +01:00
kernel UPSTREAM: bpf: Explicitly memset some bpf info structures declared on the stack 2020-03-23 16:26:40 +01:00
lib FROMLIST: lib: test_stackinit.c: XFAIL switch variable init tests 2020-03-06 18:56:31 +00:00
LICENSES LICENSES: Rename other to deprecated 2019-05-03 06:34:32 -06:00
mm This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
net This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
samples FROMGIT: samples/hw_breakpoint: drop use of kallsyms_lookup_name() 2020-03-12 11:15:54 +00:00
scripts ANDROID: kbuild: align UNUSED_KSYMS_WHITELIST with upstream 2020-03-10 13:10:27 +00:00
security This is the 5.4.25 stable release 2020-03-12 17:09:04 +01:00
sound This is the 5.4.26 stable release 2020-03-18 08:19:15 +01:00
tools This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
usr kbuild: fix 'No such file or directory' warning when cleaning 2020-03-12 13:00:09 +01:00
virt KVM: Check for a bad hva before dropping into the ghc slow path 2020-03-05 16:43:48 +01:00
.clang-format clang-format: Update with the latest for_each macro list 2019-08-31 10:00:51 +02:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: set git diff driver for C source code files 2016-10-07 18:46:30 -07:00
.gitignore Revert "ANDROID: Revert "Merge tag 'modules-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux"" 2019-11-13 10:14:45 +00:00
.mailmap ARM: SoC fixes 2019-11-10 13:41:59 -08:00
abi_gki_aarch64_cuttlefish_whitelist ANDROID: update abi_gki_aarch64_cuttlefish_whitelist 2020-03-12 14:34:21 +00:00
abi_gki_aarch64_db845c_whitelist ANDROID: update abi_gki_aarch64_db845c_whitelist 2020-03-12 14:34:21 +00:00
abi_gki_aarch64_hikey960_whitelist ANDROID: ABI/Whitelist: update for hikey960 2020-03-23 23:39:45 +00:00
abi_gki_aarch64_unisoc_whitelist ANDROID: Update abi_gki_aarch64_unisoc_whitelist 2020-03-20 10:26:50 +00:00
abi_gki_aarch64_whitelist ANDROID: abi_gki_aarch64_whitelist: add module_layout and task_struct 2020-03-04 23:09:20 +00:00
abi_gki_aarch64.xml ANDROID: ABI/Whitelist: update for hikey960 2020-03-23 23:39:45 +00:00
build.config.aarch64 ANDROID: support GKI image that contains an uncompressed Kernel Image. 2020-02-06 11:14:03 +00:00
build.config.allmodconfig ANDROID: Don't base allmodconfig on gki_defconfig 2019-12-05 13:18:31 +00:00
build.config.allmodconfig.aarch64 ANDROID: create build.configs for allmodconfig 2019-09-04 15:49:40 +00:00
build.config.allmodconfig.arm ANDROID: Add build.config files for ARM 32-bit 2020-03-15 22:51:11 +00:00
build.config.allmodconfig.x86_64 ANDROID: create build.configs for allmodconfig 2019-09-04 15:49:40 +00:00
build.config.arm ANDROID: Add build.config files for ARM 32-bit 2020-03-15 22:51:11 +00:00
build.config.common ANDROID: clang: update to 10.0.4 2020-02-19 19:33:24 +00:00
build.config.cuttlefish.aarch64 ANDROID: cf build: Use merge_configs 2020-02-18 21:18:26 +00:00
build.config.cuttlefish.x86_64 ANDROID: cf build: Use merge_configs 2020-02-18 21:18:26 +00:00
build.config.db845c ANDROID: db845c: Add build config 2020-01-15 21:13:30 +00:00
build.config.gki ANDROID: gki: Removed cf modules from gki_defconfig 2020-01-31 16:34:58 -08:00
build.config.gki-debug.aarch64 ANDROID: Add build.config.gki-debug.aarch64 2020-03-16 09:20:25 +00:00
build.config.gki-debug.x86_64 ANDROID: Add build.config.gki-debug.x86_64 2020-03-16 14:27:00 +00:00
build.config.gki.aarch64 ANDROID: ABI/Whitelist: update for hikey960 2020-03-23 23:39:45 +00:00
build.config.gki.x86_64 ANDROID: refactor build.config files to remove duplication 2019-08-30 14:55:29 +01:00
build.config.hikey960 ANDROID: hikey960: Add external mali driver support to build.config.hikey960 2020-03-23 22:55:17 +00:00
build.config.x86_64 ANDROID: refactor build.config files to remove duplication 2019-08-30 14:55:29 +01:00
COPYING COPYING: use the new text with points to the license files 2018-03-23 12:41:45 -06:00
CREDITS MAINTAINERS: Remove Simon as Renesas SoC Co-Maintainer 2019-10-10 08:12:51 -07:00
cuttlefish.fragment ANDROID: Add TPM support and the vTPM proxy to Cuttlefish. 2020-03-13 15:01:14 +00:00
Kbuild kbuild: do not descend to ./Kbuild when cleaning 2019-08-21 21:03:58 +09:00
Kconfig docs: kbuild: convert docs to ReST and rename to *.rst 2019-06-14 14:21:21 -06:00
MAINTAINERS This is the 5.4.23 stable release 2020-03-01 10:17:44 +01:00
Makefile This is the 5.4.27 stable release 2020-03-21 10:07:42 +01:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
README.md ANDROID: Fix typo for FROMLIST: section 2019-10-29 20:31:07 +00:00

How do I submit patches to Android Common Kernels

  1. 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.

  2. 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 script/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:, or ANDROID:.
  • 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 ...) line
    • Example:
      • if the upstream commit message is
        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 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 of UPSTREAM:.
    • use the same tags as UPSTREAM:
    • add comments about the changes under the (cherry-picked from ...) line
    • Example:
        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 c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
        [ 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 use linux-next for example).
    • if changes were required, use BACKPORT: FROMGIT:
    • Example:
      • if the commit message in the maintainer tree is
        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
    • if changes were required, use BACKPORT: FROMLIST:
    • Example:
        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:
        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)