mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-21 06:24:12 +00:00
Merge remote-tracking branch 'net-next/master' into mac80211-next
Merge net-next to resolve a conflict and to get the mac80211 rhashtable fixes so further patches can be applied on top. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
commit
b7b14ec1eb
1522 changed files with 39065 additions and 16697 deletions
|
@ -24,7 +24,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
cpld3_version
|
cpld3_version
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files show with which CPLD versions have been burned
|
Description: These files show with which CPLD versions have been burned
|
||||||
on LED board.
|
on LED board.
|
||||||
|
@ -35,7 +35,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
jtag_enable
|
jtag_enable
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files enable and disable the access to the JTAG domain.
|
Description: These files enable and disable the access to the JTAG domain.
|
||||||
By default access to the JTAG domain is disabled.
|
By default access to the JTAG domain is disabled.
|
||||||
|
@ -105,7 +105,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
reset_voltmon_upgrade_fail
|
reset_voltmon_upgrade_fail
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files show the system reset cause, as following: ComEx
|
Description: These files show the system reset cause, as following: ComEx
|
||||||
power fail, reset from ComEx, system platform reset, reset
|
power fail, reset from ComEx, system platform reset, reset
|
||||||
|
|
|
@ -1701,12 +1701,11 @@
|
||||||
By default, super page will be supported if Intel IOMMU
|
By default, super page will be supported if Intel IOMMU
|
||||||
has the capability. With this option, super page will
|
has the capability. With this option, super page will
|
||||||
not be supported.
|
not be supported.
|
||||||
sm_off [Default Off]
|
sm_on [Default Off]
|
||||||
By default, scalable mode will be supported if the
|
By default, scalable mode will be disabled even if the
|
||||||
hardware advertises that it has support for the scalable
|
hardware advertises that it has support for the scalable
|
||||||
mode translation. With this option set, scalable mode
|
mode translation. With this option set, scalable mode
|
||||||
will not be used even on hardware which claims to support
|
will be used on hardware which claims to support it.
|
||||||
it.
|
|
||||||
tboot_noforce [Default Off]
|
tboot_noforce [Default Off]
|
||||||
Do not force the Intel IOMMU enabled under tboot.
|
Do not force the Intel IOMMU enabled under tboot.
|
||||||
By default, tboot will force Intel IOMMU on, which
|
By default, tboot will force Intel IOMMU on, which
|
||||||
|
|
|
@ -17,7 +17,11 @@ extra-y += $(DT_TMP_SCHEMA)
|
||||||
quiet_cmd_mk_schema = SCHEMA $@
|
quiet_cmd_mk_schema = SCHEMA $@
|
||||||
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(filter-out FORCE, $^)
|
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(filter-out FORCE, $^)
|
||||||
|
|
||||||
DT_DOCS = $(shell cd $(srctree)/$(src) && find * -name '*.yaml')
|
DT_DOCS = $(shell \
|
||||||
|
cd $(srctree)/$(src) && \
|
||||||
|
find * \( -name '*.yaml' ! -name $(DT_TMP_SCHEMA) \) \
|
||||||
|
)
|
||||||
|
|
||||||
DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
|
DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
|
||||||
|
|
||||||
extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be "cdns,[<chip>-]{macb|gem}"
|
- compatible: Should be "cdns,[<chip>-]{macb|gem}"
|
||||||
Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
|
Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
|
||||||
Use "cdns,at91sam9260-macb" for Atmel at91sam9 SoCs or the 10/100Mbit IP
|
Use "cdns,at91sam9260-macb" for Atmel at91sam9 SoCs.
|
||||||
available on sama5d3 SoCs.
|
Use "cdns,sam9x60-macb" for Microchip sam9x60 SoC.
|
||||||
Use "cdns,np4-macb" for NP4 SoC devices.
|
Use "cdns,np4-macb" for NP4 SoC devices.
|
||||||
Use "cdns,at32ap7000-macb" for other 10/100 usage or use the generic form: "cdns,macb".
|
Use "cdns,at32ap7000-macb" for other 10/100 usage or use the generic form: "cdns,macb".
|
||||||
Use "cdns,pc302-gem" for Picochip picoXcell pc302 and later devices based on
|
Use "cdns,pc302-gem" for Picochip picoXcell pc302 and later devices based on
|
||||||
|
|
|
@ -19,7 +19,7 @@ Optional properties:
|
||||||
"marvell,armada-370-neta" and 9800B for others.
|
"marvell,armada-370-neta" and 9800B for others.
|
||||||
- clock-names: List of names corresponding to clocks property; shall be
|
- clock-names: List of names corresponding to clocks property; shall be
|
||||||
"core" for core clock and "bus" for the optional bus clock.
|
"core" for core clock and "bus" for the optional bus clock.
|
||||||
|
- phys: comphy for the ethernet port, see ../phy/phy-bindings.txt
|
||||||
|
|
||||||
Optional properties (valid only for Armada XP/38x):
|
Optional properties (valid only for Armada XP/38x):
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
mvebu armada 38x comphy driver
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
This comphy controller can be found on Marvell Armada 38x. It provides a
|
||||||
|
number of shared PHYs used by various interfaces (network, sata, usb,
|
||||||
|
PCIe...).
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: should be "marvell,armada-380-comphy"
|
||||||
|
- reg: should contain the comphy register location and length.
|
||||||
|
- #address-cells: should be 1.
|
||||||
|
- #size-cells: should be 0.
|
||||||
|
|
||||||
|
A sub-node is required for each comphy lane provided by the comphy.
|
||||||
|
|
||||||
|
Required properties (child nodes):
|
||||||
|
|
||||||
|
- reg: comphy lane number.
|
||||||
|
- #phy-cells : from the generic phy bindings, must be 1. Defines the
|
||||||
|
input port to use for a given comphy lane.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
comphy: phy@18300 {
|
||||||
|
compatible = "marvell,armada-380-comphy";
|
||||||
|
reg = <0x18300 0x100>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cpm_comphy0: phy@0 {
|
||||||
|
reg = <0>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpm_comphy1: phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -19,6 +19,9 @@ Clock Properties:
|
||||||
- fsl,max-adj Maximum frequency adjustment in parts per billion.
|
- fsl,max-adj Maximum frequency adjustment in parts per billion.
|
||||||
- fsl,extts-fifo The presence of this property indicates hardware
|
- fsl,extts-fifo The presence of this property indicates hardware
|
||||||
support for the external trigger stamp FIFO.
|
support for the external trigger stamp FIFO.
|
||||||
|
- little-endian The presence of this property indicates the 1588 timer
|
||||||
|
IP block is little-endian mode. The default endian mode
|
||||||
|
is big-endian.
|
||||||
|
|
||||||
These properties set the operational parameters for the PTP
|
These properties set the operational parameters for the PTP
|
||||||
clock. You must choose these carefully for the clock to work right.
|
clock. You must choose these carefully for the clock to work right.
|
||||||
|
|
|
@ -4,14 +4,10 @@ Required properties:
|
||||||
- compatible : "olpc,ap-sp"
|
- compatible : "olpc,ap-sp"
|
||||||
- reg : base address and length of SoC's WTM registers
|
- reg : base address and length of SoC's WTM registers
|
||||||
- interrupts : SP-AP interrupt
|
- interrupts : SP-AP interrupt
|
||||||
- clocks : phandle + clock-specifier for the clock that drives the WTM
|
|
||||||
- clock-names: should be "sp"
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
ap-sp@d4290000 {
|
ap-sp@d4290000 {
|
||||||
compatible = "olpc,ap-sp";
|
compatible = "olpc,ap-sp";
|
||||||
reg = <0xd4290000 0x1000>;
|
reg = <0xd4290000 0x1000>;
|
||||||
interrupts = <40>;
|
interrupts = <40>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_SP>;
|
|
||||||
clock-names = "sp";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,11 +27,12 @@ Driver Overview
|
||||||
|
|
||||||
The DPIO driver is bound to DPIO objects discovered on the fsl-mc bus and
|
The DPIO driver is bound to DPIO objects discovered on the fsl-mc bus and
|
||||||
provides services that:
|
provides services that:
|
||||||
A) allow other drivers, such as the Ethernet driver, to enqueue and dequeue
|
|
||||||
|
A. allow other drivers, such as the Ethernet driver, to enqueue and dequeue
|
||||||
frames for their respective objects
|
frames for their respective objects
|
||||||
B) allow drivers to register callbacks for data availability notifications
|
B. allow drivers to register callbacks for data availability notifications
|
||||||
when data becomes available on a queue or channel
|
when data becomes available on a queue or channel
|
||||||
C) allow drivers to manage hardware buffer pools
|
C. allow drivers to manage hardware buffer pools
|
||||||
|
|
||||||
The Linux DPIO driver consists of 3 primary components--
|
The Linux DPIO driver consists of 3 primary components--
|
||||||
DPIO object driver-- fsl-mc driver that manages the DPIO object
|
DPIO object driver-- fsl-mc driver that manages the DPIO object
|
||||||
|
@ -140,11 +141,10 @@ QBman portal interface (qbman-portal.c)
|
||||||
|
|
||||||
The qbman-portal component provides APIs to do the low level hardware
|
The qbman-portal component provides APIs to do the low level hardware
|
||||||
bit twiddling for operations such as:
|
bit twiddling for operations such as:
|
||||||
-initializing Qman software portals
|
|
||||||
|
|
||||||
-building and sending portal commands
|
- initializing Qman software portals
|
||||||
|
- building and sending portal commands
|
||||||
-portal interrupt configuration and processing
|
- portal interrupt configuration and processing
|
||||||
|
|
||||||
The qbman-portal APIs are not public to other drivers, and are
|
The qbman-portal APIs are not public to other drivers, and are
|
||||||
only used by dpio-service.
|
only used by dpio-service.
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
==============================================================
|
||||||
Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters
|
Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
===========================================================
|
||||||
Linux* Base Driver for Intel(R) Ethernet Network Connection
|
Linux* Base Driver for Intel(R) Ethernet Network Connection
|
||||||
===========================================================
|
===========================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
======================================================
|
||||||
Linux* Driver for Intel(R) Ethernet Network Connection
|
Linux* Driver for Intel(R) Ethernet Network Connection
|
||||||
======================================================
|
======================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
==============================================================
|
||||||
Linux* Base Driver for Intel(R) Ethernet Multi-host Controller
|
Linux* Base Driver for Intel(R) Ethernet Multi-host Controller
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
==================================================================
|
||||||
Linux* Base Driver for the Intel(R) Ethernet Controller 700 Series
|
Linux* Base Driver for the Intel(R) Ethernet Controller 700 Series
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
==================================================================
|
||||||
Linux* Base Driver for Intel(R) Ethernet Adaptive Virtual Function
|
Linux* Base Driver for Intel(R) Ethernet Adaptive Virtual Function
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
===================================================================
|
||||||
Linux* Base Driver for the Intel(R) Ethernet Connection E800 Series
|
Linux* Base Driver for the Intel(R) Ethernet Connection E800 Series
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
===========================================================
|
||||||
Linux* Base Driver for Intel(R) Ethernet Network Connection
|
Linux* Base Driver for Intel(R) Ethernet Network Connection
|
||||||
===========================================================
|
===========================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
============================================================
|
||||||
Linux* Base Virtual Function Driver for Intel(R) 1G Ethernet
|
Linux* Base Virtual Function Driver for Intel(R) 1G Ethernet
|
||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
=====================================================================
|
||||||
Linux Base Driver for 10 Gigabit Intel(R) Ethernet Network Connection
|
Linux Base Driver for 10 Gigabit Intel(R) Ethernet Network Connection
|
||||||
=====================================================================
|
=====================================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters
|
Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters
|
||||||
=============================================================================
|
=============================================================================
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0+
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
=============================================================
|
||||||
Linux* Base Virtual Function Driver for Intel(R) 10G Ethernet
|
Linux* Base Virtual Function Driver for Intel(R) 10G Ethernet
|
||||||
=============================================================
|
=============================================================
|
||||||
|
|
||||||
|
|
86
Documentation/networking/devlink-health.txt
Normal file
86
Documentation/networking/devlink-health.txt
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
The health mechanism is targeted for Real Time Alerting, in order to know when
|
||||||
|
something bad had happened to a PCI device
|
||||||
|
- Provide alert debug information
|
||||||
|
- Self healing
|
||||||
|
- If problem needs vendor support, provide a way to gather all needed debugging
|
||||||
|
information.
|
||||||
|
|
||||||
|
The main idea is to unify and centralize driver health reports in the
|
||||||
|
generic devlink instance and allow the user to set different
|
||||||
|
attributes of the health reporting and recovery procedures.
|
||||||
|
|
||||||
|
The devlink health reporter:
|
||||||
|
Device driver creates a "health reporter" per each error/health type.
|
||||||
|
Error/Health type can be a known/generic (eg pci error, fw error, rx/tx error)
|
||||||
|
or unknown (driver specific).
|
||||||
|
For each registered health reporter a driver can issue error/health reports
|
||||||
|
asynchronously. All health reports handling is done by devlink.
|
||||||
|
Device driver can provide specific callbacks for each "health reporter", e.g.
|
||||||
|
- Recovery procedures
|
||||||
|
- Diagnostics and object dump procedures
|
||||||
|
- OOB initial parameters
|
||||||
|
Different parts of the driver can register different types of health reporters
|
||||||
|
with different handlers.
|
||||||
|
|
||||||
|
Once an error is reported, devlink health will do the following actions:
|
||||||
|
* A log is being send to the kernel trace events buffer
|
||||||
|
* Health status and statistics are being updated for the reporter instance
|
||||||
|
* Object dump is being taken and saved at the reporter instance (as long as
|
||||||
|
there is no other dump which is already stored)
|
||||||
|
* Auto recovery attempt is being done. Depends on:
|
||||||
|
- Auto-recovery configuration
|
||||||
|
- Grace period vs. time passed since last recover
|
||||||
|
|
||||||
|
The user interface:
|
||||||
|
User can access/change each reporter's parameters and driver specific callbacks
|
||||||
|
via devlink, e.g per error type (per health reporter)
|
||||||
|
- Configure reporter's generic parameters (like: disable/enable auto recovery)
|
||||||
|
- Invoke recovery procedure
|
||||||
|
- Run diagnostics
|
||||||
|
- Object dump
|
||||||
|
|
||||||
|
The devlink health interface (via netlink):
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_GET
|
||||||
|
Retrieves status and configuration info per DEV and reporter.
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_SET
|
||||||
|
Allows reporter-related configuration setting.
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_RECOVER
|
||||||
|
Triggers a reporter's recovery procedure.
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE
|
||||||
|
Retrieves diagnostics data from a reporter on a device.
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET
|
||||||
|
Retrieves the last stored dump. Devlink health
|
||||||
|
saves a single dump. If an dump is not already stored by the devlink
|
||||||
|
for this reporter, devlink generates a new dump.
|
||||||
|
dump output is defined by the reporter.
|
||||||
|
DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR
|
||||||
|
Clears the last saved dump file for the specified reporter.
|
||||||
|
|
||||||
|
|
||||||
|
netlink
|
||||||
|
+--------------------------+
|
||||||
|
| |
|
||||||
|
| + |
|
||||||
|
| | |
|
||||||
|
+--------------------------+
|
||||||
|
|request for ops
|
||||||
|
|(diagnose,
|
||||||
|
mlx5_core devlink |recover,
|
||||||
|
|dump)
|
||||||
|
+--------+ +--------------------------+
|
||||||
|
| | | reporter| |
|
||||||
|
| | | +---------v----------+ |
|
||||||
|
| | ops execution | | | |
|
||||||
|
| <----------------------------------+ | |
|
||||||
|
| | | | | |
|
||||||
|
| | | + ^------------------+ |
|
||||||
|
| | | | request for ops |
|
||||||
|
| | | | (recover, dump) |
|
||||||
|
| | | | |
|
||||||
|
| | | +-+------------------+ |
|
||||||
|
| | health report | | health handler | |
|
||||||
|
| +-------------------------------> | |
|
||||||
|
| | | +--------------------+ |
|
||||||
|
| | health reporter create | |
|
||||||
|
| +----------------------------> |
|
||||||
|
+--------+ +--------------------------+
|
|
@ -14,6 +14,11 @@ board.rev
|
||||||
|
|
||||||
Board design revision.
|
Board design revision.
|
||||||
|
|
||||||
|
board.manufacture
|
||||||
|
=================
|
||||||
|
|
||||||
|
An identifier of the company or the facility which produced the part.
|
||||||
|
|
||||||
fw.mgmt
|
fw.mgmt
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,10 @@
|
||||||
fw_load_policy [DEVICE, GENERIC]
|
fw_load_policy [DEVICE, GENERIC]
|
||||||
Configuration mode: driverinit
|
Configuration mode: driverinit
|
||||||
|
|
||||||
|
acl_region_rehash_interval [DEVICE, DRIVER-SPECIFIC]
|
||||||
|
Sets an interval for periodic ACL region rehashes.
|
||||||
|
The value is in milliseconds, minimal value is "3000".
|
||||||
|
Value "0" disables the periodic work.
|
||||||
|
The first rehash will be run right after value is set.
|
||||||
|
Type: u32
|
||||||
|
Configuration mode: runtime
|
||||||
|
|
|
@ -464,10 +464,11 @@ breakpoints: 0 1
|
||||||
JIT compiler
|
JIT compiler
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The Linux kernel has a built-in BPF JIT compiler for x86_64, SPARC, PowerPC,
|
The Linux kernel has a built-in BPF JIT compiler for x86_64, SPARC,
|
||||||
ARM, ARM64, MIPS and s390 and can be enabled through CONFIG_BPF_JIT. The JIT
|
PowerPC, ARM, ARM64, MIPS, RISC-V and s390 and can be enabled through
|
||||||
compiler is transparently invoked for each attached filter from user space
|
CONFIG_BPF_JIT. The JIT compiler is transparently invoked for each
|
||||||
or for internal kernel users if it has been previously enabled by root:
|
attached filter from user space or for internal kernel users if it has
|
||||||
|
been previously enabled by root:
|
||||||
|
|
||||||
echo 1 > /proc/sys/net/core/bpf_jit_enable
|
echo 1 > /proc/sys/net/core/bpf_jit_enable
|
||||||
|
|
||||||
|
@ -603,9 +604,10 @@ got from bpf_prog_create(), and 'ctx' the given context (e.g.
|
||||||
skb pointer). All constraints and restrictions from bpf_check_classic() apply
|
skb pointer). All constraints and restrictions from bpf_check_classic() apply
|
||||||
before a conversion to the new layout is being done behind the scenes!
|
before a conversion to the new layout is being done behind the scenes!
|
||||||
|
|
||||||
Currently, the classic BPF format is being used for JITing on most 32-bit
|
Currently, the classic BPF format is being used for JITing on most
|
||||||
architectures, whereas x86-64, aarch64, s390x, powerpc64, sparc64, arm32 perform
|
32-bit architectures, whereas x86-64, aarch64, s390x, powerpc64,
|
||||||
JIT compilation from eBPF instruction set.
|
sparc64, arm32, riscv (RV64G) perform JIT compilation from eBPF
|
||||||
|
instruction set.
|
||||||
|
|
||||||
Some core changes of the new internal format:
|
Some core changes of the new internal format:
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Intro
|
||||||
=====
|
=====
|
||||||
|
|
||||||
The MSG_ZEROCOPY flag enables copy avoidance for socket send calls.
|
The MSG_ZEROCOPY flag enables copy avoidance for socket send calls.
|
||||||
The feature is currently implemented for TCP sockets.
|
The feature is currently implemented for TCP and UDP sockets.
|
||||||
|
|
||||||
|
|
||||||
Opportunity and Caveats
|
Opportunity and Caveats
|
||||||
|
|
|
@ -22,8 +22,9 @@ and changeable from userspace under certain rules.
|
||||||
2. Querying from userspace
|
2. Querying from userspace
|
||||||
|
|
||||||
Both admin and operational state can be queried via the netlink
|
Both admin and operational state can be queried via the netlink
|
||||||
operation RTM_GETLINK. It is also possible to subscribe to RTMGRP_LINK
|
operation RTM_GETLINK. It is also possible to subscribe to RTNLGRP_LINK
|
||||||
to be notified of updates. This is important for setting from userspace.
|
to be notified of updates while the interface is admin up. This is
|
||||||
|
important for setting from userspace.
|
||||||
|
|
||||||
These values contain interface state:
|
These values contain interface state:
|
||||||
|
|
||||||
|
@ -101,8 +102,9 @@ because some driver controlled protocol establishment has to
|
||||||
complete. Corresponding functions are netif_dormant_on() to set the
|
complete. Corresponding functions are netif_dormant_on() to set the
|
||||||
flag, netif_dormant_off() to clear it and netif_dormant() to query.
|
flag, netif_dormant_off() to clear it and netif_dormant() to query.
|
||||||
|
|
||||||
On device allocation, networking core sets the flags equivalent to
|
On device allocation, both flags __LINK_STATE_NOCARRIER and
|
||||||
netif_carrier_ok() and !netif_dormant().
|
__LINK_STATE_DORMANT are cleared, so the effective state is equivalent
|
||||||
|
to netif_carrier_ok() and !netif_dormant().
|
||||||
|
|
||||||
|
|
||||||
Whenever the driver CHANGES one of these flags, a workqueue event is
|
Whenever the driver CHANGES one of these flags, a workqueue event is
|
||||||
|
@ -133,11 +135,11 @@ netif_carrier_ok() && !netif_dormant() is set by the
|
||||||
driver. Afterwards, the userspace application can set IFLA_OPERSTATE
|
driver. Afterwards, the userspace application can set IFLA_OPERSTATE
|
||||||
to IF_OPER_DORMANT or IF_OPER_UP as long as the driver does not set
|
to IF_OPER_DORMANT or IF_OPER_UP as long as the driver does not set
|
||||||
netif_carrier_off() or netif_dormant_on(). Changes made by userspace
|
netif_carrier_off() or netif_dormant_on(). Changes made by userspace
|
||||||
are multicasted on the netlink group RTMGRP_LINK.
|
are multicasted on the netlink group RTNLGRP_LINK.
|
||||||
|
|
||||||
So basically a 802.1X supplicant interacts with the kernel like this:
|
So basically a 802.1X supplicant interacts with the kernel like this:
|
||||||
|
|
||||||
-subscribe to RTMGRP_LINK
|
-subscribe to RTNLGRP_LINK
|
||||||
-set IFLA_LINKMODE to 1 via RTM_SETLINK
|
-set IFLA_LINKMODE to 1 via RTM_SETLINK
|
||||||
-query RTM_GETLINK once to get initial state
|
-query RTM_GETLINK once to get initial state
|
||||||
-if initial flags are not (IFF_LOWER_UP && !IFF_DORMANT), wait until
|
-if initial flags are not (IFF_LOWER_UP && !IFF_DORMANT), wait until
|
||||||
|
|
|
@ -367,16 +367,19 @@ to the accept queue.
|
||||||
TCP Fast Open
|
TCP Fast Open
|
||||||
=============
|
=============
|
||||||
* TcpEstabResets
|
* TcpEstabResets
|
||||||
|
|
||||||
Defined in `RFC1213 tcpEstabResets`_.
|
Defined in `RFC1213 tcpEstabResets`_.
|
||||||
|
|
||||||
.. _RFC1213 tcpEstabResets: https://tools.ietf.org/html/rfc1213#page-48
|
.. _RFC1213 tcpEstabResets: https://tools.ietf.org/html/rfc1213#page-48
|
||||||
|
|
||||||
* TcpAttemptFails
|
* TcpAttemptFails
|
||||||
|
|
||||||
Defined in `RFC1213 tcpAttemptFails`_.
|
Defined in `RFC1213 tcpAttemptFails`_.
|
||||||
|
|
||||||
.. _RFC1213 tcpAttemptFails: https://tools.ietf.org/html/rfc1213#page-48
|
.. _RFC1213 tcpAttemptFails: https://tools.ietf.org/html/rfc1213#page-48
|
||||||
|
|
||||||
* TcpOutRsts
|
* TcpOutRsts
|
||||||
|
|
||||||
Defined in `RFC1213 tcpOutRsts`_. The RFC says this counter indicates
|
Defined in `RFC1213 tcpOutRsts`_. The RFC says this counter indicates
|
||||||
the 'segments sent containing the RST flag', but in linux kernel, this
|
the 'segments sent containing the RST flag', but in linux kernel, this
|
||||||
couner indicates the segments kerenl tried to send. The sending
|
couner indicates the segments kerenl tried to send. The sending
|
||||||
|
@ -384,6 +387,30 @@ process might be failed due to some errors (e.g. memory alloc failed).
|
||||||
|
|
||||||
.. _RFC1213 tcpOutRsts: https://tools.ietf.org/html/rfc1213#page-52
|
.. _RFC1213 tcpOutRsts: https://tools.ietf.org/html/rfc1213#page-52
|
||||||
|
|
||||||
|
* TcpExtTCPSpuriousRtxHostQueues
|
||||||
|
|
||||||
|
When the TCP stack wants to retransmit a packet, and finds that packet
|
||||||
|
is not lost in the network, but the packet is not sent yet, the TCP
|
||||||
|
stack would give up the retransmission and update this counter. It
|
||||||
|
might happen if a packet stays too long time in a qdisc or driver
|
||||||
|
queue.
|
||||||
|
|
||||||
|
* TcpEstabResets
|
||||||
|
|
||||||
|
The socket receives a RST packet in Establish or CloseWait state.
|
||||||
|
|
||||||
|
* TcpExtTCPKeepAlive
|
||||||
|
|
||||||
|
This counter indicates many keepalive packets were sent. The keepalive
|
||||||
|
won't be enabled by default. A userspace program could enable it by
|
||||||
|
setting the SO_KEEPALIVE socket option.
|
||||||
|
|
||||||
|
* TcpExtTCPSpuriousRTOs
|
||||||
|
|
||||||
|
The spurious retransmission timeout detected by the `F-RTO`_
|
||||||
|
algorithm.
|
||||||
|
|
||||||
|
.. _F-RTO: https://tools.ietf.org/html/rfc5682
|
||||||
|
|
||||||
TCP Fast Path
|
TCP Fast Path
|
||||||
============
|
============
|
||||||
|
@ -609,6 +636,29 @@ packet yet, the sender would know packet 4 is out of order. The TCP
|
||||||
stack of kernel will increase TcpExtTCPSACKReorder for both of the
|
stack of kernel will increase TcpExtTCPSACKReorder for both of the
|
||||||
above scenarios.
|
above scenarios.
|
||||||
|
|
||||||
|
* TcpExtTCPSlowStartRetrans
|
||||||
|
|
||||||
|
The TCP stack wants to retransmit a packet and the congestion control
|
||||||
|
state is 'Loss'.
|
||||||
|
|
||||||
|
* TcpExtTCPFastRetrans
|
||||||
|
|
||||||
|
The TCP stack wants to retransmit a packet and the congestion control
|
||||||
|
state is not 'Loss'.
|
||||||
|
|
||||||
|
* TcpExtTCPLostRetransmit
|
||||||
|
|
||||||
|
A SACK points out that a retransmission packet is lost again.
|
||||||
|
|
||||||
|
* TcpExtTCPRetransFail
|
||||||
|
|
||||||
|
The TCP stack tries to deliver a retransmission packet to lower layers
|
||||||
|
but the lower layers return an error.
|
||||||
|
|
||||||
|
* TcpExtTCPSynRetrans
|
||||||
|
|
||||||
|
The TCP stack retransmits a SYN packet.
|
||||||
|
|
||||||
DSACK
|
DSACK
|
||||||
=====
|
=====
|
||||||
The DSACK is defined in `RFC2883`_. The receiver uses DSACK to report
|
The DSACK is defined in `RFC2883`_. The receiver uses DSACK to report
|
||||||
|
@ -790,8 +840,9 @@ unacknowledged number (more strict than `RFC 5961 section 5.2`_).
|
||||||
.. _RFC 5961 section 5.2: https://tools.ietf.org/html/rfc5961#page-11
|
.. _RFC 5961 section 5.2: https://tools.ietf.org/html/rfc5961#page-11
|
||||||
|
|
||||||
TCP receive window
|
TCP receive window
|
||||||
=================
|
==================
|
||||||
* TcpExtTCPWantZeroWindowAdv
|
* TcpExtTCPWantZeroWindowAdv
|
||||||
|
|
||||||
Depending on current memory usage, the TCP stack tries to set receive
|
Depending on current memory usage, the TCP stack tries to set receive
|
||||||
window to zero. But the receive window might still be a no-zero
|
window to zero. But the receive window might still be a no-zero
|
||||||
value. For example, if the previous window size is 10, and the TCP
|
value. For example, if the previous window size is 10, and the TCP
|
||||||
|
@ -799,14 +850,16 @@ stack receives 3 bytes, the current window size would be 7 even if the
|
||||||
window size calculated by the memory usage is zero.
|
window size calculated by the memory usage is zero.
|
||||||
|
|
||||||
* TcpExtTCPToZeroWindowAdv
|
* TcpExtTCPToZeroWindowAdv
|
||||||
|
|
||||||
The TCP receive window is set to zero from a no-zero value.
|
The TCP receive window is set to zero from a no-zero value.
|
||||||
|
|
||||||
* TcpExtTCPFromZeroWindowAdv
|
* TcpExtTCPFromZeroWindowAdv
|
||||||
|
|
||||||
The TCP receive window is set to no-zero value from zero.
|
The TCP receive window is set to no-zero value from zero.
|
||||||
|
|
||||||
|
|
||||||
Delayed ACK
|
Delayed ACK
|
||||||
==========
|
===========
|
||||||
The TCP Delayed ACK is a technique which is used for reducing the
|
The TCP Delayed ACK is a technique which is used for reducing the
|
||||||
packet count in the network. For more details, please refer the
|
packet count in the network. For more details, please refer the
|
||||||
`Delayed ACK wiki`_
|
`Delayed ACK wiki`_
|
||||||
|
@ -814,10 +867,12 @@ packet count in the network. For more details, please refer the
|
||||||
.. _Delayed ACK wiki: https://en.wikipedia.org/wiki/TCP_delayed_acknowledgment
|
.. _Delayed ACK wiki: https://en.wikipedia.org/wiki/TCP_delayed_acknowledgment
|
||||||
|
|
||||||
* TcpExtDelayedACKs
|
* TcpExtDelayedACKs
|
||||||
|
|
||||||
A delayed ACK timer expires. The TCP stack will send a pure ACK packet
|
A delayed ACK timer expires. The TCP stack will send a pure ACK packet
|
||||||
and exit the delayed ACK mode.
|
and exit the delayed ACK mode.
|
||||||
|
|
||||||
* TcpExtDelayedACKLocked
|
* TcpExtDelayedACKLocked
|
||||||
|
|
||||||
A delayed ACK timer expires, but the TCP stack can't send an ACK
|
A delayed ACK timer expires, but the TCP stack can't send an ACK
|
||||||
immediately due to the socket is locked by a userspace program. The
|
immediately due to the socket is locked by a userspace program. The
|
||||||
TCP stack will send a pure ACK later (after the userspace program
|
TCP stack will send a pure ACK later (after the userspace program
|
||||||
|
@ -826,24 +881,147 @@ TCP stack will also update TcpExtDelayedACKs and exit the delayed ACK
|
||||||
mode.
|
mode.
|
||||||
|
|
||||||
* TcpExtDelayedACKLost
|
* TcpExtDelayedACKLost
|
||||||
|
|
||||||
It will be updated when the TCP stack receives a packet which has been
|
It will be updated when the TCP stack receives a packet which has been
|
||||||
ACKed. A Delayed ACK loss might cause this issue, but it would also be
|
ACKed. A Delayed ACK loss might cause this issue, but it would also be
|
||||||
triggered by other reasons, such as a packet is duplicated in the
|
triggered by other reasons, such as a packet is duplicated in the
|
||||||
network.
|
network.
|
||||||
|
|
||||||
Tail Loss Probe (TLP)
|
Tail Loss Probe (TLP)
|
||||||
===================
|
=====================
|
||||||
TLP is an algorithm which is used to detect TCP packet loss. For more
|
TLP is an algorithm which is used to detect TCP packet loss. For more
|
||||||
details, please refer the `TLP paper`_.
|
details, please refer the `TLP paper`_.
|
||||||
|
|
||||||
.. _TLP paper: https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01
|
.. _TLP paper: https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01
|
||||||
|
|
||||||
* TcpExtTCPLossProbes
|
* TcpExtTCPLossProbes
|
||||||
|
|
||||||
A TLP probe packet is sent.
|
A TLP probe packet is sent.
|
||||||
|
|
||||||
* TcpExtTCPLossProbeRecovery
|
* TcpExtTCPLossProbeRecovery
|
||||||
|
|
||||||
A packet loss is detected and recovered by TLP.
|
A packet loss is detected and recovered by TLP.
|
||||||
|
|
||||||
|
TCP Fast Open
|
||||||
|
=============
|
||||||
|
TCP Fast Open is a technology which allows data transfer before the
|
||||||
|
3-way handshake complete. Please refer the `TCP Fast Open wiki`_ for a
|
||||||
|
general description.
|
||||||
|
|
||||||
|
.. _TCP Fast Open wiki: https://en.wikipedia.org/wiki/TCP_Fast_Open
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenActive
|
||||||
|
|
||||||
|
When the TCP stack receives an ACK packet in the SYN-SENT status, and
|
||||||
|
the ACK packet acknowledges the data in the SYN packet, the TCP stack
|
||||||
|
understand the TFO cookie is accepted by the other side, then it
|
||||||
|
updates this counter.
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenActiveFail
|
||||||
|
|
||||||
|
This counter indicates that the TCP stack initiated a TCP Fast Open,
|
||||||
|
but it failed. This counter would be updated in three scenarios: (1)
|
||||||
|
the other side doesn't acknowledge the data in the SYN packet. (2) The
|
||||||
|
SYN packet which has the TFO cookie is timeout at least once. (3)
|
||||||
|
after the 3-way handshake, the retransmission timeout happens
|
||||||
|
net.ipv4.tcp_retries1 times, because some middle-boxes may black-hole
|
||||||
|
fast open after the handshake.
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenPassive
|
||||||
|
|
||||||
|
This counter indicates how many times the TCP stack accepts the fast
|
||||||
|
open request.
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenPassiveFail
|
||||||
|
|
||||||
|
This counter indicates how many times the TCP stack rejects the fast
|
||||||
|
open request. It is caused by either the TFO cookie is invalid or the
|
||||||
|
TCP stack finds an error during the socket creating process.
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenListenOverflow
|
||||||
|
|
||||||
|
When the pending fast open request number is larger than
|
||||||
|
fastopenq->max_qlen, the TCP stack will reject the fast open request
|
||||||
|
and update this counter. When this counter is updated, the TCP stack
|
||||||
|
won't update TcpExtTCPFastOpenPassive or
|
||||||
|
TcpExtTCPFastOpenPassiveFail. The fastopenq->max_qlen is set by the
|
||||||
|
TCP_FASTOPEN socket operation and it could not be larger than
|
||||||
|
net.core.somaxconn. For example:
|
||||||
|
|
||||||
|
setsockopt(sfd, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen));
|
||||||
|
|
||||||
|
* TcpExtTCPFastOpenCookieReqd
|
||||||
|
|
||||||
|
This counter indicates how many times a client wants to request a TFO
|
||||||
|
cookie.
|
||||||
|
|
||||||
|
SYN cookies
|
||||||
|
===========
|
||||||
|
SYN cookies are used to mitigate SYN flood, for details, please refer
|
||||||
|
the `SYN cookies wiki`_.
|
||||||
|
|
||||||
|
.. _SYN cookies wiki: https://en.wikipedia.org/wiki/SYN_cookies
|
||||||
|
|
||||||
|
* TcpExtSyncookiesSent
|
||||||
|
|
||||||
|
It indicates how many SYN cookies are sent.
|
||||||
|
|
||||||
|
* TcpExtSyncookiesRecv
|
||||||
|
|
||||||
|
How many reply packets of the SYN cookies the TCP stack receives.
|
||||||
|
|
||||||
|
* TcpExtSyncookiesFailed
|
||||||
|
|
||||||
|
The MSS decoded from the SYN cookie is invalid. When this counter is
|
||||||
|
updated, the received packet won't be treated as a SYN cookie and the
|
||||||
|
TcpExtSyncookiesRecv counter wont be updated.
|
||||||
|
|
||||||
|
Challenge ACK
|
||||||
|
=============
|
||||||
|
For details of challenge ACK, please refer the explaination of
|
||||||
|
TcpExtTCPACKSkippedChallenge.
|
||||||
|
|
||||||
|
* TcpExtTCPChallengeACK
|
||||||
|
|
||||||
|
The number of challenge acks sent.
|
||||||
|
|
||||||
|
* TcpExtTCPSYNChallenge
|
||||||
|
|
||||||
|
The number of challenge acks sent in response to SYN packets. After
|
||||||
|
updates this counter, the TCP stack might send a challenge ACK and
|
||||||
|
update the TcpExtTCPChallengeACK counter, or it might also skip to
|
||||||
|
send the challenge and update the TcpExtTCPACKSkippedChallenge.
|
||||||
|
|
||||||
|
prune
|
||||||
|
=====
|
||||||
|
When a socket is under memory pressure, the TCP stack will try to
|
||||||
|
reclaim memory from the receiving queue and out of order queue. One of
|
||||||
|
the reclaiming method is 'collapse', which means allocate a big sbk,
|
||||||
|
copy the contiguous skbs to the single big skb, and free these
|
||||||
|
contiguous skbs.
|
||||||
|
|
||||||
|
* TcpExtPruneCalled
|
||||||
|
|
||||||
|
The TCP stack tries to reclaim memory for a socket. After updates this
|
||||||
|
counter, the TCP stack will try to collapse the out of order queue and
|
||||||
|
the receiving queue. If the memory is still not enough, the TCP stack
|
||||||
|
will try to discard packets from the out of order queue (and update the
|
||||||
|
TcpExtOfoPruned counter)
|
||||||
|
|
||||||
|
* TcpExtOfoPruned
|
||||||
|
|
||||||
|
The TCP stack tries to discard packet on the out of order queue.
|
||||||
|
|
||||||
|
* TcpExtRcvPruned
|
||||||
|
|
||||||
|
After 'collapse' and discard packets from the out of order queue, if
|
||||||
|
the actually used memory is still larger than the max allowed memory,
|
||||||
|
this counter will be updated. It means the 'prune' fails.
|
||||||
|
|
||||||
|
* TcpExtTCPRcvCollapsed
|
||||||
|
|
||||||
|
This counter indicates how many skbs are freed during 'collapse'.
|
||||||
|
|
||||||
examples
|
examples
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
|
@ -232,10 +232,8 @@ Learning_sync attribute enables syncing of the learned/forgotten FDB entry to
|
||||||
the bridge's FDB. It's possible, but not optimal, to enable learning on the
|
the bridge's FDB. It's possible, but not optimal, to enable learning on the
|
||||||
device port and on the bridge port, and disable learning_sync.
|
device port and on the bridge port, and disable learning_sync.
|
||||||
|
|
||||||
To support learning and learning_sync port attributes, the driver implements
|
To support learning, the driver implements switchdev op
|
||||||
switchdev op switchdev_port_attr_get/set for
|
switchdev_port_attr_set for SWITCHDEV_ATTR_PORT_ID_{PRE}_BRIDGE_FLAGS.
|
||||||
SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS. The driver should initialize the attributes
|
|
||||||
to the hardware defaults.
|
|
||||||
|
|
||||||
FDB Ageing
|
FDB Ageing
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
|
@ -56,26 +56,34 @@ of any kernel data structures.
|
||||||
|
|
||||||
dentry-state:
|
dentry-state:
|
||||||
|
|
||||||
From linux/fs/dentry.c:
|
From linux/include/linux/dcache.h:
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
struct {
|
struct dentry_stat_t dentry_stat {
|
||||||
int nr_dentry;
|
int nr_dentry;
|
||||||
int nr_unused;
|
int nr_unused;
|
||||||
int age_limit; /* age in seconds */
|
int age_limit; /* age in seconds */
|
||||||
int want_pages; /* pages requested by system */
|
int want_pages; /* pages requested by system */
|
||||||
int dummy[2];
|
int nr_negative; /* # of unused negative dentries */
|
||||||
} dentry_stat = {0, 0, 45, 0,};
|
int dummy; /* Reserved for future use */
|
||||||
|
};
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
Dentries are dynamically allocated and deallocated, and
|
Dentries are dynamically allocated and deallocated.
|
||||||
nr_dentry seems to be 0 all the time. Hence it's safe to
|
|
||||||
assume that only nr_unused, age_limit and want_pages are
|
nr_dentry shows the total number of dentries allocated (active
|
||||||
used. Nr_unused seems to be exactly what its name says.
|
+ unused). nr_unused shows the number of dentries that are not
|
||||||
|
actively used, but are saved in the LRU list for future reuse.
|
||||||
|
|
||||||
Age_limit is the age in seconds after which dcache entries
|
Age_limit is the age in seconds after which dcache entries
|
||||||
can be reclaimed when memory is short and want_pages is
|
can be reclaimed when memory is short and want_pages is
|
||||||
nonzero when shrink_dcache_pages() has been called and the
|
nonzero when shrink_dcache_pages() has been called and the
|
||||||
dcache isn't pruned yet.
|
dcache isn't pruned yet.
|
||||||
|
|
||||||
|
nr_negative shows the number of unused dentries that are also
|
||||||
|
negative dentries which do not map to any files. Instead,
|
||||||
|
they help speeding up rejection of non-existing files provided
|
||||||
|
by the users.
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
dquot-max & dquot-nr:
|
dquot-max & dquot-nr:
|
||||||
|
|
|
@ -52,6 +52,7 @@ two flavors of JITs, the newer eBPF JIT currently supported on:
|
||||||
- sparc64
|
- sparc64
|
||||||
- mips64
|
- mips64
|
||||||
- s390x
|
- s390x
|
||||||
|
- riscv
|
||||||
|
|
||||||
And the older cBPF JIT supported on the following archs:
|
And the older cBPF JIT supported on the following archs:
|
||||||
- mips
|
- mips
|
||||||
|
|
|
@ -9,7 +9,7 @@ Fenghua Yu <fenghua.yu@intel.com>
|
||||||
Tony Luck <tony.luck@intel.com>
|
Tony Luck <tony.luck@intel.com>
|
||||||
Vikas Shivappa <vikas.shivappa@intel.com>
|
Vikas Shivappa <vikas.shivappa@intel.com>
|
||||||
|
|
||||||
This feature is enabled by the CONFIG_X86_RESCTRL and the x86 /proc/cpuinfo
|
This feature is enabled by the CONFIG_X86_CPU_RESCTRL and the x86 /proc/cpuinfo
|
||||||
flag bits:
|
flag bits:
|
||||||
RDT (Resource Director Technology) Allocation - "rdt_a"
|
RDT (Resource Director Technology) Allocation - "rdt_a"
|
||||||
CAT (Cache Allocation Technology) - "cat_l3", "cat_l2"
|
CAT (Cache Allocation Technology) - "cat_l3", "cat_l2"
|
||||||
|
|
46
MAINTAINERS
46
MAINTAINERS
|
@ -2848,6 +2848,9 @@ F: include/uapi/linux/if_bonding.h
|
||||||
BPF (Safe dynamic programs and tools)
|
BPF (Safe dynamic programs and tools)
|
||||||
M: Alexei Starovoitov <ast@kernel.org>
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
|
R: Martin KaFai Lau <kafai@fb.com>
|
||||||
|
R: Song Liu <songliubraving@fb.com>
|
||||||
|
R: Yonghong Song <yhs@fb.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
|
||||||
|
@ -2873,6 +2876,8 @@ F: samples/bpf/
|
||||||
F: tools/bpf/
|
F: tools/bpf/
|
||||||
F: tools/lib/bpf/
|
F: tools/lib/bpf/
|
||||||
F: tools/testing/selftests/bpf/
|
F: tools/testing/selftests/bpf/
|
||||||
|
K: bpf
|
||||||
|
N: bpf
|
||||||
|
|
||||||
BPF JIT for ARM
|
BPF JIT for ARM
|
||||||
M: Shubham Bansal <illusionist.neo@gmail.com>
|
M: Shubham Bansal <illusionist.neo@gmail.com>
|
||||||
|
@ -2907,6 +2912,12 @@ L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/powerpc/net/
|
F: arch/powerpc/net/
|
||||||
|
|
||||||
|
BPF JIT for RISC-V (RV64G)
|
||||||
|
M: Björn Töpel <bjorn.topel@gmail.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/riscv/net/
|
||||||
|
|
||||||
BPF JIT for S390
|
BPF JIT for S390
|
||||||
M: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
M: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||||
|
@ -5181,7 +5192,7 @@ DRM DRIVERS FOR XEN
|
||||||
M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
|
M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
|
||||||
T: git git://anongit.freedesktop.org/drm/drm-misc
|
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
L: xen-devel@lists.xen.org
|
L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/gpu/drm/xen/
|
F: drivers/gpu/drm/xen/
|
||||||
F: Documentation/gpu/xen-front.rst
|
F: Documentation/gpu/xen-front.rst
|
||||||
|
@ -6093,6 +6104,7 @@ FREESCALE QORIQ PTP CLOCK DRIVER
|
||||||
M: Yangbo Lu <yangbo.lu@nxp.com>
|
M: Yangbo Lu <yangbo.lu@nxp.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: drivers/net/ethernet/freescale/enetc/enetc_ptp.c
|
||||||
F: drivers/ptp/ptp_qoriq.c
|
F: drivers/ptp/ptp_qoriq.c
|
||||||
F: drivers/ptp/ptp_qoriq_debugfs.c
|
F: drivers/ptp/ptp_qoriq_debugfs.c
|
||||||
F: include/linux/fsl/ptp_qoriq.h
|
F: include/linux/fsl/ptp_qoriq.h
|
||||||
|
@ -6153,7 +6165,7 @@ FREESCALE SOC SOUND DRIVERS
|
||||||
M: Timur Tabi <timur@kernel.org>
|
M: Timur Tabi <timur@kernel.org>
|
||||||
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
||||||
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
||||||
R: Fabio Estevam <fabio.estevam@nxp.com>
|
R: Fabio Estevam <festevam@gmail.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
L: linuxppc-dev@lists.ozlabs.org
|
L: linuxppc-dev@lists.ozlabs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -10901,7 +10913,7 @@ F: include/linux/nvmem-consumer.h
|
||||||
F: include/linux/nvmem-provider.h
|
F: include/linux/nvmem-provider.h
|
||||||
|
|
||||||
NXP SGTL5000 DRIVER
|
NXP SGTL5000 DRIVER
|
||||||
M: Fabio Estevam <fabio.estevam@nxp.com>
|
M: Fabio Estevam <festevam@gmail.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/sound/sgtl5000.txt
|
F: Documentation/devicetree/bindings/sound/sgtl5000.txt
|
||||||
|
@ -11315,10 +11327,12 @@ F: include/dt-bindings/
|
||||||
|
|
||||||
OPENCORES I2C BUS DRIVER
|
OPENCORES I2C BUS DRIVER
|
||||||
M: Peter Korsgaard <peter@korsgaard.com>
|
M: Peter Korsgaard <peter@korsgaard.com>
|
||||||
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/i2c/busses/i2c-ocores
|
F: Documentation/i2c/busses/i2c-ocores
|
||||||
F: drivers/i2c/busses/i2c-ocores.c
|
F: drivers/i2c/busses/i2c-ocores.c
|
||||||
|
F: include/linux/platform_data/i2c-ocores.h
|
||||||
|
|
||||||
OPENRISC ARCHITECTURE
|
OPENRISC ARCHITECTURE
|
||||||
M: Jonas Bonn <jonas@southpole.se>
|
M: Jonas Bonn <jonas@southpole.se>
|
||||||
|
@ -12884,6 +12898,13 @@ F: Documentation/devicetree/bindings/net/dsa/realtek-smi.txt
|
||||||
F: drivers/net/dsa/realtek-smi*
|
F: drivers/net/dsa/realtek-smi*
|
||||||
F: drivers/net/dsa/rtl83*
|
F: drivers/net/dsa/rtl83*
|
||||||
|
|
||||||
|
REDPINE WIRELESS DRIVER
|
||||||
|
M: Amitkumar Karwar <amitkarwar@gmail.com>
|
||||||
|
M: Siva Rebbagondla <siva8118@gmail.com>
|
||||||
|
L: linux-wireless@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/wireless/rsi/
|
||||||
|
|
||||||
REGISTER MAP ABSTRACTION
|
REGISTER MAP ABSTRACTION
|
||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
|
@ -13712,6 +13733,15 @@ L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/sfc/
|
F: drivers/net/ethernet/sfc/
|
||||||
|
|
||||||
|
SFF/SFP/SFP+ MODULE SUPPORT
|
||||||
|
M: Russell King <linux@armlinux.org.uk>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/phy/phylink.c
|
||||||
|
F: drivers/net/phy/sfp*
|
||||||
|
F: include/linux/phylink.h
|
||||||
|
F: include/linux/sfp.h
|
||||||
|
|
||||||
SGI GRU DRIVER
|
SGI GRU DRIVER
|
||||||
M: Dimitri Sivanich <sivanich@sgi.com>
|
M: Dimitri Sivanich <sivanich@sgi.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -13733,6 +13763,7 @@ F: drivers/misc/sgi-xp/
|
||||||
|
|
||||||
SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
|
SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
|
||||||
M: Ursula Braun <ubraun@linux.ibm.com>
|
M: Ursula Braun <ubraun@linux.ibm.com>
|
||||||
|
M: Karsten Graul <kgraul@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -16657,6 +16688,15 @@ S: Maintained
|
||||||
F: drivers/platform/x86/
|
F: drivers/platform/x86/
|
||||||
F: drivers/platform/olpc/
|
F: drivers/platform/olpc/
|
||||||
|
|
||||||
|
X86 PLATFORM DRIVERS - ARCH
|
||||||
|
R: Darren Hart <dvhart@infradead.org>
|
||||||
|
R: Andy Shevchenko <andy@infradead.org>
|
||||||
|
L: platform-driver-x86@vger.kernel.org
|
||||||
|
L: x86@kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
|
||||||
|
S: Maintained
|
||||||
|
F: arch/x86/platform
|
||||||
|
|
||||||
X86 VDSO
|
X86 VDSO
|
||||||
M: Andy Lutomirski <luto@kernel.org>
|
M: Andy Lutomirski <luto@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -2,7 +2,7 @@
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 0
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc4
|
EXTRAVERSION = -rc7
|
||||||
NAME = Shy Crocodile
|
NAME = Shy Crocodile
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -56,15 +56,15 @@
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_DP264) || \
|
#elif defined(CONFIG_ALPHA_DP264) || \
|
||||||
defined(CONFIG_ALPHA_LYNX) || \
|
defined(CONFIG_ALPHA_LYNX) || \
|
||||||
defined(CONFIG_ALPHA_SHARK) || \
|
defined(CONFIG_ALPHA_SHARK)
|
||||||
defined(CONFIG_ALPHA_EIGER)
|
|
||||||
# define NR_IRQS 64
|
# define NR_IRQS 64
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_TITAN)
|
#elif defined(CONFIG_ALPHA_TITAN)
|
||||||
#define NR_IRQS 80
|
#define NR_IRQS 80
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_RAWHIDE) || \
|
#elif defined(CONFIG_ALPHA_RAWHIDE) || \
|
||||||
defined(CONFIG_ALPHA_TAKARA)
|
defined(CONFIG_ALPHA_TAKARA) || \
|
||||||
|
defined(CONFIG_ALPHA_EIGER)
|
||||||
# define NR_IRQS 128
|
# define NR_IRQS 128
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_WILDFIRE)
|
#elif defined(CONFIG_ALPHA_WILDFIRE)
|
||||||
|
|
|
@ -78,7 +78,7 @@ __load_new_mm_context(struct mm_struct *next_mm)
|
||||||
/* Macro for exception fixup code to access integer registers. */
|
/* Macro for exception fixup code to access integer registers. */
|
||||||
#define dpf_reg(r) \
|
#define dpf_reg(r) \
|
||||||
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
|
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
|
||||||
(r) <= 18 ? (r)+8 : (r)-10])
|
(r) <= 18 ? (r)+10 : (r)-10])
|
||||||
|
|
||||||
asmlinkage void
|
asmlinkage void
|
||||||
do_page_fault(unsigned long address, unsigned long mmcsr,
|
do_page_fault(unsigned long address, unsigned long mmcsr,
|
||||||
|
|
|
@ -1400,6 +1400,7 @@ config NR_CPUS
|
||||||
config HOTPLUG_CPU
|
config HOTPLUG_CPU
|
||||||
bool "Support for hot-pluggable CPUs"
|
bool "Support for hot-pluggable CPUs"
|
||||||
depends on SMP
|
depends on SMP
|
||||||
|
select GENERIC_IRQ_MIGRATION
|
||||||
help
|
help
|
||||||
Say Y here to experiment with turning CPUs off and on. CPUs
|
Say Y here to experiment with turning CPUs off and on. CPUs
|
||||||
can be controlled through /sys/devices/system/cpu.
|
can be controlled through /sys/devices/system/cpu.
|
||||||
|
|
|
@ -215,7 +215,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc1_pins>;
|
pinctrl-0 = <&mmc1_pins>;
|
||||||
bus-width = <0x4>;
|
bus-width = <0x4>;
|
||||||
cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
cd-inverted;
|
||||||
max-frequency = <26000000>;
|
max-frequency = <26000000>;
|
||||||
vmmc-supply = <&vmmcsd_fixed>;
|
vmmc-supply = <&vmmcsd_fixed>;
|
||||||
|
|
|
@ -93,6 +93,7 @@
|
||||||
bm,pool-long = <2>;
|
bm,pool-long = <2>;
|
||||||
bm,pool-short = <1>;
|
bm,pool-short = <1>;
|
||||||
buffer-manager = <&bm>;
|
buffer-manager = <&bm>;
|
||||||
|
phys = <&comphy1 1>;
|
||||||
phy-mode = "sgmii";
|
phy-mode = "sgmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -103,6 +104,7 @@
|
||||||
bm,pool-short = <1>;
|
bm,pool-short = <1>;
|
||||||
buffer-manager = <&bm>;
|
buffer-manager = <&bm>;
|
||||||
managed = "in-band-status";
|
managed = "in-band-status";
|
||||||
|
phys = <&comphy5 2>;
|
||||||
phy-mode = "sgmii";
|
phy-mode = "sgmii";
|
||||||
sfp = <&sfp>;
|
sfp = <&sfp>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -335,6 +335,43 @@
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
comphy: phy@18300 {
|
||||||
|
compatible = "marvell,armada-380-comphy";
|
||||||
|
reg = <0x18300 0x100>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
comphy0: phy@0 {
|
||||||
|
reg = <0>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
comphy1: phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
comphy2: phy@2 {
|
||||||
|
reg = <2>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
comphy3: phy@3 {
|
||||||
|
reg = <3>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
comphy4: phy@4 {
|
||||||
|
reg = <4>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
comphy5: phy@5 {
|
||||||
|
reg = <5>;
|
||||||
|
#phy-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
coreclk: mvebu-sar@18600 {
|
coreclk: mvebu-sar@18600 {
|
||||||
compatible = "marvell,armada-380-core-clock";
|
compatible = "marvell,armada-380-core-clock";
|
||||||
reg = <0x18600 0x04>;
|
reg = <0x18600 0x04>;
|
||||||
|
|
|
@ -476,7 +476,7 @@
|
||||||
clocksource: timer@20000 {
|
clocksource: timer@20000 {
|
||||||
compatible = "ti,da830-timer";
|
compatible = "ti,da830-timer";
|
||||||
reg = <0x20000 0x1000>;
|
reg = <0x20000 0x1000>;
|
||||||
interrupts = <12>, <13>;
|
interrupts = <21>, <22>;
|
||||||
interrupt-names = "tint12", "tint34";
|
interrupt-names = "tint12", "tint34";
|
||||||
clocks = <&pll0_auxclk>;
|
clocks = <&pll0_auxclk>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
power {
|
power {
|
||||||
label = "Power Button";
|
label = "Power Button";
|
||||||
gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||||
gpio-key,wakeup;
|
wakeup-source;
|
||||||
linux,code = <KEY_POWER>;
|
linux,code = <KEY_POWER>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -309,7 +309,7 @@
|
||||||
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
||||||
cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
|
||||||
keep-power-in-suspend;
|
keep-power-in-suspend;
|
||||||
enable-sdio-wakeup;
|
wakeup-source;
|
||||||
vmmc-supply = <®_sd3_vmmc>;
|
vmmc-supply = <®_sd3_vmmc>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -467,7 +467,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt: gpt@2098000 {
|
gpt: gpt@2098000 {
|
||||||
compatible = "fsl,imx6sx-gpt", "fsl,imx31-gpt";
|
compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt";
|
||||||
reg = <0x02098000 0x4000>;
|
reg = <0x02098000 0x4000>;
|
||||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks IMX6SX_CLK_GPT_BUS>,
|
clocks = <&clks IMX6SX_CLK_GPT_BUS>,
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
compatible = "amlogic,meson6-dwmac", "snps,dwmac";
|
compatible = "amlogic,meson6-dwmac", "snps,dwmac";
|
||||||
reg = <0xc9410000 0x10000
|
reg = <0xc9410000 0x10000
|
||||||
0xc1108108 0x4>;
|
0xc1108108 0x4>;
|
||||||
interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "macirq";
|
interrupt-names = "macirq";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -205,8 +205,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -221,7 +221,6 @@
|
||||||
/* Realtek RTL8211F (0x001cc916) */
|
/* Realtek RTL8211F (0x001cc916) */
|
||||||
eth_phy: ethernet-phy@0 {
|
eth_phy: ethernet-phy@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
eee-broken-1000t;
|
|
||||||
interrupt-parent = <&gpio_intc>;
|
interrupt-parent = <&gpio_intc>;
|
||||||
/* GPIOH_3 */
|
/* GPIOH_3 */
|
||||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
@ -273,8 +272,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&tflash_vdd>;
|
vmmc-supply = <&tflash_vdd>;
|
||||||
vqmmc-supply = <&tf_io>;
|
vqmmc-supply = <&tf_io>;
|
||||||
|
|
|
@ -206,8 +206,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
interrupts-extended = <
|
interrupts-extended = <
|
||||||
&cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
|
&cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
|
||||||
&cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
|
&cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
|
||||||
&cpcap 48 1
|
&cpcap 48 0
|
||||||
>;
|
>;
|
||||||
interrupt-names =
|
interrupt-names =
|
||||||
"id_ground", "id_float", "se0conn", "vbusvld",
|
"id_ground", "id_float", "se0conn", "vbusvld",
|
||||||
|
|
|
@ -714,11 +714,7 @@
|
||||||
|
|
||||||
vdda-supply = <&vdac>;
|
vdda-supply = <&vdac>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
port {
|
port {
|
||||||
reg = <0>;
|
|
||||||
venc_out: endpoint {
|
venc_out: endpoint {
|
||||||
remote-endpoint = <&opa_in>;
|
remote-endpoint = <&opa_in>;
|
||||||
ti,channels = <1>;
|
ti,channels = <1>;
|
||||||
|
|
|
@ -814,7 +814,7 @@
|
||||||
/* For debugging, it is often good idea to remove this GPIO.
|
/* For debugging, it is often good idea to remove this GPIO.
|
||||||
It means you can remove back cover (to reboot by removing
|
It means you can remove back cover (to reboot by removing
|
||||||
battery) and still use the MMC card. */
|
battery) and still use the MMC card. */
|
||||||
cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
|
cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
||||||
|
|
|
@ -370,6 +370,19 @@
|
||||||
compatible = "ti,omap2-onenand";
|
compatible = "ti,omap2-onenand";
|
||||||
reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
|
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 v4.19 using both N950
|
||||||
|
* and N9 devices (OneNAND Manufacturer: Samsung):
|
||||||
|
*
|
||||||
|
* gpmc cs0 before gpmc_cs_program_settings:
|
||||||
|
* cs0 GPMC_CS_CONFIG1: 0xfd001202
|
||||||
|
* cs0 GPMC_CS_CONFIG2: 0x00181800
|
||||||
|
* cs0 GPMC_CS_CONFIG3: 0x00030300
|
||||||
|
* cs0 GPMC_CS_CONFIG4: 0x18001804
|
||||||
|
* cs0 GPMC_CS_CONFIG5: 0x03171d1d
|
||||||
|
* cs0 GPMC_CS_CONFIG6: 0x97080000
|
||||||
|
*/
|
||||||
gpmc,sync-read;
|
gpmc,sync-read;
|
||||||
gpmc,sync-write;
|
gpmc,sync-write;
|
||||||
gpmc,burst-length = <16>;
|
gpmc,burst-length = <16>;
|
||||||
|
@ -379,26 +392,27 @@
|
||||||
gpmc,device-width = <2>;
|
gpmc,device-width = <2>;
|
||||||
gpmc,mux-add-data = <2>;
|
gpmc,mux-add-data = <2>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <87>;
|
gpmc,cs-rd-off-ns = <122>;
|
||||||
gpmc,cs-wr-off-ns = <87>;
|
gpmc,cs-wr-off-ns = <122>;
|
||||||
gpmc,adv-on-ns = <0>;
|
gpmc,adv-on-ns = <0>;
|
||||||
gpmc,adv-rd-off-ns = <10>;
|
gpmc,adv-rd-off-ns = <15>;
|
||||||
gpmc,adv-wr-off-ns = <10>;
|
gpmc,adv-wr-off-ns = <15>;
|
||||||
gpmc,oe-on-ns = <15>;
|
gpmc,oe-on-ns = <20>;
|
||||||
gpmc,oe-off-ns = <87>;
|
gpmc,oe-off-ns = <122>;
|
||||||
gpmc,we-on-ns = <0>;
|
gpmc,we-on-ns = <0>;
|
||||||
gpmc,we-off-ns = <87>;
|
gpmc,we-off-ns = <122>;
|
||||||
gpmc,rd-cycle-ns = <112>;
|
gpmc,rd-cycle-ns = <148>;
|
||||||
gpmc,wr-cycle-ns = <112>;
|
gpmc,wr-cycle-ns = <148>;
|
||||||
gpmc,access-ns = <81>;
|
gpmc,access-ns = <117>;
|
||||||
gpmc,page-burst-access-ns = <15>;
|
gpmc,page-burst-access-ns = <15>;
|
||||||
gpmc,bus-turnaround-ns = <0>;
|
gpmc,bus-turnaround-ns = <0>;
|
||||||
gpmc,cycle2cycle-delay-ns = <0>;
|
gpmc,cycle2cycle-delay-ns = <0>;
|
||||||
gpmc,wait-monitoring-ns = <0>;
|
gpmc,wait-monitoring-ns = <0>;
|
||||||
gpmc,clk-activation-ns = <5>;
|
gpmc,clk-activation-ns = <10>;
|
||||||
gpmc,wr-data-mux-bus-ns = <30>;
|
gpmc,wr-data-mux-bus-ns = <40>;
|
||||||
gpmc,wr-access-ns = <81>;
|
gpmc,wr-access-ns = <117>;
|
||||||
gpmc,sync-clk-ps = <15000>;
|
|
||||||
|
gpmc,sync-clk-ps = <15000>; /* TBC; Where this value came? */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MTD partition table corresponding to Nokia's MeeGo 1.2
|
* MTD partition table corresponding to Nokia's MeeGo 1.2
|
||||||
|
|
|
@ -644,6 +644,17 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Configure pwm clock source for timers 8 & 9 */
|
||||||
|
&timer8 {
|
||||||
|
assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
|
||||||
|
assigned-clock-parents = <&sys_clkin_ck>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&timer9 {
|
||||||
|
assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
|
||||||
|
assigned-clock-parents = <&sys_clkin_ck>;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
|
* As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
|
||||||
* uart1 wakeirq.
|
* uart1 wakeirq.
|
||||||
|
|
|
@ -317,7 +317,8 @@
|
||||||
|
|
||||||
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */
|
/* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
|
||||||
|
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -385,7 +386,8 @@
|
||||||
|
|
||||||
palmas: palmas@48 {
|
palmas: palmas@48 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
|
||||||
reg = <0x48>;
|
reg = <0x48>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
@ -651,7 +653,8 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&twl6040_pins>;
|
pinctrl-0 = <&twl6040_pins>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
/* audpwron gpio defined in the board specific dts */
|
/* audpwron gpio defined in the board specific dts */
|
||||||
|
|
||||||
|
|
|
@ -181,6 +181,13 @@
|
||||||
OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */
|
OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
/* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
|
||||||
|
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&omap5_pmx_core {
|
&omap5_pmx_core {
|
||||||
|
@ -414,8 +421,11 @@
|
||||||
|
|
||||||
palmas: palmas@48 {
|
palmas: palmas@48 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
|
||||||
reg = <0x48>;
|
reg = <0x48>;
|
||||||
|
pinctrl-0 = <&palmas_sys_nirq_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
ti,system-power-controller;
|
ti,system-power-controller;
|
||||||
|
|
|
@ -1046,8 +1046,6 @@
|
||||||
<SYSC_IDLE_SMART>,
|
<SYSC_IDLE_SMART>,
|
||||||
<SYSC_IDLE_SMART_WKUP>;
|
<SYSC_IDLE_SMART_WKUP>;
|
||||||
ti,syss-mask = <1>;
|
ti,syss-mask = <1>;
|
||||||
ti,no-reset-on-init;
|
|
||||||
ti,no-idle-on-init;
|
|
||||||
/* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */
|
/* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */
|
||||||
clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>;
|
clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>;
|
||||||
clock-names = "fck";
|
clock-names = "fck";
|
||||||
|
|
|
@ -1681,15 +1681,12 @@
|
||||||
|
|
||||||
du: display@feb00000 {
|
du: display@feb00000 {
|
||||||
compatible = "renesas,du-r8a7743";
|
compatible = "renesas,du-r8a7743";
|
||||||
reg = <0 0xfeb00000 0 0x40000>,
|
reg = <0 0xfeb00000 0 0x40000>;
|
||||||
<0 0xfeb90000 0 0x1c>;
|
|
||||||
reg-names = "du", "lvds.0";
|
|
||||||
interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cpg CPG_MOD 724>,
|
clocks = <&cpg CPG_MOD 724>,
|
||||||
<&cpg CPG_MOD 723>,
|
<&cpg CPG_MOD 723>;
|
||||||
<&cpg CPG_MOD 726>;
|
clock-names = "du.0", "du.1";
|
||||||
clock-names = "du.0", "du.1", "lvds.0";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
|
@ -1704,6 +1701,33 @@
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
du_out_lvds0: endpoint {
|
du_out_lvds0: endpoint {
|
||||||
|
remote-endpoint = <&lvds0_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lvds0: lvds@feb90000 {
|
||||||
|
compatible = "renesas,r8a7743-lvds";
|
||||||
|
reg = <0 0xfeb90000 0 0x1c>;
|
||||||
|
clocks = <&cpg CPG_MOD 726>;
|
||||||
|
power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
|
||||||
|
resets = <&cpg 726>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
lvds0_in: endpoint {
|
||||||
|
remote-endpoint = <&du_out_lvds0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
lvds0_out: endpoint {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -719,7 +719,6 @@
|
||||||
pm_qos = <&qos_lcdc0>,
|
pm_qos = <&qos_lcdc0>,
|
||||||
<&qos_lcdc1>,
|
<&qos_lcdc1>,
|
||||||
<&qos_cif0>,
|
<&qos_cif0>,
|
||||||
<&qos_cif1>,
|
|
||||||
<&qos_ipp>,
|
<&qos_ipp>,
|
||||||
<&qos_rga>;
|
<&qos_rga>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -216,6 +216,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <24000000>;
|
clock-frequency = <24000000>;
|
||||||
|
clock-output-names = "osc24M";
|
||||||
};
|
};
|
||||||
|
|
||||||
osc32k: clk-32k {
|
osc32k: clk-32k {
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &uart0;
|
serial0 = &uart0;
|
||||||
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
|
ethernet0 = &emac;
|
||||||
ethernet1 = &sdiowifi;
|
ethernet1 = &sdiowifi;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -110,11 +110,11 @@
|
||||||
bus-num = <3>;
|
bus-num = <3>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
spi-slave;
|
spi-slave;
|
||||||
|
#address-cells = <0>;
|
||||||
|
|
||||||
slave@0 {
|
slave {
|
||||||
compatible = "lwn,bk4";
|
compatible = "lwn,bk4";
|
||||||
spi-max-frequency = <30000000>;
|
spi-max-frequency = <30000000>;
|
||||||
reg = <0>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
struct irqaction;
|
struct irqaction;
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
extern void migrate_irqs(void);
|
|
||||||
|
|
||||||
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
||||||
void handle_IRQ(unsigned int, struct pt_regs *);
|
void handle_IRQ(unsigned int, struct pt_regs *);
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#define KVM_REQ_SLEEP \
|
#define KVM_REQ_SLEEP \
|
||||||
KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
|
KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
|
||||||
#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1)
|
#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1)
|
||||||
|
#define KVM_REQ_VCPU_RESET KVM_ARCH_REQ(2)
|
||||||
|
|
||||||
DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
|
DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
|
||||||
|
|
||||||
|
@ -147,6 +148,13 @@ struct kvm_cpu_context {
|
||||||
|
|
||||||
typedef struct kvm_cpu_context kvm_cpu_context_t;
|
typedef struct kvm_cpu_context kvm_cpu_context_t;
|
||||||
|
|
||||||
|
struct vcpu_reset_state {
|
||||||
|
unsigned long pc;
|
||||||
|
unsigned long r0;
|
||||||
|
bool be;
|
||||||
|
bool reset;
|
||||||
|
};
|
||||||
|
|
||||||
struct kvm_vcpu_arch {
|
struct kvm_vcpu_arch {
|
||||||
struct kvm_cpu_context ctxt;
|
struct kvm_cpu_context ctxt;
|
||||||
|
|
||||||
|
@ -186,6 +194,8 @@ struct kvm_vcpu_arch {
|
||||||
/* Cache some mmu pages needed inside spinlock regions */
|
/* Cache some mmu pages needed inside spinlock regions */
|
||||||
struct kvm_mmu_memory_cache mmu_page_cache;
|
struct kvm_mmu_memory_cache mmu_page_cache;
|
||||||
|
|
||||||
|
struct vcpu_reset_state reset_state;
|
||||||
|
|
||||||
/* Detect first run of a vcpu */
|
/* Detect first run of a vcpu */
|
||||||
bool has_run_once;
|
bool has_run_once;
|
||||||
};
|
};
|
||||||
|
|
|
@ -76,4 +76,9 @@ static inline bool kvm_stage2_has_pud(struct kvm *kvm)
|
||||||
#define S2_PMD_MASK PMD_MASK
|
#define S2_PMD_MASK PMD_MASK
|
||||||
#define S2_PMD_SIZE PMD_SIZE
|
#define S2_PMD_SIZE PMD_SIZE
|
||||||
|
|
||||||
|
static inline bool kvm_stage2_has_pmd(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __ARM_S2_PGTABLE_H_ */
|
#endif /* __ARM_S2_PGTABLE_H_ */
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/ratelimit.h>
|
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/kallsyms.h>
|
#include <linux/kallsyms.h>
|
||||||
|
@ -109,64 +108,3 @@ int __init arch_probe_nr_irqs(void)
|
||||||
return nr_irqs;
|
return nr_irqs;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
|
||||||
static bool migrate_one_irq(struct irq_desc *desc)
|
|
||||||
{
|
|
||||||
struct irq_data *d = irq_desc_get_irq_data(desc);
|
|
||||||
const struct cpumask *affinity = irq_data_get_affinity_mask(d);
|
|
||||||
struct irq_chip *c;
|
|
||||||
bool ret = false;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If this is a per-CPU interrupt, or the affinity does not
|
|
||||||
* include this CPU, then we have nothing to do.
|
|
||||||
*/
|
|
||||||
if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) {
|
|
||||||
affinity = cpu_online_mask;
|
|
||||||
ret = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
c = irq_data_get_irq_chip(d);
|
|
||||||
if (!c->irq_set_affinity)
|
|
||||||
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
|
|
||||||
else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
|
|
||||||
cpumask_copy(irq_data_get_affinity_mask(d), affinity);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The current CPU has been marked offline. Migrate IRQs off this CPU.
|
|
||||||
* If the affinity settings do not allow other CPUs, force them onto any
|
|
||||||
* available CPU.
|
|
||||||
*
|
|
||||||
* Note: we must iterate over all IRQs, whether they have an attached
|
|
||||||
* action structure or not, as we need to get chained interrupts too.
|
|
||||||
*/
|
|
||||||
void migrate_irqs(void)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
struct irq_desc *desc;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
|
|
||||||
for_each_irq_desc(i, desc) {
|
|
||||||
bool affinity_broken;
|
|
||||||
|
|
||||||
raw_spin_lock(&desc->lock);
|
|
||||||
affinity_broken = migrate_one_irq(desc);
|
|
||||||
raw_spin_unlock(&desc->lock);
|
|
||||||
|
|
||||||
if (affinity_broken)
|
|
||||||
pr_warn_ratelimited("IRQ%u no longer affine to CPU%u\n",
|
|
||||||
i, smp_processor_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_HOTPLUG_CPU */
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ int __cpu_disable(void)
|
||||||
/*
|
/*
|
||||||
* OK - migrate IRQs away from this CPU
|
* OK - migrate IRQs away from this CPU
|
||||||
*/
|
*/
|
||||||
migrate_irqs();
|
irq_migrate_all_off_this_cpu();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush user cache and TLB mappings, and then remove this CPU
|
* Flush user cache and TLB mappings, and then remove this CPU
|
||||||
|
|
|
@ -1450,6 +1450,6 @@ void kvm_reset_coprocs(struct kvm_vcpu *vcpu)
|
||||||
reset_coproc_regs(vcpu, table, num);
|
reset_coproc_regs(vcpu, table, num);
|
||||||
|
|
||||||
for (num = 1; num < NR_CP15_REGS; num++)
|
for (num = 1; num < NR_CP15_REGS; num++)
|
||||||
if (vcpu_cp15(vcpu, num) == 0x42424242)
|
WARN(vcpu_cp15(vcpu, num) == 0x42424242,
|
||||||
panic("Didn't reset vcpu_cp15(vcpu, %zi)", num);
|
"Didn't reset vcpu_cp15(vcpu, %zi)", num);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
#include <asm/kvm_arm.h>
|
#include <asm/kvm_arm.h>
|
||||||
#include <asm/kvm_coproc.h>
|
#include <asm/kvm_coproc.h>
|
||||||
|
#include <asm/kvm_emulate.h>
|
||||||
|
|
||||||
#include <kvm/arm_arch_timer.h>
|
#include <kvm/arm_arch_timer.h>
|
||||||
|
|
||||||
|
@ -69,6 +70,29 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
||||||
/* Reset CP15 registers */
|
/* Reset CP15 registers */
|
||||||
kvm_reset_coprocs(vcpu);
|
kvm_reset_coprocs(vcpu);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Additional reset state handling that PSCI may have imposed on us.
|
||||||
|
* Must be done after all the sys_reg reset.
|
||||||
|
*/
|
||||||
|
if (READ_ONCE(vcpu->arch.reset_state.reset)) {
|
||||||
|
unsigned long target_pc = vcpu->arch.reset_state.pc;
|
||||||
|
|
||||||
|
/* Gracefully handle Thumb2 entry point */
|
||||||
|
if (target_pc & 1) {
|
||||||
|
target_pc &= ~1UL;
|
||||||
|
vcpu_set_thumb(vcpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Propagate caller endianness */
|
||||||
|
if (vcpu->arch.reset_state.be)
|
||||||
|
kvm_vcpu_set_be(vcpu);
|
||||||
|
|
||||||
|
*vcpu_pc(vcpu) = target_pc;
|
||||||
|
vcpu_set_reg(vcpu, 0, vcpu->arch.reset_state.r0);
|
||||||
|
|
||||||
|
vcpu->arch.reset_state.reset = false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Reset arch_timer context */
|
/* Reset arch_timer context */
|
||||||
return kvm_timer_vcpu_reset(vcpu);
|
return kvm_timer_vcpu_reset(vcpu);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus(struct pci_bus *bus,
|
||||||
} else /* remote PCI bus */
|
} else /* remote PCI bus */
|
||||||
base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
|
base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
|
||||||
|
|
||||||
return base + (where & 0xffc) + (devfn << 12);
|
return base + where + (devfn << 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||||
|
@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||||
u32 mask = (0x1ull << (size * 8)) - 1;
|
u32 mask = (0x1ull << (size * 8)) - 1;
|
||||||
int shift = (where % 4) * 8;
|
int shift = (where % 4) * 8;
|
||||||
|
|
||||||
ret = pci_generic_config_read32(bus, devfn, where, size, val);
|
ret = pci_generic_config_read(bus, devfn, where, size, val);
|
||||||
|
|
||||||
if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
|
if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
|
||||||
(where & 0xffc) == PCI_CLASS_REVISION)
|
(where & 0xffc) == PCI_CLASS_REVISION)
|
||||||
|
|
|
@ -75,8 +75,7 @@ void __init n2100_map_io(void)
|
||||||
/*
|
/*
|
||||||
* N2100 PCI.
|
* N2100 PCI.
|
||||||
*/
|
*/
|
||||||
static int __init
|
static int n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
|
||||||
mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
|
mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
|
||||||
(cx->mpu_logic_state == PWRDM_POWER_OFF);
|
(cx->mpu_logic_state == PWRDM_POWER_OFF);
|
||||||
|
|
||||||
|
/* Enter broadcast mode for periodic timers */
|
||||||
|
tick_broadcast_enable();
|
||||||
|
|
||||||
|
/* Enter broadcast mode for one-shot timers */
|
||||||
tick_broadcast_enter();
|
tick_broadcast_enter();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -218,15 +222,6 @@ fail:
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* For each cpu, setup the broadcast timer because local timers
|
|
||||||
* stops for the states above C1.
|
|
||||||
*/
|
|
||||||
static void omap_setup_broadcast_timer(void *arg)
|
|
||||||
{
|
|
||||||
tick_broadcast_enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct cpuidle_driver omap4_idle_driver = {
|
static struct cpuidle_driver omap4_idle_driver = {
|
||||||
.name = "omap4_idle",
|
.name = "omap4_idle",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
@ -319,8 +314,5 @@ int __init omap4_idle_init(void)
|
||||||
if (!cpu_clkdm[0] || !cpu_clkdm[1])
|
if (!cpu_clkdm[0] || !cpu_clkdm[1])
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* Configure the broadcast timer on each cpu */
|
|
||||||
on_each_cpu(omap_setup_broadcast_timer, NULL, 1);
|
|
||||||
|
|
||||||
return cpuidle_register(idle_driver, cpu_online_mask);
|
return cpuidle_register(idle_driver, cpu_online_mask);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,6 +83,7 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
|
||||||
u32 enable_mask, enable_shift;
|
u32 enable_mask, enable_shift;
|
||||||
u32 pipd_mask, pipd_shift;
|
u32 pipd_mask, pipd_shift;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (dsi_id == 0) {
|
if (dsi_id == 0) {
|
||||||
enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
|
enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
|
||||||
|
@ -98,7 +99,11 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
regmap_read(omap4_dsi_mux_syscon, OMAP4_DSIPHY_SYSCON_OFFSET, ®);
|
ret = regmap_read(omap4_dsi_mux_syscon,
|
||||||
|
OMAP4_DSIPHY_SYSCON_OFFSET,
|
||||||
|
®);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
reg &= ~enable_mask;
|
reg &= ~enable_mask;
|
||||||
reg &= ~pipd_mask;
|
reg &= ~pipd_mask;
|
||||||
|
|
|
@ -50,6 +50,9 @@
|
||||||
#define OMAP4_NR_BANKS 4
|
#define OMAP4_NR_BANKS 4
|
||||||
#define OMAP4_NR_IRQS 128
|
#define OMAP4_NR_IRQS 128
|
||||||
|
|
||||||
|
#define SYS_NIRQ1_EXT_SYS_IRQ_1 7
|
||||||
|
#define SYS_NIRQ2_EXT_SYS_IRQ_2 119
|
||||||
|
|
||||||
static void __iomem *wakeupgen_base;
|
static void __iomem *wakeupgen_base;
|
||||||
static void __iomem *sar_base;
|
static void __iomem *sar_base;
|
||||||
static DEFINE_RAW_SPINLOCK(wakeupgen_lock);
|
static DEFINE_RAW_SPINLOCK(wakeupgen_lock);
|
||||||
|
@ -153,6 +156,37 @@ static void wakeupgen_unmask(struct irq_data *d)
|
||||||
irq_chip_unmask_parent(d);
|
irq_chip_unmask_parent(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The sys_nirq pins bypass peripheral modules and are wired directly
|
||||||
|
* to MPUSS wakeupgen. They get automatically inverted for GIC.
|
||||||
|
*/
|
||||||
|
static int wakeupgen_irq_set_type(struct irq_data *d, unsigned int type)
|
||||||
|
{
|
||||||
|
bool inverted = false;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
|
type &= ~IRQ_TYPE_LEVEL_MASK;
|
||||||
|
type |= IRQ_TYPE_LEVEL_HIGH;
|
||||||
|
inverted = true;
|
||||||
|
break;
|
||||||
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
|
type &= ~IRQ_TYPE_EDGE_BOTH;
|
||||||
|
type |= IRQ_TYPE_EDGE_RISING;
|
||||||
|
inverted = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inverted && d->hwirq != SYS_NIRQ1_EXT_SYS_IRQ_1 &&
|
||||||
|
d->hwirq != SYS_NIRQ2_EXT_SYS_IRQ_2)
|
||||||
|
pr_warn("wakeupgen: irq%li polarity inverted in dts\n",
|
||||||
|
d->hwirq);
|
||||||
|
|
||||||
|
return irq_chip_set_type_parent(d, type);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks);
|
static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks);
|
||||||
|
|
||||||
|
@ -446,7 +480,7 @@ static struct irq_chip wakeupgen_chip = {
|
||||||
.irq_mask = wakeupgen_mask,
|
.irq_mask = wakeupgen_mask,
|
||||||
.irq_unmask = wakeupgen_unmask,
|
.irq_unmask = wakeupgen_unmask,
|
||||||
.irq_retrigger = irq_chip_retrigger_hierarchy,
|
.irq_retrigger = irq_chip_retrigger_hierarchy,
|
||||||
.irq_set_type = irq_chip_set_type_parent,
|
.irq_set_type = wakeupgen_irq_set_type,
|
||||||
.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND,
|
.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND,
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
.irq_set_affinity = irq_chip_set_affinity_parent,
|
.irq_set_affinity = irq_chip_set_affinity_parent,
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <asm/suspend.h>
|
#include <asm/suspend.h>
|
||||||
#include "smc.h"
|
#include "smc.h"
|
||||||
|
#include "pm.h"
|
||||||
|
|
||||||
static int tango_pm_powerdown(unsigned long arg)
|
static int tango_pm_powerdown(unsigned long arg)
|
||||||
{
|
{
|
||||||
|
@ -24,10 +25,7 @@ static const struct platform_suspend_ops tango_pm_ops = {
|
||||||
.valid = suspend_valid_only_mem,
|
.valid = suspend_valid_only_mem,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init tango_pm_init(void)
|
void __init tango_pm_init(void)
|
||||||
{
|
{
|
||||||
suspend_set_ops(&tango_pm_ops);
|
suspend_set_ops(&tango_pm_ops);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
late_initcall(tango_pm_init);
|
|
||||||
|
|
7
arch/arm/mach-tango/pm.h
Normal file
7
arch/arm/mach-tango/pm.h
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
|
||||||
|
#ifdef CONFIG_SUSPEND
|
||||||
|
void __init tango_pm_init(void);
|
||||||
|
#else
|
||||||
|
#define tango_pm_init NULL
|
||||||
|
#endif
|
|
@ -2,6 +2,7 @@
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/hardware/cache-l2x0.h>
|
#include <asm/hardware/cache-l2x0.h>
|
||||||
#include "smc.h"
|
#include "smc.h"
|
||||||
|
#include "pm.h"
|
||||||
|
|
||||||
static void tango_l2c_write(unsigned long val, unsigned int reg)
|
static void tango_l2c_write(unsigned long val, unsigned int reg)
|
||||||
{
|
{
|
||||||
|
@ -15,4 +16,5 @@ DT_MACHINE_START(TANGO_DT, "Sigma Tango DT")
|
||||||
.dt_compat = tango_dt_compat,
|
.dt_compat = tango_dt_compat,
|
||||||
.l2c_aux_mask = ~0,
|
.l2c_aux_mask = ~0,
|
||||||
.l2c_write_sec = tango_l2c_write,
|
.l2c_write_sec = tango_l2c_write,
|
||||||
|
.init_late = tango_pm_init,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -2390,4 +2390,6 @@ void arch_teardown_dma_ops(struct device *dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
arm_teardown_iommu_dma_ops(dev);
|
arm_teardown_iommu_dma_ops(dev);
|
||||||
|
/* Let arch_setup_dma_ops() start again from scratch upon re-probe */
|
||||||
|
set_dma_ops(dev, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,8 +190,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
|
||||||
if (ssp == NULL)
|
if (ssp == NULL)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
iounmap(ssp->mmio_base);
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
release_mem_region(res->start, resource_size(res));
|
release_mem_region(res->start, resource_size(res));
|
||||||
|
|
||||||
|
@ -201,7 +199,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
|
||||||
list_del(&ssp->node);
|
list_del(&ssp->node);
|
||||||
mutex_unlock(&ssp_lock);
|
mutex_unlock(&ssp_lock);
|
||||||
|
|
||||||
kfree(ssp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy arch-dep-instance from template. */
|
/* Copy arch-dep-instance from template. */
|
||||||
memcpy(code, (unsigned char *)optprobe_template_entry,
|
memcpy(code, (unsigned long *)&optprobe_template_entry,
|
||||||
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
||||||
|
|
||||||
/* Adjust buffer according to instruction. */
|
/* Adjust buffer according to instruction. */
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/dma-mapping.h>
|
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/swiotlb.h>
|
#include <linux/swiotlb.h>
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,7 @@
|
||||||
reg = <0x3a3>;
|
reg = <0x3a3>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -390,7 +390,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
video-codec@1c0e000 {
|
video-codec@1c0e000 {
|
||||||
compatible = "allwinner,sun50i-h5-video-engine";
|
compatible = "allwinner,sun50i-a64-video-engine";
|
||||||
reg = <0x01c0e000 0x1000>;
|
reg = <0x01c0e000 0x1000>;
|
||||||
clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||||
<&ccu CLK_DRAM_VE>;
|
<&ccu CLK_DRAM_VE>;
|
||||||
|
|
|
@ -187,8 +187,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -305,8 +305,7 @@
|
||||||
max-frequency = <200000000>;
|
max-frequency = <200000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddio_ao3v3>;
|
vmmc-supply = <&vddio_ao3v3>;
|
||||||
vqmmc-supply = <&vddio_tf>;
|
vqmmc-supply = <&vddio_tf>;
|
||||||
|
|
|
@ -238,8 +238,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -258,8 +258,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&tflash_vdd>;
|
vmmc-supply = <&tflash_vdd>;
|
||||||
vqmmc-supply = <&tf_io>;
|
vqmmc-supply = <&tf_io>;
|
||||||
|
|
|
@ -196,8 +196,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -154,8 +154,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -211,8 +211,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vcc_3v3>;
|
vqmmc-supply = <&vcc_3v3>;
|
||||||
|
|
|
@ -131,8 +131,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -238,8 +238,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
vqmmc-supply = <&vcc_card>;
|
vqmmc-supply = <&vcc_card>;
|
||||||
|
|
|
@ -183,8 +183,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -137,8 +137,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -356,8 +356,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -147,8 +147,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -170,8 +170,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -227,34 +227,34 @@
|
||||||
|
|
||||||
pinctrl_usdhc1_100mhz: usdhc1-100grp {
|
pinctrl_usdhc1_100mhz: usdhc1-100grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x85
|
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d
|
||||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc5
|
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc5
|
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc5
|
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc5
|
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc5
|
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc5
|
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc5
|
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc5
|
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc5
|
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x85
|
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d
|
||||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_usdhc1_200mhz: usdhc1-200grp {
|
pinctrl_usdhc1_200mhz: usdhc1-200grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x87
|
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f
|
||||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc7
|
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc7
|
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc7
|
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc7
|
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc7
|
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc7
|
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc7
|
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc7
|
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc7
|
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x87
|
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f
|
||||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -360,6 +360,8 @@
|
||||||
<&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
|
<&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
|
||||||
<&clk IMX8MQ_CLK_USDHC1_ROOT>;
|
<&clk IMX8MQ_CLK_USDHC1_ROOT>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
|
assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
|
||||||
|
assigned-clock-rates = <400000000>;
|
||||||
fsl,tuning-start-tap = <20>;
|
fsl,tuning-start-tap = <20>;
|
||||||
fsl,tuning-step = <2>;
|
fsl,tuning-step = <2>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
|
|
@ -404,7 +404,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: interrupt-controller@9bc0000 {
|
intc: interrupt-controller@9bc0000 {
|
||||||
compatible = "arm,gic-v3";
|
compatible = "qcom,msm8996-gic-v3", "arm,gic-v3";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#redistributor-regions = <1>;
|
#redistributor-regions = <1>;
|
||||||
|
|
|
@ -1011,6 +1011,9 @@
|
||||||
<&cpg CPG_CORE R8A774A1_CLK_S3D1>,
|
<&cpg CPG_CORE R8A774A1_CLK_S3D1>,
|
||||||
<&scif_clk>;
|
<&scif_clk>;
|
||||||
clock-names = "fck", "brg_int", "scif_clk";
|
clock-names = "fck", "brg_int", "scif_clk";
|
||||||
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>,
|
||||||
|
<&dmac2 0x13>, <&dmac2 0x12>;
|
||||||
|
dma-names = "tx", "rx", "tx", "rx";
|
||||||
power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
|
power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
|
||||||
resets = <&cpg 310>;
|
resets = <&cpg 310>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue