Files
kernel_google_redbull/include/linux/energy_model.h
Wilson Sung 09d634c1ac Merge android-4.19-stable (4.19.278) into android-msm-pixel-4.19-lts
Merge 4.19.278 into android-4.19-stable
Linux 4.19.278
    ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping()
    nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties
    net: caif: Fix use-after-free in cfusbl_device_notify()
    drm/i915: Don't use BAR mappings for ring buffers with LLC
  * tipc: improve function tipc_wait_for_cond()
      net/tipc/socket.c
    media: ov5640: Fix analogue gain control
  * PCI: Add SolidRun vendor ID
      include/linux/pci_ids.h
    macintosh: windfarm: Use unsigned type for 1-bit bitfields
    alpha: fix R_ALPHA_LITERAL reloc for large modules
    MIPS: Fix a compilation issue
    Revert "spi: mt7621: Fix an error message in mt7621_spi_probe()"
  * scsi: core: Remove the /proc/scsi/${proc_name} directory earlier
      drivers/scsi/hosts.c
  * kbuild: generate modules.order only in directories visited by obj-y/m
      scripts/Makefile.build
  * kbuild: fix false-positive need-builtin calculation
      scripts/Makefile.build
    udf: Detect system inodes linked into directory hierarchy
    udf: Preserve link count of system files
    udf: Remove pointless union in udf_inode_info
    udf: reduce leakage of blocks related to named streams
    udf: Explain handling of load_nls() failure
    nfc: change order inside nfc_se_io error path
  * ext4: zero i_disksize when initializing the bootloader inode
      fs/ext4/ioctl.c
  * ext4: fix WARNING in ext4_update_inline_data
      fs/ext4/xattr.c
  * ext4: move where set the MAY_INLINE_DATA flag is set
      fs/ext4/inline.c
      fs/ext4/inode.c
  * ext4: fix another off-by-one fsmap error on 1k block filesystems
      fs/ext4/fsmap.c
  * ext4: fix RENAME_WHITEOUT handling for inline directories
      fs/ext4/namei.c
    x86/CPU/AMD: Disable XSAVES on AMD family 0x17
  * fs: prevent out-of-bounds array speculation when closing a file descriptor
      fs/file.c
    Merge 4.19.277 into android-4.19-stable
Linux 4.19.277
    staging: rtl8192e: Remove call_usermodehelper starting RadioPower.sh
    staging: rtl8192e: Remove function ..dm_check_ac_dc_power calling a script
  * wifi: cfg80211: Partial revert "wifi: cfg80211: Fix use after free for wext"
      net/wireless/sme.c
    Merge 4.19.276 into android-4.19-stable
Linux 4.19.276
    thermal: intel: powerclamp: Fix cur_state for multi package system
  * f2fs: fix cgroup writeback accounting with fs-layer encryption
      fs/f2fs/data.c
    media: uvcvideo: Fix race condition with usb_kill_urb
    media: uvcvideo: Provide sync and async uvc_ctrl_status_event
  * tcp: Fix listen() regression in 4.19.270
      net/ipv4/inet_connection_sock.c
    s390/setup: init jump labels before command line parsing
    s390/maccess: add no DAT mode to kernel_write
  * Bluetooth: hci_sock: purge socket queues in the destruct() callback
      net/bluetooth/hci_sock.c
    phy: rockchip-typec: Fix unsigned comparison with less than zero
  * usb: uvc: Enumerate valid values for color matching
      include/uapi/linux/usb/video.h
    USB: ene_usb6250: Allocate enough memory for full object
    usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer math
    iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_config_word()
    iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_status_word()
    tools/iio/iio_utils:fix memory leak
    mei: bus-fixup:upon error print return values of send and receive
    tty: serial: fsl_lpuart: disable the CTS when send break signal
  * tty: fix out-of-bounds access in tty_driver_lookup_tty()
      drivers/tty/tty_io.c
  * media: uvcvideo: Silence memcpy() run-time false positive warnings
      include/uapi/linux/uvcvideo.h
    media: uvcvideo: Handle errors from calls to usb_string
    media: uvcvideo: Handle cameras with invalid descriptors
    firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 3
  * tracing: Add NULL checks for buffer in ring_buffer_free_read_page()
      kernel/trace/ring_buffer.c
    thermal: intel: quark_dts: fix error pointer dereference
    scsi: ipr: Work around fortify-string warning
    vc_screen: modify vcs_size() handling in vcs_read()
  * tcp: tcp_check_req() can be called from process context
      net/ipv4/tcp_minisocks.c
    ARM: dts: spear320-hmi: correct STMPE GPIO compatible
    nfc: fix memory leak of se_io context in nfc_genl_se_io
    9p/rdma: unmap receive dma buffer in rdma_request()/post_recv()
    9p/xen: fix connection sequence
    9p/xen: fix version parsing
  * net: fix __dev_kfree_skb_any() vs drop monitor
      net/core/dev.c
  * netfilter: ctnetlink: fix possible refcount leak in ctnetlink_create_conntrack()
      net/netfilter/nf_conntrack_netlink.c
    watchdog: pcwd_usb: Fix attempting to access uninitialized memory
  * watchdog: Fix kmemleak in watchdog_cdev_register
      drivers/watchdog/watchdog_dev.c
    watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in error path
    x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber list
    ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed
    ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show()
    ubifs: ubifs_writepage: Mark page dirty after writing inode failed
    ubifs: dirty_cow_znode: Fix memleak in error handling path
    ubifs: Re-statistic cleaned znode count if commit failed
    ubi: Fix possible null-ptr-deref in ubi_free_volume()
    ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume()
    ubi: Fix use-after-free when volume resizing failed
    ubifs: Reserve one leb for each journal head while doing budget
    ubifs: do_rename: Fix wrong space budget when target inode's nlink > 1
    ubifs: Fix wrong dirty space budget for dirty inode
    ubifs: Rectify space budget for ubifs_xrename()
    ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted
    ubi: ensure that VID header offset + VID header size <= alloc, size
    um: vector: Fix memory leak in vector_config
    pwm: stm32-lp: fix the check on arr and cmp registers update
    fs/jfs: fix shift exponent db_agl2size negative
  * net/sched: Retire tcindex classifier
      net/sched/Kconfig
      net/sched/Makefile
  * kbuild: Port silent mode detection to future gnu make.
      Makefile
    wifi: ath9k: use proper statements in conditionals
    drm/radeon: Fix eDP for single-display iMac11,2
  * PCI: Avoid FLR for AMD FCH AHCI adapters
      drivers/pci/quirks.c
    scsi: ses: Fix slab-out-of-bounds in ses_intf_remove()
    scsi: ses: Fix possible desc_ptr out-of-bounds accesses
    scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses
    scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process()
    scsi: ses: Don't attach if enclosure has no components
    scsi: qla2xxx: Fix erroneous link down
    scsi: qla2xxx: Fix link failure in NPIV environment
    ktest.pl: Add RUN_TIMEOUT option with default unlimited
    ktest.pl: Fix missing "end_monitor" when machine check fails
    ktest.pl: Give back console on Ctrt^C on monitor
    media: ipu3-cio2: Fix PM runtime usage_count in driver unbind
    mips: fix syscall_get_nr
    alpha: fix FEN fault handling
    rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails
    ARM: dts: exynos: correct TMU phandle in Odroid XU
    ARM: dts: exynos: correct TMU phandle in Exynos4
    dm flakey: don't corrupt the zero page
    dm flakey: fix logic when corrupting a bio
  * wifi: cfg80211: Fix use after free for wext
      net/wireless/sme.c
    wifi: rtl8xxxu: Use a longer retry limit of 48
  * ext4: refuse to create ea block when umounted
      fs/ext4/xattr.c
  * ext4: optimize ea_inode block expansion
      fs/ext4/xattr.c
    ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls()
  * irqdomain: Drop bogus fwspec-mapping error handling
      kernel/irq/irqdomain.c
  * irqdomain: Fix disassociation race
      kernel/irq/irqdomain.c
  * irqdomain: Fix association race
      kernel/irq/irqdomain.c
  * ima: Align ima_file_mmap() parameters with mmap_file LSM hook
      include/linux/ima.h
      security/security.c
    Documentation/hw-vuln: Document the interaction between IBRS and STIBP
    x86/speculation: Allow enabling STIBP with legacy IBRS
    x86/microcode/AMD: Fix mixed steppings support
    x86/microcode/AMD: Add a @cpu parameter to the reloading functions
    x86/microcode/amd: Remove load_microcode_amd()'s bsp parameter
  * x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe range
      include/linux/kprobes.h
  * x86/kprobes: Fix __recover_optprobed_insn check optimizing logic
      include/linux/kprobes.h
    x86/reboot: Disable SVM, not just VMX, when stopping CPUs
    x86/reboot: Disable virtualization in an emergency if SVM is supported
    x86/crash: Disable virt in core NMI crash handler to avoid double shootdown
    x86/virt: Force GIF=1 prior to disabling SVM (for reboot flows)
    udf: Fix file corruption when appending just after end of preallocated extent
    udf: Do not update file length for failed writes to inline files
    udf: Do not bother merging very long extents
    udf: Truncate added extents on failed expansion
    ocfs2: fix non-auto defrag path not working issue
    ocfs2: fix defrag path triggering jbd2 ASSERT
  * f2fs: fix information leak in f2fs_move_inline_dirents()
      fs/f2fs/inline.c
    fs: hfsplus: fix UAF issue in hfsplus_put_super
    hfs: fix missing hfs_bnode_get() in __hfs_bnode_create
    ARM: dts: exynos: correct HDMI phy compatible in Exynos4
    s390/kprobes: fix current_kprobe never cleared after kprobes reenter
    s390/kprobes: fix irq mask clobbering on kprobe reenter from post_handler
    s390: discard .interp section
  * rtc: pm8xxx: fix set-alarm race
      drivers/rtc/rtc-pm8xxx.c
    firmware: coreboot: framebuffer: Ignore reserved pixel color bits
    wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu
    dm cache: add cond_resched() to various workqueue loops
    dm thin: add cond_resched() to various workqueue loops
    pinctrl: at91: use devm_kasprintf() to avoid potential leaks
    regulator: s5m8767: Bounds check id indexing into arrays
    regulator: max77802: Bounds check regulator id against opmode
    ASoC: kirkwood: Iterate over array indexes instead of using pointer math
    docs/scripts/gdb: add necessary make scripts_gdb step
    drm/msm/dsi: Add missing check for alloc_ordered_workqueue
    drm/radeon: free iio for atombios when driver shutdown
    drm/amd/display: Fix potential null-deref in dm_resume
    net/mlx5: fw_tracer: Fix debug print
    ACPI: video: Fix Lenovo Ideapad Z570 DMI match
    m68k: Check syscall_trace_enter() return code
    net: bcmgenet: Add a check for oversized packets
    ACPI: Don't build ACPICA with '-Os'
  * inet: fix fast path in __inet_hash_connect()
      net/ipv4/inet_hashtables.c
    wifi: brcmfmac: ensure CLM version is null-terminated to prevent stack-out-of-bounds
    x86/bugs: Reset speculation control settings on init
  * timers: Prevent union confusion from unexpected restart_syscall()
      kernel/time/hrtimer.c
      kernel/time/posix-timers.c
    thermal: intel: Fix unsigned comparison with less than zero
  * rcu: Suppress smp_processor_id() complaint in synchronize_rcu_expedited_wait()
      kernel/rcu/tree_exp.h
    wifi: brcmfmac: Fix potential stack-out-of-bounds in brcmf_c_preinit_dcmds()
    ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phy
    udf: Define EFSCORRUPTED error code
  * rpmsg: glink: Avoid infinite loop on intent for missing channel
      drivers/rpmsg/qcom_glink_native.c
    media: usb: siano: Fix use after free bugs caused by do_submit_urb
    media: i2c: ov7670: 0 instead of -EINVAL was returned
    media: rc: Fix use-after-free bugs caused by ene_tx_irqsim()
    media: i2c: ov772x: Fix memleak in ov772x_probe()
    powerpc: Remove linker flag from KBUILD_AFLAGS
    media: platform: ti: Add missing check for devm_regulator_get
    MIPS: vpe-mt: drop physical_memsize
    powerpc/rtas: ensure 4KB alignment for rtas_data_buf
    powerpc/rtas: make all exports GPL
    powerpc/pseries/lparcfg: add missing RTAS retry status handling
  * clk: Honor CLK_OPS_PARENT_ENABLE in clk_core_is_enabled()
      drivers/clk/clk.c
    powerpc/powernv/ioda: Skip unallocated resources when mapping to PE
    Input: ads7846 - don't check penirq immediately for 7845
    Input: ads7846 - don't report pressure for ads7845
    mtd: rawnand: sunxi: Fix the size of the last OOB region
    mfd: pcf50633-adc: Fix potential memleak in pcf50633_adc_async_read()
    selftests/ftrace: Fix bash specific "==" operator
    sparc: allow PM configs for sparc32 COMPILE_TEST
    perf tools: Fix auto-complete on aarch64
    perf llvm: Fix inadvertent file creation
    gfs2: jdata writepage fix
    cifs: Fix warning and UAF when destroy the MR list
    cifs: Fix lost destroy smbd connection when MR allocate failed
    nfsd: fix race to check ls_layouts
  * dm: remove flush_scheduled_work() during local_exit()
      drivers/md/dm.c
    hwmon: (mlxreg-fan) Return zero speed for broken fan
    spi: bcm63xx-hsspi: Fix multi-bit mode setting
    spi: bcm63xx-hsspi: fix pm_runtime
    scsi: aic94xx: Add missing check for dma_map_single()
    hwmon: (ltc2945) Handle error case in ltc2945_value_store
    gpio: vf610: connect GPIO label to dev name
  * ASoC: soc-compress.c: fixup private_data on snd_soc_new_compress()
      sound/soc/soc-compress.c
    drm/mediatek: Clean dangling pointer on bind error path
    drm/mediatek: Drop unbalanced obj unref
    gpu: host1x: Don't skip assigning syncpoints to channels
    drm/msm/dpu: Add check for pstates
    drm/msm: use strscpy instead of strncpy
  * drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightness
      drivers/gpu/drm/drm_mipi_dsi.c
      include/drm/drm_mipi_dsi.h
    ALSA: hda/ca0132: minor fix for allocation size
    pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups
    pinctrl: pinctrl-rockchip: Fix a bunch of kerneldoc misdemeanours
    drm/msm/hdmi: Add missing check for alloc_ordered_workqueue
    gpu: ipu-v3: common: Add of_node_put() for reference returned by of_graph_get_port_by_id()
    drm/vc4: dpi: Fix format mapping for RGB565
    drm/vc4: dpi: Add option for inverting pixel clock and output enable
  * drm: Clarify definition of the DRM_BUS_FLAG_(PIXDATA|SYNC)_* macros
      include/drm/drm_connector.h
    drm/bridge: megachips: Fix error handling in i2c_register_driver()
  * drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXC
      drivers/gpu/drm/mxsfb/Kconfig
    selftest: fib_tests: Always cleanup before exit
    irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts
    irqchip/irq-brcmstb-l2: Set IRQ_LEVEL for level triggered interrupts
    can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a bus error
    wifi: mac80211: make rate u32 in sta_set_rate_info_rx()
    crypto: crypto4xx - Call dma_unmap_page when done
    wifi: mwifiex: fix loop iterator in mwifiex_update_ampdu_txwinsize()
    wifi: iwl4965: Add missing check for create_singlethread_workqueue()
    wifi: iwl3945: Add missing check for create_singlethread_workqueue
    RISC-V: time: initialize hrtimer based broadcast clock event device
    m68k: /proc/hardware should depend on PROC_FS
  * crypto: rsa-pkcs1pad - Use akcipher_request_complete
      crypto/rsa-pkcs1pad.c
    rds: rds_rm_zerocopy_callback() correct order for list_add_tail()
    libbpf: Fix alen calculation in libbpf_nla_dump_errormsg()
  * Bluetooth: L2CAP: Fix potential user-after-free
      net/bluetooth/l2cap_core.c
      net/bluetooth/l2cap_sock.c
    irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe
    irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains
    net/mlx5: Enhance debug print in page allocation failure
    powercap: fix possible name leak in powercap_register_zone()
  * crypto: seqiv - Handle EBUSY correctly
      crypto/seqiv.c
    ACPI: battery: Fix missing NUL-termination with large strings
    wifi: ath9k: Fix potential stack-out-of-bounds write in ath9k_wmi_rsp_callback()
    wifi: ath9k: hif_usb: clean up skbs if ath9k_hif_usb_rx_stream() fails
    ath9k: htc: clean up statistics macros
    ath9k: hif_usb: simplify if-if to if-else
    wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback function
    wifi: orinoco: check return value of hermes_write_wordrec()
    ACPICA: nsrepair: handle cases without a return value correctly
  * lib/mpi: Fix buffer overrun when SG is too long
      lib/mpi/mpicoder.c
  * genirq: Fix the return type of kstat_cpu_irqs_sum()
      include/linux/kernel_stat.h
    ACPICA: Drop port I/O validation for some regions
    wifi: wl3501_cs: don't call kfree_skb() under spin_lock_irqsave()
    wifi: libertas: cmdresp: don't call kfree_skb() under spin_lock_irqsave()
    wifi: libertas: main: don't call kfree_skb() under spin_lock_irqsave()
    wifi: libertas: if_usb: don't call kfree_skb() under spin_lock_irqsave()
    wifi: libertas_tf: don't call kfree_skb() under spin_lock_irqsave()
    wifi: brcmfmac: unmap dma buffer in brcmf_msgbuf_alloc_pktid()
    wifi: brcmfmac: fix potential memory leak in brcmf_netdev_start_xmit()
    wifi: ipw2200: fix memory leak in ipw_wdev_init()
    wifi: ipw2x00: don't call dev_kfree_skb() under spin_lock_irqsave()
    ipw2x00: switch from 'pci_' to 'dma_' API
    wifi: rtlwifi: Fix global-out-of-bounds bug in _rtl8812ae_phy_set_txpower_limit()
    rtlwifi: fix -Wpointer-sign warning
    wifi: rtl8xxxu: don't call dev_kfree_skb() under spin_lock_irqsave()
    wifi: libertas: fix memory leak in lbs_init_adapter()
    wifi: rsi: Fix memory leak in rsi_coex_attach()
    block: bio-integrity: Copy flags when bio_integrity_payload is cloned
  * blk-mq: remove stale comment for blk_mq_sched_mark_restart_hctx
      block/blk-mq-sched.c
    arm64: dts: mediatek: mt7622: Add missing pwm-cells to pwm node
    arm64: dts: amlogic: meson-gxl: add missing unit address to eth-phy-mux node name
    arm64: dts: amlogic: meson-gx: add missing unit address to rng node name
    arm64: dts: amlogic: meson-gx: add missing SCPI sensors compatible
    arm64: dts: amlogic: meson-axg: fix SCPI clock dvfs node name
    arm64: dts: meson-axg: enable SCPI
    arm64: dts: amlogic: meson-gx: fix SCPI clock dvfs node name
    ARM: imx: Call ida_simple_remove() for ida_simple_get
    ARM: dts: exynos: correct wr-active property in Exynos3250 Rinato
    ARM: OMAP1: call platform_device_put() in error case in omap1_dm_timer_init()
    arm64: dts: meson-gx: Fix the SCPI DVFS node name and unit address
    arm64: dts: meson-gx: Fix Ethernet MAC address unit name
    ARM: zynq: Fix refcount leak in zynq_early_slcr_init
    ARM: OMAP2+: Fix memory leak in realtime_counter_init()
    HID: asus: use spinlock to safely schedule workers
    HID: asus: use spinlock to protect concurrent accesses
    HID: asus: Remove check for same LED brightness on set
    Merge 4.19.275 into android-4.19-stable
Linux 4.19.275
  * USB: core: Don't hold device lock while reading the "descriptors" sysfs file
      drivers/usb/core/hub.c
      drivers/usb/core/sysfs.c
    USB: serial: option: add support for VW/Skoda "Carstick LTE"
    dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size
    vc_screen: don't clobber return value in vcs_read
  * net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues().
      net/core/stream.c
    IB/hfi1: Assign npages earlier
    btrfs: send: limit number of clones and allocated memory size
    ACPI: NFIT: fix a potential deadlock during NFIT teardown
    ARM: dts: rockchip: add power-domains property to dp node on rk3288
  * UPSTREAM: selinux: check return value of sel_make_avc_files
      security/selinux/selinuxfs.c
    UPSTREAM: lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test
    UPSTREAM: wireguard: ratelimiter: use kvcalloc() instead of kvzalloc()
    UPSTREAM: wireguard: receive: drop handshakes if queue lock is contended
    UPSTREAM: wireguard: receive: use ring buffer for incoming handshakes
  * UPSTREAM: wireguard: device: reset peer src endpoint when netns exits
      include/net/dst_cache.h
      net/core/dst_cache.c
    UPSTREAM: wireguard: selftests: actually test for routing loops
    UPSTREAM: kasan: fix tag for large allocations when using CONFIG_SLAB
  * UPSTREAM: usb: musb: select GENERIC_PHY instead of depending on it
      drivers/usb/musb/Kconfig
  * UPSTREAM: driver core: Reject pointless SYNC_STATE_ONLY device links
      drivers/base/core.c
  * BACKPORT: PM: EM: Fix inefficient states detection
      kernel/power/energy_model.c
  * UPSTREAM: cfg80211: scan: fix RCU in cfg80211_add_nontrans_list()
      net/wireless/scan.c
  * UPSTREAM: thermal/core: Fix thermal_cooling_device_register() prototype
      include/linux/thermal.h
  * UPSTREAM: PM: EM: Increase energy calculation precision
      include/linux/energy_model.h
      kernel/power/energy_model.c
    UPSTREAM: lib/test_stackinit: Fix static initializer test
    BACKPORT: userfaultfd: do not untag user pointers
    UPSTREAM: net/xfrm/compat: Copy xfrm_spdattr_type_t atributes
  * UPSTREAM: sched/uclamp: Ignore max aggregation if rq is idle
      kernel/sched/sched.h
  * UPSTREAM: net: xfrm: fix memory leak in xfrm_user_rcv_msg
      net/xfrm/xfrm_user.c
  * UPSTREAM: f2fs: Advertise encrypted casefolding in sysfs
      fs/f2fs/sysfs.c
  * UPSTREAM: fuse: ignore PG_workingset after stealing
      fs/fuse/dev.c
  * BACKPORT: loop: Fix missing discard support when using LOOP_CONFIGURE
      drivers/block/loop.c
  * BACKPORT: nvmem: core: add a missing of_node_put
      drivers/nvmem/core.c
  * UPSTREAM: usb: typec: mux: Fix copy-paste mistake in typec_mux_match
      drivers/usb/typec/mux.c
    Merge 4.19.274 into android-4.19-stable
Linux 4.19.274
  * bpf: add missing header file include
      kernel/bpf/core.c
  * ext4: Fix function prototype mismatch for ext4_feat_ktype
      fs/ext4/sysfs.c
    wifi: mwifiex: Add missing compatible string for SD8787
  * uaccess: Add speculation barrier to copy_from_user()
      include/linux/nospec.h
      kernel/bpf/core.c
      lib/usercopy.c
    mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
    drm/i915/gvt: fix double free bug in split_2MB_gtt_entry
  * alarmtimer: Prevent starvation by small intervals and SIG_IGN
      kernel/time/alarmtimer.c
    powerpc: dts: t208x: Disable 10G on MAC1 and MAC2
    can: kvaser_usb: hydra: help gcc-13 to figure out cmd_len
  * random: always mix cycle counter in add_latent_entropy()
      include/linux/random.h
    powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G
    wifi: rtl8xxxu: gen2: Turn on the rate control
  * BACKPORT: fscrypt: fix derivation of SipHash keys on big endian CPUs
      fs/crypto/keysetup.c
    UPSTREAM: wireguard: allowedips: free empty intermediate nodes when removing single node
    BACKPORT: wireguard: allowedips: allocate nodes in kmem_cache
    Merge "Merge 4.19.273 into android-4.19-stable" into android-4.19-stable
    Merge 4.19.273 into android-4.19-stable
Linux 4.19.273
    net: phy: meson-gxl: Add generic dummy stubs for MMD register access
    nilfs2: fix underflow in second superblock position calculations
    kvm: initialize all of the kvm_debugregs structure before sending it to userspace
    i40e: Add checking for null for nlmsg_find_attr()
  * ipv6: Fix tcp socket connection with DSCP.
      net/ipv6/tcp_ipv6.c
  * ipv6: Fix datagram socket connection with DSCP.
      net/ipv6/datagram.c
    net: mpls: fix stale pointer if allocation fails during device rename
    net: stmmac: Restrict warning on disabling DMA store and fwd mode
    bnxt_en: Fix mqprio and XDP ring checking logic
    net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence
    net/usb: kalmia: Don't pass act_len in usb_bulk_msg error path
  * dccp/tcp: Avoid negative sk_forward_alloc by ipv6_pinfo.pktoptions.
      include/net/sock.h
      net/ipv6/tcp_ipv6.c
    net: bgmac: fix BCM5358 support by setting correct flags
    i40e: add double of VLAN header when computing the max MTU
    revert "squashfs: harden sanity check in squashfs_read_xattr_id_table"
  * hugetlb: check for undefined shift on 32 bit architectures
      include/linux/hugetlb.h
    ALSA: hda/realtek - fixed wrong gpio assigned
    ALSA: hda/conexant: add a new hda codec SN6180
    mmc: sdio: fix possible resource leaks in some error paths
    Revert "x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN"
    netfilter: nft_tproxy: restrict to prerouting hook
  * aio: fix mremap after fork null-deref
      fs/aio.c
    nvme-fc: fix a missing queue put in nvmet_fc_ls_create_association
    net/rose: Fix to not accept on connected socket
    tools/virtio: fix the vringh test for virtio ring changes
    ASoC: cs42l56: fix DT probe
    migrate: hugetlb: check for hugetlb shared PMD in node migration
  * bpf: Always return target ifindex in bpf_fib_lookup
      net/core/filter.c
    arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive
    arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive
    riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte
    usb: typec: altmodes/displayport: Fix probe pin assign check
  * usb: core: add quirk for Alcor Link AK9563 smartcard reader
      drivers/usb/core/quirks.c
    net: USB: Fix wrong-direction WARNING in plusb.c
    pinctrl: intel: Restore the pins that used to be in Direct IRQ mode
    pinctrl: intel: Convert unsigned to unsigned int
    pinctrl: single: fix potential NULL dereference
    pinctrl: aspeed: Fix confusing types in return value
    ALSA: pci: lx6464es: fix a debug loop
    selftests: forwarding: lib: quote the sysctl values
    rds: rds_rm_zerocopy_callback() use list_first_entry()
    net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY
    net: phy: meson-gxl: add g12a support
  * net: phy: add macros for PHYID matching
      include/linux/phy.h
    IB/hfi1: Restore allocated resources on failed copyout
    ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
    btrfs: limit device extents to the device size
    iio:adc:twl6030: Enable measurement of VAC
    thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type()
    serial: 8250_dma: Fix DMA Rx rearm race
    serial: 8250_dma: Fix DMA Rx completion race
  * Squashfs: fix handling and sanity checking of xattr_ids count
      fs/squashfs/squashfs_fs.h
  * mm/swapfile: add cond_resched() in get_swap_pages()
      mm/swapfile.c
  * mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps
      fs/proc/task_mmu.c
      include/linux/hugetlb.h
    riscv: disable generation of unwind tables
    parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case
    parisc: Fix return code of pdc_iodc_print()
    iio:adc:twl6030: Enable measurements of VUSB, VBAT and others
    iio: adc: berlin2-adc: Add missing of_node_put() in error path
    iio: hid: fix the retval in accel_3d_capture_sample
    efi: Accept version 2 of memory attributes table
    watchdog: diag288_wdt: fix __diag288() inline assembly
    watchdog: diag288_wdt: do not use stack buffers for hardware data
    fbcon: Check font dimension limits
    thermal: intel: int340x: Protect trip temperature from concurrent updates
    KVM: x86/vmx: Do not skip segment attributes if unusable bit is set
    KVM: VMX: Move caching of MSR_IA32_XSS to hardware_setup()
    KVM: VMX: Move VMX specific files to a "vmx" subdirectory
    nVMX x86: Check VMX-preemption timer controls on vmentry of L2 guests
    Input: i8042 - add Clevo PCX0DX to i8042 quirk table
    Input: i8042 - add TUXEDO devices to i8042 quirk tables
    Input: i8042 - merge quirk tables
    Input: i8042 - move __initconst to fix code styling warning
    vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
  * usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait
      drivers/usb/gadget/function/f_fs.c
  * usb: dwc3: qcom: enable vbus override when in OTG dr-mode
      drivers/usb/dwc3/dwc3-qcom.c
  * usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API
      drivers/usb/dwc3/dwc3-qcom.c
    iio: adc: stm32-dfsdm: fill module aliases
    net/x25: Fix to not accept on connected socket
    i2c: rk3x: fix a bunch of kernel-doc warnings
    scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress
    scsi: target: core: Fix warning on RT kernels
    net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
    ata: libata: Fix sata_down_spd_limit() when no link speed is reported
    squashfs: harden sanity check in squashfs_read_xattr_id_table
    netrom: Fix use-after-free caused by accept on already connected socket
    ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
    bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()
    firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region
    UPSTREAM: wireguard: allowedips: remove nodes in O(1)
    UPSTREAM: wireguard: allowedips: initialize list head in selftest
    UPSTREAM: wireguard: use synchronize_net rather than synchronize_rcu
    UPSTREAM: wireguard: do not use -O3
    UPSTREAM: wireguard: selftests: make sure rp_filter is disabled on vethc
    BACKPORT: wireguard: selftests: remove old conntrack kconfig value
  * BACKPORT: usb: typec: mux: Fix matching with typec_altmode_desc
      drivers/usb/typec/mux.c
  * UPSTREAM: sched/uclamp: Fix locking around cpu_util_update_eff()
      kernel/sched/core.c
  * UPSTREAM: sched/uclamp: Fix wrong implementation of cpu.uclamp.min
      kernel/sched/core.c
    UPSTREAM: usb: musb: Fix an error message
    UPSTREAM: arm64: doc: Add brk/mmap/mremap() to the Tagged Address ABI Exceptions
  * BACKPORT: selinux: add proper NULL termination to the secclass_map permissions
      security/selinux/include/classmap.h
    UPSTREAM: crypto: arm/curve25519 - Move '.fpu' after '.arch'
    UPSTREAM: libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC
  * UPSTREAM: of: property: fw_devlink: do not link ".*,nr-gpios"
      drivers/of/property.c
    UPSTREAM: xfrm/compat: Cleanup WARN()s that can be user-triggered
    UPSTREAM: wireguard: selftests: test multiple parallel streams
    UPSTREAM: crypto: mips: add poly1305-core.S to .gitignore
  * BACKPORT: arm64: kasan: fix page_alloc tagging with DEBUG_VIRTUAL
      arch/arm64/include/asm/memory.h
  * UPSTREAM: crypto: mips/poly1305 - enable for all MIPS processors
      crypto/Kconfig
      drivers/net/Kconfig
    UPSTREAM: kbuild: do not include include/config/auto.conf from adjust_autoksyms.sh
  * UPSTREAM: wireguard: kconfig: use arm chacha even with no neon
      drivers/net/Kconfig
    UPSTREAM: wireguard: queueing: get rid of per-peer ring buffers
    UPSTREAM: wireguard: device: do not generate ICMP for non-IP packets
    BACKPORT: mac80211_hwsim: notify wmediumd of used MAC addresses
    BACKPORT: mac80211_hwsim: add concurrent channels scanning support over virtio
  * BACKPORT: perf_event_open: switch to copy_struct_from_user()
      kernel/events/core.c
  * BACKPORT: sched_setattr: switch to copy_struct_from_user()
      kernel/sched/core.c

Bug: 274413561
Change-Id: I4334c7024c0a0b0ff52123bda3f51c09f35ebf56
Signed-off-by: JohnnLee <johnnlee@google.com>
2023-04-11 03:17:25 +00:00

207 lines
6.5 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_ENERGY_MODEL_H
#define _LINUX_ENERGY_MODEL_H
#include <linux/cpumask.h>
#include <linux/jump_label.h>
#include <linux/kobject.h>
#include <linux/rcupdate.h>
#include <linux/sched/cpufreq.h>
#include <linux/sched/topology.h>
#include <linux/types.h>
#ifdef CONFIG_ENERGY_MODEL
/**
* em_cap_state - Capacity state of a performance domain
* @frequency: The CPU frequency in KHz, for consistency with CPUFreq
* @power: The power consumed by 1 CPU at this level, in milli-watts
* @cost: The cost coefficient associated with this level, used during
* energy calculation. Equal to: power * max_frequency / frequency
*/
struct em_cap_state {
unsigned long frequency;
unsigned long power;
unsigned long cost;
};
/**
* em_perf_domain - Performance domain
* @table: List of capacity states, in ascending order
* @nr_cap_states: Number of capacity states
* @cpus: Cpumask covering the CPUs of the domain
*
* A "performance domain" represents a group of CPUs whose performance is
* scaled together. All CPUs of a performance domain must have the same
* micro-architecture. Performance domains often have a 1-to-1 mapping with
* CPUFreq policies.
*/
struct em_perf_domain {
struct em_cap_state *table;
int nr_cap_states;
unsigned long cpus[0];
};
#define EM_CPU_MAX_POWER 0xFFFF
/*
* Increase resolution of energy estimation calculations for 64-bit
* architectures. The extra resolution improves decision made by EAS for the
* task placement when two Performance Domains might provide similar energy
* estimation values (w/o better resolution the values could be equal).
*
* We increase resolution only if we have enough bits to allow this increased
* resolution (i.e. 64-bit). The costs for increasing resolution when 32-bit
* are pretty high and the returns do not justify the increased costs.
*/
#ifdef CONFIG_64BIT
#define em_scale_power(p) ((p) * 1000)
#else
#define em_scale_power(p) (p)
#endif
struct em_data_callback {
/**
* active_power() - Provide power at the next capacity state of a CPU
* @power : Active power at the capacity state in mW (modified)
* @freq : Frequency at the capacity state in kHz (modified)
* @cpu : CPU for which we do this operation
*
* active_power() must find the lowest capacity state of 'cpu' above
* 'freq' and update 'power' and 'freq' to the matching active power
* and frequency.
*
* The power is the one of a single CPU in the domain, expressed in
* milli-watts. It is expected to fit in the [0, EM_CPU_MAX_POWER]
* range.
*
* Return 0 on success.
*/
int (*active_power)(unsigned long *power, unsigned long *freq, int cpu);
};
#define EM_DATA_CB(_active_power_cb) { .active_power = &_active_power_cb }
struct em_perf_domain *em_cpu_get(int cpu);
int em_register_perf_domain(cpumask_t *span, unsigned int nr_states,
struct em_data_callback *cb);
/**
* em_pd_energy() - Estimates the energy consumed by the CPUs of a perf. domain
* @pd : performance domain for which energy has to be estimated
* @max_util : highest utilization among CPUs of the domain
* @sum_util : sum of the utilization of all CPUs in the domain
*
* Return: the sum of the energy consumed by the CPUs of the domain assuming
* a capacity state satisfying the max utilization of the domain.
*/
static inline unsigned long em_pd_energy(struct em_perf_domain *pd,
unsigned long max_util, unsigned long sum_util)
{
unsigned long freq, scale_cpu;
struct em_cap_state *cs;
int i, cpu;
if (!sum_util)
return 0;
/*
* In order to predict the capacity state, map the utilization of the
* most utilized CPU of the performance domain to a requested frequency,
* like schedutil.
*/
cpu = cpumask_first(to_cpumask(pd->cpus));
scale_cpu = arch_scale_cpu_capacity(NULL, cpu);
cs = &pd->table[pd->nr_cap_states - 1];
freq = map_util_freq(max_util, cs->frequency, scale_cpu);
/*
* Find the lowest capacity state of the Energy Model above the
* requested frequency.
*/
for (i = 0; i < pd->nr_cap_states; i++) {
cs = &pd->table[i];
if (cs->frequency >= freq)
break;
}
/*
* The capacity of a CPU in the domain at that capacity state (cs)
* can be computed as:
*
* cs->freq * scale_cpu
* cs->cap = -------------------- (1)
* cpu_max_freq
*
* So, ignoring the costs of idle states (which are not available in
* the EM), the energy consumed by this CPU at that capacity state is
* estimated as:
*
* cs->power * cpu_util
* cpu_nrg = -------------------- (2)
* cs->cap
*
* since 'cpu_util / cs->cap' represents its percentage of busy time.
*
* NOTE: Although the result of this computation actually is in
* units of power, it can be manipulated as an energy value
* over a scheduling period, since it is assumed to be
* constant during that interval.
*
* By injecting (1) in (2), 'cpu_nrg' can be re-expressed as a product
* of two terms:
*
* cs->power * cpu_max_freq cpu_util
* cpu_nrg = ------------------------ * --------- (3)
* cs->freq scale_cpu
*
* The first term is static, and is stored in the em_cap_state struct
* as 'cs->cost'.
*
* Since all CPUs of the domain have the same micro-architecture, they
* share the same 'cs->cost', and the same CPU capacity. Hence, the
* total energy of the domain (which is the simple sum of the energy of
* all of its CPUs) can be factorized as:
*
* cs->cost * \Sum cpu_util
* pd_nrg = ------------------------ (4)
* scale_cpu
*/
return cs->cost * sum_util / scale_cpu;
}
/**
* em_pd_nr_cap_states() - Get the number of capacity states of a perf. domain
* @pd : performance domain for which this must be done
*
* Return: the number of capacity states in the performance domain table
*/
static inline int em_pd_nr_cap_states(struct em_perf_domain *pd)
{
return pd->nr_cap_states;
}
#else
struct em_perf_domain {};
struct em_data_callback {};
#define EM_DATA_CB(_active_power_cb) { }
static inline int em_register_perf_domain(cpumask_t *span,
unsigned int nr_states, struct em_data_callback *cb)
{
return -EINVAL;
}
static inline struct em_perf_domain *em_cpu_get(int cpu)
{
return NULL;
}
static inline unsigned long em_pd_energy(struct em_perf_domain *pd,
unsigned long max_util, unsigned long sum_util)
{
return 0;
}
static inline int em_pd_nr_cap_states(struct em_perf_domain *pd)
{
return 0;
}
#endif
#endif