Merge branch 'android12-5.10' into android12-5.10-lts
Sync up with android12-5.10 for the following commits:dd139186ef
ANDROID: usb: gadget: fix NULL pointer dereference in android_setup07f65598af
ANDROID: GKI: Disable kmem cgroup accounting309aa7e7a2
FROMLIST: mm, memcg: inline swap-related functions to improve disabled memcg config3ae8e2f183
BACKPORT: FROMLIST: mm, memcg: inline mem_cgroup_{charge/uncharge} to improve disabled memcg configf73d029485
FROMLIST: mm, memcg: add mem_cgroup_disabled checks in vmpressure and swap-related functions669df367a9
UPSTREAM: mm/memcg: bail early from swap accounting if memcg disabled1f0c32a667
UPSTREAM: procfs/dmabuf: add inode number to /proc/*/fdinfo0c8c125f57
UPSTREAM: procfs: allow reading fdinfo with PTRACE_MODE_READ2e0476a465
Revert "FROMLIST: procfs: Allow reading fdinfo with PTRACE_MODE_READ"5ded961aa2
Revert "FROMLIST: BACKPORT: procfs/dmabuf: Add inode number to /..."3ee5565017
UPSTREAM: f2fs: initialize page->private when using for our internal usedba79c3af3
ANDROID: mm: page_pinner: report test_page_isolation_failure13362ab28e
ANDROID: mm: page_pinner: add state of page_pinner3254948484
ANDROID: mm: page_pinner: add more struct page fields0445b67bee
ANDROID: mm: page_pinner: change timestamp format71da06728c
ANDROID: mm: page_pinner: print_page_pinner refactoringb83e564914
ANDROID: mm: page_pinner: remove shared_count849f048050
ANDROID: mm: page_pinner: remove WARN_ON_ONCE9a453100fc
ANDROID: mm: page_pinner: fix typosd012783a86
ANDROID: mm: page_pinner: reset migration failed page470cce5085
ANDROID: mm: page_pinner: record every put_page9f47e5fdda
ANDROID: mm: page_pinner: change function namesa8385d61f2
ANDROID: Allow vendor module to reclaim a memcgf41a95eadc
ANDROID: Export memcg functions to allow module to add new files46bf3b94e7
FROMGIT: dt-bindings: usb: dwc3: Update dwc3 TX fifo propertiesb36b813e39
UPSTREAM: dt-bindings: usb: Convert DWC USB3 bindings to DT schema9a80b7b728
FROMGIT: of: Add stub for of_add_property()2742be5903
ANDROID: fips140: define fips_enabled to 1 to enable FIPS behaviore886dd4c33
ANDROID: fips140: unregister existing DRBG algorithms634445a640
ANDROID: fips140: fix deadlock in unregister_existing_fips140_algos()0af06624ea
ANDROID: fips140: check for errors from initcalls92de53472e
ANDROID: fips140: log already-live algorithms0a7da21583
ANDROID: Update new mtk gki symbol98085b5dd8
ANDROID: usb: Add vendor hook for usb suspend and resume956db89e71
BACKPORT: FROMLIST: dma-heap: Let dma heap use dma_map_attrs to map & unmap iova749d6e7f2c
ANDROID: abi_gki_aarch64_qcom: Add vendor hook for shmem_alloc_pageb05bbe48be
ANDROID: abi_gki_aarch64_qcom: Add reclaim_shmem_address_spaced80c70d7a8
ANDROID: android: export kernel function arch_mmap_rnd25c7eb4932
ANDROID: mm: shmem: Fix build break with allnoconfig1cdcf76b15
ANDROID: vendor_hooks: add hooks in mem_cgroup subsystem726468dd4a
ANDROID: GKI: add vendor padding variable in struct skb_shared_infofc79c93657
FROMLIST: scsi: ufs: add quirk to enable host controller without interface configuration2d5ae6b787
FROMLIST: scsi: ufs: add quirk to handle broken UIC command38abaebab7
ANDROID: syscall_check: add vendor hook for bpf syscalla7a3b31d58
ANDROID: syscall_check: add vendor hook for open syscalla5543c9cd7
ANDROID: syscall_check: add vendor hook for mmap syscall1f0769279f
ANDROID: GKI: Add symbol to symbol list2cff74e08c
ANDROID: vendor_hooks: Add vendor hook to the net25edba0d4d
FROMLIST: scsi: ufs: Fix the SCSI abort handlerc0efdc4a5e
ANDROID: android: export kernel function vm_unmapped_area964220d080
ANDROID: shmem: vendor hook in shmem_alloc_pagebd2ca0ba5b
FROMLIST: pstore/ram: Rework logic for detecting ramoops reserved memory regiondaeabfe7fa
ANDROID: mm: add reclaim_shmem_address_space() for faster reclaims4c3dddf408
ANDROID: Update the generic ABI symbol list4c4d8cbdef
ANDROID: GKI: refresh ABI XML01e4a037d8
ANDROID: GKI: turn on TIDY_ABIedf973fd24
ANDROID: Update symbol list for VIVO1702d2c8b7
FROMGIT: net: cdc_ncm: switch to eth%d interface namingf4d6e8324c
ANDROID: GKI: add allowed GKI symbol for Exynosauto SoC444a0b7752
ANDROID: mm: add vendor hook for vmpressurec799c6644b
ANDROID: fips140: adjust some log messages091338cb39
ANDROID: fips140: add missing static keyword to fips140_init()70bfd6a7e0
ANDROID: GKI: update allowed list for exynosauto SoC3e3147b280
UPSTREAM: scsi: ufs: ufshcd: Fix some function doc-rot2c553e754f
UPSTREAM: scsi: ufs: Adjust ufshcd_hold() during sending attribute requests52ccdf90b9
FROMLIST: lockdep: Remove console_verbose when disable lock debugging4458494476
ANDROID: ABI: qcom: Add symbols for 802115c51579fde
ANDROID: fork: Export task_newtask tracepointe2a90797e8
ANDROID: Fix kernelci warnings for indentation in smp.cbac33eaebf
ANDROID: irqchip: gic-v3: Move struct gic_chip_data to headerbdac4418bf
ANDROID: abi_gki_aarch64_qcom: Add android_vh_ufs_clock_scaling65c1de0f06
ANDROID: Update symbol list for mtkd4d02ab9b0
UPSTREAM: swiotlb: manipulate orig_addr when tlb_addr has offset58aa0f2832
ANDROID: qcom: Add net related symbol2f9f816445
ANDROID: Update the exynos symbol listb2a9471239
ANDROID: Update symbol list for mtk7c9599e204
FROMGIT: usb: dwc3: Create helper function getting MDWIDTH0a24affb86
ANDROID: vendor_hooks: modify the function named686d5ffc6
ANDROID: GKI: Add some symbols to symbol listbdfb11230b
ANDROID: cpuidle: Allow for an early exit from cpuidle_enter_state()f0b280c395
ANDROID: cpuidle: Update cpuidle_uninstall_idle_handler() to wakeup all online CPUs14dd90ab37
ANDROID: scsi: ufs: Add hook to influence the UFS clock scaling policy00aec39e2e
FROMGIT: bpf: Support all gso types in bpf_skb_change_proto() Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I6e5be89f3f02c420237a549f4c6a08b5ed434581
This commit is contained in:
commit
b1a6760ddf
@ -1,128 +0,0 @@
|
||||
synopsys DWC3 CORE
|
||||
|
||||
DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties
|
||||
as described in 'usb/generic.txt'
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "snps,dwc3"
|
||||
- reg : Address and length of the register set for the device
|
||||
- interrupts: Interrupts used by the dwc3 controller.
|
||||
- clock-names: list of clock names. Ideally should be "ref",
|
||||
"bus_early", "suspend" but may be less or more.
|
||||
- clocks: list of phandle and clock specifier pairs corresponding to
|
||||
entries in the clock-names property.
|
||||
|
||||
Exception for clocks:
|
||||
clocks are optional if the parent node (i.e. glue-layer) is compatible to
|
||||
one of the following:
|
||||
"cavium,octeon-7130-usb-uctl"
|
||||
"qcom,dwc3"
|
||||
"samsung,exynos5250-dwusb3"
|
||||
"samsung,exynos5433-dwusb3"
|
||||
"samsung,exynos7-dwusb3"
|
||||
"sprd,sc9860-dwc3"
|
||||
"st,stih407-dwc3"
|
||||
"ti,am437x-dwc3"
|
||||
"ti,dwc3"
|
||||
"ti,keystone-dwc3"
|
||||
"rockchip,rk3399-dwc3"
|
||||
"xlnx,zynqmp-dwc3"
|
||||
|
||||
Optional properties:
|
||||
- usb-phy : array of phandle for the PHY device. The first element
|
||||
in the array is expected to be a handle to the USB2/HS PHY and
|
||||
the second element is expected to be a handle to the USB3/SS PHY
|
||||
- phys: from the *Generic PHY* bindings
|
||||
- phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy"
|
||||
or "usb3-phy".
|
||||
- resets: set of phandle and reset specifier pairs
|
||||
- snps,usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM
|
||||
- snps,usb3_lpm_capable: determines if platform is USB3 LPM capable
|
||||
- snps,dis-start-transfer-quirk: when set, disable isoc START TRANSFER command
|
||||
failure SW work-around for DWC_usb31 version 1.70a-ea06
|
||||
and prior.
|
||||
- snps,disable_scramble_quirk: true when SW should disable data scrambling.
|
||||
Only really useful for FPGA builds.
|
||||
- snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum enabled
|
||||
- snps,lpm-nyet-threshold: LPM NYET threshold
|
||||
- snps,u2exit_lfps_quirk: set if we want to enable u2exit lfps quirk
|
||||
- snps,u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk
|
||||
- snps,req_p1p2p3_quirk: when set, the core will always request for
|
||||
P1/P2/P3 transition sequence.
|
||||
- snps,del_p1p2p3_quirk: when set core will delay P1/P2/P3 until a certain
|
||||
amount of 8B10B errors occur.
|
||||
- snps,del_phy_power_chg_quirk: when set core will delay PHY power change
|
||||
from P0 to P1/P2/P3.
|
||||
- snps,lfps_filter_quirk: when set core will filter LFPS reception.
|
||||
- snps,rx_detect_poll_quirk: when set core will disable a 400us delay to start
|
||||
Polling LFPS after RX.Detect.
|
||||
- snps,tx_de_emphasis_quirk: when set core will set Tx de-emphasis value.
|
||||
- snps,tx_de_emphasis: the value driven to the PHY is controlled by the
|
||||
LTSSM during USB3 Compliance mode.
|
||||
- snps,dis_u3_susphy_quirk: when set core will disable USB3 suspend phy.
|
||||
- snps,dis_u2_susphy_quirk: when set core will disable USB2 suspend phy.
|
||||
- snps,dis_enblslpm_quirk: when set clears the enblslpm in GUSB2PHYCFG,
|
||||
disabling the suspend signal to the PHY.
|
||||
- snps,dis-u1-entry-quirk: set if link entering into U1 needs to be disabled.
|
||||
- snps,dis-u2-entry-quirk: set if link entering into U2 needs to be disabled.
|
||||
- snps,dis_rxdet_inp3_quirk: when set core will disable receiver detection
|
||||
in PHY P3 power state.
|
||||
- snps,dis-u2-freeclk-exists-quirk: when set, clear the u2_freeclk_exists
|
||||
in GUSB2PHYCFG, specify that USB2 PHY doesn't provide
|
||||
a free-running PHY clock.
|
||||
- snps,dis-del-phy-power-chg-quirk: when set core will change PHY power
|
||||
from P0 to P1/P2/P3 without delay.
|
||||
- snps,dis-tx-ipgap-linecheck-quirk: when set, disable u2mac linestate check
|
||||
during HS transmit.
|
||||
- snps,parkmode-disable-ss-quirk: when set, all SuperSpeed bus instances in
|
||||
park mode are disabled.
|
||||
- snps,dis_metastability_quirk: when set, disable metastability workaround.
|
||||
CAUTION: use only if you are absolutely sure of it.
|
||||
- snps,dis-split-quirk: when set, change the way URBs are handled by the
|
||||
driver. Needed to avoid -EPROTO errors with usbhid
|
||||
on some devices (Hikey 970).
|
||||
- snps,is-utmi-l1-suspend: true when DWC3 asserts output signal
|
||||
utmi_l1_suspend_n, false when asserts utmi_sleep_n
|
||||
- snps,hird-threshold: HIRD threshold
|
||||
- snps,hsphy_interface: High-Speed PHY interface selection between "utmi" for
|
||||
UTMI+ and "ulpi" for ULPI when the DWC_USB3_HSPHY_INTERFACE has value 3.
|
||||
- snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
|
||||
register for post-silicon frame length adjustment when the
|
||||
fladj_30mhz_sdbnd signal is invalid or incorrect.
|
||||
- snps,rx-thr-num-pkt-prd: periodic ESS RX packet threshold count - host mode
|
||||
only. Set this and rx-max-burst-prd to a valid,
|
||||
non-zero value 1-16 (DWC_usb31 programming guide
|
||||
section 1.2.4) to enable periodic ESS RX threshold.
|
||||
- snps,rx-max-burst-prd: max periodic ESS RX burst size - host mode only. Set
|
||||
this and rx-thr-num-pkt-prd to a valid, non-zero value
|
||||
1-16 (DWC_usb31 programming guide section 1.2.4) to
|
||||
enable periodic ESS RX threshold.
|
||||
- snps,tx-thr-num-pkt-prd: periodic ESS TX packet threshold count - host mode
|
||||
only. Set this and tx-max-burst-prd to a valid,
|
||||
non-zero value 1-16 (DWC_usb31 programming guide
|
||||
section 1.2.3) to enable periodic ESS TX threshold.
|
||||
- snps,tx-max-burst-prd: max periodic ESS TX burst size - host mode only. Set
|
||||
this and tx-thr-num-pkt-prd to a valid, non-zero value
|
||||
1-16 (DWC_usb31 programming guide section 1.2.3) to
|
||||
enable periodic ESS TX threshold.
|
||||
|
||||
- <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated.
|
||||
- snps,incr-burst-type-adjustment: Value for INCR burst type of GSBUSCFG0
|
||||
register, undefined length INCR burst type enable and INCRx type.
|
||||
When just one value, which means INCRX burst mode enabled. When
|
||||
more than one value, which means undefined length INCR burst type
|
||||
enabled. The values can be 1, 4, 8, 16, 32, 64, 128 and 256.
|
||||
|
||||
- in addition all properties from usb-xhci.txt from the current directory are
|
||||
supported as well
|
||||
|
||||
|
||||
This is usually a subnode to DWC3 glue to which it is connected.
|
||||
|
||||
dwc3@4a030000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x4a030000 0xcfff>;
|
||||
interrupts = <0 92 4>
|
||||
usb-phy = <&usb2_phy>, <&usb3,phy>;
|
||||
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
|
||||
};
|
323
Documentation/devicetree/bindings/usb/snps,dwc3.yaml
Normal file
323
Documentation/devicetree/bindings/usb/snps,dwc3.yaml
Normal file
@ -0,0 +1,323 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/usb/snps,dwc3.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Synopsys DesignWare USB3 Controller
|
||||
|
||||
maintainers:
|
||||
- Felipe Balbi <balbi@kernel.org>
|
||||
|
||||
description:
|
||||
This is usually a subnode to DWC3 glue to which it is connected, but can also
|
||||
be presented as a standalone DT node with an optional vendor-specific
|
||||
compatible string.
|
||||
|
||||
allOf:
|
||||
- $ref: usb-drd.yaml#
|
||||
- if:
|
||||
properties:
|
||||
dr_mode:
|
||||
const: peripheral
|
||||
|
||||
required:
|
||||
- dr_mode
|
||||
then:
|
||||
$ref: usb.yaml#
|
||||
else:
|
||||
$ref: usb-xhci.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: snps,dwc3
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
clocks:
|
||||
description:
|
||||
In general the core supports three types of clocks. bus_early is a
|
||||
SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
|
||||
PHY is suspended. suspend clocks a small part of the USB3 core when
|
||||
SS PHY in P3. But particular cases may differ from that having less
|
||||
or more clock sources with another names.
|
||||
|
||||
clock-names:
|
||||
contains:
|
||||
anyOf:
|
||||
- enum: [bus_early, ref, suspend]
|
||||
- true
|
||||
|
||||
usb-phy:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: USB2/HS PHY
|
||||
- description: USB3/SS PHY
|
||||
|
||||
phys:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: USB2/HS PHY
|
||||
- description: USB3/SS PHY
|
||||
|
||||
phy-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: usb2-phy
|
||||
- const: usb3-phy
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
|
||||
snps,usb2-lpm-disable:
|
||||
description: Indicate if we don't want to enable USB2 HW LPM
|
||||
type: boolean
|
||||
|
||||
snps,usb3_lpm_capable:
|
||||
description: Determines if platform is USB3 LPM capable
|
||||
type: boolean
|
||||
|
||||
snps,dis-start-transfer-quirk:
|
||||
description:
|
||||
When set, disable isoc START TRANSFER command failure SW work-around
|
||||
for DWC_usb31 version 1.70a-ea06 and prior.
|
||||
type: boolean
|
||||
|
||||
snps,disable_scramble_quirk:
|
||||
description:
|
||||
True when SW should disable data scrambling. Only really useful for FPGA
|
||||
builds.
|
||||
type: boolean
|
||||
|
||||
snps,has-lpm-erratum:
|
||||
description: True when DWC3 was configured with LPM Erratum enabled
|
||||
type: boolean
|
||||
|
||||
snps,lpm-nyet-threshold:
|
||||
description: LPM NYET threshold
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
|
||||
snps,u2exit_lfps_quirk:
|
||||
description: Set if we want to enable u2exit lfps quirk
|
||||
type: boolean
|
||||
|
||||
snps,u2ss_inp3_quirk:
|
||||
description: Set if we enable P3 OK for U2/SS Inactive quirk
|
||||
type: boolean
|
||||
|
||||
snps,req_p1p2p3_quirk:
|
||||
description:
|
||||
When set, the core will always request for P1/P2/P3 transition sequence.
|
||||
type: boolean
|
||||
|
||||
snps,del_p1p2p3_quirk:
|
||||
description:
|
||||
When set core will delay P1/P2/P3 until a certain amount of 8B10B errors
|
||||
occur.
|
||||
type: boolean
|
||||
|
||||
snps,del_phy_power_chg_quirk:
|
||||
description: When set core will delay PHY power change from P0 to P1/P2/P3.
|
||||
type: boolean
|
||||
|
||||
snps,lfps_filter_quirk:
|
||||
description: When set core will filter LFPS reception.
|
||||
type: boolean
|
||||
|
||||
snps,rx_detect_poll_quirk:
|
||||
description:
|
||||
when set core will disable a 400us delay to start Polling LFPS after
|
||||
RX.Detect.
|
||||
type: boolean
|
||||
|
||||
snps,tx_de_emphasis_quirk:
|
||||
description: When set core will set Tx de-emphasis value
|
||||
type: boolean
|
||||
|
||||
snps,tx_de_emphasis:
|
||||
description:
|
||||
The value driven to the PHY is controlled by the LTSSM during USB3
|
||||
Compliance mode.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
|
||||
snps,dis_u3_susphy_quirk:
|
||||
description: When set core will disable USB3 suspend phy
|
||||
type: boolean
|
||||
|
||||
snps,dis_u2_susphy_quirk:
|
||||
description: When set core will disable USB2 suspend phy
|
||||
type: boolean
|
||||
|
||||
snps,dis_enblslpm_quirk:
|
||||
description:
|
||||
When set clears the enblslpm in GUSB2PHYCFG, disabling the suspend signal
|
||||
to the PHY.
|
||||
type: boolean
|
||||
|
||||
snps,dis-u1-entry-quirk:
|
||||
description: Set if link entering into U1 needs to be disabled
|
||||
type: boolean
|
||||
|
||||
snps,dis-u2-entry-quirk:
|
||||
description: Set if link entering into U2 needs to be disabled
|
||||
type: boolean
|
||||
|
||||
snps,dis_rxdet_inp3_quirk:
|
||||
description:
|
||||
When set core will disable receiver detection in PHY P3 power state.
|
||||
type: boolean
|
||||
|
||||
snps,dis-u2-freeclk-exists-quirk:
|
||||
description:
|
||||
When set, clear the u2_freeclk_exists in GUSB2PHYCFG, specify that USB2
|
||||
PHY doesn't provide a free-running PHY clock.
|
||||
type: boolean
|
||||
|
||||
snps,dis-del-phy-power-chg-quirk:
|
||||
description:
|
||||
When set core will change PHY power from P0 to P1/P2/P3 without delay.
|
||||
type: boolean
|
||||
|
||||
snps,dis-tx-ipgap-linecheck-quirk:
|
||||
description: When set, disable u2mac linestate check during HS transmit
|
||||
type: boolean
|
||||
|
||||
snps,parkmode-disable-ss-quirk:
|
||||
description:
|
||||
When set, all SuperSpeed bus instances in park mode are disabled.
|
||||
type: boolean
|
||||
|
||||
snps,dis_metastability_quirk:
|
||||
description:
|
||||
When set, disable metastability workaround. CAUTION! Use only if you are
|
||||
absolutely sure of it.
|
||||
type: boolean
|
||||
|
||||
snps,dis-split-quirk:
|
||||
description:
|
||||
When set, change the way URBs are handled by the driver. Needed to
|
||||
avoid -EPROTO errors with usbhid on some devices (Hikey 970).
|
||||
type: boolean
|
||||
|
||||
snps,is-utmi-l1-suspend:
|
||||
description:
|
||||
True when DWC3 asserts output signal utmi_l1_suspend_n, false when
|
||||
asserts utmi_sleep_n.
|
||||
type: boolean
|
||||
|
||||
snps,hird-threshold:
|
||||
description: HIRD threshold
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
|
||||
snps,hsphy_interface:
|
||||
description:
|
||||
High-Speed PHY interface selection between UTMI+ and ULPI when the
|
||||
DWC_USB3_HSPHY_INTERFACE has value 3.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
enum: [utmi, ulpi]
|
||||
|
||||
snps,quirk-frame-length-adjustment:
|
||||
description:
|
||||
Value for GFLADJ_30MHZ field of GFLADJ register for post-silicon frame
|
||||
length adjustment when the fladj_30mhz_sdbnd signal is invalid or
|
||||
incorrect.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
snps,rx-thr-num-pkt-prd:
|
||||
description:
|
||||
Periodic ESS RX packet threshold count (host mode only). Set this and
|
||||
snps,rx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
|
||||
programming guide section 1.2.4) to enable periodic ESS RX threshold.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
|
||||
snps,rx-max-burst-prd:
|
||||
description:
|
||||
Max periodic ESS RX burst size (host mode only). Set this and
|
||||
snps,rx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
|
||||
programming guide section 1.2.4) to enable periodic ESS RX threshold.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
|
||||
snps,tx-thr-num-pkt-prd:
|
||||
description:
|
||||
Periodic ESS TX packet threshold count (host mode only). Set this and
|
||||
snps,tx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
|
||||
programming guide section 1.2.3) to enable periodic ESS TX threshold.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
|
||||
snps,tx-max-burst-prd:
|
||||
description:
|
||||
Max periodic ESS TX burst size (host mode only). Set this and
|
||||
snps,tx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
|
||||
programming guide section 1.2.3) to enable periodic ESS TX threshold.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
|
||||
tx-fifo-resize:
|
||||
description: Determines if the TX fifos can be dynamically resized depending
|
||||
on the number of IN endpoints used and if bursting is supported. This
|
||||
may help improve bandwidth on platforms with higher system latencies, as
|
||||
increased fifo space allows for the controller to prefetch data into its
|
||||
internal memory.
|
||||
type: boolean
|
||||
|
||||
tx-fifo-max-num:
|
||||
description: Specifies the max number of packets the txfifo resizing logic
|
||||
can account for when higher endpoint bursting is used. (bMaxBurst > 6) The
|
||||
higher the number, the more fifo space the txfifo resizing logic will
|
||||
allocate for that endpoint.
|
||||
$ref: /schemas/types.yaml#/definitions/uint8
|
||||
minimum: 3
|
||||
|
||||
snps,incr-burst-type-adjustment:
|
||||
description:
|
||||
Value for INCR burst type of GSBUSCFG0 register, undefined length INCR
|
||||
burst type enable and INCRx type. A single value means INCRX burst mode
|
||||
enabled. If more than one value specified, undefined length INCR burst
|
||||
type will be enabled with burst lengths utilized up to the maximum
|
||||
of the values passed in this property.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
uniqueItems: true
|
||||
items:
|
||||
enum: [1, 4, 8, 16, 32, 64, 128, 256]
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
examples:
|
||||
- |
|
||||
usb@4a030000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x4a030000 0xcfff>;
|
||||
interrupts = <0 92 4>;
|
||||
usb-phy = <&usb2_phy>, <&usb3_phy>;
|
||||
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
|
||||
};
|
||||
- |
|
||||
usb@4a000000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x4a000000 0xcfff>;
|
||||
interrupts = <0 92 4>;
|
||||
clocks = <&clk 1>, <&clk 2>, <&clk 3>;
|
||||
clock-names = "bus_early", "ref", "suspend";
|
||||
phys = <&usb2_phy>, <&usb3_phy>;
|
||||
phy-names = "usb2-phy", "usb3-phy";
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_enblslpm_quirk;
|
||||
};
|
||||
...
|
288988
android/abi_gki_aarch64.xml
288988
android/abi_gki_aarch64.xml
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,13 +3,16 @@
|
||||
add_wait_queue
|
||||
alloc_chrdev_region
|
||||
__alloc_pages_nodemask
|
||||
__alloc_percpu
|
||||
alloc_workqueue
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_const_caps_ready
|
||||
arm64_use_ng_mappings
|
||||
__arm_smccc_smc
|
||||
atomic_notifier_call_chain
|
||||
atomic_notifier_chain_register
|
||||
atomic_notifier_chain_unregister
|
||||
__bitmap_and
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
@ -49,6 +52,8 @@
|
||||
cpumask_next
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
cpu_pm_register_notifier
|
||||
__cpu_possible_mask
|
||||
crc32_le
|
||||
__crypto_memneq
|
||||
debugfs_create_dir
|
||||
@ -60,7 +65,9 @@
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
_dev_crit
|
||||
dev_driver_string
|
||||
_dev_emerg
|
||||
_dev_err
|
||||
device_create
|
||||
device_create_file
|
||||
@ -172,6 +179,7 @@
|
||||
free_irq
|
||||
__free_pages
|
||||
free_pages
|
||||
free_percpu
|
||||
freezing_slow_path
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
@ -197,6 +205,10 @@
|
||||
handle_edge_irq
|
||||
handle_level_irq
|
||||
handle_nested_irq
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
hrtimer_init
|
||||
hrtimer_start_range_ns
|
||||
i2c_add_numbered_adapter
|
||||
i2c_del_driver
|
||||
i2c_register_driver
|
||||
@ -224,6 +236,7 @@
|
||||
irq_set_chip_and_handler_name
|
||||
irq_set_chip_data
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
is_vmalloc_addr
|
||||
jiffies
|
||||
kasan_flag_enabled
|
||||
@ -337,6 +350,7 @@
|
||||
param_ops_int
|
||||
param_ops_uint
|
||||
PDE_DATA
|
||||
__per_cpu_offset
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
phy_power_off
|
||||
@ -439,11 +453,13 @@
|
||||
simple_write_to_buffer
|
||||
single_open
|
||||
single_release
|
||||
smp_call_function
|
||||
snd_pcm_format_width
|
||||
snd_soc_component_update_bits
|
||||
snd_soc_component_write
|
||||
snd_soc_dai_set_fmt
|
||||
snd_soc_dai_set_tdm_slot
|
||||
snd_soc_dai_set_tristate
|
||||
snd_soc_info_volsw
|
||||
snd_soc_of_get_dai_link_codecs
|
||||
snd_soc_of_get_dai_name
|
||||
@ -468,12 +484,14 @@
|
||||
strncpy
|
||||
strnlen
|
||||
strstr
|
||||
__sw_hweight64
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
synchronize_irq
|
||||
syscon_regmap_lookup_by_phandle
|
||||
sysfs_create_file_ns
|
||||
sysfs_create_group
|
||||
sysfs_create_groups
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_group
|
||||
system_freezing_cnt
|
||||
@ -581,12 +599,8 @@
|
||||
kernel_kobj
|
||||
|
||||
# required by dss.ko
|
||||
__alloc_percpu
|
||||
android_debug_symbol
|
||||
arch_timer_read_counter
|
||||
atomic_notifier_call_chain
|
||||
__cpu_possible_mask
|
||||
_dev_emerg
|
||||
dump_backtrace
|
||||
init_task
|
||||
input_close_device
|
||||
@ -594,18 +608,14 @@
|
||||
input_register_handle
|
||||
input_register_handler
|
||||
input_unregister_handle
|
||||
irq_to_desc
|
||||
kmsg_dump_get_line
|
||||
kmsg_dump_rewind
|
||||
kstat
|
||||
nr_irqs
|
||||
__per_cpu_offset
|
||||
proc_create
|
||||
register_die_notifier
|
||||
return_address
|
||||
rtc_time64_to_tm
|
||||
smp_call_function
|
||||
sysfs_create_groups
|
||||
sys_tz
|
||||
time64_to_tm
|
||||
__traceiter_android_vh_ipi_stop
|
||||
@ -664,6 +674,21 @@
|
||||
soc_device_register
|
||||
subsys_system_register
|
||||
|
||||
# required by exynos-coresight.ko
|
||||
__cpuhp_setup_state_cpuslocked
|
||||
cpu_pm_unregister_notifier
|
||||
of_prop_next_u32
|
||||
|
||||
# required by exynos-debug-test.ko
|
||||
_ctype
|
||||
kstrtoll
|
||||
remove_cpu
|
||||
smp_call_function_single
|
||||
strsep
|
||||
|
||||
# required by exynos-ehld.ko
|
||||
sprint_symbol
|
||||
|
||||
# required by exynos-pd.ko
|
||||
of_genpd_add_provider_simple
|
||||
pm_genpd_add_subdomain
|
||||
@ -867,6 +892,12 @@
|
||||
mod_delayed_work_on
|
||||
put_vaddr_frames
|
||||
|
||||
# required by hardlockup-watchdog.ko
|
||||
__cpuhp_setup_state
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
smp_call_on_cpu
|
||||
|
||||
# required by i2c-exynosauto.ko
|
||||
i2c_del_adapter
|
||||
|
||||
@ -900,10 +931,6 @@
|
||||
get_user_pages_fast
|
||||
get_user_pages_remote
|
||||
hrtimer_active
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
hrtimer_init
|
||||
hrtimer_start_range_ns
|
||||
kstrtobool_from_user
|
||||
ktime_get_raw
|
||||
kvfree_call_rcu
|
||||
@ -928,7 +955,6 @@
|
||||
static_key_slow_inc
|
||||
strncasecmp
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
synchronize_rcu
|
||||
sysfs_streq
|
||||
system_highpri_wq
|
||||
@ -970,6 +996,15 @@
|
||||
drm_panel_remove
|
||||
|
||||
# required by pcie-exynos-dw-ep.ko
|
||||
dw_pcie_ep_init
|
||||
dw_pcie_read_dbi
|
||||
dw_pcie_write_dbi
|
||||
pci_epc_clear_bar
|
||||
pci_epc_map_addr
|
||||
pci_epc_mem_alloc_addr
|
||||
pci_epc_mem_free_addr
|
||||
pci_epc_set_bar
|
||||
pci_epc_unmap_addr
|
||||
|
||||
# required by pcie-exynos-dw-rc.ko
|
||||
bitmap_find_free_region
|
||||
@ -987,6 +1022,7 @@
|
||||
irq_domain_set_info
|
||||
irq_domain_update_bus_token
|
||||
pcie_get_mps
|
||||
pcie_set_mps
|
||||
pci_find_bus
|
||||
pci_generic_config_read
|
||||
pci_generic_config_write
|
||||
@ -995,12 +1031,15 @@
|
||||
pci_msi_create_irq_domain
|
||||
pci_msi_mask_irq
|
||||
pci_msi_unmask_irq
|
||||
pci_num_vf
|
||||
pci_rescan_bus
|
||||
pci_restore_state
|
||||
pci_save_state
|
||||
pci_store_saved_state
|
||||
|
||||
# required by pcs-xpcs.ko
|
||||
mdiobus_read
|
||||
mdiobus_write
|
||||
|
||||
# required by pinctrl-samsung-core.ko
|
||||
devm_gpiochip_add_data_with_key
|
||||
@ -1056,6 +1095,9 @@
|
||||
kthread_destroy_worker
|
||||
kthread_mod_delayed_work
|
||||
kthread_queue_delayed_work
|
||||
ktime_get_snapshot
|
||||
posix_clock_register
|
||||
posix_clock_unregister
|
||||
|
||||
# required by reboot-mode.ko
|
||||
devres_free
|
||||
@ -1074,7 +1116,6 @@
|
||||
watchdog_unregister_device
|
||||
|
||||
# required by sam-is.ko
|
||||
atomic_notifier_chain_unregister
|
||||
get_task_pid
|
||||
i2c_get_adapter
|
||||
i2c_new_client_device
|
||||
@ -1113,10 +1154,13 @@
|
||||
__bitmap_andnot
|
||||
consume_skb
|
||||
dev_close
|
||||
device_get_phy_mode
|
||||
device_set_wakeup_capable
|
||||
device_set_wakeup_enable
|
||||
__dev_kfree_skb_any
|
||||
dev_open
|
||||
dql_completed
|
||||
dql_reset
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
@ -1127,13 +1171,16 @@
|
||||
jiffies_to_usecs
|
||||
mdiobus_alloc_size
|
||||
mdiobus_free
|
||||
mdiobus_get_phy
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
napi_complete_done
|
||||
napi_disable
|
||||
napi_gro_receive
|
||||
__napi_schedule
|
||||
__napi_schedule_irqoff
|
||||
napi_schedule_prep
|
||||
netdev_alert
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
@ -1149,9 +1196,32 @@
|
||||
netif_set_real_num_tx_queues
|
||||
netif_tx_wake_queue
|
||||
net_ratelimit
|
||||
of_get_mac_address
|
||||
of_mdiobus_register
|
||||
of_phy_deregister_fixed_link
|
||||
of_phy_is_fixed_link
|
||||
of_phy_register_fixed_link
|
||||
phy_attached_info
|
||||
phy_disconnect
|
||||
phy_ethtool_get_eee
|
||||
phy_ethtool_ksettings_get
|
||||
phy_ethtool_ksettings_set
|
||||
phy_ethtool_nway_reset
|
||||
phy_ethtool_set_eee
|
||||
phy_get_eee_err
|
||||
phy_init_eee
|
||||
phylink_connect_phy
|
||||
phylink_create
|
||||
phylink_destroy
|
||||
phylink_of_phy_connect
|
||||
phylink_set_port_modes
|
||||
phylink_start
|
||||
phy_mac_interrupt
|
||||
phy_mii_ioctl
|
||||
phy_resume
|
||||
phy_start_aneg
|
||||
phy_stop
|
||||
phy_suspend
|
||||
pinctrl_pm_select_default_state
|
||||
pinctrl_pm_select_sleep_state
|
||||
platform_get_irq_byname
|
||||
@ -1262,6 +1332,7 @@
|
||||
snd_pcm_lib_preallocate_free_for_all
|
||||
snd_pcm_lib_preallocate_pages
|
||||
snd_pcm_period_elapsed
|
||||
snd_pcm_release_substream
|
||||
snd_soc_component_init_regmap
|
||||
snd_soc_component_read
|
||||
snd_soc_dapm_add_routes
|
||||
@ -1274,7 +1345,6 @@
|
||||
snd_soc_unregister_component
|
||||
|
||||
# required by snd-soc-tas6424.ko
|
||||
_dev_crit
|
||||
regcache_cache_only
|
||||
snd_soc_get_volsw
|
||||
snd_soc_put_volsw
|
||||
@ -1308,6 +1378,7 @@
|
||||
ufshcd_config_pwr_mode
|
||||
ufshcd_dme_get_attr
|
||||
ufshcd_dme_set_attr
|
||||
ufshcd_init
|
||||
ufshcd_link_recovery
|
||||
ufshcd_pltfrm_init
|
||||
ufshcd_remove
|
||||
|
@ -544,9 +544,11 @@
|
||||
drm_atomic_normalize_zpos
|
||||
drm_atomic_private_obj_fini
|
||||
drm_atomic_private_obj_init
|
||||
drm_atomic_set_crtc_for_connector
|
||||
drm_atomic_set_crtc_for_plane
|
||||
drm_atomic_set_fb_for_plane
|
||||
drm_atomic_set_mode_for_crtc
|
||||
drm_atomic_set_mode_prop_for_crtc
|
||||
drm_atomic_state_alloc
|
||||
drm_atomic_state_clear
|
||||
__drm_atomic_state_free
|
||||
|
@ -15,18 +15,15 @@
|
||||
__alloc_disk_node
|
||||
alloc_etherdev_mqs
|
||||
alloc_io_pgtable_ops
|
||||
alloc_netdev_mqs
|
||||
alloc_pages_exact
|
||||
__alloc_pages_nodemask
|
||||
__alloc_percpu
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
all_vm_events
|
||||
android_debug_symbol
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfd
|
||||
anon_inode_getfile
|
||||
__arch_clear_user
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arch_timer_read_counter
|
||||
@ -45,12 +42,10 @@
|
||||
bio_endio
|
||||
__bitmap_andnot
|
||||
__bitmap_clear
|
||||
__bitmap_equal
|
||||
bitmap_find_free_region
|
||||
bitmap_find_next_zero_area_off
|
||||
bitmap_free
|
||||
bitmap_from_arr32
|
||||
__bitmap_or
|
||||
bitmap_print_to_pagebuf
|
||||
bitmap_release_region
|
||||
__bitmap_set
|
||||
@ -70,6 +65,7 @@
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run12
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
@ -82,7 +78,6 @@
|
||||
bus_register
|
||||
bus_set_iommu
|
||||
bus_unregister
|
||||
cache_line_size
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
@ -93,6 +88,8 @@
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfi_slowpath
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
__check_object_size
|
||||
check_preempt_curr
|
||||
__class_create
|
||||
@ -101,7 +98,6 @@
|
||||
class_for_each_device
|
||||
__class_register
|
||||
class_unregister
|
||||
clear_page
|
||||
__ClearPageMovable
|
||||
clk_bulk_disable
|
||||
clk_bulk_enable
|
||||
@ -209,8 +205,6 @@
|
||||
cpumask_next_and
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
cpu_pm_register_notifier
|
||||
cpu_pm_unregister_notifier
|
||||
__cpu_possible_mask
|
||||
__cpu_present_mask
|
||||
cpu_scale
|
||||
@ -247,12 +241,12 @@
|
||||
debugfs_create_file
|
||||
debugfs_create_regset32
|
||||
debugfs_create_symlink
|
||||
debugfs_create_u16
|
||||
debugfs_create_u32
|
||||
debugfs_create_u64
|
||||
debugfs_create_x32
|
||||
debugfs_lookup
|
||||
debugfs_remove
|
||||
debug_locks_off
|
||||
dec_zone_page_state
|
||||
default_llseek
|
||||
deferred_free
|
||||
@ -266,24 +260,19 @@
|
||||
_dev_emerg
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_cooling_unregister
|
||||
devfreq_get_devfreq_by_phandle
|
||||
devfreq_monitor_resume
|
||||
devfreq_monitor_start
|
||||
devfreq_monitor_stop
|
||||
devfreq_monitor_suspend
|
||||
devfreq_recommended_opp
|
||||
devfreq_register_opp_notifier
|
||||
devfreq_remove_device
|
||||
devfreq_remove_governor
|
||||
devfreq_resume_device
|
||||
devfreq_suspend_device
|
||||
devfreq_unregister_opp_notifier
|
||||
devfreq_update_interval
|
||||
dev_fwnode
|
||||
dev_get_by_name
|
||||
dev_get_regmap
|
||||
dev_get_stats
|
||||
device_add
|
||||
@ -365,7 +354,6 @@
|
||||
devm_phy_create
|
||||
devm_phy_get
|
||||
devm_pinctrl_get
|
||||
devm_pinctrl_put
|
||||
devm_pinctrl_register_and_init
|
||||
devm_platform_ioremap_resource
|
||||
devm_platform_ioremap_resource_byname
|
||||
@ -393,12 +381,13 @@
|
||||
devm_thermal_zone_of_sensor_register
|
||||
devm_watchdog_register_device
|
||||
_dev_notice
|
||||
dev_pm_domain_attach_by_name
|
||||
dev_pm_domain_detach
|
||||
dev_pm_genpd_add_notifier
|
||||
dev_pm_genpd_set_performance_state
|
||||
dev_pm_opp_add
|
||||
dev_pm_opp_find_freq_ceil
|
||||
dev_pm_opp_find_freq_ceil_by_volt
|
||||
dev_pm_opp_find_freq_exact
|
||||
dev_pm_opp_find_freq_floor
|
||||
dev_pm_opp_get_freq
|
||||
dev_pm_opp_get_level
|
||||
@ -410,9 +399,7 @@
|
||||
dev_pm_opp_of_remove_table
|
||||
dev_pm_opp_put
|
||||
dev_pm_opp_put_opp_table
|
||||
dev_pm_opp_put_regulators
|
||||
dev_pm_opp_remove_all_dynamic
|
||||
dev_pm_opp_set_regulators
|
||||
dev_pm_qos_update_request
|
||||
dev_printk
|
||||
dev_queue_xmit
|
||||
@ -439,7 +426,6 @@
|
||||
dma_buf_fd
|
||||
dma_buf_get
|
||||
dma_buf_map_attachment
|
||||
dma_buf_mmap
|
||||
dmabuf_page_pool_alloc
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
@ -452,10 +438,8 @@
|
||||
dma_fence_context_alloc
|
||||
dma_fence_default_wait
|
||||
dma_fence_free
|
||||
dma_fence_get_status
|
||||
dma_fence_init
|
||||
dma_fence_release
|
||||
dma_fence_remove_callback
|
||||
dma_fence_signal
|
||||
dma_fence_signal_locked
|
||||
dma_fence_signal_timestamp_locked
|
||||
@ -487,17 +471,14 @@
|
||||
dma_sync_sg_for_cpu
|
||||
dma_sync_sg_for_device
|
||||
dma_sync_single_for_cpu
|
||||
dma_sync_single_for_device
|
||||
dma_unmap_page_attrs
|
||||
dma_unmap_resource
|
||||
dma_unmap_sg_attrs
|
||||
do_exit
|
||||
do_wait_intr_irq
|
||||
down
|
||||
downgrade_write
|
||||
down_interruptible
|
||||
down_read
|
||||
down_read_trylock
|
||||
down_timeout
|
||||
down_trylock
|
||||
down_write
|
||||
@ -630,12 +611,15 @@
|
||||
em_dev_register_perf_domain
|
||||
enable_irq
|
||||
enable_percpu_irq
|
||||
ether_setup
|
||||
eth_header
|
||||
eth_header_cache
|
||||
eth_header_cache_update
|
||||
eth_header_parse
|
||||
eth_type_trans
|
||||
eth_mac_addr
|
||||
eth_platform_get_mac_address
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
eth_validate_addr
|
||||
event_triggers_call
|
||||
extcon_get_edev_by_phandle
|
||||
extcon_get_state
|
||||
@ -682,13 +666,11 @@
|
||||
fwnode_property_present
|
||||
fwnode_property_read_string
|
||||
fwnode_property_read_u32_array
|
||||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
generic_iommu_put_resv_regions
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
generic_mii_ioctl
|
||||
genphy_resume
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_avail
|
||||
@ -707,7 +689,6 @@
|
||||
get_cpu_iowait_time_us
|
||||
get_device
|
||||
get_each_dmabuf
|
||||
get_freelist_nr_pages
|
||||
__get_free_pages
|
||||
get_governor_parent_kobj
|
||||
get_kernel_pages
|
||||
@ -719,7 +700,6 @@
|
||||
get_task_mm
|
||||
get_unused_fd_flags
|
||||
get_user_pages
|
||||
get_user_pages_fast
|
||||
get_user_pages_remote
|
||||
get_vaddr_frames
|
||||
get_zeroed_page
|
||||
@ -738,8 +718,8 @@
|
||||
gpiod_direction_output
|
||||
gpiod_direction_output_raw
|
||||
gpiod_get_raw_value
|
||||
gpiod_get_value_cansleep
|
||||
gpiod_set_debounce
|
||||
gpiod_set_raw_value
|
||||
gpiod_set_value
|
||||
gpiod_set_value_cansleep
|
||||
gpiod_to_irq
|
||||
@ -752,13 +732,7 @@
|
||||
handle_simple_irq
|
||||
hashlen_string
|
||||
have_governor_per_policy
|
||||
hci_alloc_dev
|
||||
hci_free_dev
|
||||
hci_recv_frame
|
||||
hci_register_dev
|
||||
hci_unregister_dev
|
||||
hex_asc
|
||||
hex_dump_to_buffer
|
||||
hrtimer_active
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
@ -833,7 +807,6 @@
|
||||
input_set_abs_params
|
||||
input_set_capability
|
||||
input_unregister_device
|
||||
iomem_resource
|
||||
iommu_alloc_resv_region
|
||||
iommu_device_register
|
||||
iommu_device_sysfs_add
|
||||
@ -878,12 +851,10 @@
|
||||
irq_set_parent
|
||||
irq_to_desc
|
||||
irq_work_queue
|
||||
irq_work_run
|
||||
irq_work_sync
|
||||
is_dma_buf_file
|
||||
is_vmalloc_addr
|
||||
iterate_fd
|
||||
jiffies_64_to_clock_t
|
||||
jiffies
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
@ -900,7 +871,6 @@
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
__kfifo_init
|
||||
__kfifo_out
|
||||
__kfifo_to_user
|
||||
kfree
|
||||
@ -920,7 +890,6 @@
|
||||
kmem_cache_free
|
||||
kobject_add
|
||||
kobject_create_and_add
|
||||
kobject_del
|
||||
kobject_init
|
||||
kobject_init_and_add
|
||||
kobject_put
|
||||
@ -932,7 +901,6 @@
|
||||
kstrdup_const
|
||||
kstrndup
|
||||
kstrtobool
|
||||
kstrtobool_from_user
|
||||
kstrtoint
|
||||
kstrtoint_from_user
|
||||
kstrtol_from_user
|
||||
@ -963,7 +931,6 @@
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_raw
|
||||
ktime_get_raw_ts64
|
||||
ktime_get_real_ts64
|
||||
ktime_get_ts64
|
||||
@ -1006,6 +973,10 @@
|
||||
mbox_free_channel
|
||||
mbox_request_channel
|
||||
mbox_send_message
|
||||
mdiobus_alloc_size
|
||||
mdiobus_free
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
media_create_intf_link
|
||||
media_create_pad_link
|
||||
media_device_cleanup
|
||||
@ -1024,7 +995,6 @@
|
||||
memcpy
|
||||
__memcpy_fromio
|
||||
__memcpy_toio
|
||||
memdup_user
|
||||
memmove
|
||||
memory_read_from_buffer
|
||||
memparse
|
||||
@ -1035,6 +1005,12 @@
|
||||
memstart_addr
|
||||
memunmap
|
||||
migrate_swap
|
||||
mii_check_media
|
||||
mii_ethtool_get_link_ksettings
|
||||
mii_ethtool_gset
|
||||
mii_ethtool_set_link_ksettings
|
||||
mii_link_ok
|
||||
mii_nway_restart
|
||||
mipi_dsi_attach
|
||||
mipi_dsi_dcs_read
|
||||
mipi_dsi_dcs_write
|
||||
@ -1065,13 +1041,11 @@
|
||||
mmc_remove_host
|
||||
mmc_request_done
|
||||
mmc_send_tuning
|
||||
__mmdrop
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
mod_timer
|
||||
mod_timer_pending
|
||||
module_layout
|
||||
module_put
|
||||
__msecs_to_jiffies
|
||||
msleep
|
||||
msleep_interruptible
|
||||
@ -1090,6 +1064,9 @@
|
||||
nd_tbl
|
||||
netdev_alloc_frag
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_warn
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_napi_add
|
||||
@ -1097,24 +1074,18 @@
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_rx_ni
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
__netlink_kernel_create
|
||||
netlink_kernel_release
|
||||
netlink_unicast
|
||||
net_namespace_list
|
||||
nf_register_net_hooks
|
||||
nf_unregister_net_hooks
|
||||
__nla_parse
|
||||
nla_put
|
||||
nla_put_nohdr
|
||||
__nlmsg_put
|
||||
no_llseek
|
||||
nonseekable_open
|
||||
nr_cpu_ids
|
||||
nsecs_to_jiffies
|
||||
ns_to_timespec64
|
||||
n_tty_ioctl_helper
|
||||
__num_online_cpus
|
||||
nvmem_cell_get
|
||||
nvmem_cell_put
|
||||
@ -1135,7 +1106,6 @@
|
||||
of_clk_src_simple_get
|
||||
of_count_phandle_with_args
|
||||
of_cpu_node_to_id
|
||||
of_devfreq_cooling_register_power
|
||||
of_device_get_match_data
|
||||
of_device_is_available
|
||||
of_device_is_compatible
|
||||
@ -1204,7 +1174,6 @@
|
||||
of_remove_property
|
||||
of_reserved_mem_device_init_by_idx
|
||||
of_reserved_mem_lookup
|
||||
of_root
|
||||
of_thermal_get_trip_points
|
||||
of_translate_address
|
||||
on_each_cpu
|
||||
@ -1214,17 +1183,14 @@
|
||||
__page_pinner_migration_failed
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_array_ops
|
||||
param_get_bool
|
||||
param_get_charp
|
||||
param_get_int
|
||||
param_get_uint
|
||||
param_get_ulong
|
||||
param_ops_bool
|
||||
param_ops_byte
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_string
|
||||
param_ops_uint
|
||||
param_set_bool
|
||||
param_set_charp
|
||||
@ -1238,20 +1204,28 @@
|
||||
perf_event_enable
|
||||
perf_event_release_kernel
|
||||
perf_event_update_userpage
|
||||
perf_num_counters
|
||||
perf_pmu_migrate_context
|
||||
perf_pmu_register
|
||||
perf_pmu_unregister
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
pfn_valid
|
||||
phy_connect
|
||||
phy_disconnect
|
||||
phy_do_ioctl_running
|
||||
phy_ethtool_get_link_ksettings
|
||||
phy_ethtool_nway_reset
|
||||
phy_ethtool_set_link_ksettings
|
||||
phy_exit
|
||||
phy_get
|
||||
phy_init
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_print_status
|
||||
phy_put
|
||||
phy_set_mode_ext
|
||||
phy_start
|
||||
phy_stop
|
||||
pid_task
|
||||
pinconf_generic_parse_dt_config
|
||||
pinctrl_dev_get_drvdata
|
||||
@ -1330,6 +1304,7 @@
|
||||
proc_mkdir
|
||||
proc_remove
|
||||
proc_set_user
|
||||
pskb_expand_head
|
||||
put_device
|
||||
put_disk
|
||||
__put_page
|
||||
@ -1372,8 +1347,6 @@
|
||||
rb_first
|
||||
rb_insert_color
|
||||
rb_next
|
||||
rb_prev
|
||||
rb_replace_node
|
||||
rcu_idle_enter
|
||||
rcu_idle_exit
|
||||
__rcu_read_lock
|
||||
@ -1391,12 +1364,9 @@
|
||||
__register_chrdev
|
||||
register_chrdev_region
|
||||
register_die_notifier
|
||||
register_inetaddr_notifier
|
||||
register_kprobe
|
||||
register_module_notifier
|
||||
register_netdev
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_oom_notifier
|
||||
register_pernet_subsys
|
||||
register_pm_notifier
|
||||
@ -1449,16 +1419,13 @@
|
||||
regulator_sync_voltage
|
||||
release_firmware
|
||||
release_pages
|
||||
__release_region
|
||||
remap_pfn_range
|
||||
remap_vmalloc_range
|
||||
remove_proc_entry
|
||||
remove_proc_subtree
|
||||
remove_wait_queue
|
||||
request_firmware
|
||||
request_firmware_nowait
|
||||
__request_percpu_irq
|
||||
__request_region
|
||||
request_threaded_irq
|
||||
reset_control_assert
|
||||
reset_control_deassert
|
||||
@ -1487,9 +1454,6 @@
|
||||
rtc_tm_to_time64
|
||||
rtc_update_irq
|
||||
rtc_valid_tm
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
runqueues
|
||||
sched_clock
|
||||
sched_feat_keys
|
||||
@ -1507,26 +1471,7 @@
|
||||
scnprintf
|
||||
scsi_device_quiesce
|
||||
__scsi_iterate_devices
|
||||
sdio_claim_host
|
||||
sdio_claim_irq
|
||||
sdio_disable_func
|
||||
sdio_enable_func
|
||||
sdio_f0_readb
|
||||
sdio_f0_writeb
|
||||
sdio_get_host_pm_caps
|
||||
sdio_readb
|
||||
sdio_readl
|
||||
sdio_readsb
|
||||
sdio_register_driver
|
||||
sdio_release_host
|
||||
sdio_release_irq
|
||||
sdio_set_block_size
|
||||
sdio_set_host_pm_flags
|
||||
sdio_signal_irq
|
||||
sdio_unregister_driver
|
||||
sdio_writeb
|
||||
sdio_writel
|
||||
sdio_writesb
|
||||
send_sig
|
||||
seq_hex_dump
|
||||
seq_lseek
|
||||
@ -1566,9 +1511,7 @@
|
||||
sg_next
|
||||
__sg_page_iter_next
|
||||
__sg_page_iter_start
|
||||
shmem_file_setup
|
||||
si_mem_available
|
||||
si_meminfo
|
||||
simple_attr_open
|
||||
simple_attr_read
|
||||
simple_attr_release
|
||||
@ -1579,17 +1522,15 @@
|
||||
single_open
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_dequeue
|
||||
skb_copy_expand
|
||||
skb_pull
|
||||
skb_pull_rcsum
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_realloc_headroom
|
||||
skb_trim
|
||||
smp_call_function
|
||||
smp_call_function_single
|
||||
snd_card_add_dev_attr
|
||||
snd_ctl_boolean_mono_info
|
||||
@ -1611,9 +1552,13 @@
|
||||
snd_soc_card_jack_new
|
||||
snd_soc_component_exit_regmap
|
||||
snd_soc_component_init_regmap
|
||||
snd_soc_component_read
|
||||
snd_soc_component_update_bits
|
||||
snd_soc_component_write
|
||||
snd_soc_dai_set_sysclk
|
||||
snd_soc_dapm_add_routes
|
||||
snd_soc_dapm_disable_pin
|
||||
snd_soc_dapm_enable_pin
|
||||
snd_soc_dapm_get_enum_double
|
||||
snd_soc_dapm_get_pin_switch
|
||||
snd_soc_dapm_get_volsw
|
||||
@ -1623,6 +1568,7 @@
|
||||
snd_soc_dapm_put_enum_double
|
||||
snd_soc_dapm_put_pin_switch
|
||||
snd_soc_dapm_put_volsw
|
||||
snd_soc_dapm_sync
|
||||
snd_soc_get_volsw
|
||||
snd_soc_info_enum_double
|
||||
snd_soc_info_volsw
|
||||
@ -1658,7 +1604,6 @@
|
||||
spmi_register_write
|
||||
spmi_register_zero_write
|
||||
sprintf
|
||||
sprint_symbol_no_offset
|
||||
srcu_init_notifier_head
|
||||
srcu_notifier_call_chain
|
||||
srcu_notifier_chain_register
|
||||
@ -1669,6 +1614,7 @@
|
||||
stack_trace_save
|
||||
static_key_slow_dec
|
||||
static_key_slow_inc
|
||||
stop_one_cpu_nowait
|
||||
strcasecmp
|
||||
strchr
|
||||
strcmp
|
||||
@ -1684,12 +1630,10 @@
|
||||
strncpy_from_user
|
||||
strnlen
|
||||
strnstr
|
||||
strpbrk
|
||||
strrchr
|
||||
strreplace
|
||||
strscpy
|
||||
strsep
|
||||
strspn
|
||||
strstr
|
||||
suspend_set_ops
|
||||
__sw_hweight32
|
||||
@ -1716,7 +1660,6 @@
|
||||
system_freezable_power_efficient_wq
|
||||
system_freezing_cnt
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_power_efficient_wq
|
||||
system_state
|
||||
system_unbound_wq
|
||||
@ -1733,7 +1676,6 @@
|
||||
__task_rq_lock
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
thermal_zone_device_update
|
||||
thermal_zone_get_temp
|
||||
thermal_zone_get_zone_by_name
|
||||
tick_nohz_get_idle_calls_cpu
|
||||
@ -1771,6 +1713,7 @@
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
__traceiter_android_vh_binder_set_priority
|
||||
__traceiter_android_vh_binder_transaction_init
|
||||
__traceiter_android_vh_cgroup_attach
|
||||
__traceiter_android_vh_cgroup_set_task
|
||||
__traceiter_android_vh_commit_creds
|
||||
__traceiter_android_vh_em_cpu_energy
|
||||
@ -1778,6 +1721,7 @@
|
||||
__traceiter_android_vh_finish_update_load_avg_se
|
||||
__traceiter_android_vh_iommu_alloc_iova
|
||||
__traceiter_android_vh_iommu_free_iova
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_android_vh_logbuf
|
||||
__traceiter_android_vh_override_creds
|
||||
__traceiter_android_vh_prepare_update_load_avg_se
|
||||
@ -1800,13 +1744,12 @@
|
||||
__traceiter_android_vh_set_wake_flags
|
||||
__traceiter_android_vh_syscall_prctl_finished
|
||||
__traceiter_cpu_frequency
|
||||
__traceiter_gpu_mem_total
|
||||
__traceiter_pelt_se_tp
|
||||
__traceiter_rwmmio_post_read
|
||||
__traceiter_rwmmio_read
|
||||
__traceiter_rwmmio_write
|
||||
__traceiter_sched_update_nr_running_tp
|
||||
trace_output_call
|
||||
__traceiter_task_newtask
|
||||
__tracepoint_android_rvh_cpu_overutilized
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
__tracepoint_android_rvh_dequeue_task_fair
|
||||
@ -1828,6 +1771,7 @@
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
__tracepoint_android_vh_binder_set_priority
|
||||
__tracepoint_android_vh_binder_transaction_init
|
||||
__tracepoint_android_vh_cgroup_attach
|
||||
__tracepoint_android_vh_cgroup_set_task
|
||||
__tracepoint_android_vh_commit_creds
|
||||
__tracepoint_android_vh_em_cpu_energy
|
||||
@ -1835,6 +1779,7 @@
|
||||
__tracepoint_android_vh_finish_update_load_avg_se
|
||||
__tracepoint_android_vh_iommu_alloc_iova
|
||||
__tracepoint_android_vh_iommu_free_iova
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_logbuf
|
||||
__tracepoint_android_vh_override_creds
|
||||
__tracepoint_android_vh_prepare_update_load_avg_se
|
||||
@ -1857,7 +1802,6 @@
|
||||
__tracepoint_android_vh_set_wake_flags
|
||||
__tracepoint_android_vh_syscall_prctl_finished
|
||||
__tracepoint_cpu_frequency
|
||||
__tracepoint_gpu_mem_total
|
||||
__tracepoint_pelt_se_tp
|
||||
tracepoint_probe_register
|
||||
tracepoint_probe_unregister
|
||||
@ -1866,23 +1810,19 @@
|
||||
__tracepoint_rwmmio_write
|
||||
__tracepoint_sched_update_nr_running_tp
|
||||
tracepoint_srcu
|
||||
__tracepoint_task_newtask
|
||||
trace_print_array_seq
|
||||
trace_print_flags_seq
|
||||
trace_print_symbols_seq
|
||||
__trace_puts
|
||||
trace_raw_output_prep
|
||||
trace_seq_printf
|
||||
trace_seq_putc
|
||||
tracing_off
|
||||
try_module_get
|
||||
try_wait_for_completion
|
||||
tty_driver_flush_buffer
|
||||
tty_flip_buffer_push
|
||||
tty_insert_flip_string_fixed_flag
|
||||
tty_register_ldisc
|
||||
tty_termios_baud_rate
|
||||
tty_termios_encode_baud_rate
|
||||
tty_unregister_ldisc
|
||||
typec_get_drvdata
|
||||
typec_mux_get_drvdata
|
||||
typec_mux_register
|
||||
@ -1921,30 +1861,25 @@
|
||||
ufshcd_pltfrm_runtime_idle
|
||||
ufshcd_pltfrm_runtime_resume
|
||||
ufshcd_pltfrm_runtime_suspend
|
||||
ufshcd_pltfrm_shutdown
|
||||
ufshcd_pltfrm_suspend
|
||||
ufshcd_remove
|
||||
ufshcd_shutdown
|
||||
ufshcd_uic_hibern8_exit
|
||||
unlock_page
|
||||
unmap_mapping_range
|
||||
unpin_user_pages
|
||||
unregister_blkdev
|
||||
__unregister_chrdev
|
||||
unregister_chrdev_region
|
||||
unregister_die_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_kprobe
|
||||
unregister_module_notifier
|
||||
unregister_netdev
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_oom_notifier
|
||||
unregister_pernet_subsys
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
unregister_rpmsg_driver
|
||||
unregister_shrinker
|
||||
unregister_syscore_ops
|
||||
unregister_virtio_device
|
||||
unregister_virtio_driver
|
||||
up
|
||||
@ -1960,6 +1895,7 @@
|
||||
usb_create_shared_hcd
|
||||
usb_debug_root
|
||||
usb_del_gadget_udc
|
||||
usb_deregister
|
||||
usb_disabled
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
@ -1981,8 +1917,36 @@
|
||||
usb_hcd_is_primary_hcd
|
||||
usb_hcd_poll_rh_status
|
||||
usb_interface_id
|
||||
usbnet_change_mtu
|
||||
usbnet_disconnect
|
||||
usbnet_get_drvinfo
|
||||
usbnet_get_endpoints
|
||||
usbnet_get_link
|
||||
usbnet_get_link_ksettings
|
||||
usbnet_get_msglevel
|
||||
usbnet_get_stats64
|
||||
usbnet_link_change
|
||||
usbnet_nway_reset
|
||||
usbnet_open
|
||||
usbnet_probe
|
||||
usbnet_read_cmd
|
||||
usbnet_read_cmd_nopm
|
||||
usbnet_resume
|
||||
usbnet_set_link_ksettings
|
||||
usbnet_set_msglevel
|
||||
usbnet_skb_return
|
||||
usbnet_start_xmit
|
||||
usbnet_stop
|
||||
usbnet_suspend
|
||||
usbnet_tx_timeout
|
||||
usbnet_unlink_rx_urbs
|
||||
usbnet_update_max_qlen
|
||||
usbnet_write_cmd
|
||||
usbnet_write_cmd_async
|
||||
usbnet_write_cmd_nopm
|
||||
usb_put_function_instance
|
||||
usb_put_hcd
|
||||
usb_register_driver
|
||||
usb_remove_hcd
|
||||
usb_role_switch_get
|
||||
usb_role_switch_get_drvdata
|
||||
@ -2112,7 +2076,6 @@
|
||||
vmalloc_user
|
||||
vmap
|
||||
vm_event_states
|
||||
vmf_insert_pfn_prot
|
||||
vm_map_ram
|
||||
vm_node_stat
|
||||
vm_unmap_ram
|
||||
@ -2129,7 +2092,6 @@
|
||||
wait_for_completion_interruptible
|
||||
wait_for_completion_interruptible_timeout
|
||||
wait_for_completion_killable
|
||||
wait_for_completion_killable_timeout
|
||||
wait_for_completion_timeout
|
||||
wait_woken
|
||||
__wake_up
|
||||
@ -2143,11 +2105,10 @@
|
||||
__warn_printk
|
||||
watchdog_init_timeout
|
||||
watchdog_set_restart_priority
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
work_busy
|
||||
work_on_cpu
|
||||
ww_mutex_lock
|
||||
ww_mutex_lock_interruptible
|
||||
ww_mutex_unlock
|
||||
xhci_add_endpoint
|
||||
xhci_check_bandwidth
|
||||
@ -2157,19 +2118,175 @@
|
||||
xhci_get_ep_ctx
|
||||
xhci_init_driver
|
||||
xhci_reset_bandwidth
|
||||
|
||||
# preserved by --additions-only
|
||||
alloc_netdev_mqs
|
||||
all_vm_events
|
||||
__arch_clear_user
|
||||
bio_add_pc_page
|
||||
bio_reset
|
||||
__bitmap_equal
|
||||
__bitmap_or
|
||||
blk_insert_cloned_request
|
||||
blk_mq_sched_mark_restart_hctx
|
||||
blk_rq_append_bio
|
||||
cache_line_size
|
||||
class_create_file_ns
|
||||
class_remove_file_ns
|
||||
clear_page
|
||||
cpu_pm_register_notifier
|
||||
cpu_pm_unregister_notifier
|
||||
debugfs_create_u8
|
||||
debug_locks_off
|
||||
devfreq_add_device
|
||||
devfreq_cooling_unregister
|
||||
devfreq_register_opp_notifier
|
||||
devfreq_unregister_opp_notifier
|
||||
dev_get_by_name
|
||||
devm_of_pwm_get
|
||||
devm_pinctrl_put
|
||||
devm_rc_allocate_device
|
||||
devm_rc_register_device
|
||||
dev_pm_opp_find_freq_exact
|
||||
dev_pm_opp_put_regulators
|
||||
dev_pm_opp_set_regulators
|
||||
dma_buf_mmap
|
||||
dma_fence_get_status
|
||||
dma_fence_remove_callback
|
||||
dma_sync_single_for_device
|
||||
downgrade_write
|
||||
down_read_trylock
|
||||
ether_setup
|
||||
eth_type_trans
|
||||
fsg_common_create_luns
|
||||
fsg_common_set_cdev
|
||||
fsg_common_set_inquiry_string
|
||||
fsg_common_set_sysfs
|
||||
fsg_config_from_params
|
||||
gcd
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
get_freelist_nr_pages
|
||||
get_user_pages_fast
|
||||
gpiod_set_raw_value
|
||||
hci_alloc_dev
|
||||
hci_free_dev
|
||||
hci_recv_frame
|
||||
hci_register_dev
|
||||
hci_unregister_dev
|
||||
hex_dump_to_buffer
|
||||
iomem_resource
|
||||
irq_work_run
|
||||
jiffies_64_to_clock_t
|
||||
__kfifo_init
|
||||
kobject_del
|
||||
kstrtobool_from_user
|
||||
ktime_get_raw
|
||||
led_classdev_unregister
|
||||
memdup_user
|
||||
__mmdrop
|
||||
module_put
|
||||
netif_tx_stop_all_queues
|
||||
netlink_kernel_release
|
||||
__nla_parse
|
||||
nla_put
|
||||
nla_put_nohdr
|
||||
n_tty_ioctl_helper
|
||||
of_devfreq_cooling_register_power
|
||||
of_root
|
||||
param_array_ops
|
||||
param_ops_byte
|
||||
param_ops_string
|
||||
perf_num_counters
|
||||
pin_user_pages_remote
|
||||
rb_prev
|
||||
rb_replace_node
|
||||
register_inetaddr_notifier
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
__release_region
|
||||
request_firmware_nowait
|
||||
__request_region
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
__sbitmap_queue_get
|
||||
sdio_claim_host
|
||||
sdio_claim_irq
|
||||
sdio_disable_func
|
||||
sdio_enable_func
|
||||
sdio_f0_readb
|
||||
sdio_f0_writeb
|
||||
sdio_get_host_pm_caps
|
||||
sdio_readb
|
||||
sdio_readl
|
||||
sdio_readsb
|
||||
sdio_register_driver
|
||||
sdio_release_host
|
||||
sdio_release_irq
|
||||
sdio_set_block_size
|
||||
sdio_set_host_pm_flags
|
||||
sdio_unregister_driver
|
||||
sdio_writeb
|
||||
sdio_writel
|
||||
sdio_writesb
|
||||
send_sig_info
|
||||
shmem_file_setup
|
||||
si_meminfo
|
||||
skb_dequeue
|
||||
skb_pull_rcsum
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_realloc_headroom
|
||||
snd_soc_component_test_bits
|
||||
sprint_symbol_no_offset
|
||||
stpcpy
|
||||
strim
|
||||
strpbrk
|
||||
strspn
|
||||
syscore_resume
|
||||
syscore_suspend
|
||||
system_long_wq
|
||||
thermal_zone_device_update
|
||||
__traceiter_gpu_mem_total
|
||||
trace_output_call
|
||||
__tracepoint_android_vh_ufs_update_sdev
|
||||
__tracepoint_gpu_mem_total
|
||||
trace_print_flags_seq
|
||||
try_module_get
|
||||
tty_driver_flush_buffer
|
||||
tty_register_ldisc
|
||||
tty_unregister_ldisc
|
||||
ufshcd_pltfrm_shutdown
|
||||
unmap_mapping_range
|
||||
unpin_user_page
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_syscore_ops
|
||||
usb_add_config
|
||||
usb_composite_probe
|
||||
usb_composite_unregister
|
||||
usb_gadget_connect
|
||||
usb_gadget_disconnect
|
||||
usb_gadget_probe_driver
|
||||
usb_gadget_set_selfpowered
|
||||
usb_get_function
|
||||
usb_get_function_instance
|
||||
usb_put_function
|
||||
usb_remove_function
|
||||
v4l2_m2m_buf_copy_metadata
|
||||
v4l2_m2m_buf_remove_by_buf
|
||||
v4l2_m2m_register_media_controller
|
||||
v4l2_m2m_request_queue
|
||||
v4l2_m2m_unregister_media_controller
|
||||
vmf_insert_pfn_prot
|
||||
wait_for_completion_killable_timeout
|
||||
wireless_send_event
|
||||
ww_mutex_lock
|
||||
zlib_deflate
|
||||
zlib_deflateEnd
|
||||
zlib_deflateInit2
|
||||
zlib_deflateReset
|
||||
zlib_deflate_workspacesize
|
||||
|
||||
# preserved by --additions-only
|
||||
debugfs_create_u8
|
||||
devm_of_pwm_get
|
||||
led_classdev_unregister
|
||||
pin_user_pages_remote
|
||||
send_sig_info
|
||||
syscore_resume
|
||||
syscore_suspend
|
||||
unpin_user_page
|
||||
v4l2_m2m_buf_remove_by_buf
|
||||
|
@ -24,6 +24,7 @@
|
||||
alloc_netdev_mqs
|
||||
__alloc_pages_nodemask
|
||||
__alloc_percpu
|
||||
__alloc_percpu_gfp
|
||||
__alloc_skb
|
||||
alloc_skb_with_frags
|
||||
alloc_workqueue
|
||||
@ -34,6 +35,8 @@
|
||||
android_debug_symbol
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfile
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
__arch_clear_user
|
||||
__arch_copy_from_user
|
||||
__arch_copy_in_user
|
||||
@ -263,8 +266,11 @@
|
||||
cpus_read_unlock
|
||||
cpu_subsys
|
||||
cpu_topology
|
||||
crc32_be
|
||||
crc32_le
|
||||
crc8
|
||||
crc8_populate_msb
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
@ -285,6 +291,7 @@
|
||||
crypto_enqueue_request
|
||||
crypto_has_alg
|
||||
crypto_init_queue
|
||||
__crypto_memneq
|
||||
crypto_register_aead
|
||||
crypto_register_ahash
|
||||
crypto_register_alg
|
||||
@ -292,7 +299,9 @@
|
||||
crypto_register_rngs
|
||||
crypto_register_scomp
|
||||
crypto_register_skcipher
|
||||
crypto_shash_digest
|
||||
crypto_shash_final
|
||||
crypto_shash_finup
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
crypto_skcipher_decrypt
|
||||
@ -305,6 +314,7 @@
|
||||
crypto_unregister_rngs
|
||||
crypto_unregister_scomp
|
||||
crypto_unregister_skcipher
|
||||
__crypto_xor
|
||||
css_next_child
|
||||
csum_ipv6_magic
|
||||
csum_partial
|
||||
@ -335,6 +345,7 @@
|
||||
debugfs_lookup
|
||||
debugfs_print_regs32
|
||||
debugfs_remove
|
||||
debugfs_rename
|
||||
dec_zone_page_state
|
||||
default_llseek
|
||||
deferred_free
|
||||
@ -345,6 +356,8 @@
|
||||
desc_to_gpio
|
||||
destroy_workqueue
|
||||
dev_alloc_name
|
||||
dev_change_net_namespace
|
||||
dev_close
|
||||
dev_coredumpv
|
||||
_dev_crit
|
||||
__dev_direct_xmit
|
||||
@ -352,6 +365,7 @@
|
||||
_dev_emerg
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fetch_sw_netstats
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_cooling_unregister
|
||||
@ -391,6 +405,7 @@
|
||||
device_property_read_u8_array
|
||||
device_register
|
||||
device_remove_file
|
||||
device_rename
|
||||
device_set_wakeup_capable
|
||||
device_show_int
|
||||
device_store_int
|
||||
@ -849,6 +864,7 @@
|
||||
enable_percpu_irq
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
eth_type_trans
|
||||
eventfd_ctx_fdget
|
||||
eventfd_ctx_fileget
|
||||
@ -865,6 +881,7 @@
|
||||
extcon_register_notifier
|
||||
extcon_set_state_sync
|
||||
extcon_unregister_notifier
|
||||
failure_tracking
|
||||
fasync_helper
|
||||
__fdget
|
||||
fd_install
|
||||
@ -915,6 +932,7 @@
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
generic_iommu_put_resv_regions
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
@ -937,6 +955,8 @@
|
||||
get_each_object_track
|
||||
__get_free_pages
|
||||
get_governor_parent_kobj
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
get_option
|
||||
get_page_owner_handle
|
||||
get_pfnblock_flags_mask
|
||||
@ -1013,6 +1033,9 @@
|
||||
hvc_kick
|
||||
hvc_poll
|
||||
hvc_remove
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
hwrng_register
|
||||
hwrng_unregister
|
||||
hwspin_lock_free
|
||||
@ -1061,6 +1084,7 @@
|
||||
inc_node_page_state
|
||||
inc_zone_page_state
|
||||
in_egroup_p
|
||||
inet_csk_get_port
|
||||
inet_proto_csum_replace4
|
||||
init_dummy_netdev
|
||||
init_iova_domain
|
||||
@ -1210,6 +1234,8 @@
|
||||
kernel_connect
|
||||
kernel_getsockname
|
||||
kernel_kobj
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kernel_power_off
|
||||
kernel_recvmsg
|
||||
kernel_restart
|
||||
@ -1219,6 +1245,9 @@
|
||||
kernfs_put
|
||||
kern_mount
|
||||
kern_unmount
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
@ -1301,6 +1330,7 @@
|
||||
kthread_unpark
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_coarse_with_offset
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_real_seconds
|
||||
ktime_get_real_ts64
|
||||
@ -1390,6 +1420,7 @@
|
||||
mmc_send_tuning
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
__mod_node_page_state
|
||||
mod_node_page_state
|
||||
mod_timer
|
||||
__module_get
|
||||
@ -1416,8 +1447,11 @@
|
||||
neigh_lookup
|
||||
neigh_xmit
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_rx_handler_register
|
||||
netdev_rx_handler_unregister
|
||||
netdev_set_default_ethtool_ops
|
||||
netdev_update_features
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
@ -1426,6 +1460,7 @@
|
||||
netif_napi_add
|
||||
__netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_core
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_rx_ni
|
||||
@ -1436,7 +1471,11 @@
|
||||
netlink_capable
|
||||
__netlink_kernel_create
|
||||
netlink_kernel_release
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
net_ratelimit
|
||||
__next_zones_zonelist
|
||||
nla_find
|
||||
nla_memcpy
|
||||
@ -1752,6 +1791,7 @@
|
||||
power_supply_set_property
|
||||
power_supply_unregister
|
||||
power_supply_unreg_notifier
|
||||
prandom_bytes
|
||||
prandom_u32
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
@ -1777,6 +1817,7 @@
|
||||
put_device
|
||||
put_disk
|
||||
put_iova_domain
|
||||
__put_net
|
||||
__put_page
|
||||
put_pid
|
||||
put_sg_io_hdr
|
||||
@ -1860,6 +1901,7 @@
|
||||
rcuwait_wake_up
|
||||
rdev_get_drvdata
|
||||
reboot_mode
|
||||
reclaim_shmem_address_space
|
||||
refcount_dec_and_lock
|
||||
refcount_dec_not_one
|
||||
refcount_warn_saturate
|
||||
@ -1884,6 +1926,7 @@
|
||||
register_netdevice_notifier
|
||||
register_netevent_notifier
|
||||
register_oom_notifier
|
||||
register_pernet_device
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
register_restart_handler
|
||||
@ -1952,10 +1995,20 @@
|
||||
return_address
|
||||
revalidate_disk_size
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_init_sw_state
|
||||
rfkill_pause_polling
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state
|
||||
rfkill_unregister
|
||||
rhashtable_free_and_destroy
|
||||
rhashtable_insert_slow
|
||||
rhltable_init
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
rndis_deregister
|
||||
rndis_free_response
|
||||
rndis_get_next_response
|
||||
@ -1968,7 +2021,9 @@
|
||||
rndis_signal_connect
|
||||
rndis_uninit
|
||||
root_task_group
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
rpmsg_get_signals
|
||||
rpmsg_poll
|
||||
rpmsg_register_device
|
||||
@ -2122,8 +2177,11 @@
|
||||
skb_add_rx_frag
|
||||
skb_append_pagefrags
|
||||
skb_checksum
|
||||
skb_checksum_help
|
||||
skb_clone
|
||||
skb_clone_sk
|
||||
skb_coalesce_rx_frag
|
||||
skb_complete_wifi_ack
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_datagram_iter
|
||||
@ -2214,6 +2272,7 @@
|
||||
soc_device_register
|
||||
soc_device_unregister
|
||||
sock_alloc_send_skb
|
||||
__sock_create
|
||||
sock_create_kern
|
||||
sock_gettstamp
|
||||
sock_init_data
|
||||
@ -2292,6 +2351,7 @@
|
||||
strscpy
|
||||
strsep
|
||||
strstr
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
@ -2468,6 +2528,7 @@
|
||||
__traceiter_android_vh_show_suspend_epoch_val
|
||||
__traceiter_android_vh_timer_calc_index
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_clock_scaling
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
__traceiter_android_vh_ufs_fill_prdt
|
||||
__traceiter_android_vh_ufs_prepare_command
|
||||
@ -2575,11 +2636,13 @@
|
||||
__tracepoint_android_vh_psi_group
|
||||
__tracepoint_android_vh_rproc_recovery
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_shmem_alloc_page
|
||||
__tracepoint_android_vh_show_max_freq
|
||||
__tracepoint_android_vh_show_resume_epoch_val
|
||||
__tracepoint_android_vh_show_suspend_epoch_val
|
||||
__tracepoint_android_vh_timer_calc_index
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_clock_scaling
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
__tracepoint_android_vh_ufs_fill_prdt
|
||||
__tracepoint_android_vh_ufs_prepare_command
|
||||
@ -2700,6 +2763,7 @@
|
||||
unregister_netdevice_queue
|
||||
unregister_netevent_notifier
|
||||
unregister_oom_notifier
|
||||
unregister_pernet_device
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
unregister_restart_handler
|
||||
@ -2844,6 +2908,7 @@
|
||||
vchan_init
|
||||
vchan_tx_desc_free
|
||||
vchan_tx_submit
|
||||
verify_pkcs7_signature
|
||||
vfree
|
||||
video_devdata
|
||||
video_device_alloc
|
||||
@ -2888,6 +2953,7 @@
|
||||
wakeup_source_register
|
||||
wakeup_source_unregister
|
||||
__warn_printk
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
work_busy
|
||||
|
@ -41,7 +41,9 @@
|
||||
available_idle_cpu
|
||||
bdget_disk
|
||||
bdput
|
||||
bio_add_pc_page
|
||||
bio_endio
|
||||
bio_reset
|
||||
bitmap_allocate_region
|
||||
__bitmap_clear
|
||||
bitmap_find_next_zero_area_off
|
||||
@ -51,11 +53,16 @@
|
||||
bitmap_release_region
|
||||
__bitmap_set
|
||||
blk_alloc_queue
|
||||
blk_bio_list_merge
|
||||
blk_cleanup_queue
|
||||
blk_execute_rq
|
||||
blk_execute_rq_nowait
|
||||
blk_get_request
|
||||
blk_mq_debugfs_rq_show
|
||||
blk_mq_rq_cpu
|
||||
blk_mq_run_hw_queue
|
||||
blk_mq_sched_mark_restart_hctx
|
||||
blk_mq_sched_request_inserted
|
||||
blk_put_request
|
||||
blk_queue_flag_clear
|
||||
blk_queue_flag_set
|
||||
@ -65,17 +72,19 @@
|
||||
blk_queue_max_discard_sectors
|
||||
blk_queue_max_write_zeroes_sectors
|
||||
blk_queue_physical_block_size
|
||||
blk_rq_append_bio
|
||||
blk_rq_map_kern
|
||||
blk_rq_map_user
|
||||
blk_rq_map_user_iov
|
||||
blk_rq_unmap_user
|
||||
blk_stat_enable_accounting
|
||||
blk_verify_command
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run1
|
||||
bpf_trace_run10
|
||||
bpf_trace_run12
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
@ -494,6 +503,9 @@
|
||||
edac_device_free_ctl_info
|
||||
edac_device_handle_ce_count
|
||||
edac_device_handle_ue_count
|
||||
elevator_alloc
|
||||
elv_register
|
||||
elv_unregister
|
||||
enable_irq
|
||||
enable_percpu_irq
|
||||
eventfd_ctx_fdget
|
||||
@ -922,8 +934,8 @@
|
||||
mempool_free
|
||||
mempool_free_slab
|
||||
memremap
|
||||
memset64
|
||||
memset
|
||||
memset64
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
@ -959,8 +971,8 @@
|
||||
__next_zones_zonelist
|
||||
nla_find
|
||||
nla_put
|
||||
nla_reserve_64bit
|
||||
nla_reserve
|
||||
nla_reserve_64bit
|
||||
__nla_validate
|
||||
__nlmsg_put
|
||||
no_llseek
|
||||
@ -1399,6 +1411,16 @@
|
||||
rtc_update_irq
|
||||
rtc_valid_tm
|
||||
runqueues
|
||||
sbitmap_add_wait_queue
|
||||
sbitmap_any_bit_set
|
||||
sbitmap_del_wait_queue
|
||||
sbitmap_init_node
|
||||
sbitmap_queue_clear
|
||||
__sbitmap_queue_get
|
||||
sbitmap_queue_init_node
|
||||
sbitmap_queue_min_shallow_depth
|
||||
sbitmap_queue_resize
|
||||
sbitmap_queue_show
|
||||
sched_clock
|
||||
sched_feat_keys
|
||||
sched_feat_names
|
||||
@ -1444,6 +1466,8 @@
|
||||
sdhci_set_power_noreg
|
||||
sdhci_setup_host
|
||||
seq_buf_printf
|
||||
seq_list_next
|
||||
seq_list_start
|
||||
seq_lseek
|
||||
seq_open
|
||||
seq_printf
|
||||
@ -1548,6 +1572,7 @@
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
__stack_chk_guard
|
||||
stack_trace_save_tsk
|
||||
static_key_disable
|
||||
stop_machine
|
||||
stop_one_cpu_nowait
|
||||
@ -1629,6 +1654,7 @@
|
||||
thermal_zone_of_sensor_unregister
|
||||
tick_nohz_get_sleep_length
|
||||
time64_to_tm
|
||||
timer_reduce
|
||||
topology_set_thermal_pressure
|
||||
total_swapcache_pages
|
||||
trace_array_get_by_name
|
||||
@ -1701,6 +1727,7 @@
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
__traceiter_android_vh_ufs_send_command
|
||||
__traceiter_android_vh_ufs_update_sdev
|
||||
__traceiter_binder_transaction_received
|
||||
__traceiter_cpu_frequency_limits
|
||||
__traceiter_cpu_idle
|
||||
@ -1771,6 +1798,7 @@
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
__tracepoint_android_vh_ufs_send_command
|
||||
__tracepoint_android_vh_ufs_update_sdev
|
||||
__tracepoint_binder_transaction_received
|
||||
__tracepoint_cpu_frequency_limits
|
||||
__tracepoint_cpu_idle
|
||||
|
@ -60,7 +60,7 @@ CONFIG_CP15_BARRIER_EMULATION=y
|
||||
CONFIG_SETEND_EMULATION=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set
|
||||
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure"
|
||||
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure cgroup.memory=nokmem"
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_DMI is not set
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
|
@ -53,7 +53,7 @@ CONFIG_PARAVIRT=y
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_EFI=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure"
|
||||
CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure cgroup.memory=nokmem"
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
|
@ -7,6 +7,7 @@ Image.lz4
|
||||
"
|
||||
|
||||
ABI_DEFINITION=android/abi_gki_aarch64.xml
|
||||
TIDY_ABI=1
|
||||
KMI_SYMBOL_LIST=android/abi_gki_aarch64
|
||||
ADDITIONAL_KMI_SYMBOL_LISTS="
|
||||
android/abi_gki_aarch64_core
|
||||
|
@ -52,7 +52,7 @@ const u32 *__initcall_start = &__initcall_start_marker;
|
||||
const u8 *__text_start = &__fips140_text_start;
|
||||
const u8 *__rodata_start = &__fips140_rodata_start;
|
||||
|
||||
static const char fips140_algorithms[][22] __initconst = {
|
||||
static const char * const fips140_algorithms[] __initconst = {
|
||||
"aes",
|
||||
|
||||
"gcm(aes)",
|
||||
@ -73,28 +73,7 @@ static const char fips140_algorithms[][22] __initconst = {
|
||||
"sha384",
|
||||
"sha512",
|
||||
|
||||
"drbg_nopr_ctr_aes256",
|
||||
"drbg_nopr_ctr_aes192",
|
||||
"drbg_nopr_ctr_aes128",
|
||||
"drbg_nopr_hmac_sha512",
|
||||
"drbg_nopr_hmac_sha384",
|
||||
"drbg_nopr_hmac_sha256",
|
||||
"drbg_nopr_hmac_sha1",
|
||||
"drbg_nopr_sha512",
|
||||
"drbg_nopr_sha384",
|
||||
"drbg_nopr_sha256",
|
||||
"drbg_nopr_sha1",
|
||||
"drbg_pr_ctr_aes256",
|
||||
"drbg_pr_ctr_aes192",
|
||||
"drbg_pr_ctr_aes128",
|
||||
"drbg_pr_hmac_sha512",
|
||||
"drbg_pr_hmac_sha384",
|
||||
"drbg_pr_hmac_sha256",
|
||||
"drbg_pr_hmac_sha1",
|
||||
"drbg_pr_sha512",
|
||||
"drbg_pr_sha384",
|
||||
"drbg_pr_sha256",
|
||||
"drbg_pr_sha1",
|
||||
"stdrng",
|
||||
};
|
||||
|
||||
static bool __init is_fips140_algo(struct crypto_alg *alg)
|
||||
@ -116,6 +95,38 @@ static bool __init is_fips140_algo(struct crypto_alg *alg)
|
||||
|
||||
static LIST_HEAD(unchecked_fips140_algos);
|
||||
|
||||
/*
|
||||
* Release a list of algorithms which have been removed from crypto_alg_list.
|
||||
*
|
||||
* Note that even though the list is a private list, we have to hold
|
||||
* crypto_alg_sem while iterating through it because crypto_unregister_alg() may
|
||||
* run concurrently (as we haven't taken a reference to the algorithms on the
|
||||
* list), and crypto_unregister_alg() will remove the algorithm from whichever
|
||||
* list it happens to be on, while holding crypto_alg_sem. That's okay, since
|
||||
* in that case crypto_unregister_alg() will handle the crypto_alg_put().
|
||||
*/
|
||||
static void fips140_remove_final(struct list_head *list)
|
||||
{
|
||||
struct crypto_alg *alg;
|
||||
struct crypto_alg *n;
|
||||
|
||||
/*
|
||||
* We need to take crypto_alg_sem to safely traverse the list (see
|
||||
* comment above), but we have to drop it when doing each
|
||||
* crypto_alg_put() as that may take crypto_alg_sem again.
|
||||
*/
|
||||
down_write(&crypto_alg_sem);
|
||||
list_for_each_entry_safe(alg, n, list, cra_list) {
|
||||
list_del_init(&alg->cra_list);
|
||||
up_write(&crypto_alg_sem);
|
||||
|
||||
crypto_alg_put(alg);
|
||||
|
||||
down_write(&crypto_alg_sem);
|
||||
}
|
||||
up_write(&crypto_alg_sem);
|
||||
}
|
||||
|
||||
static void __init unregister_existing_fips140_algos(void)
|
||||
{
|
||||
struct crypto_alg *alg, *tmp;
|
||||
@ -152,25 +163,17 @@ static void __init unregister_existing_fips140_algos(void)
|
||||
* transformations. We will swap these out
|
||||
* later with integrity checked versions.
|
||||
*/
|
||||
pr_info("found already-live algorithm '%s' ('%s')\n",
|
||||
alg->cra_name, alg->cra_driver_name);
|
||||
list_move(&alg->cra_list,
|
||||
&unchecked_fips140_algos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We haven't taken a reference to the algorithms on the remove_list,
|
||||
* so technically, we may be competing with a concurrent invocation of
|
||||
* crypto_unregister_alg() here. Fortunately, crypto_unregister_alg()
|
||||
* just gives up with a warning if the algo that is being unregistered
|
||||
* has already disappeared, so this happens to be safe. That does mean
|
||||
* we need to hold on to the lock, to ensure that the algo is either on
|
||||
* the list or it is not, and not in some limbo state.
|
||||
*/
|
||||
crypto_remove_final(&remove_list);
|
||||
crypto_remove_final(&spawns);
|
||||
|
||||
up_write(&crypto_alg_sem);
|
||||
|
||||
fips140_remove_final(&remove_list);
|
||||
fips140_remove_final(&spawns);
|
||||
}
|
||||
|
||||
static void __init unapply_text_relocations(void *section, int section_size,
|
||||
@ -250,8 +253,8 @@ static bool __init check_fips140_module_hmac(void)
|
||||
textsize = &__fips140_text_end - &__fips140_text_start;
|
||||
rodatasize = &__fips140_rodata_end - &__fips140_rodata_start;
|
||||
|
||||
pr_warn("text size : 0x%x\n", textsize);
|
||||
pr_warn("rodata size: 0x%x\n", rodatasize);
|
||||
pr_info("text size : 0x%x\n", textsize);
|
||||
pr_info("rodata size: 0x%x\n", rodatasize);
|
||||
|
||||
textcopy = kmalloc(textsize + rodatasize, GFP_KERNEL);
|
||||
if (!textcopy) {
|
||||
@ -283,7 +286,7 @@ static bool __init check_fips140_module_hmac(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
pr_warn("using '%s' for integrity check\n",
|
||||
pr_info("using '%s' for integrity check\n",
|
||||
crypto_shash_driver_name(desc->tfm));
|
||||
|
||||
err = crypto_shash_setkey(desc->tfm, fips140_integ_hmac_key,
|
||||
@ -523,11 +526,12 @@ static bool update_fips140_library_routines(void)
|
||||
* let's disable CFI locally when handling the initcall array, to avoid
|
||||
* surpises.
|
||||
*/
|
||||
int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
|
||||
static int __init __attribute__((__no_sanitize__("cfi")))
|
||||
fips140_init(void)
|
||||
{
|
||||
const u32 *initcall;
|
||||
|
||||
pr_info("Loading FIPS 140 module\n");
|
||||
pr_info("loading module\n");
|
||||
|
||||
unregister_existing_fips140_algos();
|
||||
|
||||
@ -536,8 +540,17 @@ int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
|
||||
initcall < &__initcall_end_marker;
|
||||
initcall++) {
|
||||
int (*init)(void) = offset_to_ptr(initcall);
|
||||
int err = init();
|
||||
|
||||
init();
|
||||
/*
|
||||
* ENODEV is expected from initcalls that only register
|
||||
* algorithms that depend on non-present CPU features. Besides
|
||||
* that, errors aren't expected here.
|
||||
*/
|
||||
if (err && err != -ENODEV) {
|
||||
pr_err("initcall %ps() failed: %d\n", init, err);
|
||||
goto panic;
|
||||
}
|
||||
}
|
||||
|
||||
if (!update_live_fips140_algos())
|
||||
@ -563,12 +576,12 @@ int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
|
||||
*/
|
||||
|
||||
if (!check_fips140_module_hmac()) {
|
||||
pr_crit("FIPS 140 integrity check failed -- giving up!\n");
|
||||
pr_crit("integrity check failed -- giving up!\n");
|
||||
goto panic;
|
||||
}
|
||||
pr_info("integrity check passed\n");
|
||||
|
||||
pr_info("FIPS 140 integrity check successful\n");
|
||||
pr_info("FIPS 140 module successfully loaded\n");
|
||||
pr_info("module successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
panic:
|
||||
|
@ -64,6 +64,10 @@
|
||||
#include <trace/hooks/cpuidle_psci.h>
|
||||
#include <trace/hooks/fips140.h>
|
||||
#include <trace/hooks/remoteproc.h>
|
||||
#include <trace/hooks/shmem_fs.h>
|
||||
#include <trace/hooks/net.h>
|
||||
#include <trace/hooks/syscall_check.h>
|
||||
#include <trace/hooks/usb.h>
|
||||
|
||||
/*
|
||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||
@ -106,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
|
||||
@ -207,6 +212,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sdev);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_clock_scaling);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wake_up_sync);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get);
|
||||
@ -244,9 +250,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_module_permit_after_init);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_est_update);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_proc_show);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_mm);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_unmapped_area_from_anti_fragment_pool);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_from_fragment_pool);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exclude_reserved_zone);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_unmapped_area_include_reserved_zone);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_include_reserved_zone);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_slowpath);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mem);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_print_slabinfo_header);
|
||||
@ -310,6 +316,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmpressure);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_task_comm);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log);
|
||||
@ -339,3 +346,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_force_compatible_post);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_print_transaction_info);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_setscheduler_uclamp);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_file_open);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_suspend);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_resume);
|
||||
|
@ -212,6 +212,9 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
|
||||
* broadcast must be assigned after the vendor hook.
|
||||
*/
|
||||
trace_android_vh_cpu_idle_enter(&index, dev);
|
||||
if (index < 0)
|
||||
return index;
|
||||
|
||||
target_state = &drv->states[index];
|
||||
broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
|
||||
|
||||
@ -428,7 +431,7 @@ void cpuidle_uninstall_idle_handler(void)
|
||||
{
|
||||
if (enabled_devices) {
|
||||
initialized = 0;
|
||||
wake_up_all_idle_cpus();
|
||||
wake_up_all_online_idle_cpus();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -99,9 +99,10 @@ static struct sg_table *cma_heap_map_dma_buf(struct dma_buf_attachment *attachme
|
||||
{
|
||||
struct dma_heap_attachment *a = attachment->priv;
|
||||
struct sg_table *table = &a->table;
|
||||
int attrs = attachment->dma_map_attrs;
|
||||
int ret;
|
||||
|
||||
ret = dma_map_sgtable(attachment->dev, table, direction, 0);
|
||||
ret = dma_map_sgtable(attachment->dev, table, direction, attrs);
|
||||
if (ret)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
a->mapped = true;
|
||||
@ -113,9 +114,10 @@ static void cma_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
struct dma_heap_attachment *a = attachment->priv;
|
||||
int attrs = attachment->dma_map_attrs;
|
||||
|
||||
a->mapped = false;
|
||||
dma_unmap_sgtable(attachment->dev, table, direction, 0);
|
||||
dma_unmap_sgtable(attachment->dev, table, direction, attrs);
|
||||
}
|
||||
|
||||
static int cma_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
|
||||
|
@ -140,11 +140,11 @@ static struct sg_table *system_heap_map_dma_buf(struct dma_buf_attachment *attac
|
||||
{
|
||||
struct dma_heap_attachment *a = attachment->priv;
|
||||
struct sg_table *table = a->table;
|
||||
int attr = 0;
|
||||
int attr = attachment->dma_map_attrs;
|
||||
int ret;
|
||||
|
||||
if (a->uncached)
|
||||
attr = DMA_ATTR_SKIP_CPU_SYNC;
|
||||
attr |= DMA_ATTR_SKIP_CPU_SYNC;
|
||||
|
||||
ret = dma_map_sgtable(attachment->dev, table, direction, attr);
|
||||
if (ret)
|
||||
@ -159,10 +159,10 @@ static void system_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
struct dma_heap_attachment *a = attachment->priv;
|
||||
int attr = 0;
|
||||
int attr = attachment->dma_map_attrs;
|
||||
|
||||
if (a->uncached)
|
||||
attr = DMA_ATTR_SKIP_CPU_SYNC;
|
||||
attr |= DMA_ATTR_SKIP_CPU_SYNC;
|
||||
a->mapped = false;
|
||||
dma_unmap_sgtable(attachment->dev, table, direction, attr);
|
||||
}
|
||||
|
@ -50,20 +50,6 @@ struct redist_region {
|
||||
bool single_redist;
|
||||
};
|
||||
|
||||
struct gic_chip_data {
|
||||
struct fwnode_handle *fwnode;
|
||||
void __iomem *dist_base;
|
||||
struct redist_region *redist_regions;
|
||||
struct rdists rdists;
|
||||
struct irq_domain *domain;
|
||||
u64 redist_stride;
|
||||
u32 nr_redist_regions;
|
||||
u64 flags;
|
||||
bool has_rss;
|
||||
unsigned int ppi_nr;
|
||||
struct partition_desc **ppi_descs;
|
||||
};
|
||||
|
||||
static struct gic_chip_data gic_data __read_mostly;
|
||||
static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key);
|
||||
|
||||
|
@ -1817,6 +1817,7 @@ int of_add_property(struct device_node *np, struct property *prop)
|
||||
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_add_property);
|
||||
|
||||
int __of_remove_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
|
@ -1288,6 +1288,8 @@ static int ufshcd_devfreq_target(struct device *dev,
|
||||
struct list_head *clk_list = &hba->clk_list_head;
|
||||
struct ufs_clk_info *clki;
|
||||
unsigned long irq_flags;
|
||||
bool force_out = false;
|
||||
bool force_scaling = false;
|
||||
|
||||
if (!ufshcd_is_clkscaling_supported(hba))
|
||||
return -EINVAL;
|
||||
@ -1313,8 +1315,11 @@ static int ufshcd_devfreq_target(struct device *dev,
|
||||
scale_up = (*freq == clki->max_freq) ? true : false;
|
||||
if (!scale_up)
|
||||
*freq = clki->min_freq;
|
||||
|
||||
trace_android_vh_ufs_clock_scaling(hba, &force_out, &force_scaling, &scale_up);
|
||||
|
||||
/* Update the frequency */
|
||||
if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) {
|
||||
if (force_out || (!force_scaling && !ufshcd_is_devfreq_scaling_required(hba, scale_up))) {
|
||||
spin_unlock_irqrestore(hba->host->host_lock, irq_flags);
|
||||
ret = 0;
|
||||
goto out; /* no state change required */
|
||||
@ -2318,6 +2323,9 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
|
||||
int ret;
|
||||
unsigned long flags;
|
||||
|
||||
if (hba->quirks & UFSHCD_QUIRK_BROKEN_UIC_CMD)
|
||||
return 0;
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
mutex_lock(&hba->uic_cmd_mutex);
|
||||
ufshcd_add_delay_before_dme_cmd(hba);
|
||||
@ -2727,15 +2735,6 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
|
||||
WARN_ON(ufshcd_is_clkgating_allowed(hba) &&
|
||||
(hba->clk_gating.state != CLKS_ON));
|
||||
|
||||
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
|
||||
if (hba->pm_op_in_progress)
|
||||
set_host_byte(cmd, DID_BAD_TARGET);
|
||||
else
|
||||
err = SCSI_MLQUEUE_HOST_BUSY;
|
||||
ufshcd_release(hba);
|
||||
goto out;
|
||||
}
|
||||
|
||||
lrbp = &hba->lrb[tag];
|
||||
WARN_ON(lrbp->cmd);
|
||||
lrbp->cmd = cmd;
|
||||
@ -2948,11 +2947,6 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,
|
||||
req->timeout = msecs_to_jiffies(2 * timeout);
|
||||
blk_mq_start_request(req);
|
||||
|
||||
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
init_completion(&wait);
|
||||
lrbp = &hba->lrb[tag];
|
||||
WARN_ON(lrbp->cmd);
|
||||
@ -3115,14 +3109,14 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
|
||||
|
||||
BUG_ON(!hba);
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
if (!attr_val) {
|
||||
dev_err(hba->dev, "%s: attribute value required for opcode 0x%x\n",
|
||||
__func__, opcode);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
|
||||
mutex_lock(&hba->dev_cmd.lock);
|
||||
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
|
||||
selector);
|
||||
@ -3154,7 +3148,6 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&hba->dev_cmd.lock);
|
||||
out:
|
||||
ufshcd_release(hba);
|
||||
return err;
|
||||
}
|
||||
@ -3208,21 +3201,20 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
|
||||
|
||||
BUG_ON(!hba);
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
if (!desc_buf) {
|
||||
dev_err(hba->dev, "%s: descriptor buffer required for opcode 0x%x\n",
|
||||
__func__, opcode);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (*buf_len < QUERY_DESC_MIN_SIZE || *buf_len > QUERY_DESC_MAX_SIZE) {
|
||||
dev_err(hba->dev, "%s: descriptor buffer size (%d) is out of range\n",
|
||||
__func__, *buf_len);
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
|
||||
mutex_lock(&hba->dev_cmd.lock);
|
||||
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
|
||||
selector);
|
||||
@ -3257,7 +3249,6 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
|
||||
out_unlock:
|
||||
hba->dev_cmd.query.descriptor = NULL;
|
||||
mutex_unlock(&hba->dev_cmd.lock);
|
||||
out:
|
||||
ufshcd_release(hba);
|
||||
return err;
|
||||
}
|
||||
@ -6668,11 +6659,6 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
|
||||
tag = req->tag;
|
||||
WARN_ON_ONCE(!ufshcd_valid_tag(hba, tag));
|
||||
|
||||
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
init_completion(&wait);
|
||||
lrbp = &hba->lrb[tag];
|
||||
WARN_ON(lrbp->cmd);
|
||||
@ -6740,7 +6726,6 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
blk_put_request(req);
|
||||
out_unlock:
|
||||
up_read(&hba->clk_scaling_lock);
|
||||
@ -6879,7 +6864,8 @@ static void ufshcd_set_req_abort_skip(struct ufs_hba *hba, unsigned long bitmap)
|
||||
|
||||
/**
|
||||
* ufshcd_try_to_abort_task - abort a specific task
|
||||
* @cmd: SCSI command pointer
|
||||
* @hba: Pointer to adapter instance
|
||||
* @tag: Task tag/index to be aborted
|
||||
*
|
||||
* Abort the pending command in device by sending UFS_ABORT_TASK task management
|
||||
* command, and in host controller by clearing the door-bell register. There can
|
||||
@ -6969,7 +6955,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
struct ufs_hba *hba;
|
||||
unsigned long flags;
|
||||
unsigned int tag;
|
||||
int err = 0;
|
||||
int err = FAILED, res;
|
||||
struct ufshcd_lrb *lrbp;
|
||||
u32 reg;
|
||||
|
||||
@ -6986,12 +6972,12 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
|
||||
ufshcd_hold(hba, false);
|
||||
reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
|
||||
/* If command is already aborted/completed, return SUCCESS */
|
||||
/* If command is already aborted/completed, return FAILED. */
|
||||
if (!(test_bit(tag, &hba->outstanding_reqs))) {
|
||||
dev_err(hba->dev,
|
||||
"%s: cmd at tag %d already completed, outstanding=0x%lx, doorbell=0x%x\n",
|
||||
__func__, tag, hba->outstanding_reqs, reg);
|
||||
goto out;
|
||||
goto release;
|
||||
}
|
||||
|
||||
/* Print Transfer Request of aborted task */
|
||||
@ -7020,7 +7006,8 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
dev_err(hba->dev,
|
||||
"%s: cmd was completed, but without a notifying intr, tag = %d",
|
||||
__func__, tag);
|
||||
goto cleanup;
|
||||
__ufshcd_transfer_req_compl(hba, 1UL << tag);
|
||||
goto release;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -7033,36 +7020,32 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
*/
|
||||
if (lrbp->lun == UFS_UPIU_UFS_DEVICE_WLUN) {
|
||||
ufshcd_update_evt_hist(hba, UFS_EVT_ABORT, lrbp->lun);
|
||||
__ufshcd_transfer_req_compl(hba, (1UL << tag));
|
||||
set_bit(tag, &hba->outstanding_reqs);
|
||||
|
||||
spin_lock_irqsave(host->host_lock, flags);
|
||||
hba->force_reset = true;
|
||||
ufshcd_schedule_eh_work(hba);
|
||||
spin_unlock_irqrestore(host->host_lock, flags);
|
||||
goto out;
|
||||
goto release;
|
||||
}
|
||||
|
||||
/* Skip task abort in case previous aborts failed and report failure */
|
||||
if (lrbp->req_abort_skip)
|
||||
err = -EIO;
|
||||
else
|
||||
err = ufshcd_try_to_abort_task(hba, tag);
|
||||
|
||||
if (!err) {
|
||||
cleanup:
|
||||
__ufshcd_transfer_req_compl(hba, (1UL << tag));
|
||||
out:
|
||||
err = SUCCESS;
|
||||
} else {
|
||||
dev_err(hba->dev, "%s: failed with err %d\n", __func__, err);
|
||||
if (lrbp->req_abort_skip) {
|
||||
dev_err(hba->dev, "%s: skipping abort\n", __func__);
|
||||
ufshcd_set_req_abort_skip(hba, hba->outstanding_reqs);
|
||||
err = FAILED;
|
||||
goto release;
|
||||
}
|
||||
|
||||
/*
|
||||
* This ufshcd_release() corresponds to the original scsi cmd that got
|
||||
* aborted here (as we won't get any IRQ for it).
|
||||
*/
|
||||
res = ufshcd_try_to_abort_task(hba, tag);
|
||||
if (res) {
|
||||
dev_err(hba->dev, "%s: failed with err %d\n", __func__, res);
|
||||
ufshcd_set_req_abort_skip(hba, hba->outstanding_reqs);
|
||||
goto release;
|
||||
}
|
||||
|
||||
err = SUCCESS;
|
||||
|
||||
release:
|
||||
/* Matches the ufshcd_hold() call at the start of this function. */
|
||||
ufshcd_release(hba);
|
||||
return err;
|
||||
}
|
||||
@ -7981,6 +7964,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (hba->quirks & UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION)
|
||||
goto out;
|
||||
|
||||
/* Debug counters initialization */
|
||||
ufshcd_clear_dbg_ufs_stats(hba);
|
||||
|
||||
|
@ -565,6 +565,18 @@ enum ufshcd_quirks {
|
||||
*/
|
||||
UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE = 1 << 14,
|
||||
|
||||
/*
|
||||
* This quirk needs to be enabled if the host controller does not
|
||||
* support UIC command
|
||||
*/
|
||||
UFSHCD_QUIRK_BROKEN_UIC_CMD = 1 << 15,
|
||||
|
||||
/*
|
||||
* This quirk needs to be enabled if the host controller cannot
|
||||
* support interface configuration.
|
||||
*/
|
||||
UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION = 1 << 16,
|
||||
|
||||
/*
|
||||
* This quirk needs to be enabled if the host controller supports inline
|
||||
* encryption, but it needs to initialize the crypto capabilities in a
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include "usb.h"
|
||||
|
||||
#include <trace/hooks/usb.h>
|
||||
|
||||
/*
|
||||
* Adds a new dynamic USBdevice ID to this driver,
|
||||
@ -1403,11 +1404,16 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
|
||||
int status = 0;
|
||||
int i = 0, n = 0;
|
||||
struct usb_interface *intf;
|
||||
int bypass = 0;
|
||||
|
||||
if (udev->state == USB_STATE_NOTATTACHED ||
|
||||
udev->state == USB_STATE_SUSPENDED)
|
||||
goto done;
|
||||
|
||||
trace_android_vh_usb_dev_suspend(udev, msg, &bypass);
|
||||
if (bypass)
|
||||
goto done;
|
||||
|
||||
/* Suspend all the interfaces and then udev itself */
|
||||
if (udev->actconfig) {
|
||||
n = udev->actconfig->desc.bNumInterfaces;
|
||||
@ -1504,11 +1510,17 @@ static int usb_resume_both(struct usb_device *udev, pm_message_t msg)
|
||||
int status = 0;
|
||||
int i;
|
||||
struct usb_interface *intf;
|
||||
int bypass = 0;
|
||||
|
||||
if (udev->state == USB_STATE_NOTATTACHED) {
|
||||
status = -ENODEV;
|
||||
goto done;
|
||||
}
|
||||
|
||||
trace_android_vh_usb_dev_resume(udev, msg, &bypass);
|
||||
if (bypass)
|
||||
goto done;
|
||||
|
||||
udev->can_submit = 1;
|
||||
|
||||
/* Resume the device */
|
||||
|
@ -879,8 +879,6 @@ struct dwc3_hwparams {
|
||||
/* HWPARAMS0 */
|
||||
#define DWC3_MODE(n) ((n) & 0x7)
|
||||
|
||||
#define DWC3_MDWIDTH(n) (((n) & 0xff00) >> 8)
|
||||
|
||||
/* HWPARAMS1 */
|
||||
#define DWC3_NUM_INT(n) (((n) & (0x3f << 15)) >> 15)
|
||||
|
||||
@ -1493,6 +1491,23 @@ u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type);
|
||||
(!(_ip##_VERSIONTYPE_##_to) || \
|
||||
dwc->version_type <= _ip##_VERSIONTYPE_##_to))
|
||||
|
||||
/**
|
||||
* dwc3_mdwidth - get MDWIDTH value in bits
|
||||
* @dwc: pointer to our context structure
|
||||
*
|
||||
* Return MDWIDTH configuration value in bits.
|
||||
*/
|
||||
static inline u32 dwc3_mdwidth(struct dwc3 *dwc)
|
||||
{
|
||||
u32 mdwidth;
|
||||
|
||||
mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
|
||||
return mdwidth;
|
||||
}
|
||||
|
||||
bool dwc3_has_imod(struct dwc3 *dwc);
|
||||
|
||||
int dwc3_event_buffers_setup(struct dwc3 *dwc);
|
||||
|
@ -638,16 +638,14 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
|
||||
struct dwc3_ep *dep = s->private;
|
||||
struct dwc3 *dwc = dep->dwc;
|
||||
unsigned long flags;
|
||||
int mdwidth;
|
||||
u32 mdwidth;
|
||||
u32 val;
|
||||
|
||||
spin_lock_irqsave(&dwc->lock, flags);
|
||||
val = dwc3_core_fifo_space(dep, DWC3_TXFIFO);
|
||||
|
||||
/* Convert to bytes */
|
||||
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
mdwidth = dwc3_mdwidth(dwc);
|
||||
|
||||
val *= mdwidth;
|
||||
val >>= 3;
|
||||
@ -662,16 +660,14 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
|
||||
struct dwc3_ep *dep = s->private;
|
||||
struct dwc3 *dwc = dep->dwc;
|
||||
unsigned long flags;
|
||||
int mdwidth;
|
||||
u32 mdwidth;
|
||||
u32 val;
|
||||
|
||||
spin_lock_irqsave(&dwc->lock, flags);
|
||||
val = dwc3_core_fifo_space(dep, DWC3_RXFIFO);
|
||||
|
||||
/* Convert to bytes */
|
||||
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
mdwidth = dwc3_mdwidth(dwc);
|
||||
|
||||
val *= mdwidth;
|
||||
val >>= 3;
|
||||
|
@ -2367,9 +2367,7 @@ static void dwc3_gadget_setup_nump(struct dwc3 *dwc)
|
||||
u32 reg;
|
||||
|
||||
ram2_depth = DWC3_GHWPARAMS7_RAM2_DEPTH(dwc->hwparams.hwparams7);
|
||||
mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
mdwidth = dwc3_mdwidth(dwc);
|
||||
|
||||
nump = ((ram2_depth * mdwidth / 8) - 24 - 16) / 1024;
|
||||
nump = min_t(u32, nump, 16);
|
||||
@ -2632,12 +2630,10 @@ static int dwc3_gadget_init_control_endpoint(struct dwc3_ep *dep)
|
||||
static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
|
||||
{
|
||||
struct dwc3 *dwc = dep->dwc;
|
||||
int mdwidth;
|
||||
u32 mdwidth;
|
||||
int size;
|
||||
|
||||
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
mdwidth = dwc3_mdwidth(dwc);
|
||||
|
||||
/* MDWIDTH is represented in bits, we need it in bytes */
|
||||
mdwidth /= 8;
|
||||
@ -2679,12 +2675,10 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
|
||||
static int dwc3_gadget_init_out_endpoint(struct dwc3_ep *dep)
|
||||
{
|
||||
struct dwc3 *dwc = dep->dwc;
|
||||
int mdwidth;
|
||||
u32 mdwidth;
|
||||
int size;
|
||||
|
||||
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
|
||||
if (DWC3_IP_IS(DWC32))
|
||||
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
|
||||
mdwidth = dwc3_mdwidth(dwc);
|
||||
|
||||
/* MDWIDTH is represented in bits, convert to bytes */
|
||||
mdwidth /= 8;
|
||||
|
@ -1534,18 +1534,28 @@ static void configfs_composite_unbind(struct usb_gadget *gadget)
|
||||
static int android_setup(struct usb_gadget *gadget,
|
||||
const struct usb_ctrlrequest *c)
|
||||
{
|
||||
struct usb_composite_dev *cdev = get_gadget_data(gadget);
|
||||
struct usb_composite_dev *cdev;
|
||||
unsigned long flags;
|
||||
struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
|
||||
struct gadget_info *gi;
|
||||
int value = -EOPNOTSUPP;
|
||||
struct usb_function_instance *fi;
|
||||
|
||||
spin_lock_irqsave(&cdev->lock, flags);
|
||||
if (!android_device)
|
||||
return 0;
|
||||
|
||||
gi = dev_get_drvdata(android_device);
|
||||
spin_lock_irqsave(&gi->spinlock, flags);
|
||||
cdev = get_gadget_data(gadget);
|
||||
if (!cdev || gi->unbind) {
|
||||
spin_unlock_irqrestore(&gi->spinlock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!gi->connected) {
|
||||
gi->connected = 1;
|
||||
schedule_work(&gi->work);
|
||||
}
|
||||
spin_unlock_irqrestore(&cdev->lock, flags);
|
||||
|
||||
list_for_each_entry(fi, &gi->available_func, cfs_list) {
|
||||
if (fi != NULL && fi->f != NULL && fi->f->setup != NULL) {
|
||||
value = fi->f->setup(fi->f, c);
|
||||
@ -1562,12 +1572,11 @@ static int android_setup(struct usb_gadget *gadget,
|
||||
if (value < 0)
|
||||
value = composite_setup(gadget, c);
|
||||
|
||||
spin_lock_irqsave(&cdev->lock, flags);
|
||||
if (c->bRequest == USB_REQ_SET_CONFIGURATION &&
|
||||
cdev->config) {
|
||||
schedule_work(&gi->work);
|
||||
}
|
||||
spin_unlock_irqrestore(&cdev->lock, flags);
|
||||
spin_unlock_irqrestore(&gi->spinlock, flags);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
@ -3876,6 +3876,8 @@ int f2fs_migrate_page(struct address_space *mapping,
|
||||
get_page(newpage);
|
||||
}
|
||||
|
||||
/* guarantee to start from no stale private field */
|
||||
set_page_private(newpage, 0);
|
||||
if (PagePrivate(page)) {
|
||||
set_page_private(newpage, page_private(page));
|
||||
SetPagePrivate(newpage);
|
||||
|
@ -1329,7 +1329,8 @@ enum {
|
||||
#define PAGE_PRIVATE_GET_FUNC(name, flagname) \
|
||||
static inline bool page_private_##name(struct page *page) \
|
||||
{ \
|
||||
return test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
|
||||
return PagePrivate(page) && \
|
||||
test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
|
||||
test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
|
||||
}
|
||||
|
||||
@ -1339,6 +1340,7 @@ static inline void set_page_private_##name(struct page *page) \
|
||||
if (!PagePrivate(page)) { \
|
||||
get_page(page); \
|
||||
SetPagePrivate(page); \
|
||||
set_page_private(page, 0); \
|
||||
} \
|
||||
set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
|
||||
set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
|
||||
@ -1390,6 +1392,7 @@ static inline void set_page_private_data(struct page *page, unsigned long data)
|
||||
if (!PagePrivate(page)) {
|
||||
get_page(page);
|
||||
SetPagePrivate(page);
|
||||
set_page_private(page, 0);
|
||||
}
|
||||
set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page));
|
||||
page_private(page) |= data << PAGE_PRIVATE_MAX;
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <linux/compat.h>
|
||||
|
||||
#include "internal.h"
|
||||
#include <trace/hooks/syscall_check.h>
|
||||
|
||||
int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
||||
struct file *filp)
|
||||
@ -800,6 +801,7 @@ static int do_dentry_open(struct file *f,
|
||||
error = -ENODEV;
|
||||
goto cleanup_all;
|
||||
}
|
||||
trace_android_vh_check_file_open(f);
|
||||
|
||||
error = security_file_open(f);
|
||||
if (error)
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <linux/pstore_ram.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_reserved_mem.h>
|
||||
#include "internal.h"
|
||||
|
||||
#define RAMOOPS_KERNMSG_HDR "===="
|
||||
@ -633,21 +634,21 @@ static int ramoops_parse_dt(struct platform_device *pdev,
|
||||
{
|
||||
struct device_node *of_node = pdev->dev.of_node;
|
||||
struct device_node *parent_node;
|
||||
struct resource *res;
|
||||
struct reserved_mem *rmem;
|
||||
u32 value;
|
||||
int ret;
|
||||
|
||||
dev_dbg(&pdev->dev, "using Device Tree\n");
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res) {
|
||||
rmem = of_reserved_mem_lookup(of_node);
|
||||
if (!rmem) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to locate DT /reserved-memory resource\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pdata->mem_size = resource_size(res);
|
||||
pdata->mem_address = res->start;
|
||||
pdata->mem_size = rmem->size;
|
||||
pdata->mem_address = rmem->base;
|
||||
/*
|
||||
* Setting "unbuffered" is deprecated and will be ignored if
|
||||
* "mem_type" is also specified.
|
||||
|
@ -2,7 +2,15 @@
|
||||
#ifndef _FIPS_H
|
||||
#define _FIPS_H
|
||||
|
||||
#ifdef CONFIG_CRYPTO_FIPS
|
||||
#ifdef BUILD_FIPS140_KO
|
||||
/*
|
||||
* In fips140.ko, enable the behavior that the upstream fips_enabled flag
|
||||
* controls, such as the XTS weak key check.
|
||||
*/
|
||||
#define fips_enabled 1
|
||||
#define CONFIG_CRYPTO_FIPS 1
|
||||
|
||||
#elif defined(CONFIG_CRYPTO_FIPS)
|
||||
extern int fips_enabled;
|
||||
extern struct atomic_notifier_head fips_fail_notif_chain;
|
||||
|
||||
|
@ -693,6 +693,20 @@ int its_init(struct fwnode_handle *handle, struct rdists *rdists,
|
||||
struct irq_domain *domain);
|
||||
int mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent);
|
||||
|
||||
struct gic_chip_data {
|
||||
struct fwnode_handle *fwnode;
|
||||
void __iomem *dist_base;
|
||||
struct redist_region *redist_regions;
|
||||
struct rdists rdists;
|
||||
struct irq_domain *domain;
|
||||
u64 redist_stride;
|
||||
u32 nr_redist_regions;
|
||||
u64 flags;
|
||||
bool has_rss;
|
||||
unsigned int ppi_nr;
|
||||
struct partition_desc **ppi_descs;
|
||||
};
|
||||
|
||||
static inline bool gic_enable_sre(void)
|
||||
{
|
||||
u32 val;
|
||||
|
@ -441,10 +441,31 @@ static inline bool mem_cgroup_below_min(struct mem_cgroup *memcg)
|
||||
page_counter_read(&memcg->memory);
|
||||
}
|
||||
|
||||
int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask);
|
||||
int __mem_cgroup_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask);
|
||||
static inline int mem_cgroup_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return 0;
|
||||
return __mem_cgroup_charge(page, mm, gfp_mask);
|
||||
}
|
||||
|
||||
void mem_cgroup_uncharge(struct page *page);
|
||||
void mem_cgroup_uncharge_list(struct list_head *page_list);
|
||||
void __mem_cgroup_uncharge(struct page *page);
|
||||
static inline void mem_cgroup_uncharge(struct page *page)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
__mem_cgroup_uncharge(page);
|
||||
}
|
||||
|
||||
void __mem_cgroup_uncharge_list(struct list_head *page_list);
|
||||
static inline void mem_cgroup_uncharge_list(struct list_head *page_list)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
__mem_cgroup_uncharge_list(page_list);
|
||||
}
|
||||
|
||||
void mem_cgroup_migrate(struct page *oldpage, struct page *newpage);
|
||||
|
||||
|
@ -756,8 +756,13 @@ struct inode;
|
||||
*/
|
||||
static inline int put_page_testzero(struct page *page)
|
||||
{
|
||||
int ret;
|
||||
|
||||
VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
|
||||
return page_ref_dec_and_test(page);
|
||||
ret = page_ref_dec_and_test(page);
|
||||
page_pinner_put_page(page);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1233,8 +1238,6 @@ static inline void put_page(struct page *page)
|
||||
{
|
||||
page = compound_head(page);
|
||||
|
||||
page_pinner_migration_failed(page);
|
||||
|
||||
/*
|
||||
* For devmap managed pages we need to catch refcount transition from
|
||||
* 2 to 1, when refcount reach one it means the page is free and we
|
||||
@ -3358,6 +3361,8 @@ unsigned long wp_shared_mapping_range(struct address_space *mapping,
|
||||
|
||||
extern int sysctl_nr_trim_pages;
|
||||
extern bool pte_map_lock_addr(struct vm_fault *vmf, unsigned long addr);
|
||||
extern int reclaim_shmem_address_space(struct address_space *mapping);
|
||||
extern int reclaim_pages_from_list(struct list_head *page_list);
|
||||
|
||||
/**
|
||||
* seal_check_future_write - Check for F_SEAL_FUTURE_WRITE flag and handle it
|
||||
|
@ -931,6 +931,11 @@ static inline int of_machine_is_compatible(const char *compat)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int of_add_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int of_remove_property(struct device_node *np, struct property *prop)
|
||||
{
|
||||
return 0;
|
||||
|
@ -39,7 +39,15 @@ static inline void dump_page_pinner(struct page *page)
|
||||
__dump_page_pinner(page);
|
||||
}
|
||||
|
||||
static inline void page_pinner_migration_failed(struct page *page)
|
||||
static inline void page_pinner_put_page(struct page *page)
|
||||
{
|
||||
if (!static_branch_unlikely(&failure_tracking))
|
||||
return;
|
||||
|
||||
__page_pinner_migration_failed(page);
|
||||
}
|
||||
|
||||
static inline void page_pinner_failure_detect(struct page *page)
|
||||
{
|
||||
if (!static_branch_unlikely(&failure_tracking))
|
||||
return;
|
||||
@ -67,7 +75,10 @@ static inline void set_page_pinner(struct page *page, unsigned int order)
|
||||
static inline void dump_page_pinner(struct page *page)
|
||||
{
|
||||
}
|
||||
static inline void page_pinner_migration_failed(struct page *page)
|
||||
static inline void page_pinner_put_page(struct page *page)
|
||||
{
|
||||
}
|
||||
static inline void page_pinner_failure_detect(struct page *page)
|
||||
{
|
||||
}
|
||||
static inline void page_pinner_mark_migration_failed_pages(struct list_head *page_list)
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include <linux/netfilter/nf_conntrack_common.h>
|
||||
#endif
|
||||
#include <linux/android_kabi.h>
|
||||
#include <linux/android_vendor.h>
|
||||
|
||||
/* The interface for checksum offload between the stack and networking drivers
|
||||
* is as follows...
|
||||
@ -532,6 +533,8 @@ struct skb_shared_info {
|
||||
* remains valid until skb destructor */
|
||||
void * destructor_arg;
|
||||
|
||||
ANDROID_OEM_DATA_ARRAY(1, 3);
|
||||
|
||||
/* must be last field, see pskb_expand_head() */
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
};
|
||||
|
@ -127,6 +127,7 @@ int smp_call_function_any(const struct cpumask *mask,
|
||||
|
||||
void kick_all_cpus_sync(void);
|
||||
void wake_up_all_idle_cpus(void);
|
||||
void wake_up_all_online_idle_cpus(void);
|
||||
|
||||
/*
|
||||
* Generic and arch helpers
|
||||
@ -182,6 +183,7 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func,
|
||||
|
||||
static inline void kick_all_cpus_sync(void) { }
|
||||
static inline void wake_up_all_idle_cpus(void) { }
|
||||
static inline void wake_up_all_online_idle_cpus(void) { }
|
||||
|
||||
#ifdef CONFIG_UP_LATE_INIT
|
||||
extern void __init up_late_init(void);
|
||||
|
@ -695,7 +695,13 @@ static inline int mem_cgroup_swappiness(struct mem_cgroup *mem)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SWAP) && defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
|
||||
extern void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask);
|
||||
extern void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask);
|
||||
static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
__cgroup_throttle_swaprate(page, gfp_mask);
|
||||
}
|
||||
#else
|
||||
static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
|
||||
{
|
||||
@ -704,8 +710,22 @@ static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
|
||||
|
||||
#ifdef CONFIG_MEMCG_SWAP
|
||||
extern void mem_cgroup_swapout(struct page *page, swp_entry_t entry);
|
||||
extern int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry);
|
||||
extern void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages);
|
||||
extern int __mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry);
|
||||
static inline int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return 0;
|
||||
return __mem_cgroup_try_charge_swap(page, entry);
|
||||
}
|
||||
|
||||
extern void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages);
|
||||
static inline void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
__mem_cgroup_uncharge_swap(entry, nr_pages);
|
||||
}
|
||||
|
||||
extern long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg);
|
||||
extern bool mem_cgroup_swap_full(struct page *page);
|
||||
#else
|
||||
|
@ -54,14 +54,14 @@ DECLARE_HOOK(android_vh_meminfo_proc_show,
|
||||
DECLARE_HOOK(android_vh_exit_mm,
|
||||
TP_PROTO(struct mm_struct *mm),
|
||||
TP_ARGS(mm));
|
||||
DECLARE_HOOK(android_vh_get_unmapped_area_from_anti_fragment_pool,
|
||||
DECLARE_HOOK(android_vh_get_from_fragment_pool,
|
||||
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
|
||||
unsigned long *addr),
|
||||
TP_ARGS(mm, info, addr));
|
||||
DECLARE_HOOK(android_vh_exclude_reserved_zone,
|
||||
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info),
|
||||
TP_ARGS(mm, info));
|
||||
DECLARE_HOOK(android_vh_get_unmapped_area_include_reserved_zone,
|
||||
DECLARE_HOOK(android_vh_include_reserved_zone,
|
||||
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
|
||||
unsigned long *addr),
|
||||
TP_ARGS(mm, info, addr));
|
||||
@ -97,6 +97,26 @@ DECLARE_HOOK(android_vh_show_stack_hash,
|
||||
DECLARE_HOOK(android_vh_save_track_hash,
|
||||
TP_PROTO(bool alloc, unsigned long p),
|
||||
TP_ARGS(alloc, p));
|
||||
struct mem_cgroup;
|
||||
DECLARE_HOOK(android_vh_vmpressure,
|
||||
TP_PROTO(struct mem_cgroup *memcg, bool *bypass),
|
||||
TP_ARGS(memcg, bypass));
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_alloc,
|
||||
TP_PROTO(struct mem_cgroup *memcg),
|
||||
TP_ARGS(memcg));
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_free,
|
||||
TP_PROTO(struct mem_cgroup *memcg),
|
||||
TP_ARGS(memcg));
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
|
||||
TP_PROTO(struct mem_cgroup *memcg),
|
||||
TP_ARGS(memcg));
|
||||
struct cgroup_subsys_state;
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_css_online,
|
||||
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
|
||||
TP_ARGS(css, memcg));
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
|
||||
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
|
||||
TP_ARGS(css, memcg));
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
#endif /* _TRACE_HOOK_MM_H */
|
||||
|
25
include/trace/hooks/net.h
Normal file
25
include/trace/hooks/net.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM net
|
||||
#define TRACE_INCLUDE_PATH trace/hooks
|
||||
|
||||
#if !defined(_TRACE_HOOK_NET_VH_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HOOK_NET_VH_H
|
||||
#include <linux/tracepoint.h>
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
|
||||
struct packet_type;
|
||||
struct list_head;
|
||||
struct sk_buff;
|
||||
DECLARE_HOOK(android_vh_ptype_head,
|
||||
TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt),
|
||||
TP_ARGS(pt, vendor_pt));
|
||||
DECLARE_HOOK(android_vh_kfree_skb,
|
||||
TP_PROTO(struct sk_buff *skb), TP_ARGS(skb));
|
||||
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
#endif /* _TRACE_HOOK_NET_VH_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
17
include/trace/hooks/shmem_fs.h
Normal file
17
include/trace/hooks/shmem_fs.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM shmem_fs
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH trace/hooks
|
||||
#if !defined(_TRACE_HOOK_SHMEM_FS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HOOK_SHMEM_FS_H
|
||||
#include <linux/tracepoint.h>
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
|
||||
struct page;
|
||||
DECLARE_HOOK(android_vh_shmem_alloc_page,
|
||||
TP_PROTO(struct page **page),
|
||||
TP_ARGS(page));
|
||||
#endif /* _TRACE_HOOK_SHMEM_FS_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
31
include/trace/hooks/syscall_check.h
Normal file
31
include/trace/hooks/syscall_check.h
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM syscall_check
|
||||
|
||||
#define TRACE_INCLUDE_PATH trace/hooks
|
||||
#if !defined(_TRACE_HOOK_SYSCALL_CHECK_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HOOK_SYSCALL_CHECK_H
|
||||
#include <linux/tracepoint.h>
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
/*
|
||||
* Following tracepoints are not exported in tracefs and provide a
|
||||
* mechanism for vendor modules to hook and extend functionality
|
||||
*/
|
||||
struct file;
|
||||
union bpf_attr;
|
||||
DECLARE_HOOK(android_vh_check_mmap_file,
|
||||
TP_PROTO(const struct file *file, unsigned long prot,
|
||||
unsigned long flag, unsigned long ret),
|
||||
TP_ARGS(file, prot, flag, ret));
|
||||
|
||||
DECLARE_HOOK(android_vh_check_file_open,
|
||||
TP_PROTO(const struct file *file),
|
||||
TP_ARGS(file));
|
||||
|
||||
DECLARE_HOOK(android_vh_check_bpf_syscall,
|
||||
TP_PROTO(int cmd, const union bpf_attr *attr, unsigned int size),
|
||||
TP_ARGS(cmd, attr, size));
|
||||
|
||||
#endif /* _TRACE_HOOK_SYSCALL_CHECK_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
@ -55,6 +55,9 @@ DECLARE_HOOK(android_vh_ufs_update_sdev,
|
||||
TP_PROTO(struct scsi_device *sdev),
|
||||
TP_ARGS(sdev));
|
||||
|
||||
DECLARE_HOOK(android_vh_ufs_clock_scaling,
|
||||
TP_PROTO(struct ufs_hba *hba, bool *force_out, bool *force_scaling, bool *scale_up),
|
||||
TP_ARGS(hba, force_out, force_scaling, scale_up));
|
||||
#endif /* _TRACE_HOOK_UFSHCD_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
27
include/trace/hooks/usb.h
Normal file
27
include/trace/hooks/usb.h
Normal file
@ -0,0 +1,27 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM usb
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH trace/hooks
|
||||
#if !defined(_TRACE_HOOK_USB_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HOOK_USB_H
|
||||
#include <linux/tracepoint.h>
|
||||
#include <linux/usb.h>
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
/*
|
||||
* Following tracepoints are not exported in tracefs and provide a
|
||||
* mechanism for vendor modules to hook and extend functionality
|
||||
*/
|
||||
|
||||
DECLARE_HOOK(android_vh_usb_dev_suspend,
|
||||
TP_PROTO(struct usb_device *udev, pm_message_t msg, int *bypass),
|
||||
TP_ARGS(udev, msg, bypass));
|
||||
|
||||
DECLARE_HOOK(android_vh_usb_dev_resume,
|
||||
TP_PROTO(struct usb_device *udev, pm_message_t msg, int *bypass),
|
||||
TP_ARGS(udev, msg, bypass));
|
||||
|
||||
#endif /* _TRACE_HOOK_USB_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
@ -32,6 +32,8 @@
|
||||
#include <linux/bpf-netns.h>
|
||||
#include <linux/rcupdate_trace.h>
|
||||
|
||||
#include <trace/hooks/syscall_check.h>
|
||||
|
||||
#define IS_FD_ARRAY(map) ((map)->map_type == BPF_MAP_TYPE_PERF_EVENT_ARRAY || \
|
||||
(map)->map_type == BPF_MAP_TYPE_CGROUP_ARRAY || \
|
||||
(map)->map_type == BPF_MAP_TYPE_ARRAY_OF_MAPS)
|
||||
@ -4374,6 +4376,8 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz
|
||||
if (copy_from_user(&attr, uattr, size) != 0)
|
||||
return -EFAULT;
|
||||
|
||||
trace_android_vh_check_bpf_syscall(cmd, &attr, size);
|
||||
|
||||
err = security_bpf(cmd, &attr, size);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
@ -4123,6 +4123,7 @@ int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts)
|
||||
cft->flags |= __CFTYPE_NOT_ON_DFL;
|
||||
return cgroup_add_cftypes(ss, cfts);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cgroup_add_legacy_cftypes);
|
||||
|
||||
/**
|
||||
* cgroup_file_notify - generate a file modified event for a cgroup_file
|
||||
|
@ -121,6 +121,8 @@
|
||||
*/
|
||||
#define MAX_THREADS FUTEX_TID_MASK
|
||||
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(task_newtask);
|
||||
|
||||
/*
|
||||
* Protected counters by write_lock_irq(&tasklist_lock)
|
||||
*/
|
||||
|
21
kernel/smp.c
21
kernel/smp.c
@ -967,6 +967,27 @@ void wake_up_all_idle_cpus(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wake_up_all_idle_cpus);
|
||||
|
||||
/**
|
||||
* wake_up_all_online_idle_cpus - break all online cpus out of idle
|
||||
* wake_up_all_online_idle_cpus try to break all online cpus which is in idle
|
||||
* state even including idle polling cpus, for non-idle cpus, we will do nothing
|
||||
* for them.
|
||||
*/
|
||||
void wake_up_all_online_idle_cpus(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
preempt_disable();
|
||||
for_each_online_cpu(cpu) {
|
||||
if (cpu == smp_processor_id())
|
||||
continue;
|
||||
|
||||
wake_up_if_idle(cpu);
|
||||
}
|
||||
preempt_enable();
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wake_up_all_online_idle_cpus);
|
||||
|
||||
/**
|
||||
* smp_call_on_cpu - Call a function on a specific cpu
|
||||
*
|
||||
|
@ -38,12 +38,8 @@ EXPORT_SYMBOL_GPL(debug_locks_silent);
|
||||
*/
|
||||
int debug_locks_off(void)
|
||||
{
|
||||
if (debug_locks && __debug_locks_off()) {
|
||||
if (!debug_locks_silent) {
|
||||
console_verbose();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (debug_locks && __debug_locks_off() && !debug_locks_silent)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(debug_locks_off);
|
||||
|
@ -67,6 +67,7 @@
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <trace/events/vmscan.h>
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
struct cgroup_subsys memory_cgrp_subsys __read_mostly;
|
||||
EXPORT_SYMBOL(memory_cgrp_subsys);
|
||||
@ -5148,6 +5149,7 @@ static DEFINE_IDR(mem_cgroup_idr);
|
||||
static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
|
||||
{
|
||||
if (memcg->id.id > 0) {
|
||||
trace_android_vh_mem_cgroup_id_remove(memcg);
|
||||
idr_remove(&mem_cgroup_idr, memcg->id.id);
|
||||
memcg->id.id = 0;
|
||||
}
|
||||
@ -5185,6 +5187,7 @@ struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
|
||||
WARN_ON_ONCE(!rcu_read_lock_held());
|
||||
return idr_find(&mem_cgroup_idr, id);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mem_cgroup_from_id);
|
||||
|
||||
static int alloc_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
|
||||
{
|
||||
@ -5244,6 +5247,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
|
||||
{
|
||||
int node;
|
||||
|
||||
trace_android_vh_mem_cgroup_free(memcg);
|
||||
for_each_node(node)
|
||||
free_mem_cgroup_per_node_info(memcg, node);
|
||||
free_percpu(memcg->vmstats_percpu);
|
||||
@ -5327,6 +5331,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
|
||||
memcg->deferred_split_queue.split_queue_len = 0;
|
||||
#endif
|
||||
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
|
||||
trace_android_vh_mem_cgroup_alloc(memcg);
|
||||
return memcg;
|
||||
fail:
|
||||
mem_cgroup_id_remove(memcg);
|
||||
@ -5416,6 +5421,7 @@ static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
|
||||
/* Online state pins memcg ID, memcg ID pins CSS */
|
||||
refcount_set(&memcg->id.ref, 1);
|
||||
css_get(css);
|
||||
trace_android_vh_mem_cgroup_css_online(css, memcg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5424,6 +5430,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
||||
struct mem_cgroup_event *event, *tmp;
|
||||
|
||||
trace_android_vh_mem_cgroup_css_offline(css, memcg);
|
||||
/*
|
||||
* Unregister events and notify userspace.
|
||||
* Notify userspace about cgroup removing only after rmdir of cgroup
|
||||
@ -6754,7 +6761,7 @@ void mem_cgroup_calculate_protection(struct mem_cgroup *root,
|
||||
}
|
||||
|
||||
/**
|
||||
* mem_cgroup_charge - charge a newly allocated page to a cgroup
|
||||
* __mem_cgroup_charge - charge a newly allocated page to a cgroup
|
||||
* @page: page to charge
|
||||
* @mm: mm context of the victim
|
||||
* @gfp_mask: reclaim mode
|
||||
@ -6764,15 +6771,13 @@ void mem_cgroup_calculate_protection(struct mem_cgroup *root,
|
||||
*
|
||||
* Returns 0 on success. Otherwise, an error code is returned.
|
||||
*/
|
||||
int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask)
|
||||
int __mem_cgroup_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask)
|
||||
{
|
||||
unsigned int nr_pages = thp_nr_pages(page);
|
||||
struct mem_cgroup *memcg = NULL;
|
||||
int ret = 0;
|
||||
|
||||
if (mem_cgroup_disabled())
|
||||
goto out;
|
||||
|
||||
if (PageSwapCache(page)) {
|
||||
swp_entry_t ent = { .val = page_private(page), };
|
||||
unsigned short id;
|
||||
@ -6942,18 +6947,15 @@ static void uncharge_list(struct list_head *page_list)
|
||||
}
|
||||
|
||||
/**
|
||||
* mem_cgroup_uncharge - uncharge a page
|
||||
* __mem_cgroup_uncharge - uncharge a page
|
||||
* @page: page to uncharge
|
||||
*
|
||||
* Uncharge a page previously charged with mem_cgroup_charge().
|
||||
* Uncharge a page previously charged with __mem_cgroup_charge().
|
||||
*/
|
||||
void mem_cgroup_uncharge(struct page *page)
|
||||
void __mem_cgroup_uncharge(struct page *page)
|
||||
{
|
||||
struct uncharge_gather ug;
|
||||
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
/* Don't touch page->lru of any random page, pre-check: */
|
||||
if (!page->mem_cgroup)
|
||||
return;
|
||||
@ -6964,17 +6966,14 @@ void mem_cgroup_uncharge(struct page *page)
|
||||
}
|
||||
|
||||
/**
|
||||
* mem_cgroup_uncharge_list - uncharge a list of page
|
||||
* __mem_cgroup_uncharge_list - uncharge a list of page
|
||||
* @page_list: list of pages to uncharge
|
||||
*
|
||||
* Uncharge a list of pages previously charged with
|
||||
* mem_cgroup_charge().
|
||||
* __mem_cgroup_charge().
|
||||
*/
|
||||
void mem_cgroup_uncharge_list(struct list_head *page_list)
|
||||
void __mem_cgroup_uncharge_list(struct list_head *page_list)
|
||||
{
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
if (!list_empty(page_list))
|
||||
uncharge_list(page_list);
|
||||
}
|
||||
@ -7201,6 +7200,9 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
|
||||
VM_BUG_ON_PAGE(PageLRU(page), page);
|
||||
VM_BUG_ON_PAGE(page_count(page), page);
|
||||
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
|
||||
return;
|
||||
|
||||
@ -7250,7 +7252,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
|
||||
}
|
||||
|
||||
/**
|
||||
* mem_cgroup_try_charge_swap - try charging swap space for a page
|
||||
* __mem_cgroup_try_charge_swap - try charging swap space for a page
|
||||
* @page: page being added to swap
|
||||
* @entry: swap entry to charge
|
||||
*
|
||||
@ -7258,7 +7260,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
|
||||
*
|
||||
* Returns 0 on success, -ENOMEM on failure.
|
||||
*/
|
||||
int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
|
||||
int __mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
|
||||
{
|
||||
unsigned int nr_pages = thp_nr_pages(page);
|
||||
struct page_counter *counter;
|
||||
@ -7300,11 +7302,11 @@ int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
|
||||
}
|
||||
|
||||
/**
|
||||
* mem_cgroup_uncharge_swap - uncharge swap space
|
||||
* __mem_cgroup_uncharge_swap - uncharge swap space
|
||||
* @entry: swap entry to uncharge
|
||||
* @nr_pages: the amount of swap space to uncharge
|
||||
*/
|
||||
void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
|
||||
void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
|
||||
{
|
||||
struct mem_cgroup *memcg;
|
||||
unsigned short id;
|
||||
|
@ -2101,7 +2101,7 @@ static unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
|
||||
if (length < info->length)
|
||||
return -ENOMEM;
|
||||
|
||||
trace_android_vh_get_unmapped_area_from_anti_fragment_pool(mm, info, &addr);
|
||||
trace_android_vh_get_from_fragment_pool(mm, info, &addr);
|
||||
if (addr)
|
||||
return addr;
|
||||
|
||||
@ -2214,6 +2214,7 @@ unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info)
|
||||
trace_vm_unmapped_area(addr, info);
|
||||
return addr;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vm_unmapped_area);
|
||||
|
||||
#ifndef arch_get_mmap_end
|
||||
#define arch_get_mmap_end(addr) (TASK_SIZE)
|
||||
@ -2324,7 +2325,7 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
|
||||
addr = vm_unmapped_area(&info);
|
||||
}
|
||||
|
||||
trace_android_vh_get_unmapped_area_include_reserved_zone(mm, &info, &addr);
|
||||
trace_android_vh_include_reserved_zone(mm, &info, &addr);
|
||||
|
||||
return addr;
|
||||
}
|
||||
|
@ -308,6 +308,10 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
|
||||
spin_unlock_irqrestore(&zone->lock, flags);
|
||||
|
||||
trace_test_pages_isolated(start_pfn, end_pfn, pfn);
|
||||
if (pfn < end_pfn) {
|
||||
page_pinner_failure_detect(pfn_to_page(pfn));
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
return pfn < end_pfn ? -EBUSY : 0;
|
||||
return 0;
|
||||
}
|
||||
|
133
mm/page_pinner.c
133
mm/page_pinner.c
@ -15,7 +15,7 @@
|
||||
#include "internal.h"
|
||||
|
||||
#define PAGE_PINNER_STACK_DEPTH 16
|
||||
#define LONTERM_PIN_BUCKETS 4096
|
||||
#define LONGTERM_PIN_BUCKETS 4096
|
||||
|
||||
struct page_pinner {
|
||||
depot_stack_handle_t handle;
|
||||
@ -25,16 +25,23 @@ struct page_pinner {
|
||||
|
||||
struct captured_pinner {
|
||||
depot_stack_handle_t handle;
|
||||
s64 ts_usec;
|
||||
int page_mt;
|
||||
unsigned long page_flags;
|
||||
union {
|
||||
s64 ts_usec;
|
||||
s64 elapsed;
|
||||
};
|
||||
|
||||
/* struct page fields */
|
||||
unsigned long pfn;
|
||||
int count;
|
||||
int mapcount;
|
||||
struct address_space *mapping;
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
struct longterm_pinner {
|
||||
spinlock_t lock;
|
||||
unsigned int index;
|
||||
struct captured_pinner pinner[LONTERM_PIN_BUCKETS];
|
||||
struct captured_pinner pinner[LONGTERM_PIN_BUCKETS];
|
||||
};
|
||||
|
||||
static struct longterm_pinner lt_pinner = {
|
||||
@ -111,12 +118,23 @@ static noinline depot_stack_handle_t save_stack(gfp_t flags)
|
||||
return handle;
|
||||
}
|
||||
|
||||
static void check_lonterm_pin(struct page_pinner *page_pinner,
|
||||
static void capture_page_state(struct page *page,
|
||||
struct captured_pinner *record)
|
||||
{
|
||||
record->flags = page->flags;
|
||||
record->mapping = page_mapping(page);
|
||||
record->pfn = page_to_pfn(page);
|
||||
record->count = page_count(page);
|
||||
record->mapcount = page_mapcount(page);
|
||||
}
|
||||
|
||||
static void check_longterm_pin(struct page_pinner *page_pinner,
|
||||
struct page *page)
|
||||
{
|
||||
s64 now, delta = 0;
|
||||
unsigned long flags;
|
||||
unsigned int idx;
|
||||
struct captured_pinner record;
|
||||
|
||||
now = ktime_to_us(ktime_get_boottime());
|
||||
|
||||
@ -127,17 +145,15 @@ static void check_lonterm_pin(struct page_pinner *page_pinner,
|
||||
if (delta <= threshold_usec)
|
||||
return;
|
||||
|
||||
record.handle = page_pinner->handle;
|
||||
record.elapsed = delta;
|
||||
capture_page_state(page, &record);
|
||||
|
||||
spin_lock_irqsave(<_pinner.lock, flags);
|
||||
idx = lt_pinner.index++;
|
||||
lt_pinner.index %= LONTERM_PIN_BUCKETS;
|
||||
|
||||
lt_pinner.pinner[idx].handle = page_pinner->handle;
|
||||
lt_pinner.pinner[idx].ts_usec = delta;
|
||||
lt_pinner.pinner[idx].page_flags = page->flags;
|
||||
lt_pinner.pinner[idx].page_mt = get_pageblock_migratetype(page);
|
||||
lt_pinner.pinner[idx].pfn = page_to_pfn(page);
|
||||
lt_pinner.index %= LONGTERM_PIN_BUCKETS;
|
||||
lt_pinner.pinner[idx] = record;
|
||||
spin_unlock_irqrestore(<_pinner.lock, flags);
|
||||
|
||||
}
|
||||
|
||||
void __reset_page_pinner(struct page *page, unsigned int order, bool free)
|
||||
@ -151,18 +167,19 @@ void __reset_page_pinner(struct page *page, unsigned int order, bool free)
|
||||
return;
|
||||
|
||||
for (i = 0; i < (1 << order); i++) {
|
||||
if (!test_bit(PAGE_EXT_GET, &page_ext->flags))
|
||||
if (!test_bit(PAGE_EXT_GET, &page_ext->flags) &&
|
||||
!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED,
|
||||
&page_ext->flags))
|
||||
continue;
|
||||
|
||||
page_pinner = get_page_pinner(page_ext);
|
||||
if (free) {
|
||||
WARN_ON_ONCE(atomic_read(&page_pinner->count));
|
||||
/* record page free call path */
|
||||
__page_pinner_migration_failed(page);
|
||||
atomic_set(&page_pinner->count, 0);
|
||||
__clear_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
|
||||
} else {
|
||||
WARN_ON_ONCE(atomic_dec_if_positive(
|
||||
&page_pinner->count) < 0);
|
||||
check_lonterm_pin(page_pinner, page);
|
||||
check_longterm_pin(page_pinner, page);
|
||||
}
|
||||
clear_bit(PAGE_EXT_GET, &page_ext->flags);
|
||||
page_ext = page_ext_next(page_ext);
|
||||
@ -200,9 +217,7 @@ noinline void __set_page_pinner(struct page *page, unsigned int order)
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
print_page_pinner(char __user *buf, size_t count, unsigned long pfn,
|
||||
int pageblock_mt, unsigned long page_flags, s64 ts_usec,
|
||||
depot_stack_handle_t handle, int shared_count)
|
||||
print_page_pinner(bool longterm, char __user *buf, size_t count, struct captured_pinner *record)
|
||||
{
|
||||
int ret;
|
||||
unsigned long *entries;
|
||||
@ -214,25 +229,34 @@ print_page_pinner(char __user *buf, size_t count, unsigned long pfn,
|
||||
if (!kbuf)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = snprintf(kbuf, count,
|
||||
"Page pinned ts %lld us count %d\n",
|
||||
ts_usec, shared_count);
|
||||
if (longterm) {
|
||||
ret = snprintf(kbuf, count, "Page pinned for %lld us\n",
|
||||
record->elapsed);
|
||||
} else {
|
||||
s64 ts_usec = record->ts_usec;
|
||||
unsigned long rem_usec = do_div(ts_usec, 1000000);
|
||||
|
||||
ret = snprintf(kbuf, count,
|
||||
"Page pinned ts [%5lu.%06lu]\n",
|
||||
(unsigned long)ts_usec, rem_usec);
|
||||
}
|
||||
|
||||
if (ret >= count)
|
||||
goto err;
|
||||
|
||||
/* Print information relevant to grouping pages by mobility */
|
||||
ret += snprintf(kbuf + ret, count - ret,
|
||||
"PFN %lu Block %lu type %s Flags %#lx(%pGp)\n",
|
||||
pfn,
|
||||
pfn >> pageblock_order,
|
||||
migratetype_names[pageblock_mt],
|
||||
page_flags, &page_flags);
|
||||
"PFN 0x%lx Block %lu count %d mapcount %d mapping %pS Flags %#lx(%pGp)\n",
|
||||
record->pfn,
|
||||
record->pfn >> pageblock_order,
|
||||
record->count, record->mapcount,
|
||||
record->mapping,
|
||||
record->flags, &record->flags);
|
||||
|
||||
if (ret >= count)
|
||||
goto err;
|
||||
|
||||
nr_entries = stack_depot_fetch(handle, &entries);
|
||||
nr_entries = stack_depot_fetch(record->handle, &entries);
|
||||
ret += stack_trace_snprint(kbuf + ret, count - ret, entries,
|
||||
nr_entries, 0);
|
||||
if (ret >= count)
|
||||
@ -263,6 +287,8 @@ void __dump_page_pinner(struct page *page)
|
||||
int pageblock_mt;
|
||||
unsigned long pfn;
|
||||
int count;
|
||||
unsigned long rem_usec;
|
||||
s64 ts_usec;
|
||||
|
||||
if (unlikely(!page_ext)) {
|
||||
pr_alert("There is not page extension available.\n");
|
||||
@ -278,9 +304,10 @@ void __dump_page_pinner(struct page *page)
|
||||
}
|
||||
|
||||
pfn = page_to_pfn(page);
|
||||
pr_alert("page last pinned ts %lld count %d\n",
|
||||
page_pinner->ts_usec,
|
||||
count);
|
||||
ts_usec = page_pinner->ts_usec;
|
||||
rem_usec = do_div(ts_usec, 1000000);
|
||||
pr_alert("page last pinned %5lu.%06lu] count %d\n",
|
||||
(unsigned long)ts_usec, rem_usec, count);
|
||||
|
||||
pageblock_mt = get_pageblock_migratetype(page);
|
||||
pr_alert("PFN %lu Block %lu type %s Flags %#lx(%pGp)\n",
|
||||
@ -302,7 +329,7 @@ void __page_pinner_migration_failed(struct page *page)
|
||||
{
|
||||
struct page_ext *page_ext = lookup_page_ext(page);
|
||||
struct page_pinner *page_pinner;
|
||||
depot_stack_handle_t handle;
|
||||
struct captured_pinner record;
|
||||
unsigned long flags;
|
||||
unsigned int idx;
|
||||
|
||||
@ -313,17 +340,14 @@ void __page_pinner_migration_failed(struct page *page)
|
||||
if (!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags))
|
||||
return;
|
||||
|
||||
handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
|
||||
record.handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
|
||||
record.ts_usec = ktime_to_us(ktime_get_boottime());
|
||||
capture_page_state(page, &record);
|
||||
|
||||
spin_lock_irqsave(&acf_pinner.lock, flags);
|
||||
idx = acf_pinner.index++;
|
||||
acf_pinner.index %= LONTERM_PIN_BUCKETS;
|
||||
|
||||
acf_pinner.pinner[idx].handle = handle;
|
||||
acf_pinner.pinner[idx].ts_usec = ktime_to_us(ktime_get_boottime());
|
||||
acf_pinner.pinner[idx].page_flags = page->flags;
|
||||
acf_pinner.pinner[idx].page_mt = get_pageblock_migratetype(page);
|
||||
acf_pinner.pinner[idx].pfn = page_to_pfn(page);
|
||||
acf_pinner.index %= LONGTERM_PIN_BUCKETS;
|
||||
acf_pinner.pinner[idx] = record;
|
||||
spin_unlock_irqrestore(&acf_pinner.lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(__page_pinner_migration_failed);
|
||||
@ -341,6 +365,7 @@ void __page_pinner_mark_migration_failed_pages(struct list_head *page_list)
|
||||
if (unlikely(!page_ext))
|
||||
continue;
|
||||
__set_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
|
||||
__page_pinner_migration_failed(page);
|
||||
}
|
||||
}
|
||||
|
||||
@ -355,7 +380,7 @@ read_longterm_page_pinner(struct file *file, char __user *buf, size_t count,
|
||||
if (!static_branch_unlikely(&page_pinner_inited))
|
||||
return -EINVAL;
|
||||
|
||||
if (*ppos >= LONTERM_PIN_BUCKETS)
|
||||
if (*ppos >= LONGTERM_PIN_BUCKETS)
|
||||
return 0;
|
||||
|
||||
i = *ppos;
|
||||
@ -365,17 +390,15 @@ read_longterm_page_pinner(struct file *file, char __user *buf, size_t count,
|
||||
* reading the records in the reverse order with newest one
|
||||
* being read first followed by older ones
|
||||
*/
|
||||
idx = (lt_pinner.index - 1 - i + LONTERM_PIN_BUCKETS) %
|
||||
LONTERM_PIN_BUCKETS;
|
||||
idx = (lt_pinner.index - 1 - i + LONGTERM_PIN_BUCKETS) %
|
||||
LONGTERM_PIN_BUCKETS;
|
||||
spin_lock_irqsave(<_pinner.lock, flags);
|
||||
record = lt_pinner.pinner[idx];
|
||||
spin_unlock_irqrestore(<_pinner.lock, flags);
|
||||
if (!record.handle)
|
||||
return 0;
|
||||
|
||||
return print_page_pinner(buf, count, record.pfn, record.page_mt,
|
||||
record.page_flags, record.ts_usec,
|
||||
record.handle, 0);
|
||||
return print_page_pinner(true, buf, count, &record);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_longterm_pinner_operations = {
|
||||
@ -392,7 +415,7 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
|
||||
if (!static_branch_unlikely(&failure_tracking))
|
||||
return -EINVAL;
|
||||
|
||||
if (*ppos >= LONTERM_PIN_BUCKETS)
|
||||
if (*ppos >= LONGTERM_PIN_BUCKETS)
|
||||
return 0;
|
||||
|
||||
i = *ppos;
|
||||
@ -402,8 +425,8 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
|
||||
* reading the records in the reverse order with newest one
|
||||
* being read first followed by older ones
|
||||
*/
|
||||
idx = (acf_pinner.index - 1 - i + LONTERM_PIN_BUCKETS) %
|
||||
LONTERM_PIN_BUCKETS;
|
||||
idx = (acf_pinner.index - 1 - i + LONGTERM_PIN_BUCKETS) %
|
||||
LONGTERM_PIN_BUCKETS;
|
||||
|
||||
spin_lock_irqsave(&acf_pinner.lock, flags);
|
||||
record = acf_pinner.pinner[idx];
|
||||
@ -411,9 +434,7 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
|
||||
if (!record.handle)
|
||||
return 0;
|
||||
|
||||
return print_page_pinner(buf, count, record.pfn, record.page_mt,
|
||||
record.page_flags, record.ts_usec,
|
||||
record.handle, 0);
|
||||
return print_page_pinner(false, buf, count, &record);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_alloc_contig_failed_operations = {
|
||||
@ -428,7 +449,7 @@ static int pp_threshold_set(void *data, unsigned long long val)
|
||||
|
||||
spin_lock_irqsave(<_pinner.lock, flags);
|
||||
memset(lt_pinner.pinner, 0,
|
||||
sizeof(struct captured_pinner) * LONTERM_PIN_BUCKETS);
|
||||
sizeof(struct captured_pinner) * LONGTERM_PIN_BUCKETS);
|
||||
lt_pinner.index = 0;
|
||||
spin_unlock_irqrestore(<_pinner.lock, flags);
|
||||
return 0;
|
||||
|
50
mm/shmem.c
50
mm/shmem.c
@ -38,9 +38,15 @@
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/frontswap.h>
|
||||
#include <linux/fs_parser.h>
|
||||
#include <linux/mm_inline.h>
|
||||
|
||||
#include <asm/tlbflush.h> /* for arch/microblaze update_mmu_cache() */
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
#undef CREATE_TRACE_POINTS
|
||||
#include <trace/hooks/shmem_fs.h>
|
||||
|
||||
static struct vfsmount *shm_mnt;
|
||||
|
||||
#ifdef CONFIG_SHMEM
|
||||
@ -1559,7 +1565,11 @@ static struct page *shmem_alloc_page(gfp_t gfp,
|
||||
struct shmem_inode_info *info, pgoff_t index)
|
||||
{
|
||||
struct vm_area_struct pvma;
|
||||
struct page *page;
|
||||
struct page *page = NULL;
|
||||
|
||||
trace_android_vh_shmem_alloc_page(&page);
|
||||
if (page)
|
||||
return page;
|
||||
|
||||
shmem_pseudo_vma_init(&pvma, info, index);
|
||||
page = alloc_page_vma(gfp, &pvma, 0);
|
||||
@ -4290,3 +4300,41 @@ void shmem_mark_page_lazyfree(struct page *page)
|
||||
mark_page_lazyfree_movetail(page);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(shmem_mark_page_lazyfree);
|
||||
|
||||
int reclaim_shmem_address_space(struct address_space *mapping)
|
||||
{
|
||||
pgoff_t start = 0;
|
||||
struct page *page;
|
||||
LIST_HEAD(page_list);
|
||||
int reclaimed;
|
||||
XA_STATE(xas, &mapping->i_pages, start);
|
||||
|
||||
if (!shmem_mapping(mapping))
|
||||
return -EINVAL;
|
||||
|
||||
lru_add_drain();
|
||||
|
||||
rcu_read_lock();
|
||||
xas_for_each(&xas, page, ULONG_MAX) {
|
||||
if (xas_retry(&xas, page))
|
||||
continue;
|
||||
if (xa_is_value(page))
|
||||
continue;
|
||||
if (isolate_lru_page(page))
|
||||
continue;
|
||||
|
||||
list_add(&page->lru, &page_list);
|
||||
inc_node_page_state(page, NR_ISOLATED_ANON +
|
||||
page_is_file_lru(page));
|
||||
|
||||
if (need_resched()) {
|
||||
xas_pause(&xas);
|
||||
cond_resched_rcu();
|
||||
}
|
||||
}
|
||||
rcu_read_unlock();
|
||||
reclaimed = reclaim_pages_from_list(&page_list);
|
||||
|
||||
return reclaimed;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(reclaim_shmem_address_space);
|
||||
|
@ -3813,7 +3813,7 @@ static void free_swap_count_continuations(struct swap_info_struct *si)
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
|
||||
void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
|
||||
void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
|
||||
{
|
||||
struct swap_info_struct *si, *next;
|
||||
int nid = page_to_nid(page);
|
||||
|
@ -27,6 +27,9 @@
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include "internal.h"
|
||||
#ifndef __GENKSYMS__
|
||||
#include <trace/hooks/syscall_check.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* kfree_const - conditionally free memory
|
||||
@ -354,6 +357,7 @@ unsigned long arch_mmap_rnd(void)
|
||||
|
||||
return rnd << PAGE_SHIFT;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(arch_mmap_rnd);
|
||||
|
||||
static int mmap_is_legacy(struct rlimit *rlim_stack)
|
||||
{
|
||||
@ -511,6 +515,7 @@ unsigned long vm_mmap_pgoff(struct file *file, unsigned long addr,
|
||||
if (populate)
|
||||
mm_populate(ret, populate);
|
||||
}
|
||||
trace_android_vh_check_mmap_file(file, prot, flag, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include <linux/printk.h>
|
||||
#include <linux/vmpressure.h>
|
||||
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
/*
|
||||
* The window size (vmpressure_win) is the number of scanned pages before
|
||||
* we try to analyze scanned/reclaimed ratio. So the window is used as a
|
||||
@ -240,7 +242,17 @@ static void vmpressure_work_fn(struct work_struct *work)
|
||||
void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
|
||||
unsigned long scanned, unsigned long reclaimed)
|
||||
{
|
||||
struct vmpressure *vmpr = memcg_to_vmpressure(memcg);
|
||||
struct vmpressure *vmpr;
|
||||
bool bypass = false;
|
||||
|
||||
if (mem_cgroup_disabled())
|
||||
return;
|
||||
|
||||
vmpr = memcg_to_vmpressure(memcg);
|
||||
|
||||
trace_android_vh_vmpressure(memcg, &bypass);
|
||||
if (unlikely(bypass))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Here we only want to account pressure that userland is able to
|
||||
|
31
mm/vmscan.c
31
mm/vmscan.c
@ -1562,6 +1562,36 @@ unsigned int reclaim_clean_pages_from_list(struct zone *zone,
|
||||
return nr_reclaimed;
|
||||
}
|
||||
|
||||
int reclaim_pages_from_list(struct list_head *page_list)
|
||||
{
|
||||
struct scan_control sc = {
|
||||
.gfp_mask = GFP_KERNEL,
|
||||
.priority = DEF_PRIORITY,
|
||||
.may_writepage = 1,
|
||||
.may_unmap = 1,
|
||||
.may_swap = 1,
|
||||
};
|
||||
unsigned long nr_reclaimed;
|
||||
struct reclaim_stat dummy_stat;
|
||||
struct page *page;
|
||||
|
||||
list_for_each_entry(page, page_list, lru)
|
||||
ClearPageActive(page);
|
||||
|
||||
nr_reclaimed = shrink_page_list(page_list, NULL, &sc,
|
||||
&dummy_stat, false);
|
||||
while (!list_empty(page_list)) {
|
||||
|
||||
page = lru_to_page(page_list);
|
||||
list_del(&page->lru);
|
||||
dec_node_page_state(page, NR_ISOLATED_ANON +
|
||||
page_is_file_lru(page));
|
||||
putback_lru_page(page);
|
||||
}
|
||||
|
||||
return nr_reclaimed;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to remove the specified page from its LRU. Only take this page
|
||||
* if it is of the appropriate PageActive status. Pages which are being
|
||||
@ -3389,6 +3419,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
|
||||
|
||||
return nr_reclaimed;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(try_to_free_mem_cgroup_pages);
|
||||
#endif
|
||||
|
||||
static void age_active_anon(struct pglist_data *pgdat,
|
||||
|
@ -146,6 +146,7 @@
|
||||
#include <net/devlink.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/prandom.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
#include "net-sysfs.h"
|
||||
|
||||
@ -510,6 +511,12 @@ static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
|
||||
|
||||
static inline struct list_head *ptype_head(const struct packet_type *pt)
|
||||
{
|
||||
struct list_head vendor_pt = { .next = NULL, };
|
||||
|
||||
trace_android_vh_ptype_head(pt, &vendor_pt);
|
||||
if (vendor_pt.next)
|
||||
return vendor_pt.next;
|
||||
|
||||
if (pt->type == htons(ETH_P_ALL))
|
||||
return pt->dev ? &pt->dev->ptype_all : &ptype_all;
|
||||
else
|
||||
|
@ -3244,9 +3244,6 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb)
|
||||
u32 off = skb_mac_header_len(skb);
|
||||
int ret;
|
||||
|
||||
if (skb_is_gso(skb) && !skb_is_gso_tcp(skb))
|
||||
return -ENOTSUPP;
|
||||
|
||||
ret = skb_cow(skb, len_diff);
|
||||
if (unlikely(ret < 0))
|
||||
return ret;
|
||||
@ -3258,17 +3255,11 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb)
|
||||
if (skb_is_gso(skb)) {
|
||||
struct skb_shared_info *shinfo = skb_shinfo(skb);
|
||||
|
||||
/* SKB_GSO_TCPV4 needs to be changed into
|
||||
* SKB_GSO_TCPV6.
|
||||
*/
|
||||
/* SKB_GSO_TCPV4 needs to be changed into SKB_GSO_TCPV6. */
|
||||
if (shinfo->gso_type & SKB_GSO_TCPV4) {
|
||||
shinfo->gso_type &= ~SKB_GSO_TCPV4;
|
||||
shinfo->gso_type |= SKB_GSO_TCPV6;
|
||||
}
|
||||
|
||||
/* Header must be checked, and gso_segs recomputed. */
|
||||
shinfo->gso_type |= SKB_GSO_DODGY;
|
||||
shinfo->gso_segs = 0;
|
||||
}
|
||||
|
||||
skb->protocol = htons(ETH_P_IPV6);
|
||||
@ -3283,9 +3274,6 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb)
|
||||
u32 off = skb_mac_header_len(skb);
|
||||
int ret;
|
||||
|
||||
if (skb_is_gso(skb) && !skb_is_gso_tcp(skb))
|
||||
return -ENOTSUPP;
|
||||
|
||||
ret = skb_unclone(skb, GFP_ATOMIC);
|
||||
if (unlikely(ret < 0))
|
||||
return ret;
|
||||
@ -3297,17 +3285,11 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb)
|
||||
if (skb_is_gso(skb)) {
|
||||
struct skb_shared_info *shinfo = skb_shinfo(skb);
|
||||
|
||||
/* SKB_GSO_TCPV6 needs to be changed into
|
||||
* SKB_GSO_TCPV4.
|
||||
*/
|
||||
/* SKB_GSO_TCPV6 needs to be changed into SKB_GSO_TCPV4. */
|
||||
if (shinfo->gso_type & SKB_GSO_TCPV6) {
|
||||
shinfo->gso_type &= ~SKB_GSO_TCPV6;
|
||||
shinfo->gso_type |= SKB_GSO_TCPV4;
|
||||
}
|
||||
|
||||
/* Header must be checked, and gso_segs recomputed. */
|
||||
shinfo->gso_type |= SKB_GSO_DODGY;
|
||||
shinfo->gso_segs = 0;
|
||||
}
|
||||
|
||||
skb->protocol = htons(ETH_P_IP);
|
||||
|
@ -76,6 +76,7 @@
|
||||
#include <linux/capability.h>
|
||||
#include <linux/user_namespace.h>
|
||||
#include <linux/indirect_call_wrapper.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
#include "datagram.h"
|
||||
|
||||
@ -701,6 +702,7 @@ void kfree_skb(struct sk_buff *skb)
|
||||
if (!skb_unref(skb))
|
||||
return;
|
||||
|
||||
trace_android_vh_kfree_skb(skb);
|
||||
trace_kfree_skb(skb, __builtin_return_address(0));
|
||||
__kfree_skb(skb);
|
||||
}
|
||||
|
@ -80,6 +80,7 @@
|
||||
#include <linux/jump_label_ratelimit.h>
|
||||
#include <net/busy_poll.h>
|
||||
#include <net/mptcp.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
int sysctl_tcp_max_orphans __read_mostly = NR_FILE;
|
||||
|
||||
@ -4618,6 +4619,7 @@ static bool tcp_ooo_try_coalesce(struct sock *sk,
|
||||
|
||||
static void tcp_drop(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
trace_android_vh_kfree_skb(skb);
|
||||
sk_drops_add(sk, skb);
|
||||
__kfree_skb(skb);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user