Snap for 10078798 from bf28ece0ca
to android12-5.10-keystone-qcom-release
Change-Id: I62a126ee4ddd7299b81f1399e9e5c12293a5853f
This commit is contained in:
@@ -271,11 +271,16 @@ Description: Shows current reserved blocks in system, it may be temporarily
|
|||||||
What: /sys/fs/f2fs/<disk>/gc_urgent
|
What: /sys/fs/f2fs/<disk>/gc_urgent
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description: Do background GC agressively when set. When gc_urgent = 1,
|
Description: Do background GC aggressively when set. Set to 0 by default.
|
||||||
background thread starts to do GC by given gc_urgent_sleep_time
|
gc urgent high(1): does GC forcibly in a period of given
|
||||||
interval. When gc_urgent = 2, F2FS will lower the bar of
|
gc_urgent_sleep_time and ignores I/O idling check. uses greedy
|
||||||
checking idle in order to process outstanding discard commands
|
GC approach and turns SSR mode on.
|
||||||
and GC a little bit aggressively. It is set to 0 by default.
|
gc urgent low(2): lowers the bar of checking I/O idling in
|
||||||
|
order to process outstanding discard commands and GC a
|
||||||
|
little bit aggressively. uses cost benefit GC approach.
|
||||||
|
gc urgent mid(3): does GC forcibly in a period of given
|
||||||
|
gc_urgent_sleep_time and executes a mid level of I/O idling check.
|
||||||
|
uses cost benefit GC approach.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
@@ -506,7 +511,7 @@ Date: July 2021
|
|||||||
Contact: "Daeho Jeong" <daehojeong@google.com>
|
Contact: "Daeho Jeong" <daehojeong@google.com>
|
||||||
Description: Show how many segments have been reclaimed by GC during a specific
|
Description: Show how many segments have been reclaimed by GC during a specific
|
||||||
GC mode (0: GC normal, 1: GC idle CB, 2: GC idle greedy,
|
GC mode (0: GC normal, 1: GC idle CB, 2: GC idle greedy,
|
||||||
3: GC idle AT, 4: GC urgent high, 5: GC urgent low)
|
3: GC idle AT, 4: GC urgent high, 5: GC urgent low 6: GC urgent mid)
|
||||||
You can re-initialize this value to "0".
|
You can re-initialize this value to "0".
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_segment_mode
|
What: /sys/fs/f2fs/<disk>/gc_segment_mode
|
||||||
|
6
Documentation/ABI/testing/sysfs-kernel-oops_count
Normal file
6
Documentation/ABI/testing/sysfs-kernel-oops_count
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
What: /sys/kernel/oops_count
|
||||||
|
Date: November 2022
|
||||||
|
KernelVersion: 6.2.0
|
||||||
|
Contact: Linux Kernel Hardening List <linux-hardening@vger.kernel.org>
|
||||||
|
Description:
|
||||||
|
Shows how many times the system has Oopsed since last boot.
|
6
Documentation/ABI/testing/sysfs-kernel-warn_count
Normal file
6
Documentation/ABI/testing/sysfs-kernel-warn_count
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
What: /sys/kernel/warn_count
|
||||||
|
Date: November 2022
|
||||||
|
KernelVersion: 6.2.0
|
||||||
|
Contact: Linux Kernel Hardening List <linux-hardening@vger.kernel.org>
|
||||||
|
Description:
|
||||||
|
Shows how many times the system has Warned since last boot.
|
@@ -2144,24 +2144,57 @@
|
|||||||
|
|
||||||
ivrs_ioapic [HW,X86-64]
|
ivrs_ioapic [HW,X86-64]
|
||||||
Provide an override to the IOAPIC-ID<->DEVICE-ID
|
Provide an override to the IOAPIC-ID<->DEVICE-ID
|
||||||
mapping provided in the IVRS ACPI table. For
|
mapping provided in the IVRS ACPI table.
|
||||||
example, to map IOAPIC-ID decimal 10 to
|
By default, PCI segment is 0, and can be omitted.
|
||||||
PCI device 00:14.0 write the parameter as:
|
|
||||||
|
For example, to map IOAPIC-ID decimal 10 to
|
||||||
|
PCI segment 0x1 and PCI device 00:14.0,
|
||||||
|
write the parameter as:
|
||||||
|
ivrs_ioapic=10@0001:00:14.0
|
||||||
|
|
||||||
|
Deprecated formats:
|
||||||
|
* To map IOAPIC-ID decimal 10 to PCI device 00:14.0
|
||||||
|
write the parameter as:
|
||||||
ivrs_ioapic[10]=00:14.0
|
ivrs_ioapic[10]=00:14.0
|
||||||
|
* To map IOAPIC-ID decimal 10 to PCI segment 0x1 and
|
||||||
|
PCI device 00:14.0 write the parameter as:
|
||||||
|
ivrs_ioapic[10]=0001:00:14.0
|
||||||
|
|
||||||
ivrs_hpet [HW,X86-64]
|
ivrs_hpet [HW,X86-64]
|
||||||
Provide an override to the HPET-ID<->DEVICE-ID
|
Provide an override to the HPET-ID<->DEVICE-ID
|
||||||
mapping provided in the IVRS ACPI table. For
|
mapping provided in the IVRS ACPI table.
|
||||||
example, to map HPET-ID decimal 0 to
|
By default, PCI segment is 0, and can be omitted.
|
||||||
PCI device 00:14.0 write the parameter as:
|
|
||||||
|
For example, to map HPET-ID decimal 10 to
|
||||||
|
PCI segment 0x1 and PCI device 00:14.0,
|
||||||
|
write the parameter as:
|
||||||
|
ivrs_hpet=10@0001:00:14.0
|
||||||
|
|
||||||
|
Deprecated formats:
|
||||||
|
* To map HPET-ID decimal 0 to PCI device 00:14.0
|
||||||
|
write the parameter as:
|
||||||
ivrs_hpet[0]=00:14.0
|
ivrs_hpet[0]=00:14.0
|
||||||
|
* To map HPET-ID decimal 10 to PCI segment 0x1 and
|
||||||
|
PCI device 00:14.0 write the parameter as:
|
||||||
|
ivrs_ioapic[10]=0001:00:14.0
|
||||||
|
|
||||||
ivrs_acpihid [HW,X86-64]
|
ivrs_acpihid [HW,X86-64]
|
||||||
Provide an override to the ACPI-HID:UID<->DEVICE-ID
|
Provide an override to the ACPI-HID:UID<->DEVICE-ID
|
||||||
mapping provided in the IVRS ACPI table. For
|
mapping provided in the IVRS ACPI table.
|
||||||
example, to map UART-HID:UID AMD0020:0 to
|
By default, PCI segment is 0, and can be omitted.
|
||||||
PCI device 00:14.5 write the parameter as:
|
|
||||||
|
For example, to map UART-HID:UID AMD0020:0 to
|
||||||
|
PCI segment 0x1 and PCI device ID 00:14.5,
|
||||||
|
write the parameter as:
|
||||||
|
ivrs_acpihid=AMD0020:0@0001:00:14.5
|
||||||
|
|
||||||
|
Deprecated formats:
|
||||||
|
* To map UART-HID:UID AMD0020:0 to PCI segment is 0,
|
||||||
|
PCI device ID 00:14.5, write the parameter as:
|
||||||
ivrs_acpihid[00:14.5]=AMD0020:0
|
ivrs_acpihid[00:14.5]=AMD0020:0
|
||||||
|
* To map UART-HID:UID AMD0020:0 to PCI segment 0x1 and
|
||||||
|
PCI device ID 00:14.5, write the parameter as:
|
||||||
|
ivrs_acpihid[0001:00:14.5]=AMD0020:0
|
||||||
|
|
||||||
js= [HW,JOY] Analog joystick
|
js= [HW,JOY] Analog joystick
|
||||||
See Documentation/input/joydev/joystick.rst.
|
See Documentation/input/joydev/joystick.rst.
|
||||||
|
@@ -663,6 +663,15 @@ This is the default behavior.
|
|||||||
an oops event is detected.
|
an oops event is detected.
|
||||||
|
|
||||||
|
|
||||||
|
oops_limit
|
||||||
|
==========
|
||||||
|
|
||||||
|
Number of kernel oopses after which the kernel should panic when
|
||||||
|
``panic_on_oops`` is not set. Setting this to 0 disables checking
|
||||||
|
the count. Setting this to 1 has the same effect as setting
|
||||||
|
``panic_on_oops=1``. The default value is 10000.
|
||||||
|
|
||||||
|
|
||||||
osrelease, ostype & version
|
osrelease, ostype & version
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
@@ -1469,6 +1478,16 @@ entry will default to 2 instead of 0.
|
|||||||
2 Unprivileged calls to ``bpf()`` are disabled
|
2 Unprivileged calls to ``bpf()`` are disabled
|
||||||
= =============================================================
|
= =============================================================
|
||||||
|
|
||||||
|
|
||||||
|
warn_limit
|
||||||
|
==========
|
||||||
|
|
||||||
|
Number of kernel warnings after which the kernel should panic when
|
||||||
|
``panic_on_warn`` is not set. Setting this to 0 disables checking
|
||||||
|
the warning count. Setting this to 1 has the same effect as setting
|
||||||
|
``panic_on_warn=1``. The default value is 0.
|
||||||
|
|
||||||
|
|
||||||
watchdog
|
watchdog
|
||||||
========
|
========
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# Copyright 2019 BayLibre, SAS
|
# Copyright 2019 BayLibre, SAS
|
||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
$id: "http://devicetree.org/schemas/phy/amlogic,meson-g12a-usb2-phy.yaml#"
|
$id: "http://devicetree.org/schemas/phy/amlogic,g12a-usb2-phy.yaml#"
|
||||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
title: Amlogic G12A USB2 PHY
|
title: Amlogic G12A USB2 PHY
|
||||||
@@ -13,8 +13,8 @@ maintainers:
|
|||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
enum:
|
||||||
- amlogic,meson-g12a-usb2-phy
|
- amlogic,g12a-usb2-phy
|
||||||
- amlogic,meson-a1-usb2-phy
|
- amlogic,a1-usb2-phy
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
@@ -68,7 +68,7 @@ additionalProperties: false
|
|||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
phy@36000 {
|
phy@36000 {
|
||||||
compatible = "amlogic,meson-g12a-usb2-phy";
|
compatible = "amlogic,g12a-usb2-phy";
|
||||||
reg = <0x36000 0x2000>;
|
reg = <0x36000 0x2000>;
|
||||||
clocks = <&xtal>;
|
clocks = <&xtal>;
|
||||||
clock-names = "xtal";
|
clock-names = "xtal";
|
@@ -2,7 +2,7 @@
|
|||||||
# Copyright 2019 BayLibre, SAS
|
# Copyright 2019 BayLibre, SAS
|
||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
$id: "http://devicetree.org/schemas/phy/amlogic,meson-g12a-usb3-pcie-phy.yaml#"
|
$id: "http://devicetree.org/schemas/phy/amlogic,g12a-usb3-pcie-phy.yaml#"
|
||||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
title: Amlogic G12A USB3 + PCIE Combo PHY
|
title: Amlogic G12A USB3 + PCIE Combo PHY
|
||||||
@@ -13,7 +13,7 @@ maintainers:
|
|||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
enum:
|
||||||
- amlogic,meson-g12a-usb3-pcie-phy
|
- amlogic,g12a-usb3-pcie-phy
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
@@ -49,7 +49,7 @@ additionalProperties: false
|
|||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
phy@46000 {
|
phy@46000 {
|
||||||
compatible = "amlogic,meson-g12a-usb3-pcie-phy";
|
compatible = "amlogic,g12a-usb3-pcie-phy";
|
||||||
reg = <0x46000 0x2000>;
|
reg = <0x46000 0x2000>;
|
||||||
clocks = <&ref_clk>;
|
clocks = <&ref_clk>;
|
||||||
clock-names = "ref_clk";
|
clock-names = "ref_clk";
|
@@ -109,7 +109,7 @@ audio-codec@1{
|
|||||||
reg = <1 0>;
|
reg = <1 0>;
|
||||||
interrupts = <&msmgpio 54 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <&msmgpio 54 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "intr2"
|
interrupt-names = "intr2"
|
||||||
reset-gpios = <&msmgpio 64 0>;
|
reset-gpios = <&msmgpio 64 GPIO_ACTIVE_LOW>;
|
||||||
slim-ifc-dev = <&wc9335_ifd>;
|
slim-ifc-dev = <&wc9335_ifd>;
|
||||||
clock-names = "mclk", "native";
|
clock-names = "mclk", "native";
|
||||||
clocks = <&rpmcc RPM_SMD_DIV_CLK1>,
|
clocks = <&rpmcc RPM_SMD_DIV_CLK1>,
|
||||||
|
@@ -25,8 +25,8 @@ hardware, which may be as simple as a set of GPIO pins or as complex as
|
|||||||
a pair of FIFOs connected to dual DMA engines on the other side of the
|
a pair of FIFOs connected to dual DMA engines on the other side of the
|
||||||
SPI shift register (maximizing throughput). Such drivers bridge between
|
SPI shift register (maximizing throughput). Such drivers bridge between
|
||||||
whatever bus they sit on (often the platform bus) and SPI, and expose
|
whatever bus they sit on (often the platform bus) and SPI, and expose
|
||||||
the SPI side of their device as a :c:type:`struct spi_master
|
the SPI side of their device as a :c:type:`struct spi_controller
|
||||||
<spi_master>`. SPI devices are children of that master,
|
<spi_controller>`. SPI devices are children of that master,
|
||||||
represented as a :c:type:`struct spi_device <spi_device>` and
|
represented as a :c:type:`struct spi_device <spi_device>` and
|
||||||
manufactured from :c:type:`struct spi_board_info
|
manufactured from :c:type:`struct spi_board_info
|
||||||
<spi_board_info>` descriptors which are usually provided by
|
<spi_board_info>` descriptors which are usually provided by
|
||||||
|
@@ -78,8 +78,8 @@ configuration of fault-injection capabilities.
|
|||||||
|
|
||||||
- /sys/kernel/debug/fail*/times:
|
- /sys/kernel/debug/fail*/times:
|
||||||
|
|
||||||
specifies how many times failures may happen at most.
|
specifies how many times failures may happen at most. A value of -1
|
||||||
A value of -1 means "no limit".
|
means "no limit".
|
||||||
|
|
||||||
- /sys/kernel/debug/fail*/space:
|
- /sys/kernel/debug/fail*/space:
|
||||||
|
|
||||||
@@ -167,11 +167,13 @@ configuration of fault-injection capabilities.
|
|||||||
- ERRNO: retval must be -1 to -MAX_ERRNO (-4096).
|
- ERRNO: retval must be -1 to -MAX_ERRNO (-4096).
|
||||||
- ERR_NULL: retval must be 0 or -1 to -MAX_ERRNO (-4096).
|
- ERR_NULL: retval must be 0 or -1 to -MAX_ERRNO (-4096).
|
||||||
|
|
||||||
- /sys/kernel/debug/fail_function/<functiuon-name>/retval:
|
- /sys/kernel/debug/fail_function/<function-name>/retval:
|
||||||
|
|
||||||
specifies the "error" return value to inject to the given
|
specifies the "error" return value to inject to the given function.
|
||||||
function for given function. This will be created when
|
This will be created when the user specifies a new injection entry.
|
||||||
user specifies new injection entry.
|
Note that this file only accepts unsigned values. So, if you want to
|
||||||
|
use a negative errno, you better use 'printf' instead of 'echo', e.g.:
|
||||||
|
$ printf %#x -12 > retval
|
||||||
|
|
||||||
Boot option
|
Boot option
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
@@ -336,7 +338,7 @@ Application Examples
|
|||||||
FAILTYPE=fail_function
|
FAILTYPE=fail_function
|
||||||
FAILFUNC=open_ctree
|
FAILFUNC=open_ctree
|
||||||
echo $FAILFUNC > /sys/kernel/debug/$FAILTYPE/inject
|
echo $FAILFUNC > /sys/kernel/debug/$FAILTYPE/inject
|
||||||
echo -12 > /sys/kernel/debug/$FAILTYPE/$FAILFUNC/retval
|
printf %#x -12 > /sys/kernel/debug/$FAILTYPE/$FAILFUNC/retval
|
||||||
echo N > /sys/kernel/debug/$FAILTYPE/task-filter
|
echo N > /sys/kernel/debug/$FAILTYPE/task-filter
|
||||||
echo 100 > /sys/kernel/debug/$FAILTYPE/probability
|
echo 100 > /sys/kernel/debug/$FAILTYPE/probability
|
||||||
echo 0 > /sys/kernel/debug/$FAILTYPE/interval
|
echo 0 > /sys/kernel/debug/$FAILTYPE/interval
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from sphinx.util.pycompat import execfile_
|
from sphinx.util.osutil import fs_encoding
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
def loadConfig(namespace):
|
def loadConfig(namespace):
|
||||||
@@ -48,7 +48,9 @@ def loadConfig(namespace):
|
|||||||
sys.stdout.write("load additional sphinx-config: %s\n" % config_file)
|
sys.stdout.write("load additional sphinx-config: %s\n" % config_file)
|
||||||
config = namespace.copy()
|
config = namespace.copy()
|
||||||
config['__file__'] = config_file
|
config['__file__'] = config_file
|
||||||
execfile_(config_file, config)
|
with open(config_file, 'rb') as f:
|
||||||
|
code = compile(f.read(), fs_encoding, 'exec')
|
||||||
|
exec(code, config)
|
||||||
del config['__file__']
|
del config['__file__']
|
||||||
namespace.update(config)
|
namespace.update(config)
|
||||||
else:
|
else:
|
||||||
|
@@ -6403,3 +6403,63 @@ When enabled, KVM will disable paravirtual features provided to the
|
|||||||
guest according to the bits in the KVM_CPUID_FEATURES CPUID leaf
|
guest according to the bits in the KVM_CPUID_FEATURES CPUID leaf
|
||||||
(0x40000001). Otherwise, a guest may use the paravirtual features
|
(0x40000001). Otherwise, a guest may use the paravirtual features
|
||||||
regardless of what has actually been exposed through the CPUID leaf.
|
regardless of what has actually been exposed through the CPUID leaf.
|
||||||
|
|
||||||
|
9. Known KVM API problems
|
||||||
|
=========================
|
||||||
|
|
||||||
|
In some cases, KVM's API has some inconsistencies or common pitfalls
|
||||||
|
that userspace need to be aware of. This section details some of
|
||||||
|
these issues.
|
||||||
|
|
||||||
|
Most of them are architecture specific, so the section is split by
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
9.1. x86
|
||||||
|
--------
|
||||||
|
|
||||||
|
``KVM_GET_SUPPORTED_CPUID`` issues
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
In general, ``KVM_GET_SUPPORTED_CPUID`` is designed so that it is possible
|
||||||
|
to take its result and pass it directly to ``KVM_SET_CPUID2``. This section
|
||||||
|
documents some cases in which that requires some care.
|
||||||
|
|
||||||
|
Local APIC features
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
CPU[EAX=1]:ECX[21] (X2APIC) is reported by ``KVM_GET_SUPPORTED_CPUID``,
|
||||||
|
but it can only be enabled if ``KVM_CREATE_IRQCHIP`` or
|
||||||
|
``KVM_ENABLE_CAP(KVM_CAP_IRQCHIP_SPLIT)`` are used to enable in-kernel emulation of
|
||||||
|
the local APIC.
|
||||||
|
|
||||||
|
The same is true for the ``KVM_FEATURE_PV_UNHALT`` paravirtualized feature.
|
||||||
|
|
||||||
|
CPU[EAX=1]:ECX[24] (TSC_DEADLINE) is not reported by ``KVM_GET_SUPPORTED_CPUID``.
|
||||||
|
It can be enabled if ``KVM_CAP_TSC_DEADLINE_TIMER`` is present and the kernel
|
||||||
|
has enabled in-kernel emulation of the local APIC.
|
||||||
|
|
||||||
|
CPU topology
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Several CPUID values include topology information for the host CPU:
|
||||||
|
0x0b and 0x1f for Intel systems, 0x8000001e for AMD systems. Different
|
||||||
|
versions of KVM return different values for this information and userspace
|
||||||
|
should not rely on it. Currently they return all zeroes.
|
||||||
|
|
||||||
|
If userspace wishes to set up a guest topology, it should be careful that
|
||||||
|
the values of these three leaves differ for each CPU. In particular,
|
||||||
|
the APIC ID is found in EDX for all subleaves of 0x0b and 0x1f, and in EAX
|
||||||
|
for 0x8000001e; the latter also encodes the core id and node id in bits
|
||||||
|
7:0 of EBX and ECX respectively.
|
||||||
|
|
||||||
|
Obsolete ioctls and capabilities
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
KVM_CAP_DISABLE_QUIRKS does not let userspace know which quirks are actually
|
||||||
|
available. Use ``KVM_CHECK_EXTENSION(KVM_CAP_DISABLE_QUIRKS2)`` instead if
|
||||||
|
available.
|
||||||
|
|
||||||
|
Ordering of KVM_GET_*/KVM_SET_* ioctls
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
TBD
|
||||||
|
@@ -7280,7 +7280,7 @@ F: Documentation/locking/*futex*
|
|||||||
F: include/asm-generic/futex.h
|
F: include/asm-generic/futex.h
|
||||||
F: include/linux/futex.h
|
F: include/linux/futex.h
|
||||||
F: include/uapi/linux/futex.h
|
F: include/uapi/linux/futex.h
|
||||||
F: kernel/futex.c
|
F: kernel/futex/*
|
||||||
F: tools/perf/bench/futex*
|
F: tools/perf/bench/futex*
|
||||||
F: tools/testing/selftests/futex/
|
F: tools/testing/selftests/futex/
|
||||||
|
|
||||||
|
108
Makefile
108
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 160
|
SUBLEVEL = 168
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
@@ -1511,9 +1511,7 @@ endif
|
|||||||
|
|
||||||
PHONY += modules
|
PHONY += modules
|
||||||
# if KBUILD_BUILTIN && !KBUILD_MIXED_TREE, depend on vmlinux
|
# if KBUILD_BUILTIN && !KBUILD_MIXED_TREE, depend on vmlinux
|
||||||
modules: $(if $(KBUILD_BUILTIN), $(if $(KBUILD_MIXED_TREE),,vmlinux))
|
modules: $(if $(KBUILD_BUILTIN), $(if $(KBUILD_MIXED_TREE),,vmlinux)) modules_check modules_prepare
|
||||||
modules: modules_check modules_prepare
|
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
|
||||||
|
|
||||||
PHONY += modules_check
|
PHONY += modules_check
|
||||||
modules_check: modules.order
|
modules_check: modules.order
|
||||||
@@ -1531,12 +1529,9 @@ PHONY += modules_prepare
|
|||||||
modules_prepare: prepare
|
modules_prepare: prepare
|
||||||
$(Q)$(MAKE) $(build)=scripts scripts/module.lds
|
$(Q)$(MAKE) $(build)=scripts scripts/module.lds
|
||||||
|
|
||||||
# Target to install modules
|
modules_install: __modinst_pre
|
||||||
PHONY += modules_install
|
PHONY += __modinst_pre
|
||||||
modules_install: _modinst_ _modinst_post
|
__modinst_pre:
|
||||||
|
|
||||||
PHONY += _modinst_
|
|
||||||
_modinst_:
|
|
||||||
@rm -rf $(MODLIB)/kernel
|
@rm -rf $(MODLIB)/kernel
|
||||||
@rm -f $(MODLIB)/source
|
@rm -f $(MODLIB)/source
|
||||||
@mkdir -p $(MODLIB)/kernel
|
@mkdir -p $(MODLIB)/kernel
|
||||||
@@ -1548,14 +1543,6 @@ _modinst_:
|
|||||||
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
|
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
|
||||||
@cp -f $(mixed-build-prefix)modules.builtin $(MODLIB)/
|
@cp -f $(mixed-build-prefix)modules.builtin $(MODLIB)/
|
||||||
@cp -f $(or $(mixed-build-prefix),$(objtree)/)modules.builtin.modinfo $(MODLIB)/
|
@cp -f $(or $(mixed-build-prefix),$(objtree)/)modules.builtin.modinfo $(MODLIB)/
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
|
||||||
|
|
||||||
# This depmod is only for convenience to give the initial
|
|
||||||
# boot a modules.dep even before / is mounted read-write. However the
|
|
||||||
# boot script depmod is the master version.
|
|
||||||
PHONY += _modinst_post
|
|
||||||
_modinst_post: _modinst_
|
|
||||||
$(call cmd,depmod)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_MODULE_SIG), y)
|
ifeq ($(CONFIG_MODULE_SIG), y)
|
||||||
PHONY += modules_sign
|
PHONY += modules_sign
|
||||||
@@ -1563,20 +1550,6 @@ modules_sign:
|
|||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else # CONFIG_MODULES
|
|
||||||
|
|
||||||
# Modules not configured
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
PHONY += modules modules_install
|
|
||||||
modules modules_install:
|
|
||||||
@echo >&2
|
|
||||||
@echo >&2 "The present kernel configuration has modules disabled."
|
|
||||||
@echo >&2 "Type 'make config' and enable loadable module support."
|
|
||||||
@echo >&2 "Then build a kernel with module support enabled."
|
|
||||||
@echo >&2
|
|
||||||
@exit 1
|
|
||||||
|
|
||||||
endif # CONFIG_MODULES
|
endif # CONFIG_MODULES
|
||||||
|
|
||||||
###
|
###
|
||||||
@@ -1824,26 +1797,9 @@ KBUILD_BUILTIN :=
|
|||||||
KBUILD_MODULES := 1
|
KBUILD_MODULES := 1
|
||||||
|
|
||||||
build-dirs := $(KBUILD_EXTMOD)
|
build-dirs := $(KBUILD_EXTMOD)
|
||||||
PHONY += modules
|
|
||||||
modules: $(MODORDER)
|
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
|
||||||
|
|
||||||
$(MODORDER): descend
|
$(MODORDER): descend
|
||||||
@:
|
@:
|
||||||
|
|
||||||
PHONY += modules_install
|
|
||||||
modules_install: _emodinst_ _emodinst_post
|
|
||||||
|
|
||||||
install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
|
|
||||||
PHONY += _emodinst_
|
|
||||||
_emodinst_:
|
|
||||||
$(Q)mkdir -p $(MODLIB)/$(install-dir)
|
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
|
||||||
|
|
||||||
PHONY += _emodinst_post
|
|
||||||
_emodinst_post: _emodinst_
|
|
||||||
$(call cmd,depmod)
|
|
||||||
|
|
||||||
compile_commands.json: $(extmod-prefix)compile_commands.json
|
compile_commands.json: $(extmod-prefix)compile_commands.json
|
||||||
PHONY += compile_commands.json
|
PHONY += compile_commands.json
|
||||||
|
|
||||||
@@ -1868,6 +1824,41 @@ PHONY += prepare modules_prepare
|
|||||||
|
|
||||||
endif # KBUILD_EXTMOD
|
endif # KBUILD_EXTMOD
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Modules
|
||||||
|
|
||||||
|
PHONY += modules modules_install
|
||||||
|
|
||||||
|
ifdef CONFIG_MODULES
|
||||||
|
|
||||||
|
modules: $(MODORDER)
|
||||||
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
|
|
||||||
|
quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
||||||
|
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
|
||||||
|
$(KERNELRELEASE) $(mixed-build-prefix)
|
||||||
|
|
||||||
|
modules_install:
|
||||||
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||||
|
$(call cmd,depmod)
|
||||||
|
|
||||||
|
else # CONFIG_MODULES
|
||||||
|
|
||||||
|
# Modules not configured
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
modules modules_install:
|
||||||
|
@echo >&2 '***'
|
||||||
|
@echo >&2 '*** The present kernel configuration has modules disabled.'
|
||||||
|
@echo >&2 '*** To use the module feature, please run "make menuconfig" etc.'
|
||||||
|
@echo >&2 '*** to enable CONFIG_MODULES.'
|
||||||
|
@echo >&2 '***'
|
||||||
|
@exit 1
|
||||||
|
|
||||||
|
KBUILD_MODULES :=
|
||||||
|
|
||||||
|
endif # CONFIG_MODULES
|
||||||
|
|
||||||
# Single targets
|
# Single targets
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# To build individual files in subdirectories, you can do like this:
|
# To build individual files in subdirectories, you can do like this:
|
||||||
@@ -1891,18 +1882,12 @@ $(single-ko): single_modpost
|
|||||||
$(single-no-ko): descend
|
$(single-no-ko): descend
|
||||||
@:
|
@:
|
||||||
|
|
||||||
ifeq ($(KBUILD_EXTMOD),)
|
# Remove MODORDER when done because it is not the real one.
|
||||||
# For the single build of in-tree modules, use a temporary file to avoid
|
|
||||||
# the situation of modules_install installing an invalid modules.order.
|
|
||||||
MODORDER := .modules.tmp
|
|
||||||
endif
|
|
||||||
|
|
||||||
PHONY += single_modpost
|
PHONY += single_modpost
|
||||||
single_modpost: $(single-no-ko) modules_prepare
|
single_modpost: $(single-no-ko) modules_prepare
|
||||||
$(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
|
$(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
|
$(Q)rm -f $(MODORDER)
|
||||||
KBUILD_MODULES := 1
|
|
||||||
|
|
||||||
export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
|
export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
|
||||||
|
|
||||||
@@ -1912,10 +1897,6 @@ build-dirs := $(foreach d, $(build-dirs), \
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef CONFIG_MODULES
|
|
||||||
KBUILD_MODULES :=
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Handle descending into subdirectories listed in $(build-dirs)
|
# Handle descending into subdirectories listed in $(build-dirs)
|
||||||
# Preset locale variables to speed up the build process. Limit locale
|
# Preset locale variables to speed up the build process. Limit locale
|
||||||
# tweaks to this spot to avoid wrong language settings when running
|
# tweaks to this spot to avoid wrong language settings when running
|
||||||
@@ -2057,11 +2038,6 @@ tools/%: FORCE
|
|||||||
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
|
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
|
||||||
cmd_rmfiles = rm -rf $(rm-files)
|
cmd_rmfiles = rm -rf $(rm-files)
|
||||||
|
|
||||||
# Run depmod only if we have System.map and depmod is executable
|
|
||||||
quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
|
||||||
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
|
|
||||||
$(KERNELRELEASE) $(mixed-build-prefix)
|
|
||||||
|
|
||||||
# read saved command lines for existing targets
|
# read saved command lines for existing targets
|
||||||
existing-targets := $(wildcard $(sort $(targets)))
|
existing-targets := $(wildcard $(sort $(targets)))
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1294,6 +1294,7 @@
|
|||||||
of_usb_host_tpl_support
|
of_usb_host_tpl_support
|
||||||
page_endio
|
page_endio
|
||||||
page_mapping
|
page_mapping
|
||||||
|
page_pinner_inited
|
||||||
__page_pinner_migration_failed
|
__page_pinner_migration_failed
|
||||||
panic
|
panic
|
||||||
panic_notifier_list
|
panic_notifier_list
|
||||||
|
@@ -1401,6 +1401,7 @@
|
|||||||
of_get_next_child
|
of_get_next_child
|
||||||
of_get_next_parent
|
of_get_next_parent
|
||||||
of_get_parent
|
of_get_parent
|
||||||
|
of_get_pci_domain_nr
|
||||||
of_get_phy_mode
|
of_get_phy_mode
|
||||||
of_get_property
|
of_get_property
|
||||||
of_get_regulator_init_data
|
of_get_regulator_init_data
|
||||||
@@ -1473,6 +1474,11 @@
|
|||||||
param_set_ulong
|
param_set_ulong
|
||||||
pause_cpus
|
pause_cpus
|
||||||
pci_bus_type
|
pci_bus_type
|
||||||
|
pci_generic_config_read32
|
||||||
|
pci_generic_config_write32
|
||||||
|
pci_lock_rescan_remove
|
||||||
|
pci_pio_to_address
|
||||||
|
pci_unlock_rescan_remove
|
||||||
PDE_DATA
|
PDE_DATA
|
||||||
__per_cpu_offset
|
__per_cpu_offset
|
||||||
perf_event_create_kernel_counter
|
perf_event_create_kernel_counter
|
||||||
|
@@ -3262,6 +3262,9 @@
|
|||||||
ucsi_set_drvdata
|
ucsi_set_drvdata
|
||||||
ucsi_unregister
|
ucsi_unregister
|
||||||
__udelay
|
__udelay
|
||||||
|
__udp4_lib_lookup
|
||||||
|
__udp6_lib_lookup
|
||||||
|
udp_table
|
||||||
ufshcd_auto_hibern8_update
|
ufshcd_auto_hibern8_update
|
||||||
ufshcd_delay_us
|
ufshcd_delay_us
|
||||||
ufshcd_dme_get_attr
|
ufshcd_dme_get_attr
|
||||||
|
@@ -1638,6 +1638,10 @@
|
|||||||
of_clk_add_hw_provider
|
of_clk_add_hw_provider
|
||||||
of_clk_hw_simple_get
|
of_clk_hw_simple_get
|
||||||
|
|
||||||
|
# required by clk-out.ko
|
||||||
|
__clk_hw_register_gate
|
||||||
|
of_clk_parent_fill
|
||||||
|
|
||||||
# required by clk-rk628.ko
|
# required by clk-rk628.ko
|
||||||
devm_reset_controller_register
|
devm_reset_controller_register
|
||||||
|
|
||||||
@@ -2705,6 +2709,7 @@
|
|||||||
snd_soc_dapm_new_widgets
|
snd_soc_dapm_new_widgets
|
||||||
|
|
||||||
# required by snd-soc-rockchip-i2s-tdm.ko
|
# required by snd-soc-rockchip-i2s-tdm.ko
|
||||||
|
clk_has_parent
|
||||||
clk_is_match
|
clk_is_match
|
||||||
pm_runtime_forbid
|
pm_runtime_forbid
|
||||||
snd_pcm_stop_xrun
|
snd_pcm_stop_xrun
|
||||||
|
@@ -124,6 +124,8 @@
|
|||||||
|
|
||||||
#define SO_DETACH_REUSEPORT_BPF 68
|
#define SO_DETACH_REUSEPORT_BPF 68
|
||||||
|
|
||||||
|
#define SO_NETNS_COOKIE 71
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
#if __BITS_PER_LONG == 64
|
#if __BITS_PER_LONG == 64
|
||||||
|
@@ -469,8 +469,10 @@ entSys:
|
|||||||
#ifdef CONFIG_AUDITSYSCALL
|
#ifdef CONFIG_AUDITSYSCALL
|
||||||
lda $6, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
|
lda $6, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
|
||||||
and $3, $6, $3
|
and $3, $6, $3
|
||||||
#endif
|
|
||||||
bne $3, strace
|
bne $3, strace
|
||||||
|
#else
|
||||||
|
blbs $3, strace /* check for SYSCALL_TRACE in disguise */
|
||||||
|
#endif
|
||||||
beq $4, 1f
|
beq $4, 1f
|
||||||
ldq $27, 0($5)
|
ldq $27, 0($5)
|
||||||
1: jsr $26, ($27), sys_ni_syscall
|
1: jsr $26, ($27), sys_ni_syscall
|
||||||
|
@@ -192,7 +192,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)
|
|||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_MATHEMU
|
#ifndef CONFIG_MATHEMU
|
||||||
@@ -577,7 +577,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
|
|||||||
|
|
||||||
printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
|
printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
|
||||||
pc, va, opcode, reg);
|
pc, va, opcode, reg);
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
|
|
||||||
got_exception:
|
got_exception:
|
||||||
/* Ok, we caught the exception, but we don't want it. Is there
|
/* Ok, we caught the exception, but we don't want it. Is there
|
||||||
@@ -632,7 +632,7 @@ got_exception:
|
|||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -204,7 +204,7 @@ retry:
|
|||||||
printk(KERN_ALERT "Unable to handle kernel paging request at "
|
printk(KERN_ALERT "Unable to handle kernel paging request at "
|
||||||
"virtual address %016lx\n", address);
|
"virtual address %016lx\n", address);
|
||||||
die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
|
die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
|
|
||||||
/* We ran out of memory, or some other thing happened to us that
|
/* We ran out of memory, or some other thing happened to us that
|
||||||
made us unable to handle the page fault gracefully. */
|
made us unable to handle the page fault gracefully. */
|
||||||
|
@@ -74,7 +74,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x80000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -582,7 +582,7 @@
|
|||||||
|
|
||||||
pcie1: pcie@2,0 {
|
pcie1: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -79,7 +79,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@2,0 {
|
pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@3,0 {
|
pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -22,6 +22,12 @@
|
|||||||
stdout-path = &uart0;
|
stdout-path = &uart0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet0 = ð0;
|
||||||
|
ethernet1 = ð1;
|
||||||
|
ethernet2 = ð2;
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x40000000>; /* 1024 MB */
|
reg = <0x00000000 0x40000000>; /* 1024 MB */
|
||||||
@@ -291,7 +297,17 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* port 6 is connected to eth0 */
|
ports@6 {
|
||||||
|
reg = <6>;
|
||||||
|
label = "cpu";
|
||||||
|
ethernet = <ð0>;
|
||||||
|
phy-mode = "rgmii-id";
|
||||||
|
|
||||||
|
fixed-link {
|
||||||
|
speed = <1000>;
|
||||||
|
full-duplex;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -84,7 +84,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
*/
|
*/
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x48000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -453,7 +453,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@2,0 {
|
pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -472,7 +472,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@3,0 {
|
pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -494,7 +494,7 @@
|
|||||||
*/
|
*/
|
||||||
pcie@4,0 {
|
pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x48000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -97,7 +97,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
|
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
|
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
|
|
||||||
pcie5: pcie@5,0 {
|
pcie5: pcie@5,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||||
reg = <0x2800 0 0 0 0>;
|
reg = <0x2800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -112,7 +112,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
|
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
|
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
|
|
||||||
pcie5: pcie@5,0 {
|
pcie5: pcie@5,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||||
reg = <0x2800 0 0 0 0>;
|
reg = <0x2800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
|
|
||||||
pcie6: pcie@6,0 {
|
pcie6: pcie@6,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x84000 0 0x2000>;
|
assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
|
||||||
reg = <0x3000 0 0 0 0>;
|
reg = <0x3000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
|
|
||||||
pcie7: pcie@7,0 {
|
pcie7: pcie@7,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x88000 0 0x2000>;
|
assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
|
||||||
reg = <0x3800 0 0 0 0>;
|
reg = <0x3800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -220,7 +220,7 @@
|
|||||||
|
|
||||||
pcie8: pcie@8,0 {
|
pcie8: pcie@8,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x8c000 0 0x2000>;
|
assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
|
||||||
reg = <0x4000 0 0 0 0>;
|
reg = <0x4000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
|
|
||||||
pcie9: pcie@9,0 {
|
pcie9: pcie@9,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x42000 0 0x2000>;
|
assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
|
||||||
reg = <0x4800 0 0 0 0>;
|
reg = <0x4800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -129,7 +129,7 @@
|
|||||||
pcie1: pcie@2 {
|
pcie1: pcie@2 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x80000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
clocks = <&gate_clk 5>;
|
clocks = <&gate_clk 5>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
|
@@ -487,7 +487,7 @@
|
|||||||
scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
i2c-switch@70 {
|
i2c-mux@70 {
|
||||||
compatible = "nxp,pca9547";
|
compatible = "nxp,pca9547";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@@ -634,7 +634,6 @@
|
|||||||
&uart1 {
|
&uart1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_uart1>;
|
pinctrl-0 = <&pinctrl_uart1>;
|
||||||
uart-has-rtscts;
|
|
||||||
rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
clock_frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c2>;
|
pinctrl-0 = <&pinctrl_i2c2>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
clock_frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c1>;
|
pinctrl-0 = <&pinctrl_i2c1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c4 {
|
&i2c4 {
|
||||||
clock_frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c1>;
|
pinctrl-0 = <&pinctrl_i2c1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@@ -43,7 +43,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
clock_frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c1>;
|
pinctrl-0 = <&pinctrl_i2c1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
clock_frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c2>;
|
pinctrl-0 = <&pinctrl_i2c2>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@@ -1571,7 +1571,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
etb@1a01000 {
|
etb@1a01000 {
|
||||||
compatible = "coresight-etb10", "arm,primecell";
|
compatible = "arm,coresight-etb10", "arm,primecell";
|
||||||
reg = <0x1a01000 0x1000>;
|
reg = <0x1a01000 0x1000>;
|
||||||
|
|
||||||
clocks = <&rpmcc RPM_QDSS_CLK>;
|
clocks = <&rpmcc RPM_QDSS_CLK>;
|
||||||
|
@@ -567,7 +567,7 @@
|
|||||||
mpddrc: mpddrc@ffffe800 {
|
mpddrc: mpddrc@ffffe800 {
|
||||||
compatible = "microchip,sam9x60-ddramc", "atmel,sama5d3-ddramc";
|
compatible = "microchip,sam9x60-ddramc", "atmel,sama5d3-ddramc";
|
||||||
reg = <0xffffe800 0x200>;
|
reg = <0xffffe800 0x200>;
|
||||||
clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_CORE PMC_MCK>;
|
clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_PERIPHERAL 49>;
|
||||||
clock-names = "ddrck", "mpddr";
|
clock-names = "ddrck", "mpddr";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -47,7 +47,7 @@
|
|||||||
compatible = "arm,pl110", "arm,primecell";
|
compatible = "arm,pl110", "arm,primecell";
|
||||||
reg = <0xfc200000 0x1000>;
|
reg = <0xfc200000 0x1000>;
|
||||||
interrupt-parent = <&vic1>;
|
interrupt-parent = <&vic1>;
|
||||||
interrupts = <12>;
|
interrupts = <13>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -13,7 +13,6 @@
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
#include "stm32mp157.dtsi"
|
#include "stm32mp157.dtsi"
|
||||||
#include "stm32mp15xc.dtsi"
|
|
||||||
#include "stm32mp15xx-dhcor-som.dtsi"
|
#include "stm32mp15xx-dhcor-som.dtsi"
|
||||||
#include "stm32mp15xx-dhcor-avenger96.dtsi"
|
#include "stm32mp15xx-dhcor-avenger96.dtsi"
|
||||||
|
|
||||||
|
@@ -100,7 +100,7 @@
|
|||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
|
||||||
gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpioz 3 GPIO_ACTIVE_HIGH>;
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -345,7 +345,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
tca9548@70 {
|
i2c-mux@70 {
|
||||||
compatible = "nxp,pca9548";
|
compatible = "nxp,pca9548";
|
||||||
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@@ -340,7 +340,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
tca9548@70 {
|
i2c-mux@70 {
|
||||||
compatible = "nxp,pca9548";
|
compatible = "nxp,pca9548";
|
||||||
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@@ -133,15 +133,16 @@ extern int vfp_restore_user_hwstate(struct user_vfp *,
|
|||||||
#define TIF_NEED_RESCHED 1 /* rescheduling necessary */
|
#define TIF_NEED_RESCHED 1 /* rescheduling necessary */
|
||||||
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
|
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
|
||||||
#define TIF_UPROBE 3 /* breakpointed or singlestepping */
|
#define TIF_UPROBE 3 /* breakpointed or singlestepping */
|
||||||
#define TIF_SYSCALL_TRACE 4 /* syscall trace active */
|
#define TIF_NOTIFY_SIGNAL 4 /* signal notifications exist */
|
||||||
#define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */
|
|
||||||
#define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */
|
|
||||||
#define TIF_SECCOMP 7 /* seccomp syscall filtering active */
|
|
||||||
#define TIF_NOTIFY_SIGNAL 8 /* signal notifications exist */
|
|
||||||
|
|
||||||
#define TIF_USING_IWMMXT 17
|
#define TIF_USING_IWMMXT 17
|
||||||
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
|
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
|
||||||
#define TIF_RESTORE_SIGMASK 20
|
#define TIF_RESTORE_SIGMASK 19
|
||||||
|
#define TIF_SYSCALL_TRACE 20 /* syscall trace active */
|
||||||
|
#define TIF_SYSCALL_AUDIT 21 /* syscall auditing active */
|
||||||
|
#define TIF_SYSCALL_TRACEPOINT 22 /* syscall tracepoint instrumentation */
|
||||||
|
#define TIF_SECCOMP 23 /* seccomp syscall filtering active */
|
||||||
|
|
||||||
|
|
||||||
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
||||||
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
||||||
|
@@ -348,7 +348,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
|
|||||||
if (panic_on_oops)
|
if (panic_on_oops)
|
||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
if (signr)
|
if (signr)
|
||||||
do_exit(signr);
|
make_task_dead(signr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -23,6 +23,7 @@ static int mx25_read_cpu_rev(void)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim");
|
np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim");
|
||||||
iim_base = of_iomap(np, 0);
|
iim_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
BUG_ON(!iim_base);
|
BUG_ON(!iim_base);
|
||||||
rev = readl(iim_base + MXC_IIMSREV);
|
rev = readl(iim_base + MXC_IIMSREV);
|
||||||
iounmap(iim_base);
|
iounmap(iim_base);
|
||||||
|
@@ -28,6 +28,7 @@ static int mx27_read_cpu_rev(void)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx27-ccm");
|
np = of_find_compatible_node(NULL, NULL, "fsl,imx27-ccm");
|
||||||
ccm_base = of_iomap(np, 0);
|
ccm_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
BUG_ON(!ccm_base);
|
BUG_ON(!ccm_base);
|
||||||
/*
|
/*
|
||||||
* now we have access to the IO registers. As we need
|
* now we have access to the IO registers. As we need
|
||||||
|
@@ -39,6 +39,7 @@ static int mx31_read_cpu_rev(void)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
|
np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
|
||||||
iim_base = of_iomap(np, 0);
|
iim_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
BUG_ON(!iim_base);
|
BUG_ON(!iim_base);
|
||||||
|
|
||||||
/* read SREV register from IIM module */
|
/* read SREV register from IIM module */
|
||||||
|
@@ -21,6 +21,7 @@ static int mx35_read_cpu_rev(void)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim");
|
np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim");
|
||||||
iim_base = of_iomap(np, 0);
|
iim_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
BUG_ON(!iim_base);
|
BUG_ON(!iim_base);
|
||||||
|
|
||||||
rev = imx_readl(iim_base + MXC_IIMSREV);
|
rev = imx_readl(iim_base + MXC_IIMSREV);
|
||||||
|
@@ -28,6 +28,7 @@ static u32 imx5_read_srev_reg(const char *compat)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, compat);
|
np = of_find_compatible_node(NULL, NULL, compat);
|
||||||
iim_base = of_iomap(np, 0);
|
iim_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
WARN_ON(!iim_base);
|
WARN_ON(!iim_base);
|
||||||
|
|
||||||
srev = readl(iim_base + IIM_SREV) & 0xff;
|
srev = readl(iim_base + IIM_SREV) & 0xff;
|
||||||
|
@@ -43,18 +43,21 @@
|
|||||||
static void __iomem *mmp_timer_base = TIMERS_VIRT_BASE;
|
static void __iomem *mmp_timer_base = TIMERS_VIRT_BASE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: the timer needs some delay to stablize the counter capture
|
* Read the timer through the CVWR register. Delay is required after requesting
|
||||||
|
* a read. The CR register cannot be directly read due to metastability issues
|
||||||
|
* documented in the PXA168 software manual.
|
||||||
*/
|
*/
|
||||||
static inline uint32_t timer_read(void)
|
static inline uint32_t timer_read(void)
|
||||||
{
|
{
|
||||||
int delay = 100;
|
uint32_t val;
|
||||||
|
int delay = 3;
|
||||||
|
|
||||||
__raw_writel(1, mmp_timer_base + TMR_CVWR(1));
|
__raw_writel(1, mmp_timer_base + TMR_CVWR(1));
|
||||||
|
|
||||||
while (delay--)
|
while (delay--)
|
||||||
cpu_relax();
|
val = __raw_readl(mmp_timer_base + TMR_CVWR(1));
|
||||||
|
|
||||||
return __raw_readl(mmp_timer_base + TMR_CVWR(1));
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 notrace mmp_read_sched_clock(void)
|
static u64 notrace mmp_read_sched_clock(void)
|
||||||
|
@@ -125,7 +125,7 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
|
|||||||
show_pte(KERN_ALERT, mm, addr);
|
show_pte(KERN_ALERT, mm, addr);
|
||||||
die("Oops", regs, fsr);
|
die("Oops", regs, fsr);
|
||||||
bust_spinlocks(0);
|
bust_spinlocks(0);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -161,7 +161,7 @@ void __init paging_init(const struct machine_desc *mdesc)
|
|||||||
mpu_setup();
|
mpu_setup();
|
||||||
|
|
||||||
/* allocate the zero page. */
|
/* allocate the zero page. */
|
||||||
zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
|
zero_page = (void *)memblock_alloc(PAGE_SIZE, PAGE_SIZE);
|
||||||
if (!zero_page)
|
if (!zero_page)
|
||||||
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
|
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
|
||||||
__func__, PAGE_SIZE, PAGE_SIZE);
|
__func__, PAGE_SIZE, PAGE_SIZE);
|
||||||
|
@@ -11,3 +11,9 @@ nwfpe-y += fpa11.o fpa11_cpdo.o fpa11_cpdt.o \
|
|||||||
entry.o
|
entry.o
|
||||||
|
|
||||||
nwfpe-$(CONFIG_FPE_NWFPE_XP) += extended_cpdo.o
|
nwfpe-$(CONFIG_FPE_NWFPE_XP) += extended_cpdo.o
|
||||||
|
|
||||||
|
# Try really hard to avoid generating calls to __aeabi_uldivmod() from
|
||||||
|
# float64_rem() due to loop elision.
|
||||||
|
ifdef CONFIG_CC_IS_CLANG
|
||||||
|
CFLAGS_softfloat.o += -mllvm -replexitval=never
|
||||||
|
endif
|
||||||
|
@@ -1754,7 +1754,7 @@
|
|||||||
sd_emmc_b: sd@5000 {
|
sd_emmc_b: sd@5000 {
|
||||||
compatible = "amlogic,meson-axg-mmc";
|
compatible = "amlogic,meson-axg-mmc";
|
||||||
reg = <0x0 0x5000 0x0 0x800>;
|
reg = <0x0 0x5000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clkc CLKID_SD_EMMC_B>,
|
clocks = <&clkc CLKID_SD_EMMC_B>,
|
||||||
<&clkc CLKID_SD_EMMC_B_CLK0>,
|
<&clkc CLKID_SD_EMMC_B_CLK0>,
|
||||||
@@ -1766,7 +1766,7 @@
|
|||||||
sd_emmc_c: mmc@7000 {
|
sd_emmc_c: mmc@7000 {
|
||||||
compatible = "amlogic,meson-axg-mmc";
|
compatible = "amlogic,meson-axg-mmc";
|
||||||
reg = <0x0 0x7000 0x0 0x800>;
|
reg = <0x0 0x7000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clkc CLKID_SD_EMMC_C>,
|
clocks = <&clkc CLKID_SD_EMMC_C>,
|
||||||
<&clkc CLKID_SD_EMMC_C_CLK0>,
|
<&clkc CLKID_SD_EMMC_C_CLK0>,
|
||||||
|
@@ -2317,7 +2317,7 @@
|
|||||||
sd_emmc_a: sd@ffe03000 {
|
sd_emmc_a: sd@ffe03000 {
|
||||||
compatible = "amlogic,meson-axg-mmc";
|
compatible = "amlogic,meson-axg-mmc";
|
||||||
reg = <0x0 0xffe03000 0x0 0x800>;
|
reg = <0x0 0xffe03000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clkc CLKID_SD_EMMC_A>,
|
clocks = <&clkc CLKID_SD_EMMC_A>,
|
||||||
<&clkc CLKID_SD_EMMC_A_CLK0>,
|
<&clkc CLKID_SD_EMMC_A_CLK0>,
|
||||||
@@ -2329,7 +2329,7 @@
|
|||||||
sd_emmc_b: sd@ffe05000 {
|
sd_emmc_b: sd@ffe05000 {
|
||||||
compatible = "amlogic,meson-axg-mmc";
|
compatible = "amlogic,meson-axg-mmc";
|
||||||
reg = <0x0 0xffe05000 0x0 0x800>;
|
reg = <0x0 0xffe05000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clkc CLKID_SD_EMMC_B>,
|
clocks = <&clkc CLKID_SD_EMMC_B>,
|
||||||
<&clkc CLKID_SD_EMMC_B_CLK0>,
|
<&clkc CLKID_SD_EMMC_B_CLK0>,
|
||||||
@@ -2341,7 +2341,7 @@
|
|||||||
sd_emmc_c: mmc@ffe07000 {
|
sd_emmc_c: mmc@ffe07000 {
|
||||||
compatible = "amlogic,meson-axg-mmc";
|
compatible = "amlogic,meson-axg-mmc";
|
||||||
reg = <0x0 0xffe07000 0x0 0x800>;
|
reg = <0x0 0xffe07000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clkc CLKID_SD_EMMC_C>,
|
clocks = <&clkc CLKID_SD_EMMC_C>,
|
||||||
<&clkc CLKID_SD_EMMC_C_CLK0>,
|
<&clkc CLKID_SD_EMMC_C_CLK0>,
|
||||||
|
@@ -595,21 +595,21 @@
|
|||||||
sd_emmc_a: mmc@70000 {
|
sd_emmc_a: mmc@70000 {
|
||||||
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
||||||
reg = <0x0 0x70000 0x0 0x800>;
|
reg = <0x0 0x70000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 216 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sd_emmc_b: mmc@72000 {
|
sd_emmc_b: mmc@72000 {
|
||||||
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
||||||
reg = <0x0 0x72000 0x0 0x800>;
|
reg = <0x0 0x72000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sd_emmc_c: mmc@74000 {
|
sd_emmc_c: mmc@74000 {
|
||||||
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
|
||||||
reg = <0x0 0x74000 0x0 0x800>;
|
reg = <0x0 0x74000 0x0 0x800>;
|
||||||
interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -70,7 +70,7 @@
|
|||||||
&ecspi2 {
|
&ecspi2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_espi2>;
|
pinctrl-0 = <&pinctrl_espi2>;
|
||||||
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
|
cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
eeprom@0 {
|
eeprom@0 {
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82
|
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82
|
||||||
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82
|
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82
|
||||||
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82
|
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82
|
||||||
MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x41
|
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x41
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -601,7 +601,7 @@
|
|||||||
#define MX8MM_IOMUXC_UART1_RXD_GPIO5_IO22 0x234 0x49C 0x000 0x5 0x0
|
#define MX8MM_IOMUXC_UART1_RXD_GPIO5_IO22 0x234 0x49C 0x000 0x5 0x0
|
||||||
#define MX8MM_IOMUXC_UART1_RXD_TPSMP_HDATA24 0x234 0x49C 0x000 0x7 0x0
|
#define MX8MM_IOMUXC_UART1_RXD_TPSMP_HDATA24 0x234 0x49C 0x000 0x7 0x0
|
||||||
#define MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x238 0x4A0 0x000 0x0 0x0
|
#define MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x238 0x4A0 0x000 0x0 0x0
|
||||||
#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX 0x238 0x4A0 0x4F4 0x0 0x0
|
#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX 0x238 0x4A0 0x4F4 0x0 0x1
|
||||||
#define MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI 0x238 0x4A0 0x000 0x1 0x0
|
#define MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI 0x238 0x4A0 0x000 0x1 0x0
|
||||||
#define MX8MM_IOMUXC_UART1_TXD_GPIO5_IO23 0x238 0x4A0 0x000 0x5 0x0
|
#define MX8MM_IOMUXC_UART1_TXD_GPIO5_IO23 0x238 0x4A0 0x000 0x5 0x0
|
||||||
#define MX8MM_IOMUXC_UART1_TXD_TPSMP_HDATA25 0x238 0x4A0 0x000 0x7 0x0
|
#define MX8MM_IOMUXC_UART1_TXD_TPSMP_HDATA25 0x238 0x4A0 0x000 0x7 0x0
|
||||||
|
@@ -339,7 +339,7 @@
|
|||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
non-removable;
|
non-removable;
|
||||||
no-sd;
|
no-sd;
|
||||||
no-emmc;
|
no-mmc;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
brcmf: wifi@1 {
|
brcmf: wifi@1 {
|
||||||
@@ -359,7 +359,7 @@
|
|||||||
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
no-emmc;
|
no-mmc;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@@ -124,9 +124,12 @@
|
|||||||
/delete-property/ mrvl,i2c-fast-mode;
|
/delete-property/ mrvl,i2c-fast-mode;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
/* MCP7940MT-I/MNY RTC */
|
||||||
rtc@6f {
|
rtc@6f {
|
||||||
compatible = "microchip,mcp7940x";
|
compatible = "microchip,mcp7940x";
|
||||||
reg = <0x6f>;
|
reg = <0x6f>;
|
||||||
|
interrupt-parent = <&gpiosb>;
|
||||||
|
interrupts = <5 0>; /* GPIO2_5 */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -26,14 +26,14 @@
|
|||||||
stdout-path = "serial0:921600n8";
|
stdout-path = "serial0:921600n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus_fixed_vproc0: fixedregulator@0 {
|
cpus_fixed_vproc0: regulator-vproc-buck0 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vproc_buck0";
|
regulator-name = "vproc_buck0";
|
||||||
regulator-min-microvolt = <1000000>;
|
regulator-min-microvolt = <1000000>;
|
||||||
regulator-max-microvolt = <1000000>;
|
regulator-max-microvolt = <1000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus_fixed_vproc1: fixedregulator@1 {
|
cpus_fixed_vproc1: regulator-vproc-buck1 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vproc_buck1";
|
regulator-name = "vproc_buck1";
|
||||||
regulator-min-microvolt = <1000000>;
|
regulator-min-microvolt = <1000000>;
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
id-gpio = <&pio 14 GPIO_ACTIVE_HIGH>;
|
id-gpio = <&pio 14 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_p0_vbus: regulator@2 {
|
usb_p0_vbus: regulator-usb-p0-vbus {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "p0_vbus";
|
regulator-name = "p0_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
enable-active-high;
|
enable-active-high;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_p1_vbus: regulator@3 {
|
usb_p1_vbus: regulator-usb-p1-vbus {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "p1_vbus";
|
regulator-name = "p1_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
enable-active-high;
|
enable-active-high;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_p2_vbus: regulator@4 {
|
usb_p2_vbus: regulator-usb-p2-vbus {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "p2_vbus";
|
regulator-name = "p2_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
enable-active-high;
|
enable-active-high;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_p3_vbus: regulator@5 {
|
usb_p3_vbus: regulator-usb-p3-vbus {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "p3_vbus";
|
regulator-name = "p3_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
|
@@ -160,70 +160,70 @@
|
|||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
clk26m: oscillator@0 {
|
clk26m: oscillator-26m {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <26000000>;
|
clock-frequency = <26000000>;
|
||||||
clock-output-names = "clk26m";
|
clock-output-names = "clk26m";
|
||||||
};
|
};
|
||||||
|
|
||||||
clk32k: oscillator@1 {
|
clk32k: oscillator-32k {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <32768>;
|
clock-frequency = <32768>;
|
||||||
clock-output-names = "clk32k";
|
clock-output-names = "clk32k";
|
||||||
};
|
};
|
||||||
|
|
||||||
clkfpc: oscillator@2 {
|
clkfpc: oscillator-50m {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <50000000>;
|
clock-frequency = <50000000>;
|
||||||
clock-output-names = "clkfpc";
|
clock-output-names = "clkfpc";
|
||||||
};
|
};
|
||||||
|
|
||||||
clkaud_ext_i_0: oscillator@3 {
|
clkaud_ext_i_0: oscillator-aud0 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <6500000>;
|
clock-frequency = <6500000>;
|
||||||
clock-output-names = "clkaud_ext_i_0";
|
clock-output-names = "clkaud_ext_i_0";
|
||||||
};
|
};
|
||||||
|
|
||||||
clkaud_ext_i_1: oscillator@4 {
|
clkaud_ext_i_1: oscillator-aud1 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <196608000>;
|
clock-frequency = <196608000>;
|
||||||
clock-output-names = "clkaud_ext_i_1";
|
clock-output-names = "clkaud_ext_i_1";
|
||||||
};
|
};
|
||||||
|
|
||||||
clkaud_ext_i_2: oscillator@5 {
|
clkaud_ext_i_2: oscillator-aud2 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <180633600>;
|
clock-frequency = <180633600>;
|
||||||
clock-output-names = "clkaud_ext_i_2";
|
clock-output-names = "clkaud_ext_i_2";
|
||||||
};
|
};
|
||||||
|
|
||||||
clki2si0_mck_i: oscillator@6 {
|
clki2si0_mck_i: oscillator-i2s0 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <30000000>;
|
clock-frequency = <30000000>;
|
||||||
clock-output-names = "clki2si0_mck_i";
|
clock-output-names = "clki2si0_mck_i";
|
||||||
};
|
};
|
||||||
|
|
||||||
clki2si1_mck_i: oscillator@7 {
|
clki2si1_mck_i: oscillator-i2s1 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <30000000>;
|
clock-frequency = <30000000>;
|
||||||
clock-output-names = "clki2si1_mck_i";
|
clock-output-names = "clki2si1_mck_i";
|
||||||
};
|
};
|
||||||
|
|
||||||
clki2si2_mck_i: oscillator@8 {
|
clki2si2_mck_i: oscillator-i2s2 {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <30000000>;
|
clock-frequency = <30000000>;
|
||||||
clock-output-names = "clki2si2_mck_i";
|
clock-output-names = "clki2si2_mck_i";
|
||||||
};
|
};
|
||||||
|
|
||||||
clktdmin_mclk_i: oscillator@9 {
|
clktdmin_mclk_i: oscillator-mclk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <30000000>;
|
clock-frequency = <30000000>;
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
reg = <0 0x10005000 0 0x1000>;
|
reg = <0 0x10005000 0 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pio: pinctrl@10005000 {
|
pio: pinctrl@1000b000 {
|
||||||
compatible = "mediatek,mt2712-pinctrl";
|
compatible = "mediatek,mt2712-pinctrl";
|
||||||
reg = <0 0x1000b000 0 0x1000>;
|
reg = <0 0x1000b000 0 0x1000>;
|
||||||
mediatek,pctl-regmap = <&syscfg_pctl_a>;
|
mediatek,pctl-regmap = <&syscfg_pctl_a>;
|
||||||
|
@@ -95,7 +95,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
clk26m: oscillator@0 {
|
clk26m: oscillator-26m {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <26000000>;
|
clock-frequency = <26000000>;
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
firmware {
|
firmware {
|
||||||
optee: optee@4fd00000 {
|
optee: optee {
|
||||||
compatible = "linaro,optee-tz";
|
compatible = "linaro,optee-tz";
|
||||||
method = "smc";
|
method = "smc";
|
||||||
};
|
};
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0_pins_a: i2c0@0 {
|
i2c0_pins_a: i2c0 {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <MT8516_PIN_58_SDA0__FUNC_SDA0_0>,
|
pinmux = <MT8516_PIN_58_SDA0__FUNC_SDA0_0>,
|
||||||
<MT8516_PIN_59_SCL0__FUNC_SCL0_0>;
|
<MT8516_PIN_59_SCL0__FUNC_SCL0_0>;
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c2_pins_a: i2c2@0 {
|
i2c2_pins_a: i2c2 {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <MT8516_PIN_60_SDA2__FUNC_SDA2_0>,
|
pinmux = <MT8516_PIN_60_SDA2__FUNC_SDA2_0>,
|
||||||
<MT8516_PIN_61_SCL2__FUNC_SCL2_0>;
|
<MT8516_PIN_61_SCL2__FUNC_SCL2_0>;
|
||||||
|
@@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
&spi_0 {
|
&spi_0 {
|
||||||
cs-select = <0>;
|
cs-select = <0>;
|
||||||
|
pinctrl-0 = <&spi_0_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
m25p80@0 {
|
m25p80@0 {
|
||||||
|
@@ -1249,7 +1249,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mpss: remoteproc@4080000 {
|
mpss: remoteproc@4080000 {
|
||||||
compatible = "qcom,msm8916-mss-pil", "qcom,q6v5-pil";
|
compatible = "qcom,msm8916-mss-pil";
|
||||||
reg = <0x04080000 0x100>,
|
reg = <0x04080000 0x100>,
|
||||||
<0x04020000 0x040>;
|
<0x04020000 0x040>;
|
||||||
|
|
||||||
|
@@ -651,17 +651,17 @@
|
|||||||
compatible ="operating-points-v2";
|
compatible ="operating-points-v2";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 624Mhz and 560Mhz are only available on speed
|
* 624Mhz is only available on speed bins 0 and 3.
|
||||||
* bin (1 << 0). All the rest are available on
|
* 560Mhz is only available on speed bins 0, 2 and 3.
|
||||||
* all bins of the hardware
|
* All the rest are available on all bins of the hardware.
|
||||||
*/
|
*/
|
||||||
opp-624000000 {
|
opp-624000000 {
|
||||||
opp-hz = /bits/ 64 <624000000>;
|
opp-hz = /bits/ 64 <624000000>;
|
||||||
opp-supported-hw = <0x01>;
|
opp-supported-hw = <0x09>;
|
||||||
};
|
};
|
||||||
opp-560000000 {
|
opp-560000000 {
|
||||||
opp-hz = /bits/ 64 <560000000>;
|
opp-hz = /bits/ 64 <560000000>;
|
||||||
opp-supported-hw = <0x01>;
|
opp-supported-hw = <0x0d>;
|
||||||
};
|
};
|
||||||
opp-510000000 {
|
opp-510000000 {
|
||||||
opp-hz = /bits/ 64 <510000000>;
|
opp-hz = /bits/ 64 <510000000>;
|
||||||
|
@@ -593,7 +593,7 @@
|
|||||||
pins = "gpio17", "gpio18", "gpio19";
|
pins = "gpio17", "gpio18", "gpio19";
|
||||||
function = "gpio";
|
function = "gpio";
|
||||||
drive-strength = <2>;
|
drive-strength = <2>;
|
||||||
bias-no-pull;
|
bias-disable;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1292,7 +1292,7 @@ ap_ts_i2c: &i2c14 {
|
|||||||
config {
|
config {
|
||||||
pins = "gpio126";
|
pins = "gpio126";
|
||||||
function = "gpio";
|
function = "gpio";
|
||||||
bias-no-pull;
|
bias-disable;
|
||||||
drive-strength = <2>;
|
drive-strength = <2>;
|
||||||
output-low;
|
output-low;
|
||||||
};
|
};
|
||||||
@@ -1302,7 +1302,7 @@ ap_ts_i2c: &i2c14 {
|
|||||||
config {
|
config {
|
||||||
pins = "gpio126";
|
pins = "gpio126";
|
||||||
function = "gpio";
|
function = "gpio";
|
||||||
bias-no-pull;
|
bias-disable;
|
||||||
drive-strength = <2>;
|
drive-strength = <2>;
|
||||||
output-high;
|
output-high;
|
||||||
};
|
};
|
||||||
|
@@ -1045,7 +1045,10 @@
|
|||||||
|
|
||||||
/* PINCTRL - additions to nodes defined in sdm845.dtsi */
|
/* PINCTRL - additions to nodes defined in sdm845.dtsi */
|
||||||
&qup_spi2_default {
|
&qup_spi2_default {
|
||||||
|
pinconf {
|
||||||
|
pins = "gpio27", "gpio28", "gpio29", "gpio30";
|
||||||
drive-strength = <16>;
|
drive-strength = <16>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&qup_uart3_default{
|
&qup_uart3_default{
|
||||||
|
@@ -322,8 +322,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&qup_i2c12_default {
|
&qup_i2c12_default {
|
||||||
|
pinmux {
|
||||||
drive-strength = <2>;
|
drive-strength = <2>;
|
||||||
bias-disable;
|
bias-disable;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&qup_uart6_default {
|
&qup_uart6_default {
|
||||||
|
@@ -127,7 +127,6 @@
|
|||||||
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
|
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
|
||||||
<&main_udmap 0x4001>;
|
<&main_udmap 0x4001>;
|
||||||
dma-names = "tx", "rx1", "rx2";
|
dma-names = "tx", "rx1", "rx2";
|
||||||
dma-coherent;
|
|
||||||
|
|
||||||
rng: rng@4e10000 {
|
rng: rng@4e10000 {
|
||||||
compatible = "inside-secure,safexcel-eip76";
|
compatible = "inside-secure,safexcel-eip76";
|
||||||
|
@@ -367,7 +367,6 @@
|
|||||||
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
|
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>,
|
||||||
<&main_udmap 0x4001>;
|
<&main_udmap 0x4001>;
|
||||||
dma-names = "tx", "rx1", "rx2";
|
dma-names = "tx", "rx1", "rx2";
|
||||||
dma-coherent;
|
|
||||||
|
|
||||||
rng: rng@4e10000 {
|
rng: rng@4e10000 {
|
||||||
compatible = "inside-secure,safexcel-eip76";
|
compatible = "inside-secure,safexcel-eip76";
|
||||||
|
@@ -12,19 +12,6 @@
|
|||||||
|
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ARM64_LSE_ATOMICS
|
|
||||||
#define __LL_SC_FALLBACK(asm_ops) \
|
|
||||||
" b 3f\n" \
|
|
||||||
" .subsection 1\n" \
|
|
||||||
"3:\n" \
|
|
||||||
asm_ops "\n" \
|
|
||||||
" b 4f\n" \
|
|
||||||
" .previous\n" \
|
|
||||||
"4:\n"
|
|
||||||
#else
|
|
||||||
#define __LL_SC_FALLBACK(asm_ops) asm_ops
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CONFIG_CC_HAS_K_CONSTRAINT
|
#ifndef CONFIG_CC_HAS_K_CONSTRAINT
|
||||||
#define K
|
#define K
|
||||||
#endif
|
#endif
|
||||||
@@ -43,12 +30,11 @@ __ll_sc_atomic_##op(int i, atomic_t *v) \
|
|||||||
int result; \
|
int result; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic_" #op "\n" \
|
asm volatile("// atomic_" #op "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %2\n" \
|
||||||
" prfm pstl1strm, %2\n" \
|
"1: ldxr %w0, %2\n" \
|
||||||
"1: ldxr %w0, %2\n" \
|
" " #asm_op " %w0, %w0, %w3\n" \
|
||||||
" " #asm_op " %w0, %w0, %w3\n" \
|
" stxr %w1, %w0, %2\n" \
|
||||||
" stxr %w1, %w0, %2\n" \
|
" cbnz %w1, 1b\n" \
|
||||||
" cbnz %w1, 1b\n") \
|
|
||||||
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i)); \
|
: __stringify(constraint) "r" (i)); \
|
||||||
}
|
}
|
||||||
@@ -61,13 +47,12 @@ __ll_sc_atomic_##op##_return##name(int i, atomic_t *v) \
|
|||||||
int result; \
|
int result; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic_" #op "_return" #name "\n" \
|
asm volatile("// atomic_" #op "_return" #name "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %2\n" \
|
||||||
" prfm pstl1strm, %2\n" \
|
"1: ld" #acq "xr %w0, %2\n" \
|
||||||
"1: ld" #acq "xr %w0, %2\n" \
|
" " #asm_op " %w0, %w0, %w3\n" \
|
||||||
" " #asm_op " %w0, %w0, %w3\n" \
|
" st" #rel "xr %w1, %w0, %2\n" \
|
||||||
" st" #rel "xr %w1, %w0, %2\n" \
|
" cbnz %w1, 1b\n" \
|
||||||
" cbnz %w1, 1b\n" \
|
" " #mb \
|
||||||
" " #mb ) \
|
|
||||||
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i) \
|
: __stringify(constraint) "r" (i) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -83,13 +68,12 @@ __ll_sc_atomic_fetch_##op##name(int i, atomic_t *v) \
|
|||||||
int val, result; \
|
int val, result; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic_fetch_" #op #name "\n" \
|
asm volatile("// atomic_fetch_" #op #name "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %3\n" \
|
||||||
" prfm pstl1strm, %3\n" \
|
"1: ld" #acq "xr %w0, %3\n" \
|
||||||
"1: ld" #acq "xr %w0, %3\n" \
|
" " #asm_op " %w1, %w0, %w4\n" \
|
||||||
" " #asm_op " %w1, %w0, %w4\n" \
|
" st" #rel "xr %w2, %w1, %3\n" \
|
||||||
" st" #rel "xr %w2, %w1, %3\n" \
|
" cbnz %w2, 1b\n" \
|
||||||
" cbnz %w2, 1b\n" \
|
" " #mb \
|
||||||
" " #mb ) \
|
|
||||||
: "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i) \
|
: __stringify(constraint) "r" (i) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -142,12 +126,11 @@ __ll_sc_atomic64_##op(s64 i, atomic64_t *v) \
|
|||||||
unsigned long tmp; \
|
unsigned long tmp; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic64_" #op "\n" \
|
asm volatile("// atomic64_" #op "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %2\n" \
|
||||||
" prfm pstl1strm, %2\n" \
|
"1: ldxr %0, %2\n" \
|
||||||
"1: ldxr %0, %2\n" \
|
" " #asm_op " %0, %0, %3\n" \
|
||||||
" " #asm_op " %0, %0, %3\n" \
|
" stxr %w1, %0, %2\n" \
|
||||||
" stxr %w1, %0, %2\n" \
|
" cbnz %w1, 1b" \
|
||||||
" cbnz %w1, 1b") \
|
|
||||||
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i)); \
|
: __stringify(constraint) "r" (i)); \
|
||||||
}
|
}
|
||||||
@@ -160,13 +143,12 @@ __ll_sc_atomic64_##op##_return##name(s64 i, atomic64_t *v) \
|
|||||||
unsigned long tmp; \
|
unsigned long tmp; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic64_" #op "_return" #name "\n" \
|
asm volatile("// atomic64_" #op "_return" #name "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %2\n" \
|
||||||
" prfm pstl1strm, %2\n" \
|
"1: ld" #acq "xr %0, %2\n" \
|
||||||
"1: ld" #acq "xr %0, %2\n" \
|
" " #asm_op " %0, %0, %3\n" \
|
||||||
" " #asm_op " %0, %0, %3\n" \
|
" st" #rel "xr %w1, %0, %2\n" \
|
||||||
" st" #rel "xr %w1, %0, %2\n" \
|
" cbnz %w1, 1b\n" \
|
||||||
" cbnz %w1, 1b\n" \
|
" " #mb \
|
||||||
" " #mb ) \
|
|
||||||
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i) \
|
: __stringify(constraint) "r" (i) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -182,13 +164,12 @@ __ll_sc_atomic64_fetch_##op##name(s64 i, atomic64_t *v) \
|
|||||||
unsigned long tmp; \
|
unsigned long tmp; \
|
||||||
\
|
\
|
||||||
asm volatile("// atomic64_fetch_" #op #name "\n" \
|
asm volatile("// atomic64_fetch_" #op #name "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
" prfm pstl1strm, %3\n" \
|
||||||
" prfm pstl1strm, %3\n" \
|
"1: ld" #acq "xr %0, %3\n" \
|
||||||
"1: ld" #acq "xr %0, %3\n" \
|
" " #asm_op " %1, %0, %4\n" \
|
||||||
" " #asm_op " %1, %0, %4\n" \
|
" st" #rel "xr %w2, %1, %3\n" \
|
||||||
" st" #rel "xr %w2, %1, %3\n" \
|
" cbnz %w2, 1b\n" \
|
||||||
" cbnz %w2, 1b\n" \
|
" " #mb \
|
||||||
" " #mb ) \
|
|
||||||
: "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter) \
|
: "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter) \
|
||||||
: __stringify(constraint) "r" (i) \
|
: __stringify(constraint) "r" (i) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -240,15 +221,14 @@ __ll_sc_atomic64_dec_if_positive(atomic64_t *v)
|
|||||||
unsigned long tmp;
|
unsigned long tmp;
|
||||||
|
|
||||||
asm volatile("// atomic64_dec_if_positive\n"
|
asm volatile("// atomic64_dec_if_positive\n"
|
||||||
__LL_SC_FALLBACK(
|
" prfm pstl1strm, %2\n"
|
||||||
" prfm pstl1strm, %2\n"
|
"1: ldxr %0, %2\n"
|
||||||
"1: ldxr %0, %2\n"
|
" subs %0, %0, #1\n"
|
||||||
" subs %0, %0, #1\n"
|
" b.lt 2f\n"
|
||||||
" b.lt 2f\n"
|
" stlxr %w1, %0, %2\n"
|
||||||
" stlxr %w1, %0, %2\n"
|
" cbnz %w1, 1b\n"
|
||||||
" cbnz %w1, 1b\n"
|
" dmb ish\n"
|
||||||
" dmb ish\n"
|
"2:"
|
||||||
"2:")
|
|
||||||
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
|
: "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
|
||||||
:
|
:
|
||||||
: "cc", "memory");
|
: "cc", "memory");
|
||||||
@@ -274,7 +254,6 @@ __ll_sc__cmpxchg_case_##name##sz(volatile void *ptr, \
|
|||||||
old = (u##sz)old; \
|
old = (u##sz)old; \
|
||||||
\
|
\
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
__LL_SC_FALLBACK( \
|
|
||||||
" prfm pstl1strm, %[v]\n" \
|
" prfm pstl1strm, %[v]\n" \
|
||||||
"1: ld" #acq "xr" #sfx "\t%" #w "[oldval], %[v]\n" \
|
"1: ld" #acq "xr" #sfx "\t%" #w "[oldval], %[v]\n" \
|
||||||
" eor %" #w "[tmp], %" #w "[oldval], %" #w "[old]\n" \
|
" eor %" #w "[tmp], %" #w "[oldval], %" #w "[old]\n" \
|
||||||
@@ -282,7 +261,7 @@ __ll_sc__cmpxchg_case_##name##sz(volatile void *ptr, \
|
|||||||
" st" #rel "xr" #sfx "\t%w[tmp], %" #w "[new], %[v]\n" \
|
" st" #rel "xr" #sfx "\t%w[tmp], %" #w "[new], %[v]\n" \
|
||||||
" cbnz %w[tmp], 1b\n" \
|
" cbnz %w[tmp], 1b\n" \
|
||||||
" " #mb "\n" \
|
" " #mb "\n" \
|
||||||
"2:") \
|
"2:" \
|
||||||
: [tmp] "=&r" (tmp), [oldval] "=&r" (oldval), \
|
: [tmp] "=&r" (tmp), [oldval] "=&r" (oldval), \
|
||||||
[v] "+Q" (*(u##sz *)ptr) \
|
[v] "+Q" (*(u##sz *)ptr) \
|
||||||
: [old] __stringify(constraint) "r" (old), [new] "r" (new) \
|
: [old] __stringify(constraint) "r" (old), [new] "r" (new) \
|
||||||
@@ -326,7 +305,6 @@ __ll_sc__cmpxchg_double##name(unsigned long old1, \
|
|||||||
unsigned long tmp, ret; \
|
unsigned long tmp, ret; \
|
||||||
\
|
\
|
||||||
asm volatile("// __cmpxchg_double" #name "\n" \
|
asm volatile("// __cmpxchg_double" #name "\n" \
|
||||||
__LL_SC_FALLBACK( \
|
|
||||||
" prfm pstl1strm, %2\n" \
|
" prfm pstl1strm, %2\n" \
|
||||||
"1: ldxp %0, %1, %2\n" \
|
"1: ldxp %0, %1, %2\n" \
|
||||||
" eor %0, %0, %3\n" \
|
" eor %0, %0, %3\n" \
|
||||||
@@ -336,8 +314,8 @@ __ll_sc__cmpxchg_double##name(unsigned long old1, \
|
|||||||
" st" #rel "xp %w0, %5, %6, %2\n" \
|
" st" #rel "xp %w0, %5, %6, %2\n" \
|
||||||
" cbnz %w0, 1b\n" \
|
" cbnz %w0, 1b\n" \
|
||||||
" " #mb "\n" \
|
" " #mb "\n" \
|
||||||
"2:") \
|
"2:" \
|
||||||
: "=&r" (tmp), "=&r" (ret), "+Q" (*(unsigned long *)ptr) \
|
: "=&r" (tmp), "=&r" (ret), "+Q" (*(__uint128_t *)ptr) \
|
||||||
: "r" (old1), "r" (old2), "r" (new1), "r" (new2) \
|
: "r" (old1), "r" (old2), "r" (new1), "r" (new2) \
|
||||||
: cl); \
|
: cl); \
|
||||||
\
|
\
|
||||||
|
@@ -15,7 +15,7 @@ static inline void __lse_atomic_##op(int i, atomic_t *v) \
|
|||||||
{ \
|
{ \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
__LSE_PREAMBLE \
|
__LSE_PREAMBLE \
|
||||||
" " #asm_op " %w[i], %[v]\n" \
|
" " #asm_op " %w[i], %[v]\n" \
|
||||||
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
||||||
: "r" (v)); \
|
: "r" (v)); \
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ static inline int __lse_atomic_fetch_##op##name(int i, atomic_t *v) \
|
|||||||
{ \
|
{ \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
__LSE_PREAMBLE \
|
__LSE_PREAMBLE \
|
||||||
" " #asm_op #mb " %w[i], %w[i], %[v]" \
|
" " #asm_op #mb " %w[i], %w[i], %[v]" \
|
||||||
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
||||||
: "r" (v) \
|
: "r" (v) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -168,7 +168,7 @@ static inline void __lse_atomic64_##op(s64 i, atomic64_t *v) \
|
|||||||
{ \
|
{ \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
__LSE_PREAMBLE \
|
__LSE_PREAMBLE \
|
||||||
" " #asm_op " %[i], %[v]\n" \
|
" " #asm_op " %[i], %[v]\n" \
|
||||||
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
||||||
: "r" (v)); \
|
: "r" (v)); \
|
||||||
}
|
}
|
||||||
@@ -185,7 +185,7 @@ static inline long __lse_atomic64_fetch_##op##name(s64 i, atomic64_t *v)\
|
|||||||
{ \
|
{ \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
__LSE_PREAMBLE \
|
__LSE_PREAMBLE \
|
||||||
" " #asm_op #mb " %[i], %[i], %[v]" \
|
" " #asm_op #mb " %[i], %[i], %[v]" \
|
||||||
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
: [i] "+r" (i), [v] "+Q" (v->counter) \
|
||||||
: "r" (v) \
|
: "r" (v) \
|
||||||
: cl); \
|
: cl); \
|
||||||
@@ -272,7 +272,7 @@ static inline void __lse_atomic64_sub(s64 i, atomic64_t *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define ATOMIC64_OP_SUB_RETURN(name, mb, cl...) \
|
#define ATOMIC64_OP_SUB_RETURN(name, mb, cl...) \
|
||||||
static inline long __lse_atomic64_sub_return##name(s64 i, atomic64_t *v) \
|
static inline long __lse_atomic64_sub_return##name(s64 i, atomic64_t *v)\
|
||||||
{ \
|
{ \
|
||||||
unsigned long tmp; \
|
unsigned long tmp; \
|
||||||
\
|
\
|
||||||
@@ -403,7 +403,7 @@ __lse__cmpxchg_double##name(unsigned long old1, \
|
|||||||
" eor %[old2], %[old2], %[oldval2]\n" \
|
" eor %[old2], %[old2], %[oldval2]\n" \
|
||||||
" orr %[old1], %[old1], %[old2]" \
|
" orr %[old1], %[old1], %[old2]" \
|
||||||
: [old1] "+&r" (x0), [old2] "+&r" (x1), \
|
: [old1] "+&r" (x0), [old2] "+&r" (x1), \
|
||||||
[v] "+Q" (*(unsigned long *)ptr) \
|
[v] "+Q" (*(__uint128_t *)ptr) \
|
||||||
: [new1] "r" (x2), [new2] "r" (x3), [ptr] "r" (x4), \
|
: [new1] "r" (x2), [new2] "r" (x3), [ptr] "r" (x4), \
|
||||||
[oldval1] "r" (oldval1), [oldval2] "r" (oldval2) \
|
[oldval1] "r" (oldval1), [oldval2] "r" (oldval2) \
|
||||||
: cl); \
|
: cl); \
|
||||||
|
@@ -363,8 +363,26 @@ static __always_inline int kvm_vcpu_sys_get_rt(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
static inline bool kvm_is_write_fault(struct kvm_vcpu *vcpu)
|
static inline bool kvm_is_write_fault(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
if (kvm_vcpu_abt_iss1tw(vcpu))
|
if (kvm_vcpu_abt_iss1tw(vcpu)) {
|
||||||
|
/*
|
||||||
|
* Only a permission fault on a S1PTW should be
|
||||||
|
* considered as a write. Otherwise, page tables baked
|
||||||
|
* in a read-only memslot will result in an exception
|
||||||
|
* being delivered in the guest.
|
||||||
|
*
|
||||||
|
* The drawback is that we end-up faulting twice if the
|
||||||
|
* guest is using any of HW AF/DB: a translation fault
|
||||||
|
* to map the page containing the PT (read only at
|
||||||
|
* first), then a permission fault to allow the flags
|
||||||
|
* to be set.
|
||||||
|
*/
|
||||||
|
switch (kvm_vcpu_trap_get_fault_type(vcpu)) {
|
||||||
|
case ESR_ELx_FSC_PERM:
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (kvm_vcpu_trap_is_iabt(vcpu))
|
if (kvm_vcpu_trap_is_iabt(vcpu))
|
||||||
return false;
|
return false;
|
||||||
|
@@ -40,7 +40,9 @@ void mte_sync_tags(pte_t *ptep, pte_t pte);
|
|||||||
void mte_copy_page_tags(void *kto, const void *kfrom);
|
void mte_copy_page_tags(void *kto, const void *kfrom);
|
||||||
void mte_thread_init_user(void);
|
void mte_thread_init_user(void);
|
||||||
void mte_thread_switch(struct task_struct *next);
|
void mte_thread_switch(struct task_struct *next);
|
||||||
|
void mte_cpu_setup(void);
|
||||||
void mte_suspend_enter(void);
|
void mte_suspend_enter(void);
|
||||||
|
void mte_suspend_exit(void);
|
||||||
long set_mte_ctrl(struct task_struct *task, unsigned long arg);
|
long set_mte_ctrl(struct task_struct *task, unsigned long arg);
|
||||||
long get_mte_ctrl(struct task_struct *task);
|
long get_mte_ctrl(struct task_struct *task);
|
||||||
int mte_ptrace_copy_tags(struct task_struct *child, long request,
|
int mte_ptrace_copy_tags(struct task_struct *child, long request,
|
||||||
@@ -69,6 +71,9 @@ static inline void mte_thread_switch(struct task_struct *next)
|
|||||||
static inline void mte_suspend_enter(void)
|
static inline void mte_suspend_enter(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline void mte_suspend_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
static inline long set_mte_ctrl(struct task_struct *task, unsigned long arg)
|
static inline long set_mte_ctrl(struct task_struct *task, unsigned long arg)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -243,13 +243,13 @@ static inline void compat_start_thread(struct pt_regs *regs, unsigned long pc,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline bool is_ttbr0_addr(unsigned long addr)
|
static __always_inline bool is_ttbr0_addr(unsigned long addr)
|
||||||
{
|
{
|
||||||
/* entry assembly clears tags for TTBR0 addrs */
|
/* entry assembly clears tags for TTBR0 addrs */
|
||||||
return addr < TASK_SIZE;
|
return addr < TASK_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool is_ttbr1_addr(unsigned long addr)
|
static __always_inline bool is_ttbr1_addr(unsigned long addr)
|
||||||
{
|
{
|
||||||
/* TTBR1 addresses may have a tag if KASAN_SW_TAGS is in use */
|
/* TTBR1 addresses may have a tag if KASAN_SW_TAGS is in use */
|
||||||
return arch_kasan_reset_tag(addr) >= PAGE_OFFSET;
|
return arch_kasan_reset_tag(addr) >= PAGE_OFFSET;
|
||||||
|
@@ -1870,7 +1870,8 @@ static void bti_enable(const struct arm64_cpu_capabilities *__unused)
|
|||||||
static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap)
|
static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap)
|
||||||
{
|
{
|
||||||
sysreg_clear_set(sctlr_el1, 0, SCTLR_ELx_ATA | SCTLR_EL1_ATA0);
|
sysreg_clear_set(sctlr_el1, 0, SCTLR_ELx_ATA | SCTLR_EL1_ATA0);
|
||||||
isb();
|
|
||||||
|
mte_cpu_setup();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear the tags in the zero page. This needs to be done via the
|
* Clear the tags in the zero page. This needs to be done via the
|
||||||
|
@@ -242,6 +242,49 @@ void mte_thread_switch(struct task_struct *next)
|
|||||||
mte_check_tfsr_el1();
|
mte_check_tfsr_el1();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mte_cpu_setup(void)
|
||||||
|
{
|
||||||
|
u64 rgsr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CnP must be enabled only after the MAIR_EL1 register has been set
|
||||||
|
* up. Inconsistent MAIR_EL1 between CPUs sharing the same TLB may
|
||||||
|
* lead to the wrong memory type being used for a brief window during
|
||||||
|
* CPU power-up.
|
||||||
|
*
|
||||||
|
* CnP is not a boot feature so MTE gets enabled before CnP, but let's
|
||||||
|
* make sure that is the case.
|
||||||
|
*/
|
||||||
|
BUG_ON(read_sysreg(ttbr0_el1) & TTBR_CNP_BIT);
|
||||||
|
BUG_ON(read_sysreg(ttbr1_el1) & TTBR_CNP_BIT);
|
||||||
|
|
||||||
|
/* Normal Tagged memory type at the corresponding MAIR index */
|
||||||
|
sysreg_clear_set(mair_el1,
|
||||||
|
MAIR_ATTRIDX(MAIR_ATTR_MASK, MT_NORMAL_TAGGED),
|
||||||
|
MAIR_ATTRIDX(MAIR_ATTR_NORMAL_TAGGED,
|
||||||
|
MT_NORMAL_TAGGED));
|
||||||
|
|
||||||
|
write_sysreg_s(KERNEL_GCR_EL1, SYS_GCR_EL1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If GCR_EL1.RRND=1 is implemented the same way as RRND=0, then
|
||||||
|
* RGSR_EL1.SEED must be non-zero for IRG to produce
|
||||||
|
* pseudorandom numbers. As RGSR_EL1 is UNKNOWN out of reset, we
|
||||||
|
* must initialize it.
|
||||||
|
*/
|
||||||
|
rgsr = (read_sysreg(CNTVCT_EL0) & SYS_RGSR_EL1_SEED_MASK) <<
|
||||||
|
SYS_RGSR_EL1_SEED_SHIFT;
|
||||||
|
if (rgsr == 0)
|
||||||
|
rgsr = 1 << SYS_RGSR_EL1_SEED_SHIFT;
|
||||||
|
write_sysreg_s(rgsr, SYS_RGSR_EL1);
|
||||||
|
|
||||||
|
/* clear any pending tag check faults in TFSR*_EL1 */
|
||||||
|
write_sysreg_s(0, SYS_TFSR_EL1);
|
||||||
|
write_sysreg_s(0, SYS_TFSRE0_EL1);
|
||||||
|
|
||||||
|
local_flush_tlb_all();
|
||||||
|
}
|
||||||
|
|
||||||
void mte_suspend_enter(void)
|
void mte_suspend_enter(void)
|
||||||
{
|
{
|
||||||
if (!system_supports_mte())
|
if (!system_supports_mte())
|
||||||
@@ -258,6 +301,14 @@ void mte_suspend_enter(void)
|
|||||||
mte_check_tfsr_el1();
|
mte_check_tfsr_el1();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mte_suspend_exit(void)
|
||||||
|
{
|
||||||
|
if (!system_supports_mte())
|
||||||
|
return;
|
||||||
|
|
||||||
|
mte_cpu_setup();
|
||||||
|
}
|
||||||
|
|
||||||
long set_mte_ctrl(struct task_struct *task, unsigned long arg)
|
long set_mte_ctrl(struct task_struct *task, unsigned long arg)
|
||||||
{
|
{
|
||||||
u64 mte_ctrl = (~((arg & PR_MTE_TAG_MASK) >> PR_MTE_TAG_SHIFT) &
|
u64 mte_ctrl = (~((arg & PR_MTE_TAG_MASK) >> PR_MTE_TAG_SHIFT) &
|
||||||
|
@@ -42,6 +42,8 @@ void notrace __cpu_suspend_exit(void)
|
|||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
|
mte_suspend_exit();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are resuming from reset with the idmap active in TTBR0_EL1.
|
* We are resuming from reset with the idmap active in TTBR0_EL1.
|
||||||
* We must uninstall the idmap and restore the expected MMU
|
* We must uninstall the idmap and restore the expected MMU
|
||||||
|
@@ -146,7 +146,7 @@ void die(const char *str, struct pt_regs *regs, int err)
|
|||||||
raw_spin_unlock_irqrestore(&die_lock, flags);
|
raw_spin_unlock_irqrestore(&die_lock, flags);
|
||||||
|
|
||||||
if (ret != NOTIFY_STOP)
|
if (ret != NOTIFY_STOP)
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arm64_show_signal(int signo, const char *str)
|
static void arm64_show_signal(int signo, const char *str)
|
||||||
|
@@ -299,7 +299,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,
|
|||||||
show_pte(addr);
|
show_pte(addr);
|
||||||
die("Oops", regs, esr);
|
die("Oops", regs, esr);
|
||||||
bust_spinlocks(0);
|
bust_spinlocks(0);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KASAN_HW_TAGS
|
#ifdef CONFIG_KASAN_HW_TAGS
|
||||||
|
@@ -47,17 +47,19 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_KASAN_HW_TAGS
|
#ifdef CONFIG_KASAN_HW_TAGS
|
||||||
#define TCR_MTE_FLAGS SYS_TCR_EL1_TCMA1 | TCR_TBI1 | TCR_TBID1
|
#define TCR_MTE_FLAGS SYS_TCR_EL1_TCMA1 | TCR_TBI1 | TCR_TBID1
|
||||||
#else
|
#elif defined(CONFIG_ARM64_MTE)
|
||||||
/*
|
/*
|
||||||
* The mte_zero_clear_page_tags() implementation uses DC GZVA, which relies on
|
* The mte_zero_clear_page_tags() implementation uses DC GZVA, which relies on
|
||||||
* TBI being enabled at EL1.
|
* TBI being enabled at EL1.
|
||||||
*/
|
*/
|
||||||
#define TCR_MTE_FLAGS TCR_TBI1 | TCR_TBID1
|
#define TCR_MTE_FLAGS TCR_TBI1 | TCR_TBID1
|
||||||
|
#else
|
||||||
|
#define TCR_MTE_FLAGS 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default MAIR_EL1. MT_NORMAL_TAGGED is initially mapped as Normal memory and
|
* Default MAIR_EL1. MT_NORMAL_TAGGED is initially mapped as Normal memory and
|
||||||
* changed during __cpu_setup to Normal Tagged if the system supports MTE.
|
* changed during mte_cpu_setup to Normal Tagged if the system supports MTE.
|
||||||
*/
|
*/
|
||||||
#define MAIR_EL1_SET \
|
#define MAIR_EL1_SET \
|
||||||
(MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRnE) | \
|
(MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRnE) | \
|
||||||
@@ -427,47 +429,6 @@ SYM_FUNC_START(__cpu_setup)
|
|||||||
* Memory region attributes
|
* Memory region attributes
|
||||||
*/
|
*/
|
||||||
mov_q x5, MAIR_EL1_SET
|
mov_q x5, MAIR_EL1_SET
|
||||||
#ifdef CONFIG_ARM64_MTE
|
|
||||||
mte_tcr .req x20
|
|
||||||
|
|
||||||
mov mte_tcr, #0
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Update MAIR_EL1, GCR_EL1 and TFSR*_EL1 if MTE is supported
|
|
||||||
* (ID_AA64PFR1_EL1[11:8] > 1).
|
|
||||||
*/
|
|
||||||
mrs x10, ID_AA64PFR1_EL1
|
|
||||||
ubfx x10, x10, #ID_AA64PFR1_MTE_SHIFT, #4
|
|
||||||
cmp x10, #ID_AA64PFR1_MTE
|
|
||||||
b.lt 1f
|
|
||||||
|
|
||||||
/* Normal Tagged memory type at the corresponding MAIR index */
|
|
||||||
mov x10, #MAIR_ATTR_NORMAL_TAGGED
|
|
||||||
bfi x5, x10, #(8 * MT_NORMAL_TAGGED), #8
|
|
||||||
|
|
||||||
mov x10, #KERNEL_GCR_EL1
|
|
||||||
msr_s SYS_GCR_EL1, x10
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If GCR_EL1.RRND=1 is implemented the same way as RRND=0, then
|
|
||||||
* RGSR_EL1.SEED must be non-zero for IRG to produce
|
|
||||||
* pseudorandom numbers. As RGSR_EL1 is UNKNOWN out of reset, we
|
|
||||||
* must initialize it.
|
|
||||||
*/
|
|
||||||
mrs x10, CNTVCT_EL0
|
|
||||||
ands x10, x10, #SYS_RGSR_EL1_SEED_MASK
|
|
||||||
csinc x10, x10, xzr, ne
|
|
||||||
lsl x10, x10, #SYS_RGSR_EL1_SEED_SHIFT
|
|
||||||
msr_s SYS_RGSR_EL1, x10
|
|
||||||
|
|
||||||
/* clear any pending tag check faults in TFSR*_EL1 */
|
|
||||||
msr_s SYS_TFSR_EL1, xzr
|
|
||||||
msr_s SYS_TFSRE0_EL1, xzr
|
|
||||||
|
|
||||||
/* set the TCR_EL1 bits */
|
|
||||||
mov_q mte_tcr, TCR_MTE_FLAGS
|
|
||||||
1:
|
|
||||||
#endif
|
|
||||||
msr mair_el1, x5
|
msr mair_el1, x5
|
||||||
/*
|
/*
|
||||||
* Set/prepare TCR and TTBR. TCR_EL1.T1SZ gets further
|
* Set/prepare TCR and TTBR. TCR_EL1.T1SZ gets further
|
||||||
@@ -475,11 +436,8 @@ SYM_FUNC_START(__cpu_setup)
|
|||||||
*/
|
*/
|
||||||
mov_q x10, TCR_TxSZ(VA_BITS) | TCR_CACHE_FLAGS | TCR_SMP_FLAGS | \
|
mov_q x10, TCR_TxSZ(VA_BITS) | TCR_CACHE_FLAGS | TCR_SMP_FLAGS | \
|
||||||
TCR_TG_FLAGS | TCR_KASLR_FLAGS | TCR_ASID16 | \
|
TCR_TG_FLAGS | TCR_KASLR_FLAGS | TCR_ASID16 | \
|
||||||
TCR_TBI0 | TCR_A1 | TCR_KASAN_SW_FLAGS
|
TCR_TBI0 | TCR_A1 | TCR_KASAN_SW_FLAGS | TCR_MTE_FLAGS
|
||||||
#ifdef CONFIG_ARM64_MTE
|
|
||||||
orr x10, x10, mte_tcr
|
|
||||||
.unreq mte_tcr
|
|
||||||
#endif
|
|
||||||
tcr_clear_errata_bits x10, x9, x5
|
tcr_clear_errata_bits x10, x9, x5
|
||||||
|
|
||||||
#ifdef CONFIG_ARM64_VA_BITS_52
|
#ifdef CONFIG_ARM64_VA_BITS_52
|
||||||
|
@@ -294,7 +294,7 @@ bad_area:
|
|||||||
__func__, opcode, rz, rx, imm, addr);
|
__func__, opcode, rz, rx, imm, addr);
|
||||||
show_regs(regs);
|
show_regs(regs);
|
||||||
bust_spinlocks(0);
|
bust_spinlocks(0);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
|
force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
|
||||||
|
@@ -111,7 +111,7 @@ void die(struct pt_regs *regs, const char *str)
|
|||||||
if (panic_on_oops)
|
if (panic_on_oops)
|
||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
if (ret != NOTIFY_STOP)
|
if (ret != NOTIFY_STOP)
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
|
void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/sched/debug.h>
|
#include <linux/sched/debug.h>
|
||||||
|
#include <linux/sched/task.h>
|
||||||
#include <linux/mm_types.h>
|
#include <linux/mm_types.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
@@ -110,7 +111,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err)
|
|||||||
dump(fp);
|
dump(fp);
|
||||||
|
|
||||||
spin_unlock_irq(&die_lock);
|
spin_unlock_irq(&die_lock);
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int kstack_depth_to_print = 24;
|
static int kstack_depth_to_print = 24;
|
||||||
|
@@ -51,7 +51,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
|
|||||||
printk(" at virtual address %08lx\n", address);
|
printk(" at virtual address %08lx\n", address);
|
||||||
if (!user_mode(regs))
|
if (!user_mode(regs))
|
||||||
die("Oops", regs, error_code);
|
die("Oops", regs, error_code);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@@ -218,7 +218,7 @@ int die(const char *str, struct pt_regs *regs, long err)
|
|||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
|
|
||||||
oops_exit();
|
oops_exit();
|
||||||
do_exit(err);
|
make_task_dead(err);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -361,7 +361,7 @@ config ARCH_PROC_KCORE_TEXT
|
|||||||
depends on PROC_KCORE
|
depends on PROC_KCORE
|
||||||
|
|
||||||
config IA64_MCA_RECOVERY
|
config IA64_MCA_RECOVERY
|
||||||
tristate "MCA recovery from errors other than TLB."
|
bool "MCA recovery from errors other than TLB."
|
||||||
|
|
||||||
config IA64_PALINFO
|
config IA64_PALINFO
|
||||||
tristate "/proc/pal support"
|
tristate "/proc/pal support"
|
||||||
|
@@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)
|
|||||||
spin_unlock(&mca_bh_lock);
|
spin_unlock(&mca_bh_lock);
|
||||||
|
|
||||||
/* This process is about to be killed itself */
|
/* This process is about to be killed itself */
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err)
|
|||||||
if (panic_on_oops)
|
if (panic_on_oops)
|
||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
|
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -274,7 +274,7 @@ retry:
|
|||||||
regs = NULL;
|
regs = NULL;
|
||||||
bust_spinlocks(0);
|
bust_spinlocks(0);
|
||||||
if (regs)
|
if (regs)
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
out_of_memory:
|
out_of_memory:
|
||||||
|
@@ -1136,7 +1136,7 @@ void die_if_kernel (char *str, struct pt_regs *fp, int nr)
|
|||||||
pr_crit("%s: %08x\n", str, nr);
|
pr_crit("%s: %08x\n", str, nr);
|
||||||
show_registers(fp);
|
show_registers(fp);
|
||||||
add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
|
add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage void set_esp0(unsigned long ssp)
|
asmlinkage void set_esp0(unsigned long ssp)
|
||||||
|
@@ -48,7 +48,7 @@ int send_fault_sig(struct pt_regs *regs)
|
|||||||
pr_alert("Unable to handle kernel access");
|
pr_alert("Unable to handle kernel access");
|
||||||
pr_cont(" at virtual address %p\n", addr);
|
pr_cont(" at virtual address %p\n", addr);
|
||||||
die_if_kernel("Oops", regs, 0 /*error_code*/);
|
die_if_kernel("Oops", regs, 0 /*error_code*/);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err)
|
|||||||
pr_warn("Oops: %s, sig: %ld\n", str, err);
|
pr_warn("Oops: %s, sig: %ld\n", str, err);
|
||||||
show_regs(fp);
|
show_regs(fp);
|
||||||
spin_unlock_irq(&die_lock);
|
spin_unlock_irq(&die_lock);
|
||||||
/* do_exit() should take care of panic'ing from an interrupt
|
/* make_task_dead() should take care of panic'ing from an interrupt
|
||||||
* context so we don't handle it here
|
* context so we don't handle it here
|
||||||
*/
|
*/
|
||||||
do_exit(err);
|
make_task_dead(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* for user application debugging */
|
/* for user application debugging */
|
||||||
|
@@ -361,6 +361,8 @@ static struct clk clk_periph = {
|
|||||||
*/
|
*/
|
||||||
int clk_enable(struct clk *clk)
|
int clk_enable(struct clk *clk)
|
||||||
{
|
{
|
||||||
|
if (!clk)
|
||||||
|
return 0;
|
||||||
mutex_lock(&clocks_mutex);
|
mutex_lock(&clocks_mutex);
|
||||||
clk_enable_unlocked(clk);
|
clk_enable_unlocked(clk);
|
||||||
mutex_unlock(&clocks_mutex);
|
mutex_unlock(&clocks_mutex);
|
||||||
|
@@ -211,7 +211,7 @@ union cvmx_helper_link_info __cvmx_helper_board_link_get(int ipd_port)
|
|||||||
{
|
{
|
||||||
union cvmx_helper_link_info result;
|
union cvmx_helper_link_info result;
|
||||||
|
|
||||||
WARN(!octeon_is_simulation(),
|
WARN_ONCE(!octeon_is_simulation(),
|
||||||
"Using deprecated link status - please update your DT");
|
"Using deprecated link status - please update your DT");
|
||||||
|
|
||||||
/* Unless we fix it later, all links are defaulted to down */
|
/* Unless we fix it later, all links are defaulted to down */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user