Sync up with android13-5.15 for the following commits now that the ABI is frozen:e31981896dANDROID: ABI: Update symbols to unisoc whitelist for the drmf1bf82c3daANDROID: Enable GKI Dr. No Enforcement3456f4eeeeANDROID: GKI: 6/17/2022 KMI updatea047de7997ANDROID: GKI: add PG_oem_reserved in enum pageflagsb7a7765d8aANDROID: power: Add ANDROID_OEM_DATA_ARRAY in freq_qos_request.d1faa010caFROMGIT: cgroup: Use separate src/dst nodes when preloading css_sets for migrationdfdd57b019ANDROID: vendor_hooks: export hooks of mem_cgroup subsystem04bb2779c9ANDROID: vendor_hooks: add a field in pglist_data59e1e26589ANDROID: Allow vendor module to reclaim a memcg326983dc9cANDROID: Export memcg functions to allow module to add new filesf50ef59058ANDROID: vendor_hooks: add hooks in mem_cgroup subsystem6575ef0cd7ANDROID: ASoC: core- Add vendor data fields to support hostless DAI8255004daeANDROID: GKI: Add ANDROID_OEM_DATA_ARRAY() in struct ufs_hba1c450d2d9eANDROID: gic-v3: Update vendor hook to set affinity in GIC v3d13008eb9fANDROID: GKI: add ANDROID_OEM_DATA in struct bio6abf3c5ef2BACKPORT: FROMLIST: cfg80211: Indicate MLO connection info in connect and roam callbacks29356dc0a2BACKPORT: FROMGIT: wifi: cfg80211: add optional link add/remove callbacksbecbedacf9BACKPORT: FROMGIT: wifi: cfg80211: sort trace.he1913fb476BACKPORT: FROMGIT: wifi: nl80211: update add/remove link command3f048cd911BACKPORT: FROMGIT: wifi: nl80211: support MLO in auth/assoc9af03657fbBACKPORT: FROMGIT: wifi: cfg80211: simplify cfg80211_mlme_auth() prototype27f48acb1bBACKPORT: FROMGIT: wifi: ieee80211: add definitions for multi-link element10f80b7397BACKPORT: FROMGIT: wifi: nl80211: refactor BSS lookup in nl80211_associate()442c68f14fBACKPORT: FROMGIT: wifi: cfg80211: mlme: get BSS entry outside cfg80211_mlme_assoc()d975927513BACKPORT: FROMGIT: wifi: cfg80211: do some rework towards MLO link APIsaf34adaa6aBACKPORT: FROMLIST: cfg80211: Increase akm_suites array size in cfg80211_crypto_settingsbee631cec5ANDROID: nl80211/cfg80211: Add support to do API changes after GKI freeze3dc56c75d2ANDROID: Add macros to create reserved data fields to backport upstream changes10f3543124UPSTREAM: wil6210: remove 'freq' debugfsd14ea158d6ANDROID: GKI: Add ANDROID_OEM_DATA() in struct queue_limitsd534eb259eFROMLIST: ALSA: control: Use xarray for faster lookupsbcef255e59ANDROID: vendor_hooks: add a field in mem_cgroupefc7473371FROMGIT: PCI: dwc: Fix MSI msi_msg dma mapping99af01f2b7Revert "ANDROID: PCI: dwc: revert dwc 32-bit DMA mask for MSI address requirement"7b26719a77ANDROID: GKI: use internal type definitions in vendor hooksd5f809c84dANDROID: GKI: use public type definitions in vendor hooks6b7259073eANDROID: GKI: add ANDROID_OEM_DATA() in struct request_queue7a43f1f694ANDROID: vendor_hooks: add hook and OEM data for slab shrinkcbd20786b6FROMLIST: scsi: ufs: Export regulator functionsdf17a9b985ANDROID: GKI: timer.h: add Android ABI padding to a structure706766bc6cANDROID: GKI: USB: add Android ABI padding to some structuresa61964fc70ANDROID: GKI: sched.h: add Android ABI padding to some structures6a79d5b96bANDROID: GKI: module.h: add Android ABI padding to some structures09c51db0d2ANDROID: GKI: sock.h: add Android ABI padding to some structures0b82194ecbANDROID: GKI: sched: add Android ABI padding to some structuresda717c3ce1ANDROID: GKI: mount.h: add Android ABI padding to some structures98042d19adANDROID: GKI: mm: add Android ABI padding to some structuresb89d56cc81ANDROID: GKI: add some padding to some driver core structures5940799827ANDROID: GKI: add padding to struct hid_device936b0da47bANDROID: GKI: USB: XHCI: add Android ABI padding to lots of xhci structuresdb2b68eb63ANDROID: GKI: dwc3: add Android ABI padding to some structurese5fd26ff2dANDROID: GKI: sound/usb/card.h: add Android ABI padding to struct snd_usb_endpoint0e6d2288f0ANDROID: GKI: user_namespace.h: add Android ABI padding to a structure55f5cb7439ANDROID: GKI: quota.h: add Android ABI padding to some structures8137f1d169ANDROID: GKI: mmu_notifier.h: add Android ABI padding to some structures30d36e31c5ANDROID: GKI: mm.h: add Android ABI padding to a structurec57f9e1d48ANDROID: GKI: kobject.h: add Android ABI padding to some structures4a30d8ecf0ANDROID: GKI: kernfs.h: add Android ABI padding to some structures7426a5b28cANDROID: GKI: irqdomain.h: add Android ABI padding to a structureabc5541f4cANDROID: GKI: ioport.h: add Android ABI padding to a structure80b63f2f01ANDROID: GKI: iomap.h: add Android ABI padding to a structure2ca1ba50e6ANDROID: GKI: hrtimer.h: add Android ABI padding to a structuref25b001302ANDROID: GKI: genhd.h: add Android ABI padding to some structures5988e691deANDROID: GKI: ethtool.h: add Android ABI padding to a structure5d4e30d9b9ANDROID: GKI: dma-mapping.h: add Android ABI padding to a structurebd3b9b13efANDROID: GKI: networking: add Android ABI padding to a lot of networking structuresc422535706ANDROID: GKI: blk_types.h: add Android ABI padding to a structure94e58fdb6eANDROID: GKI: scsi.h: add Android ABI padding to a structure804026210fANDROID: GKI: pci: add Android ABI padding to some structures4e079c929fANDROID: GKI: add Android ABI padding to struct nf_conn5e65f67ae0ANDROID: abi_gki_aarch64_qcom: Add rproc and rpmsg helpers111cae8473FROMLIST: rpmsg: core: Introduce rproc_mem_entry_free9eed2acb93FROMLIST: remoteproc: core: Add helper to remove carveouts6ac966ab47UPSTREAM: remoteproc: move rproc_da_to_va declaration to remoteproc.h76801c2626FROMLIST: rpmsg: char: Add support to use rpmsg_rx_donea4f64634adFROMLIST: rpmsg: core: Add rx done hooks60a6ad4211FROMLIST: mmc: sdhci-msm: Enable force hw reset during cqe recovery024f778bbbFROMLIST: mmc: core: Introduce new flag to force hardware reset74e6357176ANDROID: GKI: Add ANDROID_OEM_DATA in struct ufs_dev_info9662426af3ANDROID: sched: Add oem data in struct rqd6f34bc835FROMLIST: drivers/thermal/thermal_of: Add critical/hot ops support for thermal_of sensor50bca2f782Revert "Revert "ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST""dc3e85677bRevert "Revert "ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_tags""90e5d9e303Revert "Revert "ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_ctx""071859b45aANDROID: mmc: Add vendor hooks22c62839a1ANDROID: scsi: ufs: Enable CONFIG_SCSI_UFS_HPB1ef6a91031FROMGIT: drivers/thermal/thermal_of: Add change_mode ops support for thermal_of sensor377ef18ed6FROMGIT: mmc: cqhci: Capture eMMC and SD card errors232df716fbFROMGIT: mmc: debugfs: Add debug fs error state entry for mmc drivera70d301048FROMGIT: mmc: debugfs: Add debug fs entry for mmc driver6f0f720466FROMGIT: mmc: sdhci: Capture eMMC and SD card errors7ace0d462aFROMGIT: mmc: core: Capture eMMC and SD card errors45850948d1ANDROID: GKI: Add OEM data to mutex/rwsem1dc9f51423ANDROID: GKI: net: add vendor hooks for 'struct sock' lifecycle72c4b4cdadANDROID: GKI: net: add vendor hooks for 'struct nf_conn' lifecycle7948b5ff64ANDROID: GKI: add vendor padding variable in struct sock889670d815ANDROID: GKI: add vendor padding variable in struct nf_conn2d9a4bfb7bFROMLIST: dma-buf: Move sysfs work out of DMA-BUF export pathebc5cf22b4ANDROID: Add vendor hook for MemcgV2 optimizationdbb4320c14UPSTREAM: scsi: ufs: core: Probe for temperature notification support8ee9980737ANDROID: scsi: ufs: Support Multi-Circular Queueb528c7889dUPSTREAM: mmc: core: Add host specific tuning support for eMMC HS400 mode6b6ee4548aUPSTREAM: mmc: mtk-sd: Add HS400 online tuning support9a63e4dcc0UPSTREAM: dt-bindings: mmc: mtk-sd: Add hs400 dly3 setting6551a55c4dANDROID: powerpc/mm: protect vm_file during speculative page fault handling4fc18576caANDROID: x86/mm: protect vm_file during speculative page fault handling0f4ea1e593ANDROID: arm64/mm: protect vm_file during speculative page fault handlinga3fe25d923ANDROID: add vma->file_ref_count to synchronize vma->vm_file destructiona16e169d36Revert "ANDROID: Use the notifier lock to perform file-backed vma teardown"f25e13c1bcRevert "ANDROID: Fix build errors caused by missing mmu_notifier_lock definition"9a526b9527UPSTREAM: xfrm: fix "disable_policy" flag use when arriving from different devices6508a3753cUPSTREAM: xfrm: rework default policy structure3ae9599990UPSTREAM: net: fix dev_fill_forward_path with pppoe + bridge75cd98366dUPSTREAM: btrfs: fallback to blocking mode when doing async dio over multiple extentsa5070df850UPSTREAM: btrfs: fix deadlock due to page faults during direct IO reads and writes3446e643b7UPSTREAM: mm: gup: make fault_in_safe_writeable() use fixup_user_fault()ee1ecd7ea5UPSTREAM: gfs2: Fix mmap + page fault deadlocks for direct I/O127a8ed2d3UPSTREAM: iov_iter: Introduce nofault flag to disable page faultsccf74d1ecaUPSTREAM: selftests/bpf: Add test for reg2btf_ids out of bounds access83e7514f57UPSTREAM: bpf: Fix crash due to out of bounds access into reg2btf_ids.2f53e2190dUPSTREAM: bpf/selftests: Test PTR_TO_RDONLY_MEM8f07caaddcUPSTREAM: bpf: Add MEM_RDONLY for helper args that are pointers to rdonly mem.e1714bff1cUPSTREAM: bpf: Make per_cpu_ptr return rdonly PTR_TO_MEM.d7ebee8df3UPSTREAM: bpf: Convert PTR_TO_MEM_OR_NULL to composable types.1cd4928129UPSTREAM: bpf: Introduce MEM_RDONLY flag13fc6550b0UPSTREAM: bpf: Replace PTR_TO_XXX_OR_NULL with PTR_TO_XXX | PTR_MAYBE_NULLf5a45f25bfUPSTREAM: bpf: Replace RET_XXX_OR_NULL with RET_XXX | PTR_MAYBE_NULLcc6305f056UPSTREAM: bpf: Replace ARG_XXX_OR_NULL with ARG_XXX | PTR_MAYBE_NULLcc3b22beadUPSTREAM: bpf: Introduce composable reg, ret and arg types.3f1805c930ANDROID: Update symbol list for mtk536083a4ceANDROID: GKI: add symbol list file for honor4993f5a6ddANDROID: GKI: Update symbol list for Exynos SoC546461d83fANDROID: KVM: arm64: Prevent kmemleak from accessing .hyp.data4a006e6d47FROMGIT: KVM: arm64: Prevent kmemleak from accessing pKVM memory3882af1c70ANDROID: ABI: Update symbols to unisoc whitelist for the scheduler 4st7754d28433ANDROID: GKI: Update symbols to symbol list4ee2f8b56dFROMLIST: iommu/mediatek: Allow page table PA up to 35bit0b6600b792FROMLIST: iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit4f746c15d7ANDROID: Add vendor hooks to signal.fd2e5c65edANDROID: ashmem: Export is_ashmem_file348b1456e9ANDROID: vendor_hooks: bypass shrink slabe53e6edb46FROMLIST: devcoredump : Serialize devcd_del workab7e76f60cANDROID: GKI: Update symbols list for vivof58e5166c0ANDROID: ABI: Update symbols used by the unisoc filesystem whitelist for the 1stf5ba378e89FROMLIST: of: of_reserved_mem: Increase limit for reserved_mem regions648e73245bANDROID: GKI: Add symbol list file for vivo64a4e77c86ANDROID: Revert "tracing: Disable "other" permission bits in the tracefs files"c8a2e13615ANDROID: vendor_hooks: Add hook for binder38d8fefb73ANDROID: GKI: Update abi_gki_aarch64_qcom for devm_of_clk_del_provider4a0a0fef25Revert "ANDROID: umh: Enable usermode helper for required use cases"43c339540bANDROID: GKI: update module list for fips140 buildb5b6394e25BACKPORT: mm: khugepaged: recalculate min_free_kbytes after stopping khugepaged368cd63a4aANDROID: fault: Add vendor hook for TLB conflict56b51fac38BACKPORT: FROMLIST: block/bfq: Enable I/O statistics933eddd126ANDROID: Adding Image.gz and boot-gz.imgf28cdbf9eeANDROID: usb: dwc3: export tracepoint for dwc3 read/write7a0c3689e0ANDROID: usb: add EXPORT_TRACE_SYMBOL to export tracepointd03bf01b43UPSTREAM: usb: dwc3: core: Add error log when core soft reset failed435a42a0b4ANDROID: GKI: Update symbols to abi_gki_aarch64_oplus1502f0ea7cANDROID: Add hook to show vendor info for transactions15a32b46eeANDROID: GKI: Update abi_gki_aarch64_qcom for partial init tracepointe8b5afb658ANDROID: vendor_hooks: Add hook for partial_init854f840411ANDROID: mutex: Add vendor hook to init mutex oem data.7c82ee91c2FROMLIST: scsi: ufs-mediatek: Introduce workaround for power mode change0b0ceacf04FROMLIST: scsi: ufs: Fix ADAPT logic for HS-G597d940cfa3FROMLIST: scsi: ufs: Export ufshcd_uic_change_pwr_mode()57388a13abANDROID: Update symbol list for mtk2d18a97422BACKPORT: FROMGIT: usb: dwc3: add power down scale setting08a1879c87ANDROID: GKI: remove info print for header generation5452f089f9UPSTREAM: gup: Introduce FOLL_NOFAULT flag to disable page faults18e16d6365UPSTREAM: iomap: Support partial direct I/O on user copy failures89f91db7aeUPSTREAM: iomap: Fix iomap_dio_rw return value for user copies9d16bdb659UPSTREAM: gfs2: Fix mmap + page fault deadlocks for buffered I/O64ef40ba87UPSTREAM: gfs2: Eliminate ip->i_ghf0a127f84bUPSTREAM: gfs2: Move the inode glock locking to gfs2_file_buffered_write4e70d7c309UPSTREAM: gfs2: Introduce flag for glock holder auto-demotiond0e98c116dUPSTREAM: gfs2: Clean up function may_grant3b46c843f2UPSTREAM: gfs2: Add wrapper for iomap_file_buffered_write6603584106UPSTREAM: iov_iter: Introduce fault_in_iov_iter_writeablee1c331f4ecUPSTREAM: iov_iter: Turn iov_iter_fault_in_readable into fault_in_iov_iter_readabled9fb814064UPSTREAM: gup: Turn fault_in_pages_{readable,writeable} into fault_in_{readable,writeable}4d242c3433ANDROID: vendor_hooks: tune reclaim swappiness or scan type113b63538cFROMLIST: power_supply: Register cooling device outside of probee4e3aadd01ANDROID: vendor_hooks: Add hooks to tcp/udp send/recv msg functions.cabca1b98eANDROID: GKI: Add vendor hook to binder transactiond1367b5473ANDROID: binder: fix race in priority restoree8fcc17a57ANDROID: binder: switch task argument for binder_thread16c04a2732ANDROID: binder: pass desired priority by reference7da5987f5dANDROID: binder: fold common setup of node_prio6fbdd5a252ANDROID: vendor_hooks: Add hooks for account process tick0902cc73b7ANDROID: vendor_hooks: Add hooks for rwsem and mutex3e3677f8f1UPSTREAM: usb: gadget: f_mass_storage: Make CD-ROM emulation work with Mac OS-Xe0a580025cANDROID: Update symbol list for mtk9a7732c0b2ANDROID: input: Add vendor hook for __pass_event in evdev.cc555553a40ANDROID: umh: Enable usermode helper for required use cases50a2b178c5ANDROID: vendor_hooks: Add hooks to dup_task_structd450a89aa1ANDROID: GKI: add symbol list file for xiaomibfda92e572ANDROID: ABI: Update symbols to unisoc whitelist for the 7thdd4c3a3bc9ANDROID: GKI: Update abi_gki_aarch64_qcom for pm flag set tracepoint596dcf7986ANDROID: vendor_hooks: Add hook in wakeup functionality388f95c620ANDROID: gki_defconfig: enable CONFIG_KFENCE_STATIC_KEYS53df1b822dANDROID: vendor_hooks: Add hooks for account irqtime process tick825d9968d9ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list862fbb8517FROMGIT: mmc: core: Set reset done after hw resetb9029542beANDROID: KVM: arm64: Don't update IOMMUs unnecessarily39e9847ef0ANDROID: Creating boot.img for x86_64 GKI3071eda198ANDROID: abi_gki_aarch64_qcom: Update symbol list with usb_role_string1ac270abbdANDROID: gki_defconfig: Enable RCU_BOOST configaf6c1477c3ANDROID: abi_gki_aarch64_qcom: Add android_vh_disable_thermal_cooling_statsf6e47fd00fANDROID: thermal: vendor hook to disable thermal cooling stats2baf6bfef4UPSTREAM: usb: gadget: f_mass_storage: Disable eps during disconnectc1993b4cbcANDROID: Update symbols list and ABI for qcom03b512f716UPSTREAM: media: uvcvideo: Add UVC_GUID_FORMAT_H265d1b6bd094bANDROID: vendor_hooks: Add hook in shrink_node_memcgs120823bf95UPSTREAM: usb: dwc3: gadget: Change to dev_dbg() when queuing to inactive gadget/ep7bfb6542aeANDROID: Add several symbol lists for unisoc78d6de7863ANDROID: Fix the CONFIG_ANDROID_VENDOR_OEM_DATA=n build45a91f3011ANDROID: abi_gki_aarch64_qcom: Add kobject_get842137671fRevert "ANDROID: GKI: Add ANDROID_OEM_DATA in struct request_queue"443c11e0b1Revert "ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_ctx"b982f17e13Revert "ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_tags"3062974bf9Revert "ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST"f0b29dd9e3ANDROID: lib: Export show_mem() for vendor module usage50e4cd9df7ANDROID: vendor_hooks: Add hooks for memory when debug5a70133febANDROID: vendor_hooks: Add hook in try_to_unmap_one()73c9d4a9d5ANDROID: vendor_hooks: Add hook in mmap_region()caaafb7005FROMGIT: cfi: Fix __cfi_slowpath_diag RCU usage with cpuidle49ad57e915ANDROID: mm/memory_hotplug: Don't special case memory_block_size_bytes6b6c4a7373ANDROID: abi_gki_aarch64_qcom: Add android_vh_ufs_clock_scaling3ff9481aadANDROID: scsi: ufs: Add hook to influence the UFS clock scaling policy442d3a107bANDROID: Update symbol list for mtkf85e3d9101ANDROID: scheduler: export task_sched_runtimeaa0e7ec774ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST9123d4dfe5ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_tags7f6e518e43ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_ctxf4e36db507ANDROID: GKI: Add ANDROID_OEM_DATA in struct request_queue7e54032750ANDROID: Update mtktv symbol listc6b53b7aacANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list3c55aa6ffeANDROID: GKI: add vendor padding variable in struct skb_shared_infof45d12df24ANDROID: GKI: Enable DM_INIT149474c544FROMLIST: power_supply: Use of-thermal cdev registration API291dfda577ANDROID: init_task: Init android vendor and oem dataafd403d142ANDROID: qcom: Add flush_delayed_fput to ABI6976d861b5ANDROID: GKI: build damon reclaim11bc7e6f8eFROMLIST: mm/damon/reclaim: Fix the timer always stays active71da156123BACKPORT: treewide: Add missing includes masked by cgroup -> bpf dependencycaffd17b02UPSTREAM: mm/damon: modify damon_rand() macro to static inline function802a5dc657UPSTREAM: mm/damon: add 'age' of region tracepoint support7019f96d3fUPSTREAM: mm/damon: hide kernel pointer from tracepoint eventc5bf6f61a3UPSTREAM: mm/damon/vaddr: hide kernel pointer from damon_va_three_regions() failure logd7cbb8dc2aUPSTREAM: mm/damon/vaddr: use pr_debug() for damon_va_three_regions() failure logging2d1227b126UPSTREAM: mm/damon/dbgfs: remove an unnecessary variable2861a7ee7fUPSTREAM: mm/damon: move the implementation of damon_insert_region to damon.h508a322b77UPSTREAM: mm/damon: add access checking for hugetlb pages6fdce9a014UPSTREAM: mm/damon/dbgfs: support all DAMOS stats86a0f3958cUPSTREAM: mm/damon/reclaim: provide reclamation statistics168c5dc29fUPSTREAM: mm/damon/schemes: account how many times quota limit has exceeded9818aed77fUPSTREAM: mm/damon/schemes: account scheme actions that successfully applied82b9795ec7UPSTREAM: mm/damon: convert macro functions to static inline functionsf92ba978faUPSTREAM: mm/damon: move damon_rand() definition into damon.h6e04c85054UPSTREAM: mm/damon/schemes: add the validity judgment of thresholds548424cefdUPSTREAM: mm/damon/vaddr: remove swap_ranges() and replace it with swap()428792a841UPSTREAM: mm/damon: remove some unneeded function definitions in damon.h38e43af06aUPSTREAM: mm/damon/core: use abs() instead of diff_of()cd8dce3046UPSTREAM: mm/damon: unified access_check function naming rulesbdf02a7f4eUPSTREAM: mm/damon/vaddr-test: remove unnecessary variablesa5bd0713beUPSTREAM: mm/damon/vaddr-test: split a test function having >1024 bytes frame size2f0229c408UPSTREAM: mm/damon/vaddr: remove an unnecessary warning message999d83f120UPSTREAM: mm/damon/core: remove unnecessary error messages49de2cb8a5UPSTREAM: mm/damon/dbgfs: remove an unnecessary error messagee5a2bdfb0aBACKPORT: mm/damon/core: use better timer mechanisms selection thresholdd49b62ccfdBACKPORT: mm/damon/dbgfs: fix missed use of damon_dbgfs_lock4c2134830aUPSTREAM: mm/damon: remove return value from before_terminate callbackdb9b97b547UPSTREAM: mm/damon: fix a few spelling mistakes in comments and a pr_debug messagec91a782b6fUPSTREAM: mm/damon: simplify stop mechanismfe6bcb8dd4UPSTREAM: mm/damon/dbgfs: add adaptive_targets list check before enable monitor_onae3795eb00UPSTREAM: mm/damon: remove unnecessary variable initialization1a5e255ce9UPSTREAM: mm/damon: introduce DAMON-based Reclamation (DAMON_RECLAIM)97567267f7UPSTREAM: selftests/damon: support watermarksffaa746d7cUPSTREAM: mm/damon/dbgfs: support watermarksc70ef2a367BACKPORT: mm/damon/schemes: activate schemes based on a watermarks mechanismdefd69e678UPSTREAM: tools/selftests/damon: update for regions prioritization of schemes875ca13d08UPSTREAM: mm/damon/dbgfs: support prioritization weights4cfed5d5b1UPSTREAM: mm/damon/vaddr,paddr: support pageout prioritization6662408061UPSTREAM: mm/damon/schemes: prioritize regions within the quotasddd1df8526UPSTREAM: mm/damon/selftests: support schemes quotas5f680e394aUPSTREAM: mm/damon/dbgfs: support quotas of schemesb4aefd1c72UPSTREAM: mm/damon/schemes: implement time quotaf80ebb9d5dUPSTREAM: mm/damon/schemes: skip already charged targets and regions80d2863f9eUPSTREAM: mm/damon/schemes: implement size quota for schemes application speed control41d98d4c47UPSTREAM: mm/damon/paddr: support the pageout scheme8d5c271cffUPSTREAM: mm/damon/dbgfs: remove unnecessary variables8168da37a5UPSTREAM: mm/damon/vaddr: constify static mm_walk_opsfc0bae05e1UPSTREAM: mm/damon/dbgfs: support physical memory monitoringae84fa2e25UPSTREAM: mm/damon: implement primitives for physical address space monitoring80990f467bUPSTREAM: mm/damon/vaddr: separate commonly usable functions12c21e91e4UPSTREAM: mm/damon/dbgfs-test: add a unit test case for 'init_regions'efc9721c40UPSTREAM: mm/damon/dbgfs: allow users to set initial monitoring target regions70ebdef092UPSTREAM: selftests/damon: add 'schemes' debugfs testsa48740173eUPSTREAM: mm/damon/schemes: implement statistics featurefd5ed35b71UPSTREAM: mm/damon/dbgfs: support DAMON-based Operation Schemes573fab31a5UPSTREAM: mm/damon/vaddr: support DAMON-based Operation Schemesb35e82062aUPSTREAM: mm/damon/core: implement DAMON-based Operation Schemes (DAMOS)41e99990b8UPSTREAM: mm/damon/core: account age of target regionsaaa3878862UPSTREAM: mm/damon/core: nullify pointer ctx->kdamond with a NULL340c92bec2UPSTREAM: mm/damon: needn't hold kdamond_lock to print pid of kdamond2df0d2dbd1UPSTREAM: mm/damon: remove unnecessary do_exit() from kdamondec9618400eUPSTREAM: mm/damon/core: print kdamond start log in debug mode only4680f26136UPSTREAM: include/linux/damon.h: fix kernel-doc comments for 'damon_callback'f840a4de99UPSTREAM: mm/damon: grammar s/works/work/a41c70ee0bANDROID: vendor_hooks: add vendor hook in blk_mq_rq_ctx_init()1c6391dd7aANDROID: vendor_hooks: add vendor hook in blk_mq_alloc_rqs() Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Iefbbab398942ad769576399accd3ffcd24e41e93
350 lines
12 KiB
C
350 lines
12 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* ioport.h Definitions of routines for detecting, reserving and
|
|
* allocating system resources.
|
|
*
|
|
* Authors: Linus Torvalds
|
|
*/
|
|
|
|
#ifndef _LINUX_IOPORT_H
|
|
#define _LINUX_IOPORT_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
#include <linux/bits.h>
|
|
#include <linux/compiler.h>
|
|
#include <linux/minmax.h>
|
|
#include <linux/types.h>
|
|
#include <linux/android_kabi.h>
|
|
/*
|
|
* Resources are tree-like, allowing
|
|
* nesting etc..
|
|
*/
|
|
struct resource {
|
|
resource_size_t start;
|
|
resource_size_t end;
|
|
const char *name;
|
|
unsigned long flags;
|
|
unsigned long desc;
|
|
struct resource *parent, *sibling, *child;
|
|
|
|
ANDROID_KABI_RESERVE(1);
|
|
ANDROID_KABI_RESERVE(2);
|
|
ANDROID_KABI_RESERVE(3);
|
|
ANDROID_KABI_RESERVE(4);
|
|
};
|
|
|
|
/*
|
|
* IO resources have these defined flags.
|
|
*
|
|
* PCI devices expose these flags to userspace in the "resource" sysfs file,
|
|
* so don't move them.
|
|
*/
|
|
#define IORESOURCE_BITS 0x000000ff /* Bus-specific bits */
|
|
|
|
#define IORESOURCE_TYPE_BITS 0x00001f00 /* Resource type */
|
|
#define IORESOURCE_IO 0x00000100 /* PCI/ISA I/O ports */
|
|
#define IORESOURCE_MEM 0x00000200
|
|
#define IORESOURCE_REG 0x00000300 /* Register offsets */
|
|
#define IORESOURCE_IRQ 0x00000400
|
|
#define IORESOURCE_DMA 0x00000800
|
|
#define IORESOURCE_BUS 0x00001000
|
|
|
|
#define IORESOURCE_PREFETCH 0x00002000 /* No side effects */
|
|
#define IORESOURCE_READONLY 0x00004000
|
|
#define IORESOURCE_CACHEABLE 0x00008000
|
|
#define IORESOURCE_RANGELENGTH 0x00010000
|
|
#define IORESOURCE_SHADOWABLE 0x00020000
|
|
|
|
#define IORESOURCE_SIZEALIGN 0x00040000 /* size indicates alignment */
|
|
#define IORESOURCE_STARTALIGN 0x00080000 /* start field is alignment */
|
|
|
|
#define IORESOURCE_MEM_64 0x00100000
|
|
#define IORESOURCE_WINDOW 0x00200000 /* forwarded by bridge */
|
|
#define IORESOURCE_MUXED 0x00400000 /* Resource is software muxed */
|
|
|
|
#define IORESOURCE_EXT_TYPE_BITS 0x01000000 /* Resource extended types */
|
|
#define IORESOURCE_SYSRAM 0x01000000 /* System RAM (modifier) */
|
|
|
|
/* IORESOURCE_SYSRAM specific bits. */
|
|
#define IORESOURCE_SYSRAM_DRIVER_MANAGED 0x02000000 /* Always detected via a driver. */
|
|
#define IORESOURCE_SYSRAM_MERGEABLE 0x04000000 /* Resource can be merged. */
|
|
|
|
#define IORESOURCE_EXCLUSIVE 0x08000000 /* Userland may not map this resource */
|
|
|
|
#define IORESOURCE_DISABLED 0x10000000
|
|
#define IORESOURCE_UNSET 0x20000000 /* No address assigned yet */
|
|
#define IORESOURCE_AUTO 0x40000000
|
|
#define IORESOURCE_BUSY 0x80000000 /* Driver has marked this resource busy */
|
|
|
|
/* I/O resource extended types */
|
|
#define IORESOURCE_SYSTEM_RAM (IORESOURCE_MEM|IORESOURCE_SYSRAM)
|
|
|
|
/* PnP IRQ specific bits (IORESOURCE_BITS) */
|
|
#define IORESOURCE_IRQ_HIGHEDGE (1<<0)
|
|
#define IORESOURCE_IRQ_LOWEDGE (1<<1)
|
|
#define IORESOURCE_IRQ_HIGHLEVEL (1<<2)
|
|
#define IORESOURCE_IRQ_LOWLEVEL (1<<3)
|
|
#define IORESOURCE_IRQ_SHAREABLE (1<<4)
|
|
#define IORESOURCE_IRQ_OPTIONAL (1<<5)
|
|
|
|
/* PnP DMA specific bits (IORESOURCE_BITS) */
|
|
#define IORESOURCE_DMA_TYPE_MASK (3<<0)
|
|
#define IORESOURCE_DMA_8BIT (0<<0)
|
|
#define IORESOURCE_DMA_8AND16BIT (1<<0)
|
|
#define IORESOURCE_DMA_16BIT (2<<0)
|
|
|
|
#define IORESOURCE_DMA_MASTER (1<<2)
|
|
#define IORESOURCE_DMA_BYTE (1<<3)
|
|
#define IORESOURCE_DMA_WORD (1<<4)
|
|
|
|
#define IORESOURCE_DMA_SPEED_MASK (3<<6)
|
|
#define IORESOURCE_DMA_COMPATIBLE (0<<6)
|
|
#define IORESOURCE_DMA_TYPEA (1<<6)
|
|
#define IORESOURCE_DMA_TYPEB (2<<6)
|
|
#define IORESOURCE_DMA_TYPEF (3<<6)
|
|
|
|
/* PnP memory I/O specific bits (IORESOURCE_BITS) */
|
|
#define IORESOURCE_MEM_WRITEABLE (1<<0) /* dup: IORESOURCE_READONLY */
|
|
#define IORESOURCE_MEM_CACHEABLE (1<<1) /* dup: IORESOURCE_CACHEABLE */
|
|
#define IORESOURCE_MEM_RANGELENGTH (1<<2) /* dup: IORESOURCE_RANGELENGTH */
|
|
#define IORESOURCE_MEM_TYPE_MASK (3<<3)
|
|
#define IORESOURCE_MEM_8BIT (0<<3)
|
|
#define IORESOURCE_MEM_16BIT (1<<3)
|
|
#define IORESOURCE_MEM_8AND16BIT (2<<3)
|
|
#define IORESOURCE_MEM_32BIT (3<<3)
|
|
#define IORESOURCE_MEM_SHADOWABLE (1<<5) /* dup: IORESOURCE_SHADOWABLE */
|
|
#define IORESOURCE_MEM_EXPANSIONROM (1<<6)
|
|
#define IORESOURCE_MEM_NONPOSTED (1<<7)
|
|
|
|
/* PnP I/O specific bits (IORESOURCE_BITS) */
|
|
#define IORESOURCE_IO_16BIT_ADDR (1<<0)
|
|
#define IORESOURCE_IO_FIXED (1<<1)
|
|
#define IORESOURCE_IO_SPARSE (1<<2)
|
|
|
|
/* PCI ROM control bits (IORESOURCE_BITS) */
|
|
#define IORESOURCE_ROM_ENABLE (1<<0) /* ROM is enabled, same as PCI_ROM_ADDRESS_ENABLE */
|
|
#define IORESOURCE_ROM_SHADOW (1<<1) /* Use RAM image, not ROM BAR */
|
|
|
|
/* PCI control bits. Shares IORESOURCE_BITS with above PCI ROM. */
|
|
#define IORESOURCE_PCI_FIXED (1<<4) /* Do not move resource */
|
|
#define IORESOURCE_PCI_EA_BEI (1<<5) /* BAR Equivalent Indicator */
|
|
|
|
/*
|
|
* I/O Resource Descriptors
|
|
*
|
|
* Descriptors are used by walk_iomem_res_desc() and region_intersects()
|
|
* for searching a specific resource range in the iomem table. Assign
|
|
* a new descriptor when a resource range supports the search interfaces.
|
|
* Otherwise, resource.desc must be set to IORES_DESC_NONE (0).
|
|
*/
|
|
enum {
|
|
IORES_DESC_NONE = 0,
|
|
IORES_DESC_CRASH_KERNEL = 1,
|
|
IORES_DESC_ACPI_TABLES = 2,
|
|
IORES_DESC_ACPI_NV_STORAGE = 3,
|
|
IORES_DESC_PERSISTENT_MEMORY = 4,
|
|
IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
|
|
IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
|
|
IORES_DESC_RESERVED = 7,
|
|
IORES_DESC_SOFT_RESERVED = 8,
|
|
};
|
|
|
|
/*
|
|
* Flags controlling ioremap() behavior.
|
|
*/
|
|
enum {
|
|
IORES_MAP_SYSTEM_RAM = BIT(0),
|
|
IORES_MAP_ENCRYPTED = BIT(1),
|
|
};
|
|
|
|
/* helpers to define resources */
|
|
#define DEFINE_RES_NAMED(_start, _size, _name, _flags) \
|
|
{ \
|
|
.start = (_start), \
|
|
.end = (_start) + (_size) - 1, \
|
|
.name = (_name), \
|
|
.flags = (_flags), \
|
|
.desc = IORES_DESC_NONE, \
|
|
}
|
|
|
|
#define DEFINE_RES_IO_NAMED(_start, _size, _name) \
|
|
DEFINE_RES_NAMED((_start), (_size), (_name), IORESOURCE_IO)
|
|
#define DEFINE_RES_IO(_start, _size) \
|
|
DEFINE_RES_IO_NAMED((_start), (_size), NULL)
|
|
|
|
#define DEFINE_RES_MEM_NAMED(_start, _size, _name) \
|
|
DEFINE_RES_NAMED((_start), (_size), (_name), IORESOURCE_MEM)
|
|
#define DEFINE_RES_MEM(_start, _size) \
|
|
DEFINE_RES_MEM_NAMED((_start), (_size), NULL)
|
|
|
|
#define DEFINE_RES_IRQ_NAMED(_irq, _name) \
|
|
DEFINE_RES_NAMED((_irq), 1, (_name), IORESOURCE_IRQ)
|
|
#define DEFINE_RES_IRQ(_irq) \
|
|
DEFINE_RES_IRQ_NAMED((_irq), NULL)
|
|
|
|
#define DEFINE_RES_DMA_NAMED(_dma, _name) \
|
|
DEFINE_RES_NAMED((_dma), 1, (_name), IORESOURCE_DMA)
|
|
#define DEFINE_RES_DMA(_dma) \
|
|
DEFINE_RES_DMA_NAMED((_dma), NULL)
|
|
|
|
/* PC/ISA/whatever - the normal PC address spaces: IO and memory */
|
|
extern struct resource ioport_resource;
|
|
extern struct resource iomem_resource;
|
|
|
|
extern struct resource *request_resource_conflict(struct resource *root, struct resource *new);
|
|
extern int request_resource(struct resource *root, struct resource *new);
|
|
extern int release_resource(struct resource *new);
|
|
void release_child_resources(struct resource *new);
|
|
extern void reserve_region_with_split(struct resource *root,
|
|
resource_size_t start, resource_size_t end,
|
|
const char *name);
|
|
extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new);
|
|
extern int insert_resource(struct resource *parent, struct resource *new);
|
|
extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
|
|
extern int remove_resource(struct resource *old);
|
|
extern void arch_remove_reservations(struct resource *avail);
|
|
extern int allocate_resource(struct resource *root, struct resource *new,
|
|
resource_size_t size, resource_size_t min,
|
|
resource_size_t max, resource_size_t align,
|
|
resource_size_t (*alignf)(void *,
|
|
const struct resource *,
|
|
resource_size_t,
|
|
resource_size_t),
|
|
void *alignf_data);
|
|
struct resource *lookup_resource(struct resource *root, resource_size_t start);
|
|
int adjust_resource(struct resource *res, resource_size_t start,
|
|
resource_size_t size);
|
|
resource_size_t resource_alignment(struct resource *res);
|
|
static inline resource_size_t resource_size(const struct resource *res)
|
|
{
|
|
return res->end - res->start + 1;
|
|
}
|
|
static inline unsigned long resource_type(const struct resource *res)
|
|
{
|
|
return res->flags & IORESOURCE_TYPE_BITS;
|
|
}
|
|
static inline unsigned long resource_ext_type(const struct resource *res)
|
|
{
|
|
return res->flags & IORESOURCE_EXT_TYPE_BITS;
|
|
}
|
|
/* True iff r1 completely contains r2 */
|
|
static inline bool resource_contains(struct resource *r1, struct resource *r2)
|
|
{
|
|
if (resource_type(r1) != resource_type(r2))
|
|
return false;
|
|
if (r1->flags & IORESOURCE_UNSET || r2->flags & IORESOURCE_UNSET)
|
|
return false;
|
|
return r1->start <= r2->start && r1->end >= r2->end;
|
|
}
|
|
|
|
/* True if any part of r1 overlaps r2 */
|
|
static inline bool resource_overlaps(struct resource *r1, struct resource *r2)
|
|
{
|
|
return r1->start <= r2->end && r1->end >= r2->start;
|
|
}
|
|
|
|
static inline bool
|
|
resource_intersection(struct resource *r1, struct resource *r2, struct resource *r)
|
|
{
|
|
if (!resource_overlaps(r1, r2))
|
|
return false;
|
|
r->start = max(r1->start, r2->start);
|
|
r->end = min(r1->end, r2->end);
|
|
return true;
|
|
}
|
|
|
|
static inline bool
|
|
resource_union(struct resource *r1, struct resource *r2, struct resource *r)
|
|
{
|
|
if (!resource_overlaps(r1, r2))
|
|
return false;
|
|
r->start = min(r1->start, r2->start);
|
|
r->end = max(r1->end, r2->end);
|
|
return true;
|
|
}
|
|
|
|
/* Convenience shorthand with allocation */
|
|
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0)
|
|
#define request_muxed_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), IORESOURCE_MUXED)
|
|
#define __request_mem_region(start,n,name, excl) __request_region(&iomem_resource, (start), (n), (name), excl)
|
|
#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name), 0)
|
|
#define request_mem_region_muxed(start, n, name) \
|
|
__request_region(&iomem_resource, (start), (n), (name), IORESOURCE_MUXED)
|
|
#define request_mem_region_exclusive(start,n,name) \
|
|
__request_region(&iomem_resource, (start), (n), (name), IORESOURCE_EXCLUSIVE)
|
|
#define rename_region(region, newname) do { (region)->name = (newname); } while (0)
|
|
|
|
extern struct resource * __request_region(struct resource *,
|
|
resource_size_t start,
|
|
resource_size_t n,
|
|
const char *name, int flags);
|
|
|
|
/* Compatibility cruft */
|
|
#define release_region(start,n) __release_region(&ioport_resource, (start), (n))
|
|
#define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))
|
|
|
|
extern void __release_region(struct resource *, resource_size_t,
|
|
resource_size_t);
|
|
#ifdef CONFIG_MEMORY_HOTREMOVE
|
|
extern void release_mem_region_adjustable(resource_size_t, resource_size_t);
|
|
#endif
|
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
|
extern void merge_system_ram_resource(struct resource *res);
|
|
#endif
|
|
|
|
/* Wrappers for managed devices */
|
|
struct device;
|
|
|
|
extern int devm_request_resource(struct device *dev, struct resource *root,
|
|
struct resource *new);
|
|
extern void devm_release_resource(struct device *dev, struct resource *new);
|
|
|
|
#define devm_request_region(dev,start,n,name) \
|
|
__devm_request_region(dev, &ioport_resource, (start), (n), (name))
|
|
#define devm_request_mem_region(dev,start,n,name) \
|
|
__devm_request_region(dev, &iomem_resource, (start), (n), (name))
|
|
|
|
extern struct resource * __devm_request_region(struct device *dev,
|
|
struct resource *parent, resource_size_t start,
|
|
resource_size_t n, const char *name);
|
|
|
|
#define devm_release_region(dev, start, n) \
|
|
__devm_release_region(dev, &ioport_resource, (start), (n))
|
|
#define devm_release_mem_region(dev, start, n) \
|
|
__devm_release_region(dev, &iomem_resource, (start), (n))
|
|
|
|
extern void __devm_release_region(struct device *dev, struct resource *parent,
|
|
resource_size_t start, resource_size_t n);
|
|
extern int iomem_map_sanity_check(resource_size_t addr, unsigned long size);
|
|
extern bool iomem_is_exclusive(u64 addr);
|
|
|
|
extern int
|
|
walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
|
|
void *arg, int (*func)(unsigned long, unsigned long, void *));
|
|
extern int
|
|
walk_mem_res(u64 start, u64 end, void *arg,
|
|
int (*func)(struct resource *, void *));
|
|
extern int
|
|
walk_system_ram_res(u64 start, u64 end, void *arg,
|
|
int (*func)(struct resource *, void *));
|
|
extern int
|
|
walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u64 end,
|
|
void *arg, int (*func)(struct resource *, void *));
|
|
|
|
struct resource *devm_request_free_mem_region(struct device *dev,
|
|
struct resource *base, unsigned long size);
|
|
struct resource *request_free_mem_region(struct resource *base,
|
|
unsigned long size, const char *name);
|
|
|
|
static inline void irqresource_disabled(struct resource *res, u32 irq)
|
|
{
|
|
res->start = irq;
|
|
res->end = irq;
|
|
res->flags |= IORESOURCE_IRQ | IORESOURCE_DISABLED | IORESOURCE_UNSET;
|
|
}
|
|
|
|
extern struct address_space *iomem_get_mapping(void);
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /* _LINUX_IOPORT_H */
|