Compare commits
47 commits
debian
...
progress-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
0639281960 |
|||
|
1a72f895a1 |
|||
|
43be3e6e86 |
|||
|
6e3cd62246 |
|||
|
d4ea84956a |
|||
|
11c2edec73 |
|||
|
ca07168581 |
|||
|
fe84d75f83 |
|||
|
f464b28c83 |
|||
|
5b50963ae3 |
|||
|
ee654a1d1d |
|||
|
623c374e59 |
|||
|
8a9ba30dd4 |
|||
|
fabd2a8b79 |
|||
|
cfe88a72c0 |
|||
|
0d10dc5ceb |
|||
|
184f8308ae |
|||
|
b42ad53098 |
|||
|
03ae8c8a6b |
|||
|
8a60823dba |
|||
|
91ef9c1382 |
|||
|
21d50185b1 |
|||
|
5e3c96cc60 |
|||
|
11ae5414d2 |
|||
|
7ecc237329 |
|||
|
d9bf157d32 |
|||
|
af9886cc5e |
|||
|
2a84db2001 |
|||
|
de9a223b8e |
|||
|
c43654f4a1 |
|||
|
00021b29ef |
|||
|
f483f7159f |
|||
|
5d6307c755 |
|||
|
5c730110a2 |
|||
|
da9e5843dc |
|||
|
0b20895b76 |
|||
|
43ad189f7f |
|||
|
90861348c8 |
|||
|
963fcbc3e8 |
|||
|
134e3b5685 |
|||
|
1a7f4bbad1 |
|||
|
d3056eaebe |
|||
|
ad2a117ad8 |
|||
|
9e5733adc7 |
|||
|
20313763f1 |
|||
|
e29b1692dc |
|||
|
d11760e856 |
5412 changed files with 78165 additions and 68427 deletions
|
|
@ -1,5 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
msrv = "1.78.0"
|
||||
|
||||
check-private-items = true
|
||||
|
||||
disallowed-macros = [
|
||||
|
|
|
|||
|
|
@ -525,6 +525,7 @@ What: /sys/devices/system/cpu/vulnerabilities
|
|||
/sys/devices/system/cpu/vulnerabilities/srbds
|
||||
/sys/devices/system/cpu/vulnerabilities/tsa
|
||||
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
||||
/sys/devices/system/cpu/vulnerabilities/vmscape
|
||||
Date: January 2018
|
||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
Description: Information about CPU vulnerabilities
|
||||
|
|
|
|||
|
|
@ -828,3 +828,55 @@ Date: November 2024
|
|||
Contact: "Chao Yu" <chao@kernel.org>
|
||||
Description: It controls max read extent count for per-inode, the value of threshold
|
||||
is 10240 by default.
|
||||
|
||||
What: /sys/fs/f2fs/tuning/reclaim_caches_kb
|
||||
Date: February 2025
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: It reclaims the given KBs of file-backed pages registered by
|
||||
ioctl(F2FS_IOC_DONATE_RANGE).
|
||||
For example, writing N tries to drop N KBs spaces in LRU.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/carve_out
|
||||
Date: March 2025
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: For several zoned storage devices, vendors will provide extra space which
|
||||
was used for device level GC than specs and F2FS can use this space for
|
||||
filesystem level GC. To do that, we can reserve the space using
|
||||
reserved_blocks. However, it is not enough, since this extra space should
|
||||
not be shown to users. So, with this new sysfs node, we can hide the space
|
||||
by substracting reserved_blocks from total bytes.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/encoding_flags
|
||||
Date: April 2025
|
||||
Contact: "Chao Yu" <chao@kernel.org>
|
||||
Description: This is a read-only entry to show the value of sb.s_encoding_flags, the
|
||||
value is hexadecimal.
|
||||
|
||||
============================ ==========
|
||||
Flag_Name Flag_Value
|
||||
============================ ==========
|
||||
SB_ENC_STRICT_MODE_FL 0x00000001
|
||||
SB_ENC_NO_COMPAT_FALLBACK_FL 0x00000002
|
||||
============================ ==========
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/reserved_pin_section
|
||||
Date: June 2025
|
||||
Contact: "Chao Yu" <chao@kernel.org>
|
||||
Description: This threshold is used to control triggering garbage collection while
|
||||
fallocating on pinned file, so, it can guarantee there is enough free
|
||||
reserved section before preallocating on pinned file.
|
||||
By default, the value is ovp_sections, especially, for zoned ufs, the
|
||||
value is 1.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_boost_gc_multiple
|
||||
Date: June 2025
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: Set a multiplier for the background GC migration window when F2FS GC is
|
||||
boosted. The range should be from 1 to the segment count in a section.
|
||||
Default: 5
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_boost_gc_greedy
|
||||
Date: June 2025
|
||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||
Description: Control GC algorithm for boost GC. 0: cost benefit, 1: greedy
|
||||
Default: 1
|
||||
|
|
|
|||
|
|
@ -601,10 +601,15 @@ specification.
|
|||
Task Attribute
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The Smack label of a process can be read from /proc/<pid>/attr/current. A
|
||||
process can read its own Smack label from /proc/self/attr/current. A
|
||||
The Smack label of a process can be read from ``/proc/<pid>/attr/current``. A
|
||||
process can read its own Smack label from ``/proc/self/attr/current``. A
|
||||
privileged process can change its own Smack label by writing to
|
||||
/proc/self/attr/current but not the label of another process.
|
||||
``/proc/self/attr/current`` but not the label of another process.
|
||||
|
||||
Format of writing is : only the label or the label followed by one of the
|
||||
3 trailers: ``\n`` (by common agreement for ``/proc/...`` interfaces),
|
||||
``\0`` (because some applications incorrectly include it),
|
||||
``\n\0`` (because we think some applications may incorrectly include it).
|
||||
|
||||
File Attribute
|
||||
~~~~~~~~~~~~~~
|
||||
|
|
@ -696,6 +701,11 @@ sockets.
|
|||
A privileged program may set this to match the label of another
|
||||
task with which it hopes to communicate.
|
||||
|
||||
UNIX domain socket (UDS) with a BSD address functions both as a file in a
|
||||
filesystem and as a socket. As a file, it carries the SMACK64 attribute. This
|
||||
attribute is not involved in Smack security enforcement and is immutably
|
||||
assigned the label "*".
|
||||
|
||||
Smack Netlabel Exceptions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
|
|
@ -23,3 +23,4 @@ are configurable at compile, boot or run time.
|
|||
gather_data_sampling
|
||||
reg-file-data-sampling
|
||||
indirect-target-selection
|
||||
vmscape
|
||||
|
|
|
|||
|
|
@ -104,7 +104,20 @@ The possible values in this file are:
|
|||
|
||||
(spec_rstack_overflow=ibpb-vmexit)
|
||||
|
||||
* 'Mitigation: Reduced Speculation':
|
||||
|
||||
This mitigation gets automatically enabled when the above one "IBPB on
|
||||
VMEXIT" has been selected and the CPU supports the BpSpecReduce bit.
|
||||
|
||||
It gets automatically enabled on machines which have the
|
||||
SRSO_USER_KERNEL_NO=1 CPUID bit. In that case, the code logic is to switch
|
||||
to the above =ibpb-vmexit mitigation because the user/kernel boundary is
|
||||
not affected anymore and thus "safe RET" is not needed.
|
||||
|
||||
After enabling the IBPB on VMEXIT mitigation option, the BpSpecReduce bit
|
||||
is detected (functionality present on all such machines) and that
|
||||
practically overrides IBPB on VMEXIT as it has a lot less performance
|
||||
impact and takes care of the guest->host attack vector too.
|
||||
|
||||
In order to exploit vulnerability, an attacker needs to:
|
||||
|
||||
|
|
|
|||
110
Documentation/admin-guide/hw-vuln/vmscape.rst
Normal file
110
Documentation/admin-guide/hw-vuln/vmscape.rst
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
VMSCAPE
|
||||
=======
|
||||
|
||||
VMSCAPE is a vulnerability that may allow a guest to influence the branch
|
||||
prediction in host userspace. It particularly affects hypervisors like QEMU.
|
||||
|
||||
Even if a hypervisor may not have any sensitive data like disk encryption keys,
|
||||
guest-userspace may be able to attack the guest-kernel using the hypervisor as
|
||||
a confused deputy.
|
||||
|
||||
Affected processors
|
||||
-------------------
|
||||
|
||||
The following CPU families are affected by VMSCAPE:
|
||||
|
||||
**Intel processors:**
|
||||
- Skylake generation (Parts without Enhanced-IBRS)
|
||||
- Cascade Lake generation - (Parts affected by ITS guest/host separation)
|
||||
- Alder Lake and newer (Parts affected by BHI)
|
||||
|
||||
Note that, BHI affected parts that use BHB clearing software mitigation e.g.
|
||||
Icelake are not vulnerable to VMSCAPE.
|
||||
|
||||
**AMD processors:**
|
||||
- Zen series (families 0x17, 0x19, 0x1a)
|
||||
|
||||
** Hygon processors:**
|
||||
- Family 0x18
|
||||
|
||||
Mitigation
|
||||
----------
|
||||
|
||||
Conditional IBPB
|
||||
----------------
|
||||
|
||||
Kernel tracks when a CPU has run a potentially malicious guest and issues an
|
||||
IBPB before the first exit to userspace after VM-exit. If userspace did not run
|
||||
between VM-exit and the next VM-entry, no IBPB is issued.
|
||||
|
||||
Note that the existing userspace mitigation against Spectre-v2 is effective in
|
||||
protecting the userspace. They are insufficient to protect the userspace VMMs
|
||||
from a malicious guest. This is because Spectre-v2 mitigations are applied at
|
||||
context switch time, while the userspace VMM can run after a VM-exit without a
|
||||
context switch.
|
||||
|
||||
Vulnerability enumeration and mitigation is not applied inside a guest. This is
|
||||
because nested hypervisors should already be deploying IBPB to isolate
|
||||
themselves from nested guests.
|
||||
|
||||
SMT considerations
|
||||
------------------
|
||||
|
||||
When Simultaneous Multi-Threading (SMT) is enabled, hypervisors can be
|
||||
vulnerable to cross-thread attacks. For complete protection against VMSCAPE
|
||||
attacks in SMT environments, STIBP should be enabled.
|
||||
|
||||
The kernel will issue a warning if SMT is enabled without adequate STIBP
|
||||
protection. Warning is not issued when:
|
||||
|
||||
- SMT is disabled
|
||||
- STIBP is enabled system-wide
|
||||
- Intel eIBRS is enabled (which implies STIBP protection)
|
||||
|
||||
System information and options
|
||||
------------------------------
|
||||
|
||||
The sysfs file showing VMSCAPE mitigation status is:
|
||||
|
||||
/sys/devices/system/cpu/vulnerabilities/vmscape
|
||||
|
||||
The possible values in this file are:
|
||||
|
||||
* 'Not affected':
|
||||
|
||||
The processor is not vulnerable to VMSCAPE attacks.
|
||||
|
||||
* 'Vulnerable':
|
||||
|
||||
The processor is vulnerable and no mitigation has been applied.
|
||||
|
||||
* 'Mitigation: IBPB before exit to userspace':
|
||||
|
||||
Conditional IBPB mitigation is enabled. The kernel tracks when a CPU has
|
||||
run a potentially malicious guest and issues an IBPB before the first
|
||||
exit to userspace after VM-exit.
|
||||
|
||||
* 'Mitigation: IBPB on VMEXIT':
|
||||
|
||||
IBPB is issued on every VM-exit. This occurs when other mitigations like
|
||||
RETBLEED or SRSO are already issuing IBPB on VM-exit.
|
||||
|
||||
Mitigation control on the kernel command line
|
||||
----------------------------------------------
|
||||
|
||||
The mitigation can be controlled via the ``vmscape=`` command line parameter:
|
||||
|
||||
* ``vmscape=off``:
|
||||
|
||||
Disable the VMSCAPE mitigation.
|
||||
|
||||
* ``vmscape=ibpb``:
|
||||
|
||||
Enable conditional IBPB mitigation (default when CONFIG_MITIGATION_VMSCAPE=y).
|
||||
|
||||
* ``vmscape=force``:
|
||||
|
||||
Force vulnerability detection and mitigation even on processors that are
|
||||
not known to be affected.
|
||||
|
|
@ -3548,6 +3548,7 @@
|
|||
srbds=off [X86,INTEL]
|
||||
ssbd=force-off [ARM64]
|
||||
tsx_async_abort=off [X86]
|
||||
vmscape=off [X86]
|
||||
|
||||
Exceptions:
|
||||
This does not have any effect on
|
||||
|
|
@ -5922,6 +5923,9 @@
|
|||
|
||||
rootflags= [KNL] Set root filesystem mount option string
|
||||
|
||||
initramfs_options= [KNL]
|
||||
Specify mount options for for the initramfs mount.
|
||||
|
||||
rootfstype= [KNL] Set root filesystem type
|
||||
|
||||
rootwait [KNL] Wait (indefinitely) for root device to show up.
|
||||
|
|
@ -7425,6 +7429,16 @@
|
|||
vmpoff= [KNL,S390] Perform z/VM CP command after power off.
|
||||
Format: <command>
|
||||
|
||||
vmscape= [X86] Controls mitigation for VMscape attacks.
|
||||
VMscape attacks can leak information from a userspace
|
||||
hypervisor to a guest via speculative side-channels.
|
||||
|
||||
off - disable the mitigation
|
||||
ibpb - use Indirect Branch Prediction Barrier
|
||||
(IBPB) mitigation (default)
|
||||
force - force vulnerability detection even on
|
||||
unaffected processors
|
||||
|
||||
vsyscall= [X86-64,EARLY]
|
||||
Controls the behavior of vsyscalls (i.e. calls to
|
||||
fixed addresses of 0xffffffffff600x00 from legacy
|
||||
|
|
|
|||
|
|
@ -48,8 +48,8 @@ This value is reset to 100 when the kernel boots.
|
|||
Fan mode
|
||||
--------
|
||||
|
||||
Writing 1/0 to /sys/devices/platform/lg-laptop/fan_mode disables/enables
|
||||
the fan silent mode.
|
||||
Writing 0/1/2 to /sys/devices/platform/lg-laptop/fan_mode sets fan mode to
|
||||
Optimal/Silent/Performance respectively.
|
||||
|
||||
|
||||
USB charge
|
||||
|
|
|
|||
|
|
@ -198,6 +198,8 @@ stable kernels.
|
|||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Neoverse-V3AE | #3312417 | ARM64_ERRATUM_3194386 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | MMU-500 | #841119,826419 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | MMU-600 | #1076982,1209401| N/A |
|
||||
|
|
|
|||
|
|
@ -233,10 +233,16 @@ attempts in order to enforce the LRU property which have increasing impacts on
|
|||
other CPUs involved in the following operation attempts:
|
||||
|
||||
- Attempt to use CPU-local state to batch operations
|
||||
- Attempt to fetch free nodes from global lists
|
||||
- Attempt to fetch ``target_free`` free nodes from global lists
|
||||
- Attempt to pull any node from a global list and remove it from the hashmap
|
||||
- Attempt to pull any node from any CPU's list and remove it from the hashmap
|
||||
|
||||
The number of nodes to borrow from the global list in a batch, ``target_free``,
|
||||
depends on the size of the map. Larger batch size reduces lock contention, but
|
||||
may also exhaust the global structure. The value is computed at map init to
|
||||
avoid exhaustion, by limiting aggregate reservation by all CPUs to half the map
|
||||
size. With a minimum of a single element and maximum budget of 128 at a time.
|
||||
|
||||
This algorithm is described visually in the following diagram. See the
|
||||
description in commit 3a08c2fd7634 ("bpf: LRU List") for a full explanation of
|
||||
the corresponding operations:
|
||||
|
|
|
|||
|
|
@ -35,18 +35,18 @@ digraph {
|
|||
fn_bpf_lru_list_pop_free_to_local [shape=rectangle,fillcolor=2,
|
||||
label="Flush local pending,
|
||||
Rotate Global list, move
|
||||
LOCAL_FREE_TARGET
|
||||
target_free
|
||||
from global -> local"]
|
||||
// Also corresponds to:
|
||||
// fn__local_list_flush()
|
||||
// fn_bpf_lru_list_rotate()
|
||||
fn___bpf_lru_node_move_to_free[shape=diamond,fillcolor=2,
|
||||
label="Able to free\nLOCAL_FREE_TARGET\nnodes?"]
|
||||
label="Able to free\ntarget_free\nnodes?"]
|
||||
|
||||
fn___bpf_lru_list_shrink_inactive [shape=rectangle,fillcolor=3,
|
||||
label="Shrink inactive list
|
||||
up to remaining
|
||||
LOCAL_FREE_TARGET
|
||||
target_free
|
||||
(global LRU -> local)"]
|
||||
fn___bpf_lru_list_shrink [shape=diamond,fillcolor=2,
|
||||
label="> 0 entries in\nlocal free list?"]
|
||||
|
|
|
|||
|
|
@ -28,9 +28,36 @@ properties:
|
|||
- description: PCIe 5 pipe clock
|
||||
- description: PCIe 6a pipe clock
|
||||
- description: PCIe 6b pipe clock
|
||||
- description: USB QMP Phy 0 clock source
|
||||
- description: USB QMP Phy 1 clock source
|
||||
- description: USB QMP Phy 2 clock source
|
||||
- description: USB4_0 QMPPHY clock source
|
||||
- description: USB4_1 QMPPHY clock source
|
||||
- description: USB4_2 QMPPHY clock source
|
||||
- description: USB4_0 PHY DP0 GMUX clock source
|
||||
- description: USB4_0 PHY DP1 GMUX clock source
|
||||
- description: USB4_0 PHY PCIE PIPEGMUX clock source
|
||||
- description: USB4_0 PHY PIPEGMUX clock source
|
||||
- description: USB4_0 PHY SYS PCIE PIPEGMUX clock source
|
||||
- description: USB4_1 PHY DP0 GMUX 2 clock source
|
||||
- description: USB4_1 PHY DP1 GMUX 2 clock source
|
||||
- description: USB4_1 PHY PCIE PIPEGMUX clock source
|
||||
- description: USB4_1 PHY PIPEGMUX clock source
|
||||
- description: USB4_1 PHY SYS PCIE PIPEGMUX clock source
|
||||
- description: USB4_2 PHY DP0 GMUX 2 clock source
|
||||
- description: USB4_2 PHY DP1 GMUX 2 clock source
|
||||
- description: USB4_2 PHY PCIE PIPEGMUX clock source
|
||||
- description: USB4_2 PHY PIPEGMUX clock source
|
||||
- description: USB4_2 PHY SYS PCIE PIPEGMUX clock source
|
||||
- description: USB4_0 PHY RX 0 clock source
|
||||
- description: USB4_0 PHY RX 1 clock source
|
||||
- description: USB4_1 PHY RX 0 clock source
|
||||
- description: USB4_1 PHY RX 1 clock source
|
||||
- description: USB4_2 PHY RX 0 clock source
|
||||
- description: USB4_2 PHY RX 1 clock source
|
||||
- description: USB4_0 PHY PCIE PIPE clock source
|
||||
- description: USB4_0 PHY max PIPE clock source
|
||||
- description: USB4_1 PHY PCIE PIPE clock source
|
||||
- description: USB4_1 PHY max PIPE clock source
|
||||
- description: USB4_2 PHY PCIE PIPE clock source
|
||||
- description: USB4_2 PHY max PIPE clock source
|
||||
|
||||
power-domains:
|
||||
description:
|
||||
|
|
@ -63,7 +90,34 @@ examples:
|
|||
<&pcie6b_phy>,
|
||||
<&usb_1_ss0_qmpphy 0>,
|
||||
<&usb_1_ss1_qmpphy 1>,
|
||||
<&usb_1_ss2_qmpphy 2>;
|
||||
<&usb_1_ss2_qmpphy 2>,
|
||||
<&usb4_0_phy_dp0_gmux_clk>,
|
||||
<&usb4_0_phy_dp1_gmux_clk>,
|
||||
<&usb4_0_phy_pcie_pipegmux_clk>,
|
||||
<&usb4_0_phy_pipegmux_clk>,
|
||||
<&usb4_0_phy_sys_pcie_pipegmux_clk>,
|
||||
<&usb4_1_phy_dp0_gmux_2_clk>,
|
||||
<&usb4_1_phy_dp1_gmux_2_clk>,
|
||||
<&usb4_1_phy_pcie_pipegmux_clk>,
|
||||
<&usb4_1_phy_pipegmux_clk>,
|
||||
<&usb4_1_phy_sys_pcie_pipegmux_clk>,
|
||||
<&usb4_2_phy_dp0_gmux_2_clk>,
|
||||
<&usb4_2_phy_dp1_gmux_2_clk>,
|
||||
<&usb4_2_phy_pcie_pipegmux_clk>,
|
||||
<&usb4_2_phy_pipegmux_clk>,
|
||||
<&usb4_2_phy_sys_pcie_pipegmux_clk>,
|
||||
<&usb4_0_phy_rx_0_clk>,
|
||||
<&usb4_0_phy_rx_1_clk>,
|
||||
<&usb4_1_phy_rx_0_clk>,
|
||||
<&usb4_1_phy_rx_1_clk>,
|
||||
<&usb4_2_phy_rx_0_clk>,
|
||||
<&usb4_2_phy_rx_1_clk>,
|
||||
<&usb4_0_phy_pcie_pipe_clk>,
|
||||
<&usb4_0_phy_max_pipe_clk>,
|
||||
<&usb4_1_phy_pcie_pipe_clk>,
|
||||
<&usb4_1_phy_max_pipe_clk>,
|
||||
<&usb4_2_phy_pcie_pipe_clk>,
|
||||
<&usb4_2_phy_max_pipe_clk>;
|
||||
power-domains = <&rpmhpd RPMHPD_CX>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@ properties:
|
|||
- const: bus
|
||||
- const: core
|
||||
- const: vsync
|
||||
- const: lut
|
||||
- const: tbu
|
||||
- const: tbu_rt
|
||||
# MSM8996 has additional iommu clock
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ properties:
|
|||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ properties:
|
|||
maxItems: 2
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ properties:
|
|||
patternProperties:
|
||||
"^sdhci@[0-9a-f]+$":
|
||||
type: object
|
||||
$ref: mmc-controller.yaml
|
||||
$ref: sdhci-common.yaml
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
|
|
|
|||
|
|
@ -36,13 +36,13 @@ properties:
|
|||
|
||||
reg:
|
||||
items:
|
||||
- description: External local bus interface registers
|
||||
- description: Data Bus Interface registers
|
||||
- description: Meson designed configuration registers
|
||||
- description: PCIe configuration space
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: elbi
|
||||
- const: dbi
|
||||
- const: cfg
|
||||
- const: config
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ examples:
|
|||
pcie: pcie@f9800000 {
|
||||
compatible = "amlogic,axg-pcie", "snps,dw-pcie";
|
||||
reg = <0xf9800000 0x400000>, <0xff646000 0x2000>, <0xf9f00000 0x100000>;
|
||||
reg-names = "elbi", "cfg", "config";
|
||||
reg-names = "dbi", "cfg", "config";
|
||||
interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
|
||||
clocks = <&pclk>, <&clk_port>, <&clk_phy>;
|
||||
clock-names = "pclk", "port", "general";
|
||||
|
|
|
|||
|
|
@ -74,6 +74,11 @@ properties:
|
|||
items:
|
||||
- const: pci
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ properties:
|
|||
required:
|
||||
- interconnects
|
||||
- interconnect-names
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
|
|
|||
|
|
@ -69,6 +69,11 @@ properties:
|
|||
items:
|
||||
- const: pci
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -81,6 +81,11 @@ properties:
|
|||
items:
|
||||
- const: pci
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,11 @@ properties:
|
|||
items:
|
||||
- const: pci
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -81,6 +81,11 @@ properties:
|
|||
items:
|
||||
- const: pci
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -78,6 +78,11 @@ properties:
|
|||
- const: pci # PCIe core reset
|
||||
- const: link_down # PCIe link down reset
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,pcie-common.yaml#
|
||||
|
||||
|
|
|
|||
|
|
@ -57,11 +57,24 @@ required:
|
|||
- clocks
|
||||
- clock-names
|
||||
- '#phy-cells'
|
||||
- power-domains
|
||||
- resets
|
||||
- reset-names
|
||||
- rockchip,grf
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- rockchip,px30-csi-dphy
|
||||
- rockchip,rk1808-csi-dphy
|
||||
- rockchip,rk3326-csi-dphy
|
||||
- rockchip,rk3368-csi-dphy
|
||||
then:
|
||||
required:
|
||||
- power-domains
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
|
|
|
|||
|
|
@ -50,18 +50,20 @@ patternProperties:
|
|||
groups:
|
||||
description:
|
||||
Name of the pin group to use for the functions.
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
|
||||
i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
|
||||
spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
|
||||
spi1_grp, spi2_grp, spi3_grp, spi4_grp, spi5_grp, spi6_grp,
|
||||
uart0_grp, uart1_grp, uart2_grp, uart3_grp,
|
||||
pwm0_gpio4_grp, pwm0_gpio8_grp, pwm0_gpio12_grp,
|
||||
pwm0_gpio16_grp, pwm1_gpio5_grp, pwm1_gpio9_grp,
|
||||
pwm1_gpio13_grp, pwm1_gpio17_grp, pwm2_gpio6_grp,
|
||||
pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
|
||||
pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
|
||||
pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]
|
||||
items:
|
||||
enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
|
||||
i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
|
||||
spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
|
||||
spi1_grp, spi2_grp, spi3_grp, spi4_grp, spi5_grp, spi6_grp,
|
||||
uart0_grp, uart1_grp, uart2_grp, uart3_grp,
|
||||
pwm0_gpio4_grp, pwm0_gpio8_grp, pwm0_gpio12_grp,
|
||||
pwm0_gpio16_grp, pwm1_gpio5_grp, pwm1_gpio9_grp,
|
||||
pwm1_gpio13_grp, pwm1_gpio17_grp, pwm2_gpio6_grp,
|
||||
pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
|
||||
pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
|
||||
pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 16, 24, 32]
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ properties:
|
|||
- qcom,sm8450-rpmhpd
|
||||
- qcom,sm8550-rpmhpd
|
||||
- qcom,sm8650-rpmhpd
|
||||
- qcom,sm8750-rpmhpd
|
||||
- qcom,x1e80100-rpmhpd
|
||||
- items:
|
||||
- enum:
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ properties:
|
|||
- const: dma_intr2
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: sw_baud
|
||||
|
|
|
|||
|
|
@ -33,6 +33,10 @@ properties:
|
|||
|
||||
vcc-supply: true
|
||||
|
||||
mediatek,ufs-disable-mcq:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: The mask to disable MCQ (Multi-Circular Queue) for UFS host.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
|
|
|
|||
|
|
@ -85,13 +85,21 @@ required:
|
|||
- reg
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- dma-ranges
|
||||
- ranges
|
||||
- clocks
|
||||
- clock-names
|
||||
- interrupts
|
||||
- power-domains
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mp-dwc3
|
||||
then:
|
||||
required:
|
||||
- dma-ranges
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ Core
|
|||
ACPI support
|
||||
============
|
||||
|
||||
.. kernel-doc:: drivers/gpio/gpiolib-acpi.c
|
||||
.. kernel-doc:: drivers/gpio/gpiolib-acpi-core.c
|
||||
:export:
|
||||
|
||||
Device tree support
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ per stream. From ASoC DPCM framework, this stream state maybe linked to
|
|||
|
||||
.. code-block:: c
|
||||
|
||||
int sdw_alloc_stream(char * stream_name);
|
||||
int sdw_alloc_stream(char * stream_name, enum sdw_stream_type type);
|
||||
|
||||
The SoundWire core provides a sdw_startup_stream() helper function,
|
||||
typically called during a dailink .startup() callback, which performs
|
||||
|
|
|
|||
|
|
@ -42,9 +42,10 @@ TTY Refcounting
|
|||
TTY Helpers
|
||||
-----------
|
||||
|
||||
.. kernel-doc:: include/linux/tty_port.h
|
||||
:identifiers: tty_port_tty_hangup tty_port_tty_vhangup
|
||||
.. kernel-doc:: drivers/tty/tty_port.c
|
||||
:identifiers: tty_port_tty_hangup tty_port_tty_wakeup
|
||||
|
||||
:identifiers: tty_port_tty_wakeup
|
||||
|
||||
Modem Signals
|
||||
-------------
|
||||
|
|
|
|||
|
|
@ -235,9 +235,9 @@ usrjquota=<file> Appoint specified file and type during mount, so that quota
|
|||
grpjquota=<file> information can be properly updated during recovery flow,
|
||||
prjjquota=<file> <quota file>: must be in root directory;
|
||||
jqfmt=<quota type> <quota type>: [vfsold,vfsv0,vfsv1].
|
||||
offusrjquota Turn off user journalled quota.
|
||||
offgrpjquota Turn off group journalled quota.
|
||||
offprjjquota Turn off project journalled quota.
|
||||
usrjquota= Turn off user journalled quota.
|
||||
grpjquota= Turn off group journalled quota.
|
||||
prjjquota= Turn off project journalled quota.
|
||||
quota Enable plain user disk quota accounting.
|
||||
noquota Disable all plain disk quota option.
|
||||
alloc_mode=%s Adjust block allocation policy, which supports "reuse"
|
||||
|
|
|
|||
|
|
@ -141,9 +141,8 @@ However, these ioctls have some limitations:
|
|||
CONFIG_PAGE_POISONING=y in your kernel config and add page_poison=1
|
||||
to your kernel command line. However, this has a performance cost.
|
||||
|
||||
- Secret keys might still exist in CPU registers, in crypto
|
||||
accelerator hardware (if used by the crypto API to implement any of
|
||||
the algorithms), or in other places not explicitly considered here.
|
||||
- Secret keys might still exist in CPU registers or in other places
|
||||
not explicitly considered here.
|
||||
|
||||
Limitations of v1 policies
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
@ -378,9 +377,12 @@ the work is done by XChaCha12, which is much faster than AES when AES
|
|||
acceleration is unavailable. For more information about Adiantum, see
|
||||
`the Adiantum paper <https://eprint.iacr.org/2018/720.pdf>`_.
|
||||
|
||||
The (AES-128-CBC-ESSIV, AES-128-CBC-CTS) pair exists only to support
|
||||
systems whose only form of AES acceleration is an off-CPU crypto
|
||||
accelerator such as CAAM or CESA that does not support XTS.
|
||||
The (AES-128-CBC-ESSIV, AES-128-CBC-CTS) pair was added to try to
|
||||
provide a more efficient option for systems that lack AES instructions
|
||||
in the CPU but do have a non-inline crypto engine such as CAAM or CESA
|
||||
that supports AES-CBC (and not AES-XTS). This is deprecated. It has
|
||||
been shown that just doing AES on the CPU is actually faster.
|
||||
Moreover, Adiantum is faster still and is recommended on such systems.
|
||||
|
||||
The remaining mode pairs are the "national pride ciphers":
|
||||
|
||||
|
|
@ -1289,22 +1291,13 @@ this by validating all top-level encryption policies prior to access.
|
|||
Inline encryption support
|
||||
=========================
|
||||
|
||||
By default, fscrypt uses the kernel crypto API for all cryptographic
|
||||
operations (other than HKDF, which fscrypt partially implements
|
||||
itself). The kernel crypto API supports hardware crypto accelerators,
|
||||
but only ones that work in the traditional way where all inputs and
|
||||
outputs (e.g. plaintexts and ciphertexts) are in memory. fscrypt can
|
||||
take advantage of such hardware, but the traditional acceleration
|
||||
model isn't particularly efficient and fscrypt hasn't been optimized
|
||||
for it.
|
||||
|
||||
Instead, many newer systems (especially mobile SoCs) have *inline
|
||||
encryption hardware* that can encrypt/decrypt data while it is on its
|
||||
way to/from the storage device. Linux supports inline encryption
|
||||
through a set of extensions to the block layer called *blk-crypto*.
|
||||
blk-crypto allows filesystems to attach encryption contexts to bios
|
||||
(I/O requests) to specify how the data will be encrypted or decrypted
|
||||
in-line. For more information about blk-crypto, see
|
||||
Many newer systems (especially mobile SoCs) have *inline encryption
|
||||
hardware* that can encrypt/decrypt data while it is on its way to/from
|
||||
the storage device. Linux supports inline encryption through a set of
|
||||
extensions to the block layer called *blk-crypto*. blk-crypto allows
|
||||
filesystems to attach encryption contexts to bios (I/O requests) to
|
||||
specify how the data will be encrypted or decrypted in-line. For more
|
||||
information about blk-crypto, see
|
||||
:ref:`Documentation/block/inline-encryption.rst <inline_encryption>`.
|
||||
|
||||
On supported filesystems (currently ext4 and f2fs), fscrypt can use
|
||||
|
|
|
|||
|
|
@ -218,64 +218,30 @@ NFS Client and Server Interlock
|
|||
===============================
|
||||
|
||||
LOCALIO provides the nfs_uuid_t object and associated interfaces to
|
||||
allow proper network namespace (net-ns) and NFSD object refcounting:
|
||||
allow proper network namespace (net-ns) and NFSD object refcounting.
|
||||
|
||||
We don't want to keep a long-term counted reference on each NFSD's
|
||||
net-ns in the client because that prevents a server container from
|
||||
completely shutting down.
|
||||
|
||||
So we avoid taking a reference at all and rely on the per-cpu
|
||||
reference to the server (detailed below) being sufficient to keep
|
||||
the net-ns active. This involves allowing the NFSD's net-ns exit
|
||||
code to iterate all active clients and clear their ->net pointers
|
||||
(which are needed to find the per-cpu-refcount for the nfsd_serv).
|
||||
|
||||
Details:
|
||||
|
||||
- Embed nfs_uuid_t in nfs_client. nfs_uuid_t provides a list_head
|
||||
that can be used to find the client. It does add the 16-byte
|
||||
uuid_t to nfs_client so it is bigger than needed (given that
|
||||
uuid_t is only used during the initial NFS client and server
|
||||
LOCALIO handshake to determine if they are local to each other).
|
||||
If that is really a problem we can find a fix.
|
||||
|
||||
- When the nfs server confirms that the uuid_t is local, it moves
|
||||
the nfs_uuid_t onto a per-net-ns list in NFSD's nfsd_net.
|
||||
|
||||
- When each server's net-ns is shutting down - in a "pre_exit"
|
||||
handler, all these nfs_uuid_t have their ->net cleared. There is
|
||||
an rcu_synchronize() call between pre_exit() handlers and exit()
|
||||
handlers so any caller that sees nfs_uuid_t ->net as not NULL can
|
||||
safely manage the per-cpu-refcount for nfsd_serv.
|
||||
|
||||
- The client's nfs_uuid_t is passed to nfsd_open_local_fh() so it
|
||||
can safely dereference ->net in a private rcu_read_lock() section
|
||||
to allow safe access to the associated nfsd_net and nfsd_serv.
|
||||
|
||||
So LOCALIO required the introduction and use of NFSD's percpu_ref to
|
||||
interlock nfsd_destroy_serv() and nfsd_open_local_fh(), to ensure each
|
||||
nn->nfsd_serv is not destroyed while in use by nfsd_open_local_fh(), and
|
||||
LOCALIO required the introduction and use of NFSD's percpu nfsd_net_ref
|
||||
to interlock nfsd_shutdown_net() and nfsd_open_local_fh(), to ensure
|
||||
each net-ns is not destroyed while in use by nfsd_open_local_fh(), and
|
||||
warrants a more detailed explanation:
|
||||
|
||||
nfsd_open_local_fh() uses nfsd_serv_try_get() before opening its
|
||||
nfsd_open_local_fh() uses nfsd_net_try_get() before opening its
|
||||
nfsd_file handle and then the caller (NFS client) must drop the
|
||||
reference for the nfsd_file and associated nn->nfsd_serv using
|
||||
nfs_file_put_local() once it has completed its IO.
|
||||
reference for the nfsd_file and associated net-ns using
|
||||
nfsd_file_put_local() once it has completed its IO.
|
||||
|
||||
This interlock working relies heavily on nfsd_open_local_fh() being
|
||||
afforded the ability to safely deal with the possibility that the
|
||||
NFSD's net-ns (and nfsd_net by association) may have been destroyed
|
||||
by nfsd_destroy_serv() via nfsd_shutdown_net() -- which is only
|
||||
possible given the nfs_uuid_t ->net pointer managemenet detailed
|
||||
above.
|
||||
by nfsd_destroy_serv() via nfsd_shutdown_net().
|
||||
|
||||
All told, this elaborate interlock of the NFS client and server has been
|
||||
verified to fix an easy to hit crash that would occur if an NFSD
|
||||
instance running in a container, with a LOCALIO client mounted, is
|
||||
shutdown. Upon restart of the container and associated NFSD the client
|
||||
would go on to crash due to NULL pointer dereference that occurred due
|
||||
to the LOCALIO client's attempting to nfsd_open_local_fh(), using
|
||||
nn->nfsd_serv, without having a proper reference on nn->nfsd_serv.
|
||||
This interlock of the NFS client and server has been verified to fix an
|
||||
easy to hit crash that would occur if an NFSD instance running in a
|
||||
container, with a LOCALIO client mounted, is shutdown. Upon restart of
|
||||
the container and associated NFSD, the client would go on to crash due
|
||||
to NULL pointer dereference that occurred due to the LOCALIO client's
|
||||
attempting to nfsd_open_local_fh() without having a proper reference on
|
||||
NFSD's net-ns.
|
||||
|
||||
NFS Client issues IO instead of Server
|
||||
======================================
|
||||
|
|
@ -306,6 +272,22 @@ is issuing IO to the underlying local filesystem that it is sharing with
|
|||
the NFS server. See: fs/nfs/localio.c:nfs_local_doio() and
|
||||
fs/nfs/localio.c:nfs_local_commit().
|
||||
|
||||
With normal NFS that makes use of RPC to issue IO to the server, if an
|
||||
application uses O_DIRECT the NFS client will bypass the pagecache but
|
||||
the NFS server will not. The NFS server's use of buffered IO affords
|
||||
applications to be less precise with their alignment when issuing IO to
|
||||
the NFS client. But if all applications properly align their IO, LOCALIO
|
||||
can be configured to use end-to-end O_DIRECT semantics from the NFS
|
||||
client to the underlying local filesystem, that it is sharing with
|
||||
the NFS server, by setting the 'localio_O_DIRECT_semantics' nfs module
|
||||
parameter to Y, e.g.:
|
||||
|
||||
echo Y > /sys/module/nfs/parameters/localio_O_DIRECT_semantics
|
||||
|
||||
Once enabled, it will cause LOCALIO to use end-to-end O_DIRECT semantics
|
||||
(but again, this may cause IO to fail if applications do not properly
|
||||
align their IO).
|
||||
|
||||
Security
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Consider this topology::
|
|||
| | | 0x70 |--CH01--> i2c client B (0x50)
|
||||
+------+ +------+
|
||||
|
||||
which corresponds to the following ASL::
|
||||
which corresponds to the following ASL (in the scope of \_SB)::
|
||||
|
||||
Device (SMB1)
|
||||
{
|
||||
|
|
@ -24,7 +24,7 @@ which corresponds to the following ASL::
|
|||
Name (_HID, ...)
|
||||
Name (_CRS, ResourceTemplate () {
|
||||
I2cSerialBus (0x70, ControllerInitiated, I2C_SPEED,
|
||||
AddressingMode7Bit, "^SMB1", 0x00,
|
||||
AddressingMode7Bit, "\\_SB.SMB1", 0x00,
|
||||
ResourceConsumer,,)
|
||||
}
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ which corresponds to the following ASL::
|
|||
Name (_HID, ...)
|
||||
Name (_CRS, ResourceTemplate () {
|
||||
I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
|
||||
AddressingMode7Bit, "^CH00", 0x00,
|
||||
AddressingMode7Bit, "\\_SB.SMB1.CH00", 0x00,
|
||||
ResourceConsumer,,)
|
||||
}
|
||||
}
|
||||
|
|
@ -52,7 +52,7 @@ which corresponds to the following ASL::
|
|||
Name (_HID, ...)
|
||||
Name (_CRS, ResourceTemplate () {
|
||||
I2cSerialBus (0x50, ControllerInitiated, I2C_SPEED,
|
||||
AddressingMode7Bit, "^CH01", 0x00,
|
||||
AddressingMode7Bit, "\\_SB.SMB1.CH01", 0x00,
|
||||
ResourceConsumer,,)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ done via a userland daemon like fancontrol.
|
|||
Note that those entries do not provide ways to setup the specific
|
||||
hardware characteristics of the system (reference clock, pulses per
|
||||
fan revolution, ...); Those can be modified via devicetree bindings
|
||||
documented in Documentation/devicetree/bindings/hwmon/g762.txt or
|
||||
documented in Documentation/devicetree/bindings/hwmon/gmt,g762.yaml or
|
||||
using a specific platform_data structure in board initialization
|
||||
file (see include/linux/platform_data/g762.h).
|
||||
|
||||
|
|
|
|||
|
|
@ -517,6 +517,8 @@ operations:
|
|||
reply: &pin-attrs
|
||||
attributes:
|
||||
- id
|
||||
- module-name
|
||||
- clock-id
|
||||
- board-label
|
||||
- panel-label
|
||||
- package-label
|
||||
|
|
|
|||
|
|
@ -1682,9 +1682,6 @@ operations:
|
|||
|
||||
do: &module-eeprom-get-op
|
||||
request:
|
||||
attributes:
|
||||
- header
|
||||
reply:
|
||||
attributes:
|
||||
- header
|
||||
- offset
|
||||
|
|
@ -1692,6 +1689,9 @@ operations:
|
|||
- page
|
||||
- bank
|
||||
- i2c-address
|
||||
reply:
|
||||
attributes:
|
||||
- header
|
||||
- data
|
||||
dump: *module-eeprom-get-op
|
||||
-
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ attribute-sets:
|
|||
-
|
||||
name: ipproto
|
||||
type: u8
|
||||
checks:
|
||||
min: 1
|
||||
-
|
||||
name: type
|
||||
type: u8
|
||||
|
|
|
|||
|
|
@ -22,65 +22,67 @@ definitions:
|
|||
doc: unused event
|
||||
-
|
||||
name: created
|
||||
doc:
|
||||
token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
|
||||
doc: >-
|
||||
A new MPTCP connection has been created. It is the good time to
|
||||
allocate memory and send ADD_ADDR if needed. Depending on the
|
||||
traffic-patterns it can take a long time until the
|
||||
MPTCP_EVENT_ESTABLISHED is sent.
|
||||
Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6, sport,
|
||||
dport, server-side, [flags].
|
||||
-
|
||||
name: established
|
||||
doc:
|
||||
token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
|
||||
doc: >-
|
||||
A MPTCP connection is established (can start new subflows).
|
||||
Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6, sport,
|
||||
dport, server-side, [flags].
|
||||
-
|
||||
name: closed
|
||||
doc:
|
||||
token
|
||||
doc: >-
|
||||
A MPTCP connection has stopped.
|
||||
Attribute: token.
|
||||
-
|
||||
name: announced
|
||||
value: 6
|
||||
doc:
|
||||
token, rem_id, family, daddr4 | daddr6 [, dport]
|
||||
doc: >-
|
||||
A new address has been announced by the peer.
|
||||
Attributes: token, rem_id, family, daddr4 | daddr6 [, dport].
|
||||
-
|
||||
name: removed
|
||||
doc:
|
||||
token, rem_id
|
||||
doc: >-
|
||||
An address has been lost by the peer.
|
||||
Attributes: token, rem_id.
|
||||
-
|
||||
name: sub-established
|
||||
value: 10
|
||||
doc:
|
||||
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
|
||||
dport, backup, if_idx [, error]
|
||||
doc: >-
|
||||
A new subflow has been established. 'error' should not be set.
|
||||
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
|
||||
daddr6, sport, dport, backup, if-idx [, error].
|
||||
-
|
||||
name: sub-closed
|
||||
doc:
|
||||
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
|
||||
dport, backup, if_idx [, error]
|
||||
doc: >-
|
||||
A subflow has been closed. An error (copy of sk_err) could be set if an
|
||||
error has been detected for this subflow.
|
||||
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
|
||||
daddr6, sport, dport, backup, if-idx [, error].
|
||||
-
|
||||
name: sub-priority
|
||||
value: 13
|
||||
doc:
|
||||
token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
|
||||
dport, backup, if_idx [, error]
|
||||
doc: >-
|
||||
The priority of a subflow has changed. 'error' should not be set.
|
||||
Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
|
||||
daddr6, sport, dport, backup, if-idx [, error].
|
||||
-
|
||||
name: listener-created
|
||||
value: 15
|
||||
doc:
|
||||
family, sport, saddr4 | saddr6
|
||||
doc: >-
|
||||
A new PM listener is created.
|
||||
Attributes: family, sport, saddr4 | saddr6.
|
||||
-
|
||||
name: listener-closed
|
||||
doc:
|
||||
family, sport, saddr4 | saddr6
|
||||
doc: >-
|
||||
A PM listener is closed.
|
||||
Attributes: family, sport, saddr4 | saddr6.
|
||||
|
||||
attribute-sets:
|
||||
-
|
||||
|
|
@ -253,8 +255,8 @@ attribute-sets:
|
|||
name: timeout
|
||||
type: u32
|
||||
-
|
||||
name: if_idx
|
||||
type: u32
|
||||
name: if-idx
|
||||
type: s32
|
||||
-
|
||||
name: reset-reason
|
||||
type: u32
|
||||
|
|
|
|||
|
|
@ -742,7 +742,7 @@ The broadcast manager sends responses to user space in the same form:
|
|||
struct timeval ival1, ival2; /* count and subsequent interval */
|
||||
canid_t can_id; /* unique can_id for task */
|
||||
__u32 nframes; /* number of can_frames following */
|
||||
struct can_frame frames[0];
|
||||
struct can_frame frames[];
|
||||
};
|
||||
|
||||
The aligned payload 'frames' uses the same basic CAN frame structure defined
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ add_addr_timeout - INTEGER (seconds)
|
|||
resent to an MPTCP peer that has not acknowledged a previous
|
||||
ADD_ADDR message.
|
||||
|
||||
Do not retransmit if set to 0.
|
||||
|
||||
The default value matches TCP_RTO_MAX. This is a per-namespace
|
||||
sysctl.
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,9 @@ seg6_require_hmac - INTEGER
|
|||
|
||||
Default is 0.
|
||||
|
||||
/proc/sys/net/ipv6/seg6_* variables:
|
||||
====================================
|
||||
|
||||
seg6_flowlabel - INTEGER
|
||||
Controls the behaviour of computing the flowlabel of outer
|
||||
IPv6 header in case of SR T.encaps
|
||||
|
|
|
|||
|
|
@ -104,8 +104,10 @@ kernels go out with a handful of known regressions though, hopefully, none
|
|||
of them are serious.
|
||||
|
||||
Once a stable release is made, its ongoing maintenance is passed off to the
|
||||
"stable team," currently Greg Kroah-Hartman. The stable team will release
|
||||
occasional updates to the stable release using the 5.x.y numbering scheme.
|
||||
"stable team," currently consists of Greg Kroah-Hartman and Sasha Levin. The
|
||||
stable team will release occasional updates to the stable release using the
|
||||
5.x.y numbering scheme.
|
||||
|
||||
To be considered for an update release, a patch must (1) fix a significant
|
||||
bug, and (2) already be merged into the mainline for the next development
|
||||
kernel. Kernels will typically receive stable updates for a little more
|
||||
|
|
|
|||
|
|
@ -42,9 +42,11 @@ import kernellog
|
|||
from docutils import nodes, statemachine
|
||||
from docutils.statemachine import ViewList
|
||||
from docutils.parsers.rst import directives, Directive
|
||||
from docutils.utils.error_reporting import ErrorString
|
||||
from sphinx.util.docutils import switch_source_input
|
||||
|
||||
def ErrorString(exc): # Shamelessly stolen from docutils
|
||||
return f'{exc.__class__.__name}: {exc}'
|
||||
|
||||
__version__ = '1.0'
|
||||
|
||||
def setup(app):
|
||||
|
|
|
|||
|
|
@ -40,9 +40,11 @@ import sys
|
|||
from docutils import nodes, statemachine
|
||||
from docutils.statemachine import ViewList
|
||||
from docutils.parsers.rst import directives, Directive
|
||||
from docutils.utils.error_reporting import ErrorString
|
||||
from sphinx.util.docutils import switch_source_input
|
||||
|
||||
def ErrorString(exc): # Shamelessly stolen from docutils
|
||||
return f'{exc.__class__.__name}: {exc}'
|
||||
|
||||
__version__ = '1.0'
|
||||
|
||||
def setup(app):
|
||||
|
|
|
|||
|
|
@ -34,13 +34,15 @@ u"""
|
|||
import os.path
|
||||
|
||||
from docutils import io, nodes, statemachine
|
||||
from docutils.utils.error_reporting import SafeString, ErrorString
|
||||
from docutils.parsers.rst import directives
|
||||
from docutils.parsers.rst.directives.body import CodeBlock, NumberLines
|
||||
from docutils.parsers.rst.directives.misc import Include
|
||||
|
||||
__version__ = '1.0'
|
||||
|
||||
def ErrorString(exc): # Shamelessly stolen from docutils
|
||||
return f'{exc.__class__.__name}: {exc}'
|
||||
|
||||
# ==============================================================================
|
||||
def setup(app):
|
||||
# ==============================================================================
|
||||
|
|
@ -111,7 +113,7 @@ class KernelInclude(Include):
|
|||
raise self.severe('Problems with "%s" directive path:\n'
|
||||
'Cannot encode input file path "%s" '
|
||||
'(wrong locale?).' %
|
||||
(self.name, SafeString(path)))
|
||||
(self.name, path))
|
||||
except IOError as error:
|
||||
raise self.severe('Problems with "%s" directive path:\n%s.' %
|
||||
(self.name, ErrorString(error)))
|
||||
|
|
|
|||
|
|
@ -22,10 +22,12 @@ import re
|
|||
import os.path
|
||||
|
||||
from docutils import statemachine
|
||||
from docutils.utils.error_reporting import ErrorString
|
||||
from docutils.parsers.rst import Directive
|
||||
from docutils.parsers.rst.directives.misc import Include
|
||||
|
||||
def ErrorString(exc): # Shamelessly stolen from docutils
|
||||
return f'{exc.__class__.__name}: {exc}'
|
||||
|
||||
__version__ = '1.0'
|
||||
|
||||
def setup(app):
|
||||
|
|
|
|||
|
|
@ -380,7 +380,9 @@ entry, ts0, corresponding to the ts0 variable in the sched_waking
|
|||
trigger above.
|
||||
|
||||
sched_waking histogram
|
||||
----------------------::
|
||||
----------------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
+------------------+
|
||||
| hist_data |<-------------------------------------------------------+
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ ACPI支持
|
|||
|
||||
该API在以下内核代码中:
|
||||
|
||||
drivers/gpio/gpiolib-acpi.c
|
||||
drivers/gpio/gpiolib-acpi-core.c
|
||||
|
||||
设备树支持
|
||||
==========
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ to matching WMI devices using a struct wmi_device_id table:
|
|||
::
|
||||
|
||||
static const struct wmi_device_id foo_id_table[] = {
|
||||
/* Only use uppercase letters! */
|
||||
{ "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },
|
||||
{ }
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9680,7 +9680,7 @@ L: linux-acpi@vger.kernel.org
|
|||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
|
||||
F: Documentation/firmware-guide/acpi/gpio-properties.rst
|
||||
F: drivers/gpio/gpiolib-acpi.c
|
||||
F: drivers/gpio/gpiolib-acpi-*.c
|
||||
F: drivers/gpio/gpiolib-acpi.h
|
||||
|
||||
GPIO AGGREGATOR
|
||||
|
|
@ -21926,11 +21926,6 @@ S: Maintained
|
|||
W: http://wiki.laptop.org/go/DCON
|
||||
F: drivers/staging/olpc_dcon/
|
||||
|
||||
STAGING - REALTEK RTL8712U DRIVERS
|
||||
M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
|
||||
S: Odd Fixes
|
||||
F: drivers/staging/rtl8712/
|
||||
|
||||
STAGING - SEPS525 LCD CONTROLLER DRIVERS
|
||||
M: Michael Hennerich <michael.hennerich@analog.com>
|
||||
L: linux-fbdev@vger.kernel.org
|
||||
|
|
|
|||
8
Makefile
8
Makefile
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 12
|
||||
SUBLEVEL = 38
|
||||
SUBLEVEL = 74
|
||||
EXTRAVERSION =
|
||||
NAME = Baby Opossum Posse
|
||||
|
||||
|
|
@ -1069,7 +1069,7 @@ KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD
|
|||
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
|
||||
|
||||
# userspace programs are linked via the compiler, use the correct linker
|
||||
ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_LD_IS_LLD),yy)
|
||||
ifdef CONFIG_CC_IS_CLANG
|
||||
KBUILD_USERLDFLAGS += --ld-path=$(LD)
|
||||
endif
|
||||
|
||||
|
|
@ -1372,11 +1372,11 @@ endif
|
|||
|
||||
tools/: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
|
||||
$(Q)$(MAKE) O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
|
||||
|
||||
tools/%: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
$(Q)$(MAKE) O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Kernel selftest
|
||||
|
|
|
|||
|
|
@ -861,6 +861,7 @@ config HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC
|
|||
def_bool y
|
||||
depends on HAVE_CFI_ICALL_NORMALIZE_INTEGERS_CLANG
|
||||
depends on RUSTC_VERSION >= 107900
|
||||
depends on ARM64 || X86_64
|
||||
# With GCOV/KASAN we need this fix: https://github.com/rust-lang/rust/pull/129373
|
||||
depends on (RUSTC_LLVM_VERSION >= 190103 && RUSTC_VERSION >= 108200) || \
|
||||
(!GCOV_KERNEL && !KASAN_GENERIC && !KASAN_SW_TAGS)
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@
|
|||
#define TCSETSW _IOW('t', 21, struct termios)
|
||||
#define TCSETSF _IOW('t', 22, struct termios)
|
||||
|
||||
#define TCGETA _IOR('t', 23, struct termio)
|
||||
#define TCSETA _IOW('t', 24, struct termio)
|
||||
#define TCSETAW _IOW('t', 25, struct termio)
|
||||
#define TCSETAF _IOW('t', 28, struct termio)
|
||||
#define TCGETA 0x40127417
|
||||
#define TCSETA 0x80127418
|
||||
#define TCSETAW 0x80127419
|
||||
#define TCSETAF 0x8012741c
|
||||
|
||||
#define TCSBRK _IO('t', 29)
|
||||
#define TCXONC _IO('t', 30)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
* This code generates raw asm output which is post-processed to extract
|
||||
* and format the required data.
|
||||
*/
|
||||
#define COMPILE_OFFSETS
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/stddef.h>
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ static inline __attribute__ ((const)) int fls(unsigned int x)
|
|||
*/
|
||||
static inline __attribute__ ((const)) unsigned long __fls(unsigned long x)
|
||||
{
|
||||
if (__builtin_constant_p(x))
|
||||
return x ? BITS_PER_LONG - 1 - __builtin_clzl(x) : 0;
|
||||
/* FLS insn has exactly same semantics as the API */
|
||||
return __builtin_arc_fls(x);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
|
||||
*/
|
||||
#define COMPILE_OFFSETS
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ config ARM
|
|||
select HAVE_KERNEL_XZ
|
||||
select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M
|
||||
select HAVE_KRETPROBES if HAVE_KPROBES
|
||||
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_CAN_USE_KEEP_IN_OVERLAY)
|
||||
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_IS_LLD) && LD_CAN_USE_KEEP_IN_OVERLAY
|
||||
select HAVE_MOD_ARCH_SPECIFIC
|
||||
select HAVE_NMI
|
||||
select HAVE_OPTPROBES if !THUMB2_KERNEL
|
||||
|
|
@ -1229,7 +1229,7 @@ config HIGHMEM
|
|||
|
||||
config HIGHPTE
|
||||
bool "Allocate 2nd-level pagetables from highmem" if EXPERT
|
||||
depends on HIGHMEM
|
||||
depends on HIGHMEM && !PREEMPT_RT
|
||||
default y
|
||||
help
|
||||
The VM uses one page of physical memory for each page table.
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ endif
|
|||
# Need -Uarm for gcc < 3.x
|
||||
KBUILD_CPPFLAGS +=$(cpp-y)
|
||||
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include $(srctree)/arch/arm/include/asm/unified.h -msoft-float
|
||||
|
||||
CHECKFLAGS += -D__arm__
|
||||
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@ &gmac0 {
|
|||
mdio {
|
||||
/delete-node/ switch@1e;
|
||||
|
||||
bcm54210e: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
bcm54210e: ethernet-phy@25 {
|
||||
reg = <25>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -66,8 +66,10 @@ &gmac1 {
|
|||
mdio0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
compatible = "snps,dwmac-mdio";
|
||||
|
||||
phy0: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
rxd0-skew-ps = <0>;
|
||||
rxd1-skew-ps = <0>;
|
||||
rxd2-skew-ps = <0>;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ sound {
|
|||
simple-audio-card,mclk-fs = <256>;
|
||||
|
||||
simple-audio-card,cpu {
|
||||
sound-dai = <&audio0 0>;
|
||||
sound-dai = <&audio0>;
|
||||
};
|
||||
|
||||
simple-audio-card,codec {
|
||||
|
|
|
|||
|
|
@ -568,7 +568,7 @@ AT91_XDMAC_DT_PERID(11))>,
|
|||
AT91_XDMAC_DT_PER_IF(1) |
|
||||
AT91_XDMAC_DT_PERID(12))>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -639,7 +639,7 @@ AT91_XDMAC_DT_PERID(13))>,
|
|||
AT91_XDMAC_DT_PER_IF(1) |
|
||||
AT91_XDMAC_DT_PERID(14))>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -851,7 +851,7 @@ AT91_XDMAC_DT_PERID(15))>,
|
|||
AT91_XDMAC_DT_PER_IF(1) |
|
||||
AT91_XDMAC_DT_PERID(16))>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -922,7 +922,7 @@ AT91_XDMAC_DT_PERID(17))>,
|
|||
AT91_XDMAC_DT_PER_IF(1) |
|
||||
AT91_XDMAC_DT_PERID(18))>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -994,7 +994,7 @@ AT91_XDMAC_DT_PERID(19))>,
|
|||
AT91_XDMAC_DT_PER_IF(1) |
|
||||
AT91_XDMAC_DT_PERID(20))>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -811,7 +811,7 @@ uart4: serial@200 {
|
|||
dma-names = "tx", "rx";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
|
@ -837,7 +837,7 @@ uart7: serial@200 {
|
|||
dma-names = "tx", "rx";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
atmel,fifo-size = <16>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -502,6 +502,9 @@ magnetometer@e {
|
|||
compatible = "asahi-kasei,ak8974";
|
||||
reg = <0xe>;
|
||||
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_EDGE_RISING>;
|
||||
|
||||
avdd-supply = <&vdd_3v3_sys>;
|
||||
dvdd-supply = <&vdd_1v8_sys>;
|
||||
|
||||
|
|
@ -515,7 +518,7 @@ wm8903: audio-codec@1a {
|
|||
reg = <0x1a>;
|
||||
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_BOTH>;
|
||||
interrupts = <TEGRA_GPIO(X, 3) IRQ_TYPE_EDGE_BOTH>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
|
|
|||
|
|
@ -108,8 +108,8 @@ sub-mic-ldo {
|
|||
i2c@7000c400 {
|
||||
touchscreen@20 {
|
||||
rmi4-f11@11 {
|
||||
syna,clip-x-high = <1110>;
|
||||
syna,clip-y-high = <1973>;
|
||||
syna,clip-x-high = <1440>;
|
||||
syna,clip-y-high = <2560>;
|
||||
|
||||
touchscreen-inverted-y;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@ &audmux {
|
|||
pinctrl-0 = <&pinctrl_audmux>;
|
||||
status = "okay";
|
||||
|
||||
ssi2 {
|
||||
mux-ssi2 {
|
||||
fsl,audmux-port = <1>;
|
||||
fsl,port-config = <
|
||||
(IMX_AUDMUX_V2_PTCR_SYN |
|
||||
|
|
@ -271,7 +271,7 @@ IMX_AUDMUX_V2_PDCR_RXDSEL(2)
|
|||
>;
|
||||
};
|
||||
|
||||
aud3 {
|
||||
mux-aud3 {
|
||||
fsl,audmux-port = <2>;
|
||||
fsl,port-config = <
|
||||
IMX_AUDMUX_V2_PTCR_SYN
|
||||
|
|
|
|||
|
|
@ -335,7 +335,7 @@ rtc@32 {
|
|||
pinctrl-0 = <&pinctrl_rtc>;
|
||||
reg = <0x32>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ &uart2 {
|
|||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
linux,rs485-enabled-at-boot-time;
|
||||
rs485-rx-during-tx;
|
||||
rs485-rts-active-low;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ sai3: sai@2030000 {
|
|||
#sound-dai-cells = <0>;
|
||||
compatible = "fsl,imx6ul-sai", "fsl,imx6sx-sai";
|
||||
reg = <0x02030000 0x4000>;
|
||||
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks IMX6UL_CLK_SAI3_IPG>,
|
||||
<&clks IMX6UL_CLK_SAI3>,
|
||||
<&clks IMX6UL_CLK_DUMMY>, <&clks IMX6UL_CLK_DUMMY>;
|
||||
|
|
|
|||
|
|
@ -604,7 +604,7 @@ usbmisc1: usb@400b4800 {
|
|||
|
||||
ftm: ftm@400b8000 {
|
||||
compatible = "fsl,ftm-timer";
|
||||
reg = <0x400b8000 0x1000 0x400b9000 0x1000>;
|
||||
reg = <0x400b8000 0x1000>, <0x400b9000 0x1000>;
|
||||
interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clock-names = "ftm-evt", "ftm-src",
|
||||
"ftm-evt-counter-en", "ftm-src-counter-en";
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ vin0_pins: vin0 {
|
|||
};
|
||||
|
||||
can0_pins: can0 {
|
||||
groups = "can0_data";
|
||||
groups = "can0_data_b";
|
||||
function = "can0";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -373,7 +373,6 @@ adv7180_in: endpoint {
|
|||
port@3 {
|
||||
reg = <3>;
|
||||
adv7180_out: endpoint {
|
||||
bus-width = <8>;
|
||||
remote-endpoint = <&vin1ep>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -126,8 +126,6 @@ &rtc0 {
|
|||
|
||||
&switch {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pins_eth3>, <&pins_eth4>, <&pins_mdio1>;
|
||||
|
|
|
|||
|
|
@ -853,6 +853,7 @@ &sdhci_3 {
|
|||
#size-cells = <0>;
|
||||
|
||||
non-removable;
|
||||
cap-power-off-card;
|
||||
bus-width = <4>;
|
||||
mmc-pwrseq = <&wlan_pwrseq>;
|
||||
vmmc-supply = <&vtf_reg>;
|
||||
|
|
|
|||
|
|
@ -518,6 +518,7 @@ &sdhci_3 {
|
|||
#size-cells = <0>;
|
||||
|
||||
non-removable;
|
||||
cap-power-off-card;
|
||||
bus-width = <4>;
|
||||
mmc-pwrseq = <&wlan_pwrseq>;
|
||||
vmmc-supply = <&tflash_reg>;
|
||||
|
|
|
|||
|
|
@ -610,6 +610,7 @@ &sdhci_3 {
|
|||
#size-cells = <0>;
|
||||
|
||||
non-removable;
|
||||
cap-power-off-card;
|
||||
bus-width = <4>;
|
||||
mmc-pwrseq = <&wlan_pwrseq>;
|
||||
vmmc-supply = <&ldo5_reg>;
|
||||
|
|
|
|||
|
|
@ -1440,6 +1440,7 @@ &sdhci_3 {
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
non-removable;
|
||||
cap-power-off-card;
|
||||
bus-width = <4>;
|
||||
|
||||
mmc-pwrseq = <&wlan_pwrseq>;
|
||||
|
|
|
|||
|
|
@ -185,13 +185,13 @@ touch@44 {
|
|||
interrupt-parent = <&gpioi>;
|
||||
vio-supply = <&v3v3>;
|
||||
vcc-supply = <&v3v3>;
|
||||
st,sample-time = <4>;
|
||||
st,mod-12b = <1>;
|
||||
st,ref-sel = <0>;
|
||||
st,adc-freq = <1>;
|
||||
|
||||
touchscreen {
|
||||
compatible = "st,stmpe-ts";
|
||||
st,sample-time = <4>;
|
||||
st,mod-12b = <1>;
|
||||
st,ref-sel = <0>;
|
||||
st,adc-freq = <1>;
|
||||
st,ave-ctrl = <1>;
|
||||
st,touch-det-delay = <2>;
|
||||
st,settling = <2>;
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ &tps {
|
|||
vcc7-supply = <&vbat>;
|
||||
vccio-supply = <&vbat>;
|
||||
|
||||
ti,en-ck32k-xtal = <1>;
|
||||
ti,en-ck32k-xtal;
|
||||
|
||||
regulators {
|
||||
vrtc_reg: regulator@0 {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ &gpio0 {
|
|||
"P9_18 [spi0_d1]",
|
||||
"P9_17 [spi0_cs0]",
|
||||
"[mmc0_cd]",
|
||||
"P8_42A [ecappwm0]",
|
||||
"P9_42A [ecappwm0]",
|
||||
"P8_35 [lcd d12]",
|
||||
"P8_33 [lcd d13]",
|
||||
"P8_31 [lcd d14]",
|
||||
|
|
|
|||
|
|
@ -483,8 +483,6 @@ &mcasp1 {
|
|||
|
||||
op-mode = <0>; /* MCASP_IIS_MODE */
|
||||
tdm-slots = <2>;
|
||||
/* 16 serializers */
|
||||
num-serializer = <16>;
|
||||
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
|
||||
0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
>;
|
||||
|
|
|
|||
|
|
@ -222,10 +222,10 @@ &gpio3 {
|
|||
"ModeA1",
|
||||
"ModeA2",
|
||||
"ModeA3",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"ModeB0",
|
||||
"ModeB1",
|
||||
"ModeB2",
|
||||
"ModeB3",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ codec {
|
|||
};
|
||||
|
||||
twl_power: power {
|
||||
compatible = "ti,twl4030-power-beagleboard-xm", "ti,twl4030-power-idle-osc-off";
|
||||
compatible = "ti,twl4030-power-idle-osc-off";
|
||||
ti,use_poweroff;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ ads7846@0 {
|
|||
ti,debounce-max = /bits/ 16 <10>;
|
||||
ti,debounce-tol = /bits/ 16 <5>;
|
||||
ti,debounce-rep = /bits/ 16 <1>;
|
||||
ti,keep-vref-on = <1>;
|
||||
ti,keep-vref-on;
|
||||
ti,settle-delay-usec = /bits/ 16 <150>;
|
||||
|
||||
wakeup-source;
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ twl_audio: audio {
|
|||
};
|
||||
|
||||
twl_power: power {
|
||||
compatible = "ti,twl4030-power-n900", "ti,twl4030-power-idle-osc-off";
|
||||
compatible = "ti,twl4030-power-idle-osc-off";
|
||||
ti,use_poweroff;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ menu "Accelerated Cryptographic Algorithms for CPU (arm)"
|
|||
|
||||
config CRYPTO_CURVE25519_NEON
|
||||
tristate
|
||||
depends on KERNEL_MODE_NEON
|
||||
depends on KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
|
||||
select CRYPTO_KPP
|
||||
select CRYPTO_LIB_CURVE25519_GENERIC
|
||||
select CRYPTO_ARCH_HAVE_LIB_CURVE25519
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ static int ctr_encrypt(struct skcipher_request *req)
|
|||
while (walk.nbytes > 0) {
|
||||
const u8 *src = walk.src.virt.addr;
|
||||
u8 *dst = walk.dst.virt.addr;
|
||||
int bytes = walk.nbytes;
|
||||
unsigned int bytes = walk.nbytes;
|
||||
|
||||
if (unlikely(bytes < AES_BLOCK_SIZE))
|
||||
src = dst = memcpy(buf + sizeof(buf) - bytes,
|
||||
|
|
|
|||
|
|
@ -42,7 +42,10 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n)
|
|||
extern void *__memset64(uint64_t *, uint32_t low, __kernel_size_t, uint32_t hi);
|
||||
static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n)
|
||||
{
|
||||
return __memset64(p, v, n * 8, v >> 32);
|
||||
if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
|
||||
return __memset64(p, v, n * 8, v >> 32);
|
||||
else
|
||||
return __memset64(p, v >> 32, n * 8, v);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ static inline unsigned long find_zero(unsigned long mask)
|
|||
*/
|
||||
static inline unsigned long load_unaligned_zeropad(const void *addr)
|
||||
{
|
||||
unsigned long ret, offset;
|
||||
unsigned long ret, tmp;
|
||||
|
||||
/* Load word from unaligned pointer addr */
|
||||
asm(
|
||||
|
|
@ -75,9 +75,9 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
|
|||
"2:\n"
|
||||
" .pushsection .text.fixup,\"ax\"\n"
|
||||
" .align 2\n"
|
||||
"3: and %1, %2, #0x3\n"
|
||||
" bic %2, %2, #0x3\n"
|
||||
" ldr %0, [%2]\n"
|
||||
"3: bic %1, %2, #0x3\n"
|
||||
" ldr %0, [%1]\n"
|
||||
" and %1, %2, #0x3\n"
|
||||
" lsl %1, %1, #0x3\n"
|
||||
#ifndef __ARMEB__
|
||||
" lsr %0, %0, %1\n"
|
||||
|
|
@ -90,7 +90,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)
|
|||
" .align 3\n"
|
||||
" .long 1b, 3b\n"
|
||||
" .popsection"
|
||||
: "=&r" (ret), "=&r" (offset)
|
||||
: "=&r" (ret), "=&r" (tmp)
|
||||
: "r" (addr), "Qo" (*(unsigned long *)addr));
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
* This code generates raw asm output which is post-processed to extract
|
||||
* and format the required data.
|
||||
*/
|
||||
#define COMPILE_OFFSETS
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
|
|
|
|||
|
|
@ -689,6 +689,10 @@ sr_dis_exit:
|
|||
bic tmp2, tmp2, #AT91_PMC_PLL_UPDT_ID
|
||||
str tmp2, [pmc, #AT91_PMC_PLL_UPDT]
|
||||
|
||||
/* save acr */
|
||||
ldr tmp2, [pmc, #AT91_PMC_PLL_ACR]
|
||||
str tmp2, .saved_acr
|
||||
|
||||
/* save div. */
|
||||
mov tmp1, #0
|
||||
ldr tmp2, [pmc, #AT91_PMC_PLL_CTRL0]
|
||||
|
|
@ -758,7 +762,7 @@ sr_dis_exit:
|
|||
str tmp1, [pmc, #AT91_PMC_PLL_UPDT]
|
||||
|
||||
/* step 2. */
|
||||
ldr tmp1, =AT91_PMC_PLL_ACR_DEFAULT_PLLA
|
||||
ldr tmp1, .saved_acr
|
||||
str tmp1, [pmc, #AT91_PMC_PLL_ACR]
|
||||
|
||||
/* step 3. */
|
||||
|
|
@ -872,7 +876,7 @@ e_done:
|
|||
/**
|
||||
* at91_mckx_ps_restore: restore MCK1..4 settings
|
||||
*
|
||||
* Side effects: overwrites tmp1, tmp2
|
||||
* Side effects: overwrites tmp1, tmp2 and tmp3
|
||||
*/
|
||||
.macro at91_mckx_ps_restore
|
||||
#ifdef CONFIG_SOC_SAMA7
|
||||
|
|
@ -916,7 +920,7 @@ r_ps:
|
|||
bic tmp3, tmp3, #AT91_PMC_MCR_V2_ID_MSK
|
||||
orr tmp3, tmp3, tmp1
|
||||
orr tmp3, tmp3, #AT91_PMC_MCR_V2_CMD
|
||||
str tmp2, [pmc, #AT91_PMC_MCR_V2]
|
||||
str tmp3, [pmc, #AT91_PMC_MCR_V2]
|
||||
|
||||
wait_mckrdy tmp1
|
||||
|
||||
|
|
@ -1134,6 +1138,8 @@ ENDPROC(at91_pm_suspend_in_sram)
|
|||
.word 0
|
||||
.saved_mckr:
|
||||
.word 0
|
||||
.saved_acr:
|
||||
.word 0
|
||||
.saved_pllar:
|
||||
.word 0
|
||||
.saved_sam9_lpr:
|
||||
|
|
|
|||
|
|
@ -2,12 +2,46 @@
|
|||
/*
|
||||
* am33xx-restart.c - Code common to all AM33xx machines.
|
||||
*/
|
||||
#include <dt-bindings/pinctrl/am33xx.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "control.h"
|
||||
#include "prm.h"
|
||||
|
||||
/*
|
||||
* Advisory 1.0.36 EMU0 and EMU1: Terminals Must be Pulled High Before
|
||||
* ICEPick Samples
|
||||
*
|
||||
* If EMU0/EMU1 pins have been used as GPIO outputs and actively driving low
|
||||
* level, the device might not reboot in normal mode. We are in a bad position
|
||||
* to override GPIO state here, so just switch the pins into EMU input mode
|
||||
* (that's what reset will do anyway) and wait a bit, because the state will be
|
||||
* latched 190 ns after reset.
|
||||
*/
|
||||
static void am33xx_advisory_1_0_36(void)
|
||||
{
|
||||
u32 emu0 = omap_ctrl_readl(AM335X_PIN_EMU0);
|
||||
u32 emu1 = omap_ctrl_readl(AM335X_PIN_EMU1);
|
||||
|
||||
/* If both pins are in EMU mode, nothing to do */
|
||||
if (!(emu0 & 7) && !(emu1 & 7))
|
||||
return;
|
||||
|
||||
/* Switch GPIO3_7/GPIO3_8 into EMU0/EMU1 modes respectively */
|
||||
omap_ctrl_writel(emu0 & ~7, AM335X_PIN_EMU0);
|
||||
omap_ctrl_writel(emu1 & ~7, AM335X_PIN_EMU1);
|
||||
|
||||
/*
|
||||
* Give pull-ups time to load the pin/PCB trace capacity.
|
||||
* 5 ms shall be enough to load 1 uF (would be huge capacity for these
|
||||
* pins) with TI-recommended 4k7 external pull-ups.
|
||||
*/
|
||||
mdelay(5);
|
||||
}
|
||||
|
||||
/**
|
||||
* am33xx_restart - trigger a software restart of the SoC
|
||||
* @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c
|
||||
|
|
@ -18,6 +52,8 @@
|
|||
*/
|
||||
void am33xx_restart(enum reboot_mode mode, const char *cmd)
|
||||
{
|
||||
am33xx_advisory_1_0_36();
|
||||
|
||||
/* TODO: Handle cmd if necessary */
|
||||
prm_reboot_mode = mode;
|
||||
|
||||
|
|
|
|||
|
|
@ -388,12 +388,15 @@ static int __init amx3_idle_init(struct device_node *cpu_node, int cpu)
|
|||
if (!state_node)
|
||||
break;
|
||||
|
||||
if (!of_device_is_available(state_node))
|
||||
if (!of_device_is_available(state_node)) {
|
||||
of_node_put(state_node);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i == CPUIDLE_STATE_MAX) {
|
||||
pr_warn("%s: cpuidle states reached max possible\n",
|
||||
__func__);
|
||||
of_node_put(state_node);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -403,6 +406,7 @@ static int __init amx3_idle_init(struct device_node *cpu_node, int cpu)
|
|||
states[state_count].wfi_flags |= WFI_FLAG_WAKE_M3 |
|
||||
WFI_FLAG_FLUSH_CACHE;
|
||||
|
||||
of_node_put(state_node);
|
||||
state_count++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -279,11 +279,6 @@ static void __init rockchip_smp_prepare_cpus(unsigned int max_cpus)
|
|||
}
|
||||
|
||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) {
|
||||
if (rockchip_smp_prepare_sram(node)) {
|
||||
of_node_put(node);
|
||||
return;
|
||||
}
|
||||
|
||||
/* enable the SCU power domain */
|
||||
pmu_set_power_domain(PMU_PWRDN_SCU, true);
|
||||
|
||||
|
|
@ -316,11 +311,19 @@ static void __init rockchip_smp_prepare_cpus(unsigned int max_cpus)
|
|||
asm ("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
|
||||
ncores = ((l2ctlr >> 24) & 0x3) + 1;
|
||||
}
|
||||
of_node_put(node);
|
||||
|
||||
/* Make sure that all cores except the first are really off */
|
||||
for (i = 1; i < ncores; i++)
|
||||
pmu_set_power_domain(0 + i, false);
|
||||
|
||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) {
|
||||
if (rockchip_smp_prepare_sram(node)) {
|
||||
of_node_put(node);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
of_node_put(node);
|
||||
}
|
||||
|
||||
static void __init rk3036_smp_prepare_cpus(unsigned int max_cpus)
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ static void __init tegra_cpu_reset_handler_enable(void)
|
|||
BUG_ON(is_enabled);
|
||||
BUG_ON(tegra_cpu_reset_handler_size > TEGRA_IRAM_RESET_HANDLER_SIZE);
|
||||
|
||||
memcpy(iram_base, (void *)__tegra_cpu_reset_handler_start,
|
||||
memcpy_toio(iram_base, (void *)__tegra_cpu_reset_handler_start,
|
||||
tegra_cpu_reset_handler_size);
|
||||
|
||||
err = call_firmware_op(set_cpu_boot_addr, 0, reset_address);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue