diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 62b24f895063..6e0a2a151575 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.61_662e2b3ab8fb +LTS_5.4.61_158eae717346 diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 541fa1afd553..1f89d3ac2614 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -88,6 +88,7 @@ + @@ -97,6 +98,8 @@ + + @@ -371,6 +374,7 @@ + @@ -496,6 +500,11 @@ + + + + + @@ -642,6 +651,7 @@ + @@ -677,6 +687,7 @@ + @@ -700,6 +711,7 @@ + @@ -1641,6 +1653,7 @@ + @@ -1682,6 +1695,9 @@ + + + @@ -1743,6 +1759,14 @@ + + + + + + + + @@ -1873,6 +1897,7 @@ + @@ -2095,6 +2120,7 @@ + @@ -2284,6 +2310,7 @@ + @@ -2659,6 +2686,7 @@ + @@ -3819,6 +3847,7 @@ + @@ -4365,6 +4394,7 @@ + @@ -4456,6 +4486,7 @@ + @@ -4503,6 +4534,7 @@ + @@ -4558,6 +4590,7 @@ + @@ -4737,6 +4770,7 @@ + @@ -14719,6 +14753,16 @@ + + + + + + + + + + @@ -14966,7 +15010,7 @@ - + @@ -15486,20 +15530,6 @@ - - - - - - - - - - - - - - @@ -17752,6 +17782,7 @@ + @@ -22669,6 +22700,7 @@ + @@ -22992,102 +23024,102 @@ - - + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -23885,14 +23917,6 @@ - - - - - - - - @@ -23925,6 +23949,14 @@ + + + + + + + + @@ -25721,7 +25753,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -25735,6 +25804,9 @@ + + + @@ -26895,6 +26967,728 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -26903,6 +27697,11 @@ + + + + + @@ -26919,11 +27718,16 @@ + + + + + @@ -26936,6 +27740,21 @@ + + + + + + + + + + + + + + + @@ -26997,10 +27816,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -27050,6 +27893,20 @@ + + + + + + + + + + + + + + @@ -27113,6 +27970,18 @@ + + + + + + + + + + + + @@ -27306,6 +28175,7 @@ + @@ -27345,7 +28215,7 @@ - + @@ -27402,7 +28272,6 @@ - @@ -28515,7 +29384,6 @@ - @@ -28543,6 +29411,9 @@ + + + @@ -33111,7 +33982,7 @@ - + @@ -34495,7 +35366,7 @@ - + @@ -34756,7 +35627,7 @@ - + @@ -35767,7 +36638,7 @@ - + @@ -37800,6 +38671,14 @@ + + + + + + + + @@ -39273,13 +40152,13 @@ - + - + @@ -39362,7 +40241,7 @@ - + @@ -39760,7 +40639,7 @@ - + @@ -46169,6 +47048,11 @@ + + + + + @@ -52112,9 +52996,6 @@ - - - @@ -54289,7 +55170,6 @@ - @@ -54377,6 +55257,8 @@ + + @@ -54559,7 +55441,6 @@ - @@ -54783,6 +55664,17 @@ + + + + + + + + + + + @@ -55891,7 +56783,7 @@ - + @@ -55915,7 +56807,7 @@ - + @@ -56061,6 +56953,14 @@ + + + + + + + + @@ -61907,8 +62807,8 @@ - - + + @@ -72214,30 +73114,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -82114,17 +82990,6 @@ - - - - - - - - - - - @@ -82418,6 +83283,17 @@ + + + + + + + + + + + @@ -89454,14 +90330,6 @@ - - - - - - - - @@ -89517,6 +90385,14 @@ + + + + + + + + @@ -89553,6 +90429,14 @@ + + + + + + + + @@ -89591,14 +90475,6 @@ - - - - - - - - @@ -91583,7 +92459,7 @@ - + @@ -93878,14 +94754,6 @@ - - - - - - - - @@ -94339,6 +95207,7 @@ + @@ -94397,7 +95266,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -100786,13 +101707,13 @@ - + - + - + @@ -100834,7 +101755,7 @@ - + @@ -104997,7 +105918,7 @@ - + @@ -105013,7 +105934,7 @@ - + @@ -105021,7 +105942,7 @@ - + @@ -105035,7 +105956,7 @@ - + @@ -105115,8 +106036,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -106543,6 +107503,12 @@ + + + + + + @@ -107156,6 +108122,13 @@ + + + + + + + @@ -108933,7 +109906,6 @@ - @@ -108959,6 +109931,14 @@ + + + + + + + + @@ -108970,6 +109950,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108982,9 +109987,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -109137,7 +110373,18 @@ + + + + + + + + + + + @@ -109326,6 +110573,13 @@ + + + + + + + @@ -109333,6 +110587,10 @@ + + + + @@ -112091,249 +113349,24 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + - - - - - - - + - - - - - - - - @@ -113558,28 +114591,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -115309,92 +116320,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -115473,17 +116398,149 @@ - - - + + + - - + + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115495,7 +116552,7 @@ - + @@ -115543,6 +116600,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115558,6 +116773,11 @@ + + + + + @@ -115565,23 +116785,42 @@ - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + @@ -118320,268 +119559,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -118665,17 +119643,6 @@ - - - - - - - - - - - @@ -123302,7 +124269,7 @@ - + @@ -123312,41 +124279,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -123822,7 +124754,7 @@ - + @@ -123854,7 +124786,7 @@ - + @@ -123862,7 +124794,7 @@ - + @@ -123890,7 +124822,7 @@ - + @@ -124659,7 +125591,7 @@ - + @@ -124680,7 +125612,7 @@ - + @@ -126871,6 +127803,8 @@ + + @@ -130980,6 +131914,6 @@ diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml index 46b89758ac90..18ade3876c2a 100644 --- a/android/abi_gki_aarch64_d6430e6763.xml +++ b/android/abi_gki_aarch64_d6430e6763.xml @@ -1145,6 +1145,7 @@ + @@ -4927,6 +4928,7 @@ + @@ -6306,7 +6308,7 @@ - + @@ -6318,7 +6320,7 @@ - + @@ -6514,7 +6516,7 @@ - + @@ -6731,8 +6733,8 @@ - - + + @@ -7114,7 +7116,6 @@ - @@ -7690,6 +7691,20 @@ + + + + + + + + + + + + + + @@ -7703,48 +7718,48 @@ - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -8376,20 +8391,6 @@ - - - - - - - - - - - - - - @@ -19177,28 +19178,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -21037,6 +21016,10 @@ + + + + @@ -31007,7 +30990,7 @@ - + @@ -32179,14 +32162,6 @@ - - - - - - - - @@ -33424,6 +33399,14 @@ + + + + + + + + @@ -33447,7 +33430,7 @@ - + @@ -33515,7 +33498,7 @@ - + @@ -40869,7 +40852,31 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40880,30 +40887,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -41096,22 +41079,6 @@ - - - - - - - - - - - - - - - - @@ -54685,6 +54652,14 @@ + + + + + + + + @@ -54700,14 +54675,6 @@ - - - - - - - - @@ -61695,7 +61662,7 @@ - + @@ -61877,7 +61844,7 @@ - + @@ -61910,13 +61877,13 @@ - + - + - + @@ -61958,7 +61925,7 @@ - + @@ -67484,7 +67451,7 @@ - + @@ -70036,7 +70003,7 @@ - + @@ -70101,7 +70068,7 @@ - + @@ -70187,7 +70154,7 @@ - + @@ -70209,7 +70176,7 @@ - + @@ -98585,6 +98552,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index cbe1f884a220..e460d3ff7965 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -161,6 +161,7 @@ __tracepoint_android_vh_is_fpsimd_save __tracepoint_android_vh_kfree_skb __tracepoint_android_vh_ptype_head + __tracepoint_android_vh_wq_lockup_pool __tracepoint_device_pm_callback_end __tracepoint_device_pm_callback_start __tracepoint_gpu_mem_total @@ -2007,6 +2008,7 @@ rtnl_unlock rt_mutex_lock rt_mutex_unlock + runqueues save_stack_trace save_stack_trace_tsk sched_clock @@ -2400,6 +2402,7 @@ trace_raw_output_prep trace_seq_printf tracepoint_probe_register + tracepoint_probe_unregister tracing_off truncate_inode_pages try_module_get diff --git a/android/abi_gki_aarch64_goldfish b/android/abi_gki_aarch64_goldfish index 93efcaf60f8a..3901c3ff26ee 100644 --- a/android/abi_gki_aarch64_goldfish +++ b/android/abi_gki_aarch64_goldfish @@ -15,6 +15,9 @@ blk_queue_write_cache bpf_trace_run2 bpf_trace_run3 + bt_err + bt_info + build_skb cancel_delayed_work_sync cancel_work_sync __cfi_slowpath @@ -37,6 +40,7 @@ _dev_err device_add_disk device_create + device_init_wakeup device_unregister _dev_info __dev_kfree_skb_any @@ -70,8 +74,23 @@ __get_free_pages get_random_bytes get_unused_fd_flags + __hci_cmd_sync + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns ida_alloc_range ida_free + ieee80211_alloc_hw_nm + ieee80211_beacon_get_tim + ieee80211_csa_finish + ieee80211_csa_is_complete + ieee80211_free_hw + ieee80211_free_txskb + ieee80211_get_tx_rates + ieee80211_iterate_active_interfaces_atomic + ieee80211_register_hw + ieee80211_start_tx_ba_cb_irqsafe + ieee80211_stop_tx_ba_cb_irqsafe init_timer_key init_wait_entry __init_waitqueue_head @@ -84,6 +103,7 @@ jiffies jiffies_to_msecs kfree + kfree_skb kimage_voffset __kmalloc kmalloc_caches @@ -100,6 +120,7 @@ kobject_put kobject_uevent kstrdup + ktime_get ktime_get_mono_fast_ns ktime_get_raw_ts64 ktime_get_real_seconds @@ -123,11 +144,18 @@ mutex_lock_interruptible mutex_trylock mutex_unlock + napi_complete_done + napi_disable + __napi_schedule + napi_schedule_prep netdev_err netdev_info netif_carrier_off netif_carrier_on netif_device_detach + netif_napi_add + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues netif_tx_stop_all_queues netif_tx_wake_queue nf_conntrack_destroy @@ -153,7 +181,6 @@ platform_driver_unregister platform_get_irq platform_get_resource - pm_runtime_allow __pm_runtime_suspend __pm_runtime_use_autosuspend preempt_schedule @@ -184,7 +211,10 @@ register_netdev register_virtio_device register_virtio_driver + __regmap_init + release_firmware remap_pfn_range + request_firmware __request_module request_threaded_irq revalidate_disk @@ -198,7 +228,9 @@ sg_init_one sg_init_table skb_add_rx_frag + skb_page_frag_refill skb_put + skb_to_sgvec snd_card_register snd_ctl_enum_info snd_ctl_sync_vmaster @@ -207,6 +239,7 @@ snd_pcm_add_chmap_ctls snd_pcm_period_elapsed snprintf + softnet_data sort sprintf __stack_chk_fail @@ -248,6 +281,7 @@ virtqueue_detach_unused_buf virtqueue_disable_cb virtqueue_enable_cb + virtqueue_enable_cb_prepare virtqueue_get_avail_addr virtqueue_get_buf virtqueue_get_desc_addr @@ -257,6 +291,7 @@ virtqueue_kick virtqueue_kick_prepare virtqueue_notify + virtqueue_poll vmemmap vring_create_virtqueue vring_del_virtqueue @@ -266,6 +301,63 @@ __wake_up __warn_printk +# required by btintel.ko + bt_to_errno + hci_cmd_sync + request_firmware_direct + +# required by btrtl.ko + bt_warn + +# required by btusb.ko + bit_wait_timeout + btbcm_set_bdaddr + btbcm_setup_apple + btbcm_setup_patchram + device_wakeup_disable + disable_irq + disable_irq_nosync + enable_irq + gpiod_get_optional + gpiod_put + gpiod_set_value_cansleep + hci_alloc_dev + __hci_cmd_sync_ev + hci_free_dev + hci_recv_diag + hci_recv_frame + hci_register_dev + hci_unregister_dev + irq_modify_status + irq_set_irq_wake + of_irq_get_byname + of_match_device + of_property_read_variable_u16_array + out_of_line_wait_on_bit_timeout + pm_system_wakeup + pm_wakeup_dev_event + usb_alloc_urb + usb_anchor_urb + usb_autopm_get_interface + usb_autopm_put_interface + usb_bulk_msg + usb_control_msg + usb_deregister + usb_driver_claim_interface + usb_driver_release_interface + usb_enable_autosuspend + usb_free_urb + usb_get_from_anchor + usb_ifnum_to_if + usb_kill_anchored_urbs + usb_match_id + usb_register_driver + usb_scuttle_anchored_urbs + usb_set_interface + usb_submit_urb + usb_unanchor_urb + wake_up_bit + # required by dummy-cpufreq.ko cpufreq_generic_attr cpufreq_register_driver @@ -283,7 +375,6 @@ # required by goldfish_address_space.ko __ioremap kimage_vaddr - kzfree memremap memunmap @@ -341,7 +432,6 @@ kernel_read kernel_write kern_path - ktime_get lockref_get lock_rename lookup_one_len @@ -398,31 +488,16 @@ genl_notify genl_register_family genl_unregister_family - hrtimer_cancel hrtimer_forward - hrtimer_init - hrtimer_start_range_ns - ieee80211_alloc_hw_nm - ieee80211_beacon_get_tim - ieee80211_csa_finish - ieee80211_csa_is_complete - ieee80211_free_hw - ieee80211_free_txskb - ieee80211_get_tx_rates - ieee80211_iterate_active_interfaces_atomic ieee80211_probereq_get ieee80211_queue_delayed_work ieee80211_ready_on_channel - ieee80211_register_hw ieee80211_remain_on_channel_expired ieee80211_rx_irqsafe ieee80211_scan_completed - ieee80211_start_tx_ba_cb_irqsafe - ieee80211_stop_tx_ba_cb_irqsafe ieee80211_tx_status_irqsafe ieee80211_unregister_hw init_net - kfree_skb kstrndup __netdev_alloc_skb netif_rx @@ -580,7 +655,6 @@ # required by rtc-test.ko add_timer del_timer - device_init_wakeup devm_rtc_allocate_device platform_device_add platform_device_alloc @@ -606,6 +680,7 @@ get_device_system_crosststamp kvasprintf ns_to_timespec + pm_runtime_allow __pm_runtime_disable pm_runtime_enable pm_runtime_forbid @@ -664,7 +739,6 @@ regcache_cache_only regcache_sync regmap_exit - __regmap_init regmap_read regmap_update_bits_base regmap_write @@ -708,6 +782,7 @@ vmalloc # required by virtio-gpu.ko + dma_buf_get_uuid dma_direct_map_sg dma_direct_sync_sg_for_device dma_direct_unmap_sg @@ -769,6 +844,7 @@ drm_gem_object_lookup drm_gem_object_put_unlocked drm_gem_object_release + drm_gem_prime_export drm_gem_prime_fd_to_handle drm_gem_prime_handle_to_fd drm_gem_prime_mmap @@ -809,6 +885,7 @@ ttm_bo_init_mm ttm_bo_kmap ttm_bo_kunmap + ttm_bo_manager_func ttm_bo_mmap ttm_bo_move_to_lru_tail ttm_bo_put @@ -819,6 +896,7 @@ ttm_eu_backoff_reservation ttm_eu_fence_buffer_objects ttm_eu_reserve_buffers + ttm_tt_init ww_mutex_lock_interruptible ww_mutex_unlock @@ -907,7 +985,6 @@ bpf_prog_sub bpf_stats_enabled_key bpf_warn_invalid_xdp_action - build_skb __cpuhp_remove_state __cpuhp_setup_state __cpuhp_state_add_instance @@ -922,21 +999,14 @@ find_next_bit flow_keys_basic_dissector __napi_alloc_skb - napi_complete_done napi_consume_skb - napi_disable napi_gro_receive napi_hash_del - __napi_schedule - napi_schedule_prep netdev_notify_peers netdev_warn netif_device_attach - netif_napi_add netif_napi_del netif_schedule_queue - netif_set_real_num_rx_queues - netif_set_real_num_tx_queues __netif_set_xps_queue net_ratelimit __num_online_cpus @@ -944,18 +1014,13 @@ sched_clock skb_coalesce_rx_frag __skb_flow_dissect - skb_page_frag_refill skb_partial_csum_set - skb_to_sgvec skb_tstamp_tx - softnet_data synchronize_net __tracepoint_xdp_exception virtqueue_add_inbuf_ctx virtqueue_enable_cb_delayed - virtqueue_enable_cb_prepare virtqueue_get_buf_ctx - virtqueue_poll xdp_convert_zc_to_xdp_frame xdp_do_flush_map xdp_do_redirect @@ -985,3 +1050,10 @@ nvdimm_bus_register nvdimm_bus_unregister nvdimm_pmem_region_create + +# required by virtio_wifi.ko + ieee80211_rx_napi + ieee80211_stop_queues + ieee80211_tx_status_ext + ieee80211_wake_queues + init_dummy_netdev diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 00e48da5d33a..ea50216f2809 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1042,6 +1042,7 @@ __hwspin_unlock hypervisor_kobj i2c_add_adapter + i2c_add_numbered_adapter i2c_del_adapter i2c_del_driver i2c_get_dma_safe_msg_buf diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 0f3c2df59e3b..e71275e592dd 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -58,12 +58,14 @@ clk_set_parent clk_set_rate clk_unprepare + clocks_calc_mult_shift clockevents_config_and_register __clocksource_register_scale compat_alloc_user_space complete complete_all config_ep_by_speed + config_group_init_type_name console_lock console_unlock __const_udelay @@ -71,6 +73,8 @@ cpu_hwcap_keys cpu_hwcaps cpumask_next + cpufreq_add_update_util_hook + cpufreq_remove_update_util_hook cpu_number __cpu_online_mask __cpu_possible_mask @@ -186,6 +190,7 @@ dst_release dump_stack __dynamic_dev_dbg + __dynamic_netdev_dbg __dynamic_pr_debug enable_irq ether_setup @@ -220,7 +225,12 @@ gen_pool_free_owner get_cpu_device __get_free_pages + get_governor_parent_kobj get_random_bytes + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops gpiochip_get_data gpiochip_line_is_irq gpiod_direction_input @@ -237,6 +247,7 @@ handle_bad_irq handle_edge_irq handle_level_irq + have_governor_per_policy i2c_del_driver i2c_register_driver i2c_smbus_read_byte_data @@ -309,6 +320,7 @@ irq_of_parse_and_map irq_set_irq_type irq_set_irq_wake + irq_work_sync is_console_locked jiffies jiffies_to_msecs @@ -1417,6 +1429,7 @@ mbox_controller_unregister mbox_free_channel mbox_request_channel + mbox_request_channel_byname mbox_send_message register_syscore_ops @@ -2524,3 +2537,15 @@ snd_pcm_rate_bit_to_rate snd_soc_bytes_info_ext snd_soc_new_compress + +# cpufreq_interactive.ko + add_timer_on + cpufreq_register_notifier + cpufreq_table_index_unsorted + cpufreq_unregister_notifier + down_read_trylock + get_cpu_idle_time + irq_work_queue + kobject_init_and_add + sched_setscheduler_nocheck + strpbrk diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index c586ab60bd32..61aacd0ed79f 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -98,8 +98,6 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; #define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID)) #define pte_valid_not_user(pte) \ ((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID) -#define pte_valid_young(pte) \ - ((pte_val(pte) & (PTE_VALID | PTE_AF)) == (PTE_VALID | PTE_AF)) #define pte_valid_user(pte) \ ((pte_val(pte) & (PTE_VALID | PTE_USER)) == (PTE_VALID | PTE_USER)) @@ -107,9 +105,12 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; * Could the pte be present in the TLB? We must check mm_tlb_flush_pending * so that we don't erroneously return false for pages that have been * remapped as PROT_NONE but are yet to be flushed from the TLB. + * Note that we can't make any assumptions based on the state of the access + * flag, since ptep_clear_flush_young() elides a DSB when invalidating the + * TLB. */ #define pte_accessible(mm, pte) \ - (mm_tlb_flush_pending(mm) ? pte_present(pte) : pte_valid_young(pte)) + (mm_tlb_flush_pending(mm) ? pte_present(pte) : pte_valid(pte)) /* * p??_access_permitted() is true for valid user mappings (subject to the diff --git a/drivers/base/core.c b/drivers/base/core.c index 0d9fe94b7089..f8bcbc9734ad 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1053,10 +1053,8 @@ static ssize_t waiting_for_supplier_show(struct device *dev, bool val; device_lock(dev); - mutex_lock(&wfs_lock); val = !list_empty(&dev->links.needs_suppliers) && dev->links.need_for_probe; - mutex_unlock(&wfs_lock); device_unlock(dev); return sprintf(buf, "%u\n", val); } diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c index a2e27c4cfe42..0326f9fb4453 100644 --- a/drivers/usb/gadget/function/f_accessory.c +++ b/drivers/usb/gadget/function/f_accessory.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -73,6 +74,7 @@ struct acc_dev { struct usb_function function; struct usb_composite_dev *cdev; spinlock_t lock; + struct acc_dev_ref *ref; struct usb_ep *ep_in; struct usb_ep *ep_out; @@ -80,13 +82,13 @@ struct acc_dev { /* online indicates state of function_set_alt & function_unbind * set to 1 when we connect */ - int online:1; + int online; /* disconnected indicates state of open & release * Set to 1 when we disconnect. * Not cleared until our file is closed. */ - int disconnected:1; + int disconnected; /* strings sent by the host */ char manufacturer[ACC_STRING_SIZE]; @@ -199,14 +201,48 @@ static struct usb_gadget_strings *acc_strings[] = { NULL, }; -/* temporary variable used between acc_open() and acc_gadget_bind() */ -static struct acc_dev *_acc_dev; +struct acc_dev_ref { + struct kref kref; + struct acc_dev *acc_dev; +}; + +static struct acc_dev_ref _acc_dev_ref = { + .kref = KREF_INIT(0), +}; struct acc_instance { struct usb_function_instance func_inst; const char *name; }; +static struct acc_dev *get_acc_dev(void) +{ + struct acc_dev_ref *ref = &_acc_dev_ref; + + return kref_get_unless_zero(&ref->kref) ? ref->acc_dev : NULL; +} + +static void __put_acc_dev(struct kref *kref) +{ + struct acc_dev_ref *ref = container_of(kref, struct acc_dev_ref, kref); + struct acc_dev *dev = ref->acc_dev; + + /* Cancel any async work */ + cancel_delayed_work_sync(&dev->start_work); + cancel_work_sync(&dev->hid_work); + + ref->acc_dev = NULL; + kfree(dev); +} + +static void put_acc_dev(struct acc_dev *dev) +{ + struct acc_dev_ref *ref = dev->ref; + + WARN_ON(ref->acc_dev != dev); + kref_put(&ref->kref, __put_acc_dev); +} + static inline struct acc_dev *func_to_dev(struct usb_function *f) { return container_of(f, struct acc_dev, function); @@ -272,7 +308,10 @@ static void acc_set_disconnected(struct acc_dev *dev) static void acc_complete_in(struct usb_ep *ep, struct usb_request *req) { - struct acc_dev *dev = _acc_dev; + struct acc_dev *dev = get_acc_dev(); + + if (!dev) + return; if (req->status == -ESHUTDOWN) { pr_debug("acc_complete_in set disconnected"); @@ -282,11 +321,15 @@ static void acc_complete_in(struct usb_ep *ep, struct usb_request *req) req_put(dev, &dev->tx_idle, req); wake_up(&dev->write_wq); + put_acc_dev(dev); } static void acc_complete_out(struct usb_ep *ep, struct usb_request *req) { - struct acc_dev *dev = _acc_dev; + struct acc_dev *dev = get_acc_dev(); + + if (!dev) + return; dev->rx_done = 1; if (req->status == -ESHUTDOWN) { @@ -295,6 +338,7 @@ static void acc_complete_out(struct usb_ep *ep, struct usb_request *req) } wake_up(&dev->read_wq); + put_acc_dev(dev); } static void acc_complete_set_string(struct usb_ep *ep, struct usb_request *req) @@ -762,24 +806,36 @@ static long acc_ioctl(struct file *fp, unsigned code, unsigned long value) static int acc_open(struct inode *ip, struct file *fp) { - printk(KERN_INFO "acc_open\n"); - if (atomic_xchg(&_acc_dev->open_excl, 1)) - return -EBUSY; + struct acc_dev *dev = get_acc_dev(); - _acc_dev->disconnected = 0; - fp->private_data = _acc_dev; + if (!dev) + return -ENODEV; + + if (atomic_xchg(&dev->open_excl, 1)) { + put_acc_dev(dev); + return -EBUSY; + } + + dev->disconnected = 0; + fp->private_data = dev; return 0; } static int acc_release(struct inode *ip, struct file *fp) { - printk(KERN_INFO "acc_release\n"); + struct acc_dev *dev = fp->private_data; + + if (!dev) + return -ENOENT; - WARN_ON(!atomic_xchg(&_acc_dev->open_excl, 0)); /* indicate that we are disconnected * still could be online so don't touch online flag */ - _acc_dev->disconnected = 1; + dev->disconnected = 1; + + fp->private_data = NULL; + WARN_ON(!atomic_xchg(&dev->open_excl, 0)); + put_acc_dev(dev); return 0; } @@ -832,7 +888,7 @@ static void acc_complete_setup_noop(struct usb_ep *ep, struct usb_request *req) int acc_ctrlrequest(struct usb_composite_dev *cdev, const struct usb_ctrlrequest *ctrl) { - struct acc_dev *dev = _acc_dev; + struct acc_dev *dev = get_acc_dev(); int value = -EOPNOTSUPP; struct acc_hid_dev *hid; int offset; @@ -849,12 +905,6 @@ int acc_ctrlrequest(struct usb_composite_dev *cdev, */ if (!dev) return -ENODEV; -/* - printk(KERN_INFO "acc_ctrlrequest " - "%02x.%02x v%04x i%04x l%u\n", - b_requestType, b_request, - w_value, w_index, w_length); -*/ if (b_requestType == (USB_DIR_OUT | USB_TYPE_VENDOR)) { if (b_request == ACCESSORY_START) { @@ -943,6 +993,7 @@ err: "%02x.%02x v%04x i%04x l%u\n", ctrl->bRequestType, ctrl->bRequest, w_value, w_index, w_length); + put_acc_dev(dev); return value; } EXPORT_SYMBOL_GPL(acc_ctrlrequest); @@ -1013,10 +1064,6 @@ kill_all_hid_devices(struct acc_dev *dev) struct list_head *entry, *temp; unsigned long flags; - /* do nothing if usb accessory device doesn't exist */ - if (!dev) - return; - spin_lock_irqsave(&dev->lock, flags); list_for_each_safe(entry, temp, &dev->hid_list) { hid = list_entry(entry, struct acc_hid_dev, list); @@ -1101,12 +1148,15 @@ static void acc_hid_delete(struct acc_hid_dev *hid) static void acc_hid_work(struct work_struct *data) { - struct acc_dev *dev = _acc_dev; + struct acc_dev *dev = get_acc_dev(); struct list_head *entry, *temp; struct acc_hid_dev *hid; struct list_head new_list, dead_list; unsigned long flags; + if (!dev) + return; + INIT_LIST_HEAD(&new_list); spin_lock_irqsave(&dev->lock, flags); @@ -1152,6 +1202,8 @@ static void acc_hid_work(struct work_struct *data) hid_destroy_device(hid->hid); acc_hid_delete(hid); } + + put_acc_dev(dev); } static int acc_function_set_alt(struct usb_function *f, @@ -1208,9 +1260,13 @@ static void acc_function_disable(struct usb_function *f) static int acc_setup(void) { + struct acc_dev_ref *ref = &_acc_dev_ref; struct acc_dev *dev; int ret; + if (kref_read(&ref->kref)) + return -EBUSY; + dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; @@ -1226,16 +1282,22 @@ static int acc_setup(void) INIT_DELAYED_WORK(&dev->start_work, acc_start_work); INIT_WORK(&dev->hid_work, acc_hid_work); - /* _acc_dev must be set before calling usb_gadget_register_driver */ - _acc_dev = dev; + dev->ref = ref; + if (cmpxchg_relaxed(&ref->acc_dev, NULL, dev)) { + ret = -EBUSY; + goto err_free_dev; + } ret = misc_register(&acc_device); if (ret) - goto err; + goto err_zap_ptr; + kref_init(&ref->kref); return 0; -err: +err_zap_ptr: + ref->acc_dev = NULL; +err_free_dev: kfree(dev); pr_err("USB accessory gadget driver failed to initialize\n"); return ret; @@ -1243,16 +1305,24 @@ err: void acc_disconnect(void) { + struct acc_dev *dev = get_acc_dev(); + + if (!dev) + return; + /* unregister all HID devices if USB is disconnected */ - kill_all_hid_devices(_acc_dev); + kill_all_hid_devices(dev); + put_acc_dev(dev); } EXPORT_SYMBOL_GPL(acc_disconnect); static void acc_cleanup(void) { + struct acc_dev *dev = get_acc_dev(); + misc_deregister(&acc_device); - kfree(_acc_dev); - _acc_dev = NULL; + put_acc_dev(dev); + put_acc_dev(dev); /* Pairs with kref_init() in acc_setup() */ } static struct acc_instance *to_acc_instance(struct config_item *item) { @@ -1312,7 +1382,6 @@ static void acc_free_inst(struct usb_function_instance *fi) static struct usb_function_instance *acc_alloc_inst(void) { struct acc_instance *fi_acc; - struct acc_dev *dev; int err; fi_acc = kzalloc(sizeof(*fi_acc), GFP_KERNEL); @@ -1324,19 +1393,19 @@ static struct usb_function_instance *acc_alloc_inst(void) err = acc_setup(); if (err) { kfree(fi_acc); - pr_err("Error setting ACCESSORY\n"); return ERR_PTR(err); } config_group_init_type_name(&fi_acc->func_inst.group, "", &acc_func_type); - dev = _acc_dev; return &fi_acc->func_inst; } static void acc_free(struct usb_function *f) { -/*NO-OP: no function specific resource allocation in mtp_alloc*/ + struct acc_dev *dev = func_to_dev(f); + + put_acc_dev(dev); } int acc_ctrlrequest_configfs(struct usb_function *f, @@ -1349,9 +1418,7 @@ int acc_ctrlrequest_configfs(struct usb_function *f, static struct usb_function *acc_alloc(struct usb_function_instance *fi) { - struct acc_dev *dev = _acc_dev; - - pr_info("acc_alloc\n"); + struct acc_dev *dev = get_acc_dev(); dev->function.name = "accessory"; dev->function.strings = acc_strings,