mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge remote-tracking branch 'remotes/origin/tmp-3fde1dfb006c' into msm-lahaina
* remotes/origin/tmp-3fde1dfb006c:
ANDROID: Revert "Merge tag 'modules-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux"
ANDROID: Move from clang r353983c to r365631c
ANDROID: of/property: Add device link support for iommus
ANDROID: quilt series: drop cuttlefish config changes
ANDROID: quilt series: add missing ANDROID: tags
ANDROID: quilt series cleanup: drop obsolete patches
ANDROID: add latest patches to quilt series
ANDROID: sched: Honor sync flag for energy-aware wakeups
ANDROID: gki_defconfig: remove PWRSEQ_EMMC and PWRSEQ_SIMPLE
ANDROID: unconditionally compile sig_ok in struct module
ANDROID: add latest patches to quilt series
ANDROID: rebase mainline quilt series on v5.4-rc3
ANDROID: regenerate quilt series
UPSTREAM: base: soc: Handle custom soc information sysfs entries
ANDROID: gki_defconfig: enable fs-verity
clk: add pre and post change rate callbacks
Linux 5.4-rc3
tracing: Initialize iter->seq after zeroing in tracing_read_pipe()
tracing/hwlat: Don't ignore outer-loop duration when calculating max_latency
tracing/hwlat: Report total time spent in all NMIs during the sample
recordmcount: Fix nop_mcount() function
tracing: Do not create tracefs files if tracefs lockdown is in effect
tracing: Add locked_down checks to the open calls of files created for tracefs
tracing: Add tracing_check_open_get_tr()
tracing: Have trace events system open call tracing_open_generic_tr()
tracing: Get trace_array reference for available_tracers files
ftrace: Get a reference counter for the trace_array on filter files
tracefs: Revert ccbd54ff54 ("tracefs: Restrict tracefs when the kernel is locked down")
perf/x86/cstate: Add Tiger Lake CPU support
perf/x86/msr: Add Tiger Lake CPU support
perf/x86/intel: Add Tiger Lake CPU support
perf/x86/cstate: Update C-state counters for Ice Lake
perf/x86/msr: Add new CPU model numbers for Ice Lake
perf/x86/cstate: Add Comet Lake CPU support
perf/x86/msr: Add Comet Lake CPU support
perf/x86/intel: Add Comet Lake CPU support
ANDROID: android-mainline quilt series for 5.4-ic1
Revert "drivers: qcom: rpmh-rsc: modularize RSC controller driver"
Documentation/process: Add fallthrough pseudo-keyword
compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use
net: sctp: Rename fallthrough label to unhandled
ANDROID: Fix x86_64 allmodconfig build
gki_defconfig: Enable CONFIG_DM_SNAPSHOT
s390/uaccess: avoid (false positive) compiler warnings
firmware: google: increment VPD key_len properly
MAINTAINERS: kgdb: Add myself as a reviewer for kgdb/kdb
spufs: fix a crash in spufs_create_root()
io_uring: fix sequence logic for timeout requests
ANDROID: gki_defconfig: enabled CONFIG_TMPFS explicitly
ANDROID: gki_defconfig: enable accelerated AES and SHA-256
SUNRPC: fix race to sk_err after xs_error_report
NFSv4: Fix leak of clp->cl_acceptor string
ANDROID: gki_defconfig: enable CONFIG_PARAVIRT and CONFIG_HYPERVISOR_GUEST
MIPS: Disable Loongson MMI instructions for kernel build
MIPS: elf_hwcap: Export userspace ASEs
ANDROID: staging: ion: fix sparse warning in ion system heap
nbd: fix possible sysfs duplicate warning
xen: Stop abusing DT of_dma_configure API
MAINTAINERS: Remove Simon as Renesas SoC Co-Maintainer
xen/grant-table: remove unnecessary printing
w1: ds250x: Fix build error without CRC16
virt: vbox: fix memory leak in hgcm_call_preprocess_linaddr
binder: Fix comment headers on binder_alloc_prepare_to_free()
binder: prevent UAF read in print_binder_transaction_log_entry()
USB: yurex: fix NULL-derefs on disconnect
tty: serial: imx: Use platform_get_irq_optional() for optional IRQs
serial: fix kernel-doc warning in comments
USB: iowarrior: use pr_err()
USB: iowarrior: drop redundant iowarrior mutex
USB: iowarrior: drop redundant disconnect mutex
USB: iowarrior: fix use-after-free after driver unbind
USB: iowarrior: fix use-after-free on release
USB: iowarrior: fix use-after-free on disconnect
USB: chaoskey: fix use-after-free on release
USB: adutux: fix use-after-free on release
USB: ldusb: fix NULL-derefs on driver unbind
USB: legousbtower: fix use-after-free on release
usb: cdns3: Fix for incorrect DMA mask.
usb: cdns3: fix cdns3_core_init_role()
usb: cdns3: gadget: Fix full-speed mode
USB: usb-skeleton: drop redundant in-urb check
USB: usb-skeleton: fix use-after-free after driver unbind
USB: usb-skeleton: fix NULL-deref on disconnect
drm/bridge: tc358767: fix max_tu_symbol value
s390/cio: fix virtio-ccw DMA without PV
null_blk: Fix zoned command return code
libfs: take cursors out of list when moving past the end of directory
vfs: add missing blkdev_put() in get_tree_bdev()
shmem: fix LSM options parsing
RISC-V: entry: Remove unneeded need_resched() loop
drm/i915/gt: execlists->active is serialised by the tasklet
drm/i915/execlists: Protect peeking at execlists->active
drm/i915: Fixup preempt-to-busy vs reset of a virtual request
io_uring: only flush workqueues on fileset removal
drm/i915: Only enqueue already completed requests
drm/i915/execlists: Drop redundant list_del_init(&rq->sched.link)
drm/i915/cml: Add second PCH ID for CMP
MIPS: fw: sni: Fix out of bounds init of o32 stack
MIPS: include: Mark __xchg as __always_inline
Revert "kheaders: make headers archive reproducible"
iio: Fix an undefied reference error in noa1305_probe
iio: light: opt3001: fix mutex unlock race
iio: adc: ad799x: fix probe error handling
iio: light: add missing vcnl4040 of_compatible
iio: light: fix vcnl4000 devicetree hooks
iio: imu: st_lsm6dsx: fix waitime for st_lsm6dsx i2c controller
iio: adc: axp288: Override TS pin bias current for some models
iio: imu: adis16400: fix memory leak
iio: imu: adis16400: release allocated memory on failure
iio: adc: stm32-adc: fix a race when using several adcs with dma and irq
iio: adc: stm32-adc: move registers definitions
iio: accel: adxl372: Perform a reset at start up
iio: accel: adxl372: Fix push to buffers lost samples
iio: accel: adxl372: Fix/remove limitation for FIFO samples
iio: adc: hx711: fix bug in sampling of data
drm/amdgpu: fix memory leak
xfs: move local to extent inode logging into bmap helper
xfs: remove broken error handling on failed attr sf to leaf change
xfs: log the inode on directory sf to block format change
NFS: Remove redundant mirror tracking in O_DIRECT
NFS: Fix O_DIRECT accounting of number of bytes read/written
perf/x86/amd: Change/fix NMI latency mitigation to use a timestamp
perf/core: Fix corner case in perf_rotate_context()
perf/core: Rework memory accounting in perf_mmap()
sched/vtime: Fix guest/system mis-accounting on task switch
sched/fair: Scale bandwidth quota and period without losing quota/period ratio precision
powerpc/kvm: Fix kvmppc_vcore->in_guest value in kvmhv_switch_to_host
selftests/powerpc: Fix compile error on tlbie_test due to newer gcc
powerpc/pseries: Remove confusing warning message.
powerpc/64s/radix: Fix build failure with RADIX_MMU=n
CIFS: Force reval dentry if LOOKUP_REVAL flag is set
CIFS: Force revalidate inode when dentry is stale
smb3: Fix regression in time handling
smb3: remove noisy debug message and minor cleanup
ANDROID: gki_defconfig: enable CONFIG_NLS_*
ANDROID: gki_defconfig: enable REGULATOR
Add my linux-leds branch to MAINTAINERS
leds: core: Fix leds.h structure documentation
x86/cpu: Add Comet Lake to the Intel CPU models header
ANDROID: gki_defconfig: Enable BPF_JIT and BPF_JIT_ALWAYS_ON
doc: move namespaces.rst from kbuild/ to core-api/
arm64: armv8_deprecated: Checking return value for memory allocation
lib/string: Make memzero_explicit() inline instead of external
x86/cpu/vmware: Use the full form of INL in VMWARE_PORT
x86/asm: Fix MWAITX C-state hint value
btrfs: silence maybe-uninitialized warning in clone_range
efi/tpm: Fix sanity check of unsigned tbl_size being less than zero
drm/panel: tpo-td043mtea1: Fix SPI alias
drm/panel: tpo-td028ttec1: Fix SPI alias
drm/panel: sony-acx565akm: Fix SPI alias
drm/panel: nec-nl8048hl11: Fix SPI alias
drm/panel: lg-lb035q02: Fix SPI alias
io_uring: remove wait loop spurious wakeups
FROMGIT: of: property: Create device links for all child-supplier depencencies
FROMGIT: of/platform: Pause/resume sync state during init and of_platform_populate()
FROMGIT: driver core: Add sync_state driver/bus callback
FROMGIT: of: property: Add functional dependency link from DT bindings
FROMGIT: driver core: Add support for linking devices during device addition
FROMGIT: driver core: Add fwnode_to_dev() to look up device from fwnode
mm, sl[aou]b: guarantee natural alignment for kmalloc(power-of-two)
mm, sl[ou]b: improve memory accounting
mm, memcg: make scan aggression always exclude protection
mm, memcg: make memory.emin the baseline for utilisation determination
mm, memcg: proportional memory.{low,min} reclaim
mm/vmpressure.c: fix a signedness bug in vmpressure_register_event()
mm/page_alloc.c: fix a crash in free_pages_prepare()
mm/z3fold.c: claim page in the beginning of free
kernel/sysctl.c: do not override max_threads provided by userspace
memcg: only record foreign writebacks with dirty pages when memcg is not disabled
mm: fix -Wmissing-prototypes warnings
writeback: fix use-after-free in finish_writeback_work()
mm/memremap: drop unused SECTION_SIZE and SECTION_MASK
panic: ensure preemption is disabled during panic()
fs: ocfs2: fix a possible null-pointer dereference in ocfs2_info_scan_inode_alloc()
fs: ocfs2: fix a possible null-pointer dereference in ocfs2_write_end_nolock()
fs: ocfs2: fix possible null-pointer dereferences in ocfs2_xa_prepare_entry()
ocfs2: clear zero in unaligned direct IO
x86/xen: Return from panic notifier
riscv: Correct the handling of unexpected ebreak in do_trap_break()
riscv: avoid sending a SIGTRAP to a user thread trapped in WARN()
riscv: avoid kernel hangs when trapped in BUG()
uaccess: implement a proper unsafe_copy_to_user() and switch filldir over to it
drm/i915: Mark contents as dirty on a write fault
drm/i915: Prevent bonded requests from overtaking each other on preemption
drm/i915: Bump skl+ max plane width to 5k for linear/x-tiled
drm/i915: Verify the engine after acquiring the active.lock
drm/i915: Extend Haswell GT1 PSMI workaround to all
drm/i915: Don't mix srcu tag and negative error codes
drm/i915: Whitelist COMMON_SLICE_CHICKEN2
drm/i915: Perform GGTT restore much earlier during resume
drm/i915/execlists: Remove incorrect BUG_ON for schedule-out
MIPS: include: Mark __cmpxchg as __always_inline
nsdeps: make generated patches independent of locale
nsdeps: fix hashbang of scripts/nsdeps
kbuild: fix build error of 'make nsdeps' in clean tree
module: rename __kstrtab_ns_* to __kstrtabns_* to avoid symbol conflict
modpost: fix broken sym->namespace for external module builds
module: swap the order of symbol.namespace
perf/core: Fix inheritance of aux_output groups
scripts: add_namespace: Fix coccicheck failed
efi/x86: Do not clean dummy variable in kexec path
efi: Make unexported efi_rci2_sysfs_init() static
efi/tpm: Only set 'efi_tpm_final_log_size' after successful event log parsing
efi/tpm: Don't traverse an event log with no events
efi/tpm: Don't access event->count when it isn't mapped
efivar/ssdt: Don't iterate over EFI vars if no SSDT override was specified
efi/cper: Fix endianness of PCIe class code
hwmon: docs: Extend inspur-ipsps1 title underline
arm64: Kconfig: Make CONFIG_COMPAT_VDSO a proper Kconfig option
arm64: vdso32: Rename COMPATCC to CC_COMPAT
arm64: vdso32: Pass '--target' option to clang via VDSO_CAFLAGS
arm64: vdso32: Don't use KBUILD_CPPFLAGS unconditionally
arm64: vdso32: Move definition of COMPATCC into vdso32/Makefile
arm64: Default to building compat vDSO with clang when CONFIG_CC_IS_CLANG
serial: 8250_omap: Fix gpio check for auto RTS/CTS
serial: mctrl_gpio: Check for NULL pointer
tty: serial: fsl_lpuart: Fix lpuart_flush_buffer()
usb:cdns3: Fix for CV CH9 running with g_zero driver.
usb: dwc3: Remove dev_err() on platform_get_irq() failure
usb: dwc3: Switch to platform_get_irq_byname_optional()
driver core: platform: Add platform_get_irq_byname_optional()
staging: vt6655: Fix memory leak in vt6655_probe
lib: vdso: Remove CROSS_COMPILE_COMPAT_VDSO
arm64: vdso32: Remove jump label config option in Makefile
arm64: vdso32: Detect binutils support for dmb ishld
arm64: vdso: Remove stale files from old assembly implementation
arm64: vdso32: Fix broken compat vDSO build warnings
arm64: mm: fix spurious fault detection
mtd: rawnand: au1550nd: Fix au_read_buf16() prototype
CIFS: Gracefully handle QueryInfo errors during open
cifs: use cifsInodeInfo->open_file_lock while iterating to avoid a panic
fs: cifs: mute -Wunused-const-variable message
smb3: cleanup some recent endian errors spotted by updated sparse
xfs: assure zeroed memory buffers for certain kmem allocations
xfs: removed unused error variable from xchk_refcountbt_rec
xfs: remove unused flags arg from xfs_get_aghdr_buf()
xfs: Fix tail rounding in xfs_alloc_file_space()
Linux 5.4-rc2
elf: don't use MAP_FIXED_NOREPLACE for elf executable mappings
blk-wbt: fix performance regression in wbt scale_up/scale_down
Revert "libata, freezer: avoid block device removal while system is frozen"
bdi: Do not use freezable workqueue
Make filldir[64]() verify the directory entry filename is valid
Convert filldir[64]() from __put_user() to unsafe_put_user()
KVM: s390: mark __insn32_query() as __always_inline
KVM: s390: fix __insn32_query() inline assembly
dma-mapping: fix false positivse warnings in dma_common_free_remap()
kheaders: make headers archive reproducible
kbuild: update compile-test header list for v5.4-rc2
kbuild: two minor updates for Documentation/kbuild/modules.rst
scripts/setlocalversion: clear local variable to make it work for sh
namespace: fix namespace.pl script to support relative paths
video/logo: do not generate unneeded logo C files
video/logo: remove unneeded *.o pattern from clean-files
integrity: remove pointless subdir-$(CONFIG_...)
integrity: remove unneeded, broken attempt to add -fshort-wchar
selftests/net: add nettest to .gitignore
net: qlogic: Fix memory leak in ql_alloc_large_buffers
nfc: fix memory leak in llcp_sock_bind()
sch_dsmark: fix potential NULL deref in dsmark_init()
net: phy: at803x: use operating parameters from PHY-specific status
net: phy: extract pause mode
net: phy: extract link partner advertisement reading
net: phy: fix write to mii-ctrl1000 register
ipv6: Handle missing host route in __ipv6_ifa_notify
net: phy: allow for reset line to be tied to a sleepy GPIO controller
net: ipv4: avoid mixed n_redirects and rate_tokens usage
r8152: Set macpassthru in reset_resume callback
gpio: max77620: Use correct unit for debounce times
cxgb4:Fix out-of-bounds MSI-X info array access
Revert "ipv6: Handle race in addrconf_dad_work"
net: make sock_prot_memory_pressure() return "const char *"
rxrpc: Fix rxrpc_recvmsg tracepoint
qmi_wwan: add support for Cinterion CLS8 devices
Add an IOCTL to check ION ABI version
RDMA/mlx5: Add missing synchronize_srcu() for MW cases
RDMA/mlx5: Put live in the correct place for ODP MRs
RDMA/mlx5: Order num_pending_prefetch properly with synchronize_srcu
RDMA/odp: Lift umem_mutex out of ib_umem_odp_unmap_dma_pages()
RDMA/mlx5: Fix a race with mlx5_ib_update_xlt on an implicit MR
RDMA/mlx5: Do not allow rereg of a ODP MR
IB/core: Fix wrong iterating on ports
MIPS: fw/arc: Remove unused addr variable
RDMA/nldev: Reshuffle the code to avoid need to rebind QP in error path
RDMA/cxgb4: Do not dma memory off of the stack
RDMA/cm: Fix memory leak in cm_add/remove_one
RDMA/core: Fix an error handling path in 'res_get_common_doit()'
RDMA/i40iw: Associate ibdev to netdev before IB device registration
ARM: multi_v7_defconfig: Fix SPI_STM32_QSPI support
misc: fastrpc: prevent memory leak in fastrpc_dma_buf_attach
mtd: spi-nor: Fix direction of the write_sr() transfer
mei: avoid FW version request on Ibex Peak and earlier
s390: update defconfigs
s390/pci: mark function(s) __always_inline
s390/mm: mark function(s) __always_inline
s390/jump_label: mark function(s) __always_inline
s390/cpu_mf: mark function(s) __always_inline
s390/atomic,bitops: mark function(s) __always_inline
s390/mm: fix -Wunused-but-set-variable warnings
s390: mark __cpacf_query() as __always_inline
io_uring: fix reversed nonblock flag for link submission
tty: serial: Fix PORT_LINFLEXUART definition
mei: me: add comet point (lake) LP device ids
tty: n_hdlc: fix build on SPARC
serial: uartps: Fix uartps_major handling
serial: uartlite: fix exit path null pointer
tty: serial: linflexuart: Fix magic SysRq handling
serial: sh-sci: Use platform_get_irq_optional() for optional interrupts
dt-bindings: serial: sh-sci: Document r8a774b1 bindings
serial/sifive: select SERIAL_EARLYCON
tty: serial: rda: Fix the link time qualifier of 'rda_uart_exit()'
tty: serial: owl: Fix the link time qualifier of 'owl_uart_exit()'
media: stkwebcam: fix runtime PM after driver unbind
USB: serial: fix runtime PM after driver unbind
USB: usblp: fix runtime PM after driver unbind
USB: usb-skeleton: fix runtime PM after driver unbind
xhci-ext-caps.c: Add missing platform_device_put() on error in xhci_create_intel_xhci_sw_pdev()
dt-bindings: usb: Bring back phy-names
ARM: dts: sunxi: Revert phy-names removal for ECHI and OHCI
usb: renesas_usbhs: gadget: Fix usb_ep_set_{halt,wedge}() behavior
usb: renesas_usbhs: gadget: Do not discard queues in usb_ep_set_{halt,wedge}()
udc: lpc32xx: fix 64-bit compiler warning
xhci: Fix NULL pointer dereference in xhci_clear_tt_buffer_complete()
xhci: Increase STS_SAVE timeout in xhci_suspend()
xhci: Prevent deadlock when xhci adapter breaks during init
usb: xhci: wait for CNR controller not ready bit in xhci resume
xhci: Fix USB 3.1 capability detection on early xHCI 1.1 spec based hosts
xhci: Check all endpoints for LPM timeout
xhci: Prevent device initiated U1/U2 link pm if exit latency is too long
xhci: Fix false warning message about wrong bounce buffer write length
USB: legousbtower: fix open after failed reset request
USB: legousbtower: fix potential NULL-deref on disconnect
USB: legousbtower: fix deadlock on disconnect
USB: legousbtower: fix slab info leak at probe
KVM: x86: omit "impossible" pmu MSRs from MSR list
usb: typec: ucsi: displayport: Fix for the mode entering routine
usb: typec: ucsi: ccg: Remove run_isr flag
arm64: ftrace: Ensure synchronisation in PLT setup for Neoverse-N1 #1542419
arm64: Fix incorrect irqflag restore for priority masking for compat
arm64: mm: avoid virt_to_phys(init_mm.pgd)
arm64: cpufeature: Effectively expose FRINT capability to userspace
arm64: Mark functions using explicit register variables as '__always_inline'
USB: usblcd: use pr_err()
USB: usblcd: drop redundant lcd mutex
USB: usblcd: drop redundant disconnect mutex
USB: usblcd: fix I/O after disconnect
bindings: rename links to mason USB2/USB3 DT files
usb: typec: tcpm: usb: typec: tcpm: Fix a signedness bug in tcpm_fw_get_caps()
USB: dummy-hcd: fix power budget for SuperSpeed mode
usbip: vhci_hcd indicate failed message
USB: yurex: Don't retry on unexpected errors
USB: adutux: fix NULL-derefs on disconnect
USB: adutux: fix use-after-free on disconnect
usb: cdns3: Fix sheduling with locks held.
usb: cdns3: Fix use after free in probe error handling
USB: microtek: fix info-leak at probe
dt-bindings: usb: Fix references to usb-hcd.yaml
USB: serial: keyspan: fix NULL-derefs on open() and write()
USB: serial: option: add support for Cinterion CLS8 devices
USB: rio500: Remove Rio 500 kernel driver
staging: exfat: Use kvzalloc() instead of kzalloc() for exfat_sb_info
Staging: fbtft: fix memory leak in fbtft_framebuffer_alloc
staging: speakup: document sysfs attributes
ANDROID: staging: ion: Fix missing entry in kerneldoc header
MIPS: pmcs-msp71xx: Remove unused addr variable
MIPS: pmcs-msp71xx: Add missing MAX_PROM_MEM definition
vfs: Fix EOVERFLOW testing in put_compat_statfs64
block: sed-opal: fix sparse warning: convert __be64 data
block: sed-opal: fix sparse warning: obsolete array init.
Revert "drm/i915: Fix DP-MST crtc_mask"
sched: add kernel-doc for struct clone_args
fork: add kernel-doc for clone3
usercopy: Add parentheses around assignment in test_copy_struct_from_user
tcp: fix slab-out-of-bounds in tcp_zerocopy_receive()
selinux: fix context string corruption in convert_context()
lib: textsearch: fix escapes in example code
udp: only do GSO if # of segs > 1
udp: fix gso_segs calculations
MAINTAINERS: kgdb: Add myself as a reviewer for kgdb/kdb
ipv6: drop incoming packets having a v4mapped source address
btrfs: fix uninitialized ret in ref-verify
KVM: nVMX: Fix consistency check on injected exception error code
KVM: x86: omit absent pmu MSRs from MSR list
selftests: kvm: Fix libkvm build error
drm/omap: fix max fclk divider for omap36xx
drm/i915: Fix g4x sprite scaling stride check with GTT remapping
drm/i915/dp: Fix dsc bpp calculations, v5.
block: pg: add header include guard
net: stmmac: Avoid deadlock on suspend/resume
timer-of: don't use conditional expression with mixed 'void' types
net: hisilicon: Fix usage of uninitialized variable in function mdio_sc_cfg_reg_write()
mips: Loongson: Fix the link time qualifier of 'serial_exit()'
MIPS: init: Prevent adding memory before PHYS_OFFSET
MIPS: init: Fix reservation of memory between PHYS_OFFSET and mem start
MIPS: VDSO: Fix build for binutils < 2.25
MIPS: VDSO: Remove unused gettimeofday.c
MIPS: Wire up clone3 syscall
char/random: Add a newline at the end of the file
xen/xenbus: fix self-deadlock after killing user process
selftests: watchdog: Add command line option to show watchdog_info
selftests: watchdog: Validate optional file argument
dt-bindings: phy: lantiq: Fix Property Name
dt-bindings: iio: ad7192: Fix DTC warning in the example
dt-bindings: iio: ad7192: Fix Regulator Properties
dt-bindings: media: rc: Fix redundant string
dt-bindings: dsp: Fix fsl,dsp example
drm/amd/display: fix dcn21 Makefile for clang
drm/amd/display: hide an unused variable
drm/amdgpu: display_mode_vba_21: remove uint typedef
drm/amdgpu: hide another #warning
drm/amdgpu: make pmu support optional, again
drm/amd/display: memory leak
drm/amdgpu: fix multiple memory leaks in acp_hw_init
drm/amdgpu: return tcc_disabled_mask to userspace
drm/amdgpu: don't increment vram lost if we are in hibernation
Revert "drm/amdgpu: disable stutter mode for renoir"
drm/amd/powerplay: add sensor lock support for smu
drm/amd/powerplay: change metrics update period from 1ms to 100ms
drm/amdgpu: revert "disable bulk moves for now"
MIPS: octeon: Include required header; fix octeon ethernet build
ptp_qoriq: Initialize the registers' spinlock before calling ptp_qoriq_settime
net: dsa: sja1105: Fix sleeping while atomic in .port_hwtstamp_set
net: dsa: sja1105: Initialize the meta_lock
net/rds: Fix error handling in rds_ib_add_one()
net: dsa: rtl8366: Check VLAN ID and not ports
mlx5: avoid 64-bit division in dr_icm_pool_mr_create()
tipc: fix unlimited bundling of small messages
xen/efi: have a common runtime setup function
hwmon: (nct7904) Add array fan_alarm and vsen_alarm to store the alarms in nct7904_data struct.
docs: hwmon: Include 'inspur-ipsps1.rst' into docs
hwmon: Fix HWMON_P_MIN_ALARM mask
hwmon: (k10temp) Update documentation and add temp2_input info
hwmon: (nct7904) Fix the incorrect value of vsen_mask in nct7904_data struct
nfs: Fix nfsi->nrequests count error on nfs_inode_remove_request
USB: serial: option: add Telit FN980 compositions
USB: serial: ftdi_sio: add device IDs for Sienna and Echelon PL-20
arm: xen: mm: use __GPF_DMA32 for arm64
xen-netfront: do not use ~0U as error return value for xennet_fill_frags()
ipv6: Handle race in addrconf_dad_work
tcp: adjust rto_base in retransmits_timed_out()
vsock: Fix a lockdep warning in __vsock_release()
hso: fix NULL-deref on tty open
riscv: Fix memblock reservation for device tree blob
RISC-V: Clear load reservations while restoring hart contexts
MIPS: cpu-bugs64: Mark inline functions as __always_inline
xen/balloon: Clear PG_offline in balloon_retrieve()
xen/balloon: Mark pages PG_offline in balloon_append()
xen/balloon: Drop __balloon_append()
xen/balloon: Set pages PageOffline() in balloon_add_region()
ARM: xen: unexport HYPERVISOR_platform_op function
selftests/kselftest/runner.sh: Add 45 second timeout per test
kselftest: exclude failed TARGETS from runlist
membarrier: Fix RCU locking bug caused by faulty merge
kselftest: add capability to skip chosen TARGETS
Drivers: hv: vmbus: Fix harmless building warnings without CONFIG_PM_SLEEP
HID: hyperv: Use in-place iterator API in the channel callback
x86: Use the correct SPDX License Identifier in headers
btrfs: allocate new inode in NOFS context
ARM: dts: ux500: Fix up the CPU thermal zone
btrfs: fix balance convert to single on 32-bit host CPUs
net: ag71xx: fix mdio subnode support
net: stmmac: xgmac: Fix RSS writing wrong keys
net: stmmac: xgmac: Fix RSS not writing all Keys to HW
net: stmmac: xgmac: Disable the Timestamp interrupt by default
net: stmmac: Do not stop PHY if WoL is enabled
net: stmmac: Correctly take timestamp for PTPv2
net: stmmac: dwmac4: Always update the MAC Hash Filter
net: stmmac: selftests: Always use max DMA size in Jumbo Test
net: stmmac: xgmac: Detect Hash Table size dinamically
net: stmmac: xgmac: Not all Unicast addresses may be available
devlink: Fix error handling in param and info_get dumpit cb
net: dsa: rtl8366rb: add missing of_node_put after calling of_get_child_by_name
net: mscc: ocelot: add missing of_node_put after calling of_get_child_by_name
net: sched: cbs: Avoid division by zero when calculating the port rate
net: sched: taprio: Avoid division by zero on invalid link speed
netfilter: nft_connlimit: disable bh on garbage collection
netfilter: drop bridge nf reset from nf_reset
btrfs: fix incorrect updating of log root tree
Btrfs: fix memory leak due to concurrent append writes with fiemap
ionic: select CONFIG_NET_DEVLINK
docs: networking: Add title caret and missing doc
selftests: Add kselftest-all and kselftest-install targets
net: socionext: netsec: always grab descriptor lock
mac80211: keep BHs disabled while calling drv_tx_wake_queue()
mac80211: fix txq null pointer dereference
nl80211: fix null pointer dereference
cfg80211: initialize on-stack chandefs
cfg80211: validate SSID/MBSSID element ordering assumption
nl80211: validate beacon head
Revert "s390/dasd: Add discard support for ESE volumes"
s390/dasd: Fix error handling during online processing
io_uring: use __kernel_timespec in timeout ABI
loop: change queue block size to match when using DIO
RDMA/iwcm: Fix a lock inversion issue
RDMA/iw_cxgb4: fix SRQ access from dump_qp()
RDMA/hfi1: Prevent memory leak in sdma_init
RDMA/core: Fix use after free and refcnt leak on ndev in_device in iwarp_query_port
RDMA/siw: Fix serialization issue in write_space()
RDMA/vmw_pvrdma: Free SRQ only once
perf_event_open: switch to copy_struct_from_user()
sched_setattr: switch to copy_struct_from_user()
clone3: switch to copy_struct_from_user()
lib: introduce copy_struct_from_user() helper
kvm: vmx: Limit guest PMCs to those supported on the host
crypto: arm/aes-ce - add dependency on AES library
crypto: arm/aes-ce - build for v8 architecture explicitly
docs: arm64: Fix indentation and doc formatting
arm64/sve: Fix wrong free for task->thread.sve_state
arm64: errata: Update stale comment
gpio: eic: sprd: Fix the incorrect EIC offset when toggling
gpio: fix getting nonexclusive gpiods from DT
gpiolib: don't clear FLAG_IS_OUT when emulating open-drain/open-source
ANDROID: sched/fair: Bias EAS placement for latency
ANDROID: sched: Introduce uclamp latency and boost wrapper
ANDROID: sched/core: Add a latency-sensitive flag to uclamp
ANDROID: arm64: defconfig: Enable EAS by default
ANDROID: sched/fair: Also do misfit in overloaded groups
ANDROID: sched/fair: Don't balance misfits if it would overload local group
ANDROID: sched/fair: Attempt to improve throughput for asym cap systems
ANDROID: sched: Prevent unnecessary active balance of single task in sched group
ANDROID: sched: Update max cpu capacity in case of max frequency constraints
ANDROID: arm: enable max frequency capping
ANDROID: arm64: enable max frequency capping
ANDROID: cpufreq: arch_topology: implement max frequency capping
ANDROID: sched/fair: add arch scaling function for max frequency capping
ANDROID: sched: Unconditionally honor sync flag for energy-aware wakeups
ANDROID: sched/fair: EAS: Add uclamp support to find_energy_efficient_cpu()
s390/qdio: clarify size of the QIB parm area
s390/cpumf: Fix indentation in sampling device driver
s390/cpumsf: Check for CPU Measurement sampling
s390/cpumf: Use consistant debug print format
xen/efi: Set nonblocking callbacks
staging: rtl8188eu: fix HighestRate check in odm_ARFBRefresh_8188E()
staging: rtl8188eu: fix null dereference when kzalloc fails
staging: bcm2835-audio: Fix draining behavior regression
staging/fbtft: Remove flexfb
staging/fbtft: Remove fbtft_device
staging/fbtft: Depend on OF
staging: octeon: Use "(uintptr_t)" to cast from pointer to int
staging: exfat: Fix a typo in Kconfig
staging: exfat - fix SPDX tags..
staging: exfat: add missing SPDX line to Kconfig
net: sched: taprio: Fix potential integer overflow in taprio_set_picos_per_byte
net: dsa: sja1105: Prevent leaking memory
modpost: fix static EXPORT_SYMBOL warnings for UML build
kbuild: correct formatting of header in kbuild module docs
kbuild: remove SUBDIRS support
net: dsa: sja1105: Ensure PTP time for rxtstamp reconstruction is not in the past
kbuild: remove ar-option and KBUILD_ARFLAGS
net: Unpublish sk from sk_reuseport_cb before call_rcu
MIPS: dts: ar9331: fix interrupt-controller size
MIPS: Loongson64: Fix boot failure after dropping boot_mem_map
erofs: fix mis-inplace determination related with noio chain
erofs: fix erofs_get_meta_page locking due to a cleanup
MAINTAINERS: erofs: complete sub-entries for erofs
erofs: fix return value check in erofs_read_superblock()
selftests: pidfd: Fix undefined reference to pthread_create()
sched: Add __ASSEMBLY__ guards around struct clone_args
perf annotate: Don't return -1 for error when doing BPF disassembly
perf annotate: Return appropriate error code for allocation failures
perf annotate: Fix arch specific ->init() failure errors
perf annotate: Propagate the symbol__annotate() error return
perf annotate: Fix the signedness of failure returns
perf annotate: Propagate perf_env__arch() error
perf evsel: Fall back to global 'perf_env' in perf_evsel__env()
perf tools: Propagate get_cpuid() error
perf jevents: Fix period for Intel fixed counters
perf script brstackinsn: Fix recovery from LBR/binary mismatch
perf docs: Correct and clarify jitdump spec
perf inject jit: Fix JIT_CODE_MOVE filename
perf map: Fix overlapped map handling
perf vendor events s390: Use s390 machine name instead of type 8561
perf vendor events s390: Add JSON transaction for machine type 8561
perf llvm: Don't access out-of-scope array
tools headers kvm: Sync kvm headers with the kernel sources
tools headers uapi: Sync linux/fs.h with the kernel sources
tools headers uapi: Sync linux/usbdevice_fs.h with the kernel sources
tools headers uapi: Sync asm-generic/mman-common.h with the kernel
arm64/ARM: configs: Change CONFIG_REMOTEPROC from m to y
erspan: remove the incorrect mtu limit for erspan
sch_cbq: validate TCA_CBQ_WRROPT to avoid crash
net: dsa: qca8k: Use up to 7 ports for all operations
kvm: x86, powerpc: do not allow clearing largepages debugfs entry
ARM: dts: am4372: Set memory bandwidth limit for DISPC
drm/tilcdc: include linux/pinctrl/consumer.h again
ieee802154: ca8210: prevent memory leak
blk-mq: apply normal plugging for HDD
blk-mq: honor IO scheduler for multiqueue devices
nvme-rdma: fix possible use-after-free in connect timeout
KVM: selftests: x86: clarify what is reported on KVM_GET_MSRS failure
KVM: VMX: Set VMENTER_L1D_FLUSH_NOT_REQUIRED if !X86_BUG_L1TF
tick: broadcast-hrtimer: Fix a race in bc_set_next
tools headers uapi: Sync drm/i915_drm.h with the kernel sources
perf docs: Allow man page date to be specified
perf tests: Avoid raising SEGV using an obvious NULL dereference
libsubcmd: Make _FORTIFY_SOURCE defines dependent on the feature
selftests: kvm: add test for dirty logging inside nested guests
KVM: x86: fix nested guest live migration with PML
KVM: x86: assign two bits to track SPTE kinds
drm/komeda: prevent memory leak in komeda_wb_connector_add
nvme: Move ctrl sqsize to generic space
KVM: x86: Expose XSAVEERPTR to the guest
kvm: x86: Enumerate support for CLZERO instruction
kvm: x86: Use AMD CPUID semantics for AMD vCPUs
kvm: x86: Improve emulation of CPUID leaves 0BH and 1FH
KVM: X86: Fix userspace set invalid CR4
kvm: x86: Fix a spurious -E2BIG in __do_cpuid_func
KVM: LAPIC: Loosen filter for adaptive tuning of lapic_timer_advance_ns
nvme: Add ctrl attributes for queue_count and sqsize
nvme: allow 64-bit results in passthru commands
nvme: Add quirk for Kingston NVME SSD running FW E8FK11.T
nvmet-tcp: remove superflous check on request sgl
Added QUIRKs for ADATA XPG SX8200 Pro 512GB
nvme-rdma: Fix max_hw_sectors calculation
nvme: fix an error code in nvme_init_subsystem()
nvme-pci: Save PCI state before putting drive into deepest state
nvme-tcp: fix wrong stop condition in io_work
ARM: OMAP2+: Fix warnings with broken omap2_set_init_voltage()
ARM: OMAP2+: Add missing LCDC midlemode for am335x
ARM: OMAP2+: Fix missing reset done flag for am3 and am43
ieee802154: mcr20a: simplify a bit 'mcr20a_handle_rx_read_buf_complete()'
ARM: dts: Fix gpio0 flags for am335x-icev2
scsi: qla2xxx: Fix Nport ID display value
scsi: qla2xxx: Fix N2N link up fail
scsi: qla2xxx: Fix N2N link reset
scsi: qla2xxx: Optimize NPIV tear down process
scsi: qla2xxx: Fix stale mem access on driver unload
scsi: qla2xxx: Fix unbound sleep in fcport delete path.
scsi: qla2xxx: Silence fwdump template message
scsi: hisi_sas: Make three functions static
scsi: megaraid: disable device when probe failed after enabled device
scsi: storvsc: setup 1:1 mapping between hardware queue and CPU queue
scsi: qedf: Remove always false 'tmp_prio < 0' statement
scsi: ufs: skip shutdown if hba is not powered
scsi: bnx2fc: Handle scope bits when array returns BUSY or TSF
nvme-pci: Fix a race in controller removal
nvmet: change ppl to lpp
ARM: omap2plus_defconfig: Enable more droid4 devices as loadable modules
ARM: omap2plus_defconfig: Enable DRM_TI_TFP410
DTS: ARM: gta04: introduce legacy spi-cs-high to make display work again
ARM: dts: Fix wrong clocks for dra7 mcasp
clk: ti: dra7: Fix mcasp8 clock bits
drm: Clear the fence pointer when writeback job signaled
drm: Free the writeback_job when it with an empty fb
Fix the locking in dcache_readdir() and friends
ieee802154: atusb: fix use-after-free at disconnect
KVM: arm/arm64: vgic: Use the appropriate TRACE_INCLUDE_PATH
arm64: KVM: Kill hyp_alternate_select()
arm64: KVM: Replace hyp_alternate_select with has_vhe()
arm64: KVM: Drop hyp_alternate_select for checking for ARM64_WORKAROUND_834220
iio: fix center temperature of bmc150-accel-core
iio: imu: st_lsm6dsx: forbid 0 sensor sensitivity
iio: adc: meson_saradc: Fix memory allocation order
Change-Id: Ic630267f367b5b05691af40c3d71c072e12ab001
[[email protected]: Resolve trivial merge conflicts and fix warning
location in scripts/gcc-wrapper.py]
Signed-off-by: Raghavendra Rao Ananta <[email protected]>
This commit is contained in:
commit
dc8cac6430
908 changed files with 40970 additions and 6759 deletions
|
|
@ -22,6 +22,8 @@
|
|||
#include <linux/smp.h>
|
||||
|
||||
DEFINE_PER_CPU(unsigned long, freq_scale) = SCHED_CAPACITY_SCALE;
|
||||
DEFINE_PER_CPU(unsigned long, max_cpu_freq);
|
||||
DEFINE_PER_CPU(unsigned long, max_freq_scale) = SCHED_CAPACITY_SCALE;
|
||||
|
||||
void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
||||
unsigned long max_freq)
|
||||
|
|
@ -31,8 +33,29 @@ void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
|
|||
|
||||
scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
|
||||
|
||||
for_each_cpu(i, cpus)
|
||||
for_each_cpu(i, cpus) {
|
||||
per_cpu(freq_scale, i) = scale;
|
||||
per_cpu(max_cpu_freq, i) = max_freq;
|
||||
}
|
||||
}
|
||||
|
||||
void arch_set_max_freq_scale(struct cpumask *cpus,
|
||||
unsigned long policy_max_freq)
|
||||
{
|
||||
unsigned long scale, max_freq;
|
||||
int cpu = cpumask_first(cpus);
|
||||
|
||||
if (cpu > nr_cpu_ids)
|
||||
return;
|
||||
|
||||
max_freq = per_cpu(max_cpu_freq, cpu);
|
||||
if (!max_freq)
|
||||
return;
|
||||
|
||||
scale = (policy_max_freq << SCHED_CAPACITY_SHIFT) / max_freq;
|
||||
|
||||
for_each_cpu(cpu, cpus)
|
||||
per_cpu(max_freq_scale, cpu) = scale;
|
||||
}
|
||||
|
||||
DEFINE_PER_CPU(unsigned long, cpu_scale) = SCHED_CAPACITY_SCALE;
|
||||
|
|
|
|||
|
|
@ -44,6 +44,10 @@ early_param("sysfs.deprecated", sysfs_deprecated_setup);
|
|||
#endif
|
||||
|
||||
/* Device links support. */
|
||||
static LIST_HEAD(wait_for_suppliers);
|
||||
static DEFINE_MUTEX(wfs_lock);
|
||||
static LIST_HEAD(deferred_sync);
|
||||
static unsigned int defer_sync_state_count = 1;
|
||||
|
||||
#ifdef CONFIG_SRCU
|
||||
static DEFINE_MUTEX(device_links_lock);
|
||||
|
|
@ -430,6 +434,58 @@ struct device_link *device_link_add(struct device *consumer,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(device_link_add);
|
||||
|
||||
/**
|
||||
* device_link_wait_for_supplier - Add device to wait_for_suppliers list
|
||||
* @consumer: Consumer device
|
||||
*
|
||||
* Marks the @consumer device as waiting for suppliers to become available by
|
||||
* adding it to the wait_for_suppliers list. The consumer device will never be
|
||||
* probed until it's removed from the wait_for_suppliers list.
|
||||
*
|
||||
* The caller is responsible for adding the links to the supplier devices once
|
||||
* they are available and removing the @consumer device from the
|
||||
* wait_for_suppliers list once links to all the suppliers have been created.
|
||||
*
|
||||
* This function is NOT meant to be called from the probe function of the
|
||||
* consumer but rather from code that creates/adds the consumer device.
|
||||
*/
|
||||
static void device_link_wait_for_supplier(struct device *consumer)
|
||||
{
|
||||
mutex_lock(&wfs_lock);
|
||||
list_add_tail(&consumer->links.needs_suppliers, &wait_for_suppliers);
|
||||
mutex_unlock(&wfs_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* device_link_add_missing_supplier_links - Add links from consumer devices to
|
||||
* supplier devices, leaving any
|
||||
* consumer with inactive suppliers on
|
||||
* the wait_for_suppliers list
|
||||
*
|
||||
* Loops through all consumers waiting on suppliers and tries to add all their
|
||||
* supplier links. If that succeeds, the consumer device is removed from
|
||||
* wait_for_suppliers list. Otherwise, they are left in the wait_for_suppliers
|
||||
* list. Devices left on the wait_for_suppliers list will not be probed.
|
||||
*
|
||||
* The fwnode add_links callback is expected to return 0 if it has found and
|
||||
* added all the supplier links for the consumer device. It should return an
|
||||
* error if it isn't able to do so.
|
||||
*
|
||||
* The caller of device_link_wait_for_supplier() is expected to call this once
|
||||
* it's aware of potential suppliers becoming available.
|
||||
*/
|
||||
static void device_link_add_missing_supplier_links(void)
|
||||
{
|
||||
struct device *dev, *tmp;
|
||||
|
||||
mutex_lock(&wfs_lock);
|
||||
list_for_each_entry_safe(dev, tmp, &wait_for_suppliers,
|
||||
links.needs_suppliers)
|
||||
if (!fwnode_call_int_op(dev->fwnode, add_links, dev))
|
||||
list_del_init(&dev->links.needs_suppliers);
|
||||
mutex_unlock(&wfs_lock);
|
||||
}
|
||||
|
||||
static void device_link_free(struct device_link *link)
|
||||
{
|
||||
while (refcount_dec_not_one(&link->rpm_active))
|
||||
|
|
@ -564,6 +620,17 @@ int device_links_check_suppliers(struct device *dev)
|
|||
struct device_link *link;
|
||||
int ret = 0;
|
||||
|
||||
/*
|
||||
* Device waiting for supplier to become available is not allowed to
|
||||
* probe.
|
||||
*/
|
||||
mutex_lock(&wfs_lock);
|
||||
if (!list_empty(&dev->links.needs_suppliers)) {
|
||||
mutex_unlock(&wfs_lock);
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
mutex_unlock(&wfs_lock);
|
||||
|
||||
device_links_write_lock();
|
||||
|
||||
list_for_each_entry(link, &dev->links.suppliers, c_node) {
|
||||
|
|
@ -583,6 +650,69 @@ int device_links_check_suppliers(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __device_links_supplier_sync_state(struct device *dev)
|
||||
{
|
||||
struct device_link *link;
|
||||
|
||||
if (dev->state_synced)
|
||||
return;
|
||||
|
||||
list_for_each_entry(link, &dev->links.consumers, s_node) {
|
||||
if (!(link->flags & DL_FLAG_MANAGED))
|
||||
continue;
|
||||
if (link->status != DL_STATE_ACTIVE)
|
||||
return;
|
||||
}
|
||||
|
||||
if (dev->bus->sync_state)
|
||||
dev->bus->sync_state(dev);
|
||||
else if (dev->driver && dev->driver->sync_state)
|
||||
dev->driver->sync_state(dev);
|
||||
|
||||
dev->state_synced = true;
|
||||
}
|
||||
|
||||
void device_links_supplier_sync_state_pause(void)
|
||||
{
|
||||
device_links_write_lock();
|
||||
defer_sync_state_count++;
|
||||
device_links_write_unlock();
|
||||
}
|
||||
|
||||
void device_links_supplier_sync_state_resume(void)
|
||||
{
|
||||
struct device *dev, *tmp;
|
||||
|
||||
device_links_write_lock();
|
||||
if (!defer_sync_state_count) {
|
||||
WARN(true, "Unmatched sync_state pause/resume!");
|
||||
goto out;
|
||||
}
|
||||
defer_sync_state_count--;
|
||||
if (defer_sync_state_count)
|
||||
goto out;
|
||||
|
||||
list_for_each_entry_safe(dev, tmp, &deferred_sync, links.defer_sync) {
|
||||
__device_links_supplier_sync_state(dev);
|
||||
list_del_init(&dev->links.defer_sync);
|
||||
}
|
||||
out:
|
||||
device_links_write_unlock();
|
||||
}
|
||||
|
||||
static int sync_state_resume_initcall(void)
|
||||
{
|
||||
device_links_supplier_sync_state_resume();
|
||||
return 0;
|
||||
}
|
||||
late_initcall(sync_state_resume_initcall);
|
||||
|
||||
static void __device_links_supplier_defer_sync(struct device *sup)
|
||||
{
|
||||
if (list_empty(&sup->links.defer_sync))
|
||||
list_add_tail(&sup->links.defer_sync, &deferred_sync);
|
||||
}
|
||||
|
||||
/**
|
||||
* device_links_driver_bound - Update device links after probing its driver.
|
||||
* @dev: Device to update the links for.
|
||||
|
|
@ -627,6 +757,11 @@ void device_links_driver_bound(struct device *dev)
|
|||
|
||||
WARN_ON(link->status != DL_STATE_CONSUMER_PROBE);
|
||||
WRITE_ONCE(link->status, DL_STATE_ACTIVE);
|
||||
|
||||
if (defer_sync_state_count)
|
||||
__device_links_supplier_defer_sync(link->supplier);
|
||||
else
|
||||
__device_links_supplier_sync_state(link->supplier);
|
||||
}
|
||||
|
||||
dev->links.status = DL_DEV_DRIVER_BOUND;
|
||||
|
|
@ -743,6 +878,7 @@ void device_links_driver_cleanup(struct device *dev)
|
|||
WRITE_ONCE(link->status, DL_STATE_DORMANT);
|
||||
}
|
||||
|
||||
list_del_init(&dev->links.defer_sync);
|
||||
__device_links_no_driver(dev);
|
||||
|
||||
device_links_write_unlock();
|
||||
|
|
@ -848,6 +984,10 @@ static void device_links_purge(struct device *dev)
|
|||
{
|
||||
struct device_link *link, *ln;
|
||||
|
||||
mutex_lock(&wfs_lock);
|
||||
list_del(&dev->links.needs_suppliers);
|
||||
mutex_unlock(&wfs_lock);
|
||||
|
||||
/*
|
||||
* Delete all of the remaining links from this device to any other
|
||||
* devices (either consumers or suppliers).
|
||||
|
|
@ -1712,6 +1852,8 @@ void device_initialize(struct device *dev)
|
|||
#endif
|
||||
INIT_LIST_HEAD(&dev->links.consumers);
|
||||
INIT_LIST_HEAD(&dev->links.suppliers);
|
||||
INIT_LIST_HEAD(&dev->links.needs_suppliers);
|
||||
INIT_LIST_HEAD(&dev->links.defer_sync);
|
||||
dev->links.status = DL_DEV_NO_DRIVER;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(device_initialize);
|
||||
|
|
@ -2198,6 +2340,28 @@ int device_add(struct device *dev)
|
|||
BUS_NOTIFY_ADD_DEVICE, dev);
|
||||
|
||||
kobject_uevent(&dev->kobj, KOBJ_ADD);
|
||||
|
||||
if (dev->fwnode && !dev->fwnode->dev)
|
||||
dev->fwnode->dev = dev;
|
||||
|
||||
/*
|
||||
* Check if any of the other devices (consumers) have been waiting for
|
||||
* this device (supplier) to be added so that they can create a device
|
||||
* link to it.
|
||||
*
|
||||
* This needs to happen after device_pm_add() because device_link_add()
|
||||
* requires the supplier be registered before it's called.
|
||||
*
|
||||
* But this also needs to happe before bus_probe_device() to make sure
|
||||
* waiting consumers can link to it before the driver is bound to the
|
||||
* device and the driver sync_state callback is called for this device.
|
||||
*/
|
||||
device_link_add_missing_supplier_links();
|
||||
|
||||
if (fwnode_has_op(dev->fwnode, add_links)
|
||||
&& fwnode_call_int_op(dev->fwnode, add_links, dev))
|
||||
device_link_wait_for_supplier(dev);
|
||||
|
||||
bus_probe_device(dev);
|
||||
if (parent)
|
||||
klist_add_tail(&dev->p->knode_parent,
|
||||
|
|
@ -2342,6 +2506,9 @@ void device_del(struct device *dev)
|
|||
kill_device(dev);
|
||||
device_unlock(dev);
|
||||
|
||||
if (dev->fwnode && dev->fwnode->dev == dev)
|
||||
dev->fwnode->dev = NULL;
|
||||
|
||||
/* Notify clients of device removal. This call must come
|
||||
* before dpm_sysfs_remove().
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -241,12 +241,8 @@ struct resource *platform_get_resource_byname(struct platform_device *dev,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(platform_get_resource_byname);
|
||||
|
||||
/**
|
||||
* platform_get_irq_byname - get an IRQ for a device by name
|
||||
* @dev: platform device
|
||||
* @name: IRQ name
|
||||
*/
|
||||
int platform_get_irq_byname(struct platform_device *dev, const char *name)
|
||||
static int __platform_get_irq_byname(struct platform_device *dev,
|
||||
const char *name)
|
||||
{
|
||||
struct resource *r;
|
||||
|
||||
|
|
@ -262,11 +258,47 @@ int platform_get_irq_byname(struct platform_device *dev, const char *name)
|
|||
if (r)
|
||||
return r->start;
|
||||
|
||||
dev_err(&dev->dev, "IRQ %s not found\n", name);
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
/**
|
||||
* platform_get_irq_byname - get an IRQ for a device by name
|
||||
* @dev: platform device
|
||||
* @name: IRQ name
|
||||
*
|
||||
* Get an IRQ like platform_get_irq(), but then by name rather then by index.
|
||||
*
|
||||
* Return: IRQ number on success, negative error number on failure.
|
||||
*/
|
||||
int platform_get_irq_byname(struct platform_device *dev, const char *name)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = __platform_get_irq_byname(dev, name);
|
||||
if (ret < 0 && ret != -EPROBE_DEFER)
|
||||
dev_err(&dev->dev, "IRQ %s not found\n", name);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(platform_get_irq_byname);
|
||||
|
||||
/**
|
||||
* platform_get_irq_byname_optional - get an optional IRQ for a device by name
|
||||
* @dev: platform device
|
||||
* @name: IRQ name
|
||||
*
|
||||
* Get an optional IRQ by name like platform_get_irq_byname(). Except that it
|
||||
* does not print an error message if an IRQ can not be obtained.
|
||||
*
|
||||
* Return: IRQ number on success, negative error number on failure.
|
||||
*/
|
||||
int platform_get_irq_byname_optional(struct platform_device *dev,
|
||||
const char *name)
|
||||
{
|
||||
return __platform_get_irq_byname(dev, name);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(platform_get_irq_byname_optional);
|
||||
|
||||
/**
|
||||
* platform_add_devices - add a numbers of platform devices
|
||||
* @devs: array of platform devices to add
|
||||
|
|
|
|||
|
|
@ -104,15 +104,12 @@ static const struct attribute_group soc_attr_group = {
|
|||
.is_visible = soc_attribute_mode,
|
||||
};
|
||||
|
||||
static const struct attribute_group *soc_attr_groups[] = {
|
||||
&soc_attr_group,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static void soc_release(struct device *dev)
|
||||
{
|
||||
struct soc_device *soc_dev = container_of(dev, struct soc_device, dev);
|
||||
|
||||
ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);
|
||||
kfree(soc_dev->dev.groups);
|
||||
kfree(soc_dev);
|
||||
}
|
||||
|
||||
|
|
@ -121,6 +118,7 @@ static struct soc_device_attribute *early_soc_dev_attr;
|
|||
struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr)
|
||||
{
|
||||
struct soc_device *soc_dev;
|
||||
const struct attribute_group **soc_attr_groups;
|
||||
int ret;
|
||||
|
||||
if (!soc_bus_type.p) {
|
||||
|
|
@ -136,10 +134,18 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
|
|||
goto out1;
|
||||
}
|
||||
|
||||
soc_attr_groups = kcalloc(3, sizeof(*soc_attr_groups), GFP_KERNEL);
|
||||
if (!soc_attr_groups) {
|
||||
ret = -ENOMEM;
|
||||
goto out2;
|
||||
}
|
||||
soc_attr_groups[0] = &soc_attr_group;
|
||||
soc_attr_groups[1] = soc_dev_attr->custom_attr_group;
|
||||
|
||||
/* Fetch a unique (reclaimable) SOC ID. */
|
||||
ret = ida_simple_get(&soc_ida, 0, 0, GFP_KERNEL);
|
||||
if (ret < 0)
|
||||
goto out2;
|
||||
goto out3;
|
||||
soc_dev->soc_dev_num = ret;
|
||||
|
||||
soc_dev->attr = soc_dev_attr;
|
||||
|
|
@ -150,15 +156,15 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
|
|||
dev_set_name(&soc_dev->dev, "soc%d", soc_dev->soc_dev_num);
|
||||
|
||||
ret = device_register(&soc_dev->dev);
|
||||
if (ret)
|
||||
goto out3;
|
||||
if (ret) {
|
||||
put_device(&soc_dev->dev);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
return soc_dev;
|
||||
|
||||
out3:
|
||||
ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);
|
||||
put_device(&soc_dev->dev);
|
||||
soc_dev = NULL;
|
||||
kfree(soc_attr_groups);
|
||||
out2:
|
||||
kfree(soc_dev);
|
||||
out1:
|
||||
|
|
@ -169,8 +175,6 @@ EXPORT_SYMBOL_GPL(soc_device_register);
|
|||
/* Ensure soc_dev->attr is freed prior to calling soc_device_unregister. */
|
||||
void soc_device_unregister(struct soc_device *soc_dev)
|
||||
{
|
||||
ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);
|
||||
|
||||
device_unregister(&soc_dev->dev);
|
||||
early_soc_dev_attr = NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue