Merge android11-5.4.56 (fcb0d3e
) into msm-5.4
* refs/heads/tmp-fcb0d3e: Linux 5.4.56 perf bench: Share some global variables to fix build with gcc 10 perf env: Do not return pointers to local variables perf tests bp_account: Make global variable static x86/i8259: Use printk_deferred() to prevent deadlock KVM: LAPIC: Prevent setting the tscdeadline timer if the lapic is hw disabled KVM: arm64: Don't inherit exec permission across page-table levels drivers/net/wan: lapb: Corrected the usage of skb_cow RISC-V: Set maximum number of mapped pages correctly xen-netfront: fix potential deadlock in xennet_remove() cxgb4: add missing release on skb in uld_send() x86/stacktrace: Fix reliable check for empty user task stacks x86/unwind/orc: Fix ORC for newly forked tasks Revert "i2c: cadence: Fix the hold bit setting" net: ethernet: ravb: exit if re-initialization fails in tx timeout parisc: add support for cmpxchg on u8 pointers scsi: core: Run queue in case of I/O resource contention failure nfc: s3fwrn5: add missing release on skb in s3fwrn5_recv_frame selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support qed: Disable "MFW indication via attention" SPAM every 5 minutes selftests: fib_nexthop_multiprefix: fix cleanup() netns deletion usb: hso: Fix debug compile warning on sparc32 vxlan: fix memleak of fdb perf tools: Fix record failure when mixed with ARM SPE event net/mlx5e: fix bpf_prog reference count leaks in mlx5e_alloc_rq net: gemini: Fix missing clk_disable_unprepare() in error path of gemini_ethernet_port_probe() net: nixge: fix potential memory leak in nixge_probe() Bluetooth: fix kernel oops in store_pending_adv_report arm64: csum: Fix handling of bad packets arm64/alternatives: move length validation inside the subsection mac80211: mesh: Free pending skb when destroying a mpath mac80211: mesh: Free ie data when leaving mesh bpf: Fix map leak in HASH_OF_MAPS map ibmvnic: Fix IRQ mapping disposal in error path mlxsw: core: Free EMAD transactions using kfree_rcu() mlxsw: core: Increase scope of RCU read-side critical section mlx4: disable device on shutdown rhashtable: Fix unprotected RCU dereference in __rht_ptr net: lan78xx: fix transfer-buffer memory leak net: lan78xx: add missing endpoint sanity check net/mlx5e: Fix kernel crash when setting vf VLANID on a VF dev net/mlx5e: Modify uplink state on interface up/down net/mlx5: Verify Hardware supports requested ptp function on a given pin net/mlx5e: Fix error path of device attach net/mlx5: E-switch, Destroy TSAR when fail to enable the mode net: hns3: fix aRFS FD rules leftover after add a user FD rule net: hns3: fix a TX timeout issue sh: Fix validation of system call number sh/tlb: Fix PGTABLE_LEVELS > 2 selftests/net: so_txtime: fix clang issues for target arch PowerPC selftests/net: psock_fanout: fix clang issues for target arch PowerPC selftests/net: rxtimestamp: fix clang issues for target arch PowerPC nvme-tcp: fix possible hang waiting for icresp response ARM: dts: armada-38x: fix NETA lockup when repeatedly switching speeds xfrm: Fix crash when the hold queue is used. ARM: dts sunxi: Relax a bit the CMA pool allocation range xfrm: policy: match with both mark and mask on user interfaces net/x25: Fix null-ptr-deref in x25_disconnect net/x25: Fix x25_neigh refcnt leak when x25 disconnect libtraceevent: Fix build with binutils 2.35 rds: Prevent kernel-infoleak in rds_notify_queue_get() drm: hold gem reference until object is no longer accessed drm/dbi: Fix SPI Type 1 (9-bit) transfer drm/amdgpu: Prevent kernel-infoleak in amdgpu_info_ioctl() drm/amd/display: Clear dm_state for fast updates Revert "drm/amdgpu: Fix NULL dereference in dpm sysfs handlers" virtio_balloon: fix up endian-ness for free cmd id ARM: dts: imx6qdl-icore: Fix OTG_ID pin and sdcard detect ARM: dts: imx6sx-sdb: Fix the phy-mode on fec2 ARM: dts: imx6sx-sabreauto: Fix the phy-mode on fec2 ARM: 8986/1: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints wireless: Use offsetof instead of custom macro. 9p/trans_fd: Fix concurrency del of req_list in p9_fd_cancelled/p9_read_work vhost/scsi: fix up req type endian-ness IB/rdmavt: Fix RQ counting issues causing use of an invalid RWQE ALSA: hda/hdmi: Fix keep_power assignment for non-component devices ALSA: hda/realtek - Fixed HP right speaker no sound ALSA: hda/realtek: Fix add a "ultra_low_power" function for intel reference board (alc256) ALSA: hda/realtek: typo_fix: enable headset mic of ASUS ROG Zephyrus G14(GA401) series with ALC289 ALSA: hda/realtek: enable headset mic of ASUS ROG Zephyrus G15(GA502) series with ALC289 ALSA: usb-audio: Add implicit feedback quirk for SSL2 mm/filemap.c: don't bother dropping mmap_sem for zero size readahead PCI/ASPM: Disable ASPM on ASMedia ASM1083/1085 PCIe-to-PCI bridge ath10k: enable transmit data ack RSSI for QCA9884 sunrpc: check that domain table is empty at module unload. media: rc: prevent memory leak in cx23888_ir_probe crypto: ccp - Release all allocated memory if sha type is invalid ANDROID: ABI: Update allowed list for QCOM Revert "ANDROID: GKI: update abi symbol lists now that CONFIG_DWC3 is enabled." ANDROID: kallsyms: increase KSYM_NAME_LEN ANDROID: GKI: update KMI after RCU CONFIGs added ANDROID: GKI: enable RCU configs ANDROID: KABI updates for db845c (USB_DWC3 whiplash fixups) ANDROID: Revert "ANDROID: db845c_gki.fragment: Remove DWC3 modules built into GKI" ANDROID: Open-code OWNERS emails for now ANDROID: Initial OWNERS for abi metafiles ANDROID: ABI: update symbols of charger-manager.ko to unisoc ANDROID: GKI: fix symbol_get/put() build error on arm64 defconfig ANDROID: GKI: Fix up "do not export symbol_get/put()" commit Conflicts: android/abi_gki_aarch64_qcom mm/filemap.c Change-Id: I24f59bf5cf2a9ab41ae0864beb8756eed0998345 Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
This commit is contained in:
commit
66b69d62de
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 55
|
||||
SUBLEVEL = 56
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
|
13
android/OWNERS
Normal file
13
android/OWNERS
Normal file
@ -0,0 +1,13 @@
|
||||
# If we ever add another OWNERS above this directory, it's likely to be
|
||||
# more permissive, so don't inherit from it
|
||||
set noparent
|
||||
gki-abi-approvers@google.com
|
||||
adelva@google.com
|
||||
maennich@google.com
|
||||
saravanak@google.com
|
||||
sspatil@google.com
|
||||
tkjos@google.com
|
||||
willmcvicker@google.com
|
||||
# Downstream boards maintained directly in this manifest branch
|
||||
per-file abi_gki_aarch64_cuttlefish = adelva@google.com, rammuthiah@google.com
|
||||
per-file abi_gki_aarch64_goldfish = rkir@google.com
|
File diff suppressed because it is too large
Load Diff
@ -45,6 +45,7 @@
|
||||
_dev_err
|
||||
dev_get_regmap
|
||||
device_init_wakeup
|
||||
device_property_present
|
||||
device_property_read_u32_array
|
||||
device_set_wakeup_capable
|
||||
device_wakeup_enable
|
||||
@ -65,20 +66,24 @@
|
||||
__devm_of_phy_provider_register
|
||||
devm_of_platform_populate
|
||||
devm_phy_create
|
||||
devm_phy_get
|
||||
devm_pinctrl_register
|
||||
__devm_regmap_init_mmio_clk
|
||||
devm_regulator_bulk_get
|
||||
devm_regulator_get
|
||||
devm_regulator_register
|
||||
devm_request_threaded_irq
|
||||
devm_reset_control_array_get
|
||||
__devm_reset_control_get
|
||||
devm_reset_controller_register
|
||||
devm_usb_get_phy_by_phandle
|
||||
devm_watchdog_register_device
|
||||
_dev_notice
|
||||
dev_pm_opp_get_level
|
||||
dev_set_name
|
||||
_dev_warn
|
||||
disable_irq
|
||||
disable_irq_nosync
|
||||
divider_get_val
|
||||
divider_recalc_rate
|
||||
divider_round_rate_parent
|
||||
@ -114,6 +119,10 @@
|
||||
enable_irq
|
||||
eth_validate_addr
|
||||
event_triggers_call
|
||||
extcon_get_edev_by_phandle
|
||||
extcon_get_state
|
||||
extcon_register_notifier
|
||||
extcon_unregister_notifier
|
||||
fd_install
|
||||
find_next_bit
|
||||
find_next_zero_bit
|
||||
@ -156,6 +165,7 @@
|
||||
irq_domain_remove
|
||||
irq_find_mapping
|
||||
irq_find_matching_fwspec
|
||||
irq_modify_status
|
||||
irq_of_parse_and_map
|
||||
irq_set_chained_handler_and_data
|
||||
irq_set_chip_and_handler_name
|
||||
@ -169,6 +179,7 @@
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmem_cache_alloc_trace
|
||||
kmemdup
|
||||
kstrdup
|
||||
ktime_get
|
||||
ktime_get_mono_fast_ns
|
||||
@ -196,10 +207,12 @@
|
||||
of_alias_get_id
|
||||
of_clk_add_hw_provider
|
||||
of_clk_del_provider
|
||||
of_clk_get
|
||||
of_clk_hw_onecell_get
|
||||
of_clk_set_defaults
|
||||
of_device_get_match_data
|
||||
of_device_is_compatible
|
||||
of_find_device_by_node
|
||||
of_find_property
|
||||
of_fwnode_ops
|
||||
of_genpd_add_provider_onecell
|
||||
@ -213,6 +226,7 @@
|
||||
of_match_node
|
||||
of_parse_phandle
|
||||
of_phy_simple_xlate
|
||||
of_platform_depopulate
|
||||
of_platform_populate
|
||||
of_property_count_elems_of_size
|
||||
of_property_read_string
|
||||
@ -228,12 +242,22 @@
|
||||
pci_unregister_driver
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
phy_exit
|
||||
phy_init
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
pinconf_generic_dt_node_to_map
|
||||
pinctrl_dev_get_drvdata
|
||||
pinctrl_pm_select_default_state
|
||||
pinctrl_pm_select_sleep_state
|
||||
pinctrl_utils_free_map
|
||||
platform_bus_type
|
||||
platform_device_add
|
||||
platform_device_add_properties
|
||||
platform_device_add_resources
|
||||
platform_device_alloc
|
||||
platform_device_put
|
||||
platform_device_register_full
|
||||
platform_device_unregister
|
||||
__platform_driver_register
|
||||
@ -313,6 +337,7 @@
|
||||
strcpy
|
||||
strlcpy
|
||||
strlen
|
||||
strncmp
|
||||
strncpy
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
@ -348,6 +373,7 @@
|
||||
usb_amd_quirk_pll_enable
|
||||
usb_deregister
|
||||
usb_disabled
|
||||
usb_get_dr_mode
|
||||
usb_hcd_check_unlink_urb
|
||||
usb_hcd_giveback_urb
|
||||
usb_hc_died
|
||||
@ -692,7 +718,6 @@
|
||||
iommu_unmap
|
||||
irq_domain_xlate_onecell
|
||||
kasprintf
|
||||
kmemdup
|
||||
kstrdup_quotable_cmdline
|
||||
kthread_create_on_node
|
||||
kthread_destroy_worker
|
||||
@ -719,7 +744,6 @@
|
||||
of_dma_configure
|
||||
of_drm_find_bridge
|
||||
of_drm_find_panel
|
||||
of_find_device_by_node
|
||||
of_find_matching_node_and_match
|
||||
of_get_compatible_child
|
||||
of_graph_get_endpoint_by_regs
|
||||
@ -727,7 +751,6 @@
|
||||
of_graph_get_remote_port_parent
|
||||
of_graph_parse_endpoint
|
||||
of_icc_get
|
||||
of_platform_depopulate
|
||||
of_property_read_string_helper
|
||||
param_ops_charp
|
||||
pm_runtime_get_if_in_use
|
||||
@ -904,10 +927,6 @@
|
||||
devm_nvmem_cell_get
|
||||
|
||||
# required by phy-qcom-usb-hs.ko
|
||||
extcon_get_edev_by_phandle
|
||||
extcon_get_state
|
||||
extcon_register_notifier
|
||||
extcon_unregister_notifier
|
||||
of_property_read_variable_u8_array
|
||||
regulator_set_voltage
|
||||
reset_control_reset
|
||||
@ -942,7 +961,6 @@
|
||||
devres_release
|
||||
kfree_const
|
||||
kstrdup_const
|
||||
strncmp
|
||||
|
||||
# required by qcom-rpmh-regulator.ko
|
||||
of_get_regulator_init_data
|
||||
@ -965,12 +983,6 @@
|
||||
rtc_valid_tm
|
||||
|
||||
# required by ufs-qcom.ko
|
||||
devm_phy_get
|
||||
phy_exit
|
||||
phy_init
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
print_hex_dump
|
||||
ufshcd_dme_get_attr
|
||||
ufshcd_dme_set_attr
|
||||
@ -1022,7 +1034,6 @@
|
||||
# required by smsm.ko
|
||||
handle_nested_irq
|
||||
irq_domain_xlate_twocell
|
||||
irq_modify_status
|
||||
qcom_smem_state_register
|
||||
qcom_smem_state_unregister
|
||||
|
||||
@ -1065,6 +1076,35 @@
|
||||
of_device_uevent_modalias
|
||||
__request_module
|
||||
|
||||
# required by dwc3-qcom.ko
|
||||
devm_extcon_register_notifier
|
||||
of_clk_get_parent_count
|
||||
|
||||
# required by dwc3.ko
|
||||
dev_fwnode
|
||||
device_property_read_string
|
||||
device_property_read_u8_array
|
||||
devm_usb_get_phy
|
||||
extcon_find_edev_by_node
|
||||
extcon_get_extcon_dev
|
||||
of_usb_get_phy_mode
|
||||
phy_pm_runtime_get_sync
|
||||
phy_pm_runtime_put_sync
|
||||
platform_get_irq_byname_optional
|
||||
system_freezable_wq
|
||||
usb_add_gadget_udc
|
||||
usb_decode_ctrl
|
||||
usb_del_gadget_udc
|
||||
usb_ep_set_maxpacket_limit
|
||||
usb_gadget_giveback_request
|
||||
usb_gadget_map_request_by_dev
|
||||
usb_gadget_set_state
|
||||
usb_gadget_udc_reset
|
||||
usb_gadget_unmap_request_by_dev
|
||||
usb_get_maximum_speed
|
||||
usb_role_switch_register
|
||||
usb_role_switch_unregister
|
||||
|
||||
# required by ohci-hcd.ko
|
||||
flush_work
|
||||
gen_pool_dma_alloc_align
|
||||
@ -1080,8 +1120,6 @@
|
||||
usb_amd_prefetch_quirk
|
||||
|
||||
# required by ohci-platform.ko
|
||||
devm_reset_control_array_get
|
||||
of_clk_get
|
||||
usb_create_hcd
|
||||
|
||||
# required by xhci-hcd.ko
|
||||
@ -1093,11 +1131,6 @@
|
||||
pci_alloc_irq_vectors_affinity
|
||||
pci_free_irq_vectors
|
||||
pci_irq_vector
|
||||
platform_device_add
|
||||
platform_device_add_properties
|
||||
platform_device_add_resources
|
||||
platform_device_alloc
|
||||
platform_device_put
|
||||
radix_tree_maybe_preload
|
||||
sg_pcopy_from_buffer
|
||||
sg_pcopy_to_buffer
|
||||
@ -1130,8 +1163,6 @@
|
||||
usb_enable_intel_xhci_ports
|
||||
|
||||
# required by xhci-plat-hcd.ko
|
||||
device_property_present
|
||||
devm_usb_get_phy_by_phandle
|
||||
of_usb_host_tpl_support
|
||||
__usb_create_hcd
|
||||
|
||||
@ -1242,6 +1273,8 @@
|
||||
__nla_parse
|
||||
proto_register
|
||||
proto_unregister
|
||||
_raw_write_lock_bh
|
||||
_raw_write_unlock_bh
|
||||
refcount_dec_and_mutex_lock
|
||||
refcount_dec_checked
|
||||
release_sock
|
||||
|
@ -239,6 +239,7 @@
|
||||
devm_snd_dmaengine_pcm_register
|
||||
devm_snd_soc_register_card
|
||||
devm_snd_soc_register_component
|
||||
devm_usb_get_phy
|
||||
devm_usb_get_phy_by_phandle
|
||||
_dev_notice
|
||||
dev_pm_opp_add
|
||||
@ -1203,8 +1204,11 @@
|
||||
up_read
|
||||
up_write
|
||||
usb_add_function
|
||||
usb_add_gadget_udc
|
||||
usb_assign_descriptors
|
||||
usb_copy_descriptors
|
||||
usb_decode_ctrl
|
||||
usb_del_gadget_udc
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
@ -1213,12 +1217,19 @@
|
||||
usb_ep_free_request
|
||||
usb_ep_queue
|
||||
usb_ep_set_halt
|
||||
usb_ep_set_maxpacket_limit
|
||||
usb_free_all_descriptors
|
||||
usb_function_register
|
||||
usb_function_unregister
|
||||
usb_gadget_giveback_request
|
||||
usb_gadget_map_request_by_dev
|
||||
usb_gadget_set_state
|
||||
usb_gadget_udc_reset
|
||||
usb_gadget_unmap_request_by_dev
|
||||
usb_gadget_vbus_connect
|
||||
usb_gadget_vbus_disconnect
|
||||
usb_get_dr_mode
|
||||
usb_get_maximum_speed
|
||||
usb_gstrings_attach
|
||||
usb_hub_find_child
|
||||
usb_interface_id
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -474,6 +474,7 @@
|
||||
usb_calc_bus_time
|
||||
usb_create_hcd
|
||||
usb_disabled
|
||||
usb_gadget_set_state
|
||||
usb_get_dr_mode
|
||||
usb_hc_died
|
||||
usb_hub_clear_tt_buffer
|
||||
@ -1051,6 +1052,51 @@
|
||||
serial8250_suspend_port
|
||||
serial8250_unregister_port
|
||||
|
||||
# required by dwc3-haps.ko
|
||||
pcim_enable_device
|
||||
|
||||
# required by dwc3-of-simple.ko
|
||||
clk_bulk_get_all
|
||||
clk_bulk_put_all
|
||||
of_reset_control_array_get
|
||||
reset_control_put
|
||||
reset_control_reset
|
||||
|
||||
# required by dwc3-qcom.ko
|
||||
devm_extcon_register_notifier
|
||||
irq_modify_status
|
||||
of_clk_get_parent_count
|
||||
|
||||
# required by dwc3.ko
|
||||
bpf_trace_run4
|
||||
device_property_read_u8_array
|
||||
devm_clk_bulk_get_all
|
||||
devm_phy_get
|
||||
devm_usb_get_phy
|
||||
extcon_find_edev_by_node
|
||||
extcon_get_extcon_dev
|
||||
extcon_register_notifier
|
||||
extcon_unregister_notifier
|
||||
of_usb_get_phy_mode
|
||||
phy_exit
|
||||
phy_init
|
||||
phy_pm_runtime_get_sync
|
||||
phy_pm_runtime_put_sync
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
platform_get_irq_byname_optional
|
||||
system_freezable_wq
|
||||
usb_add_gadget_udc
|
||||
usb_decode_ctrl
|
||||
usb_del_gadget_udc
|
||||
usb_ep_set_maxpacket_limit
|
||||
usb_gadget_giveback_request
|
||||
usb_gadget_map_request_by_dev
|
||||
usb_gadget_udc_reset
|
||||
usb_gadget_unmap_request_by_dev
|
||||
usb_get_maximum_speed
|
||||
|
||||
# required by gadgetfs.ko
|
||||
_copy_to_iter
|
||||
current_time
|
||||
|
@ -145,6 +145,7 @@
|
||||
devm_regulator_register
|
||||
devm_request_threaded_irq
|
||||
devm_spi_register_controller
|
||||
devm_usb_get_phy
|
||||
devm_usb_get_phy_by_phandle
|
||||
dev_queue_xmit
|
||||
dev_set_name
|
||||
@ -677,12 +678,14 @@
|
||||
unregister_chrdev_region
|
||||
unregister_pernet_subsys
|
||||
up
|
||||
usb_add_gadget_udc
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_autopm_get_interface
|
||||
usb_autopm_get_interface_no_resume
|
||||
usb_autopm_put_interface
|
||||
usb_control_msg
|
||||
usb_del_gadget_udc
|
||||
usb_deregister
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
@ -690,11 +693,14 @@
|
||||
usb_ep_enable
|
||||
usb_ep_free_request
|
||||
usb_ep_queue
|
||||
usb_ep_set_maxpacket_limit
|
||||
usb_find_common_endpoints
|
||||
usb_free_coherent
|
||||
usb_free_urb
|
||||
usb_function_register
|
||||
usb_function_unregister
|
||||
usb_gadget_giveback_request
|
||||
usb_gadget_udc_reset
|
||||
usb_get_dr_mode
|
||||
usb_get_intf
|
||||
usb_hcd_is_primary_hcd
|
||||
@ -775,6 +781,9 @@
|
||||
alarm_start
|
||||
alarmtimer_get_rtcdev
|
||||
devm_kasprintf
|
||||
ns_to_timespec64
|
||||
orderly_poweroff
|
||||
power_supply_set_property
|
||||
regulator_force_disable
|
||||
regulator_set_current_limit
|
||||
thermal_zone_get_temp
|
||||
@ -796,6 +805,50 @@
|
||||
cpufreq_register_governor
|
||||
cpufreq_unregister_governor
|
||||
|
||||
# required by dwc3-haps.ko
|
||||
pcim_enable_device
|
||||
|
||||
# required by dwc3-of-simple.ko
|
||||
clk_bulk_get_all
|
||||
clk_bulk_put_all
|
||||
of_reset_control_array_get
|
||||
reset_control_put
|
||||
reset_control_reset
|
||||
|
||||
# required by dwc3-qcom.ko
|
||||
devm_extcon_register_notifier
|
||||
devm_reset_control_array_get
|
||||
|
||||
# required by dwc3.ko
|
||||
device_property_read_string
|
||||
device_property_read_u8_array
|
||||
devm_clk_bulk_get
|
||||
devm_phy_get
|
||||
__devm_reset_control_get
|
||||
extcon_find_edev_by_node
|
||||
extcon_get_extcon_dev
|
||||
extcon_register_notifier
|
||||
extcon_unregister_notifier
|
||||
of_usb_get_phy_mode
|
||||
phy_exit
|
||||
phy_init
|
||||
phy_pm_runtime_get_sync
|
||||
phy_pm_runtime_put_sync
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
pinctrl_pm_select_default_state
|
||||
pinctrl_pm_select_sleep_state
|
||||
platform_get_irq_byname_optional
|
||||
synchronize_irq
|
||||
usb_decode_ctrl
|
||||
usb_gadget_map_request_by_dev
|
||||
usb_gadget_set_state
|
||||
usb_gadget_unmap_request_by_dev
|
||||
usb_get_maximum_speed
|
||||
usb_role_switch_register
|
||||
usb_role_switch_unregister
|
||||
|
||||
# required by exfat.ko
|
||||
__blockdev_direct_IO
|
||||
block_write_full_page
|
||||
|
@ -339,7 +339,8 @@
|
||||
|
||||
comphy: phy@18300 {
|
||||
compatible = "marvell,armada-380-comphy";
|
||||
reg = <0x18300 0x100>;
|
||||
reg-names = "comphy", "conf";
|
||||
reg = <0x18300 0x100>, <0x18460 4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
|
@ -384,7 +384,7 @@
|
||||
|
||||
pinctrl_usbotg: usbotggrp {
|
||||
fsl,pins = <
|
||||
MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
|
||||
MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
@ -396,6 +396,7 @@
|
||||
MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17070
|
||||
MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17070
|
||||
MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17070
|
||||
MX6QDL_PAD_GPIO_1__GPIO1_IO01 0x1b0b0
|
||||
>;
|
||||
};
|
||||
|
||||
|
@ -99,7 +99,7 @@
|
||||
&fec2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet2>;
|
||||
phy-mode = "rgmii";
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
status = "okay";
|
||||
|
@ -213,7 +213,7 @@
|
||||
&fec2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet2>;
|
||||
phy-mode = "rgmii";
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -198,7 +198,7 @@
|
||||
default-pool {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x6000000>;
|
||||
alloc-ranges = <0x4a000000 0x6000000>;
|
||||
alloc-ranges = <0x40000000 0x10000000>;
|
||||
reusable;
|
||||
linux,cma-default;
|
||||
};
|
||||
|
@ -117,7 +117,7 @@
|
||||
default-pool {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x6000000>;
|
||||
alloc-ranges = <0x4a000000 0x6000000>;
|
||||
alloc-ranges = <0x40000000 0x10000000>;
|
||||
reusable;
|
||||
linux,cma-default;
|
||||
};
|
||||
|
@ -180,7 +180,7 @@
|
||||
default-pool {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x6000000>;
|
||||
alloc-ranges = <0x4a000000 0x6000000>;
|
||||
alloc-ranges = <0x40000000 0x10000000>;
|
||||
reusable;
|
||||
linux,cma-default;
|
||||
};
|
||||
|
@ -680,6 +680,12 @@ static void disable_single_step(struct perf_event *bp)
|
||||
arch_install_hw_breakpoint(bp);
|
||||
}
|
||||
|
||||
static int watchpoint_fault_on_uaccess(struct pt_regs *regs,
|
||||
struct arch_hw_breakpoint *info)
|
||||
{
|
||||
return !user_mode(regs) && info->ctrl.privilege == ARM_BREAKPOINT_USER;
|
||||
}
|
||||
|
||||
static void watchpoint_handler(unsigned long addr, unsigned int fsr,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
@ -739,16 +745,27 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,
|
||||
}
|
||||
|
||||
pr_debug("watchpoint fired: address = 0x%x\n", info->trigger);
|
||||
|
||||
/*
|
||||
* If we triggered a user watchpoint from a uaccess routine,
|
||||
* then handle the stepping ourselves since userspace really
|
||||
* can't help us with this.
|
||||
*/
|
||||
if (watchpoint_fault_on_uaccess(regs, info))
|
||||
goto step;
|
||||
|
||||
perf_bp_event(wp, regs);
|
||||
|
||||
/*
|
||||
* If no overflow handler is present, insert a temporary
|
||||
* mismatch breakpoint so we can single-step over the
|
||||
* watchpoint trigger.
|
||||
* Defer stepping to the overflow handler if one is installed.
|
||||
* Otherwise, insert a temporary mismatch breakpoint so that
|
||||
* we can single-step over the watchpoint trigger.
|
||||
*/
|
||||
if (is_default_overflow_handler(wp))
|
||||
enable_single_step(wp, instruction_pointer(regs));
|
||||
if (!is_default_overflow_handler(wp))
|
||||
goto unlock;
|
||||
|
||||
step:
|
||||
enable_single_step(wp, instruction_pointer(regs));
|
||||
unlock:
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
1
arch/arm64/configs/OWNERS
Normal file
1
arch/arm64/configs/OWNERS
Normal file
@ -0,0 +1 @@
|
||||
per-file gki_defconfig = file:../../../android/OWNERS
|
@ -31,6 +31,7 @@ CONFIG_USB_XHCI_PCI_RENESAS=m
|
||||
CONFIG_USB_XHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_DWC3=m
|
||||
# CONFIG_USB_DWC3_HAPS is not set
|
||||
# CONFIG_USB_DWC3_OF_SIMPLE is not set
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
|
@ -7,6 +7,9 @@ CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_PSI=y
|
||||
CONFIG_RCU_EXPERT=y
|
||||
CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_RCU_NOCB_CPU=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_IKHEADERS=y
|
||||
|
@ -19,16 +19,17 @@ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
{
|
||||
__uint128_t tmp;
|
||||
u64 sum;
|
||||
int n = ihl; /* we want it signed */
|
||||
|
||||
tmp = *(const __uint128_t *)iph;
|
||||
iph += 16;
|
||||
ihl -= 4;
|
||||
n -= 4;
|
||||
tmp += ((tmp >> 64) | (tmp << 64));
|
||||
sum = tmp >> 64;
|
||||
do {
|
||||
sum += *(const u32 *)iph;
|
||||
iph += 4;
|
||||
} while (--ihl);
|
||||
} while (--n > 0);
|
||||
|
||||
sum += ((sum >> 32) | (sum << 32));
|
||||
return csum_fold((__force u32)(sum >> 32));
|
||||
|
@ -60,6 +60,7 @@ extern void __cmpxchg_called_with_bad_pointer(void);
|
||||
extern unsigned long __cmpxchg_u32(volatile unsigned int *m, unsigned int old,
|
||||
unsigned int new_);
|
||||
extern u64 __cmpxchg_u64(volatile u64 *ptr, u64 old, u64 new_);
|
||||
extern u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new_);
|
||||
|
||||
/* don't worry...optimizer will get rid of most of this */
|
||||
static inline unsigned long
|
||||
@ -71,6 +72,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
|
||||
#endif
|
||||
case 4: return __cmpxchg_u32((unsigned int *)ptr,
|
||||
(unsigned int)old, (unsigned int)new_);
|
||||
case 1: return __cmpxchg_u8((u8 *)ptr, (u8)old, (u8)new_);
|
||||
}
|
||||
__cmpxchg_called_with_bad_pointer();
|
||||
return old;
|
||||
|
@ -79,3 +79,15 @@ unsigned long __cmpxchg_u32(volatile unsigned int *ptr, unsigned int old, unsign
|
||||
_atomic_spin_unlock_irqrestore(ptr, flags);
|
||||
return (unsigned long)prev;
|
||||
}
|
||||
|
||||
u8 __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new)
|
||||
{
|
||||
unsigned long flags;
|
||||
u8 prev;
|
||||
|
||||
_atomic_spin_lock_irqsave(ptr, flags);
|
||||
if ((prev = *ptr) == old)
|
||||
*ptr = new;
|
||||
_atomic_spin_unlock_irqrestore(ptr, flags);
|
||||
return prev;
|
||||
}
|
||||
|
@ -115,9 +115,9 @@ void __init setup_bootmem(void)
|
||||
/* Reserve from the start of the kernel to the end of the kernel */
|
||||
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
||||
|
||||
set_max_mapnr(PFN_DOWN(mem_size));
|
||||
max_pfn = PFN_DOWN(memblock_end_of_DRAM());
|
||||
max_low_pfn = max_pfn;
|
||||
set_max_mapnr(max_low_pfn);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
setup_initrd();
|
||||
|
@ -12,6 +12,7 @@ extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
|
||||
extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd);
|
||||
extern pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address);
|
||||
extern void pmd_free(struct mm_struct *mm, pmd_t *pmd);
|
||||
#define __pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, (pmdp))
|
||||
#endif
|
||||
|
||||
static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
|
||||
@ -33,13 +34,4 @@ do { \
|
||||
tlb_remove_page((tlb), (pte)); \
|
||||
} while (0)
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 2
|
||||
#define __pmd_free_tlb(tlb, pmdp, addr) \
|
||||
do { \
|
||||
struct page *page = virt_to_page(pmdp); \
|
||||
pgtable_pmd_page_dtor(page); \
|
||||
tlb_remove_page((tlb), page); \
|
||||
} while (0);
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_SH_PGALLOC_H */
|
||||
|
@ -199,7 +199,7 @@ syscall_trace_entry:
|
||||
mov.l @(OFF_R7,r15), r7 ! arg3
|
||||
mov.l @(OFF_R3,r15), r3 ! syscall_nr
|
||||
!
|
||||
mov.l 2f, r10 ! Number of syscalls
|
||||
mov.l 6f, r10 ! Number of syscalls
|
||||
cmp/hs r10, r3
|
||||
bf syscall_call
|
||||
mov #-ENOSYS, r0
|
||||
@ -353,7 +353,7 @@ ENTRY(system_call)
|
||||
tst r9, r8
|
||||
bf syscall_trace_entry
|
||||
!
|
||||
mov.l 2f, r8 ! Number of syscalls
|
||||
mov.l 6f, r8 ! Number of syscalls
|
||||
cmp/hs r8, r3
|
||||
bt syscall_badsys
|
||||
!
|
||||
@ -392,7 +392,7 @@ syscall_exit:
|
||||
#if !defined(CONFIG_CPU_SH2)
|
||||
1: .long TRA
|
||||
#endif
|
||||
2: .long NR_syscalls
|
||||
6: .long NR_syscalls
|
||||
3: .long sys_call_table
|
||||
7: .long do_syscall_trace_enter
|
||||
8: .long do_syscall_trace_leave
|
||||
|
1
arch/x86/configs/OWNERS
Normal file
1
arch/x86/configs/OWNERS
Normal file
@ -0,0 +1 @@
|
||||
per-file gki_defconfig = file:../../../android/OWNERS
|
@ -9,6 +9,9 @@ CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_PSI=y
|
||||
CONFIG_RCU_EXPERT=y
|
||||
CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_RCU_NOCB_CPU=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_IKHEADERS=y
|
||||
|
@ -207,7 +207,7 @@ static void mask_and_ack_8259A(struct irq_data *data)
|
||||
* lets ACK and report it. [once per IRQ]
|
||||
*/
|
||||
if (!(spurious_irq_mask & irqmask)) {
|
||||
printk(KERN_DEBUG
|
||||
printk_deferred(KERN_DEBUG
|
||||
"spurious 8259A interrupt: IRQ%d.\n", irq);
|
||||
spurious_irq_mask |= irqmask;
|
||||
}
|
||||
|
@ -24,12 +24,12 @@ void arch_klp_init_object_loaded(struct klp_patch *patch,
|
||||
objname = obj->name ? obj->name : "vmlinux";
|
||||
|
||||
/* See livepatch core code for BUILD_BUG_ON() explanation */
|
||||
BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 128);
|
||||
BUILD_BUG_ON(MODULE_NAME_LEN < 56 || KSYM_NAME_LEN != 192);
|
||||
|
||||
for (s = info->sechdrs; s < info->sechdrs + info->hdr.e_shnum; s++) {
|
||||
/* Apply per-object .klp.arch sections */
|
||||
cnt = sscanf(info->secstrings + s->sh_name,
|
||||
".klp.arch.%55[^.].%127s",
|
||||
".klp.arch.%55[^.].%191s",
|
||||
sec_objname, secname);
|
||||
if (cnt != 2)
|
||||
continue;
|
||||
|
@ -58,7 +58,6 @@ int arch_stack_walk_reliable(stack_trace_consume_fn consume_entry,
|
||||
* or a page fault), which can make frame pointers
|
||||
* unreliable.
|
||||
*/
|
||||
|
||||
if (IS_ENABLED(CONFIG_FRAME_POINTER))
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -81,10 +80,6 @@ int arch_stack_walk_reliable(stack_trace_consume_fn consume_entry,
|
||||
if (unwind_error(&state))
|
||||
return -EINVAL;
|
||||
|
||||
/* Success path for non-user tasks, i.e. kthreads and idle tasks */
|
||||
if (!(task->flags & (PF_KTHREAD | PF_IDLE)))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -431,8 +431,11 @@ bool unwind_next_frame(struct unwind_state *state)
|
||||
/*
|
||||
* Find the orc_entry associated with the text address.
|
||||
*
|
||||
* Decrement call return addresses by one so they work for sibling
|
||||
* calls and calls to noreturn functions.
|
||||
* For a call frame (as opposed to a signal frame), state->ip points to
|
||||
* the instruction after the call. That instruction's stack layout
|
||||
* could be different from the call instruction's layout, for example
|
||||
* if the call was to a noreturn function. So get the ORC data for the
|
||||
* call instruction itself.
|
||||
*/
|
||||
orc = orc_find(state->signal ? state->ip : state->ip - 1);
|
||||
if (!orc) {
|
||||
@ -653,6 +656,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
|
||||
state->sp = task->thread.sp;
|
||||
state->bp = READ_ONCE_NOCHECK(frame->bp);
|
||||
state->ip = READ_ONCE_NOCHECK(frame->ret_addr);
|
||||
state->signal = (void *)state->ip == ret_from_fork;
|
||||
}
|
||||
|
||||
if (get_stack_info((unsigned long *)state->sp, state->task,
|
||||
|
@ -19,7 +19,7 @@ menuconfig VIRTUALIZATION
|
||||
if VIRTUALIZATION
|
||||
|
||||
config KVM
|
||||
tristate "Kernel-based Virtual Machine (KVM) support"
|
||||
bool "Kernel-based Virtual Machine (KVM) support"
|
||||
depends on HAVE_KVM
|
||||
depends on HIGH_RES_TIMERS
|
||||
# for TASKSTATS/TASK_DELAY_ACCT:
|
||||
|
@ -2085,7 +2085,7 @@ void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data)
|
||||
{
|
||||
struct kvm_lapic *apic = vcpu->arch.apic;
|
||||
|
||||
if (!lapic_in_kernel(vcpu) || apic_lvtt_oneshot(apic) ||
|
||||
if (!kvm_apic_present(vcpu) || apic_lvtt_oneshot(apic) ||
|
||||
apic_lvtt_period(apic))
|
||||
return;
|
||||
|
||||
|
@ -1,36 +1,5 @@
|
||||
DEFCONFIG=allmodconfig
|
||||
|
||||
# When trying to prevent others from using symbol_get/put we need to exclude a
|
||||
# number of in-kernel modules that use those functions.
|
||||
SYMBOL_GET_USERS=" \
|
||||
-d CAIF \
|
||||
-d DELL_LAPTOP \
|
||||
-d DRM_I915 \
|
||||
-d DVB_USB \
|
||||
-d DVB_USB_V2 \
|
||||
-d FSL_ENETC \
|
||||
-d FSL_ENETC_VF \
|
||||
-d INTEL_IPS \
|
||||
-d KVM \
|
||||
-d MEDIA_DIGITAL_TV_SUPPORT \
|
||||
-d MEDIA_PCI_SUPPORT \
|
||||
-d MEDIA_RADIO_SUPPORT \
|
||||
-d MTD_CFI \
|
||||
-d MTD_GEN_PROBE \
|
||||
-d MTD_HYPERBUS \
|
||||
-d MTD_JEDECPROBE \
|
||||
-d MTD_TS5500 \
|
||||
-d NFS_V4 \
|
||||
-d SAMPLE_HW_BREAKPOINT \
|
||||
-d VFIO \
|
||||
-d VIDEO_CX231XX \
|
||||
-d VIDEO_EM28XX \
|
||||
-d VIDEO_GO7007 \
|
||||
-d VIDEO_PVRUSB2 \
|
||||
-d VIDEO_TM6000 \
|
||||
-d VIDEO_USBVISION \
|
||||
"
|
||||
|
||||
POST_DEFCONFIG_CMDS="update_config"
|
||||
function update_config() {
|
||||
${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
|
||||
@ -38,7 +7,6 @@ function update_config() {
|
||||
-d CPU_BIG_ENDIAN \
|
||||
-d STM \
|
||||
-d TEST_MEMCAT_P \
|
||||
${SYMBOL_GET_USERS} \
|
||||
-e UNWINDER_FRAME_POINTER \
|
||||
|
||||
(cd ${OUT_DIR} && \
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
menuconfig AGP
|
||||
tristate "/dev/agpgart (AGP Support)"
|
||||
bool "/dev/agpgart (AGP Support)"
|
||||
depends on ALPHA || IA64 || PARISC || PPC || X86
|
||||
depends on PCI
|
||||
---help---
|
||||
|
@ -1777,8 +1777,9 @@ ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)
|
||||
LSB_ITEM_SIZE);
|
||||
break;
|
||||
default:
|
||||
kfree(hmac_buf);
|
||||
ret = -EINVAL;
|
||||
goto e_ctx;
|
||||
goto e_data;
|
||||
}
|
||||
|
||||
memset(&hmac_cmd, 0, sizeof(hmac_cmd));
|
||||
|
@ -6,7 +6,7 @@
|
||||
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
|
||||
#
|
||||
menuconfig DRM
|
||||
tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
|
||||
bool "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
|
||||
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
|
||||
select DRM_PANEL_ORIENTATION_QUIRKS
|
||||
select HDMI
|
||||
@ -55,7 +55,7 @@ config DRM_DEBUG_MM
|
||||
If in doubt, say "N".
|
||||
|
||||
config DRM_DEBUG_SELFTEST
|
||||
tristate "kselftests for DRM"
|
||||
bool "kselftests for DRM"
|
||||
depends on DRM
|
||||
depends on DEBUG_KERNEL
|
||||
select PRIME_NUMBERS
|
||||
|
@ -667,9 +667,10 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||
return n ? -EFAULT : 0;
|
||||
}
|
||||
case AMDGPU_INFO_DEV_INFO: {
|
||||
struct drm_amdgpu_info_device dev_info = {};
|
||||
struct drm_amdgpu_info_device dev_info;
|
||||
uint64_t vm_size;
|
||||
|
||||
memset(&dev_info, 0, sizeof(dev_info));
|
||||
dev_info.device_id = dev->pdev->device;
|
||||
dev_info.chip_rev = adev->rev_id;
|
||||
dev_info.external_rev = adev->external_rev_id;
|
||||
|
@ -691,7 +691,8 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
|
||||
tmp_str++;
|
||||
while (isspace(*++tmp_str));
|
||||
|
||||
while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
|
||||
while (tmp_str[0]) {
|
||||
sub_str = strsep(&tmp_str, delimiter);
|
||||
ret = kstrtol(sub_str, 0, ¶meter[parameter_size]);
|
||||
if (ret)
|
||||
return -EINVAL;
|
||||
@ -882,7 +883,8 @@ static ssize_t amdgpu_read_mask(const char *buf, size_t count, uint32_t *mask)
|
||||
memcpy(buf_cpy, buf, bytes);
|
||||
buf_cpy[bytes] = '\0';
|
||||
tmp = buf_cpy;
|
||||
while ((sub_str = strsep(&tmp, delimiter)) != NULL) {
|
||||
while (tmp[0]) {
|
||||
sub_str = strsep(&tmp, delimiter);
|
||||
if (strlen(sub_str)) {
|
||||
ret = kstrtol(sub_str, 0, &level);
|
||||
if (ret)
|
||||
@ -1298,7 +1300,8 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev,
|
||||
i++;
|
||||
memcpy(buf_cpy, buf, count-i);
|
||||
tmp_str = buf_cpy;
|
||||
while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
|
||||
while (tmp_str[0]) {
|
||||
sub_str = strsep(&tmp_str, delimiter);
|
||||
ret = kstrtol(sub_str, 0, ¶meter[parameter_size]);
|
||||
if (ret) {
|
||||
count = -EINVAL;
|
||||
|
@ -7464,20 +7464,38 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
|
||||
* the same resource. If we have a new DC context as part of
|
||||
* the DM atomic state from validation we need to free it and
|
||||
* retain the existing one instead.
|
||||
*
|
||||
* Furthermore, since the DM atomic state only contains the DC
|
||||
* context and can safely be annulled, we can free the state
|
||||
* and clear the associated private object now to free
|
||||
* some memory and avoid a possible use-after-free later.
|
||||
*/
|
||||
struct dm_atomic_state *new_dm_state, *old_dm_state;
|
||||
|
||||
new_dm_state = dm_atomic_get_new_state(state);
|
||||
old_dm_state = dm_atomic_get_old_state(state);
|
||||
for (i = 0; i < state->num_private_objs; i++) {
|
||||
struct drm_private_obj *obj = state->private_objs[i].ptr;
|
||||
|
||||
if (new_dm_state && old_dm_state) {
|
||||
if (new_dm_state->context)
|
||||
dc_release_state(new_dm_state->context);
|
||||
if (obj->funcs == adev->dm.atomic_obj.funcs) {
|
||||
int j = state->num_private_objs-1;
|
||||
|
||||
new_dm_state->context = old_dm_state->context;
|
||||
dm_atomic_destroy_state(obj,
|
||||
state->private_objs[i].state);
|
||||
|
||||
if (old_dm_state->context)
|
||||
dc_retain_state(old_dm_state->context);
|
||||
/* If i is not at the end of the array then the
|
||||
* last element needs to be moved to where i was
|
||||
* before the array can safely be truncated.
|
||||
*/
|
||||
if (i != j)
|
||||
state->private_objs[i] =
|
||||
state->private_objs[j];
|
||||
|
||||
state->private_objs[j].ptr = NULL;
|
||||
state->private_objs[j].state = NULL;
|
||||
state->private_objs[j].old_state = NULL;
|
||||
state->private_objs[j].new_state = NULL;
|
||||
|
||||
state->num_private_objs = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -872,9 +872,6 @@ drm_gem_flink_ioctl(struct drm_device *dev, void *data,
|
||||
* @file_priv: drm file-private structure
|
||||
*
|
||||
* Open an object using the global name, returning a handle and the size.
|
||||
*
|
||||
* This handle (of course) holds a reference to the object, so the object
|
||||
* will not go away until the handle is deleted.
|
||||
*/
|
||||
int
|
||||
drm_gem_open_ioctl(struct drm_device *dev, void *data,
|
||||
@ -899,14 +896,15 @@ drm_gem_open_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
/* drm_gem_handle_create_tail unlocks dev->object_name_lock. */
|
||||
ret = drm_gem_handle_create_tail(file_priv, obj, &handle);
|
||||
drm_gem_object_put_unlocked(obj);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err;
|
||||
|
||||
args->handle = handle;
|
||||
args->size = obj->size;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
drm_gem_object_put_unlocked(obj);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -937,7 +937,7 @@ static int mipi_dbi_spi1_transfer(struct mipi_dbi *dbi, int dc,
|
||||
}
|
||||
}
|
||||
|
||||
tr.len = chunk;
|
||||
tr.len = chunk * 2;
|
||||
len -= chunk;
|
||||
|
||||
ret = spi_sync(spi, &m);
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DRM_I915
|
||||
tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
|
||||
bool "Intel 8xx/9xx/G3x/G4x/HD Graphics"
|
||||
depends on DRM
|
||||
depends on X86 && PCI
|
||||
select INTEL_GTT
|
||||
|
@ -7,7 +7,7 @@ menu "I2C Algorithms"
|
||||
visible if !I2C_HELPER_AUTO
|
||||
|
||||
config I2C_ALGOBIT
|
||||
tristate "I2C bit-banging interfaces"
|
||||
bool "I2C bit-banging interfaces"
|
||||
|
||||
config I2C_ALGOPCF
|
||||
tristate "I2C PCF 8584 interfaces"
|
||||
|
@ -377,10 +377,8 @@ static void cdns_i2c_mrecv(struct cdns_i2c *id)
|
||||
* Check for the message size against FIFO depth and set the
|
||||
* 'hold bus' bit if it is greater than FIFO depth.
|
||||
*/
|
||||
if ((id->recv_count > CDNS_I2C_FIFO_DEPTH) || id->bus_hold_flag)
|
||||
if (id->recv_count > CDNS_I2C_FIFO_DEPTH)
|
||||
ctrl_reg |= CDNS_I2C_CR_HOLD;
|
||||
else
|
||||
ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD;
|
||||
|
||||
cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET);
|
||||
|
||||
@ -437,11 +435,8 @@ static void cdns_i2c_msend(struct cdns_i2c *id)
|
||||
* Check for the message size against FIFO depth and set the
|
||||
* 'hold bus' bit if it is greater than FIFO depth.
|
||||
*/
|
||||
if ((id->send_count > CDNS_I2C_FIFO_DEPTH) || id->bus_hold_flag)
|
||||
if (id->send_count > CDNS_I2C_FIFO_DEPTH)
|
||||
ctrl_reg |= CDNS_I2C_CR_HOLD;
|
||||
else
|
||||
ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD;
|
||||
|
||||
cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET);
|
||||
|
||||
/* Clear the interrupts in interrupt status register. */
|
||||
|
@ -898,8 +898,6 @@ static void rvt_init_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp,
|
||||
qp->s_tail_ack_queue = 0;
|
||||
qp->s_acked_ack_queue = 0;
|
||||
qp->s_num_rd_atomic = 0;
|
||||
if (qp->r_rq.kwq)
|
||||
qp->r_rq.kwq->count = qp->r_rq.size;
|
||||
qp->r_sge.num_sge = 0;
|
||||
atomic_set(&qp->s_reserved_used, 0);
|
||||
}
|
||||
@ -2352,31 +2350,6 @@ static int init_sge(struct rvt_qp *qp, struct rvt_rwqe *wqe)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* get_count - count numbers of request work queue entries
|
||||
* in circular buffer
|
||||
* @rq: data structure for request queue entry
|
||||
* @tail: tail indices of the circular buffer
|
||||
* @head: head indices of the circular buffer
|
||||
*
|
||||
* Return - total number of entries in the circular buffer
|
||||
*/
|
||||
static u32 get_count(struct rvt_rq *rq, u32 tail, u32 head)
|
||||
{
|
||||
u32 count;
|
||||
|
||||
count = head;
|
||||
|
||||
if (count >= rq->size)
|
||||
count = 0;
|
||||
if (count < tail)
|
||||
count += rq->size - tail;
|
||||
else
|
||||
count -= tail;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* get_rvt_head - get head indices of the circular buffer
|
||||
* @rq: data structure for request queue entry
|
||||
@ -2451,7 +2424,7 @@ int rvt_get_rwqe(struct rvt_qp *qp, bool wr_id_only)
|
||||
|
||||
if (kwq->count < RVT_RWQ_COUNT_THRESHOLD) {
|
||||
head = get_rvt_head(rq, ip);
|
||||
kwq->count = get_count(rq, tail, head);
|
||||
kwq->count = rvt_get_rq_count(rq, head, tail);
|
||||
}
|
||||
if (unlikely(kwq->count == 0)) {
|
||||
ret = 0;
|
||||
@ -2486,7 +2459,9 @@ int rvt_get_rwqe(struct rvt_qp *qp, bool wr_id_only)
|
||||
* the number of remaining WQEs.
|
||||
*/
|
||||
if (kwq->count < srq->limit) {
|
||||
kwq->count = get_count(rq, tail, get_rvt_head(rq, ip));
|
||||
kwq->count =
|
||||
rvt_get_rq_count(rq,
|
||||
get_rvt_head(rq, ip), tail);
|
||||
if (kwq->count < srq->limit) {
|
||||
struct ib_event ev;
|
||||
|
||||
|
@ -127,9 +127,7 @@ __be32 rvt_compute_aeth(struct rvt_qp *qp)
|
||||
* not atomic, which is OK, since the fuzziness is
|
||||
* resolved as further ACKs go out.
|
||||
*/
|
||||
credits = head - tail;
|
||||
if ((int)credits < 0)
|
||||
credits += qp->r_rq.size;
|
||||
credits = rvt_get_rq_count(&qp->r_rq, head, tail);
|
||||
}
|
||||
/*
|
||||
* Binary search the credit table to find the code to
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_B2C2_FLEXCOP
|
||||
tristate
|
||||
bool
|
||||
depends on DVB_CORE && I2C
|
||||
depends on DVB_B2C2_FLEXCOP_PCI || DVB_B2C2_FLEXCOP_USB
|
||||
default y
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_BT848
|
||||
tristate "BT848 Video For Linux"
|
||||
bool "BT848 Video For Linux"
|
||||
depends on VIDEO_DEV && PCI && I2C && VIDEO_V4L2
|
||||
select I2C_ALGOBIT
|
||||
select VIDEOBUF_DMA_SG
|
||||
@ -23,7 +23,7 @@ config VIDEO_BT848
|
||||
module will be called bttv.
|
||||
|
||||
config DVB_BT8XX
|
||||
tristate "DVB/ATSC Support for bt878 based TV cards"
|
||||
bool "DVB/ATSC Support for bt878 based TV cards"
|
||||
depends on DVB_CORE && PCI && I2C && VIDEO_BT848
|
||||
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_SP887X if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_CX18
|
||||
tristate "Conexant cx23418 MPEG encoder support"
|
||||
bool "Conexant cx23418 MPEG encoder support"
|
||||
depends on VIDEO_V4L2 && DVB_CORE && PCI && I2C
|
||||
select I2C_ALGOBIT
|
||||
select VIDEOBUF_VMALLOC
|
||||
|
@ -2,6 +2,7 @@
|
||||
config VIDEO_CX23885
|
||||
tristate "Conexant cx23885 (2388x successor) support"
|
||||
depends on DVB_CORE && VIDEO_DEV && PCI && I2C && INPUT && SND
|
||||
depends on BROKEN
|
||||
select SND_PCM
|
||||
select I2C_ALGOBIT
|
||||
select VIDEO_TUNER
|
||||
|
@ -1167,8 +1167,11 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
|
||||
return -ENOMEM;
|
||||
|
||||
spin_lock_init(&state->rx_kfifo_lock);
|
||||
if (kfifo_alloc(&state->rx_kfifo, CX23888_IR_RX_KFIFO_SIZE, GFP_KERNEL))
|
||||
if (kfifo_alloc(&state->rx_kfifo, CX23888_IR_RX_KFIFO_SIZE,
|
||||
GFP_KERNEL)) {
|
||||
kfree(state);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
state->dev = dev;
|
||||
sd = &state->sd;
|
||||
|
@ -31,7 +31,7 @@ config VIDEO_CX88_ALSA
|
||||
module will be called cx88-alsa.
|
||||
|
||||
config VIDEO_CX88_BLACKBIRD
|
||||
tristate "Blackbird MPEG encoder support (cx2388x + cx23416)"
|
||||
bool "Blackbird MPEG encoder support (cx2388x + cx23416)"
|
||||
depends on VIDEO_CX88
|
||||
select VIDEO_CX2341X
|
||||
help
|
||||
@ -43,7 +43,7 @@ config VIDEO_CX88_BLACKBIRD
|
||||
module will be called cx88-blackbird.
|
||||
|
||||
config VIDEO_CX88_DVB
|
||||
tristate "DVB/ATSC Support for cx2388x based TV cards"
|
||||
bool "DVB/ATSC Support for cx2388x based TV cards"
|
||||
depends on VIDEO_CX88 && DVB_CORE
|
||||
select VIDEOBUF2_DVB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_DDBRIDGE
|
||||
tristate "Digital Devices bridge support"
|
||||
bool "Digital Devices bridge support"
|
||||
depends on DVB_CORE && PCI && I2C
|
||||
select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV6110x if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_DM1105
|
||||
tristate "SDMC DM1105 based PCI cards"
|
||||
bool "SDMC DM1105 based PCI cards"
|
||||
depends on DVB_CORE && PCI && I2C && I2C_ALGOBIT
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config MANTIS_CORE
|
||||
tristate "Mantis/Hopper PCI bridge based devices"
|
||||
bool "Mantis/Hopper PCI bridge based devices"
|
||||
depends on PCI && I2C && INPUT && RC_CORE
|
||||
|
||||
help
|
||||
@ -9,7 +9,7 @@ config MANTIS_CORE
|
||||
Say Y if you own such a device and want to use it.
|
||||
|
||||
config DVB_MANTIS
|
||||
tristate "MANTIS based cards"
|
||||
bool "MANTIS based cards"
|
||||
depends on MANTIS_CORE && DVB_CORE && PCI && I2C
|
||||
select DVB_MB86A16 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -28,7 +28,7 @@ config DVB_MANTIS
|
||||
If unsure say N.
|
||||
|
||||
config DVB_HOPPER
|
||||
tristate "HOPPER based cards"
|
||||
bool "HOPPER based cards"
|
||||
depends on MANTIS_CORE && DVB_CORE && PCI && I2C
|
||||
select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_PLL
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_NETUP_UNIDVB
|
||||
tristate "NetUP Universal DVB card support"
|
||||
bool "NetUP Universal DVB card support"
|
||||
depends on DVB_CORE && VIDEO_DEV && PCI && I2C && SPI_MASTER
|
||||
select VIDEOBUF2_DVB
|
||||
select VIDEOBUF2_VMALLOC
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_NGENE
|
||||
tristate "Micronas nGene support"
|
||||
bool "Micronas nGene support"
|
||||
depends on DVB_CORE && PCI && I2C
|
||||
select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV6110x if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -30,13 +30,13 @@ config VIDEO_SAA7134_RC
|
||||
bool "Philips SAA7134 Remote Controller support"
|
||||
depends on RC_CORE
|
||||
depends on VIDEO_SAA7134
|
||||
depends on !(RC_CORE=m && VIDEO_SAA7134=y)
|
||||
#depends on !(RC_CORE=m && VIDEO_SAA7134=y)
|
||||
default y
|
||||
help
|
||||
Enables Remote Controller support on saa7134 driver.
|
||||
|
||||
config VIDEO_SAA7134_DVB
|
||||
tristate "DVB/ATSC Support for saa7134 based TV cards"
|
||||
bool "DVB/ATSC Support for saa7134 based TV cards"
|
||||
depends on VIDEO_SAA7134 && DVB_CORE
|
||||
select VIDEOBUF2_DVB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_SAA7164
|
||||
tristate "NXP SAA7164 support"
|
||||
bool "NXP SAA7164 support"
|
||||
depends on DVB_CORE && VIDEO_DEV && PCI && I2C
|
||||
select I2C_ALGOBIT
|
||||
select FW_LOADER
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_SMIPCIE
|
||||
tristate "SMI PCIe DVBSky cards"
|
||||
bool "SMI PCIe DVBSky cards"
|
||||
depends on DVB_CORE && PCI && I2C
|
||||
select I2C_ALGOBIT
|
||||
select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -5,7 +5,7 @@ config DVB_AV7110_IR
|
||||
default DVB_AV7110
|
||||
|
||||
config DVB_AV7110
|
||||
tristate "AV7110 cards"
|
||||
bool "AV7110 cards"
|
||||
depends on DVB_CORE && PCI && I2C
|
||||
select TTPCI_EEPROM
|
||||
select VIDEO_SAA7146_VV
|
||||
@ -40,7 +40,7 @@ config DVB_AV7110
|
||||
config DVB_AV7110_OSD
|
||||
bool "AV7110 OSD support"
|
||||
depends on DVB_AV7110
|
||||
default y if DVB_AV7110=y || DVB_AV7110=m
|
||||
default y if DVB_AV7110=y
|
||||
help
|
||||
The AV7110 firmware provides some code to generate an OnScreenDisplay
|
||||
on the video output. This is kind of nonstandard and not guaranteed to
|
||||
@ -52,7 +52,7 @@ config DVB_AV7110_OSD
|
||||
All other people say N.
|
||||
|
||||
config DVB_BUDGET_CORE
|
||||
tristate "SAA7146 DVB cards (aka Budget, Nova-PCI)"
|
||||
bool "SAA7146 DVB cards (aka Budget, Nova-PCI)"
|
||||
depends on DVB_CORE && PCI && I2C
|
||||
select VIDEO_SAA7146
|
||||
select TTPCI_EEPROM
|
||||
@ -62,7 +62,7 @@ config DVB_BUDGET_CORE
|
||||
MPEG2 decoder.
|
||||
|
||||
config DVB_BUDGET
|
||||
tristate "Budget cards"
|
||||
bool "Budget cards"
|
||||
depends on DVB_BUDGET_CORE && I2C
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_VES1X93 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -88,7 +88,7 @@ config DVB_BUDGET
|
||||
module will be called budget.
|
||||
|
||||
config DVB_BUDGET_CI
|
||||
tristate "Budget cards with onboard CI connector"
|
||||
bool "Budget cards with onboard CI connector"
|
||||
depends on DVB_BUDGET_CORE && I2C
|
||||
select DVB_STV0297 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -115,7 +115,7 @@ config DVB_BUDGET_CI
|
||||
module will be called budget-ci.
|
||||
|
||||
config DVB_BUDGET_AV
|
||||
tristate "Budget cards with analog video inputs"
|
||||
bool "Budget cards with analog video inputs"
|
||||
depends on DVB_BUDGET_CORE && I2C
|
||||
select VIDEO_SAA7146_VV
|
||||
depends on VIDEO_DEV # dependencies of VIDEO_SAA7146_VV
|
||||
@ -138,7 +138,7 @@ config DVB_BUDGET_AV
|
||||
module will be called budget-av.
|
||||
|
||||
config DVB_BUDGET_PATCH
|
||||
tristate "AV7110 cards with Budget Patch"
|
||||
bool "AV7110 cards with Budget Patch"
|
||||
depends on DVB_BUDGET_CORE && I2C
|
||||
depends on DVB_AV7110
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_C8SECTPFE
|
||||
tristate "STMicroelectronics C8SECTPFE DVB support"
|
||||
bool "STMicroelectronics C8SECTPFE DVB support"
|
||||
depends on PINCTRL && DVB_CORE && I2C
|
||||
depends on ARCH_STI || ARCH_MULTIPLATFORM || COMPILE_TEST
|
||||
select FW_LOADER
|
||||
|
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
menuconfig RC_CORE
|
||||
tristate "Remote Controller support"
|
||||
bool "Remote Controller support"
|
||||
depends on INPUT
|
||||
help
|
||||
Enable support for Remote Controllers on Linux. This is
|
||||
|
@ -21,7 +21,7 @@ if SPI
|
||||
menu "Media SPI Adapters"
|
||||
|
||||
config CXD2880_SPI_DRV
|
||||
tristate "Sony CXD2880 SPI support"
|
||||
bool "Sony CXD2880 SPI support"
|
||||
depends on DVB_CORE && SPI
|
||||
default m if !MEDIA_SUBDRV_AUTOSELECT
|
||||
help
|
||||
|
@ -39,7 +39,7 @@ config MEDIA_TUNER_TDA18250
|
||||
Say Y here to include support for TDA18250 tuner.
|
||||
|
||||
config MEDIA_TUNER_TDA8290
|
||||
tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo"
|
||||
bool "TDA 8290/8295 + 8275(a)/18271 tuner combo"
|
||||
depends on MEDIA_SUPPORT && I2C
|
||||
select MEDIA_TUNER_TDA827X
|
||||
select MEDIA_TUNER_TDA18271
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_AS102
|
||||
tristate "Abilis AS102 DVB receiver"
|
||||
bool "Abilis AS102 DVB receiver"
|
||||
depends on DVB_CORE && USB && I2C && INPUT
|
||||
select FW_LOADER
|
||||
help
|
||||
|
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
config VIDEO_AU0828
|
||||
tristate "Auvitek AU0828 support"
|
||||
bool "Auvitek AU0828 support"
|
||||
depends on I2C && INPUT && DVB_CORE && USB && VIDEO_V4L2
|
||||
select MEDIA_CONTROLLER
|
||||
select MEDIA_CONTROLLER_DVB
|
||||
@ -35,7 +35,7 @@ config VIDEO_AU0828_V4L2
|
||||
config VIDEO_AU0828_RC
|
||||
bool "AU0828 Remote Controller support"
|
||||
depends on RC_CORE
|
||||
depends on !(RC_CORE=m && VIDEO_AU0828=y)
|
||||
#depends on !(RC_CORE=m && VIDEO_AU0828=y)
|
||||
depends on VIDEO_AU0828
|
||||
help
|
||||
Enables Remote Controller support on au0828 driver.
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_CX231XX
|
||||
tristate "Conexant cx231xx USB video capture support"
|
||||
bool "Conexant cx231xx USB video capture support"
|
||||
depends on VIDEO_DEV && I2C && I2C_MUX
|
||||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
@ -39,7 +39,7 @@ config VIDEO_CX231XX_ALSA
|
||||
module will be called cx231xx-alsa
|
||||
|
||||
config VIDEO_CX231XX_DVB
|
||||
tristate "DVB/ATSC Support for Cx231xx based TV cards"
|
||||
bool "DVB/ATSC Support for Cx231xx based TV cards"
|
||||
depends on VIDEO_CX231XX && DVB_CORE
|
||||
select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_USB_V2
|
||||
tristate "Support for various USB DVB devices v2"
|
||||
bool "Support for various USB DVB devices v2"
|
||||
depends on DVB_CORE && USB && I2C && (RC_CORE || RC_CORE=n)
|
||||
help
|
||||
By enabling this you will be able to choose the various supported
|
||||
@ -15,7 +15,7 @@ config DVB_USB_V2
|
||||
Say Y if you own a USB DVB device.
|
||||
|
||||
config DVB_USB_AF9015
|
||||
tristate "Afatech AF9015 DVB-T USB2.0 support"
|
||||
bool "Afatech AF9015 DVB-T USB2.0 support"
|
||||
depends on DVB_USB_V2 && I2C_MUX
|
||||
select REGMAP
|
||||
select DVB_AF9013
|
||||
@ -31,7 +31,7 @@ config DVB_USB_AF9015
|
||||
Say Y here to support the Afatech AF9015 based DVB-T USB2.0 receiver
|
||||
|
||||
config DVB_USB_AF9035
|
||||
tristate "Afatech AF9035 DVB-T USB2.0 support"
|
||||
bool "Afatech AF9035 DVB-T USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_AF9033
|
||||
select MEDIA_TUNER_TUA9001 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -44,7 +44,7 @@ config DVB_USB_AF9035
|
||||
Say Y here to support the Afatech AF9035 based DVB USB receiver.
|
||||
|
||||
config DVB_USB_ANYSEE
|
||||
tristate "Anysee DVB-T/C USB2.0 support"
|
||||
bool "Anysee DVB-T/C USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -61,7 +61,7 @@ config DVB_USB_ANYSEE
|
||||
Anysee E30 C Plus DVB USB2.0 receiver.
|
||||
|
||||
config DVB_USB_AU6610
|
||||
tristate "Alcor Micro AU6610 USB2.0 support"
|
||||
bool "Alcor Micro AU6610 USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -69,7 +69,7 @@ config DVB_USB_AU6610
|
||||
Say Y here to support the Sigmatek DVB-110 DVB-T USB2.0 receiver.
|
||||
|
||||
config DVB_USB_AZ6007
|
||||
tristate "AzureWave 6007 and clones DVB-T/C USB2.0 support"
|
||||
bool "AzureWave 6007 and clones DVB-T/C USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select CYPRESS_FIRMWARE
|
||||
select DVB_DRXK if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -78,7 +78,7 @@ config DVB_USB_AZ6007
|
||||
Say Y here to support the AZ6007 receivers like Terratec H7.
|
||||
|
||||
config DVB_USB_CE6230
|
||||
tristate "Intel CE6230 DVB-T USB2.0 support"
|
||||
bool "Intel CE6230 DVB-T USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_ZL10353
|
||||
select MEDIA_TUNER_MXL5005S if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -86,7 +86,7 @@ config DVB_USB_CE6230
|
||||
Say Y here to support the Intel CE6230 DVB-T USB2.0 receiver
|
||||
|
||||
config DVB_USB_EC168
|
||||
tristate "E3C EC168 DVB-T USB2.0 support"
|
||||
bool "E3C EC168 DVB-T USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_EC100
|
||||
select MEDIA_TUNER_MXL5005S if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -94,7 +94,7 @@ config DVB_USB_EC168
|
||||
Say Y here to support the E3C EC168 DVB-T USB2.0 receiver.
|
||||
|
||||
config DVB_USB_GL861
|
||||
tristate "Genesys Logic GL861 USB2.0 support"
|
||||
bool "Genesys Logic GL861 USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TC90522 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -106,7 +106,7 @@ config DVB_USB_GL861
|
||||
with USB ID 0x7a69:0001.
|
||||
|
||||
config DVB_USB_LME2510
|
||||
tristate "LME DM04/QQBOX DVB-S USB2.0 support"
|
||||
bool "LME DM04/QQBOX DVB-S USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
depends on RC_CORE
|
||||
select DVB_TDA10086 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -121,7 +121,7 @@ config DVB_USB_LME2510
|
||||
Say Y here to support the LME DM04/QQBOX DVB-S USB2.0
|
||||
|
||||
config DVB_USB_MXL111SF
|
||||
tristate "MxL111SF DTV USB2.0 support"
|
||||
bool "MxL111SF DTV USB2.0 support"
|
||||
depends on DVB_USB_V2
|
||||
select DVB_LGDT3305 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_LG2160 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -130,7 +130,7 @@ config DVB_USB_MXL111SF
|
||||
Say Y here to support the MxL111SF USB2.0 DTV receiver.
|
||||
|
||||
config DVB_USB_RTL28XXU
|
||||
tristate "Realtek RTL28xxU DVB USB support"
|
||||
bool "Realtek RTL28xxU DVB USB support"
|
||||
depends on DVB_USB_V2 && I2C_MUX
|
||||
select DVB_MN88472 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_MN88473 if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_USB
|
||||
tristate "Support for various USB DVB devices"
|
||||
bool "Support for various USB DVB devices"
|
||||
depends on DVB_CORE && USB && I2C && RC_CORE
|
||||
help
|
||||
By enabling this you will be able to choose the various supported
|
||||
@ -41,7 +41,7 @@ config DVB_USB_A800
|
||||
Say Y here to support the AVerMedia AverTV DVB-T USB 2.0 (A800) receiver.
|
||||
|
||||
config DVB_USB_DIBUSB_MB
|
||||
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list)"
|
||||
bool "DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list)"
|
||||
depends on DVB_USB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_DIB3000MB
|
||||
@ -64,7 +64,7 @@ config DVB_USB_DIBUSB_MB_FAULTY
|
||||
Support for faulty USB IDs due to an invalid EEPROM on some Artec devices.
|
||||
|
||||
config DVB_USB_DIBUSB_MC
|
||||
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)"
|
||||
bool "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)"
|
||||
depends on DVB_USB
|
||||
select DVB_USB_DIB3000MC
|
||||
select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -79,7 +79,7 @@ config DVB_USB_DIBUSB_MC
|
||||
a module.
|
||||
|
||||
config DVB_USB_DIB0700
|
||||
tristate "DiBcom DiB0700 USB DVB devices (see help for supported devices)"
|
||||
bool "DiBcom DiB0700 USB DVB devices (see help for supported devices)"
|
||||
depends on DVB_USB
|
||||
select DVB_DIB7000P if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_DIB7000M if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -110,7 +110,7 @@ config DVB_USB_DIB0700
|
||||
a module.
|
||||
|
||||
config DVB_USB_UMT_010
|
||||
tristate "HanfTek UMT-010 DVB-T USB2.0 support"
|
||||
bool "HanfTek UMT-010 DVB-T USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_USB_DIB3000MC
|
||||
@ -120,7 +120,7 @@ config DVB_USB_UMT_010
|
||||
Say Y here to support the HanfTek UMT-010 USB2.0 stick-sized DVB-T receiver.
|
||||
|
||||
config DVB_USB_CXUSB
|
||||
tristate "Conexant USB2.0 hybrid reference design support"
|
||||
bool "Conexant USB2.0 hybrid reference design support"
|
||||
depends on DVB_USB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_CX22702 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -158,7 +158,7 @@ config DVB_USB_CXUSB_ANALOG
|
||||
Currently this mode is supported only on a Medion MD95700 device.
|
||||
|
||||
config DVB_USB_M920X
|
||||
tristate "Uli m920x DVB-T USB2.0 support"
|
||||
bool "Uli m920x DVB-T USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TDA1004X if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -172,7 +172,7 @@ config DVB_USB_M920X
|
||||
Firmware required.
|
||||
|
||||
config DVB_USB_DIGITV
|
||||
tristate "Nebula Electronics uDigiTV DVB-T USB2.0 support"
|
||||
bool "Nebula Electronics uDigiTV DVB-T USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_NXT6000 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -207,7 +207,7 @@ config DVB_USB_VP702X
|
||||
DVB-S USB2.0 receivers.
|
||||
|
||||
config DVB_USB_GP8PSK
|
||||
tristate "GENPIX 8PSK->USB module support"
|
||||
bool "GENPIX 8PSK->USB module support"
|
||||
depends on DVB_USB
|
||||
help
|
||||
Say Y here to support the
|
||||
@ -225,7 +225,7 @@ config DVB_USB_NOVA_T_USB2
|
||||
Say Y here to support the Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 receiver.
|
||||
|
||||
config DVB_USB_TTUSB2
|
||||
tristate "Pinnacle 400e DVB-S USB2.0 support"
|
||||
bool "Pinnacle 400e DVB-S USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_TDA10086 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -250,7 +250,7 @@ config DVB_USB_DTT200U
|
||||
The WT-220U and its clones are pen-sized.
|
||||
|
||||
config DVB_USB_OPERA1
|
||||
tristate "Opera1 DVB-S USB2.0 receiver"
|
||||
bool "Opera1 DVB-S USB2.0 receiver"
|
||||
depends on DVB_USB
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -258,7 +258,7 @@ config DVB_USB_OPERA1
|
||||
Say Y here to support the Opera DVB-S USB2.0 receiver.
|
||||
|
||||
config DVB_USB_AF9005
|
||||
tristate "Afatech AF9005 DVB-T USB1.1 support"
|
||||
bool "Afatech AF9005 DVB-T USB1.1 support"
|
||||
depends on DVB_USB
|
||||
select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -274,7 +274,7 @@ config DVB_USB_AF9005_REMOTE
|
||||
Afatech AF9005 based receiver.
|
||||
|
||||
config DVB_USB_PCTV452E
|
||||
tristate "Pinnacle PCTV HDTV Pro USB device/TT Connect S2-3600"
|
||||
bool "Pinnacle PCTV HDTV Pro USB device/TT Connect S2-3600"
|
||||
depends on DVB_USB
|
||||
select TTPCI_EEPROM
|
||||
select DVB_LNBP22 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -287,7 +287,7 @@ config DVB_USB_PCTV452E
|
||||
Say Y if you own such a device and want to use it.
|
||||
|
||||
config DVB_USB_DW2102
|
||||
tristate "DvbWorld & TeVii DVB-S/S2 USB2.0 support"
|
||||
bool "DvbWorld & TeVii DVB-S/S2 USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -318,7 +318,7 @@ config DVB_USB_CINERGY_T2
|
||||
Say Y if you own such a device and want to use it.
|
||||
|
||||
config DVB_USB_DTV5100
|
||||
tristate "AME DTV-5100 USB2.0 DVB-T support"
|
||||
bool "AME DTV-5100 USB2.0 DVB-T support"
|
||||
depends on DVB_USB
|
||||
select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -334,7 +334,7 @@ config DVB_USB_AZ6027
|
||||
Say Y here to support the AZ6027 device
|
||||
|
||||
config DVB_USB_TECHNISAT_USB2
|
||||
tristate "Technisat DVB-S/S2 USB2.0 support"
|
||||
bool "Technisat DVB-S/S2 USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_STV090x if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_STV6110x if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_EM28XX
|
||||
tristate "Empia EM28xx USB devices support"
|
||||
bool "Empia EM28xx USB devices support"
|
||||
depends on VIDEO_DEV && I2C
|
||||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
@ -36,7 +36,7 @@ config VIDEO_EM28XX_ALSA
|
||||
module will be called em28xx-alsa
|
||||
|
||||
config VIDEO_EM28XX_DVB
|
||||
tristate "DVB/ATSC Support for em28xx based TV cards"
|
||||
bool "DVB/ATSC Support for em28xx based TV cards"
|
||||
depends on VIDEO_EM28XX && DVB_CORE
|
||||
select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_LGDT3305 if MEDIA_SUBDRV_AUTOSELECT
|
||||
@ -75,7 +75,7 @@ config VIDEO_EM28XX_RC
|
||||
tristate "EM28XX Remote Controller support"
|
||||
depends on RC_CORE
|
||||
depends on VIDEO_EM28XX
|
||||
depends on !(RC_CORE=m && VIDEO_EM28XX=y)
|
||||
#depends on !(RC_CORE=m && VIDEO_EM28XX=y)
|
||||
default VIDEO_EM28XX
|
||||
help
|
||||
Enables Remote Controller support on em28xx driver.
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config VIDEO_PVRUSB2
|
||||
tristate "Hauppauge WinTV-PVR USB2 support"
|
||||
bool "Hauppauge WinTV-PVR USB2 support"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
|
@ -27,7 +27,7 @@ config VIDEO_TM6000_ALSA
|
||||
module will be called tm6000-alsa.
|
||||
|
||||
config VIDEO_TM6000_DVB
|
||||
tristate "DVB Support for tm6000 based TV cards"
|
||||
bool "DVB Support for tm6000 based TV cards"
|
||||
depends on VIDEO_TM6000 && DVB_CORE && USB
|
||||
select DVB_ZL10353
|
||||
help
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config DVB_TTUSB_BUDGET
|
||||
tristate "Technotrend/Hauppauge Nova-USB devices"
|
||||
bool "Technotrend/Hauppauge Nova-USB devices"
|
||||
depends on DVB_CORE && USB && I2C && PCI
|
||||
select DVB_CX22700 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TDA1004X if MEDIA_SUBDRV_AUTOSELECT
|
||||
|
@ -3,7 +3,7 @@ menu "RAM/ROM/Flash chip drivers"
|
||||
depends on MTD!=n
|
||||
|
||||
config MTD_CFI
|
||||
tristate "Detect flash chips by Common Flash Interface (CFI) probe"
|
||||
bool "Detect flash chips by Common Flash Interface (CFI) probe"
|
||||
select MTD_GEN_PROBE
|
||||
select MTD_CFI_UTIL
|
||||
help
|
||||
@ -15,7 +15,7 @@ config MTD_CFI
|
||||
for more information on CFI.
|
||||
|
||||
config MTD_JEDECPROBE
|
||||
tristate "Detect non-CFI AMD/JEDEC-compatible flash chips"
|
||||
bool "Detect non-CFI AMD/JEDEC-compatible flash chips"
|
||||
select MTD_GEN_PROBE
|
||||
select MTD_CFI_UTIL
|
||||
help
|
||||
@ -27,7 +27,7 @@ config MTD_JEDECPROBE
|
||||
Intel chips.
|
||||
|
||||
config MTD_GEN_PROBE
|
||||
tristate
|
||||
bool
|
||||
|
||||
config MTD_CFI_ADV_OPTIONS
|
||||
bool "Flash chip driver advanced configuration options"
|
||||
|
@ -34,7 +34,7 @@ config CAIF_SPI_SYNC
|
||||
This option also needs to be enabled on the modem.
|
||||
|
||||
config CAIF_HSI
|
||||
tristate "CAIF HSI transport driver"
|
||||
bool "CAIF HSI transport driver"
|
||||
depends on CAIF
|
||||
default n
|
||||
---help---
|
||||
|
@ -2441,6 +2441,7 @@ static inline int uld_send(struct adapter *adap, struct sk_buff *skb,
|
||||
txq_info = adap->sge.uld_txq_info[tx_uld_type];
|
||||
if (unlikely(!txq_info)) {
|
||||
WARN_ON(true);
|
||||
kfree_skb(skb);
|
||||
return NET_XMIT_DROP;
|
||||
}
|
||||
|
||||
|
@ -2445,6 +2445,7 @@ static int gemini_ethernet_port_probe(struct platform_device *pdev)
|
||||
port->reset = devm_reset_control_get_exclusive(dev, NULL);
|
||||
if (IS_ERR(port->reset)) {
|
||||
dev_err(dev, "no reset\n");
|
||||
clk_disable_unprepare(port->pclk);
|
||||
return PTR_ERR(port->reset);
|
||||
}
|
||||
reset_control_reset(port->reset);
|
||||
@ -2500,8 +2501,10 @@ static int gemini_ethernet_port_probe(struct platform_device *pdev)
|
||||
IRQF_SHARED,
|
||||
port_names[port->id],
|
||||
port);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
clk_disable_unprepare(port->pclk);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = register_netdev(netdev);
|
||||
if (!ret) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
config FSL_ENETC
|
||||
tristate "ENETC PF driver"
|
||||
bool "ENETC PF driver"
|
||||
depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
|
||||
select PHYLIB
|
||||
help
|
||||
@ -11,7 +11,7 @@ config FSL_ENETC
|
||||
If compiled as module (M), the module name is fsl-enetc.
|
||||
|
||||
config FSL_ENETC_VF
|
||||
tristate "ENETC VF driver"
|
||||
bool "ENETC VF driver"
|
||||
depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
|
||||
select PHYLIB
|
||||
help
|
||||
|
@ -4014,8 +4014,8 @@ static void hns3_link_status_change(struct hnae3_handle *handle, bool linkup)
|
||||
return;
|
||||
|
||||
if (linkup) {
|
||||
netif_carrier_on(netdev);
|
||||
netif_tx_wake_all_queues(netdev);
|
||||
netif_carrier_on(netdev);
|
||||
if (netif_msg_link(handle))
|
||||
netdev_info(netdev, "link up\n");
|
||||
} else {
|
||||
|
@ -5627,9 +5627,9 @@ static int hclge_add_fd_entry(struct hnae3_handle *handle,
|
||||
/* to avoid rule conflict, when user configure rule by ethtool,
|
||||
* we need to clear all arfs rules
|
||||
*/
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
hclge_clear_arfs_rules(handle);
|
||||
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
ret = hclge_fd_config_rule(hdev, rule);
|
||||
|
||||
spin_unlock_bh(&hdev->fd_rule_lock);
|
||||
@ -5672,6 +5672,7 @@ static int hclge_del_fd_entry(struct hnae3_handle *handle,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* make sure being called after lock up with fd_rule_lock */
|
||||
static void hclge_del_all_fd_entries(struct hnae3_handle *handle,
|
||||
bool clear_list)
|
||||
{
|
||||
@ -5684,7 +5685,6 @@ static void hclge_del_all_fd_entries(struct hnae3_handle *handle,
|
||||
if (!hnae3_dev_fd_supported(hdev))
|
||||
return;
|
||||
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
for_each_set_bit(location, hdev->fd_bmap,
|
||||
hdev->fd_cfg.rule_num[HCLGE_FD_STAGE_1])
|
||||
hclge_fd_tcam_config(hdev, HCLGE_FD_STAGE_1, true, location,
|
||||
@ -5701,8 +5701,6 @@ static void hclge_del_all_fd_entries(struct hnae3_handle *handle,
|
||||
bitmap_zero(hdev->fd_bmap,
|
||||
hdev->fd_cfg.rule_num[HCLGE_FD_STAGE_1]);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&hdev->fd_rule_lock);
|
||||
}
|
||||
|
||||
static int hclge_restore_fd_entries(struct hnae3_handle *handle)
|
||||
@ -6069,7 +6067,7 @@ static int hclge_add_fd_entry_by_arfs(struct hnae3_handle *handle, u16 queue_id,
|
||||
u16 flow_id, struct flow_keys *fkeys)
|
||||
{
|
||||
struct hclge_vport *vport = hclge_get_vport(handle);
|
||||
struct hclge_fd_rule_tuples new_tuples;
|
||||
struct hclge_fd_rule_tuples new_tuples = {};
|
||||
struct hclge_dev *hdev = vport->back;
|
||||
struct hclge_fd_rule *rule;
|
||||
u16 tmp_queue_id;
|
||||
@ -6079,20 +6077,18 @@ static int hclge_add_fd_entry_by_arfs(struct hnae3_handle *handle, u16 queue_id,
|
||||
if (!hnae3_dev_fd_supported(hdev))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
memset(&new_tuples, 0, sizeof(new_tuples));
|
||||
hclge_fd_get_flow_tuples(fkeys, &new_tuples);
|
||||
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
|
||||
/* when there is already fd rule existed add by user,
|
||||
* arfs should not work
|
||||
*/
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
if (hdev->fd_active_type == HCLGE_FD_EP_ACTIVE) {
|
||||
spin_unlock_bh(&hdev->fd_rule_lock);
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
hclge_fd_get_flow_tuples(fkeys, &new_tuples);
|
||||
|
||||
/* check is there flow director filter existed for this flow,
|
||||
* if not, create a new filter for it;
|
||||
* if filter exist with different queue id, modify the filter;
|
||||
@ -6177,6 +6173,7 @@ static void hclge_rfs_filter_expire(struct hclge_dev *hdev)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* make sure being called after lock up with fd_rule_lock */
|
||||
static void hclge_clear_arfs_rules(struct hnae3_handle *handle)
|
||||
{
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
@ -6221,10 +6218,14 @@ static void hclge_enable_fd(struct hnae3_handle *handle, bool enable)
|
||||
|
||||
hdev->fd_en = enable;
|
||||
clear = hdev->fd_active_type == HCLGE_FD_ARFS_ACTIVE;
|
||||
if (!enable)
|
||||
|
||||
if (!enable) {
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
hclge_del_all_fd_entries(handle, clear);
|
||||
else
|
||||
spin_unlock_bh(&hdev->fd_rule_lock);
|
||||
} else {
|
||||
hclge_restore_fd_entries(handle);
|
||||
}
|
||||
}
|
||||
|
||||
static void hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
|
||||
@ -6678,8 +6679,9 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
|
||||
int i;
|
||||
|
||||
set_bit(HCLGE_STATE_DOWN, &hdev->state);
|
||||
|
||||
spin_lock_bh(&hdev->fd_rule_lock);
|
||||
hclge_clear_arfs_rules(handle);
|
||||
spin_unlock_bh(&hdev->fd_rule_lock);
|
||||
|
||||
/* If it is not PF reset, the firmware will disable the MAC,
|
||||
* so it only need to stop phy here.
|
||||
|
@ -3086,7 +3086,7 @@ static int init_sub_crq_irqs(struct ibmvnic_adapter *adapter)
|
||||
req_tx_irq_failed:
|
||||
for (j = 0; j < i; j++) {
|
||||
free_irq(adapter->tx_scrq[j]->irq, adapter->tx_scrq[j]);
|
||||
irq_dispose_mapping(adapter->rx_scrq[j]->irq);
|
||||
irq_dispose_mapping(adapter->tx_scrq[j]->irq);
|
||||
}
|
||||
release_sub_crqs(adapter, 1);
|
||||
return rc;
|
||||
|
@ -4354,12 +4354,14 @@ static void mlx4_pci_resume(struct pci_dev *pdev)
|
||||
static void mlx4_shutdown(struct pci_dev *pdev)
|
||||
{
|
||||
struct mlx4_dev_persistent *persist = pci_get_drvdata(pdev);
|
||||
struct mlx4_dev *dev = persist->dev;
|
||||
|
||||
mlx4_info(persist->dev, "mlx4_shutdown was called\n");
|
||||
mutex_lock(&persist->interface_state_mutex);
|
||||
if (persist->interface_state & MLX4_INTERFACE_STATE_UP)
|
||||
mlx4_unload_one(pdev);
|
||||
mutex_unlock(&persist->interface_state_mutex);
|
||||
mlx4_pci_disable_device(dev);
|
||||
}
|
||||
|
||||
static const struct pci_error_handlers mlx4_err_handler = {
|
||||
|
@ -432,7 +432,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
|
||||
err = mlx5_wq_ll_create(mdev, &rqp->wq, rqc_wq, &rq->mpwqe.wq,
|
||||
&rq->wq_ctrl);
|
||||
if (err)
|
||||
return err;
|
||||
goto err_rq_wq_destroy;
|
||||
|
||||
rq->mpwqe.wq.db = &rq->mpwqe.wq.db[MLX5_RCV_DBR];
|
||||
|
||||
@ -485,7 +485,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
|
||||
err = mlx5_wq_cyc_create(mdev, &rqp->wq, rqc_wq, &rq->wqe.wq,
|
||||
&rq->wq_ctrl);
|
||||
if (err)
|
||||
return err;
|
||||
goto err_rq_wq_destroy;
|
||||
|
||||
rq->wqe.wq.db = &rq->wqe.wq.db[MLX5_RCV_DBR];
|
||||
|
||||
@ -3038,6 +3038,25 @@ void mlx5e_timestamp_init(struct mlx5e_priv *priv)
|
||||
priv->tstamp.rx_filter = HWTSTAMP_FILTER_NONE;
|
||||
}
|
||||
|
||||
static void mlx5e_modify_admin_state(struct mlx5_core_dev *mdev,
|
||||
enum mlx5_port_status state)
|
||||
{
|
||||
struct mlx5_eswitch *esw = mdev->priv.eswitch;
|
||||
int vport_admin_state;
|
||||
|
||||
mlx5_set_port_admin_status(mdev, state);
|
||||
|
||||
if (!MLX5_ESWITCH_MANAGER(mdev) || mlx5_eswitch_mode(esw) == MLX5_ESWITCH_OFFLOADS)
|
||||
return;
|
||||
|
||||
if (state == MLX5_PORT_UP)
|
||||
vport_admin_state = MLX5_VPORT_ADMIN_STATE_AUTO;
|
||||
else
|
||||
vport_admin_state = MLX5_VPORT_ADMIN_STATE_DOWN;
|
||||
|
||||
mlx5_eswitch_set_vport_state(esw, MLX5_VPORT_UPLINK, vport_admin_state);
|
||||
}
|
||||
|
||||
int mlx5e_open_locked(struct net_device *netdev)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
@ -3070,7 +3089,7 @@ int mlx5e_open(struct net_device *netdev)
|
||||
mutex_lock(&priv->state_lock);
|
||||
err = mlx5e_open_locked(netdev);
|
||||
if (!err)
|
||||
mlx5_set_port_admin_status(priv->mdev, MLX5_PORT_UP);
|
||||
mlx5e_modify_admin_state(priv->mdev, MLX5_PORT_UP);
|
||||
mutex_unlock(&priv->state_lock);
|
||||
|
||||
if (mlx5_vxlan_allowed(priv->mdev->vxlan))
|
||||
@ -3107,7 +3126,7 @@ int mlx5e_close(struct net_device *netdev)
|
||||
return -ENODEV;
|
||||
|
||||
mutex_lock(&priv->state_lock);
|
||||
mlx5_set_port_admin_status(priv->mdev, MLX5_PORT_DOWN);
|
||||
mlx5e_modify_admin_state(priv->mdev, MLX5_PORT_DOWN);
|
||||
err = mlx5e_close_locked(netdev);
|
||||
mutex_unlock(&priv->state_lock);
|
||||
|
||||
@ -5172,7 +5191,7 @@ static void mlx5e_nic_enable(struct mlx5e_priv *priv)
|
||||
|
||||
/* Marking the link as currently not needed by the Driver */
|
||||
if (!netif_running(netdev))
|
||||
mlx5_set_port_admin_status(mdev, MLX5_PORT_DOWN);
|
||||
mlx5e_modify_admin_state(mdev, MLX5_PORT_DOWN);
|
||||
|
||||
mlx5e_set_netdev_mtu_boundaries(priv);
|
||||
mlx5e_set_dev_port_mtu(priv);
|
||||
@ -5356,6 +5375,8 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv)
|
||||
profile->cleanup_tx(priv);
|
||||
|
||||
out:
|
||||
set_bit(MLX5E_STATE_DESTROYING, &priv->state);
|
||||
cancel_work_sync(&priv->update_stats_work);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -1736,6 +1736,8 @@ static void mlx5e_uplink_rep_enable(struct mlx5e_priv *priv)
|
||||
INIT_WORK(&rpriv->uplink_priv.reoffload_flows_work,
|
||||
mlx5e_tc_reoffload_flows_work);
|
||||
|
||||
mlx5_modify_vport_admin_state(mdev, MLX5_VPORT_STATE_OP_MOD_UPLINK,
|
||||
0, 0, MLX5_VPORT_ADMIN_STATE_AUTO);
|
||||
mlx5_lag_add(mdev, netdev);
|
||||
priv->events_nb.notifier_call = uplink_rep_async_event;
|
||||
mlx5_notifier_register(mdev, &priv->events_nb);
|
||||
|
@ -1919,7 +1919,7 @@ int mlx5_eswitch_enable(struct mlx5_eswitch *esw, int mode)
|
||||
mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_IB);
|
||||
mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_ETH);
|
||||
}
|
||||
|
||||
esw_destroy_tsar(esw);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -2094,6 +2094,8 @@ int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw,
|
||||
u16 vport, int link_state)
|
||||
{
|
||||
struct mlx5_vport *evport = mlx5_eswitch_get_vport(esw, vport);
|
||||
int opmod = MLX5_VPORT_STATE_OP_MOD_ESW_VPORT;
|
||||
int other_vport = 1;
|
||||
int err = 0;
|
||||
|
||||
if (!ESW_ALLOWED(esw))
|
||||
@ -2101,15 +2103,17 @@ int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw,
|
||||
if (IS_ERR(evport))
|
||||
return PTR_ERR(evport);
|
||||
|
||||
if (vport == MLX5_VPORT_UPLINK) {
|
||||
opmod = MLX5_VPORT_STATE_OP_MOD_UPLINK;
|
||||
other_vport = 0;
|
||||
vport = 0;
|
||||
}
|
||||
mutex_lock(&esw->state_lock);
|
||||
|
||||
err = mlx5_modify_vport_admin_state(esw->dev,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
vport, 1, link_state);
|
||||
err = mlx5_modify_vport_admin_state(esw->dev, opmod, vport, other_vport, link_state);
|
||||
if (err) {
|
||||
mlx5_core_warn(esw->dev,
|
||||
"Failed to set vport %d link state, err = %d",
|
||||
vport, err);
|
||||
mlx5_core_warn(esw->dev, "Failed to set vport %d link state, opmod = %d, err = %d",
|
||||
vport, opmod, err);
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
@ -2151,8 +2155,6 @@ int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
|
||||
struct mlx5_vport *evport = mlx5_eswitch_get_vport(esw, vport);
|
||||
int err = 0;
|
||||
|
||||
if (!ESW_ALLOWED(esw))
|
||||
return -EPERM;
|
||||
if (IS_ERR(evport))
|
||||
return PTR_ERR(evport);
|
||||
if (vlan > 4095 || qos > 7)
|
||||
@ -2180,6 +2182,9 @@ int mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
|
||||
u8 set_flags = 0;
|
||||
int err;
|
||||
|
||||
if (!ESW_ALLOWED(esw))
|
||||
return -EPERM;
|
||||
|
||||
if (vlan || qos)
|
||||
set_flags = SET_VLAN_STRIP | SET_VLAN_INSERT;
|
||||
|
||||
|
@ -606,6 +606,8 @@ static inline int mlx5_eswitch_enable(struct mlx5_eswitch *esw, int mode) { ret
|
||||
static inline void mlx5_eswitch_disable(struct mlx5_eswitch *esw) {}
|
||||
static inline bool mlx5_esw_lag_prereq(struct mlx5_core_dev *dev0, struct mlx5_core_dev *dev1) { return true; }
|
||||
static inline bool mlx5_eswitch_is_funcs_handler(struct mlx5_core_dev *dev) { return false; }
|
||||
static inline
|
||||
int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw, u16 vport, int link_state) { return 0; }
|
||||
static inline const u32 *mlx5_esw_query_functions(struct mlx5_core_dev *dev)
|
||||
{
|
||||
return ERR_PTR(-EOPNOTSUPP);
|
||||
|
@ -388,10 +388,31 @@ static int mlx5_ptp_enable(struct ptp_clock_info *ptp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
enum {
|
||||
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_IN = BIT(0),
|
||||
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_OUT = BIT(1),
|
||||
};
|
||||
|
||||
static int mlx5_ptp_verify(struct ptp_clock_info *ptp, unsigned int pin,
|
||||
enum ptp_pin_function func, unsigned int chan)
|
||||
{
|
||||
return (func == PTP_PF_PHYSYNC) ? -EOPNOTSUPP : 0;
|
||||
struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock,
|
||||
ptp_info);
|
||||
|
||||
switch (func) {
|
||||
case PTP_PF_NONE:
|
||||
return 0;
|
||||
case PTP_PF_EXTTS:
|
||||
return !(clock->pps_info.pin_caps[pin] &
|
||||
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_IN);
|
||||
case PTP_PF_PEROUT:
|
||||
return !(clock->pps_info.pin_caps[pin] &
|
||||
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_OUT);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static const struct ptp_clock_info mlx5_ptp_clock_info = {
|
||||
|
@ -1577,7 +1577,7 @@ static int mlxsw_core_reg_access_emad(struct mlxsw_core *mlxsw_core,
|
||||
err = mlxsw_emad_reg_access(mlxsw_core, reg, payload, type, trans,
|
||||
bulk_list, cb, cb_priv, tid);
|
||||
if (err) {
|
||||
kfree(trans);
|
||||
kfree_rcu(trans, rcu);
|
||||
return err;
|
||||
}
|
||||
return 0;
|
||||
@ -1802,11 +1802,13 @@ void mlxsw_core_skb_receive(struct mlxsw_core *mlxsw_core, struct sk_buff *skb,
|
||||
break;
|
||||
}
|
||||
}
|
||||
rcu_read_unlock();
|
||||
if (!found)
|
||||
if (!found) {
|
||||
rcu_read_unlock();
|
||||
goto drop;
|
||||
}
|
||||
|
||||
rxl->func(skb, local_port, rxl_item->priv);
|
||||
rcu_read_unlock();
|
||||
return;
|
||||
|
||||
drop:
|
||||
|
@ -1318,19 +1318,21 @@ static int nixge_probe(struct platform_device *pdev)
|
||||
netif_napi_add(ndev, &priv->napi, nixge_poll, NAPI_POLL_WEIGHT);
|
||||
err = nixge_of_get_resources(pdev);
|
||||
if (err)
|
||||
return err;
|
||||
goto free_netdev;
|
||||
__nixge_hw_set_mac_address(ndev);
|
||||
|
||||
priv->tx_irq = platform_get_irq_byname(pdev, "tx");
|
||||
if (priv->tx_irq < 0) {
|
||||
netdev_err(ndev, "could not find 'tx' irq");
|
||||
return priv->tx_irq;
|
||||
err = priv->tx_irq;
|
||||
goto free_netdev;
|
||||
}
|
||||
|
||||
priv->rx_irq = platform_get_irq_byname(pdev, "rx");
|
||||
if (priv->rx_irq < 0) {
|
||||
netdev_err(ndev, "could not find 'rx' irq");
|
||||
return priv->rx_irq;
|
||||
err = priv->rx_irq;
|
||||
goto free_netdev;
|
||||
}
|
||||
|
||||
priv->coalesce_count_rx = XAXIDMA_DFT_RX_THRESHOLD;
|
||||
|
@ -1180,7 +1180,8 @@ static int qed_int_attentions(struct qed_hwfn *p_hwfn)
|
||||
index, attn_bits, attn_acks, asserted_bits,
|
||||
deasserted_bits, p_sb_attn_sw->known_attn);
|
||||
} else if (asserted_bits == 0x100) {
|
||||
DP_INFO(p_hwfn, "MFW indication via attention\n");
|
||||
DP_VERBOSE(p_hwfn, NETIF_MSG_INTR,
|
||||
"MFW indication via attention\n");
|
||||
} else {
|
||||
DP_VERBOSE(p_hwfn, NETIF_MSG_INTR,
|
||||
"MFW indication [deassertion]\n");
|
||||
|
@ -1444,6 +1444,7 @@ static void ravb_tx_timeout_work(struct work_struct *work)
|
||||
struct ravb_private *priv = container_of(work, struct ravb_private,
|
||||
work);
|
||||
struct net_device *ndev = priv->ndev;
|
||||
int error;
|
||||
|
||||
netif_tx_stop_all_queues(ndev);
|
||||
|
||||
@ -1452,15 +1453,36 @@ static void ravb_tx_timeout_work(struct work_struct *work)
|
||||
ravb_ptp_stop(ndev);
|
||||
|
||||
/* Wait for DMA stopping */
|
||||
ravb_stop_dma(ndev);
|
||||
if (ravb_stop_dma(ndev)) {
|
||||
/* If ravb_stop_dma() fails, the hardware is still operating
|
||||
* for TX and/or RX. So, this should not call the following
|
||||
* functions because ravb_dmac_init() is possible to fail too.
|
||||
* Also, this should not retry ravb_stop_dma() again and again
|
||||
* here because it's possible to wait forever. So, this just
|
||||
* re-enables the TX and RX and skip the following
|
||||
* re-initialization procedure.
|
||||
*/
|
||||
ravb_rcv_snd_enable(ndev);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ravb_ring_free(ndev, RAVB_BE);
|
||||
ravb_ring_free(ndev, RAVB_NC);
|
||||
|
||||
/* Device init */
|
||||
ravb_dmac_init(ndev);
|
||||
error = ravb_dmac_init(ndev);
|
||||
if (error) {
|
||||
/* If ravb_dmac_init() fails, descriptors are freed. So, this
|
||||
* should return here to avoid re-enabling the TX and RX in
|
||||
* ravb_emac_init().
|
||||
*/
|
||||
netdev_err(ndev, "%s: ravb_dmac_init() failed, error %d\n",
|
||||
__func__, error);
|
||||
return;
|
||||
}
|
||||
ravb_emac_init(ndev);
|
||||
|
||||
out:
|
||||
/* Initialise PTP Clock driver */
|
||||
if (priv->chip_id == RCAR_GEN2)
|
||||
ravb_ptp_init(ndev, priv->pdev);
|
||||
|
@ -1389,8 +1389,9 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
|
||||
unsigned long flags;
|
||||
|
||||
if (old)
|
||||
hso_dbg(0x16, "Termios called with: cflags new[%d] - old[%d]\n",
|
||||
tty->termios.c_cflag, old->c_cflag);
|
||||
hso_dbg(0x16, "Termios called with: cflags new[%u] - old[%u]\n",
|
||||
(unsigned int)tty->termios.c_cflag,
|
||||
(unsigned int)old->c_cflag);
|
||||
|
||||
/* the actual setup */
|
||||
spin_lock_irqsave(&serial->serial_lock, flags);
|
||||
|
@ -3767,6 +3767,11 @@ static int lan78xx_probe(struct usb_interface *intf,
|
||||
netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
|
||||
netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
|
||||
|
||||
if (intf->cur_altsetting->desc.bNumEndpoints < 3) {
|
||||
ret = -ENODEV;
|
||||
goto out3;
|
||||
}
|
||||
|
||||
dev->ep_blkin = (intf->cur_altsetting)->endpoint + 0;
|
||||
dev->ep_blkout = (intf->cur_altsetting)->endpoint + 1;
|
||||
dev->ep_intr = (intf->cur_altsetting)->endpoint + 2;
|
||||
@ -3791,6 +3796,7 @@ static int lan78xx_probe(struct usb_interface *intf,
|
||||
usb_fill_int_urb(dev->urb_intr, dev->udev,
|
||||
dev->pipe_intr, buf, maxp,
|
||||
intr_complete, dev, period);
|
||||
dev->urb_intr->transfer_flags |= URB_FREE_BUFFER;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2863,8 +2863,10 @@ static void vxlan_flush(struct vxlan_dev *vxlan, bool do_all)
|
||||
if (!do_all && (f->state & (NUD_PERMANENT | NUD_NOARP)))
|
||||
continue;
|
||||
/* the all_zeros_mac entry is deleted at vxlan_uninit */
|
||||
if (!is_zero_ether_addr(f->eth_addr))
|
||||
vxlan_fdb_destroy(vxlan, f, true, true);
|
||||
if (is_zero_ether_addr(f->eth_addr) &&
|
||||
f->vni == vxlan->cfg.vni)
|
||||
continue;
|
||||
vxlan_fdb_destroy(vxlan, f, true, true);
|
||||
}
|
||||
spin_unlock_bh(&vxlan->hash_lock[h]);
|
||||
}
|
||||
|
@ -62,8 +62,10 @@ static int x25_data_indication(struct net_device *dev, struct sk_buff *skb)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
|
||||
if (skb_cow(skb, 1))
|
||||
if (skb_cow(skb, 1)) {
|
||||
kfree_skb(skb);
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
||||
skb_push(skb, 1);
|
||||
skb_reset_network_header(skb);
|
||||
|
@ -128,10 +128,12 @@ static int lapbeth_data_indication(struct net_device *dev, struct sk_buff *skb)
|
||||
{
|
||||
unsigned char *ptr;
|
||||
|
||||
skb_push(skb, 1);
|
||||
|
||||
if (skb_cow(skb, 1))
|
||||
if (skb_cow(skb, 1)) {
|
||||
kfree_skb(skb);
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
||||
skb_push(skb, 1);
|
||||
|
||||
ptr = skb->data;
|
||||
*ptr = X25_IFACE_DATA;
|
||||
|
@ -1145,6 +1145,7 @@ static bool ath10k_qca99x0_rx_desc_msdu_limit_error(struct htt_rx_desc *rxd)
|
||||
const struct ath10k_hw_ops qca99x0_ops = {
|
||||
.rx_desc_get_l3_pad_bytes = ath10k_qca99x0_rx_desc_get_l3_pad_bytes,
|
||||
.rx_desc_get_msdu_limit_error = ath10k_qca99x0_rx_desc_msdu_limit_error,
|
||||
.is_rssi_enable = ath10k_htt_tx_rssi_enable,
|
||||
};
|
||||
|
||||
const struct ath10k_hw_ops qca6174_ops = {
|
||||
|
@ -63,6 +63,8 @@ module_param_named(max_queues, xennet_max_queues, uint, 0644);
|
||||
MODULE_PARM_DESC(max_queues,
|
||||
"Maximum number of queues per virtual interface");
|
||||
|
||||
#define XENNET_TIMEOUT (5 * HZ)
|
||||
|
||||
static const struct ethtool_ops xennet_ethtool_ops;
|
||||
|
||||
struct netfront_cb {
|
||||
@ -1334,12 +1336,15 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
|
||||
|
||||
netif_carrier_off(netdev);
|
||||
|
||||
xenbus_switch_state(dev, XenbusStateInitialising);
|
||||
wait_event(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) !=
|
||||
XenbusStateClosed &&
|
||||
xenbus_read_driver_state(dev->otherend) !=
|
||||
XenbusStateUnknown);
|
||||
do {
|
||||
xenbus_switch_state(dev, XenbusStateInitialising);
|
||||
err = wait_event_timeout(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) !=
|
||||
XenbusStateClosed &&
|
||||
xenbus_read_driver_state(dev->otherend) !=
|
||||
XenbusStateUnknown, XENNET_TIMEOUT);
|
||||
} while (!err);
|
||||
|
||||
return netdev;
|
||||
|
||||
exit:
|
||||
@ -2139,28 +2144,43 @@ static const struct attribute_group xennet_dev_group = {
|
||||
};
|
||||
#endif /* CONFIG_SYSFS */
|
||||
|
||||
static void xennet_bus_close(struct xenbus_device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (xenbus_read_driver_state(dev->otherend) == XenbusStateClosed)
|
||||
return;
|
||||
do {
|
||||
xenbus_switch_state(dev, XenbusStateClosing);
|
||||
ret = wait_event_timeout(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateClosing ||
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateClosed ||
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateUnknown,
|
||||
XENNET_TIMEOUT);
|
||||
} while (!ret);
|
||||
|
||||
if (xenbus_read_driver_state(dev->otherend) == XenbusStateClosed)
|
||||
return;
|
||||
|
||||
do {
|
||||
xenbus_switch_state(dev, XenbusStateClosed);
|
||||
ret = wait_event_timeout(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateClosed ||
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateUnknown,
|
||||
XENNET_TIMEOUT);
|
||||
} while (!ret);
|
||||
}
|
||||
|
||||
static int xennet_remove(struct xenbus_device *dev)
|
||||
{
|
||||
struct netfront_info *info = dev_get_drvdata(&dev->dev);
|
||||
|
||||
dev_dbg(&dev->dev, "%s\n", dev->nodename);
|
||||
|
||||
if (xenbus_read_driver_state(dev->otherend) != XenbusStateClosed) {
|
||||
xenbus_switch_state(dev, XenbusStateClosing);
|
||||
wait_event(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateClosing ||
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateUnknown);
|
||||
|
||||
xenbus_switch_state(dev, XenbusStateClosed);
|
||||
wait_event(module_wq,
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateClosed ||
|
||||
xenbus_read_driver_state(dev->otherend) ==
|
||||
XenbusStateUnknown);
|
||||
}
|
||||
|
||||
xennet_bus_close(dev);
|
||||
xennet_disconnect_backend(info);
|
||||
|
||||
if (info->netdev->reg_state == NETREG_REGISTERED)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user