Files
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

462 lines
15 KiB
C

#ifndef _LINUX_MEMBLOCK_H
#define _LINUX_MEMBLOCK_H
#ifdef __KERNEL__
#ifdef CONFIG_HAVE_MEMBLOCK
/*
* Logical memory blocks.
*
* Copyright (C) 2001 Peter Bergner, IBM Corp.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/init.h>
#include <linux/mm.h>
#define INIT_MEMBLOCK_REGIONS 128
#define INIT_PHYSMEM_REGIONS 4
/**
* enum memblock_flags - definition of memory region attributes
* @MEMBLOCK_NONE: no special request
* @MEMBLOCK_HOTPLUG: hotpluggable region
* @MEMBLOCK_MIRROR: mirrored region
* @MEMBLOCK_NOMAP: don't add to kernel direct mapping
*/
enum memblock_flags {
MEMBLOCK_NONE = 0x0, /* No special request */
MEMBLOCK_HOTPLUG = 0x1, /* hotpluggable region */
MEMBLOCK_MIRROR = 0x2, /* mirrored region */
MEMBLOCK_NOMAP = 0x4, /* don't add to kernel direct mapping */
};
/**
* struct memblock_region - represents a memory region
* @base: physical address of the region
* @size: size of the region
* @flags: memory region attributes
* @nid: NUMA node id
*/
struct memblock_region {
phys_addr_t base;
phys_addr_t size;
enum memblock_flags flags;
#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
int nid;
#endif
};
/**
* struct memblock_type - collection of memory regions of certain type
* @cnt: number of regions
* @max: size of the allocated array
* @total_size: size of all regions
* @regions: array of regions
* @name: the memory type symbolic name
*/
struct memblock_type {
unsigned long cnt;
unsigned long max;
phys_addr_t total_size;
struct memblock_region *regions;
char *name;
};
/**
* struct memblock - memblock allocator metadata
* @bottom_up: is bottom up direction?
* @current_limit: physical address of the current allocation limit
* @memory: usabe memory regions
* @reserved: reserved memory regions
* @physmem: all physical memory
*/
struct memblock {
bool bottom_up; /* is bottom up direction? */
phys_addr_t current_limit;
struct memblock_type memory;
struct memblock_type reserved;
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
struct memblock_type physmem;
#endif
};
extern struct memblock memblock;
extern int memblock_debug;
#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
#define __init_memblock __meminit
#define __initdata_memblock __meminitdata
void memblock_discard(void);
#else
#define __init_memblock
#define __initdata_memblock
#endif
#define memblock_dbg(fmt, ...) \
if (memblock_debug) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
phys_addr_t memblock_find_in_range_node(phys_addr_t size, phys_addr_t align,
phys_addr_t start, phys_addr_t end,
int nid, enum memblock_flags flags);
phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
phys_addr_t size, phys_addr_t align);
void memblock_allow_resize(void);
int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
int memblock_add(phys_addr_t base, phys_addr_t size);
int memblock_remove(phys_addr_t base, phys_addr_t size);
int memblock_free(phys_addr_t base, phys_addr_t size);
int memblock_reserve(phys_addr_t base, phys_addr_t size);
void memblock_trim_memory(phys_addr_t align);
bool memblock_overlaps_region(struct memblock_type *type,
phys_addr_t base, phys_addr_t size);
int memblock_mark_hotplug(phys_addr_t base, phys_addr_t size);
int memblock_clear_hotplug(phys_addr_t base, phys_addr_t size);
int memblock_mark_mirror(phys_addr_t base, phys_addr_t size);
int memblock_mark_nomap(phys_addr_t base, phys_addr_t size);
int memblock_clear_nomap(phys_addr_t base, phys_addr_t size);
enum memblock_flags choose_memblock_flags(void);
/* Low level functions */
int memblock_add_range(struct memblock_type *type,
phys_addr_t base, phys_addr_t size,
int nid, enum memblock_flags flags);
void __next_mem_range(u64 *idx, int nid, enum memblock_flags flags,
struct memblock_type *type_a,
struct memblock_type *type_b, phys_addr_t *out_start,
phys_addr_t *out_end, int *out_nid);
void __next_mem_range_rev(u64 *idx, int nid, enum memblock_flags flags,
struct memblock_type *type_a,
struct memblock_type *type_b, phys_addr_t *out_start,
phys_addr_t *out_end, int *out_nid);
void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start,
phys_addr_t *out_end);
void __memblock_free_early(phys_addr_t base, phys_addr_t size);
void __memblock_free_late(phys_addr_t base, phys_addr_t size);
void create_pgtable_mapping(phys_addr_t start, phys_addr_t end);
/**
* for_each_mem_range - iterate through memblock areas from type_a and not
* included in type_b. Or just type_a if type_b is NULL.
* @i: u64 used as loop variable
* @type_a: ptr to memblock_type to iterate
* @type_b: ptr to memblock_type which excludes from the iteration
* @nid: node selector, %NUMA_NO_NODE for all nodes
* @flags: pick from blocks based on memory attributes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL
*/
#define for_each_mem_range(i, type_a, type_b, nid, flags, \
p_start, p_end, p_nid) \
for (i = 0, __next_mem_range(&i, nid, flags, type_a, type_b, \
p_start, p_end, p_nid); \
i != (u64)ULLONG_MAX; \
__next_mem_range(&i, nid, flags, type_a, type_b, \
p_start, p_end, p_nid))
/**
* for_each_mem_range_rev - reverse iterate through memblock areas from
* type_a and not included in type_b. Or just type_a if type_b is NULL.
* @i: u64 used as loop variable
* @type_a: ptr to memblock_type to iterate
* @type_b: ptr to memblock_type which excludes from the iteration
* @nid: node selector, %NUMA_NO_NODE for all nodes
* @flags: pick from blocks based on memory attributes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL
*/
#define for_each_mem_range_rev(i, type_a, type_b, nid, flags, \
p_start, p_end, p_nid) \
for (i = (u64)ULLONG_MAX, \
__next_mem_range_rev(&i, nid, flags, type_a, type_b,\
p_start, p_end, p_nid); \
i != (u64)ULLONG_MAX; \
__next_mem_range_rev(&i, nid, flags, type_a, type_b, \
p_start, p_end, p_nid))
/**
* for_each_reserved_mem_region - iterate over all reserved memblock areas
* @i: u64 used as loop variable
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
*
* Walks over reserved areas of memblock. Available as soon as memblock
* is initialized.
*/
#define for_each_reserved_mem_region(i, p_start, p_end) \
for (i = 0UL, __next_reserved_mem_region(&i, p_start, p_end); \
i != (u64)ULLONG_MAX; \
__next_reserved_mem_region(&i, p_start, p_end))
static inline bool memblock_is_hotpluggable(struct memblock_region *m)
{
return m->flags & MEMBLOCK_HOTPLUG;
}
static inline bool memblock_is_mirror(struct memblock_region *m)
{
return m->flags & MEMBLOCK_MIRROR;
}
static inline bool memblock_is_nomap(struct memblock_region *m)
{
return m->flags & MEMBLOCK_NOMAP;
}
#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
int memblock_search_pfn_nid(unsigned long pfn, unsigned long *start_pfn,
unsigned long *end_pfn);
void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn,
unsigned long *out_end_pfn, int *out_nid);
/**
* for_each_mem_pfn_range - early memory pfn range iterator
* @i: an integer used as loop variable
* @nid: node selector, %MAX_NUMNODES for all nodes
* @p_start: ptr to ulong for start pfn of the range, can be %NULL
* @p_end: ptr to ulong for end pfn of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL
*
* Walks over configured memory ranges.
*/
#define for_each_mem_pfn_range(i, nid, p_start, p_end, p_nid) \
for (i = -1, __next_mem_pfn_range(&i, nid, p_start, p_end, p_nid); \
i >= 0; __next_mem_pfn_range(&i, nid, p_start, p_end, p_nid))
#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
/**
* for_each_free_mem_range - iterate through free memblock areas
* @i: u64 used as loop variable
* @nid: node selector, %NUMA_NO_NODE for all nodes
* @flags: pick from blocks based on memory attributes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL
*
* Walks over free (memory && !reserved) areas of memblock. Available as
* soon as memblock is initialized.
*/
#define for_each_free_mem_range(i, nid, flags, p_start, p_end, p_nid) \
for_each_mem_range(i, &memblock.memory, &memblock.reserved, \
nid, flags, p_start, p_end, p_nid)
/**
* for_each_free_mem_range_reverse - rev-iterate through free memblock areas
* @i: u64 used as loop variable
* @nid: node selector, %NUMA_NO_NODE for all nodes
* @flags: pick from blocks based on memory attributes
* @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
* @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
* @p_nid: ptr to int for nid of the range, can be %NULL
*
* Walks over free (memory && !reserved) areas of memblock in reverse
* order. Available as soon as memblock is initialized.
*/
#define for_each_free_mem_range_reverse(i, nid, flags, p_start, p_end, \
p_nid) \
for_each_mem_range_rev(i, &memblock.memory, &memblock.reserved, \
nid, flags, p_start, p_end, p_nid)
static inline void memblock_set_region_flags(struct memblock_region *r,
enum memblock_flags flags)
{
r->flags |= flags;
}
static inline void memblock_clear_region_flags(struct memblock_region *r,
enum memblock_flags flags)
{
r->flags &= ~flags;
}
#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
int memblock_set_node(phys_addr_t base, phys_addr_t size,
struct memblock_type *type, int nid);
static inline void memblock_set_region_node(struct memblock_region *r, int nid)
{
r->nid = nid;
}
static inline int memblock_get_region_node(const struct memblock_region *r)
{
return r->nid;
}
#else
static inline void memblock_set_region_node(struct memblock_region *r, int nid)
{
}
static inline int memblock_get_region_node(const struct memblock_region *r)
{
return 0;
}
#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
phys_addr_t memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid);
phys_addr_t memblock_alloc_try_nid(phys_addr_t size, phys_addr_t align, int nid);
phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align);
/*
* Set the allocation direction to bottom-up or top-down.
*/
static inline void __init memblock_set_bottom_up(bool enable)
{
memblock.bottom_up = enable;
}
/*
* Check if the allocation direction is bottom-up or not.
* if this is true, that said, memblock will allocate memory
* in bottom-up direction.
*/
static inline bool memblock_bottom_up(void)
{
return memblock.bottom_up;
}
/* Flags for memblock_alloc_base() amd __memblock_alloc_base() */
#define MEMBLOCK_ALLOC_ANYWHERE (~(phys_addr_t)0)
#define MEMBLOCK_ALLOC_ACCESSIBLE 0
#define MEMBLOCK_ALLOC_KASAN 1
phys_addr_t __init memblock_alloc_range(phys_addr_t size, phys_addr_t align,
phys_addr_t start, phys_addr_t end,
enum memblock_flags flags);
phys_addr_t memblock_alloc_base_nid(phys_addr_t size,
phys_addr_t align, phys_addr_t max_addr,
int nid, enum memblock_flags flags);
phys_addr_t memblock_alloc_base(phys_addr_t size, phys_addr_t align,
phys_addr_t max_addr);
phys_addr_t __memblock_alloc_base(phys_addr_t size, phys_addr_t align,
phys_addr_t max_addr);
phys_addr_t memblock_phys_mem_size(void);
phys_addr_t memblock_reserved_size(void);
phys_addr_t memblock_mem_size(unsigned long limit_pfn);
phys_addr_t memblock_start_of_DRAM(void);
phys_addr_t memblock_end_of_DRAM(void);
phys_addr_t memblock_max_addr(phys_addr_t limit);
void memblock_enforce_memory_limit(phys_addr_t memory_limit);
void memblock_cap_memory_range(phys_addr_t base, phys_addr_t size);
void memblock_mem_limit_remove_map(phys_addr_t limit);
bool memblock_is_memory(phys_addr_t addr);
bool memblock_is_map_memory(phys_addr_t addr);
bool memblock_is_region_memory(phys_addr_t base, phys_addr_t size);
bool memblock_is_reserved(phys_addr_t addr);
bool memblock_is_region_reserved(phys_addr_t base, phys_addr_t size);
bool memblock_overlaps_memory(phys_addr_t base, phys_addr_t size);
extern void __memblock_dump_all(void);
static inline void memblock_dump_all(void)
{
if (memblock_debug)
__memblock_dump_all();
}
/**
* memblock_set_current_limit - Set the current allocation limit to allow
* limiting allocations to what is currently
* accessible during boot
* @limit: New limit value (physical address)
*/
void memblock_set_current_limit(phys_addr_t limit);
phys_addr_t memblock_get_current_limit(void);
/*
* pfn conversion functions
*
* While the memory MEMBLOCKs should always be page aligned, the reserved
* MEMBLOCKs may not be. This accessor attempt to provide a very clear
* idea of what they return for such non aligned MEMBLOCKs.
*/
/**
* memblock_region_memory_base_pfn - get the lowest pfn of the memory region
* @reg: memblock_region structure
*
* Return: the lowest pfn intersecting with the memory region
*/
static inline unsigned long memblock_region_memory_base_pfn(const struct memblock_region *reg)
{
return PFN_UP(reg->base);
}
/**
* memblock_region_memory_end_pfn - get the end pfn of the memory region
* @reg: memblock_region structure
*
* Return: the end_pfn of the reserved region
*/
static inline unsigned long memblock_region_memory_end_pfn(const struct memblock_region *reg)
{
return PFN_DOWN(reg->base + reg->size);
}
/**
* memblock_region_reserved_base_pfn - get the lowest pfn of the reserved region
* @reg: memblock_region structure
*
* Return: the lowest pfn intersecting with the reserved region
*/
static inline unsigned long memblock_region_reserved_base_pfn(const struct memblock_region *reg)
{
return PFN_DOWN(reg->base);
}
/**
* memblock_region_reserved_end_pfn - get the end pfn of the reserved region
* @reg: memblock_region structure
*
* Return: the end_pfn of the reserved region
*/
static inline unsigned long memblock_region_reserved_end_pfn(const struct memblock_region *reg)
{
return PFN_UP(reg->base + reg->size);
}
#define for_each_memblock(memblock_type, region) \
for (region = memblock.memblock_type.regions; \
region < (memblock.memblock_type.regions + memblock.memblock_type.cnt); \
region++)
#define for_each_memblock_type(i, memblock_type, rgn) \
for (i = 0, rgn = &memblock_type->regions[0]; \
i < memblock_type->cnt; \
i++, rgn = &memblock_type->regions[i])
#define for_each_memblock_rev(memblock_type, region) \
for (region = memblock.memblock_type.regions + \
memblock.memblock_type.cnt - 1; \
region >= memblock.memblock_type.regions; \
region--)
#ifdef CONFIG_MEMTEST
extern void early_memtest(phys_addr_t start, phys_addr_t end);
#else
static inline void early_memtest(phys_addr_t start, phys_addr_t end)
{
}
#endif
#else
static inline phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align)
{
return 0;
}
#endif /* CONFIG_HAVE_MEMBLOCK */
#endif /* __KERNEL__ */
#endif /* _LINUX_MEMBLOCK_H */