mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 15:11:48 -04:00
Merge android-5.4 into android-5.4-stable
Signed-off-by: Ram Muthiah <rammuthiah@google.com> Change-Id: Iae0aa79dbec4f9fb7d72913d2b90bed461400acc
This commit is contained in:
commit
d55491aa44
912 changed files with 108275 additions and 73488 deletions
|
|
@ -1,16 +0,0 @@
|
|||
What: /proc/uid_concurrent_active_time
|
||||
Date: December 2018
|
||||
Contact: Connor O'Brien <connoro@google.com>
|
||||
Description:
|
||||
The /proc/uid_concurrent_active_time file displays aggregated cputime
|
||||
numbers for each uid, broken down by the total number of cores that were
|
||||
active while the uid's task was running.
|
||||
|
||||
What: /proc/uid_concurrent_policy_time
|
||||
Date: December 2018
|
||||
Contact: Connor O'Brien <connoro@google.com>
|
||||
Description:
|
||||
The /proc/uid_concurrent_policy_time file displays aggregated cputime
|
||||
numbers for each uid, broken down based on the cpufreq policy
|
||||
of the core used by the uid's task and the number of cores associated
|
||||
with that policy that were active while the uid's task was running.
|
||||
|
|
@ -136,6 +136,10 @@
|
|||
dynamic table installation which will install SSDT
|
||||
tables to /sys/firmware/acpi/tables/dynamic.
|
||||
|
||||
acpi_no_watchdog [HW,ACPI,WDT]
|
||||
Ignore the ACPI-based watchdog interface (WDAT) and let
|
||||
a native driver control the watchdog device instead.
|
||||
|
||||
acpi_rsdp= [ACPI,EFI,KEXEC]
|
||||
Pass the RSDP address to the kernel, mostly used
|
||||
on machines running EFI runtime service to boot the
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
Support usb hub and usb data role switch of Hisilicon HiKey960 Board.
|
||||
|
||||
-----------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: "hisilicon,gpio_hubv1"
|
||||
- typec-vbus-gpios: gpio to control the vbus of typeC port
|
||||
- otg-switch-gpios: gpio to switch DP & DM between the hub and typeC port
|
||||
- hub-vdd33-en-gpios: gpio to enable the power of hub
|
||||
- pinctrl-names: pin configuration state name ("default")
|
||||
- pinctrl-0: pinctrl config
|
||||
- usb-role-switch: flags the driver as a role switch provider
|
||||
- ports: two endpoints to connect the usb core role switch provider
|
||||
to the usb-c tcpm driver.
|
||||
|
||||
Example
|
||||
-----
|
||||
hisi_hikey_usb: hisi_hikey_usb {
|
||||
compatible = "hisilicon,gpio_hubv1";
|
||||
typec-vbus-gpios = <&gpio25 2 GPIO_ACTIVE_HIGH>;
|
||||
otg-switch-gpios = <&gpio25 6 GPIO_ACTIVE_HIGH>;
|
||||
hub-vdd33-en-gpios = <&gpio5 6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usbhub5734_pmx_func>;
|
||||
usb-role-switch;
|
||||
|
||||
port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
hikey_usb_ep0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&dwc3_role_switch>;
|
||||
};
|
||||
hikey_usb_ep1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&rt1711h_ep>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -110,6 +110,13 @@ PROPERTIES
|
|||
Usage: required
|
||||
Definition: See soc/fsl/qman.txt and soc/fsl/bman.txt
|
||||
|
||||
- fsl,erratum-a050385
|
||||
Usage: optional
|
||||
Value type: boolean
|
||||
Definition: A boolean property. Indicates the presence of the
|
||||
erratum A050385 which indicates that DMA transactions that are
|
||||
split can result in a FMan lock.
|
||||
|
||||
=============================================================================
|
||||
FMan MURAM Node
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ Optional Properties:
|
|||
for each of the battery capacity lookup table. The first temperature value
|
||||
specifies the OCV table 0, and the second temperature value specifies the
|
||||
OCV table 1, and so on.
|
||||
- resistance-temp-table: An array providing the temperature in degree Celsius
|
||||
and corresponding battery internal resistance percent, which is used to look
|
||||
up the resistance percent according to current temperature to get a accurate
|
||||
batterty internal resistance in different temperatures.
|
||||
|
||||
Battery properties are named, where possible, for the corresponding
|
||||
elements in enum power_supply_property, defined in
|
||||
|
|
@ -61,6 +65,7 @@ Example:
|
|||
ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>, ...;
|
||||
ocv-capacity-table-1 = <4200000 100>, <4185000 95>, <4113000 90>, ...;
|
||||
ocv-capacity-table-2 = <4250000 100>, <4200000 95>, <4185000 90>, ...;
|
||||
resistance-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
|
||||
};
|
||||
|
||||
charger: charger@11 {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ Required properties:
|
|||
- io-channel-names: Should be "bat-temp" or "charge-vol".
|
||||
- nvmem-cells: A phandle to the calibration cells provided by eFuse device.
|
||||
- nvmem-cell-names: Should be "fgu_calib".
|
||||
- sprd,calib-resistance-micro-ohms: Specify the real resistance of coulomb counter
|
||||
chip in micro Ohms.
|
||||
- monitored-battery: Phandle of battery characteristics devicetree node.
|
||||
See Documentation/devicetree/bindings/power/supply/battery.txt
|
||||
|
||||
|
|
@ -52,5 +54,6 @@ Example:
|
|||
nvmem-cells = <&fgu_calib>;
|
||||
nvmem-cell-names = "fgu_calib";
|
||||
monitored-battery = <&bat>;
|
||||
sprd,calib-resistance-micro-ohms = <21500>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
108
Documentation/devicetree/bindings/thermal/sprd-thermal.yaml
Normal file
108
Documentation/devicetree/bindings/thermal/sprd-thermal.yaml
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/thermal/sprd-thermal.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Spreadtrum thermal sensor controller bindings
|
||||
|
||||
maintainers:
|
||||
- Orson Zhai <orsonzhai@gmail.com>
|
||||
- Baolin Wang <baolin.wang7@gmail.com>
|
||||
- Chunyan Zhang <zhang.lyra@gmail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: sprd,ums512-thermal
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: enable
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 2
|
||||
description:
|
||||
Reference to nvmem nodes for the calibration data.
|
||||
|
||||
nvmem-cell-names:
|
||||
maxItems: 2
|
||||
items:
|
||||
- const: thm_sign_cal
|
||||
- const: thm_ratio_cal
|
||||
|
||||
"#thermal-sensor-cells":
|
||||
const: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
"^([a-z]*-)?sensor(-section)?@[0-9]+$":
|
||||
type: object
|
||||
description:
|
||||
Represent one thermal sensor.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
description: Specify the sensor id.
|
||||
maxItems: 1
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 1
|
||||
description:
|
||||
Reference to an nvmem node for the calibration data.
|
||||
|
||||
nvmem-cell-names:
|
||||
const: sen_delta_cal
|
||||
|
||||
required:
|
||||
- reg
|
||||
- nvmem-cells
|
||||
- nvmem-cell-names
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- nvmem-cells
|
||||
- nvmem-cell-names
|
||||
- "#thermal-sensor-cells"
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
examples:
|
||||
- |
|
||||
ap_thm0: thermal@32200000 {
|
||||
compatible = "sprd,ums512-thermal";
|
||||
reg = <0 0x32200000 0 0x10000>;
|
||||
clock-names = "enable";
|
||||
clocks = <&aonapb_gate 32>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
nvmem-cells = <&thm0_sign>, <&thm0_ratio>;
|
||||
nvmem-cell-names = "thm_sign_cal", "thm_ratio_cal";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
prometheus-sensor@0 {
|
||||
reg = <0>;
|
||||
nvmem-cells = <&thm0_sen0>;
|
||||
nvmem-cell-names = "sen_delta_cal";
|
||||
};
|
||||
|
||||
ank-sensor@1 {
|
||||
reg = <1>;
|
||||
nvmem-cells = <&thm0_sen1>;
|
||||
nvmem-cell-names = "sen_delta_cal";
|
||||
};
|
||||
};
|
||||
...
|
||||
|
|
@ -7,7 +7,8 @@ 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: should contain "ref", "bus_early", "suspend"
|
||||
- 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.
|
||||
|
||||
|
|
@ -36,7 +37,7 @@ Optional properties:
|
|||
- phys: from the *Generic PHY* bindings
|
||||
- phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy"
|
||||
or "usb3-phy".
|
||||
- resets: a single pair of phandle and reset specifier
|
||||
- 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
|
||||
|
|
|
|||
|
|
@ -34,6 +34,12 @@ Optional properties:
|
|||
the USB data role (USB host or USB device) for a given
|
||||
USB connector, such as Type-C, Type-B(micro).
|
||||
see connector/usb-connector.txt.
|
||||
- role-switch-default-mode: indicating if usb-role-switch is enabled, the
|
||||
device default operation mode of controller while usb
|
||||
role is USB_ROLE_NONE. Valid arguments are "host" and
|
||||
"peripheral". Defaults to "peripheral" if not
|
||||
specified.
|
||||
|
||||
|
||||
This is an attribute to a USB controller such as:
|
||||
|
||||
|
|
|
|||
|
|
@ -633,6 +633,17 @@ from a passphrase or other low-entropy user credential.
|
|||
FS_IOC_GET_ENCRYPTION_PWSALT is deprecated. Instead, prefer to
|
||||
generate and manage any needed salt(s) in userspace.
|
||||
|
||||
Getting a file's encryption nonce
|
||||
---------------------------------
|
||||
|
||||
Since Linux v5.7, the ioctl FS_IOC_GET_ENCRYPTION_NONCE is supported.
|
||||
On encrypted files and directories it gets the inode's 16-byte nonce.
|
||||
On unencrypted files and directories, it fails with ENODATA.
|
||||
|
||||
This ioctl can be useful for automated tests which verify that the
|
||||
encryption is being done correctly. It is not needed for normal use
|
||||
of fscrypt.
|
||||
|
||||
Adding keys
|
||||
-----------
|
||||
|
||||
|
|
|
|||
|
|
@ -850,3 +850,11 @@ business doing so.
|
|||
d_alloc_pseudo() is internal-only; uses outside of alloc_file_pseudo() are
|
||||
very suspect (and won't work in modules). Such uses are very likely to
|
||||
be misspelled d_alloc_anon().
|
||||
|
||||
---
|
||||
|
||||
**mandatory**
|
||||
|
||||
[should've been added in 2016] stale comment in finish_open() nonwithstanding,
|
||||
failure exits in ->atomic_open() instances should *NOT* fput() the file,
|
||||
no matter what. Everything is handled by the caller.
|
||||
|
|
|
|||
|
|
@ -1115,23 +1115,6 @@ When kbuild executes, the following steps are followed (roughly):
|
|||
In this example, extra-y is used to list object files that
|
||||
shall be built, but shall not be linked as part of built-in.a.
|
||||
|
||||
header-test-y
|
||||
|
||||
header-test-y specifies headers (`*.h`) in the current directory that
|
||||
should be compile tested to ensure they are self-contained,
|
||||
i.e. compilable as standalone units. If CONFIG_HEADER_TEST is enabled,
|
||||
this builds them as part of extra-y.
|
||||
|
||||
header-test-pattern-y
|
||||
|
||||
This works as a weaker version of header-test-y, and accepts wildcard
|
||||
patterns. The typical usage is::
|
||||
|
||||
header-test-pattern-y += *.h
|
||||
|
||||
This specifies all the files that matches to `*.h` in the current
|
||||
directory, but the files in 'header-test-' are excluded.
|
||||
|
||||
6.7 Commands useful for building a boot image
|
||||
---------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -470,9 +470,9 @@ build.
|
|||
|
||||
The syntax of the Module.symvers file is::
|
||||
|
||||
<CRC> <Symbol> <Namespace> <Module> <Export Type>
|
||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||
|
||||
0xe1cc2a05 usb_stor_suspend USB_STORAGE drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL
|
||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||
|
||||
The fields are separated by tabs and values may be empty (e.g.
|
||||
if no namespace is defined for an exported symbol).
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ flowtable and add one rule to your forward chain.
|
|||
|
||||
table inet x {
|
||||
flowtable f {
|
||||
hook ingress priority 0 devices = { eth0, eth1 };
|
||||
hook ingress priority 0; devices = { eth0, eth1 };
|
||||
}
|
||||
chain y {
|
||||
type filter hook forward priority 0; policy accept;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ USB support
|
|||
mtouchusb
|
||||
ohci
|
||||
rio
|
||||
raw-gadget
|
||||
usbip_protocol
|
||||
usbmon
|
||||
usb-serial
|
||||
|
|
|
|||
61
Documentation/usb/raw-gadget.rst
Normal file
61
Documentation/usb/raw-gadget.rst
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
==============
|
||||
USB Raw Gadget
|
||||
==============
|
||||
|
||||
USB Raw Gadget is a kernel module that provides a userspace interface for
|
||||
the USB Gadget subsystem. Essentially it allows to emulate USB devices
|
||||
from userspace. Enabled with CONFIG_USB_RAW_GADGET. Raw Gadget is
|
||||
currently a strictly debugging feature and shouldn't be used in
|
||||
production, use GadgetFS instead.
|
||||
|
||||
Comparison to GadgetFS
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Raw Gadget is similar to GadgetFS, but provides a more low-level and
|
||||
direct access to the USB Gadget layer for the userspace. The key
|
||||
differences are:
|
||||
|
||||
1. Every USB request is passed to the userspace to get a response, while
|
||||
GadgetFS responds to some USB requests internally based on the provided
|
||||
descriptors. However note, that the UDC driver might respond to some
|
||||
requests on its own and never forward them to the Gadget layer.
|
||||
|
||||
2. GadgetFS performs some sanity checks on the provided USB descriptors,
|
||||
while Raw Gadget allows you to provide arbitrary data as responses to
|
||||
USB requests.
|
||||
|
||||
3. Raw Gadget provides a way to select a UDC device/driver to bind to,
|
||||
while GadgetFS currently binds to the first available UDC.
|
||||
|
||||
4. Raw Gadget uses predictable endpoint names (handles) across different
|
||||
UDCs (as long as UDCs have enough endpoints of each required transfer
|
||||
type).
|
||||
|
||||
5. Raw Gadget has ioctl-based interface instead of a filesystem-based one.
|
||||
|
||||
Userspace interface
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To create a Raw Gadget instance open /dev/raw-gadget. Multiple raw-gadget
|
||||
instances (bound to different UDCs) can be used at the same time. The
|
||||
interaction with the opened file happens through the ioctl() calls, see
|
||||
comments in include/uapi/linux/usb/raw_gadget.h for details.
|
||||
|
||||
The typical usage of Raw Gadget looks like:
|
||||
|
||||
1. Open Raw Gadget instance via /dev/raw-gadget.
|
||||
2. Initialize the instance via USB_RAW_IOCTL_INIT.
|
||||
3. Launch the instance with USB_RAW_IOCTL_RUN.
|
||||
4. In a loop issue USB_RAW_IOCTL_EVENT_FETCH calls to receive events from
|
||||
Raw Gadget and react to those depending on what kind of USB device
|
||||
needs to be emulated.
|
||||
|
||||
Potential future improvements
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Implement ioctl's for setting/clearing halt status on endpoints.
|
||||
|
||||
- Reporting more events (suspend, resume, etc.) through
|
||||
USB_RAW_IOCTL_EVENT_FETCH.
|
||||
|
||||
- Support O_NONBLOCK I/O.
|
||||
116
Makefile
116
Makefile
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 23
|
||||
SUBLEVEL = 30
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
|
|
@ -622,7 +622,6 @@ ifeq ($(KBUILD_EXTMOD),)
|
|||
init-y := init/
|
||||
drivers-y := drivers/ sound/
|
||||
drivers-$(CONFIG_SAMPLES) += samples/
|
||||
drivers-$(CONFIG_KERNEL_HEADER_TEST) += include/
|
||||
net-y := net/
|
||||
libs-y := lib/
|
||||
core-y := usr/
|
||||
|
|
@ -892,7 +891,8 @@ endif
|
|||
|
||||
ifdef CONFIG_CFI_CLANG
|
||||
CC_FLAGS_CFI := -fsanitize=cfi \
|
||||
-fno-sanitize-cfi-canonical-jump-tables
|
||||
-fno-sanitize-cfi-canonical-jump-tables \
|
||||
-fno-sanitize-blacklist
|
||||
|
||||
ifdef CONFIG_MODULES
|
||||
CC_FLAGS_CFI += -fsanitize-cfi-cross-dso
|
||||
|
|
@ -1126,8 +1126,8 @@ endif
|
|||
autoksyms_h := $(if $(CONFIG_TRIM_UNUSED_KSYMS), include/generated/autoksyms.h)
|
||||
|
||||
quiet_cmd_autoksyms_h = GEN $@
|
||||
cmd_autoksyms_h = mkdir -p $(dir $@); $(CONFIG_SHELL) \
|
||||
$(srctree)/scripts/gen_autoksyms.sh $@
|
||||
cmd_autoksyms_h = mkdir -p $(dir $@); \
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/gen_autoksyms.sh $@
|
||||
|
||||
$(autoksyms_h):
|
||||
$(call cmd,autoksyms_h)
|
||||
|
|
@ -1262,19 +1262,15 @@ headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
|
|||
$(Q)$(MAKE) $(hdr-inst)=include/uapi
|
||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
|
||||
|
||||
# Deprecated. It is no-op now.
|
||||
PHONY += headers_check
|
||||
headers_check: headers
|
||||
$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
|
||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi HDRCHECK=1
|
||||
headers_check:
|
||||
@:
|
||||
|
||||
ifdef CONFIG_HEADERS_INSTALL
|
||||
prepare: headers
|
||||
endif
|
||||
|
||||
ifdef CONFIG_HEADERS_CHECK
|
||||
all: headers_check
|
||||
endif
|
||||
|
||||
PHONY += scripts_unifdef
|
||||
scripts_unifdef: scripts_basic
|
||||
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
||||
|
|
@ -1308,7 +1304,7 @@ ifneq ($(dtstree),)
|
|||
%.dtb: include/config/kernel.release scripts_dtc
|
||||
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
|
||||
|
||||
PHONY += dtbs dtbs_install dt_binding_check
|
||||
PHONY += dtbs dtbs_install dtbs_check
|
||||
dtbs dtbs_check: include/config/kernel.release scripts_dtc
|
||||
$(Q)$(MAKE) $(build)=$(dtstree)
|
||||
|
||||
|
|
@ -1328,6 +1324,7 @@ PHONY += scripts_dtc
|
|||
scripts_dtc: scripts_basic
|
||||
$(Q)$(MAKE) $(build)=scripts/dtc
|
||||
|
||||
PHONY += dt_binding_check
|
||||
dt_binding_check: scripts_dtc
|
||||
$(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
|
||||
|
||||
|
|
@ -1542,7 +1539,6 @@ help:
|
|||
@echo ' versioncheck - Sanity check on version.h usage'
|
||||
@echo ' includecheck - Check for duplicate included header files'
|
||||
@echo ' export_report - List the usages of all exported symbols'
|
||||
@echo ' headers_check - Sanity check on exported headers'
|
||||
@echo ' headerdep - Detect inclusion cycles in headers'
|
||||
@echo ' coccicheck - Check with Coccinelle'
|
||||
@echo ''
|
||||
|
|
@ -1707,6 +1703,50 @@ help:
|
|||
PHONY += prepare
|
||||
endif # KBUILD_EXTMOD
|
||||
|
||||
# Single targets
|
||||
# ---------------------------------------------------------------------------
|
||||
# To build individual files in subdirectories, you can do like this:
|
||||
#
|
||||
# make foo/bar/baz.s
|
||||
#
|
||||
# The supported suffixes for single-target are listed in 'single-targets'
|
||||
#
|
||||
# To build only under specific subdirectories, you can do like this:
|
||||
#
|
||||
# make foo/bar/baz/
|
||||
|
||||
ifdef single-build
|
||||
|
||||
# .ko is special because modpost is needed
|
||||
single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS)))
|
||||
single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS)))
|
||||
|
||||
$(single-ko): single_modpost
|
||||
@:
|
||||
$(single-no-ko): descend
|
||||
@:
|
||||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# For the single build of in-tree modules, use a temporary file to avoid
|
||||
# the situation of modules_install installing an invalid modules.order.
|
||||
MODORDER := .modules.tmp
|
||||
endif
|
||||
|
||||
PHONY += single_modpost
|
||||
single_modpost: $(single-no-ko)
|
||||
$(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
|
||||
KBUILD_MODULES := 1
|
||||
|
||||
export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
|
||||
|
||||
# trim unrelated directories
|
||||
build-dirs := $(foreach d, $(build-dirs), \
|
||||
$(if $(filter $(d)/%, $(KBUILD_SINGLE_TARGETS)), $(d)))
|
||||
|
||||
endif
|
||||
|
||||
# Handle descending into subdirectories listed in $(build-dirs)
|
||||
# Preset locale variables to speed up the build process. Limit locale
|
||||
# tweaks to this spot to avoid wrong language settings when running
|
||||
|
|
@ -1715,7 +1755,9 @@ endif # KBUILD_EXTMOD
|
|||
PHONY += descend $(build-dirs)
|
||||
descend: $(build-dirs)
|
||||
$(build-dirs): prepare
|
||||
$(Q)$(MAKE) $(build)=$@ single-build=$(single-build) need-builtin=1 need-modorder=1
|
||||
$(Q)$(MAKE) $(build)=$@ \
|
||||
single-build=$(if $(filter-out $@/, $(single-no-ko)),1) \
|
||||
need-builtin=1 need-modorder=1
|
||||
|
||||
clean-dirs := $(addprefix _clean_, $(clean-dirs))
|
||||
PHONY += $(clean-dirs) clean
|
||||
|
|
@ -1820,50 +1862,6 @@ tools/%: FORCE
|
|||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
|
||||
# Single targets
|
||||
# ---------------------------------------------------------------------------
|
||||
# To build individual files in subdirectories, you can do like this:
|
||||
#
|
||||
# make foo/bar/baz.s
|
||||
#
|
||||
# The supported suffixes for single-target are listed in 'single-targets'
|
||||
#
|
||||
# To build only under specific subdirectories, you can do like this:
|
||||
#
|
||||
# make foo/bar/baz/
|
||||
|
||||
ifdef single-build
|
||||
|
||||
single-all := $(filter $(single-targets), $(MAKECMDGOALS))
|
||||
|
||||
# .ko is special because modpost is needed
|
||||
single-ko := $(sort $(filter %.ko, $(single-all)))
|
||||
single-no-ko := $(sort $(patsubst %.ko,%.mod, $(single-all)))
|
||||
|
||||
$(single-ko): single_modpost
|
||||
@:
|
||||
$(single-no-ko): descend
|
||||
@:
|
||||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# For the single build of in-tree modules, use a temporary file to avoid
|
||||
# the situation of modules_install installing an invalid modules.order.
|
||||
MODORDER := .modules.tmp
|
||||
endif
|
||||
|
||||
PHONY += single_modpost
|
||||
single_modpost: $(single-no-ko)
|
||||
$(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
|
||||
KBUILD_MODULES := 1
|
||||
|
||||
export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
|
||||
|
||||
single-build = $(if $(filter-out $@/, $(single-no-ko)),1)
|
||||
|
||||
endif
|
||||
|
||||
# FIXME Should go into a make.lib or something
|
||||
# ===========================================================================
|
||||
|
||||
|
|
|
|||
139656
abi_gki_aarch64.xml
139656
abi_gki_aarch64.xml
File diff suppressed because it is too large
Load diff
|
|
@ -8,8 +8,7 @@
|
|||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_const_caps_ready
|
||||
bus_register
|
||||
bus_unregister
|
||||
bcmp
|
||||
cancel_delayed_work_sync
|
||||
capable
|
||||
__cfi_slowpath
|
||||
|
|
@ -18,15 +17,10 @@
|
|||
consume_skb
|
||||
cpu_hwcap_keys
|
||||
cpu_hwcaps
|
||||
cpumask_next
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
debug_smp_processor_id
|
||||
delayed_work_timer_fn
|
||||
destroy_workqueue
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
device_register
|
||||
device_unregister
|
||||
|
|
@ -36,15 +30,12 @@
|
|||
dev_queue_xmit
|
||||
dev_set_name
|
||||
_dev_warn
|
||||
dma_alloc_attrs
|
||||
dma_direct_map_page
|
||||
dma_direct_unmap_page
|
||||
dma_fence_release
|
||||
dma_fence_wait_timeout
|
||||
dma_free_attrs
|
||||
dma_resv_add_excl_fence
|
||||
dma_set_coherent_mask
|
||||
dma_set_mask
|
||||
down_write
|
||||
ethtool_op_get_link
|
||||
eth_validate_addr
|
||||
event_triggers_call
|
||||
|
|
@ -55,11 +46,13 @@
|
|||
free_irq
|
||||
free_netdev
|
||||
__free_pages
|
||||
get_device
|
||||
get_random_bytes
|
||||
get_unused_fd_flags
|
||||
hwrng_register
|
||||
hwrng_unregister
|
||||
ida_alloc_range
|
||||
ida_free
|
||||
init_net
|
||||
init_timer_key
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
|
|
@ -68,15 +61,26 @@
|
|||
kfree_skb
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmem_cache_alloc
|
||||
kmem_cache_alloc_trace
|
||||
kmem_cache_create
|
||||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
kmemdup
|
||||
kstrdup
|
||||
kvfree
|
||||
kvmalloc_node
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
__local_bh_enable_ip
|
||||
lock_sock_nested
|
||||
memcpy
|
||||
memset
|
||||
misc_deregister
|
||||
misc_register
|
||||
mod_timer
|
||||
__module_get
|
||||
module_layout
|
||||
module_put
|
||||
msleep
|
||||
__mutex_init
|
||||
|
|
@ -94,6 +98,7 @@
|
|||
netif_device_detach
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
no_llseek
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
param_ops_bool
|
||||
|
|
@ -103,11 +108,11 @@
|
|||
passthru_features_check
|
||||
pci_disable_device
|
||||
pci_enable_device
|
||||
pci_iomap
|
||||
pci_read_config_dword
|
||||
__pci_register_driver
|
||||
pci_set_master
|
||||
pci_unregister_driver
|
||||
__per_cpu_offset
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
platform_device_add
|
||||
|
|
@ -117,18 +122,16 @@
|
|||
platform_device_unregister
|
||||
__platform_driver_register
|
||||
platform_driver_unregister
|
||||
preempt_count_add
|
||||
preempt_count_sub
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
printk
|
||||
__put_cred
|
||||
put_device
|
||||
__put_page
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
queue_delayed_work_on
|
||||
queue_work_on
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_lock_irq
|
||||
|
|
@ -143,6 +146,8 @@
|
|||
refcount_inc_checked
|
||||
register_netdev
|
||||
register_netdevice_notifier
|
||||
register_virtio_device
|
||||
register_virtio_driver
|
||||
release_sock
|
||||
remove_wait_queue
|
||||
request_threaded_irq
|
||||
|
|
@ -151,10 +156,10 @@
|
|||
schedule
|
||||
schedule_timeout
|
||||
schedule_timeout_uninterruptible
|
||||
scnprintf
|
||||
seq_printf
|
||||
sg_init_one
|
||||
sg_init_table
|
||||
sg_next
|
||||
skb_clone
|
||||
skb_put
|
||||
sk_free
|
||||
|
|
@ -172,6 +177,7 @@
|
|||
strstr
|
||||
synchronize_irq
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
system_wq
|
||||
trace_define_field
|
||||
trace_event_buffer_commit
|
||||
|
|
@ -185,7 +191,34 @@
|
|||
unregister_netdev
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_virtio_device
|
||||
unregister_virtio_driver
|
||||
up_read
|
||||
up_write
|
||||
usleep_range
|
||||
virtio_check_driver_offered_feature
|
||||
virtio_config_changed
|
||||
virtio_max_dma_size
|
||||
virtqueue_add_inbuf
|
||||
virtqueue_add_outbuf
|
||||
virtqueue_add_sgs
|
||||
virtqueue_detach_unused_buf
|
||||
virtqueue_disable_cb
|
||||
virtqueue_enable_cb
|
||||
virtqueue_get_avail_addr
|
||||
virtqueue_get_buf
|
||||
virtqueue_get_desc_addr
|
||||
virtqueue_get_used_addr
|
||||
virtqueue_get_vring_size
|
||||
virtqueue_is_broken
|
||||
virtqueue_kick
|
||||
virtqueue_kick_prepare
|
||||
virtqueue_notify
|
||||
vmemmap
|
||||
vring_create_virtqueue
|
||||
vring_del_virtqueue
|
||||
vring_interrupt
|
||||
vring_transport_features
|
||||
wait_woken
|
||||
__wake_up
|
||||
__warn_printk
|
||||
|
|
@ -193,56 +226,9 @@
|
|||
ww_mutex_lock_interruptible
|
||||
ww_mutex_unlock
|
||||
|
||||
# required by binfmt_misc.ko
|
||||
bin2hex
|
||||
bprm_change_interp
|
||||
clear_inode
|
||||
__close_fd
|
||||
copy_strings_kernel
|
||||
_ctype
|
||||
current_time
|
||||
d_drop
|
||||
default_llseek
|
||||
dentry_open
|
||||
d_instantiate
|
||||
down_write
|
||||
dput
|
||||
drop_nlink
|
||||
filp_close
|
||||
free_pages
|
||||
__get_free_pages
|
||||
get_next_ino
|
||||
get_tree_single
|
||||
iput
|
||||
kernel_read
|
||||
kill_litter_super
|
||||
kstrtoint
|
||||
lockref_get
|
||||
lookup_one_len
|
||||
new_inode
|
||||
open_exec
|
||||
prepare_binprm
|
||||
_raw_write_lock
|
||||
_raw_write_unlock
|
||||
__register_binfmt
|
||||
register_filesystem
|
||||
remove_arg_zero
|
||||
search_binary_handler
|
||||
simple_fill_super
|
||||
simple_pin_fs
|
||||
simple_read_from_buffer
|
||||
simple_release_fs
|
||||
simple_statfs
|
||||
strchr
|
||||
string_unescape
|
||||
strrchr
|
||||
unregister_binfmt
|
||||
unregister_filesystem
|
||||
up_write
|
||||
would_dump
|
||||
|
||||
# required by blk-mq-virtio.ko
|
||||
blk_mq_map_queues
|
||||
# required by ac97_bus.ko
|
||||
bus_register
|
||||
bus_unregister
|
||||
|
||||
# required by dummy-cpufreq.ko
|
||||
cpufreq_generic_attr
|
||||
|
|
@ -253,9 +239,7 @@
|
|||
device_create_file
|
||||
device_remove_file
|
||||
ktime_get_ts64
|
||||
mod_timer
|
||||
platform_device_add_data
|
||||
scnprintf
|
||||
sg_miter_next
|
||||
sg_miter_start
|
||||
sg_miter_stop
|
||||
|
|
@ -279,7 +263,6 @@
|
|||
usb_put_dev
|
||||
usb_put_hcd
|
||||
usb_remove_hcd
|
||||
usleep_range
|
||||
|
||||
# required by failover.ko
|
||||
netdev_master_upper_dev_link
|
||||
|
|
@ -289,7 +272,6 @@
|
|||
bus_find_device
|
||||
device_find_child
|
||||
device_match_name
|
||||
kstrdup
|
||||
platform_bus_type
|
||||
strsep
|
||||
|
||||
|
|
@ -347,6 +329,92 @@
|
|||
rtc_tm_to_time64
|
||||
rtc_update_irq
|
||||
|
||||
# required by sdcardfs.ko
|
||||
__break_lease
|
||||
call_rcu
|
||||
clear_inode
|
||||
clear_nlink
|
||||
configfs_register_subsystem
|
||||
configfs_unregister_subsystem
|
||||
config_group_init
|
||||
config_group_init_type_name
|
||||
config_item_init_type_name
|
||||
copy_fs_struct
|
||||
_ctype
|
||||
d_drop
|
||||
dentry_open
|
||||
dget_parent
|
||||
d_invalidate
|
||||
d_make_root
|
||||
d_path
|
||||
dput
|
||||
d_rehash
|
||||
d_set_d_op
|
||||
d_splice_alias
|
||||
filemap_write_and_wait
|
||||
filp_close
|
||||
filp_open
|
||||
free_fs_struct
|
||||
fscrypt_register_key_removal_notifier
|
||||
fscrypt_unregister_key_removal_notifier
|
||||
fs_parse
|
||||
fsstack_copy_inode_size
|
||||
generic_delete_inode
|
||||
__generic_file_fsync
|
||||
generic_file_llseek
|
||||
generic_permission
|
||||
generic_read_dir
|
||||
iget5_locked
|
||||
igrab
|
||||
init_special_inode
|
||||
inode_init_once
|
||||
inode_newsize_ok
|
||||
iput
|
||||
iterate_dir
|
||||
kern_path
|
||||
kill_anon_super
|
||||
kstrtouint
|
||||
kstrtoull
|
||||
lockref_get
|
||||
lock_rename
|
||||
lookup_one_len_unlocked
|
||||
mntget
|
||||
names_cachep
|
||||
notify_change2
|
||||
override_creds
|
||||
path_get
|
||||
path_put
|
||||
prepare_creds
|
||||
___ratelimit
|
||||
register_filesystem
|
||||
revert_creds
|
||||
seq_puts
|
||||
setattr_prepare
|
||||
set_fs_pwd
|
||||
set_nlink
|
||||
shrink_dcache_sb
|
||||
strcasecmp
|
||||
strncasecmp
|
||||
strrchr
|
||||
touch_atime
|
||||
truncate_inode_pages
|
||||
truncate_setsize
|
||||
unlock_new_inode
|
||||
unlock_rename
|
||||
unregister_filesystem
|
||||
vfs_create2
|
||||
vfs_fsync_range
|
||||
vfs_getattr
|
||||
vfs_get_super
|
||||
vfs_mkdir2
|
||||
vfs_path_lookup
|
||||
vfs_read
|
||||
vfs_rename2
|
||||
vfs_rmdir2
|
||||
vfs_statfs
|
||||
vfs_unlink2
|
||||
vfs_write
|
||||
|
||||
# required by snd-ac97-codec.ko
|
||||
pci_read_config_word
|
||||
simple_strtoul
|
||||
|
|
@ -369,7 +437,6 @@
|
|||
# required by snd-intel8x0.ko
|
||||
ktime_get
|
||||
param_ops_bint
|
||||
pci_iomap
|
||||
pci_release_regions
|
||||
pci_request_regions
|
||||
pci_write_config_dword
|
||||
|
|
@ -394,15 +461,73 @@
|
|||
snd_pcm_period_elapsed
|
||||
snd_pcm_set_ops
|
||||
|
||||
# required by test_meminit.ko
|
||||
kmem_cache_alloc_bulk
|
||||
kmem_cache_free_bulk
|
||||
vfree
|
||||
vmalloc
|
||||
|
||||
# required by tpm.ko
|
||||
alloc_chrdev_region
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__class_create
|
||||
class_destroy
|
||||
__compat_only_sysfs_link_entry_to_kobj
|
||||
del_timer_sync
|
||||
device_initialize
|
||||
devm_add_action
|
||||
down_read
|
||||
efi
|
||||
efi_tpm_final_log_size
|
||||
hash_digest_size
|
||||
idr_alloc
|
||||
idr_destroy
|
||||
idr_get_next
|
||||
idr_remove
|
||||
idr_replace
|
||||
__init_rwsem
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
krealloc
|
||||
memchr_inv
|
||||
memremap
|
||||
memunmap
|
||||
of_find_property
|
||||
of_get_property
|
||||
of_property_match_string
|
||||
physvirt_offset
|
||||
securityfs_create_dir
|
||||
securityfs_create_file
|
||||
securityfs_remove
|
||||
seq_lseek
|
||||
seq_open
|
||||
seq_putc
|
||||
seq_read
|
||||
seq_release
|
||||
seq_write
|
||||
sysfs_remove_link
|
||||
unregister_chrdev_region
|
||||
__usecs_to_jiffies
|
||||
|
||||
# required by tpm_vtpm_proxy.ko
|
||||
anon_inode_getfile
|
||||
|
||||
# required by ttm.ko
|
||||
clear_page
|
||||
copy_page
|
||||
dev_driver_string
|
||||
devres_add
|
||||
__devres_alloc_node
|
||||
devres_alloc_node
|
||||
devres_destroy
|
||||
devres_free
|
||||
dma_alloc_attrs
|
||||
dma_direct_map_page
|
||||
dma_direct_unmap_page
|
||||
dma_fence_enable_sw_signaling
|
||||
dma_fence_signal
|
||||
dma_free_attrs
|
||||
dma_resv_add_shared_fence
|
||||
dma_resv_copy_fences
|
||||
dma_resv_fini
|
||||
|
|
@ -438,6 +563,9 @@
|
|||
__memset_io
|
||||
mutex_is_locked
|
||||
nr_swap_pages
|
||||
preempt_schedule
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
refcount_inc_not_zero_checked
|
||||
register_shrinker
|
||||
reservation_ww_class
|
||||
|
|
@ -448,7 +576,6 @@
|
|||
si_meminfo
|
||||
unmap_mapping_range
|
||||
unregister_shrinker
|
||||
up_read
|
||||
vmalloc_to_page
|
||||
vmap
|
||||
vmf_insert_mixed
|
||||
|
|
@ -565,14 +692,10 @@
|
|||
drm_universal_plane_init
|
||||
__get_task_comm
|
||||
kmalloc_order_trace
|
||||
kmem_cache_alloc
|
||||
kmem_cache_create
|
||||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
memdup_user
|
||||
put_unused_fd
|
||||
__sg_alloc_table_from_pages
|
||||
sg_free_table
|
||||
sg_next
|
||||
strncpy
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
|
|
@ -580,20 +703,9 @@
|
|||
|
||||
# required by virtio-rng.ko
|
||||
complete
|
||||
hwrng_register
|
||||
hwrng_unregister
|
||||
wait_for_completion
|
||||
wait_for_completion_killable
|
||||
|
||||
# required by virtio.ko
|
||||
add_uevent_var
|
||||
device_add
|
||||
device_initialize
|
||||
driver_register
|
||||
driver_unregister
|
||||
ida_destroy
|
||||
panic
|
||||
|
||||
# required by virtio_blk.ko
|
||||
__alloc_disk_node
|
||||
blk_cleanup_queue
|
||||
|
|
@ -609,6 +721,7 @@
|
|||
blk_mq_start_stopped_hw_queues
|
||||
blk_mq_stop_hw_queue
|
||||
blk_mq_unquiesce_queue
|
||||
blk_mq_virtio_map_queues
|
||||
blk_put_request
|
||||
blk_queue_alignment_offset
|
||||
blk_queue_flag_set
|
||||
|
|
@ -639,23 +752,6 @@
|
|||
__sysfs_match_string
|
||||
unregister_blkdev
|
||||
|
||||
# required by virtio_crypto.ko
|
||||
cpu_bit_bitmap
|
||||
cpu_topology
|
||||
crypto_ablkcipher_type
|
||||
crypto_engine_alloc_init
|
||||
crypto_engine_exit
|
||||
crypto_engine_start
|
||||
crypto_finalize_ablkcipher_request
|
||||
crypto_register_alg
|
||||
crypto_transfer_ablkcipher_request_to_engine
|
||||
crypto_unregister_alg
|
||||
kzfree
|
||||
scatterwalk_map_and_copy
|
||||
sg_nents
|
||||
sg_nents_for_len
|
||||
try_module_get
|
||||
|
||||
# required by virtio_input.ko
|
||||
input_alloc_absinfo
|
||||
input_allocate_device
|
||||
|
|
@ -679,7 +775,6 @@
|
|||
|
||||
# required by virtio_net.ko
|
||||
arch_bpf_jit_check_func
|
||||
bcmp
|
||||
bpf_prog_add
|
||||
bpf_prog_put
|
||||
bpf_prog_sub
|
||||
|
|
@ -690,7 +785,10 @@
|
|||
__cpuhp_setup_state
|
||||
__cpuhp_state_add_instance
|
||||
__cpuhp_state_remove_instance
|
||||
cpumask_next
|
||||
cpumask_next_wrap
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
eth_commit_mac_addr_change
|
||||
eth_prepare_mac_addr_change
|
||||
ethtool_op_get_ts_info
|
||||
|
|
@ -727,8 +825,12 @@
|
|||
skb_to_sgvec
|
||||
skb_tstamp_tx
|
||||
softnet_data
|
||||
__this_cpu_preempt_check
|
||||
__tracepoint_xdp_exception
|
||||
virtqueue_add_inbuf_ctx
|
||||
virtqueue_enable_cb_delayed
|
||||
virtqueue_enable_cb_prepare
|
||||
virtqueue_get_buf_ctx
|
||||
virtqueue_poll
|
||||
xdp_convert_zc_to_xdp_frame
|
||||
xdp_do_flush_map
|
||||
xdp_do_redirect
|
||||
|
|
@ -739,7 +841,6 @@
|
|||
xdp_rxq_info_unreg
|
||||
|
||||
# required by virtio_pci.ko
|
||||
get_device
|
||||
irq_set_affinity_hint
|
||||
pci_alloc_irq_vectors_affinity
|
||||
pci_find_capability
|
||||
|
|
@ -750,25 +851,18 @@
|
|||
pci_irq_get_affinity
|
||||
pci_irq_vector
|
||||
pci_read_config_byte
|
||||
pci_release_region
|
||||
pci_release_selected_regions
|
||||
pci_request_region
|
||||
pci_request_selected_regions
|
||||
virtio_device_freeze
|
||||
virtio_device_restore
|
||||
|
||||
# required by virtio_pmem.ko
|
||||
nvdimm_bus_register
|
||||
nvdimm_bus_unregister
|
||||
nvdimm_pmem_region_create
|
||||
|
||||
# required by virtio_ring.ko
|
||||
alloc_pages_exact
|
||||
dma_max_mapping_size
|
||||
free_pages_exact
|
||||
kimage_voffset
|
||||
physvirt_offset
|
||||
vabits_actual
|
||||
|
||||
# required by vmw_vsock_virtio_transport.ko
|
||||
synchronize_rcu
|
||||
|
||||
# required by vmw_vsock_virtio_transport_common.ko
|
||||
bpf_trace_run10
|
||||
bpf_trace_run8
|
||||
|
|
@ -779,14 +873,11 @@
|
|||
|
||||
# required by vsock.ko
|
||||
autoremove_wake_function
|
||||
misc_deregister
|
||||
misc_register
|
||||
nonseekable_open
|
||||
prandom_u32
|
||||
prepare_to_wait
|
||||
proto_register
|
||||
proto_unregister
|
||||
__put_cred
|
||||
_raw_write_lock_bh
|
||||
_raw_write_unlock_bh
|
||||
security_sock_graft
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
1160
abi_gki_aarch64_goldfish_whitelist
Normal file
1160
abi_gki_aarch64_goldfish_whitelist
Normal file
File diff suppressed because it is too large
Load diff
1550
abi_gki_aarch64_hikey960_whitelist
Normal file
1550
abi_gki_aarch64_hikey960_whitelist
Normal file
File diff suppressed because it is too large
Load diff
2370
abi_gki_aarch64_qcom_whitelist
Normal file
2370
abi_gki_aarch64_qcom_whitelist
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -31,6 +31,8 @@
|
|||
cancel_work_sync
|
||||
cdev_add
|
||||
cdev_del
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfi_slowpath
|
||||
__check_object_size
|
||||
|
|
@ -52,6 +54,7 @@
|
|||
clk_unprepare
|
||||
complete
|
||||
complete_all
|
||||
config_ep_by_speed
|
||||
__const_udelay
|
||||
cpu_hwcap_keys
|
||||
cpu_hwcaps
|
||||
|
|
@ -61,7 +64,6 @@
|
|||
__cpu_possible_mask
|
||||
csum_ipv6_magic
|
||||
csum_partial
|
||||
debug_smp_processor_id
|
||||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
|
|
@ -85,15 +87,19 @@
|
|||
device_property_read_u32_array
|
||||
device_register
|
||||
device_remove_file
|
||||
device_set_wakeup_capable
|
||||
device_unregister
|
||||
_dev_info
|
||||
__dev_kfree_skb_any
|
||||
devm_add_action
|
||||
devm_backlight_device_register
|
||||
devm_clk_bulk_get_all
|
||||
devm_clk_get
|
||||
devm_free_irq
|
||||
devm_gpiochip_add_data
|
||||
devm_gpiod_get
|
||||
devm_gpio_request
|
||||
devm_hwspin_lock_request_specific
|
||||
__devm_iio_device_register
|
||||
devm_ioremap_nocache
|
||||
devm_ioremap_resource
|
||||
|
|
@ -101,6 +107,7 @@
|
|||
devm_kmalloc
|
||||
devm_kmemdup
|
||||
devm_mfd_add_devices
|
||||
devm_nvmem_register
|
||||
devm_pinctrl_get
|
||||
devm_power_supply_register
|
||||
__devm_regmap_init
|
||||
|
|
@ -109,6 +116,9 @@
|
|||
devm_regulator_get
|
||||
devm_regulator_register
|
||||
devm_request_threaded_irq
|
||||
devm_spi_register_controller
|
||||
devm_usb_get_phy
|
||||
devm_usb_get_phy_by_phandle
|
||||
dev_queue_xmit
|
||||
dev_set_name
|
||||
_dev_warn
|
||||
|
|
@ -158,26 +168,35 @@
|
|||
__free_pages
|
||||
free_pages_exact
|
||||
free_percpu
|
||||
free_reserved_area
|
||||
freezing_slow_path
|
||||
fwnode_property_present
|
||||
fwnode_property_read_string
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_create
|
||||
gen_pool_free_owner
|
||||
get_cpu_device
|
||||
__get_free_pages
|
||||
get_random_bytes
|
||||
gpiochip_get_data
|
||||
gpiochip_line_is_irq
|
||||
gpiod_direction_input
|
||||
gpiod_direction_output_raw
|
||||
gpiod_get_raw_value
|
||||
gpiod_set_raw_value
|
||||
gpiod_to_chip
|
||||
gpiod_to_irq
|
||||
gpio_free
|
||||
gpio_request
|
||||
gpio_to_desc
|
||||
handle_bad_irq
|
||||
handle_edge_irq
|
||||
handle_level_irq
|
||||
i2c_del_driver
|
||||
i2c_register_driver
|
||||
i2c_smbus_read_byte_data
|
||||
|
|
@ -202,6 +221,7 @@
|
|||
__ioremap
|
||||
iounmap
|
||||
ip_route_output_flow
|
||||
irq_find_mapping
|
||||
irq_get_irq_data
|
||||
irq_modify_status
|
||||
irq_of_parse_and_map
|
||||
|
|
@ -210,7 +230,6 @@
|
|||
jiffies
|
||||
jiffies_to_msecs
|
||||
kernel_kobj
|
||||
kernel_read
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
|
|
@ -230,6 +249,7 @@
|
|||
kmemdup
|
||||
kobject_create_and_add
|
||||
kobject_uevent_env
|
||||
kstrndup
|
||||
kstrtobool
|
||||
kstrtoint
|
||||
kstrtoll
|
||||
|
|
@ -253,6 +273,7 @@
|
|||
msleep
|
||||
__mutex_init
|
||||
mutex_lock
|
||||
mutex_lock_interruptible
|
||||
mutex_trylock
|
||||
mutex_unlock
|
||||
nd_tbl
|
||||
|
|
@ -281,11 +302,13 @@
|
|||
of_find_property
|
||||
of_get_child_by_name
|
||||
of_get_named_gpio_flags
|
||||
of_get_next_available_child
|
||||
of_get_next_child
|
||||
of_get_property
|
||||
of_get_regulator_init_data
|
||||
of_graph_get_remote_node
|
||||
of_match_node
|
||||
of_nvmem_cell_get
|
||||
of_parse_phandle
|
||||
of_parse_phandle_with_args
|
||||
of_platform_depopulate
|
||||
|
|
@ -294,6 +317,7 @@
|
|||
of_property_match_string
|
||||
of_property_read_string
|
||||
of_property_read_u32_index
|
||||
of_property_read_u64
|
||||
of_property_read_variable_u32_array
|
||||
of_prop_next_string
|
||||
panic
|
||||
|
|
@ -330,6 +354,8 @@
|
|||
pm_runtime_allow
|
||||
__pm_runtime_disable
|
||||
pm_runtime_enable
|
||||
pm_runtime_force_resume
|
||||
pm_runtime_force_suspend
|
||||
pm_runtime_forbid
|
||||
__pm_runtime_idle
|
||||
__pm_runtime_resume
|
||||
|
|
@ -345,8 +371,6 @@
|
|||
power_supply_get_drvdata
|
||||
power_supply_get_property
|
||||
power_supply_put
|
||||
preempt_count_add
|
||||
preempt_count_sub
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
|
|
@ -449,6 +473,7 @@
|
|||
snd_soc_register_component
|
||||
snd_soc_unregister_component
|
||||
snprintf
|
||||
__spi_alloc_controller
|
||||
sprintf
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
|
|
@ -466,6 +491,8 @@
|
|||
strncpy_from_user
|
||||
strnlen
|
||||
strstr
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
syscon_regmap_lookup_by_phandle
|
||||
syscon_regmap_lookup_by_phandle_args
|
||||
sysfs_create_file_ns
|
||||
|
|
@ -485,6 +512,7 @@
|
|||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
thermal_zone_get_zone_by_name
|
||||
trace_define_field
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
|
|
@ -530,15 +558,28 @@
|
|||
usb_control_msg
|
||||
usb_del_gadget_udc
|
||||
usb_deregister
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
usb_ep_enable
|
||||
usb_ep_free_request
|
||||
usb_ep_queue
|
||||
usb_ep_set_maxpacket_limit
|
||||
usb_find_common_endpoints
|
||||
usb_free_coherent
|
||||
usb_free_urb
|
||||
usb_function_register
|
||||
usb_function_unregister
|
||||
usb_gadget_giveback_request
|
||||
usb_gadget_udc_reset
|
||||
usb_get_dr_mode
|
||||
usb_get_intf
|
||||
usb_hcd_is_primary_hcd
|
||||
usb_interface_id
|
||||
usb_kill_urb
|
||||
usb_phy_get_charger_current
|
||||
usb_phy_set_charger_current
|
||||
usb_put_function_instance
|
||||
usb_put_intf
|
||||
usb_register_driver
|
||||
usb_submit_urb
|
||||
|
|
@ -550,6 +591,7 @@
|
|||
vm_map_ram
|
||||
vm_unmap_ram
|
||||
vsnprintf
|
||||
vunmap
|
||||
wait_for_completion
|
||||
wait_for_completion_interruptible
|
||||
wait_for_completion_interruptible_timeout
|
||||
|
|
@ -583,9 +625,21 @@
|
|||
usb_get_from_anchor
|
||||
usb_ifnum_to_if
|
||||
|
||||
# required by charger-manager.ko
|
||||
alarm_cancel
|
||||
alarm_expires_remaining
|
||||
alarm_init
|
||||
alarm_start
|
||||
alarmtimer_get_rtcdev
|
||||
devm_kasprintf
|
||||
regulator_force_disable
|
||||
regulator_set_current_limit
|
||||
thermal_zone_get_temp
|
||||
|
||||
# required by clk-sprd.ko
|
||||
clk_hw_get_num_parents
|
||||
clk_hw_get_parent
|
||||
clk_hw_is_enabled
|
||||
__clk_mux_determine_rate
|
||||
devm_clk_hw_register
|
||||
devm_of_clk_add_hw_provider
|
||||
|
|
@ -650,6 +704,15 @@
|
|||
of_property_read_variable_u8_array
|
||||
request_firmware_nowait
|
||||
|
||||
# required by gpio-eic-sprd.ko
|
||||
gpiochip_find
|
||||
|
||||
# required by gpio-pmic-eic-sprd.ko
|
||||
handle_nested_irq
|
||||
|
||||
# required by gpio-sprd.ko
|
||||
__platform_driver_probe
|
||||
|
||||
# required by hid-generic.ko
|
||||
bus_for_each_drv
|
||||
hid_bus_type
|
||||
|
|
@ -659,6 +722,20 @@
|
|||
__hid_register_driver
|
||||
hid_unregister_driver
|
||||
|
||||
# required by i2c-sprd.ko
|
||||
i2c_add_numbered_adapter
|
||||
i2c_del_adapter
|
||||
|
||||
# required by img_mem.ko
|
||||
dma_direct_map_sg
|
||||
dma_direct_sync_sg_for_cpu
|
||||
dma_direct_sync_sg_for_device
|
||||
dma_direct_unmap_sg
|
||||
idr_get_next
|
||||
sg_alloc_table
|
||||
sg_free_table
|
||||
vsprintf
|
||||
|
||||
# required by ims_bridge.ko
|
||||
in4_pton
|
||||
in6_pton
|
||||
|
|
@ -684,6 +761,68 @@
|
|||
strim
|
||||
xfrm_lookup
|
||||
|
||||
# required by kfifo_buf.ko
|
||||
devres_add
|
||||
devres_alloc_node
|
||||
devres_free
|
||||
devres_release
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
__kfifo_to_user
|
||||
|
||||
# required by leds-sc27xx-bltc.ko
|
||||
devm_led_classdev_register_ext
|
||||
|
||||
# required by mali_gondul.ko
|
||||
anon_inode_getfd
|
||||
__bitmap_weight
|
||||
clear_page
|
||||
devfreq_add_device
|
||||
devfreq_remove_device
|
||||
devfreq_resume_device
|
||||
devfreq_suspend_device
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_find_freq_floor
|
||||
dev_pm_opp_put_regulators
|
||||
dev_pm_opp_set_regulators
|
||||
dma_fence_get_status
|
||||
dma_fence_remove_callback
|
||||
downgrade_write
|
||||
down_trylock
|
||||
get_user_pages
|
||||
get_user_pages_fast
|
||||
get_user_pages_remote
|
||||
hrtimer_active
|
||||
hrtimer_forward
|
||||
iomem_resource
|
||||
kstrtobool_from_user
|
||||
memstart_addr
|
||||
__mmdrop
|
||||
nonseekable_open
|
||||
of_property_read_variable_u64_array
|
||||
param_ops_byte
|
||||
rb_erase
|
||||
rb_first
|
||||
rb_insert_color
|
||||
rb_next
|
||||
rb_prev
|
||||
rb_replace_node
|
||||
regulator_get_optional
|
||||
__release_region
|
||||
remap_vmalloc_range
|
||||
__request_region
|
||||
reservation_ww_class
|
||||
seq_open
|
||||
__seq_open_private
|
||||
seq_release_private
|
||||
seq_write
|
||||
set_page_dirty_lock
|
||||
strcspn
|
||||
system_highpri_wq
|
||||
vmalloc_user
|
||||
ww_mutex_lock
|
||||
ww_mutex_unlock
|
||||
|
||||
# required by microarray_fp.ko
|
||||
cdev_alloc
|
||||
|
||||
|
|
@ -730,9 +869,15 @@
|
|||
pci_stop_and_remove_bus_device
|
||||
pci_unlock_rescan_remove
|
||||
|
||||
# required by phy-sprd-sharkl3.ko
|
||||
usb_add_phy_dev
|
||||
usb_phy_set_charger_state
|
||||
usb_remove_phy
|
||||
|
||||
# required by pinctrl-sprd.ko
|
||||
devm_platform_ioremap_resource
|
||||
of_property_read_string_helper
|
||||
pinconf_generic_parse_dt_config
|
||||
pinctrl_dev_get_drvdata
|
||||
pinctrl_register
|
||||
pinctrl_unregister
|
||||
|
|
@ -740,6 +885,7 @@
|
|||
pinctrl_utils_add_map_mux
|
||||
pinctrl_utils_free_map
|
||||
pinctrl_utils_reserve_map
|
||||
pin_get_name
|
||||
|
||||
# required by pvrsrvkm.ko
|
||||
autoremove_wake_function
|
||||
|
|
@ -831,10 +977,31 @@
|
|||
vsscanf
|
||||
vzalloc
|
||||
|
||||
# required by pwm-sprd.ko
|
||||
pwmchip_add
|
||||
pwmchip_remove
|
||||
|
||||
# required by pwm_bl.ko
|
||||
backlight_device_register
|
||||
backlight_device_unregister
|
||||
devm_pwm_get
|
||||
gpiod_get_direction
|
||||
int_pow
|
||||
pwm_free
|
||||
pwm_request
|
||||
|
||||
# required by roles.ko
|
||||
fwnode_connection_find_match
|
||||
fwnode_get_parent
|
||||
|
||||
# required by rtc-sc27xx.ko
|
||||
devm_rtc_allocate_device
|
||||
rtc_ktime_to_tm
|
||||
__rtc_register_device
|
||||
rtc_time64_to_tm
|
||||
rtc_tm_to_time64
|
||||
rtc_update_irq
|
||||
|
||||
# required by sc2703-bl.ko
|
||||
of_pwm_get
|
||||
pwm_apply_state
|
||||
|
|
@ -860,15 +1027,126 @@
|
|||
power_supply_find_ocv2cap_table
|
||||
power_supply_ocv2cap_simple
|
||||
power_supply_put_battery_info
|
||||
power_supply_temp2resist_simple
|
||||
|
||||
# required by sc27xx_pd.ko
|
||||
device_get_named_child_node
|
||||
devm_extcon_register_notifier_all
|
||||
devm_regulator_get_optional
|
||||
|
||||
# required by sc27xx_typec.ko
|
||||
devm_extcon_dev_allocate
|
||||
devm_extcon_dev_register
|
||||
extcon_set_state_sync
|
||||
typec_register_partner
|
||||
typec_register_port
|
||||
typec_set_data_role
|
||||
typec_set_pwr_opmode
|
||||
typec_set_pwr_role
|
||||
typec_set_vconn_role
|
||||
typec_unregister_partner
|
||||
typec_unregister_port
|
||||
|
||||
# required by sc27xx-vibra.ko
|
||||
input_ff_create_memless
|
||||
|
||||
# required by sc9863a-clk.ko
|
||||
device_get_match_data
|
||||
|
||||
# required by sdcardfs.ko
|
||||
__break_lease
|
||||
clear_inode
|
||||
clear_nlink
|
||||
configfs_register_subsystem
|
||||
configfs_unregister_subsystem
|
||||
config_group_init
|
||||
config_group_init_type_name
|
||||
config_item_init_type_name
|
||||
copy_fs_struct
|
||||
d_drop
|
||||
dentry_open
|
||||
dget_parent
|
||||
d_invalidate
|
||||
d_make_root
|
||||
d_path
|
||||
dput
|
||||
d_rehash
|
||||
d_set_d_op
|
||||
d_splice_alias
|
||||
filemap_write_and_wait
|
||||
filp_close
|
||||
filp_open
|
||||
free_fs_struct
|
||||
fscrypt_register_key_removal_notifier
|
||||
fscrypt_unregister_key_removal_notifier
|
||||
fs_parse
|
||||
fsstack_copy_inode_size
|
||||
generic_delete_inode
|
||||
__generic_file_fsync
|
||||
generic_permission
|
||||
generic_read_dir
|
||||
iget5_locked
|
||||
igrab
|
||||
init_special_inode
|
||||
inode_init_once
|
||||
inode_newsize_ok
|
||||
iput
|
||||
iterate_dir
|
||||
kern_path
|
||||
kill_anon_super
|
||||
lockref_get
|
||||
lock_rename
|
||||
lookup_one_len_unlocked
|
||||
mntget
|
||||
names_cachep
|
||||
notify_change2
|
||||
override_creds
|
||||
path_get
|
||||
path_put
|
||||
prepare_creds
|
||||
__put_cred
|
||||
register_filesystem
|
||||
revert_creds
|
||||
setattr_prepare
|
||||
set_fs_pwd
|
||||
set_nlink
|
||||
shrink_dcache_sb
|
||||
strrchr
|
||||
touch_atime
|
||||
truncate_inode_pages
|
||||
truncate_setsize
|
||||
unlock_new_inode
|
||||
unlock_rename
|
||||
unregister_filesystem
|
||||
vfs_create2
|
||||
vfs_fsync_range
|
||||
vfs_get_super
|
||||
vfs_mkdir2
|
||||
vfs_path_lookup
|
||||
vfs_rename2
|
||||
vfs_rmdir2
|
||||
vfs_statfs
|
||||
vfs_unlink2
|
||||
|
||||
# required by sdhci-sprd.ko
|
||||
clk_round_rate
|
||||
mmc_free_host
|
||||
mmc_of_parse
|
||||
mmc_regulator_set_vqmmc
|
||||
mmc_remove_host
|
||||
__sdhci_add_host
|
||||
sdhci_cleanup_host
|
||||
sdhci_enable_clk
|
||||
sdhci_enable_v4_mode
|
||||
sdhci_pltfm_free
|
||||
sdhci_pltfm_init
|
||||
sdhci_request
|
||||
sdhci_reset
|
||||
sdhci_runtime_resume_host
|
||||
sdhci_runtime_suspend_host
|
||||
sdhci_set_bus_width
|
||||
sdhci_setup_host
|
||||
|
||||
# required by sdiohal.ko
|
||||
mmc_detect_change
|
||||
mmc_set_data_timeout
|
||||
|
|
@ -926,7 +1204,6 @@
|
|||
iio_device_alloc
|
||||
iio_device_free
|
||||
iio_device_unregister
|
||||
kernel_write
|
||||
ktime_get_with_offset
|
||||
param_array_ops
|
||||
unregister_pm_notifier
|
||||
|
|
@ -1014,10 +1291,31 @@
|
|||
snd_soc_jack_report
|
||||
snd_soc_put_enum_double
|
||||
|
||||
# required by snd-soc-sprd-platform.ko
|
||||
devm_snd_soc_register_component
|
||||
dma_request_slave_channel
|
||||
of_reserved_mem_device_init_by_idx
|
||||
snd_dma_alloc_pages
|
||||
snd_dma_free_pages
|
||||
|
||||
# required by snd-soc-sprd-vbc-r1p0v3.ko
|
||||
snd_ctl_boolean_mono_info
|
||||
snd_pcm_hw_constraint_list
|
||||
|
||||
# required by sprd-cpufreq-common.ko
|
||||
dev_pm_opp_remove
|
||||
|
||||
# required by sprd-cpufreqhw.ko
|
||||
arch_set_freq_scale
|
||||
cpufreq_generic_attr
|
||||
cpufreq_generic_frequency_table_verify
|
||||
cpufreq_generic_get
|
||||
cpufreq_generic_suspend
|
||||
cpufreq_register_driver
|
||||
cpufreq_unregister_driver
|
||||
dev_pm_opp_free_cpufreq_table
|
||||
dev_pm_opp_init_cpufreq_table
|
||||
|
||||
# required by sprd-dpu.ko
|
||||
component_add
|
||||
component_bind_all
|
||||
|
|
@ -1033,12 +1331,14 @@
|
|||
drm_atomic_helper_async_commit
|
||||
drm_atomic_helper_check
|
||||
drm_atomic_helper_cleanup_planes
|
||||
drm_atomic_helper_commit
|
||||
drm_atomic_helper_commit_cleanup_done
|
||||
drm_atomic_helper_commit_hw_done
|
||||
drm_atomic_helper_commit_modeset_disables
|
||||
drm_atomic_helper_commit_modeset_enables
|
||||
drm_atomic_helper_commit_planes
|
||||
drm_atomic_helper_commit_tail
|
||||
drm_atomic_helper_commit_tail_rpm
|
||||
drm_atomic_helper_connector_destroy_state
|
||||
drm_atomic_helper_connector_duplicate_state
|
||||
drm_atomic_helper_connector_reset
|
||||
|
|
@ -1149,6 +1449,35 @@
|
|||
try_wait_for_completion
|
||||
vfs_write
|
||||
|
||||
# required by spi-sprd.ko
|
||||
dma_request_chan
|
||||
spi_controller_suspend
|
||||
spi_finalize_current_transfer
|
||||
|
||||
# required by spi-sprd-adi.ko
|
||||
unregister_restart_handler
|
||||
|
||||
# required by sprd-dma.ko
|
||||
dma_async_device_register
|
||||
dma_async_device_unregister
|
||||
dma_async_tx_descriptor_init
|
||||
of_dma_controller_free
|
||||
of_dma_controller_register
|
||||
of_dma_simple_xlate
|
||||
|
||||
# required by sprd-gsp.ko
|
||||
__kthread_init_worker
|
||||
kthread_queue_work
|
||||
kthread_worker_fn
|
||||
|
||||
# required by sprd-hwdvfs-sharkl3.ko
|
||||
__i2c_transfer
|
||||
rt_mutex_trylock
|
||||
|
||||
# required by sprd_hwspinlock.ko
|
||||
hwspin_lock_register
|
||||
hwspin_lock_unregister
|
||||
|
||||
# required by sprd-saudio.ko
|
||||
snd_card_free
|
||||
|
||||
|
|
@ -1165,6 +1494,11 @@
|
|||
# required by sprd_cproc.ko
|
||||
of_get_parent
|
||||
|
||||
# required by sprd_cpu_cooling.ko
|
||||
cpu_down
|
||||
cpufreq_get_policy
|
||||
cpu_up
|
||||
|
||||
# required by sprd_mcd.ko
|
||||
gpiod_set_value_cansleep
|
||||
kernel_power_off
|
||||
|
|
@ -1178,6 +1512,11 @@
|
|||
pci_save_state
|
||||
pci_set_power_state
|
||||
|
||||
# required by sprd_pm_domain.ko
|
||||
kfree_const
|
||||
kstrdup_const
|
||||
of_genpd_add_subdomain
|
||||
|
||||
# required by sprd_powerdebug.ko
|
||||
cpu_pm_register_notifier
|
||||
pm_print_active_wakeup_sources
|
||||
|
|
@ -1186,6 +1525,25 @@
|
|||
# required by sprd_sdio_fm.ko
|
||||
vfs_llseek
|
||||
|
||||
# required by sprd_soc_thm.ko
|
||||
thermal_zone_device_unregister
|
||||
thermal_zone_device_update
|
||||
thermal_zone_of_sensor_register
|
||||
|
||||
# required by sprd_vdsp.ko
|
||||
bsearch
|
||||
devm_kstrdup
|
||||
__memcpy_toio
|
||||
of_match_device
|
||||
of_n_addr_cells
|
||||
of_n_size_cells
|
||||
of_translate_address
|
||||
sort
|
||||
|
||||
# required by sprd_wdt.ko
|
||||
devm_watchdog_register_device
|
||||
watchdog_init_timeout
|
||||
|
||||
# required by sprdbt_sipc_tty.ko
|
||||
tty_schedule_flip
|
||||
|
||||
|
|
@ -1315,6 +1673,10 @@
|
|||
usb_sg_wait
|
||||
usb_unlink_urb
|
||||
|
||||
# required by usb_f_mtp.ko
|
||||
usb_os_desc_prepare_interf_dir
|
||||
usb_string_id
|
||||
|
||||
# required by usbserial.ko
|
||||
device_del
|
||||
driver_attach
|
||||
|
|
@ -1333,6 +1695,16 @@
|
|||
usb_store_new_id
|
||||
usb_unpoison_urb
|
||||
|
||||
# required by vha.ko
|
||||
clk_bulk_get
|
||||
device_wakeup_disable
|
||||
devm_iounmap
|
||||
__ndelay
|
||||
param_ops_long
|
||||
param_ops_ulong
|
||||
pm_relax
|
||||
pm_stay_awake
|
||||
|
||||
# required by virtio_crypto.ko
|
||||
cpu_bit_bitmap
|
||||
cpus_read_lock
|
||||
|
|
@ -1349,3 +1721,39 @@
|
|||
scatterwalk_map_and_copy
|
||||
sg_init_one
|
||||
sg_nents_for_len
|
||||
|
||||
# required by xhci-hcd.ko
|
||||
dma_pool_alloc
|
||||
dma_pool_create
|
||||
dma_pool_destroy
|
||||
dma_pool_free
|
||||
__num_online_cpus
|
||||
param_ops_ullong
|
||||
pci_alloc_irq_vectors_affinity
|
||||
pci_free_irq_vectors
|
||||
pci_irq_vector
|
||||
radix_tree_delete
|
||||
radix_tree_insert
|
||||
radix_tree_lookup
|
||||
radix_tree_maybe_preload
|
||||
sg_pcopy_from_buffer
|
||||
sg_pcopy_to_buffer
|
||||
usb_amd_dev_put
|
||||
usb_amd_pt_check_port
|
||||
usb_amd_quirk_pll_disable
|
||||
usb_amd_quirk_pll_enable
|
||||
usb_asmedia_modifyflowcontrol
|
||||
usb_disable_xhci_ports
|
||||
usb_hcd_end_port_resume
|
||||
usb_hc_died
|
||||
usb_hcd_irq
|
||||
usb_hcd_start_port_resume
|
||||
usb_hub_clear_tt_buffer
|
||||
usb_root_hub_lost_power
|
||||
usb_wakeup_notification
|
||||
|
||||
# required by xhci-plat-hcd.ko
|
||||
devm_clk_get_optional
|
||||
of_usb_host_tpl_support
|
||||
pci_bus_type
|
||||
__usb_create_hcd
|
||||
|
|
|
|||
|
|
@ -1,2 +1,4 @@
|
|||
[abi_whitelist]
|
||||
dummy_symbol
|
||||
# commonly used symbols
|
||||
module_layout
|
||||
__put_task_struct
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
.endm
|
||||
|
||||
#define ASM_NL ` /* use '`' to mark new line in macro */
|
||||
#define __ALIGN .align 4
|
||||
#define __ALIGN_STR __stringify(__ALIGN)
|
||||
|
||||
/* annotation for data we want in DCCM - if enabled in .config */
|
||||
.macro ARCFP_DATA nm
|
||||
|
|
|
|||
|
|
@ -307,13 +307,15 @@ endif
|
|||
ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y)
|
||||
prepare: stack_protector_prepare
|
||||
stack_protector_prepare: prepare0
|
||||
$(eval KBUILD_CFLAGS += \
|
||||
$(eval SSP_PLUGIN_CFLAGS := \
|
||||
-fplugin-arg-arm_ssp_per_task_plugin-tso=$(shell \
|
||||
awk '{if ($$2 == "THREAD_SZ_ORDER") print $$3;}'\
|
||||
include/generated/asm-offsets.h) \
|
||||
-fplugin-arg-arm_ssp_per_task_plugin-offset=$(shell \
|
||||
awk '{if ($$2 == "TI_STACK_CANARY") print $$3;}'\
|
||||
include/generated/asm-offsets.h))
|
||||
$(eval KBUILD_CFLAGS += $(SSP_PLUGIN_CFLAGS))
|
||||
$(eval GCC_PLUGINS_CFLAGS += $(SSP_PLUGIN_CFLAGS))
|
||||
endif
|
||||
|
||||
all: $(notdir $(KBUILD_IMAGE))
|
||||
|
|
|
|||
|
|
@ -101,7 +101,6 @@ clean-files += piggy_data lib1funcs.S ashldi3.S bswapsdi2.S \
|
|||
$(libfdt) $(libfdt_hdrs) hyp-stub.S
|
||||
|
||||
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
|
||||
KBUILD_CFLAGS += $(DISABLE_ARM_SSP_PER_TASK_PLUGIN)
|
||||
|
||||
ifeq ($(CONFIG_FUNCTION_TRACER),y)
|
||||
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
||||
|
|
@ -117,7 +116,8 @@ CFLAGS_fdt_ro.o := $(nossp_flags)
|
|||
CFLAGS_fdt_rw.o := $(nossp_flags)
|
||||
CFLAGS_fdt_wip.o := $(nossp_flags)
|
||||
|
||||
ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin -I$(obj)
|
||||
ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \
|
||||
-I$(obj) $(DISABLE_ARM_SSP_PER_TASK_PLUGIN)
|
||||
asflags-y := -DZIMAGE
|
||||
|
||||
# Supply kernel BSS size to the decompressor via a linker symbol.
|
||||
|
|
|
|||
|
|
@ -526,11 +526,11 @@
|
|||
* Supply voltage supervisor on board will not allow opp50 so
|
||||
* disable it and set opp100 as suspend OPP.
|
||||
*/
|
||||
opp50@300000000 {
|
||||
opp50-300000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
opp100@600000000 {
|
||||
opp100-600000000 {
|
||||
opp-suspend;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@
|
|||
&sdhci {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio34 &gpclk2_gpio43>;
|
||||
bus-width = <4>;
|
||||
mmc-pwrseq = <&wifi_pwrseq>;
|
||||
|
|
|
|||
|
|
@ -3413,6 +3413,7 @@
|
|||
clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER13_CLKCTRL 24>;
|
||||
clock-names = "fck";
|
||||
interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ti,timer-pwm;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -3441,6 +3442,7 @@
|
|||
clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER14_CLKCTRL 24>;
|
||||
clock-names = "fck";
|
||||
interrupts = <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ti,timer-pwm;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -3469,6 +3471,7 @@
|
|||
clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 24>;
|
||||
clock-names = "fck";
|
||||
interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ti,timer-pwm;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -3497,6 +3500,7 @@
|
|||
clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 24>;
|
||||
clock-names = "fck";
|
||||
interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ti,timer-pwm;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x0 0x0 0xc0000000>;
|
||||
dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>;
|
||||
ti,hwmods = "l3_main_1", "l3_main_2";
|
||||
reg = <0x0 0x44000000 0x0 0x1000000>,
|
||||
<0x0 0x45000000 0x0 0x1000>;
|
||||
|
|
@ -184,6 +185,7 @@
|
|||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x03000 0 0x00010000
|
||||
0x82000000 0 0x20013000 0x13000 0 0xffed000>;
|
||||
dma-ranges = <0x02000000 0x0 0x00000000 0x00000000 0x1 0x00000000>;
|
||||
bus-range = <0x00 0xff>;
|
||||
#interrupt-cells = <1>;
|
||||
num-lanes = <1>;
|
||||
|
|
@ -238,6 +240,7 @@
|
|||
device_type = "pci";
|
||||
ranges = <0x81000000 0 0 0x03000 0 0x00010000
|
||||
0x82000000 0 0x30013000 0x13000 0 0xffed000>;
|
||||
dma-ranges = <0x02000000 0x0 0x00000000 0x00000000 0x1 0x00000000>;
|
||||
bus-range = <0x00 0xff>;
|
||||
#interrupt-cells = <1>;
|
||||
num-lanes = <1>;
|
||||
|
|
|
|||
|
|
@ -86,3 +86,8 @@
|
|||
&usb4_tm {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
/* dra76x is not affected by i887 */
|
||||
max-frequency = <96000000>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -796,16 +796,6 @@
|
|||
clock-div = <1>;
|
||||
};
|
||||
|
||||
ipu1_gfclk_mux: ipu1_gfclk_mux@520 {
|
||||
#clock-cells = <0>;
|
||||
compatible = "ti,mux-clock";
|
||||
clocks = <&dpll_abe_m2x2_ck>, <&dpll_core_h22x2_ck>;
|
||||
ti,bit-shift = <24>;
|
||||
reg = <0x0520>;
|
||||
assigned-clocks = <&ipu1_gfclk_mux>;
|
||||
assigned-clock-parents = <&dpll_core_h22x2_ck>;
|
||||
};
|
||||
|
||||
dummy_ck: dummy_ck {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
|
|
@ -1564,6 +1554,8 @@
|
|||
compatible = "ti,clkctrl";
|
||||
reg = <0x20 0x4>;
|
||||
#clock-cells = <2>;
|
||||
assigned-clocks = <&ipu1_clkctrl DRA7_IPU1_MMU_IPU1_CLKCTRL 24>;
|
||||
assigned-clock-parents = <&dpll_core_h22x2_ck>;
|
||||
};
|
||||
|
||||
ipu_clkctrl: ipu-clkctrl@50 {
|
||||
|
|
|
|||
|
|
@ -107,14 +107,14 @@
|
|||
regulators {
|
||||
vdd_arm: buck1 {
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-min-microvolt = <730000>;
|
||||
regulator-min-microvolt = <925000>;
|
||||
regulator-max-microvolt = <1380000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_soc: buck2 {
|
||||
regulator-name = "vdd_soc";
|
||||
regulator-min-microvolt = <730000>;
|
||||
regulator-min-microvolt = <1150000>;
|
||||
regulator-max-microvolt = <1380000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
|
@ -183,7 +183,6 @@
|
|||
pinctrl-0 = <&pinctrl_usdhc4>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
vmmc-supply = <&vdd_emmc_1p8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -337,7 +337,6 @@
|
|||
assigned-clock-rates = <400000000>;
|
||||
bus-width = <8>;
|
||||
fsl,tuning-step = <2>;
|
||||
max-frequency = <100000000>;
|
||||
vmmc-supply = <®_module_3v3>;
|
||||
vqmmc-supply = <®_DCDC3>;
|
||||
non-removable;
|
||||
|
|
|
|||
|
|
@ -728,7 +728,7 @@
|
|||
};
|
||||
|
||||
mdio0: mdio@2d24000 {
|
||||
compatible = "fsl,etsec2-mdio";
|
||||
compatible = "gianfar";
|
||||
device_type = "mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
|
@ -737,7 +737,7 @@
|
|||
};
|
||||
|
||||
mdio1: mdio@2d64000 {
|
||||
compatible = "fsl,etsec2-mdio";
|
||||
compatible = "gianfar";
|
||||
device_type = "mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
|
|
|||
|
|
@ -849,34 +849,46 @@
|
|||
compatible = "ti,omap2-onenand";
|
||||
reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
|
||||
|
||||
/*
|
||||
* These timings are based on CONFIG_OMAP_GPMC_DEBUG=y reported
|
||||
* bootloader set values when booted with v5.1
|
||||
* (OneNAND Manufacturer: Samsung):
|
||||
*
|
||||
* cs0 GPMC_CS_CONFIG1: 0xfb001202
|
||||
* cs0 GPMC_CS_CONFIG2: 0x00111100
|
||||
* cs0 GPMC_CS_CONFIG3: 0x00020200
|
||||
* cs0 GPMC_CS_CONFIG4: 0x11001102
|
||||
* cs0 GPMC_CS_CONFIG5: 0x03101616
|
||||
* cs0 GPMC_CS_CONFIG6: 0x90060000
|
||||
*/
|
||||
gpmc,sync-read;
|
||||
gpmc,sync-write;
|
||||
gpmc,burst-length = <16>;
|
||||
gpmc,burst-read;
|
||||
gpmc,burst-wrap;
|
||||
gpmc,burst-write;
|
||||
gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
|
||||
gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,mux-add-data = <2>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <87>;
|
||||
gpmc,cs-wr-off-ns = <87>;
|
||||
gpmc,cs-rd-off-ns = <102>;
|
||||
gpmc,cs-wr-off-ns = <102>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <10>;
|
||||
gpmc,adv-wr-off-ns = <10>;
|
||||
gpmc,oe-on-ns = <15>;
|
||||
gpmc,oe-off-ns = <87>;
|
||||
gpmc,adv-rd-off-ns = <12>;
|
||||
gpmc,adv-wr-off-ns = <12>;
|
||||
gpmc,oe-on-ns = <12>;
|
||||
gpmc,oe-off-ns = <102>;
|
||||
gpmc,we-on-ns = <0>;
|
||||
gpmc,we-off-ns = <87>;
|
||||
gpmc,rd-cycle-ns = <112>;
|
||||
gpmc,wr-cycle-ns = <112>;
|
||||
gpmc,access-ns = <81>;
|
||||
gpmc,page-burst-access-ns = <15>;
|
||||
gpmc,we-off-ns = <102>;
|
||||
gpmc,rd-cycle-ns = <132>;
|
||||
gpmc,wr-cycle-ns = <132>;
|
||||
gpmc,access-ns = <96>;
|
||||
gpmc,page-burst-access-ns = <18>;
|
||||
gpmc,bus-turnaround-ns = <0>;
|
||||
gpmc,cycle2cycle-delay-ns = <0>;
|
||||
gpmc,wait-monitoring-ns = <0>;
|
||||
gpmc,clk-activation-ns = <5>;
|
||||
gpmc,wr-data-mux-bus-ns = <30>;
|
||||
gpmc,wr-access-ns = <81>;
|
||||
gpmc,clk-activation-ns = <6>;
|
||||
gpmc,wr-data-mux-bus-ns = <36>;
|
||||
gpmc,wr-access-ns = <96>;
|
||||
gpmc,sync-clk-ps = <15000>;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0 0xc0000000>;
|
||||
dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>;
|
||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
||||
reg = <0 0x44000000 0 0x2000>,
|
||||
<0 0x44800000 0 0x3000>,
|
||||
|
|
|
|||
|
|
@ -323,8 +323,8 @@
|
|||
interrupt-controller;
|
||||
reg = <0 0x200>;
|
||||
#interrupt-cells = <1>;
|
||||
valid-mask = <0xFFFFFFFF>;
|
||||
clear-mask = <0>;
|
||||
valid-mask = <0xffffffff>;
|
||||
clear-mask = <0xffffffff>;
|
||||
};
|
||||
|
||||
timer0: timer@200 {
|
||||
|
|
|
|||
|
|
@ -240,8 +240,8 @@
|
|||
reg = <0 0x200>;
|
||||
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <1>;
|
||||
valid-mask = <0xFFFFFFFF>;
|
||||
clear-mask = <0>;
|
||||
valid-mask = <0xffffffff>;
|
||||
clear-mask = <0xffffffff>;
|
||||
};
|
||||
|
||||
timer0: timer@200 {
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
/* DAC */
|
||||
format = "i2s";
|
||||
mclk-fs = <256>;
|
||||
frame-inversion = <1>;
|
||||
frame-inversion;
|
||||
cpu {
|
||||
sound-dai = <&sti_uni_player2>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -482,7 +482,8 @@
|
|||
};
|
||||
|
||||
&usbphy {
|
||||
usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
|
||||
usb0_id_det-gpios = <&pio 7 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH11 */
|
||||
usb0_vbus_power-supply = <&usb_power_supply>;
|
||||
usb0_vbus-supply = <®_drivevbus>;
|
||||
usb1_vbus-supply = <®_vmain>;
|
||||
usb2_vbus-supply = <®_vmain>;
|
||||
|
|
|
|||
|
|
@ -266,6 +266,16 @@
|
|||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
ahci: sata@1c18000 {
|
||||
compatible = "allwinner,sun8i-r40-ahci";
|
||||
reg = <0x01c18000 0x1000>;
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ccu CLK_BUS_SATA>, <&ccu CLK_SATA>;
|
||||
resets = <&ccu RST_BUS_SATA>;
|
||||
reset-names = "ahci";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
ehci1: usb@1c19000 {
|
||||
compatible = "allwinner,sun8i-r40-ehci", "generic-ehci";
|
||||
reg = <0x01c19000 0x100>;
|
||||
|
|
@ -557,17 +567,6 @@
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
ahci: sata@1c18000 {
|
||||
compatible = "allwinner,sun8i-r40-ahci";
|
||||
reg = <0x01c18000 0x1000>;
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ccu CLK_BUS_SATA>, <&ccu CLK_SATA>;
|
||||
resets = <&ccu RST_BUS_SATA>;
|
||||
reset-names = "ahci";
|
||||
status = "disabled";
|
||||
|
||||
};
|
||||
|
||||
gmac: ethernet@1c50000 {
|
||||
compatible = "allwinner,sun8i-r40-gmac";
|
||||
syscon = <&ccu>;
|
||||
|
|
|
|||
|
|
@ -92,6 +92,8 @@ static bool __init cntvct_functional(void)
|
|||
* this.
|
||||
*/
|
||||
np = of_find_compatible_node(NULL, NULL, "arm,armv7-timer");
|
||||
if (!np)
|
||||
np = of_find_compatible_node(NULL, NULL, "arm,armv8-timer");
|
||||
if (!np)
|
||||
goto out_put;
|
||||
|
||||
|
|
|
|||
|
|
@ -91,6 +91,8 @@ AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
|
|||
obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o
|
||||
obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o
|
||||
endif
|
||||
AFLAGS_resume-imx6.o :=-Wa,-march=armv7-a
|
||||
obj-$(CONFIG_SOC_IMX6) += resume-imx6.o
|
||||
obj-$(CONFIG_SOC_IMX6) += pm-imx6.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX1) += mach-imx1.o
|
||||
|
|
|
|||
|
|
@ -109,17 +109,17 @@ void imx_cpu_die(unsigned int cpu);
|
|||
int imx_cpu_kill(unsigned int cpu);
|
||||
|
||||
#ifdef CONFIG_SUSPEND
|
||||
void v7_cpu_resume(void);
|
||||
void imx53_suspend(void __iomem *ocram_vbase);
|
||||
extern const u32 imx53_suspend_sz;
|
||||
void imx6_suspend(void __iomem *ocram_vbase);
|
||||
#else
|
||||
static inline void v7_cpu_resume(void) {}
|
||||
static inline void imx53_suspend(void __iomem *ocram_vbase) {}
|
||||
static const u32 imx53_suspend_sz;
|
||||
static inline void imx6_suspend(void __iomem *ocram_vbase) {}
|
||||
#endif
|
||||
|
||||
void v7_cpu_resume(void);
|
||||
|
||||
void imx6_pm_ccm_init(const char *ccm_compat);
|
||||
void imx6q_pm_init(void);
|
||||
void imx6dl_pm_init(void);
|
||||
|
|
|
|||
24
arch/arm/mach-imx/resume-imx6.S
Normal file
24
arch/arm/mach-imx/resume-imx6.S
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
#include "hardware.h"
|
||||
|
||||
/*
|
||||
* The following code must assume it is running from physical address
|
||||
* where absolute virtual addresses to the data section have to be
|
||||
* turned into relative ones.
|
||||
*/
|
||||
|
||||
ENTRY(v7_cpu_resume)
|
||||
bl v7_invalidate_l1
|
||||
#ifdef CONFIG_CACHE_L2X0
|
||||
bl l2c310_early_resume
|
||||
#endif
|
||||
b cpu_resume
|
||||
ENDPROC(v7_cpu_resume)
|
||||
|
|
@ -327,17 +327,3 @@ resume:
|
|||
|
||||
ret lr
|
||||
ENDPROC(imx6_suspend)
|
||||
|
||||
/*
|
||||
* The following code must assume it is running from physical address
|
||||
* where absolute virtual addresses to the data section have to be
|
||||
* turned into relative ones.
|
||||
*/
|
||||
|
||||
ENTRY(v7_cpu_resume)
|
||||
bl v7_invalidate_l1
|
||||
#ifdef CONFIG_CACHE_L2X0
|
||||
bl l2c310_early_resume
|
||||
#endif
|
||||
b cpu_resume
|
||||
ENDPROC(v7_cpu_resume)
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@
|
|||
#size-cells = <0>;
|
||||
|
||||
bus-width = <4>;
|
||||
max-frequency = <50000000>;
|
||||
max-frequency = <60000000>;
|
||||
|
||||
non-removable;
|
||||
disable-wp;
|
||||
|
|
|
|||
|
|
@ -363,6 +363,7 @@
|
|||
compatible = "brcm,bcm43438-bt";
|
||||
interrupt-parent = <&gpio_intc>;
|
||||
interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "host-wakeup";
|
||||
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
||||
max-speed = <2000000>;
|
||||
clocks = <&wifi32k>;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
};
|
||||
|
||||
&fman0 {
|
||||
fsl,erratum-a050385;
|
||||
|
||||
/* these aliases provide the FMan ports mapping */
|
||||
enet0: ethernet@e0000 {
|
||||
};
|
||||
|
|
|
|||
|
|
@ -119,12 +119,12 @@
|
|||
|
||||
ethernet@e4000 {
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
phy-connection-type = "rgmii-txid";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
ethernet@e6000 {
|
||||
phy-handle = <&rgmii_phy2>;
|
||||
phy-connection-type = "rgmii-txid";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
ethernet@e8000 {
|
||||
|
|
|
|||
|
|
@ -127,12 +127,12 @@
|
|||
&fman0 {
|
||||
ethernet@e4000 {
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
phy-connection-type = "rgmii";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
ethernet@e6000 {
|
||||
phy-handle = <&rgmii_phy2>;
|
||||
phy-connection-type = "rgmii";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
ethernet@e8000 {
|
||||
|
|
|
|||
|
|
@ -52,11 +52,6 @@
|
|||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
ethphy1: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
ranges = <0 0 0 0xffffffff>;
|
||||
|
||||
gmac0: ethernet@ff800000 {
|
||||
compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
compatible = "altr,socfpga-stmmac-a10-s10", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
reg = <0xff800000 0x2000>;
|
||||
interrupts = <0 90 4>;
|
||||
interrupt-names = "macirq";
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
};
|
||||
|
||||
gmac1: ethernet@ff802000 {
|
||||
compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
compatible = "altr,socfpga-stmmac-a10-s10", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
reg = <0xff802000 0x2000>;
|
||||
interrupts = <0 91 4>;
|
||||
interrupt-names = "macirq";
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
};
|
||||
|
||||
gmac2: ethernet@ff804000 {
|
||||
compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
compatible = "altr,socfpga-stmmac-a10-s10", "snps,dwmac-3.74a", "snps,dwmac";
|
||||
reg = <0xff804000 0x2000>;
|
||||
interrupts = <0 92 4>;
|
||||
interrupt-names = "macirq";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
CONFIG_UAPI_HEADER_TEST=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
|
@ -34,11 +35,11 @@ CONFIG_BPF_SYSCALL=y
|
|||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_ARCH_HISI=y
|
||||
CONFIG_ARCH_QCOM=y
|
||||
|
|
@ -75,7 +76,7 @@ CONFIG_ARM_SCPI_PROTOCOL=y
|
|||
CONFIG_ARM64_CRYPTO=y
|
||||
CONFIG_CRYPTO_SHA2_ARM64_CE=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_SHADOW_CALL_STACK=y
|
||||
CONFIG_LTO_CLANG=y
|
||||
CONFIG_CFI_CLANG=y
|
||||
|
|
@ -88,6 +89,7 @@ CONFIG_GKI_HACKS_TO_FIX=y
|
|||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_AREAS=16
|
||||
CONFIG_ZSMALLOC=y
|
||||
|
|
@ -213,7 +215,6 @@ CONFIG_FW_LOADER_USER_HELPER=y
|
|||
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
|
||||
# CONFIG_FW_CACHE is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
CONFIG_GNSS=y
|
||||
CONFIG_ZRAM=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
|
@ -308,9 +309,11 @@ CONFIG_POWER_RESET_HISI=y
|
|||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_GOV_USER_SPACE=y
|
||||
CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_CPU_THERMAL=y
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_MFD_ACT8945A=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
|
|
@ -346,10 +349,14 @@ CONFIG_USB_OTG=y
|
|||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||
CONFIG_USB_CONFIGFS_RNDIS=y
|
||||
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
|
||||
CONFIG_USB_CONFIGFS_F_FS=y
|
||||
CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
CONFIG_USB_CONFIGFS_F_MIDI=y
|
||||
CONFIG_TYPEC=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
|
|
@ -373,15 +380,19 @@ CONFIG_ION_SYSTEM_HEAP=y
|
|||
CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_HWSPINLOCK=y
|
||||
CONFIG_MAILBOX=y
|
||||
CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
CONFIG_REMOTEPROC=y
|
||||
CONFIG_RPMSG_CHAR=y
|
||||
CONFIG_QCOM_COMMAND_DB=y
|
||||
CONFIG_QCOM_RPMH=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
|
||||
CONFIG_EXTCON=y
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IIO_BUFFER=y
|
||||
CONFIG_IIO_TRIGGER=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_QCOM_PDC=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
|
|
@ -464,8 +475,10 @@ CONFIG_NLS_MAC_TURKISH=y
|
|||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_UNICODE=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITYFS=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
# CONFIG_HARDENED_USERCOPY_FALLBACK is not set
|
||||
CONFIG_FORTIFY_SOURCE=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_INIT_STACK_ALL=y
|
||||
|
|
@ -481,6 +494,7 @@ CONFIG_DMA_CMA=y
|
|||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_HEADERS_INSTALL=y
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
|
@ -489,5 +503,7 @@ CONFIG_SOFTLOCKUP_DETECTOR=y
|
|||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
CONFIG_DEBUG_LIST=y
|
||||
CONFIG_CORESIGHT=y
|
||||
CONFIG_CORESIGHT_STM=y
|
||||
|
|
|
|||
66
arch/arm64/configs/hikey960_gki.fragment
Normal file
66
arch/arm64/configs/hikey960_gki.fragment
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
CONFIG_CPUFREQ_DT=m
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
CONFIG_BT_HIDP=m
|
||||
CONFIG_BT_HCIBTSDIO=m
|
||||
CONFIG_BT_HCIUART=m
|
||||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_RFKILL_GPIO=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_NVME=m
|
||||
CONFIG_NVME_TARGET=m
|
||||
CONFIG_HISI_HIKEY_USB=m
|
||||
CONFIG_SCSI_UFS_HISI=m
|
||||
CONFIG_WLAN_VENDOR_TI=y
|
||||
CONFIG_WL18XX=m
|
||||
CONFIG_WLCORE_SDIO=m
|
||||
CONFIG_INPUT_HISI_POWERKEY=m
|
||||
CONFIG_SERIO_AMBAKMI=m
|
||||
CONFIG_SERIAL_8250_DW=m
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_DESIGNWARE_PLATFORM=m
|
||||
CONFIG_SPI_PL022=m
|
||||
CONFIG_SPI_SPIDEV=m
|
||||
CONFIG_SYSCON_REBOOT_MODE=m
|
||||
CONFIG_HWMON=m
|
||||
CONFIG_THERMAL_WRITABLE_TRIPS=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_HISI_THERMAL=m
|
||||
CONFIG_MFD_HI6421_PMIC=m
|
||||
CONFIG_MFD_HI655X_PMIC=m
|
||||
CONFIG_REGULATOR_HI6421V530=m
|
||||
CONFIG_REGULATOR_HI655X=m
|
||||
CONFIG_MALI_DEVFREQ=y
|
||||
CONFIG_DRM_I2C_ADV7511=m
|
||||
CONFIG_DRM_I2C_ADV7511_AUDIO=y
|
||||
CONFIG_DRM_HISI_KIRIN=m
|
||||
CONFIG_DRM_HISI_KIRIN960=y
|
||||
CONFIG_SND_I2S_HI3660_I2S=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_USB_XHCI_HCD=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_DWC3=m
|
||||
CONFIG_USB_GADGETFS=m
|
||||
CONFIG_TYPEC_TCPM=m
|
||||
CONFIG_TYPEC_TCPCI=m
|
||||
CONFIG_TYPEC_RT1711H=m
|
||||
CONFIG_MMC_BLOCK=m
|
||||
CONFIG_MMC_BLOCK_MINORS=64
|
||||
CONFIG_MMC_ARMMMCI=m
|
||||
CONFIG_MMC_SPI=m
|
||||
CONFIG_MMC_DW=m
|
||||
CONFIG_MMC_DW_EXYNOS=m
|
||||
CONFIG_MMC_DW_K3=m
|
||||
CONFIG_RTC_DRV_EFI=m
|
||||
CONFIG_K3_DMA=m
|
||||
CONFIG_ION_CMA_HEAP=m
|
||||
CONFIG_HI3660_MBOX=m
|
||||
CONFIG_MALI_MIDGARD=m
|
||||
CONFIG_MALI_PLATFORM_NAME="hisilicon"
|
||||
CONFIG_MALI_EXPERT=y
|
||||
CONFIG_MALI_PWRSOFT_765=y
|
||||
CONFIG_PHY_HI3660_USB=m
|
||||
|
|
@ -221,7 +221,7 @@ alternative_endif
|
|||
|
||||
.macro user_alt, label, oldinstr, newinstr, cond
|
||||
9999: alternative_insn "\oldinstr", "\newinstr", \cond
|
||||
_ASM_EXTABLE 9999b, \label
|
||||
_asm_extable 9999b, \label
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@
|
|||
#define ARM64_WORKAROUND_CAVIUM_TX2_219_TVM 45
|
||||
#define ARM64_WORKAROUND_CAVIUM_TX2_219_PRFM 46
|
||||
|
||||
#define ARM64_NCAPS 47
|
||||
/* kabi: reserve 48 - 62 for future cpu capabilities */
|
||||
#define ARM64_NCAPS 62
|
||||
|
||||
#endif /* __ASM_CPUCAPS_H */
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@ extern void __cpu_copy_user_page(void *to, const void *from,
|
|||
extern void copy_page(void *to, const void *from);
|
||||
extern void clear_page(void *to);
|
||||
|
||||
#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
|
||||
alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
|
||||
#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
|
||||
|
||||
#define clear_user_page(addr,vaddr,pg) __cpu_clear_user_page(addr, vaddr)
|
||||
#define copy_user_page(to,from,vaddr,pg) __cpu_copy_user_page(to, from, vaddr)
|
||||
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
#define __NR_compat_gettimeofday 78
|
||||
#define __NR_compat_sigreturn 119
|
||||
#define __NR_compat_rt_sigreturn 173
|
||||
#define __NR_compat_clock_getres 247
|
||||
#define __NR_compat_clock_gettime 263
|
||||
#define __NR_compat_clock_getres 264
|
||||
#define __NR_compat_clock_gettime64 403
|
||||
#define __NR_compat_clock_getres_time64 406
|
||||
|
||||
|
|
|
|||
|
|
@ -959,11 +959,22 @@ void tick_broadcast(const struct cpumask *mask)
|
|||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The number of CPUs online, not counting this CPU (which may not be
|
||||
* fully online and so not counted in num_online_cpus()).
|
||||
*/
|
||||
static inline unsigned int num_other_online_cpus(void)
|
||||
{
|
||||
unsigned int this_cpu_online = cpu_online(smp_processor_id());
|
||||
|
||||
return num_online_cpus() - this_cpu_online;
|
||||
}
|
||||
|
||||
void smp_send_stop(void)
|
||||
{
|
||||
unsigned long timeout;
|
||||
|
||||
if (num_online_cpus() > 1) {
|
||||
if (num_other_online_cpus()) {
|
||||
cpumask_t mask;
|
||||
|
||||
cpumask_copy(&mask, cpu_online_mask);
|
||||
|
|
@ -976,10 +987,10 @@ void smp_send_stop(void)
|
|||
|
||||
/* Wait up to one second for other CPUs to stop */
|
||||
timeout = USEC_PER_SEC;
|
||||
while (num_online_cpus() > 1 && timeout--)
|
||||
while (num_other_online_cpus() && timeout--)
|
||||
udelay(1);
|
||||
|
||||
if (num_online_cpus() > 1)
|
||||
if (num_other_online_cpus())
|
||||
pr_warning("SMP: failed to stop secondary CPUs %*pbl\n",
|
||||
cpumask_pr_args(cpu_online_mask));
|
||||
|
||||
|
|
@ -1002,7 +1013,11 @@ void crash_smp_send_stop(void)
|
|||
|
||||
cpus_stopped = 1;
|
||||
|
||||
if (num_online_cpus() == 1) {
|
||||
/*
|
||||
* If this cpu is the only one alive at this point in time, online or
|
||||
* not, there are no stop messages to be sent around, so just back out.
|
||||
*/
|
||||
if (num_other_online_cpus() == 0) {
|
||||
sdei_mask_local_cpu();
|
||||
return;
|
||||
}
|
||||
|
|
@ -1010,7 +1025,7 @@ void crash_smp_send_stop(void)
|
|||
cpumask_copy(&mask, cpu_online_mask);
|
||||
cpumask_clear_cpu(smp_processor_id(), &mask);
|
||||
|
||||
atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
|
||||
atomic_set(&waiting_for_crash_ipi, num_other_online_cpus());
|
||||
|
||||
pr_crit("SMP: stopping secondary CPUs\n");
|
||||
smp_cross_call(&mask, IPI_CPU_CRASH_STOP);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ config CSKY
|
|||
select GX6605S_TIMER if CPU_CK610
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARCH_AUDITSYSCALL
|
||||
select HAVE_COPY_THREAD_TLS
|
||||
select HAVE_DYNAMIC_FTRACE
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_FUNCTION_GRAPH_TRACER
|
||||
|
|
@ -74,7 +75,7 @@ config CPU_HAS_TLBI
|
|||
config CPU_HAS_LDSTEX
|
||||
bool
|
||||
help
|
||||
For SMP, CPU needs "ldex&stex" instrcutions to atomic operations.
|
||||
For SMP, CPU needs "ldex&stex" instructions for atomic operations.
|
||||
|
||||
config CPU_NEED_TLBSYNC
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -16,14 +16,16 @@
|
|||
#define LSAVE_A4 40
|
||||
#define LSAVE_A5 44
|
||||
|
||||
#define usp ss1
|
||||
|
||||
.macro USPTOKSP
|
||||
mtcr sp, ss1
|
||||
mtcr sp, usp
|
||||
mfcr sp, ss0
|
||||
.endm
|
||||
|
||||
.macro KSPTOUSP
|
||||
mtcr sp, ss0
|
||||
mfcr sp, ss1
|
||||
mfcr sp, usp
|
||||
.endm
|
||||
|
||||
.macro SAVE_ALL epc_inc
|
||||
|
|
@ -45,7 +47,13 @@
|
|||
add lr, r13
|
||||
stw lr, (sp, 8)
|
||||
|
||||
mov lr, sp
|
||||
addi lr, 32
|
||||
addi lr, 32
|
||||
addi lr, 16
|
||||
bt 2f
|
||||
mfcr lr, ss1
|
||||
2:
|
||||
stw lr, (sp, 16)
|
||||
|
||||
stw a0, (sp, 20)
|
||||
|
|
@ -79,9 +87,10 @@
|
|||
ldw a0, (sp, 12)
|
||||
mtcr a0, epsr
|
||||
btsti a0, 31
|
||||
bt 1f
|
||||
ldw a0, (sp, 16)
|
||||
mtcr a0, ss1
|
||||
|
||||
1:
|
||||
ldw a0, (sp, 24)
|
||||
ldw a1, (sp, 28)
|
||||
ldw a2, (sp, 32)
|
||||
|
|
@ -102,9 +111,9 @@
|
|||
addi sp, 32
|
||||
addi sp, 8
|
||||
|
||||
bt 1f
|
||||
bt 2f
|
||||
KSPTOUSP
|
||||
1:
|
||||
2:
|
||||
rte
|
||||
.endm
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,13 @@
|
|||
|
||||
mfcr lr, epsr
|
||||
stw lr, (sp, 12)
|
||||
btsti lr, 31
|
||||
bf 1f
|
||||
addi lr, sp, 152
|
||||
br 2f
|
||||
1:
|
||||
mfcr lr, usp
|
||||
2:
|
||||
stw lr, (sp, 16)
|
||||
|
||||
stw a0, (sp, 20)
|
||||
|
|
@ -64,8 +70,10 @@
|
|||
mtcr a0, epc
|
||||
ldw a0, (sp, 12)
|
||||
mtcr a0, epsr
|
||||
btsti a0, 31
|
||||
ldw a0, (sp, 16)
|
||||
mtcr a0, usp
|
||||
mtcr a0, ss0
|
||||
|
||||
#ifdef CONFIG_CPU_HAS_HILO
|
||||
ldw a0, (sp, 140)
|
||||
|
|
@ -86,6 +94,9 @@
|
|||
addi sp, 40
|
||||
ldm r16-r30, (sp)
|
||||
addi sp, 72
|
||||
bf 1f
|
||||
mfcr sp, ss0
|
||||
1:
|
||||
rte
|
||||
.endm
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
|
||||
|
||||
#define __ARCH_WANT_STAT64
|
||||
#define __ARCH_WANT_NEW_STAT
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
#define __ARCH_WANT_SYS_CLONE3
|
||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||
#include <asm-generic/unistd.h>
|
||||
|
|
|
|||
|
|
@ -17,10 +17,12 @@ ENTRY(csky_cmpxchg)
|
|||
mfcr a3, epc
|
||||
addi a3, TRAP0_SIZE
|
||||
|
||||
subi sp, 8
|
||||
subi sp, 16
|
||||
stw a3, (sp, 0)
|
||||
mfcr a3, epsr
|
||||
stw a3, (sp, 4)
|
||||
mfcr a3, usp
|
||||
stw a3, (sp, 8)
|
||||
|
||||
psrset ee
|
||||
#ifdef CONFIG_CPU_HAS_LDSTEX
|
||||
|
|
@ -47,7 +49,9 @@ ENTRY(csky_cmpxchg)
|
|||
mtcr a3, epc
|
||||
ldw a3, (sp, 4)
|
||||
mtcr a3, epsr
|
||||
addi sp, 8
|
||||
ldw a3, (sp, 8)
|
||||
mtcr a3, usp
|
||||
addi sp, 16
|
||||
KSPTOUSP
|
||||
rte
|
||||
END(csky_cmpxchg)
|
||||
|
|
|
|||
|
|
@ -34,10 +34,11 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
|
|||
return sw->r15;
|
||||
}
|
||||
|
||||
int copy_thread(unsigned long clone_flags,
|
||||
int copy_thread_tls(unsigned long clone_flags,
|
||||
unsigned long usp,
|
||||
unsigned long kthread_arg,
|
||||
struct task_struct *p)
|
||||
struct task_struct *p,
|
||||
unsigned long tls)
|
||||
{
|
||||
struct switch_stack *childstack;
|
||||
struct pt_regs *childregs = task_pt_regs(p);
|
||||
|
|
@ -64,7 +65,7 @@ int copy_thread(unsigned long clone_flags,
|
|||
childregs->usp = usp;
|
||||
if (clone_flags & CLONE_SETTLS)
|
||||
task_thread_info(p)->tp_value = childregs->tls
|
||||
= childregs->regs[0];
|
||||
= tls;
|
||||
|
||||
childregs->a0 = 0;
|
||||
childstack->r15 = (unsigned long) ret_from_fork;
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ void __init setup_smp_ipi(void)
|
|||
int rc;
|
||||
|
||||
if (ipi_irq == 0)
|
||||
panic("%s IRQ mapping failed\n", __func__);
|
||||
return;
|
||||
|
||||
rc = request_percpu_irq(ipi_irq, handle_ipi, "IPI Interrupt",
|
||||
&ipi_dummy_dev);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
ifeq ($(CONFIG_CPU_HAS_CACHEV2),y)
|
||||
obj-y += cachev2.o
|
||||
CFLAGS_REMOVE_cachev2.o = $(CC_FLAGS_FTRACE)
|
||||
else
|
||||
obj-y += cachev1.o
|
||||
CFLAGS_REMOVE_cachev1.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
|
||||
obj-y += dma-mapping.o
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned_bss;
|
||||
pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned_bss;
|
||||
EXPORT_SYMBOL(invalid_pte_table);
|
||||
unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]
|
||||
__page_aligned_bss;
|
||||
EXPORT_SYMBOL(empty_zero_page);
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ void release_vpe(struct vpe *v)
|
|||
{
|
||||
list_del(&v->list);
|
||||
if (v->load_addr)
|
||||
release_progmem(v);
|
||||
release_progmem(v->load_addr);
|
||||
kfree(v);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,42 +55,48 @@ struct ppc64_caches {
|
|||
|
||||
extern struct ppc64_caches ppc64_caches;
|
||||
|
||||
static inline u32 l1_cache_shift(void)
|
||||
static inline u32 l1_dcache_shift(void)
|
||||
{
|
||||
return ppc64_caches.l1d.log_block_size;
|
||||
}
|
||||
|
||||
static inline u32 l1_cache_bytes(void)
|
||||
static inline u32 l1_dcache_bytes(void)
|
||||
{
|
||||
return ppc64_caches.l1d.block_size;
|
||||
}
|
||||
|
||||
static inline u32 l1_icache_shift(void)
|
||||
{
|
||||
return ppc64_caches.l1i.log_block_size;
|
||||
}
|
||||
|
||||
static inline u32 l1_icache_bytes(void)
|
||||
{
|
||||
return ppc64_caches.l1i.block_size;
|
||||
}
|
||||
#else
|
||||
static inline u32 l1_cache_shift(void)
|
||||
static inline u32 l1_dcache_shift(void)
|
||||
{
|
||||
return L1_CACHE_SHIFT;
|
||||
}
|
||||
|
||||
static inline u32 l1_cache_bytes(void)
|
||||
static inline u32 l1_dcache_bytes(void)
|
||||
{
|
||||
return L1_CACHE_BYTES;
|
||||
}
|
||||
|
||||
static inline u32 l1_icache_shift(void)
|
||||
{
|
||||
return L1_CACHE_SHIFT;
|
||||
}
|
||||
|
||||
static inline u32 l1_icache_bytes(void)
|
||||
{
|
||||
return L1_CACHE_BYTES;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* ! __ASSEMBLY__ */
|
||||
|
||||
#if defined(__ASSEMBLY__)
|
||||
/*
|
||||
* For a snooping icache, we still need a dummy icbi to purge all the
|
||||
* prefetched instructions from the ifetch buffers. We also need a sync
|
||||
* before the icbi to order the the actual stores to memory that might
|
||||
* have modified instructions with the icbi.
|
||||
*/
|
||||
#define PURGE_PREFETCHED_INS \
|
||||
sync; \
|
||||
icbi 0,r3; \
|
||||
sync; \
|
||||
isync
|
||||
|
||||
#else
|
||||
#define __read_mostly __attribute__((__section__(".data..read_mostly")))
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_32
|
||||
|
|
@ -124,6 +130,17 @@ static inline void dcbst(void *addr)
|
|||
{
|
||||
__asm__ __volatile__ ("dcbst 0, %0" : : "r"(addr) : "memory");
|
||||
}
|
||||
|
||||
static inline void icbi(void *addr)
|
||||
{
|
||||
asm volatile ("icbi 0, %0" : : "r"(addr) : "memory");
|
||||
}
|
||||
|
||||
static inline void iccci(void *addr)
|
||||
{
|
||||
asm volatile ("iccci 0, %0" : : "r"(addr) : "memory");
|
||||
}
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_POWERPC_CACHE_H */
|
||||
|
|
|
|||
|
|
@ -42,29 +42,25 @@ extern void flush_dcache_page(struct page *page);
|
|||
#define flush_dcache_mmap_lock(mapping) do { } while (0)
|
||||
#define flush_dcache_mmap_unlock(mapping) do { } while (0)
|
||||
|
||||
extern void flush_icache_range(unsigned long, unsigned long);
|
||||
void flush_icache_range(unsigned long start, unsigned long stop);
|
||||
extern void flush_icache_user_range(struct vm_area_struct *vma,
|
||||
struct page *page, unsigned long addr,
|
||||
int len);
|
||||
extern void __flush_dcache_icache(void *page_va);
|
||||
extern void flush_dcache_icache_page(struct page *page);
|
||||
#if defined(CONFIG_PPC32) && !defined(CONFIG_BOOKE)
|
||||
extern void __flush_dcache_icache_phys(unsigned long physaddr);
|
||||
#else
|
||||
static inline void __flush_dcache_icache_phys(unsigned long physaddr)
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
#endif
|
||||
void __flush_dcache_icache(void *page);
|
||||
|
||||
/*
|
||||
* Write any modified data cache blocks out to memory and invalidate them.
|
||||
* Does not invalidate the corresponding instruction cache blocks.
|
||||
/**
|
||||
* flush_dcache_range(): Write any modified data cache blocks out to memory and
|
||||
* invalidate them. Does not invalidate the corresponding instruction cache
|
||||
* blocks.
|
||||
*
|
||||
* @start: the start address
|
||||
* @stop: the stop address (exclusive)
|
||||
*/
|
||||
static inline void flush_dcache_range(unsigned long start, unsigned long stop)
|
||||
{
|
||||
unsigned long shift = l1_cache_shift();
|
||||
unsigned long bytes = l1_cache_bytes();
|
||||
unsigned long shift = l1_dcache_shift();
|
||||
unsigned long bytes = l1_dcache_bytes();
|
||||
void *addr = (void *)(start & ~(bytes - 1));
|
||||
unsigned long size = stop - (unsigned long)addr + (bytes - 1);
|
||||
unsigned long i;
|
||||
|
|
@ -89,8 +85,8 @@ static inline void flush_dcache_range(unsigned long start, unsigned long stop)
|
|||
*/
|
||||
static inline void clean_dcache_range(unsigned long start, unsigned long stop)
|
||||
{
|
||||
unsigned long shift = l1_cache_shift();
|
||||
unsigned long bytes = l1_cache_bytes();
|
||||
unsigned long shift = l1_dcache_shift();
|
||||
unsigned long bytes = l1_dcache_bytes();
|
||||
void *addr = (void *)(start & ~(bytes - 1));
|
||||
unsigned long size = stop - (unsigned long)addr + (bytes - 1);
|
||||
unsigned long i;
|
||||
|
|
@ -108,8 +104,8 @@ static inline void clean_dcache_range(unsigned long start, unsigned long stop)
|
|||
static inline void invalidate_dcache_range(unsigned long start,
|
||||
unsigned long stop)
|
||||
{
|
||||
unsigned long shift = l1_cache_shift();
|
||||
unsigned long bytes = l1_cache_bytes();
|
||||
unsigned long shift = l1_dcache_shift();
|
||||
unsigned long bytes = l1_dcache_bytes();
|
||||
void *addr = (void *)(start & ~(bytes - 1));
|
||||
unsigned long size = stop - (unsigned long)addr + (bytes - 1);
|
||||
unsigned long i;
|
||||
|
|
|
|||
|
|
@ -2193,11 +2193,13 @@ static struct cpu_spec * __init setup_cpu_spec(unsigned long offset,
|
|||
* oprofile_cpu_type already has a value, then we are
|
||||
* possibly overriding a real PVR with a logical one,
|
||||
* and, in that case, keep the current value for
|
||||
* oprofile_cpu_type.
|
||||
* oprofile_cpu_type. Futhermore, let's ensure that the
|
||||
* fix for the PMAO bug is enabled on compatibility mode.
|
||||
*/
|
||||
if (old.oprofile_cpu_type != NULL) {
|
||||
t->oprofile_cpu_type = old.oprofile_cpu_type;
|
||||
t->oprofile_type = old.oprofile_type;
|
||||
t->cpu_features |= old.cpu_features & CPU_FTR_PMAO_BUG;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -316,126 +316,6 @@ _GLOBAL(flush_instruction_cache)
|
|||
EXPORT_SYMBOL(flush_instruction_cache)
|
||||
#endif /* CONFIG_PPC_8xx */
|
||||
|
||||
/*
|
||||
* Write any modified data cache blocks out to memory
|
||||
* and invalidate the corresponding instruction cache blocks.
|
||||
* This is a no-op on the 601.
|
||||
*
|
||||
* flush_icache_range(unsigned long start, unsigned long stop)
|
||||
*/
|
||||
_GLOBAL(flush_icache_range)
|
||||
#if defined(CONFIG_PPC_BOOK3S_601) || defined(CONFIG_E200)
|
||||
PURGE_PREFETCHED_INS
|
||||
blr /* for 601 and e200, do nothing */
|
||||
#else
|
||||
rlwinm r3,r3,0,0,31 - L1_CACHE_SHIFT
|
||||
subf r4,r3,r4
|
||||
addi r4,r4,L1_CACHE_BYTES - 1
|
||||
srwi. r4,r4,L1_CACHE_SHIFT
|
||||
beqlr
|
||||
mtctr r4
|
||||
mr r6,r3
|
||||
1: dcbst 0,r3
|
||||
addi r3,r3,L1_CACHE_BYTES
|
||||
bdnz 1b
|
||||
sync /* wait for dcbst's to get to ram */
|
||||
#ifndef CONFIG_44x
|
||||
mtctr r4
|
||||
2: icbi 0,r6
|
||||
addi r6,r6,L1_CACHE_BYTES
|
||||
bdnz 2b
|
||||
#else
|
||||
/* Flash invalidate on 44x because we are passed kmapped addresses and
|
||||
this doesn't work for userspace pages due to the virtually tagged
|
||||
icache. Sigh. */
|
||||
iccci 0, r0
|
||||
#endif
|
||||
sync /* additional sync needed on g4 */
|
||||
isync
|
||||
blr
|
||||
#endif
|
||||
_ASM_NOKPROBE_SYMBOL(flush_icache_range)
|
||||
EXPORT_SYMBOL(flush_icache_range)
|
||||
|
||||
/*
|
||||
* Flush a particular page from the data cache to RAM.
|
||||
* Note: this is necessary because the instruction cache does *not*
|
||||
* snoop from the data cache.
|
||||
* This is a no-op on the 601 and e200 which have a unified cache.
|
||||
*
|
||||
* void __flush_dcache_icache(void *page)
|
||||
*/
|
||||
_GLOBAL(__flush_dcache_icache)
|
||||
#if defined(CONFIG_PPC_BOOK3S_601) || defined(CONFIG_E200)
|
||||
PURGE_PREFETCHED_INS
|
||||
blr
|
||||
#else
|
||||
rlwinm r3,r3,0,0,31-PAGE_SHIFT /* Get page base address */
|
||||
li r4,PAGE_SIZE/L1_CACHE_BYTES /* Number of lines in a page */
|
||||
mtctr r4
|
||||
mr r6,r3
|
||||
0: dcbst 0,r3 /* Write line to ram */
|
||||
addi r3,r3,L1_CACHE_BYTES
|
||||
bdnz 0b
|
||||
sync
|
||||
#ifdef CONFIG_44x
|
||||
/* We don't flush the icache on 44x. Those have a virtual icache
|
||||
* and we don't have access to the virtual address here (it's
|
||||
* not the page vaddr but where it's mapped in user space). The
|
||||
* flushing of the icache on these is handled elsewhere, when
|
||||
* a change in the address space occurs, before returning to
|
||||
* user space
|
||||
*/
|
||||
BEGIN_MMU_FTR_SECTION
|
||||
blr
|
||||
END_MMU_FTR_SECTION_IFSET(MMU_FTR_TYPE_44x)
|
||||
#endif /* CONFIG_44x */
|
||||
mtctr r4
|
||||
1: icbi 0,r6
|
||||
addi r6,r6,L1_CACHE_BYTES
|
||||
bdnz 1b
|
||||
sync
|
||||
isync
|
||||
blr
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_BOOKE
|
||||
/*
|
||||
* Flush a particular page from the data cache to RAM, identified
|
||||
* by its physical address. We turn off the MMU so we can just use
|
||||
* the physical address (this may be a highmem page without a kernel
|
||||
* mapping).
|
||||
*
|
||||
* void __flush_dcache_icache_phys(unsigned long physaddr)
|
||||
*/
|
||||
_GLOBAL(__flush_dcache_icache_phys)
|
||||
#if defined(CONFIG_PPC_BOOK3S_601) || defined(CONFIG_E200)
|
||||
PURGE_PREFETCHED_INS
|
||||
blr /* for 601 and e200, do nothing */
|
||||
#else
|
||||
mfmsr r10
|
||||
rlwinm r0,r10,0,28,26 /* clear DR */
|
||||
mtmsr r0
|
||||
isync
|
||||
rlwinm r3,r3,0,0,31-PAGE_SHIFT /* Get page base address */
|
||||
li r4,PAGE_SIZE/L1_CACHE_BYTES /* Number of lines in a page */
|
||||
mtctr r4
|
||||
mr r6,r3
|
||||
0: dcbst 0,r3 /* Write line to ram */
|
||||
addi r3,r3,L1_CACHE_BYTES
|
||||
bdnz 0b
|
||||
sync
|
||||
mtctr r4
|
||||
1: icbi 0,r6
|
||||
addi r6,r6,L1_CACHE_BYTES
|
||||
bdnz 1b
|
||||
sync
|
||||
mtmsr r10 /* restore DR */
|
||||
isync
|
||||
blr
|
||||
#endif
|
||||
#endif /* CONFIG_BOOKE */
|
||||
|
||||
/*
|
||||
* Copy a whole page. We use the dcbz instruction on the destination
|
||||
* to reduce memory traffic (it eliminates the unnecessary reads of
|
||||
|
|
|
|||
|
|
@ -49,108 +49,6 @@ _GLOBAL(call_do_irq)
|
|||
mtlr r0
|
||||
blr
|
||||
|
||||
.section ".toc","aw"
|
||||
PPC64_CACHES:
|
||||
.tc ppc64_caches[TC],ppc64_caches
|
||||
.section ".text"
|
||||
|
||||
/*
|
||||
* Write any modified data cache blocks out to memory
|
||||
* and invalidate the corresponding instruction cache blocks.
|
||||
*
|
||||
* flush_icache_range(unsigned long start, unsigned long stop)
|
||||
*
|
||||
* flush all bytes from start through stop-1 inclusive
|
||||
*/
|
||||
|
||||
_GLOBAL_TOC(flush_icache_range)
|
||||
BEGIN_FTR_SECTION
|
||||
PURGE_PREFETCHED_INS
|
||||
blr
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
|
||||
/*
|
||||
* Flush the data cache to memory
|
||||
*
|
||||
* Different systems have different cache line sizes
|
||||
* and in some cases i-cache and d-cache line sizes differ from
|
||||
* each other.
|
||||
*/
|
||||
ld r10,PPC64_CACHES@toc(r2)
|
||||
lwz r7,DCACHEL1BLOCKSIZE(r10)/* Get cache block size */
|
||||
addi r5,r7,-1
|
||||
andc r6,r3,r5 /* round low to line bdy */
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5 /* ensure we get enough */
|
||||
lwz r9,DCACHEL1LOGBLOCKSIZE(r10) /* Get log-2 of cache block size */
|
||||
srd. r8,r8,r9 /* compute line count */
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
1: dcbst 0,r6
|
||||
add r6,r6,r7
|
||||
bdnz 1b
|
||||
sync
|
||||
|
||||
/* Now invalidate the instruction cache */
|
||||
|
||||
lwz r7,ICACHEL1BLOCKSIZE(r10) /* Get Icache block size */
|
||||
addi r5,r7,-1
|
||||
andc r6,r3,r5 /* round low to line bdy */
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5
|
||||
lwz r9,ICACHEL1LOGBLOCKSIZE(r10) /* Get log-2 of Icache block size */
|
||||
srd. r8,r8,r9 /* compute line count */
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
2: icbi 0,r6
|
||||
add r6,r6,r7
|
||||
bdnz 2b
|
||||
isync
|
||||
blr
|
||||
_ASM_NOKPROBE_SYMBOL(flush_icache_range)
|
||||
EXPORT_SYMBOL(flush_icache_range)
|
||||
|
||||
/*
|
||||
* Flush a particular page from the data cache to RAM.
|
||||
* Note: this is necessary because the instruction cache does *not*
|
||||
* snoop from the data cache.
|
||||
*
|
||||
* void __flush_dcache_icache(void *page)
|
||||
*/
|
||||
_GLOBAL(__flush_dcache_icache)
|
||||
/*
|
||||
* Flush the data cache to memory
|
||||
*
|
||||
* Different systems have different cache line sizes
|
||||
*/
|
||||
|
||||
BEGIN_FTR_SECTION
|
||||
PURGE_PREFETCHED_INS
|
||||
blr
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
|
||||
|
||||
/* Flush the dcache */
|
||||
ld r7,PPC64_CACHES@toc(r2)
|
||||
clrrdi r3,r3,PAGE_SHIFT /* Page align */
|
||||
lwz r4,DCACHEL1BLOCKSPERPAGE(r7) /* Get # dcache blocks per page */
|
||||
lwz r5,DCACHEL1BLOCKSIZE(r7) /* Get dcache block size */
|
||||
mr r6,r3
|
||||
mtctr r4
|
||||
0: dcbst 0,r6
|
||||
add r6,r6,r5
|
||||
bdnz 0b
|
||||
sync
|
||||
|
||||
/* Now invalidate the icache */
|
||||
|
||||
lwz r4,ICACHEL1BLOCKSPERPAGE(r7) /* Get # icache blocks per page */
|
||||
lwz r5,ICACHEL1BLOCKSIZE(r7) /* Get icache block size */
|
||||
mtctr r4
|
||||
1: icbi 0,r3
|
||||
add r3,r3,r5
|
||||
bdnz 1b
|
||||
isync
|
||||
blr
|
||||
|
||||
_GLOBAL(__bswapdi2)
|
||||
EXPORT_SYMBOL(__bswapdi2)
|
||||
srdi r8,r3,32
|
||||
|
|
|
|||
|
|
@ -326,6 +326,12 @@ SECTIONS
|
|||
*(.branch_lt)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_INFO_BTF
|
||||
.BTF : AT(ADDR(.BTF) - LOAD_OFFSET) {
|
||||
*(.BTF)
|
||||
}
|
||||
#endif
|
||||
|
||||
.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
|
||||
__start_opd = .;
|
||||
KEEP(*(.opd))
|
||||
|
|
|
|||
|
|
@ -348,6 +348,122 @@ void free_initmem(void)
|
|||
free_initmem_default(POISON_FREE_INITMEM);
|
||||
}
|
||||
|
||||
/**
|
||||
* flush_coherent_icache() - if a CPU has a coherent icache, flush it
|
||||
* @addr: The base address to use (can be any valid address, the whole cache will be flushed)
|
||||
* Return true if the cache was flushed, false otherwise
|
||||
*/
|
||||
static inline bool flush_coherent_icache(unsigned long addr)
|
||||
{
|
||||
/*
|
||||
* For a snooping icache, we still need a dummy icbi to purge all the
|
||||
* prefetched instructions from the ifetch buffers. We also need a sync
|
||||
* before the icbi to order the the actual stores to memory that might
|
||||
* have modified instructions with the icbi.
|
||||
*/
|
||||
if (cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) {
|
||||
mb(); /* sync */
|
||||
allow_read_from_user((const void __user *)addr, L1_CACHE_BYTES);
|
||||
icbi((void *)addr);
|
||||
prevent_read_from_user((const void __user *)addr, L1_CACHE_BYTES);
|
||||
mb(); /* sync */
|
||||
isync();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* invalidate_icache_range() - Flush the icache by issuing icbi across an address range
|
||||
* @start: the start address
|
||||
* @stop: the stop address (exclusive)
|
||||
*/
|
||||
static void invalidate_icache_range(unsigned long start, unsigned long stop)
|
||||
{
|
||||
unsigned long shift = l1_icache_shift();
|
||||
unsigned long bytes = l1_icache_bytes();
|
||||
char *addr = (char *)(start & ~(bytes - 1));
|
||||
unsigned long size = stop - (unsigned long)addr + (bytes - 1);
|
||||
unsigned long i;
|
||||
|
||||
for (i = 0; i < size >> shift; i++, addr += bytes)
|
||||
icbi(addr);
|
||||
|
||||
mb(); /* sync */
|
||||
isync();
|
||||
}
|
||||
|
||||
/**
|
||||
* flush_icache_range: Write any modified data cache blocks out to memory
|
||||
* and invalidate the corresponding blocks in the instruction cache
|
||||
*
|
||||
* Generic code will call this after writing memory, before executing from it.
|
||||
*
|
||||
* @start: the start address
|
||||
* @stop: the stop address (exclusive)
|
||||
*/
|
||||
void flush_icache_range(unsigned long start, unsigned long stop)
|
||||
{
|
||||
if (flush_coherent_icache(start))
|
||||
return;
|
||||
|
||||
clean_dcache_range(start, stop);
|
||||
|
||||
if (IS_ENABLED(CONFIG_44x)) {
|
||||
/*
|
||||
* Flash invalidate on 44x because we are passed kmapped
|
||||
* addresses and this doesn't work for userspace pages due to
|
||||
* the virtually tagged icache.
|
||||
*/
|
||||
iccci((void *)start);
|
||||
mb(); /* sync */
|
||||
isync();
|
||||
} else
|
||||
invalidate_icache_range(start, stop);
|
||||
}
|
||||
EXPORT_SYMBOL(flush_icache_range);
|
||||
|
||||
#if !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC64)
|
||||
/**
|
||||
* flush_dcache_icache_phys() - Flush a page by it's physical address
|
||||
* @physaddr: the physical address of the page
|
||||
*/
|
||||
static void flush_dcache_icache_phys(unsigned long physaddr)
|
||||
{
|
||||
unsigned long bytes = l1_dcache_bytes();
|
||||
unsigned long nb = PAGE_SIZE / bytes;
|
||||
unsigned long addr = physaddr & PAGE_MASK;
|
||||
unsigned long msr, msr0;
|
||||
unsigned long loop1 = addr, loop2 = addr;
|
||||
|
||||
msr0 = mfmsr();
|
||||
msr = msr0 & ~MSR_DR;
|
||||
/*
|
||||
* This must remain as ASM to prevent potential memory accesses
|
||||
* while the data MMU is disabled
|
||||
*/
|
||||
asm volatile(
|
||||
" mtctr %2;\n"
|
||||
" mtmsr %3;\n"
|
||||
" isync;\n"
|
||||
"0: dcbst 0, %0;\n"
|
||||
" addi %0, %0, %4;\n"
|
||||
" bdnz 0b;\n"
|
||||
" sync;\n"
|
||||
" mtctr %2;\n"
|
||||
"1: icbi 0, %1;\n"
|
||||
" addi %1, %1, %4;\n"
|
||||
" bdnz 1b;\n"
|
||||
" sync;\n"
|
||||
" mtmsr %5;\n"
|
||||
" isync;\n"
|
||||
: "+&r" (loop1), "+&r" (loop2)
|
||||
: "r" (nb), "r" (msr), "i" (bytes), "r" (msr0)
|
||||
: "ctr", "memory");
|
||||
}
|
||||
#endif // !defined(CONFIG_PPC_8xx) && !defined(CONFIG_PPC64)
|
||||
|
||||
/*
|
||||
* This is called when a page has been modified by the kernel.
|
||||
* It just marks the page as not i-cache clean. We do the i-cache
|
||||
|
|
@ -380,12 +496,46 @@ void flush_dcache_icache_page(struct page *page)
|
|||
__flush_dcache_icache(start);
|
||||
kunmap_atomic(start);
|
||||
} else {
|
||||
__flush_dcache_icache_phys(page_to_pfn(page) << PAGE_SHIFT);
|
||||
unsigned long addr = page_to_pfn(page) << PAGE_SHIFT;
|
||||
|
||||
if (flush_coherent_icache(addr))
|
||||
return;
|
||||
flush_dcache_icache_phys(addr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
EXPORT_SYMBOL(flush_dcache_icache_page);
|
||||
|
||||
/**
|
||||
* __flush_dcache_icache(): Flush a particular page from the data cache to RAM.
|
||||
* Note: this is necessary because the instruction cache does *not*
|
||||
* snoop from the data cache.
|
||||
*
|
||||
* @page: the address of the page to flush
|
||||
*/
|
||||
void __flush_dcache_icache(void *p)
|
||||
{
|
||||
unsigned long addr = (unsigned long)p;
|
||||
|
||||
if (flush_coherent_icache(addr))
|
||||
return;
|
||||
|
||||
clean_dcache_range(addr, addr + PAGE_SIZE);
|
||||
|
||||
/*
|
||||
* We don't flush the icache on 44x. Those have a virtual icache and we
|
||||
* don't have access to the virtual address here (it's not the page
|
||||
* vaddr but where it's mapped in user space). The flushing of the
|
||||
* icache on these is handled elsewhere, when a change in the address
|
||||
* space occurs, before returning to user space.
|
||||
*/
|
||||
|
||||
if (cpu_has_feature(MMU_FTR_TYPE_44x))
|
||||
return;
|
||||
|
||||
invalidate_icache_range(addr, addr + PAGE_SIZE);
|
||||
}
|
||||
|
||||
void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
|
||||
{
|
||||
clear_page(page);
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ config ARCH_FLATMEM_ENABLE
|
|||
|
||||
config ARCH_SPARSEMEM_ENABLE
|
||||
def_bool y
|
||||
depends on MMU
|
||||
select SPARSEMEM_VMEMMAP_ENABLE
|
||||
|
||||
config ARCH_SELECT_MEMORY_MODEL
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
#include <linux/err.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/moduleloader.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
static int apply_r_riscv_32_rela(struct module *me, u32 *location, Elf_Addr v)
|
||||
{
|
||||
|
|
@ -386,3 +390,15 @@ int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MMU) && defined(CONFIG_64BIT)
|
||||
#define VMALLOC_MODULE_START \
|
||||
max(PFN_ALIGN((unsigned long)&_end - SZ_2G), VMALLOC_START)
|
||||
void *module_alloc(unsigned long size)
|
||||
{
|
||||
return __vmalloc_node_range(size, 1, VMALLOC_MODULE_START,
|
||||
VMALLOC_END, GFP_KERNEL,
|
||||
PAGE_KERNEL_EXEC, 0, NUMA_NO_NODE,
|
||||
__builtin_return_address(0));
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ void __init setup_bootmem(void)
|
|||
for_each_memblock(memory, reg) {
|
||||
phys_addr_t end = reg->base + reg->size;
|
||||
|
||||
if (reg->base <= vmlinux_end && vmlinux_end <= end) {
|
||||
if (reg->base <= vmlinux_start && vmlinux_end <= end) {
|
||||
mem_size = min(reg->size, (phys_addr_t)-PAGE_OFFSET);
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ all: bzImage
|
|||
#KBUILD_IMAGE is necessary for packaging targets like rpm-pkg, deb-pkg...
|
||||
KBUILD_IMAGE := $(boot)/bzImage
|
||||
|
||||
install: vmlinux
|
||||
install:
|
||||
$(Q)$(MAKE) $(build)=$(boot) $@
|
||||
|
||||
bzImage: vmlinux
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ $(obj)/compressed/vmlinux: $(obj)/startup.a FORCE
|
|||
$(obj)/startup.a: $(OBJECTS) FORCE
|
||||
$(call if_changed,ar)
|
||||
|
||||
install: $(CONFIGURE) $(obj)/bzImage
|
||||
install:
|
||||
sh -x $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
|
||||
System.map "$(INSTALL_PATH)"
|
||||
|
||||
|
|
|
|||
|
|
@ -756,6 +756,12 @@ static inline int pmd_write(pmd_t pmd)
|
|||
return (pmd_val(pmd) & _SEGMENT_ENTRY_WRITE) != 0;
|
||||
}
|
||||
|
||||
#define pud_write pud_write
|
||||
static inline int pud_write(pud_t pud)
|
||||
{
|
||||
return (pud_val(pud) & _REGION3_ENTRY_WRITE) != 0;
|
||||
}
|
||||
|
||||
static inline int pmd_dirty(pmd_t pmd)
|
||||
{
|
||||
int dirty = 1;
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ struct qdio_buffer {
|
|||
* @sbal: absolute SBAL address
|
||||
*/
|
||||
struct sl_element {
|
||||
unsigned long sbal;
|
||||
u64 sbal;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -423,7 +423,7 @@ static void zpci_map_resources(struct pci_dev *pdev)
|
|||
|
||||
if (zpci_use_mio(zdev))
|
||||
pdev->resource[i].start =
|
||||
(resource_size_t __force) zdev->bars[i].mio_wb;
|
||||
(resource_size_t __force) zdev->bars[i].mio_wt;
|
||||
else
|
||||
pdev->resource[i].start = (resource_size_t __force)
|
||||
pci_iomap_range_fh(pdev, i, 0, 0);
|
||||
|
|
@ -530,7 +530,7 @@ static int zpci_setup_bus_resources(struct zpci_dev *zdev,
|
|||
flags |= IORESOURCE_MEM_64;
|
||||
|
||||
if (zpci_use_mio(zdev))
|
||||
addr = (unsigned long) zdev->bars[i].mio_wb;
|
||||
addr = (unsigned long) zdev->bars[i].mio_wt;
|
||||
else
|
||||
addr = ZPCI_ADDR(entry);
|
||||
size = 1UL << zdev->bars[i].size;
|
||||
|
|
|
|||
|
|
@ -29,9 +29,6 @@
|
|||
#define __PAGE_OFFSET __PAGE_OFFSET_BASE
|
||||
#include "../../mm/ident_map.c"
|
||||
|
||||
/* Used by pgtable.h asm code to force instruction serialization. */
|
||||
unsigned long __force_order;
|
||||
|
||||
/* Used to track our page table allocation area. */
|
||||
struct alloc_pgt_data {
|
||||
unsigned char *pgt_buf;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
CONFIG_UAPI_HEADER_TEST=y
|
||||
# CONFIG_USELIB is not set
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
|
|
@ -34,11 +35,11 @@ CONFIG_BPF_SYSCALL=y
|
|||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
CONFIG_SLAB_FREELIST_RANDOM=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
|
|
@ -53,7 +54,7 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
|||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_IA32_EMULATION=y
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_LTO_CLANG=y
|
||||
CONFIG_CFI_CLANG=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
@ -64,6 +65,7 @@ CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
|||
CONFIG_GKI_HACKS_TO_FIX=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_AREAS=16
|
||||
CONFIG_ZSMALLOC=y
|
||||
|
|
@ -186,7 +188,6 @@ CONFIG_FW_LOADER_USER_HELPER=y
|
|||
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
|
||||
# CONFIG_FW_CACHE is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
CONFIG_GNSS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_ZRAM=y
|
||||
|
|
@ -265,9 +266,12 @@ CONFIG_HPET=y
|
|||
CONFIG_SPI=y
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
|
||||
CONFIG_DEVFREQ_THERMAL=y
|
||||
# CONFIG_X86_PKG_TEMP_THERMAL is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
|
|
@ -298,6 +302,9 @@ CONFIG_USB_HIDDEV=y
|
|||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_UEVENT=y
|
||||
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||
CONFIG_USB_CONFIGFS_RNDIS=y
|
||||
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
|
||||
CONFIG_USB_CONFIGFS_F_FS=y
|
||||
CONFIG_USB_CONFIGFS_F_ACC=y
|
||||
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
|
||||
|
|
@ -317,8 +324,12 @@ CONFIG_STAGING=y
|
|||
CONFIG_ASHMEM=y
|
||||
CONFIG_ION=y
|
||||
CONFIG_ION_SYSTEM_HEAP=y
|
||||
CONFIG_REMOTEPROC=y
|
||||
CONFIG_RPMSG_CHAR=y
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IIO_BUFFER=y
|
||||
CONFIG_IIO_TRIGGER=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_ANDROID=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
|
|
@ -399,8 +410,10 @@ CONFIG_NLS_MAC_TURKISH=y
|
|||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_UNICODE=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITYFS=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
# CONFIG_HARDENED_USERCOPY_FALLBACK is not set
|
||||
CONFIG_FORTIFY_SOURCE=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_INIT_STACK_ALL=y
|
||||
|
|
@ -417,6 +430,7 @@ CONFIG_DMA_CMA=y
|
|||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_HEADERS_INSTALL=y
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
|
@ -425,3 +439,4 @@ CONFIG_SOFTLOCKUP_DETECTOR=y
|
|||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
CONFIG_SCHEDSTATS=y
|
||||
CONFIG_DEBUG_LIST=y
|
||||
|
|
|
|||
|
|
@ -190,15 +190,12 @@ static int amd_uncore_event_init(struct perf_event *event)
|
|||
|
||||
/*
|
||||
* NB and Last level cache counters (MSRs) are shared across all cores
|
||||
* that share the same NB / Last level cache. Interrupts can be directed
|
||||
* to a single target core, however, event counts generated by processes
|
||||
* running on other cores cannot be masked out. So we do not support
|
||||
* sampling and per-thread events.
|
||||
* that share the same NB / Last level cache. On family 16h and below,
|
||||
* Interrupts can be directed to a single target core, however, event
|
||||
* counts generated by processes running on other cores cannot be masked
|
||||
* out. So we do not support sampling and per-thread events via
|
||||
* CAP_NO_INTERRUPT, and we do not enable counter overflow interrupts:
|
||||
*/
|
||||
if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
|
||||
return -EINVAL;
|
||||
|
||||
/* and we do not enable counter overflow interrupts */
|
||||
hwc->config = event->attr.config & AMD64_RAW_EVENT_MASK_NB;
|
||||
hwc->idx = -1;
|
||||
|
||||
|
|
@ -306,7 +303,7 @@ static struct pmu amd_nb_pmu = {
|
|||
.start = amd_uncore_start,
|
||||
.stop = amd_uncore_stop,
|
||||
.read = amd_uncore_read,
|
||||
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
||||
.capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT,
|
||||
};
|
||||
|
||||
static struct pmu amd_llc_pmu = {
|
||||
|
|
@ -317,7 +314,7 @@ static struct pmu amd_llc_pmu = {
|
|||
.start = amd_uncore_start,
|
||||
.stop = amd_uncore_stop,
|
||||
.read = amd_uncore_read,
|
||||
.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
|
||||
.capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT,
|
||||
};
|
||||
|
||||
static struct amd_uncore *amd_uncore_alloc(unsigned int cpu)
|
||||
|
|
|
|||
|
|
@ -4747,6 +4747,7 @@ __init int intel_pmu_init(void)
|
|||
break;
|
||||
|
||||
case INTEL_FAM6_ATOM_TREMONT_D:
|
||||
case INTEL_FAM6_ATOM_TREMONT:
|
||||
x86_pmu.late_ack = true;
|
||||
memcpy(hw_cache_event_ids, glp_hw_cache_event_ids,
|
||||
sizeof(hw_cache_event_ids));
|
||||
|
|
|
|||
|
|
@ -40,17 +40,18 @@
|
|||
* Model specific counters:
|
||||
* MSR_CORE_C1_RES: CORE C1 Residency Counter
|
||||
* perf code: 0x00
|
||||
* Available model: SLM,AMT,GLM,CNL
|
||||
* Available model: SLM,AMT,GLM,CNL,TNT
|
||||
* Scope: Core (each processor core has a MSR)
|
||||
* MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter
|
||||
* perf code: 0x01
|
||||
* Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,GLM,
|
||||
* CNL,KBL,CML
|
||||
* CNL,KBL,CML,TNT
|
||||
* Scope: Core
|
||||
* MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter
|
||||
* perf code: 0x02
|
||||
* Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW,
|
||||
* SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL
|
||||
* SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL,
|
||||
* TNT
|
||||
* Scope: Core
|
||||
* MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter
|
||||
* perf code: 0x03
|
||||
|
|
@ -60,17 +61,18 @@
|
|||
* MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter.
|
||||
* perf code: 0x00
|
||||
* Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM,CNL,
|
||||
* KBL,CML,ICL,TGL
|
||||
* KBL,CML,ICL,TGL,TNT
|
||||
* Scope: Package (physical package)
|
||||
* MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter.
|
||||
* perf code: 0x01
|
||||
* Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL,
|
||||
* GLM,CNL,KBL,CML,ICL,TGL
|
||||
* GLM,CNL,KBL,CML,ICL,TGL,TNT
|
||||
* Scope: Package (physical package)
|
||||
* MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter.
|
||||
* perf code: 0x02
|
||||
* Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW
|
||||
* SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL
|
||||
* Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW,
|
||||
* SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL,
|
||||
* TNT
|
||||
* Scope: Package (physical package)
|
||||
* MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter.
|
||||
* perf code: 0x03
|
||||
|
|
@ -87,7 +89,8 @@
|
|||
* Scope: Package (physical package)
|
||||
* MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter.
|
||||
* perf code: 0x06
|
||||
* Available model: HSW ULT,KBL,GLM,CNL,CML,ICL,TGL
|
||||
* Available model: HSW ULT,KBL,GLM,CNL,CML,ICL,TGL,
|
||||
* TNT
|
||||
* Scope: Package (physical package)
|
||||
*
|
||||
*/
|
||||
|
|
@ -640,8 +643,9 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
|
|||
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT, glm_cstates),
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT_D, glm_cstates),
|
||||
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT_PLUS, glm_cstates),
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_TREMONT_D, glm_cstates),
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ATOM_TREMONT, glm_cstates),
|
||||
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE_L, icl_cstates),
|
||||
X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE, icl_cstates),
|
||||
|
|
|
|||
|
|
@ -75,8 +75,9 @@ static bool test_intel(int idx, void *data)
|
|||
|
||||
case INTEL_FAM6_ATOM_GOLDMONT:
|
||||
case INTEL_FAM6_ATOM_GOLDMONT_D:
|
||||
|
||||
case INTEL_FAM6_ATOM_GOLDMONT_PLUS:
|
||||
case INTEL_FAM6_ATOM_TREMONT_D:
|
||||
case INTEL_FAM6_ATOM_TREMONT:
|
||||
|
||||
case INTEL_FAM6_XEON_PHI_KNL:
|
||||
case INTEL_FAM6_XEON_PHI_KNM:
|
||||
|
|
|
|||
|
|
@ -464,7 +464,7 @@ static __always_inline void setup_pku(struct cpuinfo_x86 *c)
|
|||
* cpuid bit to be set. We need to ensure that we
|
||||
* update that bit in this CPU's "cpu_info".
|
||||
*/
|
||||
get_cpu_cap(c);
|
||||
set_cpu_cap(c, X86_FEATURE_OSPKE);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
|
||||
|
|
|
|||
|
|
@ -489,17 +489,18 @@ static void intel_ppin_init(struct cpuinfo_x86 *c)
|
|||
return;
|
||||
|
||||
if ((val & 3UL) == 1UL) {
|
||||
/* PPIN available but disabled: */
|
||||
/* PPIN locked in disabled mode */
|
||||
return;
|
||||
}
|
||||
|
||||
/* If PPIN is disabled, but not locked, try to enable: */
|
||||
if (!(val & 3UL)) {
|
||||
/* If PPIN is disabled, try to enable */
|
||||
if (!(val & 2UL)) {
|
||||
wrmsrl_safe(MSR_PPIN_CTL, val | 2UL);
|
||||
rdmsrl_safe(MSR_PPIN_CTL, &val);
|
||||
}
|
||||
|
||||
if ((val & 3UL) == 2UL)
|
||||
/* Is the enable bit set? */
|
||||
if (val & 2UL)
|
||||
set_cpu_cap(c, X86_FEATURE_INTEL_PPIN);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ static inline struct rdt_fs_context *rdt_fc2context(struct fs_context *fc)
|
|||
}
|
||||
|
||||
DECLARE_STATIC_KEY_FALSE(rdt_enable_key);
|
||||
DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key);
|
||||
|
||||
/**
|
||||
* struct mon_evt - Entry in the event list of a resource
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ void mbm_handle_overflow(struct work_struct *work)
|
|||
|
||||
mutex_lock(&rdtgroup_mutex);
|
||||
|
||||
if (!static_branch_likely(&rdt_enable_key))
|
||||
if (!static_branch_likely(&rdt_mon_enable_key))
|
||||
goto out_unlock;
|
||||
|
||||
d = get_domain_from_cpu(cpu, &rdt_resources_all[RDT_RESOURCE_L3]);
|
||||
|
|
@ -543,7 +543,7 @@ void mbm_setup_overflow_handler(struct rdt_domain *dom, unsigned long delay_ms)
|
|||
unsigned long delay = msecs_to_jiffies(delay_ms);
|
||||
int cpu;
|
||||
|
||||
if (!static_branch_likely(&rdt_enable_key))
|
||||
if (!static_branch_likely(&rdt_mon_enable_key))
|
||||
return;
|
||||
cpu = cpumask_any(&dom->cpu_mask);
|
||||
dom->mbm_work_cpu = cpu;
|
||||
|
|
|
|||
|
|
@ -5197,6 +5197,7 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len)
|
|||
ctxt->fetch.ptr = ctxt->fetch.data;
|
||||
ctxt->fetch.end = ctxt->fetch.data + insn_len;
|
||||
ctxt->opcode_len = 1;
|
||||
ctxt->intercept = x86_intercept_none;
|
||||
if (insn_len > 0)
|
||||
memcpy(ctxt->fetch.data, insn, insn_len);
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -1298,6 +1298,47 @@ static void shrink_ple_window(struct kvm_vcpu *vcpu)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The default MMIO mask is a single bit (excluding the present bit),
|
||||
* which could conflict with the memory encryption bit. Check for
|
||||
* memory encryption support and override the default MMIO mask if
|
||||
* memory encryption is enabled.
|
||||
*/
|
||||
static __init void svm_adjust_mmio_mask(void)
|
||||
{
|
||||
unsigned int enc_bit, mask_bit;
|
||||
u64 msr, mask;
|
||||
|
||||
/* If there is no memory encryption support, use existing mask */
|
||||
if (cpuid_eax(0x80000000) < 0x8000001f)
|
||||
return;
|
||||
|
||||
/* If memory encryption is not enabled, use existing mask */
|
||||
rdmsrl(MSR_K8_SYSCFG, msr);
|
||||
if (!(msr & MSR_K8_SYSCFG_MEM_ENCRYPT))
|
||||
return;
|
||||
|
||||
enc_bit = cpuid_ebx(0x8000001f) & 0x3f;
|
||||
mask_bit = boot_cpu_data.x86_phys_bits;
|
||||
|
||||
/* Increment the mask bit if it is the same as the encryption bit */
|
||||
if (enc_bit == mask_bit)
|
||||
mask_bit++;
|
||||
|
||||
/*
|
||||
* If the mask bit location is below 52, then some bits above the
|
||||
* physical addressing limit will always be reserved, so use the
|
||||
* rsvd_bits() function to generate the mask. This mask, along with
|
||||
* the present bit, will be used to generate a page fault with
|
||||
* PFER.RSV = 1.
|
||||
*
|
||||
* If the mask bit location is 52 (or above), then clear the mask.
|
||||
*/
|
||||
mask = (mask_bit < 52) ? rsvd_bits(mask_bit, 51) | PT_PRESENT_MASK : 0;
|
||||
|
||||
kvm_mmu_set_mmio_spte_mask(mask, mask, PT_WRITABLE_MASK | PT_USER_MASK);
|
||||
}
|
||||
|
||||
static __init int svm_hardware_setup(void)
|
||||
{
|
||||
int cpu;
|
||||
|
|
@ -1352,6 +1393,8 @@ static __init int svm_hardware_setup(void)
|
|||
}
|
||||
}
|
||||
|
||||
svm_adjust_mmio_mask();
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
r = svm_cpu_init(cpu);
|
||||
if (r)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue