Commit Graph

40 Commits

Author SHA1 Message Date
lucaswei
54f6dd2f81 Merge android-4.19-stable (4.19.115) into android-msm-pixel-4.19-lts
Merge 4.19.115 into android-4.19
Linux 4.19.115
    drm/msm: Use the correct dma_sync calls in msm_gem
  * drm_dp_mst_topology: fix broken drm_dp_sideband_parse_remote_dpcd_read()
      drivers/gpu/drm/drm_dp_mst_topology.c
  * usb: dwc3: don't set gadget->is_otg flag
      drivers/usb/dwc3/gadget.c
  * rpmsg: glink: Remove chunk size word align warning
      drivers/rpmsg/qcom_glink_native.c
  * arm64: Fix size of __early_cpu_boot_status
      arch/arm64/kernel/head.S
    drm/msm: stop abusing dma_map/unmap for cache
  * clk: qcom: rcg: Return failure for RCG update
      drivers/clk/qcom/clk-rcg2.c
    fbcon: fix null-ptr-deref in fbcon_switch
    RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow
    Bluetooth: RFCOMM: fix ODEBUG bug in rfcomm_dev_ioctl
    RDMA/cma: Teach lockdep about the order of rtnl and lock
    RDMA/ucma: Put a lock around every call to the rdma_cm layer
    ceph: canonicalize server path in place
    ceph: remove the extra slashes in the server path
    IB/hfi1: Fix memory leaks in sysfs registration and unregistration
    IB/hfi1: Call kobject_put() when kobject_init_and_add() fails
    ASoC: jz4740-i2s: Fix divider written at incorrect offset in register
    hwrng: imx-rngc - fix an error path
    tools/accounting/getdelays.c: fix netlink attribute length
  * usb: dwc3: gadget: Wrap around when skip TRBs
      drivers/usb/dwc3/gadget.c
  * random: always use batched entropy for get_random_u{32,64}
      drivers/char/random.c
    mlxsw: spectrum_flower: Do not stop at FLOW_ACTION_VLAN_MANGLE
    slcan: Don't transmit uninitialized stack data in padding
    net: stmmac: dwmac1000: fix out-of-bounds mac address reg setting
    net: phy: micrel: kszphy_resume(): add delay after genphy_resume() before accessing PHY registers
    net: dsa: bcm_sf2: Ensure correct sub-node is parsed
    net: dsa: bcm_sf2: Do not register slave MDIO bus with OF
  * ipv6: don't auto-add link-local address to lag ports
      net/ipv6/addrconf.c
    mm: mempolicy: require at least one nodeid for MPOL_PREFERRED
  * include/linux/notifier.h: SRCU: fix ctags
      include/linux/notifier.h
  * bitops: protect variables in set_mask_bits() macro
      include/linux/bitops.h
    padata: always acquire cpu_hotplug_lock before pinst->lock
  * net: Fix Tx hash bound checking
      net/core/dev.c
    rxrpc: Fix sendmsg(MSG_WAITALL) handling
    ALSA: hda/ca0132 - Add Recon3Di quirk to handle integrated sound on EVGA X99 Classified motherboard
    power: supply: axp288_charger: Add special handling for HP Pavilion x2 10
    extcon: axp288: Add wakeup support
    mei: me: add cedar fork device ids
  * coresight: do not use the BIT() macro in the UAPI header
      include/uapi/linux/coresight-stm.h
    misc: pci_endpoint_test: Avoid using module parameter to determine irqtype
    misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
    misc: rtsx: set correct pcr_ops for rts522A
    media: rc: IR signal for Panasonic air conditioner too long
    drm/etnaviv: replace MMU flush marker with flush sequence
    tools/power turbostat: Fix missing SYS_LPI counter on some Chromebooks
    tools/power turbostat: Fix gcc build warnings
    drm/amdgpu: fix typo for vcn1 idle check
  * initramfs: restore default compression behavior
      usr/Kconfig
    drm/bochs: downgrade pci_request_region failure from error to warning
    drm/amd/display: Add link_rate quirk for Apple 15" MBP 2017
    nvme-rdma: Avoid double freeing of async event data
  * sctp: fix possibly using a bad saddr with a given dst
      net/sctp/ipv6.c
      net/sctp/protocol.c
  * sctp: fix refcount bug in sctp_wfree
      net/sctp/socket.c
  * net, ip_tunnel: fix interface lookup with no key
      net/ipv4/ip_tunnel.c
  * ipv4: fix a RCU-list lock in fib_triestat_seq_show
      net/ipv4/fib_trie.c
  * ANDROID: GKI: export symbols required by SPECTRA_CAMERA
      drivers/media/v4l2-core/v4l2-ioctl.c
      drivers/media/v4l2-core/v4l2-subdev.c
  * ANDROID: GKI: ARM/ARM64: Introduce arch_read_hardware_id
      arch/arm64/include/asm/system_misc.h
      arch/arm64/kernel/cpuinfo.c
  * ANDROID: GKI: drivers: base: soc: export symbols for socinfo
      drivers/base/soc.c
    ANDROID: GKI: Update ABI
  * ANDROID: GKI: ASoC: msm: fix integer overflow for long duration offload playback
      include/uapi/sound/compress_offload.h
      sound/core/compress_offload.c
    ANDROID: GKI: Bulk ABI update
  * Revert "ANDROID: GKI: mm: add struct/enum fields for SPECULATIVE_PAGE_FAULTS"
      include/linux/mm.h
      include/linux/mm_types.h
      include/linux/vm_event_item.h
      mm/vmstat.c
  * ANDROID: GKI: Revert "arm64: kill flush_cache_all()"
      arch/arm64/include/asm/cacheflush.h
      arch/arm64/include/asm/proc-fns.h
      arch/arm64/mm/cache.S
      arch/arm64/mm/flush.c
      arch/arm64/mm/proc.S
  * ANDROID: GKI: Revert "arm64: Remove unused macros from assembler.h"
      arch/arm64/include/asm/assembler.h
  * ANDROID: GKI: kernel/dma, mm/cma: Export symbols needed by vendor modules
      kernel/dma/contiguous.c
      mm/cma.c
  * ANDROID: GKI: mm: Export symbols __next_zones_zonelist and zone_watermark_ok_safe
      mm/mmzone.c
      mm/page_alloc.c
  * ANDROID: GKI: mm/memblock: export memblock_overlaps_memory
      mm/memblock.c
  * ANDROID: GKI: net, skbuff: export symbols needed by vendor drivers
      net/core/skbuff.c
  * ANDROID: GKI: Add stub __cpu_isolated_mask symbol
      kernel/cpu.c
  * ANDROID: GKI: sched: stub sched_isolate symbols
      kernel/sched/Makefile
  * ANDROID: GKI: export saved_command_line
      init/main.c
    ANDROID: GKI: Update ABI
  * ANDROID: GKI: ASoC: core: Update ALSA core to issue restart in underrun.
      include/sound/pcm.h
      sound/core/pcm_native.c
  * ANDROID: GKI: SoC: pcm: Add a restart callback field to struct snd_pcm_ops
      include/sound/pcm.h
  * ANDROID: GKI: SoC: pcm: Add fields to struct snd_pcm_ops and struct snd_soc_component_driver
      include/sound/pcm.h
      include/sound/soc.h
  * ANDROID: GKI: ASoC: core: Add compat_ioctl callback to struct snd_pcm_ops
      include/sound/pcm.h
  * ANDROID: GKI: ALSA: core: modify, rename and export create_subdir API
      include/sound/info.h
      sound/core/info.c
  * ANDROID: GKI: usb: Add helper API to issue stop endpoint command
      drivers/usb/core/hcd.c
      drivers/usb/core/usb.c
      drivers/usb/host/xhci.c
      include/linux/usb.h
      include/linux/usb/hcd.h
  * ANDROID: GKI: Thermal: thermal_zone_get_cdev_by_name added
      drivers/thermal/thermal_core.c
      include/linux/thermal.h
  * ANDROID: GKI: add missing exports for CONFIG_ARM_SMMU=m
      drivers/iommu/iommu-sysfs.c
      drivers/iommu/iommu-traces.c
      drivers/iommu/iommu.c
      drivers/of/base.c
      drivers/pci/pci.c
      drivers/pci/search.c
      include/trace/events/iommu.h
  * ANDROID: power: wakeup_reason: wake reason enhancements
      drivers/base/power/main.c
      drivers/base/power/wakeup.c
      drivers/irqchip/irq-gic-v3.c
      include/linux/wakeup_reason.h
      kernel/irq/chip.c
      kernel/power/process.c
      kernel/power/suspend.c
      kernel/power/wakeup_reason.c
  * BACKPORT: FROMGIT: kbuild: mkcompile_h: Include $LD version in /proc/version
      init/Makefile
      scripts/mkcompile_h
  * ANDROID: GKI: kernel: Export symbols needed by msm_minidump.ko and minidump_log.ko
      init/version.c
      mm/percpu.c
    ANDROID: Bulk update the ABI xml
    ANDROID: gki_defconfig: add CONFIG_IPV6_SUBTREES
  * ANDROID: GKI: arm64: reserve space in cpu_hwcaps and cpu_hwcap_keys arrays
      arch/arm64/include/asm/cpucaps.h
  * ANDROID: GKI: of: reserved_mem: Fix kmemleak crash on no-map region
      drivers/of/of_reserved_mem.c
  * ANDROID: GKI: sched: add task boost vendor fields to task_struct
      include/linux/sched.h
  * ANDROID: GKI: mm: add rss counter for unreclaimable pages
      include/linux/mm_types_task.h
  * ANDROID: GKI: irqdomain: add bus token DOMAIN_BUS_WAKEUP
      include/linux/irqdomain.h
  * ANDROID: GKI: arm64: fault: do_tlb_conf_fault_cb register fault callback
      arch/arm64/include/asm/traps.h
      arch/arm64/mm/fault.c
  * ANDROID: GKI: QoS: Enhance framework to support cpu/irq specific QoS requests
      include/linux/pm_qos.h
      kernel/power/qos.c
    ANDROID: GKI: Bulk ABI update
  * ANDROID: GKI: PM/devfreq: Do not switch governors from sysfs when device is suspended
      drivers/devfreq/devfreq.c
      include/linux/devfreq.h
  * ANDROID: GKI: PM / devfreq: Fix race condition between suspend/resume and governor_store
      drivers/devfreq/devfreq.c
      include/linux/devfreq.h
  * ANDROID: GKI: PM / devfreq: Introduce a sysfs lock
      drivers/devfreq/devfreq.c
      include/linux/devfreq.h
  * ANDROID: GKI: regmap: irq: Add support to clear ack registers
      drivers/base/regmap/regmap-irq.c
      include/linux/regmap.h
    ANDROID: GKI: Remove SCHED_AUTOGROUP
  * ANDROID: ignore compiler tag __must_check for GENKSYMS
      include/linux/compiler_types.h
    ANDROID: GKI: Bulk update ABI
  * ANDROID: GKI: Fix ABI diff for struct thermal_cooling_device_ops
      include/linux/thermal.h
  * ANDROID: GKI: ASoC: soc-core: export function to find components
      include/sound/soc.h
      sound/soc/soc-core.c
  * ANDROID: GKI: thermal: thermal_sys: Add configurable thermal trip points.
      include/linux/thermal.h
  * ANDROID: fscrypt: fall back to filesystem-layer crypto when needed
      fs/crypto/fscrypt_private.h
      fs/crypto/inline_crypt.c
      fs/crypto/keysetup.c
  * ANDROID: block: require drivers to declare supported crypto key type(s)
      block/blk-crypto-fallback.c
      block/blk-crypto.c
      block/keyslot-manager.c
      drivers/md/dm-default-key.c
      drivers/md/dm.c
      drivers/scsi/ufs/ufshcd-crypto.c
      fs/crypto/inline_crypt.c
      include/linux/blk-crypto.h
      include/linux/keyslot-manager.h
  * ANDROID: block: make blk_crypto_start_using_mode() properly check for support
      block/blk-crypto-fallback.c
      block/blk-crypto-internal.h
      block/blk-crypto.c
      include/linux/blk-crypto.h
  * ANDROID: GKI: power: supply: format regression
      drivers/power/supply/power_supply_sysfs.c
  * ANDROID: GKI: kobject: increase number of kobject uevent pointers to 64
      include/linux/kobject.h
  * ANDROID: GKI: drivers: video: backlight: Fix ABI diff for struct backlight_device
      include/linux/backlight.h
  * ANDROID: GKI: usb: xhci: Add support for secondary interrupters
      drivers/usb/core/hcd.c
      drivers/usb/core/usb.c
      drivers/usb/host/xhci-mem.c
      drivers/usb/host/xhci.c
      drivers/usb/host/xhci.h
      include/linux/usb.h
      include/linux/usb/hcd.h
  * ANDROID: GKI: usb: host: xhci: Add support for usb core indexing
      drivers/usb/host/xhci.h
    ANDROID: gki_defconfig: enable USB_XHCI_HCD
    ANDROID: gki_defconfig: enable CONFIG_BRIDGE
    ANDROID: GKI: Update ABI report
  * ANDROID: GKI: arm64: smp: Add set_update_ipi_history_callback
      arch/arm64/include/asm/smp.h
      arch/arm64/kernel/smp.c
  * ANDROID: kbuild: ensure __cfi_check is correctly aligned
      Makefile
      scripts/Makefile
  * FROMLIST: kmod: make request_module() return an error when autoloading is disabled
      kernel/kmod.c
    ANDROID: GKI: Update ABI report
  * ANDROID: GKI: ARM64: dma-mapping: export symbol arch_setup_dma_ops
      arch/arm64/mm/dma-mapping.c
    ANDROID: GKI: ARM: dma-mapping: export symbol arch_setup_dma_ops
  * ANDROID: GKI: ASoC: dapm: Avoid static route b/w cpu and codec dai
      include/sound/soc.h
      sound/soc/soc-dapm.c
  * ANDROID: GKI: ASoC: pcm: Add support for hostless playback/capture
      include/sound/soc.h
      sound/soc/soc-pcm.c
  * ANDROID: GKI: ASoC: core - add hostless DAI support
      include/sound/soc.h
      sound/soc/soc-pcm.c
  * ANDROID: GKI: drivers: thermal: Resolve ABI diff for struct thermal_zone_device_ops
      include/linux/thermal.h
  * ANDROID: GKI: drivers: thermal: Add support for getting trip temperature
      drivers/thermal/of-thermal.c
      include/linux/thermal.h
  * ANDROID: GKI: Add functions of_thermal_handle_trip/of_thermal_handle_trip_temp
      drivers/thermal/of-thermal.c
      drivers/thermal/thermal_core.c
      drivers/thermal/thermal_core.h
      include/linux/thermal.h
  * ANDROID: GKI: drivers: thermal: Add post suspend evaluate flag to thermal zone devicetree
      drivers/thermal/of-thermal.c
      drivers/thermal/thermal_core.c
      include/linux/thermal.h
  * UPSTREAM: loop: Only freeze block queue when needed.
      drivers/block/loop.c
  * UPSTREAM: loop: Only change blocksize when needed.
      drivers/block/loop.c
  * ANDROID: Fix wq fp check for CFI builds
      kernel/workqueue.c
    ANDROID: GKI: update abi definition after CONFIG_DEBUG_LIST was enabled
    ANDROID: gki_defconfig: enable CONFIG_DEBUG_LIST
    ANDROID: GKI: Update ABI definition
  * ANDROID: GKI: remove condition causing sk_buff struct ABI differences
      include/linux/skbuff.h
  * ANDROID: GKI: Export symbol arch_timer_mem_get_cval
      drivers/clocksource/arm_arch_timer.c
  * ANDROID: GKI: pwm: core: Add option to config PWM duty/period with u64 data length
      drivers/pwm/core.c
      drivers/pwm/sysfs.c
      include/linux/pwm.h
    ANDROID: Update ABI whitelist for qcom SoCs
  * ANDROID: Incremental fs: Fix remount
      fs/incfs/data_mgmt.c
      fs/incfs/data_mgmt.h
      fs/incfs/vfs.c
  * ANDROID: Incremental fs: Protect get_fill_block, and add a field
      fs/incfs/data_mgmt.c
      fs/incfs/vfs.c
      include/uapi/linux/incrementalfs.h
  * ANDROID: Incremental fs: Fix crash polling 0 size read_log
      fs/incfs/data_mgmt.c
  * ANDROID: Incremental fs: get_filled_blocks: better index_out
      fs/incfs/data_mgmt.c
      fs/incfs/format.c
      fs/incfs/format.h
  * ANDROID: GKI: of: property: Add device links support for "qcom,wrapper-dev"
      drivers/of/property.c
    ANDROID: GKI: update abi definitions due to recent changes
    Merge 4.19.114 into android-4.19
  * ANDROID: GKI: clk: Initialize in stack clk_init_data to 0 in all drivers
      drivers/clk/clk-composite.c
      drivers/clk/clk-divider.c
      drivers/clk/clk-fixed-factor.c
      drivers/clk/clk-fixed-rate.c
      drivers/clk/clk-fractional-divider.c
      drivers/clk/clk-gate.c
      drivers/clk/clk-mux.c
      drivers/clk/clk-xgene.c
  * ANDROID: GKI: drivers: clksource: Add API to return cval
      drivers/clocksource/arm_arch_timer.c
      include/clocksource/arm_arch_timer.h
  * ANDROID: GKI: clk: Add support for voltage voting
      drivers/clk/clk.c
      include/linux/clk-provider.h
  * ANDROID: GKI: kernel: Export task and IRQ affinity symbols
      kernel/irq/manage.c
      kernel/sched/core.c
  * ANDROID: GKI: regulator: core: Add support for regulator providers with sync state
      drivers/regulator/core.c
      drivers/regulator/proxy-consumer.c
      include/linux/regulator/driver.h
  * ANDROID: GKI: regulator: Call proxy-consumer functions for each regulator registered
      drivers/regulator/core.c
      include/linux/regulator/driver.h
  * ANDROID: GKI: regulator: Add proxy consumer driver
      drivers/regulator/Kconfig
      drivers/regulator/Makefile
      drivers/regulator/proxy-consumer.c
      include/linux/regulator/proxy-consumer.h
  * ANDROID: GKI: regulator: core: allow long device tree supply regulator property names
      drivers/regulator/core.c
  * ANDROID: GKI: Revert "regulator: Enable supply regulator if child rail is enabled."
      drivers/regulator/core.c
  * ANDROID: GKI: regulator: Remove redundant set_mode call in drms_uA_update
      drivers/regulator/core.c
  * ANDROID: GKI: net: Add the get current NAPI context API
      include/linux/netdevice.h
      net/core/dev.c
  * ANDROID: GKI: remove DRM_KMS_CMA_HELPER from GKI configuration
      init/Kconfig.gki
  * ANDROID: GKI: edac: Fix ABI diffs in edac_device_ctl_info struct
      drivers/edac/edac_device.h
  * ANDROID: GKI: pwm: Add different PWM output types support
      drivers/pwm/core.c
      include/linux/pwm.h
  * UPSTREAM: cfg80211: Authentication offload to user space in AP mode
      include/net/cfg80211.h
      include/uapi/linux/nl80211.h
      net/wireless/nl80211.c
  * ANDROID: Incremental fs: Fix four resource bugs
      fs/incfs/vfs.c
    ANDROID: Bulk update the ABI xml based on the referenced bugs.
Linux 4.19.114
    arm64: dts: ls1046ardb: set RGMII interfaces to RGMII_ID mode
    arm64: dts: ls1043a-rdb: correct RGMII delay mode to rgmii-id
    ARM: dts: N900: fix onenand timings
    ARM: dts: imx6: phycore-som: fix arm and soc minimum voltage
    ARM: bcm2835-rpi-zero-w: Add missing pinctrl name
    ARM: dts: oxnas: Fix clear-mask property
    perf map: Fix off by one in strncpy() size argument
  * arm64: alternative: fix build with clang integrated assembler
      arch/arm64/include/asm/alternative.h
    net: ks8851-ml: Fix IO operations, again
    gpiolib: acpi: Add quirk to ignore EC wakeups on HP x2 10 CHT + AXP288 model
  * bpf: Explicitly memset some bpf info structures declared on the stack
      kernel/bpf/btf.c
      kernel/bpf/syscall.c
  * bpf: Explicitly memset the bpf_attr structure
      kernel/bpf/syscall.c
    platform/x86: pmc_atom: Add Lex 2I385SW to critclk_systems DMI table
    vt: vt_ioctl: fix use-after-free in vt_in_use()
    vt: vt_ioctl: fix VT_DISALLOCATE freeing in-use virtual console
    vt: vt_ioctl: remove unnecessary console allocation checks
  * vt: switch vt_dont_switch to bool
      include/linux/vt_kern.h
    vt: ioctl, switch VT_IS_IN_USE and VT_BUSY to inlines
  * vt: selection, introduce vc_is_sel
      include/linux/selection.h
    mac80211: fix authentication with iwlwifi/mvm
    mac80211: Check port authorization in the ieee80211_tx_dequeue() case
    media: xirlink_cit: add missing descriptor sanity checks
    media: stv06xx: add missing descriptor sanity checks
    media: dib0700: fix rc endpoint lookup
    media: ov519: add missing endpoint sanity checks
  * libfs: fix infoleak in simple_attr_read()
      fs/libfs.c
    ahci: Add Intel Comet Lake H RAID PCI ID
    staging: wlan-ng: fix use-after-free Read in hfa384x_usbin_callback
    staging: wlan-ng: fix ODEBUG bug in prism2sta_disconnect_usb
    staging: rtl8188eu: Add ASUS USB-N10 Nano B1 to device table
    media: usbtv: fix control-message timeouts
    media: flexcop-usb: fix endpoint sanity check
    usb: musb: fix crash with highmen PIO and usbmon
    USB: serial: io_edgeport: fix slab-out-of-bounds read in edge_interrupt_callback
    USB: cdc-acm: restore capability check order
    USB: serial: option: add Wistron Neweb D19Q1
    USB: serial: option: add BroadMobi BM806U
    USB: serial: option: add support for ASKEY WWHC050
    mac80211: set IEEE80211_TX_CTRL_PORT_CTRL_PROTO for nl80211 TX
    mac80211: add option for setting control flags
    Revert "r8169: check that Realtek PHY driver module is loaded"
  * vti6: Fix memory leak of skb if input policy check fails
      net/ipv6/ip6_vti.c
  * bpf/btf: Fix BTF verification of enum members in struct/union
      kernel/bpf/btf.c
    netfilter: nft_fwd_netdev: validate family and chain type
    netfilter: flowtable: reload ip{v6}h in nf_flow_tuple_ip{v6}
  * afs: Fix some tracing details
      include/trace/events/afs.h
  * xfrm: policy: Fix doulbe free in xfrm_policy_timer
      net/xfrm/xfrm_policy.c
  * xfrm: add the missing verify_sec_ctx_len check in xfrm_add_acquire
      net/xfrm/xfrm_user.c
  * xfrm: fix uctx len check in verify_sec_ctx_len
      net/xfrm/xfrm_user.c
    RDMA/mlx5: Block delay drop to unprivileged users
  * vti[6]: fix packet tx through bpf_redirect() in XinY cases
      net/ipv4/Kconfig
      net/ipv4/ip_vti.c
      net/ipv6/ip6_vti.c
  * xfrm: handle NETDEV_UNREGISTER for xfrm device
      net/xfrm/xfrm_device.c
  * genirq: Fix reference leaks on irq affinity notifiers
      kernel/irq/manage.c
    RDMA/core: Ensure security pkey modify is not lost
    gpiolib: acpi: Add quirk to ignore EC wakeups on HP x2 10 BYT + AXP288 model
    gpiolib: acpi: Rework honor_wakeup option into an ignore_wake option
    gpiolib: acpi: Correct comment for HP x2 10 honor_wakeup quirk
    mac80211: mark station unauthorized before key removal
  * nl80211: fix NL80211_ATTR_CHANNEL_WIDTH attribute type
      net/wireless/nl80211.c
  * scsi: sd: Fix optimal I/O size for devices that change reported values
      drivers/scsi/sd.c
    scripts/dtc: Remove redundant YYLOC global declaration
    tools: Let O= makes handle a relative path with -C option
    perf probe: Do not depend on dwfl_module_addrsym()
    ARM: dts: omap5: Add bus_dma_limit for L3 bus
    ARM: dts: dra7: Add bus_dma_limit for L3 bus
  * ceph: check POOL_FLAG_FULL/NEARFULL in addition to OSDMAP_FULL/NEARFULL
      include/linux/ceph/osdmap.h
      include/linux/ceph/rados.h
  * Input: avoid BIT() macro usage in the serio.h UAPI header
      include/uapi/linux/serio.h
    Input: synaptics - enable RMI on HP Envy 13-ad105ng
    Input: raydium_i2c_ts - fix error codes in raydium_i2c_boot_trigger()
    i2c: hix5hd2: add missed clk_disable_unprepare in remove
    ftrace/x86: Anotate text_mutex split between ftrace_arch_code_modify_post_process() and ftrace_arch_code_modify_prepare()
    sxgbe: Fix off by one in samsung driver strncpy size arg
    dpaa_eth: Remove unnecessary boolean expression in dpaa_get_headroom
    mac80211: Do not send mesh HWMP PREQ if HWMP is disabled
    scsi: ipr: Fix softlockup when rescanning devices in petitboot
    s390/qeth: handle error when backing RX buffer
  * fsl/fman: detect FMan erratum A050385
      drivers/net/ethernet/freescale/fman/Kconfig
    arm64: dts: ls1043a: FMan erratum A050385
    dt-bindings: net: FMan erratum A050385
  * cgroup1: don't call release_agent when it is ""
      kernel/cgroup/cgroup-v1.c
  * drivers/of/of_mdio.c:fix of_mdiobus_register()
      drivers/of/of_mdio.c
    cpupower: avoid multiple definition with gcc -fno-common
    nfs: add minor version to nfs_server_key for fscache
  * cgroup-v1: cgroup_pidlist_next should update position index
      kernel/cgroup/cgroup-v1.c
    hsr: set .netnsok flag
    hsr: add restart routine into hsr_get_node_list()
    hsr: use rcu_read_lock() in hsr_get_node_{list/status}()
    vxlan: check return value of gro_cells_init()
  * tcp: repair: fix TCP_QUEUE_SEQ implementation
      net/ipv4/tcp.c
    r8169: re-enable MSI on RTL8168c
    net: phy: mdio-mux-bcm-iproc: check clk_prepare_enable() return value
    net: dsa: mt7530: Change the LINK bit to reflect the link status
    net: ip_gre: Accept IFLA_INFO_DATA-less configuration
    net: ip_gre: Separate ERSPAN newlink / changelink callbacks
    bnxt_en: Reset rings if ring reservation fails during open()
    bnxt_en: fix memory leaks in bnxt_dcbnl_ieee_getets()
    slcan: not call free_netdev before rtnl_unlock in slcan_open
    NFC: fdp: Fix a signedness bug in fdp_nci_send_patch()
    net: stmmac: dwmac-rk: fix error path in rk_gmac_probe
    net_sched: keep alloc_hash updated after hash allocation
    net_sched: cls_route: remove the right filter from hashtable
    net: qmi_wwan: add support for ASKEY WWHC050
  * net/packet: tpacket_rcv: avoid a producer race condition
      net/packet/af_packet.c
      net/packet/internal.h
    net: mvneta: Fix the case where the last poll did not process all rx
    net: dsa: Fix duplicate frames flooded by learning
    net: cbs: Fix software cbs to consider packet sending time
    mlxsw: spectrum_mr: Fix list iteration in error path
    macsec: restrict to ethernet devices
    hsr: fix general protection fault in hsr_addr_is_self()
    geneve: move debug check after netdev unregister
  * Revert "drm/dp_mst: Skip validating ports during destruction, just ref"
      drivers/gpu/drm/drm_dp_mst_topology.c
    mmc: sdhci-tegra: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY
    mmc: sdhci-omap: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY
    mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for eMMC sleep command
    mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for erase/trim/discard
  * mmc: core: Allow host controllers to require R1B for CMD6
      include/linux/mmc/host.h
  * ANDROID: GKI: block: resolve ABI diff when CONFIG_BLK_DEV_BSG is unset
      include/linux/blkdev.h
      include/linux/bsg.h
  * ANDROID: GKI: bfq-iosched: update struct elevator_mq_ops ABI
      include/linux/elevator.h
  * ANDROID: GKI: locking/rwsem: add vendor field to struct rw_semaphore
      include/linux/rwsem.h
  * ANDROID: GKI: fs: add umount_end() function to struct super_operations
      include/linux/fs.h
  * ANDROID: GKI: perf: Add fields for CPU hotplug feature
      include/linux/perf_event.h
  * ANDROID: GKI: perf: Add field for struct perf_event
      include/linux/perf_event.h
  * ANDROID: GKI: cpuset: add field for task affinity for cpusets
      include/linux/sched.h
      init/init_task.c
    UPSTREAM: ubifs: wire up FS_IOC_GET_ENCRYPTION_NONCE
  * UPSTREAM: f2fs: wire up FS_IOC_GET_ENCRYPTION_NONCE
      fs/f2fs/file.c
  * UPSTREAM: ext4: wire up FS_IOC_GET_ENCRYPTION_NONCE
      fs/ext4/ioctl.c
  * UPSTREAM: fscrypt: add FS_IOC_GET_ENCRYPTION_NONCE ioctl
      fs/crypto/fscrypt_private.h
      fs/crypto/keysetup.c
      fs/crypto/policy.c
      include/linux/fscrypt.h
      include/uapi/linux/fscrypt.h
  * UPSTREAM: usb: raw_gadget: fix compilation warnings in uapi headers
      include/uapi/linux/usb/raw_gadget.h
  * BACKPORT: usb: gadget: add raw-gadget interface
      drivers/usb/gadget/legacy/Kconfig
      drivers/usb/gadget/legacy/Makefile
      include/uapi/linux/usb/raw_gadget.h
  * UPSTREAM: usb: gadget: move choice ... endchoice to legacy/Kconfig
      drivers/usb/gadget/Kconfig
      drivers/usb/gadget/legacy/Kconfig
  * UPSTREAM: ipv6: ndisc: add support for 'PREF64' dns64 prefix identifier
      include/net/ndisc.h
      net/ipv6/ndisc.c
    ANDROID: GKI: Removed cuttlefish configs
    ANDROID: clang: update to 10.0.5
  * FROMLIST: arm64: define __alloc_zeroed_user_highpage
      arch/arm64/include/asm/page.h
  * ANDROID: Incremental fs: Add INCFS_IOC_GET_FILLED_BLOCKS
      fs/incfs/data_mgmt.c
      fs/incfs/data_mgmt.h
      fs/incfs/format.c
      fs/incfs/format.h
      fs/incfs/vfs.c
      include/uapi/linux/incrementalfs.h
  * ANDROID: Incremental fs: Fix two typos
      fs/incfs/data_mgmt.c
      fs/incfs/integrity.c
    ANDROID: GKI: Update ABI
  * ANDROID: GKI: power_supply: add more soc properties
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
    ANDROID: GKI: Update ABI
  * ANDROID: GKI: google_battery: return string type for serial_number property
      drivers/power/supply/power_supply_sysfs.c
  * ANDROID: GKI: power: supply: Add APSD based power-supply properties
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Remove "Wipower" PSY type
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add support for HVDCP_3P5
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Define Debug Accessory Mode
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_AICL_*
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_ALIGNMENT
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add CP_ISNS_SLAVE power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: add properties to report parallel connection topology
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: add POWER_SUPPLY_PROP_IRQ_STATUS property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: add CHARGE_CHARGER_STATE property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_PTMC_ID
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_OTG_FASTROLESWAP
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add VOLTAGE_STEP property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add AICL_DONE parameter
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add operating frequency property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_CC_UAH
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_VOLTAGE_FIFO
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add capacity and resistance estimates
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add vendor specific dead battery property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power-supply: add ADAPTER_DETAILS power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add POWER_SUPPLY_PROP_CHARGE_DISABLE
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: Add property to display skin thermal status
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add properties to support PPS constant current(CC) mode
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: Add REAL_CAPACITY property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add VOLTAGE_MAX_LIMIT power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add DC_RESET power-supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add "THERM_ICL_LIMIT" property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: add CHIP_VERSION property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power-supply: Add VOLTAGE_VPH power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add SCALE_MODE_EN power-supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add local extensions of string property names properly
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: add batt_age_level property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power-supply: Add CC_SOC power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: add property to disable QC userspace optimizations
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: Add FG_RESET power supply property
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power_supply: Add power supply type "Charge Pump"
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: supply: Add snapshot of power supply framework files
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: Add property CHARGE_COUNTER_EXT and 64-bit precision properties
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: add POWER_SUPPLY_PROP_CHARGE_ENABLED
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: add POWER_SUPPLY_PROP_USB_OTG
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
  * ANDROID: GKI: power: power_supply: Add custom property for USB High Current mode
      drivers/power/supply/power_supply_sysfs.c
      include/linux/power_supply.h
    UPSTREAM: coresight: Potential uninitialized variable in probe()
    ANDROID: GKI: Update ABI.
  * ANDROID: GKI: Add API to create pagetable mappings.
      arch/arm64/mm/mmu.c
      include/linux/memblock.h
  * ANDROID: GKI: drivers: usb: Add functions usb_func_ep_queue/usb_func_wakeup
      drivers/usb/gadget/composite.c
      drivers/usb/gadget/udc/core.c
      include/linux/usb/composite.h
      include/linux/usb/gadget.h
  * ANDROID: GKI: Add API usb_ep_autoconfig_by_name
      drivers/usb/gadget/epautoconf.c
      include/linux/usb/gadget.h
  * ANDROID: GKI: usb: core: Add helper function to return controller id
      drivers/usb/core/hcd.c
      drivers/usb/core/usb.c
      include/linux/usb.h
      include/linux/usb/hcd.h
    ANDROID: dm-bow: Fix free_show value is incorrect
    ANDROID: GKI: update ABI after fixing cfg80211_chan_def diff
  * BACKPORT: nl80211: Add support for EDMG channels
      include/net/cfg80211.h
      include/uapi/linux/nl80211.h
      net/wireless/chan.c
      net/wireless/nl80211.c
      net/wireless/util.c
  * FROMGIT: sched/rt: cpupri_find: Trigger a full search as fallback
      kernel/sched/cpupri.c
  * FROMGIT: sched/rt: Remove unnecessary push for unfit tasks
      kernel/sched/rt.c
  * BACKPORT: FROMGIT: sched/rt: Allow pulling unfitting task
      kernel/sched/rt.c
  * FROMGIT: sched/rt: Optimize cpupri_find() on non-heterogenous systems
      kernel/sched/cpupri.c
      kernel/sched/cpupri.h
      kernel/sched/rt.c
  * FROMGIT: sched/rt: Re-instate old behavior in select_task_rq_rt()
      kernel/sched/rt.c
  * BACKPORT: FROMGIT: sched/rt: cpupri_find: Implement fallback mechanism for !fit case
      kernel/sched/cpupri.c
    ANDROID: GKI: re-enable LTO, CFI and SCS
    Merge 4.19.113 into android-4.19
Linux 4.19.113
    staging: greybus: loopback_test: fix potential path truncations
    staging: greybus: loopback_test: fix potential path truncation
    drm/bridge: dw-hdmi: fix AVI frame colorimetry
  * arm64: smp: fix crash_smp_send_stop() behaviour
      arch/arm64/kernel/smp.c
  * arm64: smp: fix smp_send_stop() behaviour
      arch/arm64/kernel/smp.c
    ALSA: hda/realtek: Fix pop noise on ALC225
  * Revert "ipv6: Fix handling of LLA with VRF and sockets bound to VRF"
      net/ipv6/tcp_ipv6.c
    Revert "vrf: mark skb for multicast or link-local as enslaved to VRF"
  * futex: Unbreak futex hashing
      kernel/futex.c
  * futex: Fix inode life-time issue
      fs/inode.c
      include/linux/fs.h
      include/linux/futex.h
      kernel/futex.c
  * kbuild: Disable -Wpointer-to-enum-cast
      scripts/Makefile.extrawarn
    iio: light: vcnl4000: update sampling periods for vcnl4200
    USB: cdc-acm: fix rounding error in TIOCSSERIAL
    USB: cdc-acm: fix close_delay and closing_wait units in TIOCSSERIAL
  * x86/mm: split vmalloc_sync_all()
      include/linux/vmalloc.h
      kernel/notifier.c
      mm/vmalloc.c
  * page-flags: fix a crash at SetPageError(THP_SWAP)
      include/linux/page-flags.h
  * mm, slub: prevent kmalloc_node crashes and memory leaks
      mm/slub.c
  * mm: slub: be more careful about the double cmpxchg of freelist
      mm/slub.c
  * memcg: fix NULL pointer dereference in __mem_cgroup_usage_unregister_event
      mm/memcontrol.c
  * drm/lease: fix WARNING in idr_destroy
      drivers/gpu/drm/drm_lease.c
    drm/amd/amdgpu: Fix GPR read from debugfs (v2)
    btrfs: fix log context list corruption after rename whiteout error
  * xhci: Do not open code __print_symbolic() in xhci trace events
      drivers/usb/host/xhci-trace.h
  * rtc: max8907: add missing select REGMAP_IRQ
      drivers/rtc/Kconfig
    intel_th: pci: Add Elkhart Lake CPU support
    intel_th: Fix user-visible error codes
    staging/speakup: fix get_word non-space look-ahead
    staging: greybus: loopback_test: fix poll-mask build breakage
    staging: rtl8188eu: Add device id for MERCUSYS MW150US v2
    mmc: sdhci-of-at91: fix cd-gpios for SAMA5D2
    mmc: rtsx_pci: Fix support for speed-modes that relies on tuning
    iio: adc: at91-sama5d2_adc: fix differential channels in triggered mode
    iio: magnetometer: ak8974: Fix negative raw values in sysfs
    iio: trigger: stm32-timer: disable master mode when stopping
    iio: st_sensors: remap SMO8840 to LIS2DH12
    ALSA: pcm: oss: Remove WARNING from snd_pcm_plug_alloc() checks
    ALSA: pcm: oss: Avoid plugin buffer overflow
    ALSA: seq: oss: Fix running status after receiving sysex
    ALSA: seq: virmidi: Fix running status after receiving sysex
    ALSA: line6: Fix endless MIDI read loop
  * usb: xhci: apply XHCI_SUSPEND_DELAY to AMD XHCI controller 1022:145c
      drivers/usb/host/xhci-pci.c
    USB: serial: pl2303: add device-id for HP LD381
  * usb: host: xhci-plat: add a shutdown
      drivers/usb/host/xhci-plat.c
    USB: serial: option: add ME910G1 ECM composition 0x110b
  * usb: quirks: add NO_LPM quirk for RTL8153 based ethernet adapters
      drivers/usb/core/quirks.c
  * USB: Disable LPM on WD19's Realtek Hub
      drivers/usb/core/quirks.c
    parse-maintainers: Mark as executable
    block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
    xenbus: req->err should be updated before req->state
    xenbus: req->body should be updated before req->state
    drm/amd/display: fix dcc swath size calculations on dcn1
    drm/amd/display: Clear link settings on MST disable connector
    riscv: avoid the PIC offset of static percpu data in module beyond 2G limits
    dm integrity: use dm_bio_record and dm_bio_restore
    dm bio record: save/restore bi_end_io and bi_integrity
    altera-stapl: altera_get_note: prevent write beyond end of 'key'
    drivers/perf: arm_pmu_acpi: Fix incorrect checking of gicc pointer
    drm/exynos: dsi: fix workaround for the legacy clock name
    drm/exynos: dsi: propagate error value and silence meaningless warning
    spi/zynqmp: remove entry that causes a cs glitch
    spi: pxa2xx: Add CS control clock quirk
    ARM: dts: dra7: Add "dma-ranges" property to PCIe RC DT nodes
    powerpc: Include .BTF section
    spi: qup: call spi_qup_pm_resume_runtime before suspending
    drm/mediatek: Find the cursor plane instead of hard coding it
    ANDROID: ABI: Update ABI with CONFIG_SOC_BUS enabled
  * ANDROID: GKI: Add CONFIG_SOC_BUS to gki_defconfig
      init/Kconfig.gki
    ANDROID: kbuild: do not merge .section..* into .section in modules
  * ANDROID: scsi: ufs: add ->map_sg_crypto() variant op
      drivers/scsi/ufs/ufshcd-crypto.c
      drivers/scsi/ufs/ufshcd-crypto.h
      drivers/scsi/ufs/ufshcd.c
      drivers/scsi/ufs/ufshcd.h
    ANDROID: GKI: Update ABI after fixing vm_event_item diffs
  * ANDROID: GKI: mm: vmstat: add pageoutclean
      include/linux/vm_event_item.h
      mm/filemap.c
      mm/vmstat.c
  * ANDROID: GKI: mm: add struct/enum fields for SPECULATIVE_PAGE_FAULTS
      include/linux/mm.h
      include/linux/mm_types.h
      include/linux/vm_event_item.h
      mm/vmstat.c
    ANDROID: GKI: Update ABI after fixing mm diffs
  * ANDROID: GKI: Add write_pending and max_writes fields to swap_info_struct
      include/linux/swap.h
  * ANDROID: GKI: memblock: Add memblock_overlaps_memory() to fix ABI diff
      include/linux/memblock.h
      mm/memblock.c
  * ANDROID: GKI: net: remove conditional members causing ABI diffs
      include/net/net_namespace.h
      include/net/netns/netfilter.h
      include/net/netns/x_tables.h
  * ANDROID: GKI: mm: introduce NR_UNRECLAIMABLE_PAGES
      include/linux/mmzone.h
      mm/vmstat.c
    ANDROID: GKI: Update ABI
  * ANDROID: GKI: sound: soc: Resolve ABI diff for struct snd_compr_stream
      include/sound/compress_driver.h
      include/sound/soc.h
  * ANDROID: GKI: sound: pcm: Add field hw_no_buffer to snd_pcm_substream
      include/sound/pcm.h
  * ANDROID: GKI: ALSA: core: Add snd_soc_card_change_online_state() API
      include/sound/core.h
      include/sound/soc.h
      sound/core/init.c
      sound/soc/soc-core.c
  * ANDROID: GKI: SoC: core: Introduce macro SOC_SINGLE_MULTI_EXT
      include/sound/soc.h
      sound/soc/soc-core.c
  * ANDROID: GKI: ALSA: PCM: User control API implementation
      include/sound/pcm.h
      sound/core/pcm.c
      sound/core/pcm_lib.c
  * ANDROID: GKI: ALSA: PCM: volume API implementation
      include/sound/pcm.h
      sound/core/pcm.c
      sound/core/pcm_lib.c
  * ANDROID: GKI: kernel: tick-sched: Add API to get the next wakeup for a CPU
      include/linux/tick.h
      kernel/time/tick-sched.c
  * ANDROID: GKI: extcon: Add extcon_register_blocking_notifier API.
      drivers/extcon/extcon.c
      drivers/extcon/extcon.h
      include/linux/extcon.h
  * UPSTREAM: bpf: Explicitly memset some bpf info structures declared on the stack
      kernel/bpf/btf.c
      kernel/bpf/syscall.c
  * UPSTREAM: bpf: Explicitly memset the bpf_attr structure
      kernel/bpf/syscall.c
    ANDROID: ABI: Update abi after enabling CONFIG_USB_PHY
  * ANDROID: GKI: Enable CONFIG_USB_PHY for usb drivers like dwc3
      init/Kconfig.gki
  * UPSTREAM: driver core: Add device link support for SYNC_STATE_ONLY flag
      drivers/base/core.c
      include/linux/device.h
  * ANDROID: Conflict fix for merging 4.19.112
      drivers/base/core.c
    Merge 4.19.112 into android-4.19
  * Revert "ANDROID: driver core: Add device link support for SYNC_STATE_ONLY flag"
      drivers/base/core.c
      include/linux/device.h
    ANDROID: update the ABI xml representation
  * ANDROID: GKI: Enable V4L2 hidden configs
      init/Kconfig.gki
Linux 4.19.112
  * ipv4: ensure rcu_read_lock() in cipso_v4_error()
      net/ipv4/cipso_ipv4.c
    efi: Fix debugobjects warning on 'efi_rts_work'
  * HID: google: add moonball USB id
      drivers/hid/hid-ids.h
  * mm: slub: add missing TID bump in kmem_cache_alloc_bulk()
      mm/slub.c
    ARM: 8958/1: rename missed uaccess .fixup section
    ARM: 8957/1: VDSO: Match ARMv8 timer in cntvct_functional()
  * net: qrtr: fix len of skb_put_padto in qrtr_node_enqueue
      net/qrtr/qrtr.c
  * driver core: Fix creation of device links with PM-runtime flags
      drivers/base/core.c
  * driver core: Remove device link creation limitation
      drivers/base/core.c
      drivers/base/power/runtime.c
      include/linux/device.h
  * driver core: Add device link flag DL_FLAG_AUTOPROBE_CONSUMER
      drivers/base/core.c
      drivers/base/dd.c
      include/linux/device.h
  * driver core: Make driver core own stateful device links
      drivers/base/core.c
  * driver core: Fix adding device links to probing suppliers
      drivers/base/core.c
  * driver core: Remove the link if there is no driver with AUTO flag
      drivers/base/core.c
    mmc: sdhci-omap: Fix Tuning procedure for temperatures < -20C
    mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
    wimax: i2400: Fix memory leak in i2400m_op_rfkill_sw_toggle
    wimax: i2400: fix memory leak
  * jbd2: fix data races at struct journal_head
      fs/jbd2/transaction.c
    sfc: fix timestamp reconstruction at 16-bit rollover points
  * net: rmnet: fix packet forwarding in rmnet bridge mode
      drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
  * net: rmnet: fix bridge mode bugs
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h
      drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c
      drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h
  * net: rmnet: use upper/lower device infrastructure
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
  * net: rmnet: do not allow to change mux id if mux id is duplicated
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
  * net: rmnet: remove rcu_read_lock in rmnet_force_unassociate_device()
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
  * net: rmnet: fix suspicious RCU usage
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h
      drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
  * net: rmnet: fix NULL pointer dereference in rmnet_changelink()
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
  * net: rmnet: fix NULL pointer dereference in rmnet_newlink()
      drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
    hinic: fix a bug of setting hw_ioctxt
    hinic: fix a irq affinity bug
    slip: not call free_netdev before rtnl_unlock in slip_open
  * signal: avoid double atomic counter increments for user accounting
      kernel/signal.c
    mac80211: rx: avoid RCU list traversal under mutex
    net: ks8851-ml: Fix IRQ handling and locking
    net: usb: qmi_wwan: restore mtu min/max values after raw_ip switch
    scsi: libfc: free response frame from GPN_ID
  * cfg80211: check reg_rule for NULL in handle_channel_custom()
      net/wireless/reg.c
    HID: i2c-hid: add Trekstor Surfbook E11B to descriptor override
  * HID: apple: Add support for recent firmware on Magic Keyboards
      drivers/hid/hid-apple.c
    ACPI: watchdog: Allow disabling WDAT at boot
  * mmc: host: Fix Kconfig warnings on keystone_defconfig
      drivers/mmc/host/Kconfig
  * mmc: sdhci-omap: Workaround errata regarding SDR104/HS200 tuning failures (i929)
      drivers/mmc/host/Kconfig
    mmc: sdhci-omap: Add platform specific reset callback
    perf/amd/uncore: Replace manual sampling check with CAP_NO_INTERRUPT flag
    ANDROID: GKI: Enable CONFIG_BACKLIGHT_CLASS_DEVICE in gki_defconfig
  * ANDROID: Incremental fs: Add INCFS_IOC_PERMIT_FILL
      fs/incfs/vfs.c
      include/uapi/linux/incrementalfs.h
  * ANDROID: Incremental fs: Remove signature checks from kernel
      fs/incfs/data_mgmt.c
      fs/incfs/data_mgmt.h
      fs/incfs/format.c
      fs/incfs/format.h
      fs/incfs/integrity.c
      fs/incfs/integrity.h
      fs/incfs/vfs.c
      include/uapi/linux/incrementalfs.h
  * ANDROID: Incremental fs: Pad hash blocks
      fs/incfs/integrity.c
  * ANDROID: Incremental fs: Make fill block an ioctl
      fs/incfs/data_mgmt.c
      fs/incfs/data_mgmt.h
      fs/incfs/vfs.c
      include/uapi/linux/incrementalfs.h
  * ANDROID: Incremental fs: Remove all access_ok checks
      fs/incfs/vfs.c
    Merge 4.19.111 into android-4.19
Linux 4.19.111
    batman-adv: Avoid free/alloc race when handling OGM2 buffer
    efi: Add a sanity check to efivar_store_raw()
    net/smc: cancel event worker during device removal
    net/smc: check for valid ib_client_data
  * ipv6: restrict IPV6_ADDRFORM operation
      net/ipv6/ipv6_sockglue.c
    i2c: acpi: put device when verifying client fails
    iommu/vt-d: Ignore devices with out-of-spec domain number
    iommu/vt-d: Fix the wrong printing in RHSA parsing
    netfilter: nft_tunnel: add missing attribute validation for tunnels
    netfilter: nft_payload: add missing attribute validation for payload csum flags
    netfilter: cthelper: add missing attribute validation for cthelper
    perf bench futex-wake: Restore thread count default to online CPU count
  * nl80211: add missing attribute validation for channel switch
      net/wireless/nl80211.c
  * nl80211: add missing attribute validation for beacon report scanning
      net/wireless/nl80211.c
  * nl80211: add missing attribute validation for critical protocol indication
      net/wireless/nl80211.c
    i2c: gpio: suppress error on probe defer
    drm/i915/gvt: Fix unnecessary schedule timer when no vGPU exits
  * pinctrl: core: Remove extra kref_get which blocks hogs being freed
      drivers/pinctrl/core.c
    pinctrl: meson-gxl: fix GPIOX sdio pins
    batman-adv: Don't schedule OGM for disabled interface
    iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page
    iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint
  * iommu/dma: Fix MSI reservation allocation
      drivers/iommu/dma-iommu.c
    x86/mce: Fix logic and comments around MSR_PPIN_CTL
    mt76: fix array overflow on receiving too many fragments for a packet
  * efi: Make efi_rts_work accessible to efi page fault handler
      include/linux/efi.h
    efi: Fix a race and a buffer overflow while reading efivars via sysfs
    macintosh: windfarm: fix MODINFO regression
    ARC: define __ALIGN_STR and __ALIGN symbols for ARC
    KVM: x86: clear stale x86_emulate_ctxt->intercept value
    gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache
  * cifs_atomic_open(): fix double-put on late allocation failure
      fs/open.c
    ktest: Add timeout for ssh sync testing
    drm/amd/display: remove duplicated assignment to grph_obj_type
  * workqueue: don't use wq_select_unbound_cpu() for bound works
      kernel/workqueue.c
  * netfilter: x_tables: xt_mttg_seq_next should increase position index
      net/netfilter/x_tables.c
    netfilter: xt_recent: recent_seq_next should increase position index
    netfilter: synproxy: synproxy_cpu_seq_next should increase position index
  * netfilter: nf_conntrack: ct_cpu_seq_next should increase position index
      net/netfilter/nf_conntrack_standalone.c
    iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint
    virtio-blk: fix hw_queue stopped on arbitrary error
    iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices
  * cgroup: Iterate tasks that did not finish do_exit()
      include/linux/cgroup.h
      kernel/cgroup/cgroup.c
  * cgroup: cgroup_procs_next should increase position index
      kernel/cgroup/cgroup.c
    macvlan: add cond_resched() during multicast processing
    net: fec: validate the new settings in fec_enet_set_coalesce()
  * slip: make slhc_compress() more robust against malicious packets
      drivers/net/slip/slhc.c
  * bonding/alb: make sure arp header is pulled before accessing it
      drivers/net/bonding/bond_alb.c
    devlink: validate length of region addr/len
  * tipc: add missing attribute validation for MTU property
      net/tipc/netlink.c
  * net/ipv6: remove the old peer route if change it to a new one
      net/ipv6/addrconf.c
  * net/ipv6: need update peer route when modify metric
      net/ipv6/addrconf.c
    selftests/net/fib_tests: update addr_metric_test for peer route testing
  * net: phy: fix MDIO bus PM PHY resuming
      drivers/net/phy/phy_device.c
      include/linux/phy.h
    nfc: add missing attribute validation for vendor subcommand
    nfc: add missing attribute validation for deactivate target
    nfc: add missing attribute validation for SE API
    team: add missing attribute validation for array index
    team: add missing attribute validation for port ifindex
    net: fq: add missing attribute validation for orphan mask
    macsec: add missing attribute validation for port
    can: add missing attribute validation for termination
    nl802154: add missing attribute validation for dev_type
    nl802154: add missing attribute validation
  * fib: add missing attribute validation for tun_id
      include/net/fib_rules.h
    devlink: validate length of param values
  * net: memcg: fix lockdep splat in inet_csk_accept()
      net/ipv4/inet_connection_sock.c
  * net: memcg: late association of sock to memcg
      mm/memcontrol.c
      net/core/sock.c
      net/ipv4/inet_connection_sock.c
  * cgroup: memcg: net: do not associate sock with unrelated cgroup
      kernel/cgroup/cgroup.c
      mm/memcontrol.c
    bnxt_en: reinitialize IRQs when MTU is modified
    sfc: detach from cb_page in efx_copy_channel()
  * r8152: check disconnect status after long sleep
      drivers/net/usb/r8152.c
    net: systemport: fix index check to avoid an array out of bounds access
    net: stmmac: dwmac1000: Disable ACS if enhanced descs are not used
  * net/packet: tpacket_rcv: do not increment ring index on drop
      net/packet/af_packet.c
    net: nfc: fix bounds checking bugs on "pipe"
    net: macsec: update SCI upon MAC address change.
  * netlink: Use netlink header as base to calculate bad attribute offset
      net/netlink/af_netlink.c
  * net/ipv6: use configured metric when add peer route
      net/ipv6/addrconf.c
    ipvlan: don't deref eth hdr before checking it's set
    ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()
    ipvlan: do not add hardware address of master to its unicast filter list
    ipvlan: add cond_resched_rcu() while processing muticast backlog
  * ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface
      net/ipv6/addrconf.c
  * inet_diag: return classid for all socket types
      include/linux/inet_diag.h
      net/ipv4/inet_diag.c
      net/ipv4/udp_diag.c
      net/sctp/diag.c
  * gre: fix uninit-value in __iptunnel_pull_header
      net/ipv4/gre_demux.c
    cgroup, netclassid: periodically release file_lock on classid updating
  * net: phy: Avoid multiple suspends
      drivers/net/phy/phy_device.c
  * phy: Revert toggling reset changes.
      drivers/net/phy/phy_device.c
  * ANDROID: kbuild: fix module linker script flags for LTO
      Makefile
  * ANDROID: kbuild: avoid excessively long argument lists
      scripts/Makefile.build
  * UPSTREAM: cgroup: Iterate tasks that did not finish do_exit()
      include/linux/cgroup.h
      kernel/cgroup/cgroup.c
    ANDROID: update the ABI xml representation
    Revert "ANDROID: gki_defconfig: Temporarily disable CFI"
  * ANDROID: GKI: dma-buf: Add support for XXX_cpu_access_umapped ops
      drivers/dma-buf/dma-buf.c
      include/linux/dma-buf.h
      include/uapi/linux/dma-buf.h
  * ANDROID: GKI: dma-buf: Add support to set a destructor on a dma-buf
      drivers/dma-buf/dma-buf.c
      include/linux/dma-buf.h
  * ANDROID: GKI: dma-buf: use spinlock to protect set/get name operation
      drivers/dma-buf/dma-buf.c
      include/linux/dma-buf.h
  * ANDROID: GKI: dma-buf: Add support to get flags associated with a buffer
      drivers/dma-buf/dma-buf.c
      include/linux/dma-buf.h
  * ANDROID: GKI: dma-buf: Add support for mapping buffers with DMA attributes
      include/linux/dma-buf.h
  * ANDROID: GKI: dma-buf: Add support for partial cache maintenance
      drivers/dma-buf/dma-buf.c
      include/linux/dma-buf.h
  * ANDROID: GKI: arm64: mm: Support setting removed_dma_ops in arch_setup_dma_ops
      arch/arm64/mm/dma-mapping.c
      include/linux/dma-removed.h
  * ANDROID: GKI: drivers: Add dma removed ops
      include/linux/device.h
      kernel/dma/Makefile
      kernel/dma/removed.c
  * ANDROID: GKI: add dma_map_ops remap/unremap operations
      arch/arm64/mm/dma-mapping.c
      include/linux/dma-mapping.h
    ANDROID: Add build.config files for ARM 32-bit
    ANDROID: GKI: update abi due to CONFIG_JUMP_LABEL being enabled
    ANDROID: GKI: enable CONFIG_JUMP_LABEL
    ANDROID: Add build.config.gki-debug.x86_64
    ANDROID: Add build.config.gki-debug.aarch64

Change-Id: Ifef77d2201a3833e4970cc7617d45814990bc3cb
Signed-off-by: lucaswei <lucaswei@google.com>
2020-08-25 20:09:36 +08:00
Maria Yu
9298a1e640 ANDROID: GKI: locking/rwsem: add vendor field to struct rw_semaphore
For ABI compatibility, we are adding a vendor field to support the
config CONFIG_RWSEM_PRIO_AWARE.

Bug: 151792119
Bug: 148872640
Signed-off-by: Maria Yu <aiquny@codeaurora.org>
Signed-off-by: Biao long <blong@codeaurora.org>
[willmcvicker: Only cherry-picked the ABI diff]
(cherry picked from commit c4b6927bb6)
Signed-off-by: Will McVicker <willmcvicker@google.com>
Change-Id: I3f289e2992af340b56c2df532ffeb418abf3da79
2020-04-01 15:20:12 -07:00
Maria Yu
c4b6927bb6 locking/rwsem: for rwsem prio aware enhancement
When add into waiting list will be prio aware,
lower prio value means higher priority task will get lock
before lower priority task.
Only try to preempt waiters with which task priority
which is higher than DEFAULT_PRIO.
To avoid starvation, add count to record how many waiters
preempt to queue in wait list. If preempt count is exceed
MAX_PREEMPT_ALLOWED, use simple FIFO to queue in the wait
list until the wait list is empty.

Change-Id: I4d5fe6a823a16c9762e2e2f416d34bdd701341c4
Signed-off-by: Maria Yu <aiquny@codeaurora.org>
Signed-off-by: Biao long <blong@codeaurora.org>
2019-05-24 15:32:11 +08:00
Waiman Long
5a817641f6 locking/percpu-rwsem: Annotate rwsem ownership transfer by setting RWSEM_OWNER_UNKNOWN
The filesystem freezing code needs to transfer ownership of a rwsem
embedded in a percpu-rwsem from the task that does the freezing to
another one that does the thawing by calling percpu_rwsem_release()
after freezing and percpu_rwsem_acquire() before thawing.

However, the new rwsem debug code runs afoul with this scheme by warning
that the task that releases the rwsem isn't the one that acquires it,
as reported by Amir Goldstein:

  DEBUG_LOCKS_WARN_ON(sem->owner != get_current())
  WARNING: CPU: 1 PID: 1401 at /home/amir/build/src/linux/kernel/locking/rwsem.c:133 up_write+0x59/0x79

  Call Trace:
   percpu_up_write+0x1f/0x28
   thaw_super_locked+0xdf/0x120
   do_vfs_ioctl+0x270/0x5f1
   ksys_ioctl+0x52/0x71
   __x64_sys_ioctl+0x16/0x19
   do_syscall_64+0x5d/0x167
   entry_SYSCALL_64_after_hwframe+0x49/0xbe

To work properly with the rwsem debug code, we need to annotate that the
rwsem ownership is unknown during the tranfer period until a brave soul
comes forward to acquire the ownership. During that period, optimistic
spinning will be disabled.

Reported-by: Amir Goldstein <amir73il@gmail.com>
Tested-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Waiman Long <longman@redhat.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Jan Kara <jack@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Theodore Y. Ts'o <tytso@mit.edu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-fsdevel@vger.kernel.org
Link: http://lkml.kernel.org/r/1526420991-21213-3-git-send-email-longman@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2018-05-16 11:45:16 +02:00
Ingo Molnar
8c5db92a70 Merge branch 'linus' into locking/core, to resolve conflicts
Conflicts:
	include/linux/compiler-clang.h
	include/linux/compiler-gcc.h
	include/linux/compiler-intel.h
	include/uapi/linux/stddef.h

Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-11-07 10:32:44 +01:00
Greg Kroah-Hartman
b24413180f License cleanup: add SPDX GPL-2.0 license identifier to files with no license
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.

By default all files without license information are under the default
license of the kernel, which is GPL version 2.

Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier.  The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.

This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.

How this work was done:

Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
 - file had no licensing information it it.
 - file was a */uapi/* one with no licensing information in it,
 - file was a */uapi/* one with existing licensing information,

Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.

The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne.  Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.

The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed.  Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.

Criteria used to select files for SPDX license identifier tagging was:
 - Files considered eligible had to be source code files.
 - Make and config files were included as candidates if they contained >5
   lines of source
 - File already had some variant of a license header in it (even if <5
   lines).

All documentation files were explicitly excluded.

The following heuristics were used to determine which SPDX license
identifiers to apply.

 - when both scanners couldn't find any license traces, file was
   considered to have no license information in it, and the top level
   COPYING file license applied.

   For non */uapi/* files that summary was:

   SPDX license identifier                            # files
   ---------------------------------------------------|-------
   GPL-2.0                                              11139

   and resulted in the first patch in this series.

   If that file was a */uapi/* path one, it was "GPL-2.0 WITH
   Linux-syscall-note" otherwise it was "GPL-2.0".  Results of that was:

   SPDX license identifier                            # files
   ---------------------------------------------------|-------
   GPL-2.0 WITH Linux-syscall-note                        930

   and resulted in the second patch in this series.

 - if a file had some form of licensing information in it, and was one
   of the */uapi/* ones, it was denoted with the Linux-syscall-note if
   any GPL family license was found in the file or had no licensing in
   it (per prior point).  Results summary:

   SPDX license identifier                            # files
   ---------------------------------------------------|------
   GPL-2.0 WITH Linux-syscall-note                       270
   GPL-2.0+ WITH Linux-syscall-note                      169
   ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause)    21
   ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)    17
   LGPL-2.1+ WITH Linux-syscall-note                      15
   GPL-1.0+ WITH Linux-syscall-note                       14
   ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause)    5
   LGPL-2.0+ WITH Linux-syscall-note                       4
   LGPL-2.1 WITH Linux-syscall-note                        3
   ((GPL-2.0 WITH Linux-syscall-note) OR MIT)              3
   ((GPL-2.0 WITH Linux-syscall-note) AND MIT)             1

   and that resulted in the third patch in this series.

 - when the two scanners agreed on the detected license(s), that became
   the concluded license(s).

 - when there was disagreement between the two scanners (one detected a
   license but the other didn't, or they both detected different
   licenses) a manual inspection of the file occurred.

 - In most cases a manual inspection of the information in the file
   resulted in a clear resolution of the license that should apply (and
   which scanner probably needed to revisit its heuristics).

 - When it was not immediately clear, the license identifier was
   confirmed with lawyers working with the Linux Foundation.

 - If there was any question as to the appropriate license identifier,
   the file was flagged for further research and to be revisited later
   in time.

In total, over 70 hours of logged manual review was done on the
spreadsheet to determine the SPDX license identifiers to apply to the
source files by Kate, Philippe, Thomas and, in some cases, confirmation
by lawyers working with the Linux Foundation.

Kate also obtained a third independent scan of the 4.13 code base from
FOSSology, and compared selected files where the other two scanners
disagreed against that SPDX file, to see if there was new insights.  The
Windriver scanner is based on an older version of FOSSology in part, so
they are related.

Thomas did random spot checks in about 500 files from the spreadsheets
for the uapi headers and agreed with SPDX license identifier in the
files he inspected. For the non-uapi files Thomas did random spot checks
in about 15000 files.

In initial set of patches against 4.14-rc6, 3 files were found to have
copy/paste license identifier errors, and have been fixed to reflect the
correct identifier.

Additionally Philippe spent 10 hours this week doing a detailed manual
inspection and review of the 12,461 patched files from the initial patch
version early this week with:
 - a full scancode scan run, collecting the matched texts, detected
   license ids and scores
 - reviewing anything where there was a license detected (about 500+
   files) to ensure that the applied SPDX license was correct
 - reviewing anything where there was no detection but the patch license
   was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
   SPDX license was correct

This produced a worksheet with 20 files needing minor correction.  This
worksheet was then exported into 3 different .csv files for the
different types of files to be modified.

These .csv files were then reviewed by Greg.  Thomas wrote a script to
parse the csv files and add the proper SPDX tag to the file, in the
format that the file expected.  This script was further refined by Greg
based on the output to detect more types of files automatically and to
distinguish between header and source .c files (which need different
comment types.)  Finally Greg ran the script using the .csv files to
generate the patches.

Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-02 11:10:55 +01:00
Kirill Tkhai
76f8507f7a locking/rwsem: Add down_read_killable()
Similar to down_read() and down_write_killable(),
add killable version of down_read(), based on
__down_read_killable() function, added in previous
patches.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: arnd@arndb.de
Cc: avagin@virtuozzo.com
Cc: davem@davemloft.net
Cc: fenghua.yu@intel.com
Cc: gorcunov@virtuozzo.com
Cc: heiko.carstens@de.ibm.com
Cc: hpa@zytor.com
Cc: ink@jurassic.park.msu.ru
Cc: mattst88@gmail.com
Cc: rientjes@google.com
Cc: rth@twiddle.net
Cc: schwidefsky@de.ibm.com
Cc: tony.luck@intel.com
Cc: viro@zeniv.linux.org.uk
Link: http://lkml.kernel.org/r/150670119884.23930.2585570605960763239.stgit@localhost.localdomain
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-10-10 11:50:16 +02:00
Kirill Tkhai
83ced169d9 locking/rwsem-xadd: Add killable versions of rwsem_down_read_failed()
Rename rwsem_down_read_failed() in __rwsem_down_read_failed_common()
and teach it to abort waiting in case of pending signals and killable
state argument passed.

Note, that we shouldn't wake anybody up in EINTR path, as:

We check for (waiter.task) under spinlock before we go to out_nolock
path. Current task wasn't able to be woken up, so there are
a writer, owning the sem, or a writer, which is the first waiter.
In the both cases we shouldn't wake anybody. If there is a writer,
owning the sem, and we were the only waiter, remove RWSEM_WAITING_BIAS,
as there are no waiters anymore.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: arnd@arndb.de
Cc: avagin@virtuozzo.com
Cc: davem@davemloft.net
Cc: fenghua.yu@intel.com
Cc: gorcunov@virtuozzo.com
Cc: heiko.carstens@de.ibm.com
Cc: hpa@zytor.com
Cc: ink@jurassic.park.msu.ru
Cc: mattst88@gmail.com
Cc: rth@twiddle.net
Cc: schwidefsky@de.ibm.com
Cc: tony.luck@intel.com
Link: http://lkml.kernel.org/r/149789534632.9059.2901382369609922565.stgit@localhost.localdomain
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-08-10 12:28:55 +02:00
Jason Low
8ee62b1870 locking/rwsem: Convert sem->count to 'atomic_long_t'
Convert the rwsem count variable to an atomic_long_t since we use it
as an atomic variable. This also allows us to remove the
rwsem_atomic_{add,update}() "abstraction" which would now be an unnecesary
level of indirection. In follow up patches, we also remove the
rwsem_atomic_{add,update}() definitions across the various architectures.

Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Jason Low <jason.low2@hpe.com>
[ Build warning fixes on various architectures. ]
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jason Low <jason.low2@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: Terry Rudd <terry.rudd@hpe.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Waiman Long <Waiman.Long@hpe.com>
Link: http://lkml.kernel.org/r/1465017963-4839-2-git-send-email-jason.low2@hpe.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-06-08 15:16:42 +02:00
Al Viro
887bddfa90 add down_write_killable_nested()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2016-05-26 00:04:58 -04:00
Michal Hocko
916633a403 locking/rwsem: Provide down_write_killable()
Now that all the architectures implement the necessary glue code
we can introduce down_write_killable(). The only difference wrt. regular
down_write() is that the slow path waits in TASK_KILLABLE state and the
interruption by the fatal signal is reported as -EINTR to the caller.

Signed-off-by: Michal Hocko <mhocko@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Zankel <chris@zankel.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Signed-off-by: Jason Low <jason.low2@hp.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-alpha@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-ia64@vger.kernel.org
Cc: linux-s390@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Cc: linux-xtensa@linux-xtensa.org
Cc: sparclinux@vger.kernel.org
Link: http://lkml.kernel.org/r/1460041951-22347-12-git-send-email-mhocko@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-04-22 08:58:33 +02:00
Michal Hocko
d47996082f locking/rwsem: Introduce basis for down_write_killable()
Introduce a generic implementation necessary for down_write_killable().

This is a trivial extension of the already existing down_write() call
which can be interrupted by SIGKILL.  This patch doesn't provide
down_write_killable() yet because arches have to provide the necessary
pieces before.

rwsem_down_write_failed() which is a generic slow path for the
write lock is extended to take a task state and renamed to
__rwsem_down_write_failed_common(). The return value is either a valid
semaphore pointer or ERR_PTR(-EINTR).

rwsem_down_write_failed_killable() is exported as a new way to wait for
the lock and be killable.

For rwsem-spinlock implementation the current __down_write() it updated
in a similar way as __rwsem_down_write_failed_common() except it doesn't
need new exports just visible __down_write_killable().

Architectures which are not using the generic rwsem implementation are
supposed to provide their __down_write_killable() implementation and
use rwsem_down_write_failed_killable() for the slow path.

Signed-off-by: Michal Hocko <mhocko@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Zankel <chris@zankel.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Signed-off-by: Jason Low <jason.low2@hp.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-alpha@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-ia64@vger.kernel.org
Cc: linux-s390@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Cc: linux-xtensa@linux-xtensa.org
Cc: sparclinux@vger.kernel.org
Link: http://lkml.kernel.org/r/1460041951-22347-7-git-send-email-mhocko@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-04-13 10:42:20 +02:00
Davidlohr Bueso
214e0aed63 locking/Documentation: Move locking related docs into Documentation/locking/
Specifically:
  Documentation/locking/lockdep-design.txt
  Documentation/locking/lockstat.txt
  Documentation/locking/mutex-design.txt
  Documentation/locking/rt-mutex-design.txt
  Documentation/locking/rt-mutex.txt
  Documentation/locking/spinlocks.txt
  Documentation/locking/ww-mutex-design.txt

Signed-off-by: Davidlohr Bueso <davidlohr@hp.com>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: jason.low2@hp.com
Cc: aswin@hp.com
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: David Airlie <airlied@linux.ie>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jason Low <jason.low2@hp.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Lubomir Rintel <lkundrak@v3.sk>
Cc: Masanari Iida <standby24x7@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: fengguang.wu@intel.com
Link: http://lkml.kernel.org/r/1406752916-3341-6-git-send-email-davidlohr@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-08-13 10:32:03 +02:00
Davidlohr Bueso
5db6c6fefb locking/rwsem: Add CONFIG_RWSEM_SPIN_ON_OWNER
Just like with mutexes (CONFIG_MUTEX_SPIN_ON_OWNER),
encapsulate the dependencies for rwsem optimistic spinning.
No logical changes here as it continues to depend on both
SMP and the XADD algorithm variant.

Signed-off-by: Davidlohr Bueso <davidlohr@hp.com>
Acked-by: Jason Low <jason.low2@hp.com>
[ Also make it depend on ARCH_SUPPORTS_ATOMIC_RMW. ]
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1405112406-13052-2-git-send-email-davidlohr@hp.com
Cc: aswin@hp.com
Cc: Chris Mason <clm@fb.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Waiman Long <Waiman.Long@hp.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>

Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-07-16 14:57:13 +02:00
Jason Low
ce069fc920 locking/rwsem: Reduce the size of struct rw_semaphore
Recent optimistic spinning additions to rwsem provide significant performance
benefits on many workloads on large machines. The cost of it was increasing
the size of the rwsem structure by up to 128 bits.

However, now that the previous patches in this series bring the overhead of
struct optimistic_spin_queue to 32 bits, this patch reorders some fields in
struct rw_semaphore such that we can reduce the overhead of the rwsem structure
by 64 bits (on 64 bit systems).

The extra overhead required for rwsem optimistic spinning would now be up
to 8 additional bytes instead of up to 16 bytes. Additionally, the size of
rwsem would now be more in line with mutexes.

Signed-off-by: Jason Low <jason.low2@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1405358872-3732-6-git-send-email-jason.low2@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-07-16 14:57:03 +02:00
Jason Low
4d9d951e6b locking/spinlocks/mcs: Introduce and use init macro and function for osq locks
Currently, we initialize the osq lock by directly setting the lock's values. It
would be preferable if we use an init macro to do the initialization like we do
with other locks.

This patch introduces and uses a macro and function for initializing the osq lock.

Signed-off-by: Jason Low <jason.low2@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1405358872-3732-4-git-send-email-jason.low2@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-07-16 13:28:05 +02:00
Jason Low
90631822c5 locking/spinlocks/mcs: Convert osq lock to atomic_t to reduce overhead
The cancellable MCS spinlock is currently used to queue threads that are
doing optimistic spinning. It uses per-cpu nodes, where a thread obtaining
the lock would access and queue the local node corresponding to the CPU that
it's running on. Currently, the cancellable MCS lock is implemented by using
pointers to these nodes.

In this patch, instead of operating on pointers to the per-cpu nodes, we
store the CPU numbers in which the per-cpu nodes correspond to in atomic_t.
A similar concept is used with the qspinlock.

By operating on the CPU # of the nodes using atomic_t instead of pointers
to those nodes, this can reduce the overhead of the cancellable MCS spinlock
by 32 bits (on 64 bit systems).

Signed-off-by: Jason Low <jason.low2@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1405358872-3732-3-git-send-email-jason.low2@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-07-16 13:28:04 +02:00
Jason Low
046a619d8e locking/spinlocks/mcs: Rename optimistic_spin_queue() to optimistic_spin_node()
Currently, the per-cpu nodes structure for the cancellable MCS spinlock is
named "optimistic_spin_queue". However, in a follow up patch in the series
we will be introducing a new structure that serves as the new "handle" for
the lock. It would make more sense if that structure is named
"optimistic_spin_queue". Additionally, since the current use of the
"optimistic_spin_queue" structure are  "nodes", it might be better if we
rename them to "node" anyway.

This preparatory patch renames all current "optimistic_spin_queue"
to "optimistic_spin_node".

Signed-off-by: Jason Low <jason.low2@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Norton <scott.norton@hp.com>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Waiman Long <waiman.long@hp.com>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1405358872-3732-2-git-send-email-jason.low2@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-07-16 13:28:03 +02:00
Davidlohr Bueso
dbb5eafa23 locking/rwsem: Fix warnings for CONFIG_RWSEM_GENERIC_SPINLOCK
Optimistic spinning is only used by the xadd variant
of rw-semaphores. Make sure that we use the old version
of the __RWSEM_INITIALIZER macro for systems that rely
on the spinlock one, otherwise warnings can be triggered,
such as the following reported on an arm box:

  ipc/ipcns_notifier.c:22:8: warning: excess elements in struct initializer [enabled by default]
  ipc/ipcns_notifier.c:22:8: warning: (near initialization for 'ipcns_chain.rwsem') [enabled by default]
  ipc/ipcns_notifier.c:22:8: warning: excess elements in struct initializer [enabled by default]
  ipc/ipcns_notifier.c:22:8: warning: (near initialization for 'ipcns_chain.rwsem') [enabled by default]

Signed-off-by: Davidlohr Bueso <davidlohr@hp.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Michel Lespinasse <walken@google.com>
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: Alex Shi <alex.shi@linaro.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Jason Low <jason.low2@hp.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Chris Mason <clm@fb.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1400545677.6399.10.camel@buesod1.americas.hpqcorp.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-06-05 10:38:45 +02:00
Davidlohr Bueso
4fc828e24c locking/rwsem: Support optimistic spinning
We have reached the point where our mutexes are quite fine tuned
for a number of situations. This includes the use of heuristics
and optimistic spinning, based on MCS locking techniques.

Exclusive ownership of read-write semaphores are, conceptually,
just about the same as mutexes, making them close cousins. To
this end we need to make them both perform similarly, and
right now, rwsems are simply not up to it. This was discovered
by both reverting commit 4fc3f1d6 (mm/rmap, migration: Make
rmap_walk_anon() and try_to_unmap_anon() more scalable) and
similarly, converting some other mutexes (ie: i_mmap_mutex) to
rwsems. This creates a situation where users have to choose
between a rwsem and mutex taking into account this important
performance difference. Specifically, biggest difference between
both locks is when we fail to acquire a mutex in the fastpath,
optimistic spinning comes in to play and we can avoid a large
amount of unnecessary sleeping and overhead of moving tasks in
and out of wait queue. Rwsems do not have such logic.

This patch, based on the work from Tim Chen and I, adds support
for write-side optimistic spinning when the lock is contended.
It also includes support for the recently added cancelable MCS
locking for adaptive spinning. Note that is is only applicable
to the xadd method, and the spinlock rwsem variant remains intact.

Allowing optimistic spinning before putting the writer on the wait
queue reduces wait queue contention and provided greater chance
for the rwsem to get acquired. With these changes, rwsem is on par
with mutex. The performance benefits can be seen on a number of
workloads. For instance, on a 8 socket, 80 core 64bit Westmere box,
aim7 shows the following improvements in throughput:

 +--------------+---------------------+-----------------+
 |   Workload   | throughput-increase | number of users |
 +--------------+---------------------+-----------------+
 | alltests     | 20%                 | >1000           |
 | custom       | 27%, 60%            | 10-100, >1000   |
 | high_systime | 36%, 30%            | >100, >1000     |
 | shared       | 58%, 29%            | 10-100, >1000   |
 +--------------+---------------------+-----------------+

There was also improvement on smaller systems, such as a quad-core
x86-64 laptop running a 30Gb PostgreSQL (pgbench) workload for up
to +60% in throughput for over 50 clients. Additionally, benefits
were also noticed in exim (mail server) workloads. Furthermore, no
performance regression have been seen at all.

Based-on-work-from: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Davidlohr Bueso <davidlohr@hp.com>
[peterz: rej fixup due to comment patches, sched/rt.h header]
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Alex Shi <alex.shi@linaro.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Michel Lespinasse <walken@google.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: "Paul E.McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Jason Low <jason.low2@hp.com>
Cc: Aswin Chandramouleeswaran <aswin@hp.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Scott J Norton" <scott.norton@hp.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Chris Mason <clm@fb.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Link: http://lkml.kernel.org/r/1399055055.6275.15.camel@buesod1.americas.hpqcorp.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2014-06-05 10:38:21 +02:00
Josef Bacik
4a444b1f06 rwsem: add rwsem_is_contended
Btrfs needs a simple way to know if it needs to let go of it's read lock on a
rwsem.  Introduce rwsem_is_contended to check to see if there are any waiters on
this rwsem currently.  This is just a hueristic, it is meant to be light and not
100% accurate and called by somebody already holding on to the rwsem in either
read or write.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <clm@fb.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
2014-01-28 13:20:09 -08:00
Kent Overstreet
84759c6d18 Revert "rw_semaphore: remove up/down_read_non_owner"
This reverts commit 11b80f459a.

Bcache needs rw semaphores for cache coherency in writeback mode -
writes have to take a read lock on a per cache device rw sem, and
release it when the bio completes.

But since this is for bios it's naturally not in the context of the
process that originally took the lock.

Signed-off-by: Kent Overstreet <koverstreet@google.com>
CC: Christoph Hellwig <hch@infradead.org>
CC: David Howells <dhowells@redhat.com>
2013-03-23 15:53:52 -07:00
Jiri Kosina
e65b9ad222 lockdep, rwsem: fix down_write_nest_lock() if !CONFIG_DEBUG_LOCK_ALLOC
Commit 1b963c81b1 ("lockdep, rwsem: provide down_write_nest_lock()")
contains a bug in a codepath when CONFIG_DEBUG_LOCK_ALLOC is disabled,
which causes down_read() to be called instead of down_write() by mistake
on such configurations.  Fix that.

Reported-and-tested-by: Andrew Clayton <andrew@digital-domain.net>
Reported-and-tested-by: Zlatko Calusic <zlatko.calusic@iskon.hr>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Reviewed-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-01-16 12:13:20 -08:00
Jiri Kosina
1b963c81b1 lockdep, rwsem: provide down_write_nest_lock()
down_write_nest_lock() provides a means to annotate locking scenario
where an outer lock is guaranteed to serialize the order nested locks
are being acquired.

This is analogoue to already existing mutex_lock_nest_lock() and
spin_lock_nest_lock().

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Cc: Rik van Riel <riel@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mel Gorman <mel@csn.ul.ie>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-01-11 14:54:55 -08:00
David Howells
9ffc93f203 Remove all #inclusions of asm/system.h
Remove all #inclusions of asm/system.h preparatory to splitting and killing
it.  Performed with the following command:

perl -p -i -e 's!^#\s*include\s*<asm/system[.]h>.*\n!!' `grep -Irl '^#\s*include\s*<asm/system[.]h>' *`

Signed-off-by: David Howells <dhowells@redhat.com>
2012-03-28 18:30:03 +01:00
Thomas Gleixner
ddb6c9b58a locking, rwsem: Annotate inner lock as raw
There is no reason to allow the lock protecting rwsems (the
ownerless variant) to be preemptible on -rt. Convert it to raw.

In mainline this change documents the low level nature of
the lock - otherwise there's no functional difference. Lockdep
and Sparse checking will work as usual.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-09-13 11:11:59 +02:00
Arun Sharma
60063497a9 atomic: use <linux/atomic.h>
This allows us to move duplicated code in <asm/atomic.h>
(atomic_inc_not_zero() for now) to <linux/atomic.h>

Signed-off-by: Arun Sharma <asharma@fb.com>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: David Miller <davem@davemloft.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-07-26 16:49:47 -07:00
Christoph Hellwig
11b80f459a rw_semaphore: remove up/down_read_non_owner
Now that the last users is gone these can be removed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-07-20 20:47:47 -04:00
Thomas Gleixner
d123375425 rwsem: Remove redundant asmregparm annotation
Peter Zijlstra pointed out, that the only user of asmregparm (x86) is
compiling the kernel already with -mregparm=3. So the annotation of
the rwsem functions is redundant. Remove it.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <alpine.LFD.2.00.1101262130450.31804@localhost6.localdomain6>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2011-01-27 12:30:40 +01:00
Thomas Gleixner
aac72277fd rwsem: Move duplicate function prototypes to linux/rwsem.h
All architecture specific rwsem headers carry the same function
prototypes. Just x86 adds asmregparm, which is an empty define on all
other architectures. S390 has a stale rwsem_downgrade_write()
prototype.

Remove the duplicates and add the prototypes to linux/rwsem.h

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Richard Henderson <rth@twiddle.net>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <20110126195833.970840140@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2011-01-27 12:30:39 +01:00
Thomas Gleixner
41e5887fa3 rwsem: Unify the duplicate rwsem_is_locked() inlines
Instead of having the same implementation in each architecture, move
it to linux/rwsem.h and remove the duplicates. It's unlikely that an
arch will ever implement something different, but we can deal with
that when it happens.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Matt Turner <mattst88@gmail.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <20110126195833.876773757@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2011-01-27 12:30:39 +01:00
Thomas Gleixner
12249b3441 rwsem: Move duplicate init macros and functions to linux/rwsem.h
The rwsem initializers and related macros and functions are mostly the
same. Some of them lack the lockdep initializer, but having it in
place does not matter for architectures which do not support lockdep.

powerpc, sparc, x86: No functional change

sh, s390: Removes the duplicate init_rwsem (inline and #define)

alpha, ia64, xtensa: Use the lockdep capable init function in
       	     	     lib/rwsem.c which is just uninlining the init
       	     	     function for the LOCKDEP=n case

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Matt Turner <mattst88@gmail.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <20110126195833.771812729@linutronix.de>
2011-01-27 12:30:39 +01:00
Thomas Gleixner
1c8ed640d9 rwsem: Move duplicate struct rwsem declaration to linux/rwsem.h
The difference between these declarations is the data type of the
count member and the lack of lockdep in some architectures/

long is equivivalent to signed long and the #ifdef guarded dep_map
member does not hurt anyone.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Matt Turner <mattst88@gmail.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <20110126195833.679641914@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2011-01-27 12:30:39 +01:00
Thomas Gleixner
c16a87ce06 rwsem: Cleanup includes
All rwsem implementations include the same headers. Include them from
include/linux/rwsem.h

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Matt Turner <mattst88@gmail.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: David Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
LKML-Reference: <20110126195833.483520950@linutronix.de>
2011-01-27 12:30:38 +01:00
Robert P. J. Day
735643ee6c Remove "#ifdef __KERNEL__" checks from unexported headers
Remove the "#ifdef __KERNEL__" tests from unexported header files in
linux/include whose entire contents are wrapped in that preprocessor
test.

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-30 08:29:54 -07:00
Ingo Molnar
5fca80e8b4 [PATCH] lockdep: add more rwsem.h documentation
Add more documentation to rwsem.h.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-10 13:24:14 -07:00
Ingo Molnar
4ea2176dfa [PATCH] lockdep: prove rwsem locking correctness
Use the lock validator framework to prove rwsem locking correctness.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-03 15:27:04 -07:00
Ingo Molnar
c4e05116a2 [PATCH] lockdep: clean up rwsems
Clean up rwsems.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-03 15:27:01 -07:00
David Woodhouse
62c4f0a2d5 Don't include linux/config.h from anywhere else in include/
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-04-26 12:56:16 +01:00
Linus Torvalds
1da177e4c3 Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.

Let it rip!
2005-04-16 15:20:36 -07:00