mirror of https://gitee.com/openkylin/linux.git
Merge 5.8-rc6 into driver-core-next
We need the driver core fixes in here too. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
commit
6bdb486c5a
|
@ -143,6 +143,9 @@ x509.genkey
|
|||
/allrandom.config
|
||||
/allyes.config
|
||||
|
||||
# Kconfig savedefconfig output
|
||||
/defconfig
|
||||
|
||||
# Kdevelop4
|
||||
*.kdev4
|
||||
|
||||
|
|
5
.mailmap
5
.mailmap
|
@ -90,11 +90,16 @@ Frank Rowand <frowand.list@gmail.com> <frank.rowand@sonymobile.com>
|
|||
Frank Zago <fzago@systemfabricworks.com>
|
||||
Gao Xiang <xiang@kernel.org> <gaoxiang25@huawei.com>
|
||||
Gao Xiang <xiang@kernel.org> <hsiangkao@aol.com>
|
||||
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <gerald.schaefer@de.ibm.com>
|
||||
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@de.ibm.com>
|
||||
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@linux.vnet.ibm.com>
|
||||
Greg Kroah-Hartman <greg@echidna.(none)>
|
||||
Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Greg Kroah-Hartman <greg@kroah.com>
|
||||
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
|
||||
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
|
||||
Heiko Carstens <hca@linux.ibm.com> <h.carstens@de.ibm.com>
|
||||
Heiko Carstens <hca@linux.ibm.com> <heiko.carstens@de.ibm.com>
|
||||
Henk Vergonet <Henk.Vergonet@gmail.com>
|
||||
Henrik Kretzschmar <henne@nachtwindheim.de>
|
||||
Henrik Rydberg <rydberg@bitmath.org>
|
||||
|
|
|
@ -258,7 +258,7 @@ Configuring the kernel
|
|||
Compiling the kernel
|
||||
--------------------
|
||||
|
||||
- Make sure you have at least gcc 4.6 available.
|
||||
- Make sure you have at least gcc 4.9 available.
|
||||
For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.
|
||||
|
||||
Please note that you can still run a.out user programs with this kernel.
|
||||
|
|
|
@ -171,6 +171,7 @@ infrastructure:
|
|||
|
||||
|
||||
3) ID_AA64PFR1_EL1 - Processor Feature Register 1
|
||||
|
||||
+------------------------------+---------+---------+
|
||||
| Name | bits | visible |
|
||||
+------------------------------+---------+---------+
|
||||
|
@ -181,6 +182,7 @@ infrastructure:
|
|||
|
||||
|
||||
4) MIDR_EL1 - Main ID Register
|
||||
|
||||
+------------------------------+---------+---------+
|
||||
| Name | bits | visible |
|
||||
+------------------------------+---------+---------+
|
||||
|
|
|
@ -147,6 +147,14 @@ stable kernels.
|
|||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Falkor v{1,2} | E1041 | QCOM_FALKOR_ERRATUM_1041 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo4xx Gold | N/A | ARM64_ERRATUM_1463225 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo4xx Gold | N/A | ARM64_ERRATUM_1418040 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo4xx Silver | N/A | ARM64_ERRATUM_1530923 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo4xx Silver | N/A | ARM64_ERRATUM_1024718 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
|
|
|
@ -492,13 +492,6 @@ set max_budget to higher values than those to which BFQ would have set
|
|||
it with auto-tuning. An alternative way to achieve this goal is to
|
||||
just increase the value of timeout_sync, leaving max_budget equal to 0.
|
||||
|
||||
weights
|
||||
-------
|
||||
|
||||
Read-only parameter, used to show the weights of the currently active
|
||||
BFQ queues.
|
||||
|
||||
|
||||
4. Group scheduling with BFQ
|
||||
============================
|
||||
|
||||
|
@ -566,7 +559,7 @@ Parameters to set
|
|||
For each group, there is only the following parameter to set.
|
||||
|
||||
weight (namely blkio.bfq.weight or io.bfq-weight): the weight of the
|
||||
group inside its parent. Available values: 1..10000 (default 100). The
|
||||
group inside its parent. Available values: 1..1000 (default 100). The
|
||||
linear mapping between ioprio and weights, described at the beginning
|
||||
of the tunable section, is still valid, but all weights higher than
|
||||
IOPRIO_BE_NR*10 are mapped to ioprio 0.
|
||||
|
|
|
@ -204,6 +204,14 @@ Returns the maximum size of a mapping for the device. The size parameter
|
|||
of the mapping functions like dma_map_single(), dma_map_page() and
|
||||
others should not be larger than the returned value.
|
||||
|
||||
::
|
||||
|
||||
bool
|
||||
dma_need_sync(struct device *dev, dma_addr_t dma_addr);
|
||||
|
||||
Returns %true if dma_sync_single_for_{device,cpu} calls are required to
|
||||
transfer memory ownership. Returns %false if those calls can be skipped.
|
||||
|
||||
::
|
||||
|
||||
unsigned long
|
||||
|
|
|
@ -61,3 +61,43 @@ test, or an end-to-end test.
|
|||
kernel by installing a production configuration of the kernel on production
|
||||
hardware with a production userspace and then trying to exercise some behavior
|
||||
that depends on interactions between the hardware, the kernel, and userspace.
|
||||
|
||||
KUnit isn't working, what should I do?
|
||||
======================================
|
||||
|
||||
Unfortunately, there are a number of things which can break, but here are some
|
||||
things to try.
|
||||
|
||||
1. Try running ``./tools/testing/kunit/kunit.py run`` with the ``--raw_output``
|
||||
parameter. This might show details or error messages hidden by the kunit_tool
|
||||
parser.
|
||||
2. Instead of running ``kunit.py run``, try running ``kunit.py config``,
|
||||
``kunit.py build``, and ``kunit.py exec`` independently. This can help track
|
||||
down where an issue is occurring. (If you think the parser is at fault, you
|
||||
can run it manually against stdin or a file with ``kunit.py parse``.)
|
||||
3. Running the UML kernel directly can often reveal issues or error messages
|
||||
kunit_tool ignores. This should be as simple as running ``./vmlinux`` after
|
||||
building the UML kernel (e.g., by using ``kunit.py build``). Note that UML
|
||||
has some unusual requirements (such as the host having a tmpfs filesystem
|
||||
mounted), and has had issues in the past when built statically and the host
|
||||
has KASLR enabled. (On older host kernels, you may need to run ``setarch
|
||||
`uname -m` -R ./vmlinux`` to disable KASLR.)
|
||||
4. Make sure the kernel .config has ``CONFIG_KUNIT=y`` and at least one test
|
||||
(e.g. ``CONFIG_KUNIT_EXAMPLE_TEST=y``). kunit_tool will keep its .config
|
||||
around, so you can see what config was used after running ``kunit.py run``.
|
||||
It also preserves any config changes you might make, so you can
|
||||
enable/disable things with ``make ARCH=um menuconfig`` or similar, and then
|
||||
re-run kunit_tool.
|
||||
5. Try to run ``make ARCH=um defconfig`` before running ``kunit.py run``. This
|
||||
may help clean up any residual config items which could be causing problems.
|
||||
6. Finally, try running KUnit outside UML. KUnit and KUnit tests can run be
|
||||
built into any kernel, or can be built as a module and loaded at runtime.
|
||||
Doing so should allow you to determine if UML is causing the issue you're
|
||||
seeing. When tests are built-in, they will execute when the kernel boots, and
|
||||
modules will automatically execute associated tests when loaded. Test results
|
||||
can be collected from ``/sys/kernel/debug/kunit/<test suite>/results``, and
|
||||
can be parsed with ``kunit.py parse``. For more details, see "KUnit on
|
||||
non-UML architectures" in :doc:`usage`.
|
||||
|
||||
If none of the above tricks help, you are always welcome to email any issues to
|
||||
kunit-dev@googlegroups.com.
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
DT_DOC_CHECKER ?= dt-doc-validate
|
||||
DT_EXTRACT_EX ?= dt-extract-example
|
||||
DT_MK_SCHEMA ?= dt-mk-schema
|
||||
DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
|
||||
|
||||
DT_SCHEMA_MIN_VERSION = 2020.5
|
||||
|
||||
|
@ -35,21 +34,40 @@ quiet_cmd_mk_schema = SCHEMA $@
|
|||
|
||||
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
|
||||
|
||||
DT_SCHEMA_FILES ?= $(DT_DOCS)
|
||||
|
||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
||||
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
|
||||
|
||||
override DTC_FLAGS := \
|
||||
-Wno-avoid_unnecessary_addr_size \
|
||||
-Wno-graph_child_address
|
||||
-Wno-graph_child_address \
|
||||
-Wno-interrupt_provider
|
||||
|
||||
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE
|
||||
$(call if_changed,mk_schema)
|
||||
|
||||
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG)
|
||||
ifeq ($(DT_SCHEMA_FILES),)
|
||||
|
||||
# Unless DT_SCHEMA_FILES is specified, use the full schema for dtbs_check too.
|
||||
# Just copy processed-schema-examples.yaml
|
||||
|
||||
$(obj)/processed-schema.yaml: $(obj)/processed-schema-examples.yaml FORCE
|
||||
$(call if_changed,copy)
|
||||
|
||||
DT_SCHEMA_FILES = $(DT_DOCS)
|
||||
|
||||
else
|
||||
|
||||
# If DT_SCHEMA_FILES is specified, use it for processed-schema.yaml
|
||||
|
||||
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
|
||||
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
|
||||
$(call if_changed,mk_schema)
|
||||
|
||||
extra-y += processed-schema.yaml
|
||||
endif
|
||||
|
||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
||||
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
|
||||
extra-$(CHECK_DTBS) += processed-schema.yaml
|
||||
|
||||
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
|
||||
# build artifacts here before they are processed by scripts/Makefile.clean
|
||||
clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
|
||||
-name '*.example.dt.yaml' \) -delete 2>/dev/null)
|
||||
|
|
|
@ -47,7 +47,7 @@ Required properties:
|
|||
&lsio_mu1 1 2
|
||||
&lsio_mu1 1 3
|
||||
&lsio_mu1 3 3>;
|
||||
See Documentation/devicetree/bindings/mailbox/fsl,mu.txt
|
||||
See Documentation/devicetree/bindings/mailbox/fsl,mu.yaml
|
||||
for detailed mailbox binding.
|
||||
|
||||
Note: Each mu which supports general interrupt should have an alias correctly
|
||||
|
|
|
@ -80,14 +80,14 @@ examples:
|
|||
ranges = <1 0x00000000 0x42000000 0x02000000>,
|
||||
<5 0x00000000 0x46000000 0x01000000>;
|
||||
|
||||
ethernet@1,01f00000 {
|
||||
ethernet@1,1f00000 {
|
||||
compatible = "smsc,lan9115";
|
||||
reg = <1 0x01f00000 0x1000>;
|
||||
interrupts = <0 48 4>;
|
||||
phy-mode = "mii";
|
||||
};
|
||||
|
||||
uart@5,00200000 {
|
||||
serial@5,200000 {
|
||||
compatible = "ns16550a";
|
||||
reg = <5 0x00200000 0x20>;
|
||||
interrupts = <0 49 4>;
|
||||
|
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||
title: Clock bindings for Freescale i.MX27
|
||||
|
||||
maintainers:
|
||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
||||
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||
|
||||
description: |
|
||||
The clock consumer should specify the desired clock by having the clock
|
||||
|
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||
title: Clock bindings for Freescale i.MX31
|
||||
|
||||
maintainers:
|
||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
||||
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||
|
||||
description: |
|
||||
The clock consumer should specify the desired clock by having the clock
|
||||
|
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||
title: Clock bindings for Freescale i.MX5
|
||||
|
||||
maintainers:
|
||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
||||
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||
|
||||
description: |
|
||||
The clock consumer should specify the desired clock by having the clock
|
||||
|
|
|
@ -37,7 +37,7 @@ Optional properties:
|
|||
simple-card or audio-graph-card binding. See their binding
|
||||
documents on how to describe the way the sii902x device is
|
||||
connected to the rest of the audio system:
|
||||
Documentation/devicetree/bindings/sound/simple-card.txt
|
||||
Documentation/devicetree/bindings/sound/simple-card.yaml
|
||||
Documentation/devicetree/bindings/sound/audio-graph-card.txt
|
||||
Note: In case of the audio-graph-card binding the used port
|
||||
index should be 3.
|
||||
|
|
|
@ -68,7 +68,7 @@ Required properties:
|
|||
datasheet
|
||||
- clocks : phandle to the PRE axi clock input, as described
|
||||
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||
- clock-names: should be "axi"
|
||||
- interrupts: should contain the PRE interrupt
|
||||
- fsl,iram: phandle pointing to the mmio-sram device node, that should be
|
||||
|
@ -94,7 +94,7 @@ Required properties:
|
|||
datasheet
|
||||
- clocks : phandles to the PRG ipg and axi clock inputs, as described
|
||||
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||
- clock-names: should be "ipg" and "axi"
|
||||
- fsl,pres: phandles to the PRE units attached to this PRG, with the fixed
|
||||
PRE as the first entry and the muxable PREs following.
|
||||
|
|
|
@ -30,8 +30,8 @@ Required properties:
|
|||
"di2_sel" - IPU2 DI0 mux
|
||||
"di3_sel" - IPU2 DI1 mux
|
||||
The needed clock numbers for each are documented in
|
||||
Documentation/devicetree/bindings/clock/imx5-clock.txt, and in
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
||||
Documentation/devicetree/bindings/clock/imx5-clock.yaml, and in
|
||||
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||
|
||||
Optional properties:
|
||||
- pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
|
||||
|
|
|
@ -33,7 +33,7 @@ additionalProperties: false
|
|||
|
||||
examples:
|
||||
- |
|
||||
sysreg {
|
||||
sysreg@0 {
|
||||
compatible = "arm,versatile-sysreg", "syscon", "simple-mfd";
|
||||
reg = <0x00000 0x1000>;
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ properties:
|
|||
description: |
|
||||
Should contain a list of phandles pointing to display interface port
|
||||
of vop devices. vop definitions as defined in
|
||||
Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt
|
||||
Documentation/devicetree/bindings/display/rockchip/rockchip-vop.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
|
|
@ -12,7 +12,7 @@ Required properties for the top level node:
|
|||
Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
|
||||
- #interrupt-cells : Specifies the number of cells needed to encode an
|
||||
interrupt. Should be 2. The first cell defines the interrupt number,
|
||||
the second encodes the triger flags encoded as described in
|
||||
the second encodes the trigger flags encoded as described in
|
||||
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
|
||||
- compatible:
|
||||
- "mediatek,mt7621-gpio" for Mediatek controllers
|
||||
|
|
|
@ -10,7 +10,7 @@ Interrupt number definition:
|
|||
16-31 : private irq, and we use 16 as the co-processor timer.
|
||||
31-1024: common irq for soc ip.
|
||||
|
||||
Interrupt triger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
|
||||
Interrupt trigger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
|
||||
IRQ_TYPE_LEVEL_HIGH (default)
|
||||
IRQ_TYPE_LEVEL_LOW
|
||||
IRQ_TYPE_EDGE_RISING
|
||||
|
|
|
@ -87,7 +87,7 @@ Example:
|
|||
ranges;
|
||||
|
||||
/* APU<->RPU0 IPI mailbox controller */
|
||||
ipi_mailbox_rpu0: mailbox@ff90400 {
|
||||
ipi_mailbox_rpu0: mailbox@ff990400 {
|
||||
reg = <0xff990400 0x20>,
|
||||
<0xff990420 0x20>,
|
||||
<0xff990080 0x20>,
|
||||
|
|
|
@ -8,7 +8,7 @@ The embedded controller requires the SPI controller driver to signal readiness
|
|||
to receive a transfer (that is, when TX FIFO contains the response data) by
|
||||
strobing the ACK pin with the ready signal. See the "ready-gpios" property of the
|
||||
SSP binding as documented in:
|
||||
<Documentation/devicetree/bindings/spi/spi-pxa2xx.txt>.
|
||||
<Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml>.
|
||||
|
||||
Example:
|
||||
&ssp3 {
|
||||
|
|
|
@ -3,7 +3,7 @@ MediaTek SoC built-in Bluetooth Devices
|
|||
|
||||
This device is a serial attached device to BTIF device and thus it must be a
|
||||
child node of the serial node with BTIF. The dt-bindings details for BTIF
|
||||
device can be known via Documentation/devicetree/bindings/serial/8250.txt.
|
||||
device can be known via Documentation/devicetree/bindings/serial/8250.yaml.
|
||||
|
||||
Required properties:
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ with values derived from the SoC user manual.
|
|||
[flags]>
|
||||
|
||||
On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver.
|
||||
Please refer to Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
|
||||
Please refer to Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
|
||||
for documentation of the GPIO device tree bindings on those platforms.
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ It is based on common bindings for device graphs.
|
|||
see ${LINUX}/Documentation/devicetree/bindings/graph.txt
|
||||
|
||||
Basically, Audio Graph Card property is same as Simple Card.
|
||||
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.txt
|
||||
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.yaml
|
||||
|
||||
Below are same as Simple-Card.
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ codec or external codecs.
|
|||
|
||||
sti sound drivers allows to expose sti SoC audio interface through the
|
||||
generic ASoC simple card. For details about sound card declaration please refer to
|
||||
Documentation/devicetree/bindings/sound/simple-card.txt.
|
||||
Documentation/devicetree/bindings/sound/simple-card.yaml.
|
||||
|
||||
1) sti-uniperiph-dai: audio dai device.
|
||||
---------------------------------------
|
||||
|
|
|
@ -19,7 +19,7 @@ Required properties:
|
|||
|
||||
SPI Controller nodes must be child of GENI based Qualcomm Universal
|
||||
Peripharal. Please refer GENI based QUP wrapper controller node bindings
|
||||
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.txt.
|
||||
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml.
|
||||
|
||||
SPI slave nodes must be children of the SPI master node and conform to SPI bus
|
||||
binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt.
|
||||
|
|
|
@ -41,7 +41,7 @@ examples:
|
|||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
// Example 1: SDM845 TSENS
|
||||
soc: soc@0 {
|
||||
soc: soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
|
|
|
@ -224,7 +224,7 @@ examples:
|
|||
#include <dt-bindings/thermal/thermal.h>
|
||||
|
||||
// Example 1: SDM845 TSENS
|
||||
soc: soc@0 {
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ examples:
|
|||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
vtm: thermal@42050000 {
|
||||
compatible = "ti,am654-vtm";
|
||||
reg = <0x0 0x42050000 0x0 0x25c>;
|
||||
reg = <0x42050000 0x25c>;
|
||||
power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@ regs is accessed by cpu co-processor 4 registers with mtcr/mfcr.
|
|||
- PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
|
||||
- PTIM_TSR "cr<1, 14>" Interrupt cleanup status reg.
|
||||
- PTIM_CCVR "cr<3, 14>" Current counter value reg.
|
||||
- PTIM_LVR "cr<6, 14>" Window value reg to triger next event.
|
||||
- PTIM_LVR "cr<6, 14>" Window value reg to trigger next event.
|
||||
|
||||
==============================
|
||||
timer node bindings definition
|
||||
|
|
|
@ -127,8 +127,8 @@ examples:
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
string@0409 {
|
||||
reg = <0x0409>;
|
||||
string@409 {
|
||||
reg = <0x409>;
|
||||
manufacturer = "ASPEED";
|
||||
product = "USB Virtual Hub";
|
||||
serial-number = "0000";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
:orphan:
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
Writing DeviceTree Bindings in json-schema
|
||||
==========================================
|
||||
|
@ -124,9 +124,12 @@ dtc must also be built with YAML output support enabled. This requires that
|
|||
libyaml and its headers be installed on the host system. For some distributions
|
||||
that involves installing the development package, such as:
|
||||
|
||||
Debian:
|
||||
Debian::
|
||||
|
||||
apt-get install libyaml-dev
|
||||
Fedora:
|
||||
|
||||
Fedora::
|
||||
|
||||
dnf -y install libyaml-devel
|
||||
|
||||
Running checks
|
||||
|
|
|
@ -560,8 +560,8 @@ When the NFS export feature is enabled, all directory index entries are
|
|||
verified on mount time to check that upper file handles are not stale.
|
||||
This verification may cause significant overhead in some cases.
|
||||
|
||||
Note: the mount options index=off,nfs_export=on are conflicting and will
|
||||
result in an error.
|
||||
Note: the mount options index=off,nfs_export=on are conflicting for a
|
||||
read-write mount and will result in an error.
|
||||
|
||||
|
||||
Testsuite
|
||||
|
|
|
@ -1,14 +1,26 @@
|
|||
==============================
|
||||
Linux I2C slave eeprom backend
|
||||
Linux I2C slave EEPROM backend
|
||||
==============================
|
||||
|
||||
by Wolfram Sang <wsa@sang-engineering.com> in 2014-15
|
||||
by Wolfram Sang <wsa@sang-engineering.com> in 2014-20
|
||||
|
||||
This is a proof-of-concept backend which acts like an EEPROM on the connected
|
||||
I2C bus. The memory contents can be modified from userspace via this file
|
||||
located in sysfs::
|
||||
This backend simulates an EEPROM on the connected I2C bus. Its memory contents
|
||||
can be accessed from userspace via this file located in sysfs::
|
||||
|
||||
/sys/bus/i2c/devices/<device-directory>/slave-eeprom
|
||||
|
||||
The following types are available: 24c02, 24c32, 24c64, and 24c512. Read-only
|
||||
variants are also supported. The name needed for instantiating has the form
|
||||
'slave-<type>[ro]'. Examples follow:
|
||||
|
||||
24c02, read/write, address 0x64:
|
||||
# echo slave-24c02 0x1064 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||
|
||||
24c512, read-only, address 0x42:
|
||||
# echo slave-24c512ro 0x1042 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||
|
||||
You can also preload data during boot if a device-property named
|
||||
'firmware-name' contains a valid filename (DT or ACPI only).
|
||||
|
||||
As of 2015, Linux doesn't support poll on binary sysfs files, so there is no
|
||||
notification when another master changed the content.
|
||||
|
|
|
@ -182,7 +182,8 @@ module 8123.ko, which is built from the following files::
|
|||
8123_pci.c
|
||||
8123_bin.o_shipped <= Binary blob
|
||||
|
||||
--- 3.1 Shared Makefile
|
||||
3.1 Shared Makefile
|
||||
-------------------
|
||||
|
||||
An external module always includes a wrapper makefile that
|
||||
supports building the module using "make" with no arguments.
|
||||
|
@ -470,9 +471,9 @@ build.
|
|||
|
||||
The syntax of the Module.symvers file is::
|
||||
|
||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||
|
||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||
|
||||
The fields are separated by tabs and values may be empty (e.g.
|
||||
if no namespace is defined for an exported symbol).
|
||||
|
|
|
@ -101,7 +101,7 @@ Structure randomisation
|
|||
|
||||
If you enable ``CONFIG_GCC_PLUGIN_RANDSTRUCT``, you will need to
|
||||
pre-generate the random seed in
|
||||
``scripts/gcc-plgins/randomize_layout_seed.h`` so the same value
|
||||
``scripts/gcc-plugins/randomize_layout_seed.h`` so the same value
|
||||
is used in rebuilds.
|
||||
|
||||
Debug info conflicts
|
||||
|
|
|
@ -68,4 +68,4 @@ and frameworks can be controlled from the same registers, all of these
|
|||
drivers access their registers through the same regmap.
|
||||
|
||||
For more information regarding the devicetree bindings of the TCU drivers,
|
||||
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.txt.
|
||||
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.yaml.
|
||||
|
|
|
@ -434,7 +434,7 @@ can set up your network then:
|
|||
ifconfig arc0 insight
|
||||
route add insight arc0
|
||||
route add freedom arc0 /* I would use the subnet here (like I said
|
||||
to to in "single protocol" above),
|
||||
to in "single protocol" above),
|
||||
but the rest of the subnet
|
||||
unfortunately lies across the PPP
|
||||
link on freedom, which confuses
|
||||
|
|
|
@ -6,7 +6,7 @@ AX.25
|
|||
|
||||
To use the amateur radio protocols within Linux you will need to get a
|
||||
suitable copy of the AX.25 Utilities. More detailed information about
|
||||
AX.25, NET/ROM and ROSE, associated programs and and utilities can be
|
||||
AX.25, NET/ROM and ROSE, associated programs and utilities can be
|
||||
found on http://www.linux-ax25.org.
|
||||
|
||||
There is an active mailing list for discussing Linux amateur radio matters
|
||||
|
|
|
@ -144,7 +144,7 @@ UCAN_COMMAND_SET_BITTIMING
|
|||
|
||||
*Host2Dev; mandatory*
|
||||
|
||||
Setup bittiming by sending the the structure
|
||||
Setup bittiming by sending the structure
|
||||
``ucan_ctl_payload_t.cmd_set_bittiming`` (see ``struct bittiming`` for
|
||||
details)
|
||||
|
||||
|
@ -232,7 +232,7 @@ UCAN_IN_TX_COMPLETE
|
|||
zero
|
||||
|
||||
The CAN device has sent a message to the CAN bus. It answers with a
|
||||
list of of tuples <echo-ids, flags>.
|
||||
list of tuples <echo-ids, flags>.
|
||||
|
||||
The echo-id identifies the frame from (echos the id from a previous
|
||||
UCAN_OUT_TX message). The flag indicates the result of the
|
||||
|
|
|
@ -95,7 +95,7 @@ Ethernet switch.
|
|||
Networking stack hooks
|
||||
----------------------
|
||||
|
||||
When a master netdev is used with DSA, a small hook is placed in in the
|
||||
When a master netdev is used with DSA, a small hook is placed in the
|
||||
networking stack is in order to have the DSA subsystem process the Ethernet
|
||||
switch specific tagging protocol. DSA accomplishes this by registering a
|
||||
specific (and fake) Ethernet type (later becoming ``skb->protocol``) with the
|
||||
|
|
|
@ -741,7 +741,7 @@ tcp_fastopen - INTEGER
|
|||
|
||||
Default: 0x1
|
||||
|
||||
Note that that additional client or server features are only
|
||||
Note that additional client or server features are only
|
||||
effective if the basic support (0x1 and 0x2) are enabled respectively.
|
||||
|
||||
tcp_fastopen_blackhole_timeout_sec - INTEGER
|
||||
|
|
|
@ -114,7 +114,7 @@ drop_entry - INTEGER
|
|||
modes (when there is no enough available memory, the strategy
|
||||
is enabled and the variable is automatically set to 2,
|
||||
otherwise the strategy is disabled and the variable is set to
|
||||
1), and 3 means that that the strategy is always enabled.
|
||||
1), and 3 means that the strategy is always enabled.
|
||||
|
||||
drop_packet - INTEGER
|
||||
- 0 - disabled (default)
|
||||
|
|
|
@ -186,7 +186,7 @@ About the AF_RXRPC driver:
|
|||
time [tunable] after the last connection using it discarded, in case a new
|
||||
connection is made that could use it.
|
||||
|
||||
(#) A client-side connection is only shared between calls if they have have
|
||||
(#) A client-side connection is only shared between calls if they have
|
||||
the same key struct describing their security (and assuming the calls
|
||||
would otherwise share the connection). Non-secured calls would also be
|
||||
able to share connections with each other.
|
||||
|
|
|
@ -213,7 +213,7 @@ request buffers are not in memory. The operating system handles the fault by
|
|||
updating CSB with the following data:
|
||||
|
||||
csb.flags = CSB_V;
|
||||
csb.cc = CSB_CC_TRANSLATION;
|
||||
csb.cc = CSB_CC_FAULT_ADDRESS;
|
||||
csb.ce = CSB_CE_TERMINATION;
|
||||
csb.address = fault_address;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ you probably needn't concern yourself with pcmciautils.
|
|||
====================== =============== ========================================
|
||||
Program Minimal version Command to check the version
|
||||
====================== =============== ========================================
|
||||
GNU C 4.8 gcc --version
|
||||
GNU C 4.9 gcc --version
|
||||
GNU make 3.81 make --version
|
||||
binutils 2.23 ld -v
|
||||
flex 2.5.35 flex --version
|
||||
|
|
|
@ -319,6 +319,26 @@ If you are afraid to mix up your local variable names, you have another
|
|||
problem, which is called the function-growth-hormone-imbalance syndrome.
|
||||
See chapter 6 (Functions).
|
||||
|
||||
For symbol names and documentation, avoid introducing new usage of
|
||||
'master / slave' (or 'slave' independent of 'master') and 'blacklist /
|
||||
whitelist'.
|
||||
|
||||
Recommended replacements for 'master / slave' are:
|
||||
'{primary,main} / {secondary,replica,subordinate}'
|
||||
'{initiator,requester} / {target,responder}'
|
||||
'{controller,host} / {device,worker,proxy}'
|
||||
'leader / follower'
|
||||
'director / performer'
|
||||
|
||||
Recommended replacements for 'blacklist/whitelist' are:
|
||||
'denylist / allowlist'
|
||||
'blocklist / passlist'
|
||||
|
||||
Exceptions for introducing new usage is to maintain a userspace ABI/API,
|
||||
or when updating code for an existing (as of 2020) hardware or protocol
|
||||
specification that mandates those terms. For new specifications
|
||||
translate specification usage of the terminology to the kernel coding
|
||||
standard where possible.
|
||||
|
||||
5) Typedefs
|
||||
-----------
|
||||
|
|
|
@ -4339,14 +4339,15 @@ Errors:
|
|||
#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
|
||||
|
||||
struct kvm_vmx_nested_state_hdr {
|
||||
__u32 flags;
|
||||
__u64 vmxon_pa;
|
||||
__u64 vmcs12_pa;
|
||||
__u64 preemption_timer_deadline;
|
||||
|
||||
struct {
|
||||
__u16 flags;
|
||||
} smm;
|
||||
|
||||
__u32 flags;
|
||||
__u64 preemption_timer_deadline;
|
||||
};
|
||||
|
||||
struct kvm_vmx_nested_state_data {
|
||||
|
|
24
MAINTAINERS
24
MAINTAINERS
|
@ -2929,6 +2929,7 @@ F: include/uapi/linux/atm*
|
|||
|
||||
ATMEL MACB ETHERNET DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||||
M: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||
S: Supported
|
||||
F: drivers/net/ethernet/cadence/
|
||||
|
||||
|
@ -3306,7 +3307,7 @@ X: arch/riscv/net/bpf_jit_comp32.c
|
|||
|
||||
BPF JIT for S390
|
||||
M: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
M: Heiko Carstens <hca@linux.ibm.com>
|
||||
M: Vasily Gorbik <gor@linux.ibm.com>
|
||||
L: netdev@vger.kernel.org
|
||||
L: bpf@vger.kernel.org
|
||||
|
@ -3946,7 +3947,7 @@ L: linux-crypto@vger.kernel.org
|
|||
S: Supported
|
||||
F: drivers/char/hw_random/cctrng.c
|
||||
F: drivers/char/hw_random/cctrng.h
|
||||
F: Documentation/devicetree/bindings/rng/arm-cctrng.txt
|
||||
F: Documentation/devicetree/bindings/rng/arm-cctrng.yaml
|
||||
W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
|
||||
|
||||
CEC FRAMEWORK
|
||||
|
@ -5021,7 +5022,6 @@ F: drivers/mfd/da91??-*.c
|
|||
F: drivers/pinctrl/pinctrl-da90??.c
|
||||
F: drivers/power/supply/da9052-battery.c
|
||||
F: drivers/power/supply/da91??-*.c
|
||||
F: drivers/regulator/da903x.c
|
||||
F: drivers/regulator/da9???-regulator.[ch]
|
||||
F: drivers/regulator/slg51000-regulator.[ch]
|
||||
F: drivers/rtc/rtc-da90??.c
|
||||
|
@ -5111,7 +5111,7 @@ M: Vinod Koul <vkoul@kernel.org>
|
|||
L: dmaengine@vger.kernel.org
|
||||
S: Maintained
|
||||
Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
||||
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git
|
||||
F: Documentation/devicetree/bindings/dma/
|
||||
F: Documentation/driver-api/dmaengine/
|
||||
F: drivers/dma/
|
||||
|
@ -5490,7 +5490,7 @@ F: include/uapi/drm/r128_drm.h
|
|||
DRM DRIVER FOR RAYDIUM RM67191 PANELS
|
||||
M: Robert Chiras <robert.chiras@nxp.com>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.txt
|
||||
F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
|
||||
F: drivers/gpu/drm/panel/panel-raydium-rm67191.c
|
||||
|
||||
DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
|
||||
|
@ -14574,8 +14574,8 @@ RENESAS R-CAR THERMAL DRIVERS
|
|||
M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
||||
L: linux-renesas-soc@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt
|
||||
F: Documentation/devicetree/bindings/thermal/rcar-thermal.txt
|
||||
F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml
|
||||
F: Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
|
||||
F: drivers/thermal/rcar_gen3_thermal.c
|
||||
F: drivers/thermal/rcar_thermal.c
|
||||
|
||||
|
@ -14831,7 +14831,7 @@ S: Maintained
|
|||
F: drivers/video/fbdev/savage/
|
||||
|
||||
S390
|
||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
M: Heiko Carstens <hca@linux.ibm.com>
|
||||
M: Vasily Gorbik <gor@linux.ibm.com>
|
||||
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||
L: linux-s390@vger.kernel.org
|
||||
|
@ -14862,7 +14862,7 @@ F: drivers/s390/block/dasd*
|
|||
F: include/linux/dasd_mod.h
|
||||
|
||||
S390 IOMMU (PCI)
|
||||
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||
M: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
|
||||
L: linux-s390@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||
|
@ -14890,7 +14890,7 @@ F: drivers/s390/net/
|
|||
|
||||
S390 PCI SUBSYSTEM
|
||||
M: Niklas Schnelle <schnelle@linux.ibm.com>
|
||||
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||
M: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
|
||||
L: linux-s390@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||
|
@ -17513,7 +17513,7 @@ F: Documentation/admin-guide/ufs.rst
|
|||
F: fs/ufs/
|
||||
|
||||
UHID USERSPACE HID IO DRIVER
|
||||
M: David Herrmann <dh.herrmann@googlemail.com>
|
||||
M: David Rheinsberg <david.rheinsberg@gmail.com>
|
||||
L: linux-input@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/hid/uhid.c
|
||||
|
@ -18472,7 +18472,7 @@ S: Maintained
|
|||
F: drivers/rtc/rtc-sd3078.c
|
||||
|
||||
WIIMOTE HID DRIVER
|
||||
M: David Herrmann <dh.herrmann@googlemail.com>
|
||||
M: David Rheinsberg <david.rheinsberg@gmail.com>
|
||||
L: linux-input@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/hid/hid-wiimote*
|
||||
|
|
6
Makefile
6
Makefile
|
@ -2,7 +2,7 @@
|
|||
VERSION = 5
|
||||
PATCHLEVEL = 8
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -970,8 +970,8 @@ LDFLAGS_vmlinux += --pack-dyn-relocs=relr
|
|||
endif
|
||||
|
||||
# Align the bit size of userspace programs with the kernel
|
||||
KBUILD_USERCFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||
|
||||
# make the checker run with the right architecture
|
||||
CHECKFLAGS += --arch=$(ARCH)
|
||||
|
|
|
@ -170,6 +170,15 @@ config ARC_CPU_HS
|
|||
|
||||
endchoice
|
||||
|
||||
config ARC_TUNE_MCPU
|
||||
string "Override default -mcpu compiler flag"
|
||||
default ""
|
||||
help
|
||||
Override default -mcpu=xxx compiler flag (which is set depending on
|
||||
the ISA version) with the specified value.
|
||||
NOTE: If specified flag isn't supported by current compiler the
|
||||
ISA default value will be used as a fallback.
|
||||
|
||||
config CPU_BIG_ENDIAN
|
||||
bool "Enable Big Endian Mode"
|
||||
help
|
||||
|
@ -465,6 +474,12 @@ config ARC_IRQ_NO_AUTOSAVE
|
|||
This is programmable and can be optionally disabled in which case
|
||||
software INTERRUPT_PROLOGUE/EPILGUE do the needed work
|
||||
|
||||
config ARC_LPB_DISABLE
|
||||
bool "Disable loop buffer (LPB)"
|
||||
help
|
||||
On HS cores, loop buffer (LPB) is programmable in runtime and can
|
||||
be optionally disabled.
|
||||
|
||||
endif # ISA_ARCV2
|
||||
|
||||
endmenu # "ARC CPU Configuration"
|
||||
|
|
|
@ -10,8 +10,25 @@ CROSS_COMPILE := $(call cc-cross-prefix, arc-linux- arceb-linux-)
|
|||
endif
|
||||
|
||||
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
||||
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
||||
cflags-$(CONFIG_ISA_ARCV2) += -mcpu=hs38
|
||||
|
||||
tune-mcpu-def-$(CONFIG_ISA_ARCOMPACT) := -mcpu=arc700
|
||||
tune-mcpu-def-$(CONFIG_ISA_ARCV2) := -mcpu=hs38
|
||||
|
||||
ifeq ($(CONFIG_ARC_TUNE_MCPU),"")
|
||||
cflags-y += $(tune-mcpu-def-y)
|
||||
else
|
||||
tune-mcpu := $(shell echo $(CONFIG_ARC_TUNE_MCPU))
|
||||
tune-mcpu-ok := $(call cc-option-yn, $(tune-mcpu))
|
||||
ifeq ($(tune-mcpu-ok),y)
|
||||
cflags-y += $(tune-mcpu)
|
||||
else
|
||||
# The flag provided by 'CONFIG_ARC_TUNE_MCPU' option isn't known by this compiler
|
||||
# (probably the compiler is too old). Use ISA default mcpu flag instead as a safe option.
|
||||
$(warning ** WARNING ** CONFIG_ARC_TUNE_MCPU flag '$(tune-mcpu)' is unknown, fallback to '$(tune-mcpu-def-y)')
|
||||
cflags-y += $(tune-mcpu-def-y)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
ifdef CONFIG_ARC_CURR_IN_REG
|
||||
# For a global register defintion, make sure it gets passed to every file
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#define R_ARC_32_PCREL 0x31
|
||||
|
||||
/*to set parameters in the core dumps */
|
||||
#define ELF_ARCH EM_ARCOMPACT
|
||||
#define ELF_ARCH EM_ARC_INUSE
|
||||
#define ELF_CLASS ELFCLASS32
|
||||
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
|
|
|
@ -90,6 +90,9 @@ static inline void arch_local_irq_restore(unsigned long flags)
|
|||
/*
|
||||
* Unconditionally Enable IRQs
|
||||
*/
|
||||
#ifdef CONFIG_ARC_COMPACT_IRQ_LEVELS
|
||||
extern void arch_local_irq_enable(void);
|
||||
#else
|
||||
static inline void arch_local_irq_enable(void)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
@ -102,7 +105,7 @@ static inline void arch_local_irq_enable(void)
|
|||
: "n"((STATUS_E1_MASK | STATUS_E2_MASK))
|
||||
: "cc", "memory");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unconditionally Disable IRQs
|
||||
|
|
|
@ -165,7 +165,6 @@ END(EV_Extension)
|
|||
tracesys:
|
||||
; save EFA in case tracer wants the PC of traced task
|
||||
; using ERET won't work since next-PC has already committed
|
||||
lr r12, [efa]
|
||||
GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11
|
||||
st r12, [r11, THREAD_FAULT_ADDR] ; thread.fault_address
|
||||
|
||||
|
@ -208,15 +207,9 @@ tracesys_exit:
|
|||
; Breakpoint TRAP
|
||||
; ---------------------------------------------
|
||||
trap_with_param:
|
||||
|
||||
; stop_pc info by gdb needs this info
|
||||
lr r0, [efa]
|
||||
mov r0, r12 ; EFA in case ptracer/gdb wants stop_pc
|
||||
mov r1, sp
|
||||
|
||||
; Now that we have read EFA, it is safe to do "fake" rtie
|
||||
; and get out of CPU exception mode
|
||||
FAKE_RET_FROM_EXCPN
|
||||
|
||||
; Save callee regs in case gdb wants to have a look
|
||||
; SP will grow up by size of CALLEE Reg-File
|
||||
; NOTE: clobbers r12
|
||||
|
@ -243,6 +236,10 @@ ENTRY(EV_Trap)
|
|||
|
||||
EXCEPTION_PROLOGUE
|
||||
|
||||
lr r12, [efa]
|
||||
|
||||
FAKE_RET_FROM_EXCPN
|
||||
|
||||
;============ TRAP 1 :breakpoints
|
||||
; Check ECR for trap with arg (PROLOGUE ensures r10 has ECR)
|
||||
bmsk.f 0, r10, 7
|
||||
|
@ -250,9 +247,6 @@ ENTRY(EV_Trap)
|
|||
|
||||
;============ TRAP (no param): syscall top level
|
||||
|
||||
; First return from Exception to pure K mode (Exception/IRQs renabled)
|
||||
FAKE_RET_FROM_EXCPN
|
||||
|
||||
; If syscall tracing ongoing, invoke pre-post-hooks
|
||||
GET_CURR_THR_INFO_FLAGS r10
|
||||
btst r10, TIF_SYSCALL_TRACE
|
||||
|
|
|
@ -59,6 +59,14 @@
|
|||
bclr r5, r5, STATUS_AD_BIT
|
||||
#endif
|
||||
kflag r5
|
||||
|
||||
#ifdef CONFIG_ARC_LPB_DISABLE
|
||||
lr r5, [ARC_REG_LPB_BUILD]
|
||||
breq r5, 0, 1f ; LPB doesn't exist
|
||||
mov r5, 1
|
||||
sr r5, [ARC_REG_LPB_CTRL]
|
||||
1:
|
||||
#endif /* CONFIG_ARC_LPB_DISABLE */
|
||||
#endif
|
||||
; Config DSP_CTRL properly, so kernel may use integer multiply,
|
||||
; multiply-accumulate, and divide operations
|
||||
|
|
|
@ -58,10 +58,12 @@ static const struct id_to_str arc_legacy_rel[] = {
|
|||
{ 0x00, NULL }
|
||||
};
|
||||
|
||||
static const struct id_to_str arc_cpu_rel[] = {
|
||||
static const struct id_to_str arc_hs_ver54_rel[] = {
|
||||
/* UARCH.MAJOR, Release */
|
||||
{ 0, "R3.10a"},
|
||||
{ 1, "R3.50a"},
|
||||
{ 2, "R3.60a"},
|
||||
{ 3, "R4.00a"},
|
||||
{ 0xFF, NULL }
|
||||
};
|
||||
|
||||
|
@ -117,12 +119,6 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||
struct bcr_uarch_build_arcv2 uarch;
|
||||
const struct id_to_str *tbl;
|
||||
|
||||
/*
|
||||
* Up until (including) the first core4 release (0x54) things were
|
||||
* simple: AUX IDENTITY.ARCVER was sufficient to identify arc family
|
||||
* and release: 0x50 to 0x53 was HS38, 0x54 was HS48 (dual issue)
|
||||
*/
|
||||
|
||||
if (cpu->core.family < 0x54) { /* includes arc700 */
|
||||
|
||||
for (tbl = &arc_legacy_rel[0]; tbl->id != 0; tbl++) {
|
||||
|
@ -143,11 +139,10 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||
}
|
||||
|
||||
/*
|
||||
* However the subsequent HS release (same 0x54) allow HS38 or HS48
|
||||
* configurations and encode this info in a different BCR.
|
||||
* The BCR was introduced in 0x54 so can't be read unconditionally.
|
||||
* Initial HS cores bumped AUX IDENTITY.ARCVER for each release until
|
||||
* ARCVER 0x54 which introduced AUX MICRO_ARCH_BUILD and subsequent
|
||||
* releases only update it.
|
||||
*/
|
||||
|
||||
READ_BCR(ARC_REG_MICRO_ARCH_BCR, uarch);
|
||||
|
||||
if (uarch.prod == 4) {
|
||||
|
@ -158,7 +153,7 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||
cpu->name = "HS38";
|
||||
}
|
||||
|
||||
for (tbl = &arc_cpu_rel[0]; tbl->id != 0xFF; tbl++) {
|
||||
for (tbl = &arc_hs_ver54_rel[0]; tbl->id != 0xFF; tbl++) {
|
||||
if (uarch.maj == tbl->id) {
|
||||
cpu->release = tbl->str;
|
||||
break;
|
||||
|
|
|
@ -1540,8 +1540,9 @@ target-module@cc000 { /* 0x481cc000, ap 50 46.0 */
|
|||
reg = <0xcc020 0x4>;
|
||||
reg-names = "rev";
|
||||
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>,
|
||||
<&dcan0_fck>;
|
||||
clock-names = "fck", "osc";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0xcc000 0x2000>;
|
||||
|
@ -1549,6 +1550,8 @@ target-module@cc000 { /* 0x481cc000, ap 50 46.0 */
|
|||
dcan0: can@0 {
|
||||
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
||||
reg = <0x0 0x2000>;
|
||||
clocks = <&dcan0_fck>;
|
||||
clock-names = "fck";
|
||||
syscon-raminit = <&scm_conf 0x644 0>;
|
||||
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
|
@ -1560,8 +1563,9 @@ target-module@d0000 { /* 0x481d0000, ap 52 3a.0 */
|
|||
reg = <0xd0020 0x4>;
|
||||
reg-names = "rev";
|
||||
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>,
|
||||
<&dcan1_fck>;
|
||||
clock-names = "fck", "osc";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0xd0000 0x2000>;
|
||||
|
@ -1569,6 +1573,8 @@ target-module@d0000 { /* 0x481d0000, ap 52 3a.0 */
|
|||
dcan1: can@0 {
|
||||
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
||||
reg = <0x0 0x2000>;
|
||||
clocks = <&dcan1_fck>;
|
||||
clock-name = "fck";
|
||||
syscon-raminit = <&scm_conf 0x644 1>;
|
||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
|
|
|
@ -110,7 +110,7 @@ sound-digital {
|
|||
simple-audio-card,frame-master = <&sound_codec>;
|
||||
|
||||
sound_cpu: simple-audio-card,cpu {
|
||||
sound-dai = <&ssi2>;
|
||||
sound-dai = <&ssi1>;
|
||||
};
|
||||
|
||||
sound_codec: simple-audio-card,codec {
|
||||
|
|
|
@ -11,7 +11,7 @@ / {
|
|||
#size-cells = <1>;
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
L2: l2-cache-controller@c4200000 {
|
||||
L2: cache-controller@c4200000 {
|
||||
compatible = "arm,pl310-cache";
|
||||
reg = <0xc4200000 0x1000>;
|
||||
cache-unified;
|
||||
|
|
|
@ -105,6 +105,14 @@ proximity_sensor {
|
|||
linux,code = <SW_FRONT_PROXIMITY>;
|
||||
linux,can-disable;
|
||||
};
|
||||
|
||||
machine_cover {
|
||||
label = "Machine Cover";
|
||||
gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
||||
linux,input-type = <EV_SW>;
|
||||
linux,code = <SW_MACHINE_COVER>;
|
||||
linux,can-disable;
|
||||
};
|
||||
};
|
||||
|
||||
isp1707: isp1707 {
|
||||
|
@ -819,10 +827,6 @@ &mmc1 {
|
|||
pinctrl-0 = <&mmc1_pins>;
|
||||
vmmc-supply = <&vmmc1>;
|
||||
bus-width = <4>;
|
||||
/* For debugging, it is often good idea to remove this GPIO.
|
||||
It means you can remove back cover (to reboot by removing
|
||||
battery) and still use the MMC card. */
|
||||
cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
||||
};
|
||||
|
||||
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
||||
|
|
|
@ -726,7 +726,7 @@ ocram-ecc@ffd08144 {
|
|||
};
|
||||
};
|
||||
|
||||
L2: l2-cache@fffef000 {
|
||||
L2: cache-controller@fffef000 {
|
||||
compatible = "arm,pl310-cache";
|
||||
reg = <0xfffef000 0x1000>;
|
||||
interrupts = <0 38 0x04>;
|
||||
|
|
|
@ -636,7 +636,7 @@ sdr: sdr@ffcfb100 {
|
|||
reg = <0xffcfb100 0x80>;
|
||||
};
|
||||
|
||||
L2: l2-cache@fffff000 {
|
||||
L2: cache-controller@fffff000 {
|
||||
compatible = "arm,pl310-cache";
|
||||
reg = <0xfffff000 0x1000>;
|
||||
interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
|
|
@ -31,15 +31,6 @@
|
|||
#if defined(__APCS_26__)
|
||||
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
|
||||
#endif
|
||||
/*
|
||||
* GCC 4.8.0-4.8.2: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
|
||||
* miscompiles find_get_entry(), and can result in EXT3 and EXT4
|
||||
* filesystem corruption (possibly other FS too).
|
||||
*/
|
||||
#if defined(GCC_VERSION) && GCC_VERSION >= 40800 && GCC_VERSION < 40803
|
||||
#error Your compiler is too buggy; it is known to miscompile kernels
|
||||
#error and result in filesystem corruption and oopses.
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
|
|
@ -289,6 +289,6 @@ struct platform_device *__init imx_add_spi_imx(
|
|||
const struct spi_imx_master *pdata);
|
||||
|
||||
struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase,
|
||||
int irq, int irq_err);
|
||||
int irq);
|
||||
struct platform_device *imx_add_imx_sdma(char *name,
|
||||
resource_size_t iobase, int irq, struct sdma_platform_data *pdata);
|
||||
|
|
|
@ -24,7 +24,8 @@ struct platform_device *__init mxc_register_gpio(char *name, int id,
|
|||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
unsigned int nres;
|
||||
|
||||
return platform_device_register_resndata(&mxc_aips_bus,
|
||||
name, id, res, ARRAY_SIZE(res), NULL, 0);
|
||||
nres = irq_high ? ARRAY_SIZE(res) : ARRAY_SIZE(res) - 1;
|
||||
return platform_device_register_resndata(&mxc_aips_bus, name, id, res, nres, NULL, 0);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "devices-common.h"
|
||||
|
||||
struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
||||
resource_size_t iobase, int irq, int irq_err)
|
||||
resource_size_t iobase, int irq)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
|
@ -17,10 +17,6 @@ struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
|||
.start = irq,
|
||||
.end = irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = irq_err,
|
||||
.end = irq_err,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -78,8 +78,7 @@ void __init imx21_soc_init(void)
|
|||
mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
|
||||
|
||||
pinctrl_provide_dummies();
|
||||
imx_add_imx_dma("imx21-dma", MX21_DMA_BASE_ADDR,
|
||||
MX21_INT_DMACH0, 0); /* No ERR irq */
|
||||
imx_add_imx_dma("imx21-dma", MX21_DMA_BASE_ADDR, MX21_INT_DMACH0);
|
||||
platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res,
|
||||
ARRAY_SIZE(imx21_audmux_res));
|
||||
}
|
||||
|
|
|
@ -79,8 +79,7 @@ void __init imx27_soc_init(void)
|
|||
mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
|
||||
|
||||
pinctrl_provide_dummies();
|
||||
imx_add_imx_dma("imx27-dma", MX27_DMA_BASE_ADDR,
|
||||
MX27_INT_DMACH0, 0); /* No ERR irq */
|
||||
imx_add_imx_dma("imx27-dma", MX27_DMA_BASE_ADDR, MX27_INT_DMACH0);
|
||||
/* imx27 has the imx21 type audmux */
|
||||
platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res,
|
||||
ARRAY_SIZE(imx27_audmux_res));
|
||||
|
|
|
@ -3435,7 +3435,7 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||
regs = ioremap(data->module_pa,
|
||||
data->module_size);
|
||||
if (!regs)
|
||||
return -ENOMEM;
|
||||
goto out_free_sysc;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3445,13 +3445,13 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||
if (oh->class->name && strcmp(oh->class->name, data->name)) {
|
||||
class = kmemdup(oh->class, sizeof(*oh->class), GFP_KERNEL);
|
||||
if (!class)
|
||||
return -ENOMEM;
|
||||
goto out_unmap;
|
||||
}
|
||||
|
||||
if (list_empty(&oh->slave_ports)) {
|
||||
oi = kcalloc(1, sizeof(*oi), GFP_KERNEL);
|
||||
if (!oi)
|
||||
return -ENOMEM;
|
||||
goto out_free_class;
|
||||
|
||||
/*
|
||||
* Note that we assume interconnect interface clocks will be
|
||||
|
@ -3478,6 +3478,14 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||
spin_unlock_irqrestore(&oh->_lock, flags);
|
||||
|
||||
return 0;
|
||||
|
||||
out_free_class:
|
||||
kfree(class);
|
||||
out_unmap:
|
||||
iounmap(regs);
|
||||
out_free_sysc:
|
||||
kfree(sysc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
|
||||
|
|
|
@ -241,7 +241,6 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
|
|||
* see Documentation/devicetree/bindings/arm/xen.txt for the
|
||||
* documentation of the Xen Device Tree format.
|
||||
*/
|
||||
#define GRANT_TABLE_PHYSADDR 0
|
||||
void __init xen_early_init(void)
|
||||
{
|
||||
of_scan_flat_dt(fdt_find_hyper_node, NULL);
|
||||
|
|
|
@ -77,7 +77,7 @@ psci {
|
|||
method = "smc";
|
||||
};
|
||||
|
||||
intc: intc@fffc1000 {
|
||||
intc: interrupt-controller@fffc1000 {
|
||||
compatible = "arm,gic-400", "arm,cortex-a15-gic";
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-controller;
|
||||
|
@ -302,7 +302,7 @@ mmc: dwmmc0@ff808000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
nand: nand@ffb90000 {
|
||||
nand: nand-controller@ffb90000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "altr,socfpga-denali-nand";
|
||||
|
@ -445,7 +445,7 @@ timer3: timer3@ffd00100 {
|
|||
clock-names = "timer";
|
||||
};
|
||||
|
||||
uart0: serial0@ffc02000 {
|
||||
uart0: serial@ffc02000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0xffc02000 0x100>;
|
||||
interrupts = <0 108 4>;
|
||||
|
@ -456,7 +456,7 @@ uart0: serial0@ffc02000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
uart1: serial1@ffc02100 {
|
||||
uart1: serial@ffc02100 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0xffc02100 0x100>;
|
||||
interrupts = <0 109 4>;
|
||||
|
|
|
@ -155,6 +155,7 @@ rtc@68 {
|
|||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -188,6 +188,7 @@ rtc@68 {
|
|||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
@ -211,12 +212,12 @@ partitions {
|
|||
|
||||
qspi_boot: partition@0 {
|
||||
label = "Boot and fpga data";
|
||||
reg = <0x0 0x034B0000>;
|
||||
reg = <0x0 0x03FE0000>;
|
||||
};
|
||||
|
||||
qspi_rootfs: partition@4000000 {
|
||||
qspi_rootfs: partition@3FE0000 {
|
||||
label = "Root Filesystem - JFFS2";
|
||||
reg = <0x034B0000 0x0EB50000>;
|
||||
reg = <0x03FE0000 0x0C020000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/sound/meson-aiu.h>
|
||||
|
||||
#include "meson-gxl-s905x.dtsi"
|
||||
#include "meson-gxl-s805x.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "meson-gxl-s905x.dtsi"
|
||||
#include "meson-gxl-s805x.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "amlogic,p241", "amlogic,s805x", "amlogic,meson-gxl";
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Copyright (c) 2020 BayLibre SAS
|
||||
* Author: Neil Armstrong <narmstrong@baylibre.com>
|
||||
*/
|
||||
|
||||
#include "meson-gxl-s905x.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "amlogic,s805x", "amlogic,meson-gxl";
|
||||
};
|
||||
|
||||
/* The S805X Package doesn't seem to handle the 744MHz OPP correctly */
|
||||
&mali {
|
||||
assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
|
||||
<&clkc CLKID_MALI_0>,
|
||||
<&clkc CLKID_MALI>; /* Glitch free mux */
|
||||
assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
|
||||
<0>, /* Do Nothing */
|
||||
<&clkc CLKID_MALI_0>;
|
||||
assigned-clock-rates = <0>, /* Do Nothing */
|
||||
<666666666>,
|
||||
<0>; /* Do Nothing */
|
||||
};
|
|
@ -337,6 +337,11 @@ clkc: clock-controller {
|
|||
};
|
||||
};
|
||||
|
||||
&hwrng {
|
||||
clocks = <&clkc CLKID_RNG0>;
|
||||
clock-names = "core";
|
||||
};
|
||||
|
||||
&i2c_A {
|
||||
clocks = <&clkc CLKID_I2C>;
|
||||
};
|
||||
|
|
|
@ -98,6 +98,7 @@ &watchdog0 {
|
|||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -194,7 +194,7 @@ CONFIG_HOTPLUG_PCI=y
|
|||
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||
CONFIG_PCI_AARDVARK=y
|
||||
CONFIG_PCI_TEGRA=y
|
||||
CONFIG_PCIE_RCAR=y
|
||||
CONFIG_PCIE_RCAR_HOST=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
CONFIG_PCI_XGENE=y
|
||||
CONFIG_PCIE_ALTERA=y
|
||||
|
|
|
@ -73,11 +73,11 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||
".pushsection .altinstructions,\"a\"\n" \
|
||||
ALTINSTR_ENTRY(feature) \
|
||||
".popsection\n" \
|
||||
".pushsection .altinstr_replacement, \"a\"\n" \
|
||||
".subsection 1\n" \
|
||||
"663:\n\t" \
|
||||
newinstr "\n" \
|
||||
"664:\n\t" \
|
||||
".popsection\n\t" \
|
||||
".previous\n\t" \
|
||||
".org . - (664b-663b) + (662b-661b)\n\t" \
|
||||
".org . - (662b-661b) + (664b-663b)\n" \
|
||||
".endif\n"
|
||||
|
@ -117,9 +117,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||
662: .pushsection .altinstructions, "a"
|
||||
altinstruction_entry 661b, 663f, \cap, 662b-661b, 664f-663f
|
||||
.popsection
|
||||
.pushsection .altinstr_replacement, "ax"
|
||||
.subsection 1
|
||||
663: \insn2
|
||||
664: .popsection
|
||||
664: .previous
|
||||
.org . - (664b-663b) + (662b-661b)
|
||||
.org . - (662b-661b) + (664b-663b)
|
||||
.endif
|
||||
|
@ -160,7 +160,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||
.pushsection .altinstructions, "a"
|
||||
altinstruction_entry 663f, 661f, \cap, 664f-663f, 662f-661f
|
||||
.popsection
|
||||
.pushsection .altinstr_replacement, "ax"
|
||||
.subsection 1
|
||||
.align 2 /* So GAS knows label 661 is suitably aligned */
|
||||
661:
|
||||
.endm
|
||||
|
@ -179,9 +179,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||
.macro alternative_else
|
||||
662:
|
||||
.if .Lasm_alt_mode==0
|
||||
.pushsection .altinstr_replacement, "ax"
|
||||
.subsection 1
|
||||
.else
|
||||
.popsection
|
||||
.previous
|
||||
.endif
|
||||
663:
|
||||
.endm
|
||||
|
@ -192,7 +192,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||
.macro alternative_endif
|
||||
664:
|
||||
.if .Lasm_alt_mode==0
|
||||
.popsection
|
||||
.previous
|
||||
.endif
|
||||
.org . - (664b-663b) + (662b-661b)
|
||||
.org . - (662b-661b) + (664b-663b)
|
||||
|
|
|
@ -109,7 +109,7 @@ static inline u32 gic_read_pmr(void)
|
|||
return read_sysreg_s(SYS_ICC_PMR_EL1);
|
||||
}
|
||||
|
||||
static inline void gic_write_pmr(u32 val)
|
||||
static __always_inline void gic_write_pmr(u32 val)
|
||||
{
|
||||
write_sysreg_s(val, SYS_ICC_PMR_EL1);
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ struct arch_timer_erratum_workaround {
|
|||
u64 (*read_cntvct_el0)(void);
|
||||
int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
|
||||
int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
|
||||
bool disable_compat_vdso;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
|
||||
|
|
|
@ -675,7 +675,7 @@ static inline bool system_supports_generic_auth(void)
|
|||
cpus_have_const_cap(ARM64_HAS_GENERIC_AUTH);
|
||||
}
|
||||
|
||||
static inline bool system_uses_irq_prio_masking(void)
|
||||
static __always_inline bool system_uses_irq_prio_masking(void)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
|
||||
cpus_have_const_cap(ARM64_HAS_IRQ_PRIO_MASKING);
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
#define QCOM_CPU_PART_FALKOR 0xC00
|
||||
#define QCOM_CPU_PART_KRYO 0x200
|
||||
#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803
|
||||
#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804
|
||||
#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
|
||||
|
||||
#define NVIDIA_CPU_PART_DENVER 0x003
|
||||
|
@ -114,6 +115,7 @@
|
|||
#define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)
|
||||
#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
|
||||
#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)
|
||||
#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)
|
||||
#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
|
||||
#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER)
|
||||
#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL)
|
||||
|
|
|
@ -109,6 +109,8 @@ void disable_debug_monitors(enum dbg_active_el el);
|
|||
|
||||
void user_rewind_single_step(struct task_struct *task);
|
||||
void user_fastforward_single_step(struct task_struct *task);
|
||||
void user_regs_reset_single_step(struct user_pt_regs *regs,
|
||||
struct task_struct *task);
|
||||
|
||||
void kernel_enable_single_step(struct pt_regs *regs);
|
||||
void kernel_disable_single_step(void);
|
||||
|
|
|
@ -67,7 +67,7 @@ extern bool arm64_use_ng_mappings;
|
|||
#define PAGE_HYP __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_HYP_XN)
|
||||
#define PAGE_HYP_EXEC __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY)
|
||||
#define PAGE_HYP_RO __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY | PTE_HYP_XN)
|
||||
#define PAGE_HYP_DEVICE __pgprot(PROT_DEVICE_nGnRE | PTE_HYP)
|
||||
#define PAGE_HYP_DEVICE __pgprot(_PROT_DEFAULT | PTE_ATTRINDX(MT_DEVICE_nGnRE) | PTE_HYP | PTE_HYP_XN)
|
||||
|
||||
#define PAGE_S2_MEMATTR(attr) \
|
||||
({ \
|
||||
|
|
|
@ -34,6 +34,10 @@ static inline long syscall_get_error(struct task_struct *task,
|
|||
struct pt_regs *regs)
|
||||
{
|
||||
unsigned long error = regs->regs[0];
|
||||
|
||||
if (is_compat_thread(task_thread_info(task)))
|
||||
error = sign_extend64(error, 31);
|
||||
|
||||
return IS_ERR_VALUE(error) ? error : 0;
|
||||
}
|
||||
|
||||
|
@ -47,7 +51,13 @@ static inline void syscall_set_return_value(struct task_struct *task,
|
|||
struct pt_regs *regs,
|
||||
int error, long val)
|
||||
{
|
||||
regs->regs[0] = (long) error ? error : val;
|
||||
if (error)
|
||||
val = error;
|
||||
|
||||
if (is_compat_thread(task_thread_info(task)))
|
||||
val = lower_32_bits(val);
|
||||
|
||||
regs->regs[0] = val;
|
||||
}
|
||||
|
||||
#define SYSCALL_MAX_ARGS 6
|
||||
|
|
|
@ -93,6 +93,7 @@ void arch_release_task_struct(struct task_struct *tsk);
|
|||
#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
|
||||
#define _TIF_UPROBE (1 << TIF_UPROBE)
|
||||
#define _TIF_FSCHECK (1 << TIF_FSCHECK)
|
||||
#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
|
||||
#define _TIF_32BIT (1 << TIF_32BIT)
|
||||
#define _TIF_SVE (1 << TIF_SVE)
|
||||
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
#ifndef __ASM_VDSOCLOCKSOURCE_H
|
||||
#define __ASM_VDSOCLOCKSOURCE_H
|
||||
|
||||
#define VDSO_ARCH_CLOCKMODES \
|
||||
VDSO_CLOCKMODE_ARCHTIMER
|
||||
#define VDSO_ARCH_CLOCKMODES \
|
||||
/* vdso clocksource for both 32 and 64bit tasks */ \
|
||||
VDSO_CLOCKMODE_ARCHTIMER, \
|
||||
/* vdso clocksource for 64bit tasks only */ \
|
||||
VDSO_CLOCKMODE_ARCHTIMER_NOCOMPAT
|
||||
|
||||
#endif
|
||||
|
|
|
@ -111,7 +111,7 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode)
|
|||
* update. Return something. Core will do another round and then
|
||||
* see the mode change and fallback to the syscall.
|
||||
*/
|
||||
if (clock_mode == VDSO_CLOCKMODE_NONE)
|
||||
if (clock_mode != VDSO_CLOCKMODE_ARCHTIMER)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
@ -152,6 +152,12 @@ static __always_inline const struct vdso_data *__arch_get_vdso_data(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline bool vdso_clocksource_ok(const struct vdso_data *vd)
|
||||
{
|
||||
return vd->clock_mode == VDSO_CLOCKMODE_ARCHTIMER;
|
||||
}
|
||||
#define vdso_clocksource_ok vdso_clocksource_ok
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __ASM_VDSO_GETTIMEOFDAY_H */
|
||||
|
|
|
@ -43,20 +43,8 @@ bool alternative_is_applied(u16 cpufeature)
|
|||
*/
|
||||
static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||
{
|
||||
unsigned long replptr;
|
||||
|
||||
if (kernel_text_address(pc))
|
||||
return true;
|
||||
|
||||
replptr = (unsigned long)ALT_REPL_PTR(alt);
|
||||
if (pc >= replptr && pc <= (replptr + alt->alt_len))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* Branching into *another* alternate sequence is doomed, and
|
||||
* we're not even trying to fix it up.
|
||||
*/
|
||||
BUG();
|
||||
unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
|
||||
return !(pc >= replptr && pc <= (replptr + alt->alt_len));
|
||||
}
|
||||
|
||||
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
||||
|
|
|
@ -472,12 +472,7 @@ static bool
|
|||
has_cortex_a76_erratum_1463225(const struct arm64_cpu_capabilities *entry,
|
||||
int scope)
|
||||
{
|
||||
u32 midr = read_cpuid_id();
|
||||
/* Cortex-A76 r0p0 - r3p1 */
|
||||
struct midr_range range = MIDR_RANGE(MIDR_CORTEX_A76, 0, 0, 3, 1);
|
||||
|
||||
WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible());
|
||||
return is_midr_in_range(midr, &range) && is_kernel_in_hyp_mode();
|
||||
return is_affected_midr_range_list(entry, scope) && is_kernel_in_hyp_mode();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -728,6 +723,8 @@ static const struct midr_range erratum_1418040_list[] = {
|
|||
MIDR_RANGE(MIDR_CORTEX_A76, 0, 0, 3, 1),
|
||||
/* Neoverse-N1 r0p0 to r3p1 */
|
||||
MIDR_RANGE(MIDR_NEOVERSE_N1, 0, 0, 3, 1),
|
||||
/* Kryo4xx Gold (rcpe to rfpf) => (r0p0 to r3p1) */
|
||||
MIDR_RANGE(MIDR_QCOM_KRYO_4XX_GOLD, 0xc, 0xe, 0xf, 0xf),
|
||||
{},
|
||||
};
|
||||
#endif
|
||||
|
@ -772,11 +769,23 @@ static const struct midr_range erratum_speculative_at_list[] = {
|
|||
#ifdef CONFIG_ARM64_ERRATUM_1530923
|
||||
/* Cortex A55 r0p0 to r2p0 */
|
||||
MIDR_RANGE(MIDR_CORTEX_A55, 0, 0, 2, 0),
|
||||
/* Kryo4xx Silver (rdpe => r1p0) */
|
||||
MIDR_REV(MIDR_QCOM_KRYO_4XX_SILVER, 0xd, 0xe),
|
||||
#endif
|
||||
{},
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1463225
|
||||
static const struct midr_range erratum_1463225[] = {
|
||||
/* Cortex-A76 r0p0 - r3p1 */
|
||||
MIDR_RANGE(MIDR_CORTEX_A76, 0, 0, 3, 1),
|
||||
/* Kryo4xx Gold (rcpe to rfpf) => (r0p0 to r3p1) */
|
||||
MIDR_RANGE(MIDR_QCOM_KRYO_4XX_GOLD, 0xc, 0xe, 0xf, 0xf),
|
||||
{},
|
||||
};
|
||||
#endif
|
||||
|
||||
const struct arm64_cpu_capabilities arm64_errata[] = {
|
||||
#ifdef CONFIG_ARM64_WORKAROUND_CLEAN_CACHE
|
||||
{
|
||||
|
@ -916,6 +925,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
|
|||
.capability = ARM64_WORKAROUND_1463225,
|
||||
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
|
||||
.matches = has_cortex_a76_erratum_1463225,
|
||||
.midr_range_list = erratum_1463225,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_CAVIUM_TX2_ERRATUM_219
|
||||
|
|
|
@ -1408,6 +1408,8 @@ static bool cpu_has_broken_dbm(void)
|
|||
static const struct midr_range cpus[] = {
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1024718
|
||||
MIDR_RANGE(MIDR_CORTEX_A55, 0, 0, 1, 0), // A55 r0p0 -r1p0
|
||||
/* Kryo4xx Silver (rdpe => r1p0) */
|
||||
MIDR_REV(MIDR_QCOM_KRYO_4XX_SILVER, 0xd, 0xe),
|
||||
#endif
|
||||
{},
|
||||
};
|
||||
|
|
|
@ -141,17 +141,20 @@ postcore_initcall(debug_monitors_init);
|
|||
/*
|
||||
* Single step API and exception handling.
|
||||
*/
|
||||
static void set_regs_spsr_ss(struct pt_regs *regs)
|
||||
static void set_user_regs_spsr_ss(struct user_pt_regs *regs)
|
||||
{
|
||||
regs->pstate |= DBG_SPSR_SS;
|
||||
}
|
||||
NOKPROBE_SYMBOL(set_regs_spsr_ss);
|
||||
NOKPROBE_SYMBOL(set_user_regs_spsr_ss);
|
||||
|
||||
static void clear_regs_spsr_ss(struct pt_regs *regs)
|
||||
static void clear_user_regs_spsr_ss(struct user_pt_regs *regs)
|
||||
{
|
||||
regs->pstate &= ~DBG_SPSR_SS;
|
||||
}
|
||||
NOKPROBE_SYMBOL(clear_regs_spsr_ss);
|
||||
NOKPROBE_SYMBOL(clear_user_regs_spsr_ss);
|
||||
|
||||
#define set_regs_spsr_ss(r) set_user_regs_spsr_ss(&(r)->user_regs)
|
||||
#define clear_regs_spsr_ss(r) clear_user_regs_spsr_ss(&(r)->user_regs)
|
||||
|
||||
static DEFINE_SPINLOCK(debug_hook_lock);
|
||||
static LIST_HEAD(user_step_hook);
|
||||
|
@ -391,17 +394,26 @@ void user_rewind_single_step(struct task_struct *task)
|
|||
* If single step is active for this thread, then set SPSR.SS
|
||||
* to 1 to avoid returning to the active-pending state.
|
||||
*/
|
||||
if (test_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP))
|
||||
if (test_tsk_thread_flag(task, TIF_SINGLESTEP))
|
||||
set_regs_spsr_ss(task_pt_regs(task));
|
||||
}
|
||||
NOKPROBE_SYMBOL(user_rewind_single_step);
|
||||
|
||||
void user_fastforward_single_step(struct task_struct *task)
|
||||
{
|
||||
if (test_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP))
|
||||
if (test_tsk_thread_flag(task, TIF_SINGLESTEP))
|
||||
clear_regs_spsr_ss(task_pt_regs(task));
|
||||
}
|
||||
|
||||
void user_regs_reset_single_step(struct user_pt_regs *regs,
|
||||
struct task_struct *task)
|
||||
{
|
||||
if (test_tsk_thread_flag(task, TIF_SINGLESTEP))
|
||||
set_user_regs_spsr_ss(regs);
|
||||
else
|
||||
clear_user_regs_spsr_ss(regs);
|
||||
}
|
||||
|
||||
/* Kernel API */
|
||||
void kernel_enable_single_step(struct pt_regs *regs)
|
||||
{
|
||||
|
|
|
@ -57,7 +57,7 @@ static void notrace el1_dbg(struct pt_regs *regs, unsigned long esr)
|
|||
/*
|
||||
* The CPU masked interrupts, and we are leaving them masked during
|
||||
* do_debug_exception(). Update PMR as if we had called
|
||||
* local_mask_daif().
|
||||
* local_daif_mask().
|
||||
*/
|
||||
if (system_uses_irq_prio_masking())
|
||||
gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
|
||||
|
|
|
@ -126,8 +126,10 @@ alternative_else_nop_endif
|
|||
add \dst, \dst, #(\sym - .entry.tramp.text)
|
||||
.endm
|
||||
|
||||
// This macro corrupts x0-x3. It is the caller's duty
|
||||
// to save/restore them if required.
|
||||
/*
|
||||
* This macro corrupts x0-x3. It is the caller's duty to save/restore
|
||||
* them if required.
|
||||
*/
|
||||
.macro apply_ssbd, state, tmp1, tmp2
|
||||
#ifdef CONFIG_ARM64_SSBD
|
||||
alternative_cb arm64_enable_wa2_handling
|
||||
|
@ -167,13 +169,28 @@ alternative_cb_end
|
|||
stp x28, x29, [sp, #16 * 14]
|
||||
|
||||
.if \el == 0
|
||||
.if \regsize == 32
|
||||
/*
|
||||
* If we're returning from a 32-bit task on a system affected by
|
||||
* 1418040 then re-enable userspace access to the virtual counter.
|
||||
*/
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1418040
|
||||
alternative_if ARM64_WORKAROUND_1418040
|
||||
mrs x0, cntkctl_el1
|
||||
orr x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
|
||||
msr cntkctl_el1, x0
|
||||
alternative_else_nop_endif
|
||||
#endif
|
||||
.endif
|
||||
clear_gp_regs
|
||||
mrs x21, sp_el0
|
||||
ldr_this_cpu tsk, __entry_task, x20
|
||||
msr sp_el0, tsk
|
||||
|
||||
// Ensure MDSCR_EL1.SS is clear, since we can unmask debug exceptions
|
||||
// when scheduling.
|
||||
/*
|
||||
* Ensure MDSCR_EL1.SS is clear, since we can unmask debug exceptions
|
||||
* when scheduling.
|
||||
*/
|
||||
ldr x19, [tsk, #TSK_TI_FLAGS]
|
||||
disable_step_tsk x19, x20
|
||||
|
||||
|
@ -320,6 +337,14 @@ alternative_else_nop_endif
|
|||
tst x22, #PSR_MODE32_BIT // native task?
|
||||
b.eq 3f
|
||||
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1418040
|
||||
alternative_if ARM64_WORKAROUND_1418040
|
||||
mrs x0, cntkctl_el1
|
||||
bic x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
|
||||
msr cntkctl_el1, x0
|
||||
alternative_else_nop_endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARM64_ERRATUM_845719
|
||||
alternative_if ARM64_WORKAROUND_845719
|
||||
#ifdef CONFIG_PID_IN_CONTEXTIDR
|
||||
|
@ -331,21 +356,6 @@ alternative_if ARM64_WORKAROUND_845719
|
|||
alternative_else_nop_endif
|
||||
#endif
|
||||
3:
|
||||
#ifdef CONFIG_ARM64_ERRATUM_1418040
|
||||
alternative_if_not ARM64_WORKAROUND_1418040
|
||||
b 4f
|
||||
alternative_else_nop_endif
|
||||
/*
|
||||
* if (x22.mode32 == cntkctl_el1.el0vcten)
|
||||
* cntkctl_el1.el0vcten = ~cntkctl_el1.el0vcten
|
||||
*/
|
||||
mrs x1, cntkctl_el1
|
||||
eon x0, x1, x22, lsr #3
|
||||
tbz x0, #1, 4f
|
||||
eor x1, x1, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
|
||||
msr cntkctl_el1, x1
|
||||
4:
|
||||
#endif
|
||||
scs_save tsk, x0
|
||||
|
||||
/* No kernel C function calls after this as user keys are set. */
|
||||
|
@ -377,11 +387,11 @@ alternative_else_nop_endif
|
|||
.if \el == 0
|
||||
alternative_insn eret, nop, ARM64_UNMAP_KERNEL_AT_EL0
|
||||
#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
|
||||
bne 5f
|
||||
bne 4f
|
||||
msr far_el1, x30
|
||||
tramp_alias x30, tramp_exit_native
|
||||
br x30
|
||||
5:
|
||||
4:
|
||||
tramp_alias x30, tramp_exit_compat
|
||||
br x30
|
||||
#endif
|
||||
|
|
|
@ -252,7 +252,7 @@ static int kgdb_step_brk_fn(struct pt_regs *regs, unsigned int esr)
|
|||
if (!kgdb_single_step)
|
||||
return DBG_HOOK_ERROR;
|
||||
|
||||
kgdb_handle_exception(1, SIGTRAP, 0, regs);
|
||||
kgdb_handle_exception(0, SIGTRAP, 0, regs);
|
||||
return DBG_HOOK_HANDLED;
|
||||
}
|
||||
NOKPROBE_SYMBOL(kgdb_step_brk_fn);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue