mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-02-01 07:42:18 +00:00
BrooklynR 5.16.0
Staying ahead of others.
This commit is contained in:
parent
5085653c71
commit
b83067bfb6
@ -45,14 +45,24 @@ how the user addresses are used by the kernel:
|
|||||||
|
|
||||||
1. User addresses not accessed by the kernel but used for address space
|
1. User addresses not accessed by the kernel but used for address space
|
||||||
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
||||||
tagged pointers in this context is allowed with the exception of
|
tagged pointers in this context is allowed with these exceptions:
|
||||||
``brk()``, ``mmap()`` and the ``new_address`` argument to
|
|
||||||
``mremap()`` as these have the potential to alias with existing
|
|
||||||
user addresses.
|
|
||||||
|
|
||||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
- ``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
``mremap()`` as these have the potential to alias with existing
|
||||||
``mmap()`` and ``mremap()`` system calls.
|
user addresses.
|
||||||
|
|
||||||
|
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||||
|
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||||
|
``mmap()`` and ``mremap()`` system calls.
|
||||||
|
|
||||||
|
- The ``range.start``, ``start`` and ``dst`` arguments to the
|
||||||
|
``UFFDIO_*`` ``ioctl()``s used on a file descriptor obtained from
|
||||||
|
``userfaultfd()``, as fault addresses subsequently obtained by reading
|
||||||
|
the file descriptor will be untagged, which may otherwise confuse
|
||||||
|
tag-unaware programs.
|
||||||
|
|
||||||
|
NOTE: This behaviour changed in v5.14 and so some earlier kernels may
|
||||||
|
incorrectly accept valid tagged pointers for this system call.
|
||||||
|
|
||||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||||
relaxation is disabled by default and the application thread needs to
|
relaxation is disabled by default and the application thread needs to
|
||||||
|
93
Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
Normal file
93
Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/net/nxp,dwmac-imx.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: NXP i.MX8 DWMAC glue layer Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Joakim Zhang <qiangqing.zhang@nxp.com>
|
||||||
|
|
||||||
|
# We need a select here so we don't match all nodes with 'snps,dwmac'
|
||||||
|
select:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
enum:
|
||||||
|
- nxp,imx8mp-dwmac-eqos
|
||||||
|
- nxp,imx8dxl-dwmac-eqos
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: "snps,dwmac.yaml#"
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- nxp,imx8mp-dwmac-eqos
|
||||||
|
- nxp,imx8dxl-dwmac-eqos
|
||||||
|
- const: snps,dwmac-5.10a
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 5
|
||||||
|
items:
|
||||||
|
- description: MAC host clock
|
||||||
|
- description: MAC apb clock
|
||||||
|
- description: MAC timer clock
|
||||||
|
- description: MAC RGMII TX clock
|
||||||
|
- description: EQOS MEM clock
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 5
|
||||||
|
contains:
|
||||||
|
enum:
|
||||||
|
- stmmaceth
|
||||||
|
- pclk
|
||||||
|
- ptp_ref
|
||||||
|
- tx
|
||||||
|
- mem
|
||||||
|
|
||||||
|
intf_mode:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||||
|
description:
|
||||||
|
Should be phandle/offset pair. The phandle to the syscon node which
|
||||||
|
encompases the GPR register, and the offset of the GPR register.
|
||||||
|
|
||||||
|
snps,rmii_refclk_ext:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description:
|
||||||
|
To select RMII reference clock from external.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
#include <dt-bindings/clock/imx8mp-clock.h>
|
||||||
|
|
||||||
|
eqos: ethernet@30bf0000 {
|
||||||
|
compatible = "nxp,imx8mp-dwmac-eqos","snps,dwmac-5.10a";
|
||||||
|
reg = <0x30bf0000 0x10000>;
|
||||||
|
interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "macirq", "eth_wake_irq";
|
||||||
|
clocks = <&clk IMX8MP_CLK_ENET_QOS_ROOT>,
|
||||||
|
<&clk IMX8MP_CLK_QOS_ENET_ROOT>,
|
||||||
|
<&clk IMX8MP_CLK_ENET_QOS_TIMER>,
|
||||||
|
<&clk IMX8MP_CLK_ENET_QOS>;
|
||||||
|
clock-names = "stmmaceth", "pclk", "ptp_ref", "tx";
|
||||||
|
phy-mode = "rgmii";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
@ -28,6 +28,7 @@ select:
|
|||||||
- snps,dwmac-4.00
|
- snps,dwmac-4.00
|
||||||
- snps,dwmac-4.10a
|
- snps,dwmac-4.10a
|
||||||
- snps,dwmac-4.20a
|
- snps,dwmac-4.20a
|
||||||
|
- snps,dwmac-5.10a
|
||||||
- snps,dwxgmac
|
- snps,dwxgmac
|
||||||
- snps,dwxgmac-2.10
|
- snps,dwxgmac-2.10
|
||||||
|
|
||||||
@ -82,6 +83,7 @@ properties:
|
|||||||
- snps,dwmac-4.00
|
- snps,dwmac-4.00
|
||||||
- snps,dwmac-4.10a
|
- snps,dwmac-4.10a
|
||||||
- snps,dwmac-4.20a
|
- snps,dwmac-4.20a
|
||||||
|
- snps,dwmac-5.10a
|
||||||
- snps,dwxgmac
|
- snps,dwxgmac
|
||||||
- snps,dwxgmac-2.10
|
- snps,dwxgmac-2.10
|
||||||
|
|
||||||
@ -375,6 +377,7 @@ allOf:
|
|||||||
- snps,dwmac-4.00
|
- snps,dwmac-4.00
|
||||||
- snps,dwmac-4.10a
|
- snps,dwmac-4.10a
|
||||||
- snps,dwmac-4.20a
|
- snps,dwmac-4.20a
|
||||||
|
- snps,dwmac-5.10a
|
||||||
- snps,dwxgmac
|
- snps,dwxgmac
|
||||||
- snps,dwxgmac-2.10
|
- snps,dwxgmac-2.10
|
||||||
- st,spear600-gmac
|
- st,spear600-gmac
|
||||||
|
@ -57,12 +57,14 @@ properties:
|
|||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
power-domains:
|
power-domains:
|
||||||
|
deprecated: true
|
||||||
description:
|
description:
|
||||||
Power domain to use for enable control. This binding is only
|
Power domain to use for enable control. This binding is only
|
||||||
available if the compatible is chosen to regulator-fixed-domain.
|
available if the compatible is chosen to regulator-fixed-domain.
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
required-opps:
|
required-opps:
|
||||||
|
deprecated: true
|
||||||
description:
|
description:
|
||||||
Performance state to use for enable control. This binding is only
|
Performance state to use for enable control. This binding is only
|
||||||
available if the compatible is chosen to regulator-fixed-domain. The
|
available if the compatible is chosen to regulator-fixed-domain. The
|
||||||
|
@ -114,7 +114,7 @@ properties:
|
|||||||
|
|
||||||
ports:
|
ports:
|
||||||
$ref: /schemas/graph.yaml#/properties/ports
|
$ref: /schemas/graph.yaml#/properties/ports
|
||||||
properties:
|
patternProperties:
|
||||||
port(@[0-9a-f]+)?:
|
port(@[0-9a-f]+)?:
|
||||||
$ref: audio-graph-port.yaml#
|
$ref: audio-graph-port.yaml#
|
||||||
unevaluatedProperties: false
|
unevaluatedProperties: false
|
||||||
|
@ -243,8 +243,8 @@ Configuration Flags and Socket Options
|
|||||||
These are the various configuration flags that can be used to control
|
These are the various configuration flags that can be used to control
|
||||||
and monitor the behavior of AF_XDP sockets.
|
and monitor the behavior of AF_XDP sockets.
|
||||||
|
|
||||||
XDP_COPY and XDP_ZERO_COPY bind flags
|
XDP_COPY and XDP_ZEROCOPY bind flags
|
||||||
-------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
When you bind to a socket, the kernel will first try to use zero-copy
|
When you bind to a socket, the kernel will first try to use zero-copy
|
||||||
copy. If zero-copy is not supported, it will fall back on using copy
|
copy. If zero-copy is not supported, it will fall back on using copy
|
||||||
@ -252,7 +252,7 @@ mode, i.e. copying all packets out to user space. But if you would
|
|||||||
like to force a certain mode, you can use the following flags. If you
|
like to force a certain mode, you can use the following flags. If you
|
||||||
pass the XDP_COPY flag to the bind call, the kernel will force the
|
pass the XDP_COPY flag to the bind call, the kernel will force the
|
||||||
socket into copy mode. If it cannot use copy mode, the bind call will
|
socket into copy mode. If it cannot use copy mode, the bind call will
|
||||||
fail with an error. Conversely, the XDP_ZERO_COPY flag will force the
|
fail with an error. Conversely, the XDP_ZEROCOPY flag will force the
|
||||||
socket into zero-copy mode or fail.
|
socket into zero-copy mode or fail.
|
||||||
|
|
||||||
XDP_SHARED_UMEM bind flag
|
XDP_SHARED_UMEM bind flag
|
||||||
|
@ -826,7 +826,7 @@ tcp_fastopen_blackhole_timeout_sec - INTEGER
|
|||||||
initial value when the blackhole issue goes away.
|
initial value when the blackhole issue goes away.
|
||||||
0 to disable the blackhole detection.
|
0 to disable the blackhole detection.
|
||||||
|
|
||||||
By default, it is set to 1hr.
|
By default, it is set to 0 (feature is disabled).
|
||||||
|
|
||||||
tcp_fastopen_key - list of comma separated 32-digit hexadecimal INTEGERs
|
tcp_fastopen_key - list of comma separated 32-digit hexadecimal INTEGERs
|
||||||
The list consists of a primary key and an optional backup key. The
|
The list consists of a primary key and an optional backup key. The
|
||||||
|
4
Makefile
4
Makefile
@ -1,9 +1,9 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 14
|
PATCHLEVEL = 16
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc2
|
||||||
NAME = Opossums on Parade
|
NAME = BrooklynR dsat
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
2002
Makefile.txt
2002
Makefile.txt
File diff suppressed because it is too large
Load Diff
2
README
2
README
@ -1,4 +1,4 @@
|
|||||||
BrooklynR dsat NXT, The Blockchain Aerospace Linux 5.14.2
|
BrooklynR dsat NXT, The Blockchain Aerospace Linux 5.16.0
|
||||||
=========================================================
|
=========================================================
|
||||||
|
|
||||||
* BrooklynR dsat NXT (next generation) V 1.2 as optional dsat aerospace feature for orbital blockchain satellite project
|
* BrooklynR dsat NXT (next generation) V 1.2 as optional dsat aerospace feature for orbital blockchain satellite project
|
||||||
|
@ -90,13 +90,13 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 47 0>;
|
gpios = <&gpio 47 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "input";
|
linux,default-trigger = "input";
|
||||||
gpios = <&gpio 35 0>;
|
gpios = <&gpio 35 0>;
|
||||||
|
@ -103,7 +103,7 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 16 1>;
|
gpios = <&gpio 16 1>;
|
||||||
|
@ -90,7 +90,7 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 16 1>;
|
gpios = <&gpio 16 1>;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include "bcm2708-rpi.dtsi"
|
#include "bcm2708-rpi.dtsi"
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 47 0>;
|
gpios = <&gpio 47 0>;
|
||||||
|
@ -139,7 +139,7 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "actpwr";
|
linux,default-trigger = "actpwr";
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -93,7 +93,7 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "actpwr";
|
linux,default-trigger = "actpwr";
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -90,13 +90,13 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 47 0>;
|
gpios = <&gpio 47 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "input";
|
linux,default-trigger = "input";
|
||||||
gpios = <&gpio 35 0>;
|
gpios = <&gpio 35 0>;
|
||||||
|
@ -33,7 +33,7 @@ pixelvalve1: pixelvalve@7e207000 {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/delete-node/ sdhci@7e300000;
|
/delete-node/ mmc@7e300000;
|
||||||
|
|
||||||
sdhci: mmc: mmc@7e300000 {
|
sdhci: mmc: mmc@7e300000 {
|
||||||
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
|
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
|
||||||
|
@ -90,13 +90,13 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 47 0>;
|
gpios = <&gpio 47 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "input";
|
linux,default-trigger = "input";
|
||||||
gpios = <&gpio 35 0>;
|
gpios = <&gpio 35 0>;
|
||||||
|
@ -149,13 +149,13 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 29 0>;
|
gpios = <&gpio 29 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -164,13 +164,13 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&virtgpio 0 0>;
|
gpios = <&virtgpio 0 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "input";
|
linux,default-trigger = "input";
|
||||||
gpios = <&expgpio 7 0>;
|
gpios = <&expgpio 7 0>;
|
||||||
|
@ -123,7 +123,7 @@ &i2s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&virtgpio 0 0>;
|
gpios = <&virtgpio 0 0>;
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "bcm2711.dtsi"
|
#include "bcm2711.dtsi"
|
||||||
#include "bcm2835-rpi.dtsi"
|
#include "bcm2711-rpi.dtsi"
|
||||||
|
//#include "bcm283x-rpi-usb-peripheral.dtsi"
|
||||||
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
|
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
|
||||||
@ -14,25 +13,12 @@ chosen {
|
|||||||
stdout-path = "serial1:115200n8";
|
stdout-path = "serial1:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Will be filled by the bootloader */
|
|
||||||
memory@0 {
|
|
||||||
device_type = "memory";
|
|
||||||
reg = <0 0 0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
aliases {
|
|
||||||
emmc2bus = &emmc2bus;
|
|
||||||
ethernet0 = &genet;
|
|
||||||
pcie0 = &pcie0;
|
|
||||||
blconfig = &blconfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
@ -78,31 +64,15 @@ &ddc1 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&firmware {
|
&expgpio {
|
||||||
firmware_clocks: clocks {
|
gpio-line-names = "BT_ON",
|
||||||
compatible = "raspberrypi,firmware-clocks";
|
"WL_ON",
|
||||||
#clock-cells = <1>;
|
"PWR_LED_OFF",
|
||||||
};
|
"GLOBAL_RESET",
|
||||||
|
"VDD_SD_IO_SEL",
|
||||||
expgpio: gpio {
|
"CAM_GPIO",
|
||||||
compatible = "raspberrypi,firmware-gpio";
|
"SD_PWR_ON",
|
||||||
gpio-controller;
|
"SD_OC_N";
|
||||||
#gpio-cells = <2>;
|
|
||||||
gpio-line-names = "BT_ON",
|
|
||||||
"WL_ON",
|
|
||||||
"PWR_LED_OFF",
|
|
||||||
"GLOBAL_RESET",
|
|
||||||
"VDD_SD_IO_SEL",
|
|
||||||
"CAM_GPIO",
|
|
||||||
"SD_PWR_ON",
|
|
||||||
"SD_OC_N";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
reset: reset {
|
|
||||||
compatible = "raspberrypi,firmware-reset";
|
|
||||||
#reset-cells = <1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio {
|
&gpio {
|
||||||
@ -179,23 +149,13 @@ &gpio {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&hdmi0 {
|
&hdmi0 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
|
||||||
wifi-2.4ghz-coexistence;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi1 {
|
&hdmi1 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
|
||||||
wifi-2.4ghz-coexistence;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&hvs {
|
|
||||||
clocks = <&firmware_clocks 4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve0 {
|
&pixelvalve0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
@ -218,22 +178,6 @@ &pwm1 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&rmem {
|
|
||||||
/*
|
|
||||||
* RPi4's co-processor will copy the board's bootloader configuration
|
|
||||||
* into memory for the OS to consume. It'll also update this node with
|
|
||||||
* its placement information.
|
|
||||||
*/
|
|
||||||
blconfig: nvram@0 {
|
|
||||||
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
reg = <0x0 0x0 0x0>;
|
|
||||||
no-map;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/* SDHCI is used to control the SDIO for wireless */
|
/* SDHCI is used to control the SDIO for wireless */
|
||||||
&sdhci {
|
&sdhci {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -308,10 +252,6 @@ &uart1 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&vchiq {
|
|
||||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&vc4 {
|
&vc4 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
@ -335,7 +275,7 @@ soc {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "bcm2711-rpi.dtsi"
|
#include "bcm2711-rpi-ds.dtsi"
|
||||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||||
#include "bcm283x-rpi-cam1-regulator.dtsi"
|
#include "bcm283x-rpi-cam1-regulator.dtsi"
|
||||||
@ -351,11 +291,12 @@ aliases {
|
|||||||
mmc0 = &emmc2;
|
mmc0 = &emmc2;
|
||||||
mmc1 = &mmcnr;
|
mmc1 = &mmcnr;
|
||||||
mmc2 = &sdhost;
|
mmc2 = &sdhost;
|
||||||
/delete-property/ i2c2;
|
|
||||||
i2c3 = &i2c3;
|
i2c3 = &i2c3;
|
||||||
i2c4 = &i2c4;
|
i2c4 = &i2c4;
|
||||||
i2c5 = &i2c5;
|
i2c5 = &i2c5;
|
||||||
i2c6 = &i2c6;
|
i2c6 = &i2c6;
|
||||||
|
i2c20 = &ddc0;
|
||||||
|
i2c21 = &ddc1;
|
||||||
spi3 = &spi3;
|
spi3 = &spi3;
|
||||||
spi4 = &spi4;
|
spi4 = &spi4;
|
||||||
spi5 = &spi5;
|
spi5 = &spi5;
|
||||||
@ -561,13 +502,6 @@ &i2s {
|
|||||||
pinctrl-0 = <&i2s_pins>;
|
pinctrl-0 = <&i2s_pins>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/ {
|
|
||||||
__overrides__ {
|
|
||||||
/delete-property/ i2c2_baudrate;
|
|
||||||
/delete-property/ i2c2_iknowwhatimdoing;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// =============================================
|
// =============================================
|
||||||
// Board specific stuff here
|
// Board specific stuff here
|
||||||
|
|
||||||
@ -587,13 +521,13 @@ audio_pins: audio_pins {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -28,11 +28,11 @@ aliases {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
@ -181,12 +181,14 @@ &gpio {
|
|||||||
&hdmi0 {
|
&hdmi0 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
|
wifi-2.4ghz-coexistence;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi1 {
|
&hdmi1 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
|
wifi-2.4ghz-coexistence;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -333,7 +335,7 @@ soc {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "bcm2711-rpi.dtsi"
|
#include "bcm2711-rpi-ds.dtsi"
|
||||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||||
|
|
||||||
@ -348,11 +350,12 @@ aliases {
|
|||||||
mmc0 = &emmc2;
|
mmc0 = &emmc2;
|
||||||
mmc1 = &mmcnr;
|
mmc1 = &mmcnr;
|
||||||
mmc2 = &sdhost;
|
mmc2 = &sdhost;
|
||||||
/delete-property/ i2c2;
|
|
||||||
i2c3 = &i2c3;
|
i2c3 = &i2c3;
|
||||||
i2c4 = &i2c4;
|
i2c4 = &i2c4;
|
||||||
i2c5 = &i2c5;
|
i2c5 = &i2c5;
|
||||||
i2c6 = &i2c6;
|
i2c6 = &i2c6;
|
||||||
|
i2c20 = &ddc0;
|
||||||
|
i2c21 = &ddc1;
|
||||||
spi3 = &spi3;
|
spi3 = &spi3;
|
||||||
spi4 = &spi4;
|
spi4 = &spi4;
|
||||||
spi5 = &spi5;
|
spi5 = &spi5;
|
||||||
@ -558,13 +561,6 @@ &i2s {
|
|||||||
pinctrl-0 = <&i2s_pins>;
|
pinctrl-0 = <&i2s_pins>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/ {
|
|
||||||
__overrides__ {
|
|
||||||
/delete-property/ i2c2_baudrate;
|
|
||||||
/delete-property/ i2c2_iknowwhatimdoing;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// =============================================
|
// =============================================
|
||||||
// Board specific stuff here
|
// Board specific stuff here
|
||||||
|
|
||||||
@ -592,14 +588,14 @@ audio_pins: audio_pins {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -28,11 +28,11 @@ aliases {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
@ -193,12 +193,14 @@ &gpio {
|
|||||||
&hdmi0 {
|
&hdmi0 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
|
wifi-2.4ghz-coexistence;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi1 {
|
&hdmi1 {
|
||||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
|
wifi-2.4ghz-coexistence;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -277,9 +279,9 @@ &genet {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&genet_mdio {
|
&genet_mdio {
|
||||||
phy1: ethernet-phy@1 {
|
phy1: ethernet-phy@0 {
|
||||||
/* No PHY interrupt */
|
/* No PHY interrupt */
|
||||||
reg = <0x1>;
|
reg = <0x0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -346,7 +348,7 @@ soc {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "bcm2711-rpi.dtsi"
|
#include "bcm2711-rpi-ds.dtsi"
|
||||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||||
@ -363,11 +365,12 @@ aliases {
|
|||||||
mmc0 = &emmc2;
|
mmc0 = &emmc2;
|
||||||
mmc1 = &mmcnr;
|
mmc1 = &mmcnr;
|
||||||
mmc2 = &sdhost;
|
mmc2 = &sdhost;
|
||||||
/delete-property/ i2c2;
|
|
||||||
i2c3 = &i2c3;
|
i2c3 = &i2c3;
|
||||||
i2c4 = &i2c4;
|
i2c4 = &i2c4;
|
||||||
i2c5 = &i2c5;
|
i2c5 = &i2c5;
|
||||||
i2c6 = &i2c6;
|
i2c6 = &i2c6;
|
||||||
|
i2c20 = &ddc0;
|
||||||
|
i2c21 = &ddc1;
|
||||||
spi3 = &spi3;
|
spi3 = &spi3;
|
||||||
spi4 = &spi4;
|
spi4 = &spi4;
|
||||||
spi5 = &spi5;
|
spi5 = &spi5;
|
||||||
@ -573,13 +576,6 @@ &i2s {
|
|||||||
pinctrl-0 = <&i2s_pins>;
|
pinctrl-0 = <&i2s_pins>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/ {
|
|
||||||
__overrides__ {
|
|
||||||
/delete-property/ i2c2_baudrate;
|
|
||||||
/delete-property/ i2c2_iknowwhatimdoing;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// =============================================
|
// =============================================
|
||||||
// Board specific stuff here
|
// Board specific stuff here
|
||||||
|
|
||||||
@ -603,13 +599,13 @@ audio_pins: audio_pins {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: led-act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr_led: pwr {
|
pwr_led: led-pwr {
|
||||||
label = "led1";
|
label = "led1";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
|
205
arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
Normal file
205
arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
#include "bcm270x-rpi.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
__overrides__ {
|
||||||
|
arm_freq;
|
||||||
|
};
|
||||||
|
|
||||||
|
v3dbus: v3dbus {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
|
||||||
|
<0x40000000 0x0 0xff800000 0x0 0x00800000>;
|
||||||
|
dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||||
|
|
||||||
|
v3d: v3d@7ec04000 {
|
||||||
|
compatible = "brcm,2711-v3d";
|
||||||
|
reg =
|
||||||
|
<0x7ec00000 0x0 0x4000>,
|
||||||
|
<0x7ec04000 0x0 0x4000>;
|
||||||
|
reg-names = "hub", "core0";
|
||||||
|
|
||||||
|
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
||||||
|
resets = <&pm BCM2835_RESET_V3D>;
|
||||||
|
clocks = <&firmware_clocks 5>;
|
||||||
|
clocks-names = "v3d";
|
||||||
|
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
scb: scb {
|
||||||
|
/* Add a label */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&vc4 {
|
||||||
|
raspberrypi,firmware = <&firmware>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cma {
|
||||||
|
/* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
|
||||||
|
alloc-ranges = <0x0 0x00000000 0x30000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&scb {
|
||||||
|
ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
||||||
|
<0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
|
||||||
|
<0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
|
||||||
|
<0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
|
||||||
|
dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||||
|
|
||||||
|
dma40: dma@7e007b00 {
|
||||||
|
compatible = "brcm,bcm2711-dma";
|
||||||
|
reg = <0x0 0x7e007b00 0x0 0x400>;
|
||||||
|
interrupts =
|
||||||
|
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
|
||||||
|
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
|
||||||
|
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
|
||||||
|
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
|
||||||
|
interrupt-names = "dma11",
|
||||||
|
"dma12",
|
||||||
|
"dma13",
|
||||||
|
"dma14";
|
||||||
|
#dma-cells = <1>;
|
||||||
|
brcm,dma-channel-mask = <0x7800>;
|
||||||
|
};
|
||||||
|
|
||||||
|
xhci: xhci@7e9c0000 {
|
||||||
|
compatible = "generic-xhci";
|
||||||
|
status = "disabled";
|
||||||
|
reg = <0x0 0x7e9c0000 0x0 0x100000>;
|
||||||
|
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||||
|
};
|
||||||
|
|
||||||
|
hevc-decoder@7eb00000 {
|
||||||
|
compatible = "raspberrypi,rpivid-hevc-decoder";
|
||||||
|
reg = <0x0 0x7eb00000 0x0 0x10000>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
rpivid-local-intc@7eb10000 {
|
||||||
|
compatible = "raspberrypi,rpivid-local-intc";
|
||||||
|
reg = <0x0 0x7eb10000 0x0 0x1000>;
|
||||||
|
status = "okay";
|
||||||
|
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
h264-decoder@7eb20000 {
|
||||||
|
compatible = "raspberrypi,rpivid-h264-decoder";
|
||||||
|
reg = <0x0 0x7eb20000 0x0 0x10000>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
vp9-decoder@7eb30000 {
|
||||||
|
compatible = "raspberrypi,rpivid-vp9-decoder";
|
||||||
|
reg = <0x0 0x7eb30000 0x0 0x10000>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&dma40 {
|
||||||
|
/* The VPU firmware uses DMA channel 11 for VCHIQ */
|
||||||
|
brcm,dma-channel-mask = <0x7000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&vchiq {
|
||||||
|
compatible = "brcm,bcm2711-vchiq";
|
||||||
|
};
|
||||||
|
|
||||||
|
&firmwarekms {
|
||||||
|
compatible = "raspberrypi,rpi-firmware-kms-2711";
|
||||||
|
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&smi {
|
||||||
|
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc {
|
||||||
|
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmcnr {
|
||||||
|
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&csi0 {
|
||||||
|
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&csi1 {
|
||||||
|
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&random {
|
||||||
|
compatible = "brcm,bcm2711-rng200";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb {
|
||||||
|
/* Enable the FIQ support */
|
||||||
|
reg = <0x7e980000 0x10000>,
|
||||||
|
<0x7e00b200 0x200>;
|
||||||
|
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio {
|
||||||
|
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&emmc2 {
|
||||||
|
mmc-ddr-3_3v;
|
||||||
|
};
|
||||||
|
|
||||||
|
&vc4 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pixelvalve0 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pixelvalve1 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pixelvalve2 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pixelvalve3 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pixelvalve4 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi0 {
|
||||||
|
dmas = <&dma (10|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&ddc0 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi1 {
|
||||||
|
dmas = <&dma (17|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&ddc1 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&dvp {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
@ -1,205 +1,74 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
#include "bcm270x-rpi.dtsi"
|
#include "bcm2835-rpi.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
/* Will be filled by the bootloader */
|
||||||
arm_freq;
|
memory@0 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0 0 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
v3dbus: v3dbus {
|
aliases {
|
||||||
compatible = "simple-bus";
|
emmc2bus = &emmc2bus;
|
||||||
#address-cells = <1>;
|
ethernet0 = &genet;
|
||||||
#size-cells = <2>;
|
pcie0 = &pcie0;
|
||||||
ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
|
blconfig = &blconfig;
|
||||||
<0x40000000 0x0 0xff800000 0x0 0x00800000>;
|
|
||||||
dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
|
||||||
|
|
||||||
v3d: v3d@7ec04000 {
|
|
||||||
compatible = "brcm,2711-v3d";
|
|
||||||
reg =
|
|
||||||
<0x7ec00000 0x0 0x4000>,
|
|
||||||
<0x7ec04000 0x0 0x4000>;
|
|
||||||
reg-names = "hub", "core0";
|
|
||||||
|
|
||||||
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
|
||||||
resets = <&pm BCM2835_RESET_V3D>;
|
|
||||||
clocks = <&firmware_clocks 5>;
|
|
||||||
clocks-names = "v3d";
|
|
||||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
scb: scb {
|
|
||||||
/* Add a label */
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&vc4 {
|
&firmware {
|
||||||
raspberrypi,firmware = <&firmware>;
|
firmware_clocks: clocks {
|
||||||
};
|
compatible = "raspberrypi,firmware-clocks";
|
||||||
|
#clock-cells = <1>;
|
||||||
&cma {
|
|
||||||
/* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
|
|
||||||
alloc-ranges = <0x0 0x00000000 0x30000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&scb {
|
|
||||||
ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
|
||||||
<0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
|
|
||||||
<0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
|
|
||||||
<0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
|
|
||||||
dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
|
||||||
|
|
||||||
dma40: dma@7e007b00 {
|
|
||||||
compatible = "brcm,bcm2711-dma";
|
|
||||||
reg = <0x0 0x7e007b00 0x0 0x400>;
|
|
||||||
interrupts =
|
|
||||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
|
|
||||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
|
|
||||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
|
|
||||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
|
|
||||||
interrupt-names = "dma11",
|
|
||||||
"dma12",
|
|
||||||
"dma13",
|
|
||||||
"dma14";
|
|
||||||
#dma-cells = <1>;
|
|
||||||
brcm,dma-channel-mask = <0x7800>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xhci: xhci@7e9c0000 {
|
expgpio: gpio {
|
||||||
compatible = "generic-xhci";
|
compatible = "raspberrypi,firmware-gpio";
|
||||||
status = "disabled";
|
gpio-controller;
|
||||||
reg = <0x0 0x7e9c0000 0x0 0x100000>;
|
#gpio-cells = <2>;
|
||||||
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
|
||||||
};
|
|
||||||
|
|
||||||
hevc-decoder@7eb00000 {
|
|
||||||
compatible = "raspberrypi,rpivid-hevc-decoder";
|
|
||||||
reg = <0x0 0x7eb00000 0x0 0x10000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
rpivid-local-intc@7eb10000 {
|
reset: reset {
|
||||||
compatible = "raspberrypi,rpivid-local-intc";
|
compatible = "raspberrypi,firmware-reset";
|
||||||
reg = <0x0 0x7eb10000 0x0 0x1000>;
|
#reset-cells = <1>;
|
||||||
status = "okay";
|
|
||||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
h264-decoder@7eb20000 {
|
|
||||||
compatible = "raspberrypi,rpivid-h264-decoder";
|
|
||||||
reg = <0x0 0x7eb20000 0x0 0x10000>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
vp9-decoder@7eb30000 {
|
|
||||||
compatible = "raspberrypi,rpivid-vp9-decoder";
|
|
||||||
reg = <0x0 0x7eb30000 0x0 0x10000>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&dma40 {
|
|
||||||
/* The VPU firmware uses DMA channel 11 for VCHIQ */
|
|
||||||
brcm,dma-channel-mask = <0x7000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&vchiq {
|
|
||||||
compatible = "brcm,bcm2711-vchiq";
|
|
||||||
};
|
|
||||||
|
|
||||||
&firmwarekms {
|
|
||||||
compatible = "raspberrypi,rpi-firmware-kms-2711";
|
|
||||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&smi {
|
|
||||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&mmc {
|
|
||||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&mmcnr {
|
|
||||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&csi0 {
|
|
||||||
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&csi1 {
|
|
||||||
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&random {
|
|
||||||
compatible = "brcm,bcm2711-rng200";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&usb {
|
|
||||||
/* Enable the FIQ support */
|
|
||||||
reg = <0x7e980000 0x10000>,
|
|
||||||
<0x7e00b200 0x200>;
|
|
||||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&gpio {
|
|
||||||
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&emmc2 {
|
|
||||||
mmc-ddr-3_3v;
|
|
||||||
};
|
|
||||||
|
|
||||||
&vc4 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve0 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve1 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve2 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve3 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pixelvalve4 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi0 {
|
&hdmi0 {
|
||||||
dmas = <&dma (10|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||||
status = "disabled";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
};
|
wifi-2.4ghz-coexistence;
|
||||||
|
|
||||||
&ddc0 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi1 {
|
&hdmi1 {
|
||||||
dmas = <&dma (17|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||||
status = "disabled";
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||||
|
wifi-2.4ghz-coexistence;
|
||||||
};
|
};
|
||||||
|
|
||||||
&ddc1 {
|
&hvs {
|
||||||
status = "disabled";
|
clocks = <&firmware_clocks 4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&dvp {
|
&rmem {
|
||||||
status = "disabled";
|
/*
|
||||||
|
* RPi4's co-processor will copy the board's bootloader configuration
|
||||||
|
* into memory for the OS to consume. It'll also update this node with
|
||||||
|
* its placement information.
|
||||||
|
*/
|
||||||
|
blconfig: nvram@0 {
|
||||||
|
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
reg = <0x0 0x0 0x0>;
|
||||||
|
no-map;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&vchiq {
|
||||||
|
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
};
|
};
|
||||||
|
@ -434,7 +434,7 @@ emmc2bus: emmc2bus {
|
|||||||
ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
|
ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
|
||||||
dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
|
dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
|
||||||
|
|
||||||
emmc2: emmc2@7e340000 {
|
emmc2: mmc@7e340000 {
|
||||||
compatible = "brcm,bcm2711-emmc2";
|
compatible = "brcm,bcm2711-emmc2";
|
||||||
reg = <0x0 0x7e340000 0x100>;
|
reg = <0x0 0x7e340000 0x100>;
|
||||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -14,11 +14,11 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
|
@ -14,7 +14,7 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -15,11 +15,11 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
|
@ -15,7 +15,7 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ chosen {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -18,7 +18,7 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -4,7 +4,7 @@ / {
|
|||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
act {
|
led-act {
|
||||||
label = "ACT";
|
label = "ACT";
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
|
@ -15,11 +15,11 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
|
@ -19,11 +19,11 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
|
@ -20,11 +20,11 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
label = "PWR";
|
label = "PWR";
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
|
@ -20,7 +20,7 @@ memory@0 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
act {
|
led-act {
|
||||||
gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@ leds {
|
|||||||
* Since there is no upstream GPIO driver yet,
|
* Since there is no upstream GPIO driver yet,
|
||||||
* remove the incomplete node.
|
* remove the incomplete node.
|
||||||
*/
|
*/
|
||||||
/delete-node/ act;
|
/delete-node/ led-act;
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_3v3: fixed-regulator {
|
reg_3v3: fixed-regulator {
|
||||||
|
7
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
7
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
&usb {
|
||||||
|
dr_mode = "peripheral";
|
||||||
|
g-rx-fifo-size = <256>;
|
||||||
|
g-np-tx-fifo-size = <32>;
|
||||||
|
g-tx-fifo-size = <256 256 512 512 512 768 768>;
|
||||||
|
};
|
@ -444,7 +444,7 @@ pwm: pwm@7e20c000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@7e300000 {
|
sdhci: mmc@7e300000 {
|
||||||
compatible = "brcm,bcm2835-sdhci";
|
compatible = "brcm,bcm2835-sdhci";
|
||||||
reg = <0x7e300000 0x100>;
|
reg = <0x7e300000 0x100>;
|
||||||
interrupts = <2 30>;
|
interrupts = <2 30>;
|
||||||
|
@ -31,7 +31,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
|||||||
audremap.dtbo \
|
audremap.dtbo \
|
||||||
balena-fin.dtbo \
|
balena-fin.dtbo \
|
||||||
cap1106.dtbo \
|
cap1106.dtbo \
|
||||||
chipdip-i2s-master-dac.dtbo \
|
chipdip-dac.dtbo \
|
||||||
cma.dtbo \
|
cma.dtbo \
|
||||||
dht11.dtbo \
|
dht11.dtbo \
|
||||||
dionaudio-loco.dtbo \
|
dionaudio-loco.dtbo \
|
||||||
@ -220,6 +220,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
|||||||
upstream.dtbo \
|
upstream.dtbo \
|
||||||
upstream-pi4.dtbo \
|
upstream-pi4.dtbo \
|
||||||
vc4-fkms-v3d.dtbo \
|
vc4-fkms-v3d.dtbo \
|
||||||
|
vc4-fkms-v3d-pi4.dtbo \
|
||||||
vc4-kms-dpi-at056tn53v1.dtbo \
|
vc4-kms-dpi-at056tn53v1.dtbo \
|
||||||
vc4-kms-dsi-7inch.dtbo \
|
vc4-kms-dsi-7inch.dtbo \
|
||||||
vc4-kms-dsi-lt070me05000.dtbo \
|
vc4-kms-dsi-lt070me05000.dtbo \
|
||||||
|
@ -628,9 +628,9 @@ Load: dtoverlay=cap1106,<param>=<val>
|
|||||||
Params: int_pin GPIO pin for interrupt signal (default 23)
|
Params: int_pin GPIO pin for interrupt signal (default 23)
|
||||||
|
|
||||||
|
|
||||||
Name: chipdip-i2s-master-dac
|
Name: chipdip-dac
|
||||||
Info: Configures Raspberry PI to work as I2S slave with BCLK=64Fs.
|
Info: Configures Chip Dip audio cards.
|
||||||
Load: dtoverlay=chipdip-i2s-master-dac
|
Load: dtoverlay=chipdip-dac
|
||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
@ -3268,6 +3268,23 @@ Params: cma-512 CMA is 512MB (needs 1GB)
|
|||||||
cma-default Use upstream's default value
|
cma-default Use upstream's default value
|
||||||
|
|
||||||
|
|
||||||
|
Name: vc4-fkms-v3d-pi4
|
||||||
|
Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
|
||||||
|
display stack.
|
||||||
|
Load: dtoverlay=vc4-fkms-v3d-pi4,<param>
|
||||||
|
Params: cma-512 CMA is 512MB (needs 1GB)
|
||||||
|
cma-448 CMA is 448MB (needs 1GB)
|
||||||
|
cma-384 CMA is 384MB (needs 1GB)
|
||||||
|
cma-320 CMA is 320MB (needs 1GB)
|
||||||
|
cma-256 CMA is 256MB (needs 1GB)
|
||||||
|
cma-192 CMA is 192MB (needs 1GB)
|
||||||
|
cma-128 CMA is 128MB
|
||||||
|
cma-96 CMA is 96MB
|
||||||
|
cma-64 CMA is 64MB
|
||||||
|
cma-size CMA size in bytes, 4MB aligned
|
||||||
|
cma-default Use upstream's default value
|
||||||
|
|
||||||
|
|
||||||
Name: vc4-kms-dpi-at056tn53v1
|
Name: vc4-kms-dpi-at056tn53v1
|
||||||
Info: Enable an Innolux 5.6in VGA TFT connected to DPI interface under KMS.
|
Info: Enable an Innolux 5.6in VGA TFT connected to DPI interface under KMS.
|
||||||
Requires vc4-kms-v3d to be loaded.
|
Requires vc4-kms-v3d to be loaded.
|
||||||
|
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree overlay for ChipDip DAC
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "brcm,bcm2835";
|
||||||
|
|
||||||
|
fragment@0 {
|
||||||
|
target = <&i2s>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@1 {
|
||||||
|
target-path = "/";
|
||||||
|
__overlay__ {
|
||||||
|
spdif-transmitter {
|
||||||
|
#address-cells = <0>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
compatible = "linux,spdif-dit";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@2 {
|
||||||
|
target = <&sound>;
|
||||||
|
__overlay__ {
|
||||||
|
compatible = "chipdip,chipdip-dac";
|
||||||
|
i2s-controller = <&i2s>;
|
||||||
|
sr0-gpios = <&gpio 5 0>;
|
||||||
|
sr1-gpios = <&gpio 6 0>;
|
||||||
|
sr2-gpios = <&gpio 12 0>;
|
||||||
|
res0-gpios = <&gpio 24 0>;
|
||||||
|
res1-gpios = <&gpio 27 0>;
|
||||||
|
mute-gpios = <&gpio 4 0>;
|
||||||
|
sdwn-gpios = <&gpio 13 0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -138,6 +138,15 @@ upstream-pi4 {
|
|||||||
bcm2711;
|
bcm2711;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vc4-fkms-v3d {
|
||||||
|
bcm2835;
|
||||||
|
bcm2711 = "vc4-fkms-v3d-pi4";
|
||||||
|
};
|
||||||
|
|
||||||
|
vc4-fkms-v3d-pi4 {
|
||||||
|
bcm2711;
|
||||||
|
};
|
||||||
|
|
||||||
vc4-kms-v3d {
|
vc4-kms-v3d {
|
||||||
bcm2835;
|
bcm2835;
|
||||||
bcm2711 = "vc4-kms-v3d-pi4";
|
bcm2711 = "vc4-kms-v3d-pi4";
|
||||||
|
44
arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
Normal file
44
arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* vc4-fkms-v3d-overlay.dts
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
|
||||||
|
#include "cma-overlay.dts"
|
||||||
|
|
||||||
|
&frag0 {
|
||||||
|
size = <(512*1024*1024)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "brcm,bcm2711";
|
||||||
|
|
||||||
|
fragment@1 {
|
||||||
|
target = <&fb>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@2 {
|
||||||
|
target = <&firmwarekms>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@3 {
|
||||||
|
target = <&v3d>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@4 {
|
||||||
|
target = <&vc4>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -9,8 +9,12 @@
|
|||||||
|
|
||||||
#include "cma-overlay.dts"
|
#include "cma-overlay.dts"
|
||||||
|
|
||||||
|
&frag0 {
|
||||||
|
size = <(512*1024*1024)>;
|
||||||
|
};
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "brcm,bcm2835";
|
compatible = "brcm,bcm2711";
|
||||||
|
|
||||||
fragment@1 {
|
fragment@1 {
|
||||||
target = <&ddc0>;
|
target = <&ddc0>;
|
||||||
|
@ -663,6 +663,7 @@ CONFIG_TTY_PRINTK=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_TCG_TPM=m
|
CONFIG_TCG_TPM=m
|
||||||
CONFIG_TCG_TIS_SPI=m
|
CONFIG_TCG_TIS_SPI=m
|
||||||
|
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=m
|
CONFIG_I2C_CHARDEV=m
|
||||||
CONFIG_I2C_MUX_GPMUX=m
|
CONFIG_I2C_MUX_GPMUX=m
|
||||||
@ -937,6 +938,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
|||||||
CONFIG_TINYDRM_REPAPER=m
|
CONFIG_TINYDRM_REPAPER=m
|
||||||
CONFIG_TINYDRM_ST7586=m
|
CONFIG_TINYDRM_ST7586=m
|
||||||
CONFIG_TINYDRM_ST7735R=m
|
CONFIG_TINYDRM_ST7735R=m
|
||||||
|
CONFIG_DRM_GUD=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_BCM2708=y
|
CONFIG_FB_BCM2708=y
|
||||||
CONFIG_FB_UDL=m
|
CONFIG_FB_UDL=m
|
||||||
@ -971,6 +973,7 @@ CONFIG_SND_USB_6FIRE=m
|
|||||||
CONFIG_SND_USB_HIFACE=m
|
CONFIG_SND_USB_HIFACE=m
|
||||||
CONFIG_SND_SOC=m
|
CONFIG_SND_SOC=m
|
||||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||||
|
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||||
@ -1018,6 +1021,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
|||||||
CONFIG_SND_SOC_MAX98357A=m
|
CONFIG_SND_SOC_MAX98357A=m
|
||||||
CONFIG_SND_SOC_SPDIF=m
|
CONFIG_SND_SOC_SPDIF=m
|
||||||
CONFIG_SND_SOC_WM8804_I2C=m
|
CONFIG_SND_SOC_WM8804_I2C=m
|
||||||
|
CONFIG_SND_SOC_WM8960=m
|
||||||
CONFIG_SND_SIMPLE_CARD=m
|
CONFIG_SND_SIMPLE_CARD=m
|
||||||
CONFIG_HID_BATTERY_STRENGTH=y
|
CONFIG_HID_BATTERY_STRENGTH=y
|
||||||
CONFIG_HIDRAW=y
|
CONFIG_HIDRAW=y
|
||||||
|
@ -676,6 +676,7 @@ CONFIG_TTY_PRINTK=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_TCG_TPM=m
|
CONFIG_TCG_TPM=m
|
||||||
CONFIG_TCG_TIS_SPI=m
|
CONFIG_TCG_TIS_SPI=m
|
||||||
|
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=m
|
CONFIG_I2C_CHARDEV=m
|
||||||
CONFIG_I2C_MUX_GPMUX=m
|
CONFIG_I2C_MUX_GPMUX=m
|
||||||
@ -952,6 +953,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
|||||||
CONFIG_TINYDRM_REPAPER=m
|
CONFIG_TINYDRM_REPAPER=m
|
||||||
CONFIG_TINYDRM_ST7586=m
|
CONFIG_TINYDRM_ST7586=m
|
||||||
CONFIG_TINYDRM_ST7735R=m
|
CONFIG_TINYDRM_ST7735R=m
|
||||||
|
CONFIG_DRM_GUD=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_BCM2708=y
|
CONFIG_FB_BCM2708=y
|
||||||
CONFIG_FB_UDL=m
|
CONFIG_FB_UDL=m
|
||||||
@ -986,6 +988,7 @@ CONFIG_SND_USB_6FIRE=m
|
|||||||
CONFIG_SND_USB_HIFACE=m
|
CONFIG_SND_USB_HIFACE=m
|
||||||
CONFIG_SND_SOC=m
|
CONFIG_SND_SOC=m
|
||||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||||
|
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||||
@ -1033,6 +1036,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
|||||||
CONFIG_SND_SOC_MAX98357A=m
|
CONFIG_SND_SOC_MAX98357A=m
|
||||||
CONFIG_SND_SOC_SPDIF=m
|
CONFIG_SND_SOC_SPDIF=m
|
||||||
CONFIG_SND_SOC_WM8804_I2C=m
|
CONFIG_SND_SOC_WM8804_I2C=m
|
||||||
|
CONFIG_SND_SOC_WM8960=m
|
||||||
CONFIG_SND_SIMPLE_CARD=m
|
CONFIG_SND_SIMPLE_CARD=m
|
||||||
CONFIG_HID_BATTERY_STRENGTH=y
|
CONFIG_HID_BATTERY_STRENGTH=y
|
||||||
CONFIG_HIDRAW=y
|
CONFIG_HIDRAW=y
|
||||||
|
@ -657,6 +657,7 @@ CONFIG_TTY_PRINTK=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_TCG_TPM=m
|
CONFIG_TCG_TPM=m
|
||||||
CONFIG_TCG_TIS_SPI=m
|
CONFIG_TCG_TIS_SPI=m
|
||||||
|
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=m
|
CONFIG_I2C_CHARDEV=m
|
||||||
CONFIG_I2C_MUX_GPMUX=m
|
CONFIG_I2C_MUX_GPMUX=m
|
||||||
@ -930,6 +931,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
|||||||
CONFIG_TINYDRM_REPAPER=m
|
CONFIG_TINYDRM_REPAPER=m
|
||||||
CONFIG_TINYDRM_ST7586=m
|
CONFIG_TINYDRM_ST7586=m
|
||||||
CONFIG_TINYDRM_ST7735R=m
|
CONFIG_TINYDRM_ST7735R=m
|
||||||
|
CONFIG_DRM_GUD=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_BCM2708=y
|
CONFIG_FB_BCM2708=y
|
||||||
CONFIG_FB_UDL=m
|
CONFIG_FB_UDL=m
|
||||||
@ -964,6 +966,7 @@ CONFIG_SND_USB_6FIRE=m
|
|||||||
CONFIG_SND_USB_HIFACE=m
|
CONFIG_SND_USB_HIFACE=m
|
||||||
CONFIG_SND_SOC=m
|
CONFIG_SND_SOC=m
|
||||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||||
|
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||||
@ -1011,6 +1014,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
|||||||
CONFIG_SND_SOC_MAX98357A=m
|
CONFIG_SND_SOC_MAX98357A=m
|
||||||
CONFIG_SND_SOC_SPDIF=m
|
CONFIG_SND_SOC_SPDIF=m
|
||||||
CONFIG_SND_SOC_WM8804_I2C=m
|
CONFIG_SND_SOC_WM8804_I2C=m
|
||||||
|
CONFIG_SND_SOC_WM8960=m
|
||||||
CONFIG_SND_SIMPLE_CARD=m
|
CONFIG_SND_SIMPLE_CARD=m
|
||||||
CONFIG_HID_BATTERY_STRENGTH=y
|
CONFIG_HID_BATTERY_STRENGTH=y
|
||||||
CONFIG_HIDRAW=y
|
CONFIG_HIDRAW=y
|
||||||
|
@ -1063,7 +1063,7 @@ &usb2 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
extcon = <&usb2_id>;
|
extcon = <&usb2_id>;
|
||||||
|
|
||||||
usb@7600000 {
|
dwc3@7600000 {
|
||||||
extcon = <&usb2_id>;
|
extcon = <&usb2_id>;
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
maximum-speed = "high-speed";
|
maximum-speed = "high-speed";
|
||||||
@ -1074,7 +1074,7 @@ &usb3 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
extcon = <&usb3_id>;
|
extcon = <&usb3_id>;
|
||||||
|
|
||||||
usb@6a00000 {
|
dwc3@6a00000 {
|
||||||
extcon = <&usb3_id>;
|
extcon = <&usb3_id>;
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
};
|
};
|
||||||
|
@ -443,7 +443,7 @@ usb_0: usb@8af8800 {
|
|||||||
resets = <&gcc GCC_USB0_BCR>;
|
resets = <&gcc GCC_USB0_BCR>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
dwc_0: usb@8a00000 {
|
dwc_0: dwc3@8a00000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x8a00000 0xcd00>;
|
reg = <0x8a00000 0xcd00>;
|
||||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
@ -484,7 +484,7 @@ usb_1: usb@8cf8800 {
|
|||||||
resets = <&gcc GCC_USB1_BCR>;
|
resets = <&gcc GCC_USB1_BCR>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
dwc_1: usb@8c00000 {
|
dwc_1: dwc3@8c00000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x8c00000 0xcd00>;
|
reg = <0x8c00000 0xcd00>;
|
||||||
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -2566,7 +2566,7 @@ usb3: usb@6af8800 {
|
|||||||
power-domains = <&gcc USB30_GDSC>;
|
power-domains = <&gcc USB30_GDSC>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usb@6a00000 {
|
dwc3@6a00000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x06a00000 0xcc00>;
|
reg = <0x06a00000 0xcc00>;
|
||||||
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
@ -2873,7 +2873,7 @@ usb2: usb@76f8800 {
|
|||||||
qcom,select-utmi-as-pipe-clk;
|
qcom,select-utmi-as-pipe-clk;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usb@7600000 {
|
dwc3@7600000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x07600000 0xcc00>;
|
reg = <0x07600000 0xcc00>;
|
||||||
interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -1964,7 +1964,7 @@ usb3: usb@a8f8800 {
|
|||||||
|
|
||||||
resets = <&gcc GCC_USB_30_BCR>;
|
resets = <&gcc GCC_USB_30_BCR>;
|
||||||
|
|
||||||
usb3_dwc3: usb@a800000 {
|
usb3_dwc3: dwc3@a800000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x0a800000 0xcd00>;
|
reg = <0x0a800000 0xcd00>;
|
||||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -337,7 +337,7 @@ &usb2_phy_sec {
|
|||||||
&usb3 {
|
&usb3 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
usb@7580000 {
|
dwc3@7580000 {
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -544,7 +544,7 @@ usb3: usb@7678800 {
|
|||||||
assigned-clock-rates = <19200000>, <200000000>;
|
assigned-clock-rates = <19200000>, <200000000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usb@7580000 {
|
dwc3@7580000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x07580000 0xcd00>;
|
reg = <0x07580000 0xcd00>;
|
||||||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
@ -573,7 +573,7 @@ usb2: usb@79b8800 {
|
|||||||
assigned-clock-rates = <19200000>, <133333333>;
|
assigned-clock-rates = <19200000>, <133333333>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usb@78c0000 {
|
dwc3@78c0000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x078c0000 0xcc00>;
|
reg = <0x078c0000 0xcc00>;
|
||||||
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -2756,7 +2756,7 @@ usb_1: usb@a6f8800 {
|
|||||||
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3 0>;
|
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3 0>;
|
||||||
interconnect-names = "usb-ddr", "apps-usb";
|
interconnect-names = "usb-ddr", "apps-usb";
|
||||||
|
|
||||||
usb_1_dwc3: usb@a600000 {
|
usb_1_dwc3: dwc3@a600000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0 0x0a600000 0 0xe000>;
|
reg = <0 0x0a600000 0 0xe000>;
|
||||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -3781,7 +3781,7 @@ usb_1: usb@a6f8800 {
|
|||||||
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_0 0>;
|
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_0 0>;
|
||||||
interconnect-names = "usb-ddr", "apps-usb";
|
interconnect-names = "usb-ddr", "apps-usb";
|
||||||
|
|
||||||
usb_1_dwc3: usb@a600000 {
|
usb_1_dwc3: dwc3@a600000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0 0x0a600000 0 0xcd00>;
|
reg = <0 0x0a600000 0 0xcd00>;
|
||||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
@ -3829,7 +3829,7 @@ usb_2: usb@a8f8800 {
|
|||||||
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_1 0>;
|
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_1 0>;
|
||||||
interconnect-names = "usb-ddr", "apps-usb";
|
interconnect-names = "usb-ddr", "apps-usb";
|
||||||
|
|
||||||
usb_2_dwc3: usb@a800000 {
|
usb_2_dwc3: dwc3@a800000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0 0x0a800000 0 0xcd00>;
|
reg = <0 0x0a800000 0 0xcd00>;
|
||||||
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -2344,7 +2344,7 @@ usb_1: usb@a6f8800 {
|
|||||||
|
|
||||||
resets = <&gcc GCC_USB30_PRIM_BCR>;
|
resets = <&gcc GCC_USB30_PRIM_BCR>;
|
||||||
|
|
||||||
usb_1_dwc3: usb@a600000 {
|
usb_1_dwc3: dwc3@a600000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0 0x0a600000 0 0xcd00>;
|
reg = <0 0x0a600000 0 0xcd00>;
|
||||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -673,6 +673,7 @@ CONFIG_TTY_PRINTK=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_TCG_TPM=m
|
CONFIG_TCG_TPM=m
|
||||||
CONFIG_TCG_TIS_SPI=m
|
CONFIG_TCG_TIS_SPI=m
|
||||||
|
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=m
|
CONFIG_I2C_CHARDEV=m
|
||||||
CONFIG_I2C_MUX_GPMUX=m
|
CONFIG_I2C_MUX_GPMUX=m
|
||||||
@ -955,6 +956,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
|||||||
CONFIG_TINYDRM_REPAPER=m
|
CONFIG_TINYDRM_REPAPER=m
|
||||||
CONFIG_TINYDRM_ST7586=m
|
CONFIG_TINYDRM_ST7586=m
|
||||||
CONFIG_TINYDRM_ST7735R=m
|
CONFIG_TINYDRM_ST7735R=m
|
||||||
|
CONFIG_DRM_GUD=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_BCM2708=y
|
CONFIG_FB_BCM2708=y
|
||||||
CONFIG_FB_UDL=m
|
CONFIG_FB_UDL=m
|
||||||
@ -989,6 +991,7 @@ CONFIG_SND_USB_6FIRE=m
|
|||||||
CONFIG_SND_USB_HIFACE=m
|
CONFIG_SND_USB_HIFACE=m
|
||||||
CONFIG_SND_SOC=m
|
CONFIG_SND_SOC=m
|
||||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||||
|
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||||
@ -1036,6 +1039,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
|||||||
CONFIG_SND_SOC_MAX98357A=m
|
CONFIG_SND_SOC_MAX98357A=m
|
||||||
CONFIG_SND_SOC_SPDIF=m
|
CONFIG_SND_SOC_SPDIF=m
|
||||||
CONFIG_SND_SOC_WM8804_I2C=m
|
CONFIG_SND_SOC_WM8804_I2C=m
|
||||||
|
CONFIG_SND_SOC_WM8960=m
|
||||||
CONFIG_SND_SIMPLE_CARD=m
|
CONFIG_SND_SIMPLE_CARD=m
|
||||||
CONFIG_HID_BATTERY_STRENGTH=y
|
CONFIG_HID_BATTERY_STRENGTH=y
|
||||||
CONFIG_HIDRAW=y
|
CONFIG_HIDRAW=y
|
||||||
|
@ -649,6 +649,7 @@ CONFIG_TTY_PRINTK=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_TCG_TPM=m
|
CONFIG_TCG_TPM=m
|
||||||
CONFIG_TCG_TIS_SPI=m
|
CONFIG_TCG_TIS_SPI=m
|
||||||
|
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_CHARDEV=m
|
CONFIG_I2C_CHARDEV=m
|
||||||
CONFIG_I2C_MUX=m
|
CONFIG_I2C_MUX=m
|
||||||
@ -869,6 +870,7 @@ CONFIG_DRM_DISPLAY_CONNECTOR=m
|
|||||||
CONFIG_DRM_SIMPLE_BRIDGE=m
|
CONFIG_DRM_SIMPLE_BRIDGE=m
|
||||||
CONFIG_DRM_VC4=m
|
CONFIG_DRM_VC4=m
|
||||||
CONFIG_DRM_VC4_HDMI_CEC=y
|
CONFIG_DRM_VC4_HDMI_CEC=y
|
||||||
|
CONFIG_DRM_GUD=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_BCM2708=y
|
CONFIG_FB_BCM2708=y
|
||||||
CONFIG_FB_UDL=m
|
CONFIG_FB_UDL=m
|
||||||
@ -900,6 +902,7 @@ CONFIG_SND_USB_CAIAQ_INPUT=y
|
|||||||
CONFIG_SND_USB_6FIRE=m
|
CONFIG_SND_USB_6FIRE=m
|
||||||
CONFIG_SND_SOC=m
|
CONFIG_SND_SOC=m
|
||||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||||
|
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
|
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
|
||||||
@ -936,6 +939,7 @@ CONFIG_SND_SOC_ICS43432=m
|
|||||||
CONFIG_SND_SOC_MA120X0P=m
|
CONFIG_SND_SOC_MA120X0P=m
|
||||||
CONFIG_SND_SOC_MAX98357A=m
|
CONFIG_SND_SOC_MAX98357A=m
|
||||||
CONFIG_SND_SOC_WM8804_I2C=m
|
CONFIG_SND_SOC_WM8804_I2C=m
|
||||||
|
CONFIG_SND_SOC_WM8960=m
|
||||||
CONFIG_SND_SIMPLE_CARD=m
|
CONFIG_SND_SIMPLE_CARD=m
|
||||||
CONFIG_HIDRAW=y
|
CONFIG_HIDRAW=y
|
||||||
CONFIG_UHID=m
|
CONFIG_UHID=m
|
||||||
|
@ -32,20 +32,23 @@ SYM_FUNC_END(__arm_smccc_sve_check)
|
|||||||
EXPORT_SYMBOL(__arm_smccc_sve_check)
|
EXPORT_SYMBOL(__arm_smccc_sve_check)
|
||||||
|
|
||||||
.macro SMCCC instr
|
.macro SMCCC instr
|
||||||
|
stp x29, x30, [sp, #-16]!
|
||||||
|
mov x29, sp
|
||||||
alternative_if ARM64_SVE
|
alternative_if ARM64_SVE
|
||||||
bl __arm_smccc_sve_check
|
bl __arm_smccc_sve_check
|
||||||
alternative_else_nop_endif
|
alternative_else_nop_endif
|
||||||
\instr #0
|
\instr #0
|
||||||
ldr x4, [sp]
|
ldr x4, [sp, #16]
|
||||||
stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
|
stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
|
||||||
stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
|
stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
|
||||||
ldr x4, [sp, #8]
|
ldr x4, [sp, #24]
|
||||||
cbz x4, 1f /* no quirk structure */
|
cbz x4, 1f /* no quirk structure */
|
||||||
ldr x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
|
ldr x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
|
||||||
cmp x9, #ARM_SMCCC_QUIRK_QCOM_A6
|
cmp x9, #ARM_SMCCC_QUIRK_QCOM_A6
|
||||||
b.ne 1f
|
b.ne 1f
|
||||||
str x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
|
str x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
|
||||||
1: ret
|
1: ldp x29, x30, [sp], #16
|
||||||
|
ret
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1339,7 +1339,6 @@ void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
|
|||||||
return dt_virt;
|
return dt_virt;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_PGTABLE_LEVELS > 3
|
|
||||||
int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
||||||
{
|
{
|
||||||
pud_t new_pud = pfn_pud(__phys_to_pfn(phys), mk_pud_sect_prot(prot));
|
pud_t new_pud = pfn_pud(__phys_to_pfn(phys), mk_pud_sect_prot(prot));
|
||||||
@ -1354,16 +1353,6 @@ int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pud_clear_huge(pud_t *pudp)
|
|
||||||
{
|
|
||||||
if (!pud_sect(READ_ONCE(*pudp)))
|
|
||||||
return 0;
|
|
||||||
pud_clear(pudp);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CONFIG_PGTABLE_LEVELS > 2
|
|
||||||
int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
|
int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
|
||||||
{
|
{
|
||||||
pmd_t new_pmd = pfn_pmd(__phys_to_pfn(phys), mk_pmd_sect_prot(prot));
|
pmd_t new_pmd = pfn_pmd(__phys_to_pfn(phys), mk_pmd_sect_prot(prot));
|
||||||
@ -1378,6 +1367,14 @@ int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pud_clear_huge(pud_t *pudp)
|
||||||
|
{
|
||||||
|
if (!pud_sect(READ_ONCE(*pudp)))
|
||||||
|
return 0;
|
||||||
|
pud_clear(pudp);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int pmd_clear_huge(pmd_t *pmdp)
|
int pmd_clear_huge(pmd_t *pmdp)
|
||||||
{
|
{
|
||||||
if (!pmd_sect(READ_ONCE(*pmdp)))
|
if (!pmd_sect(READ_ONCE(*pmdp)))
|
||||||
@ -1385,7 +1382,6 @@ int pmd_clear_huge(pmd_t *pmdp)
|
|||||||
pmd_clear(pmdp);
|
pmd_clear(pmdp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)
|
int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)
|
||||||
{
|
{
|
||||||
|
@ -33,6 +33,7 @@ config MAC
|
|||||||
depends on MMU
|
depends on MMU
|
||||||
select MMU_MOTOROLA if MMU
|
select MMU_MOTOROLA if MMU
|
||||||
select HAVE_ARCH_NVRAM_OPS
|
select HAVE_ARCH_NVRAM_OPS
|
||||||
|
select HAVE_PATA_PLATFORM
|
||||||
select LEGACY_TIMER_TICK
|
select LEGACY_TIMER_TICK
|
||||||
help
|
help
|
||||||
This option enables support for the Apple Macintosh series of
|
This option enables support for the Apple Macintosh series of
|
||||||
|
@ -59,7 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
|||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2697,8 +2697,10 @@ static int kvmppc_core_vcpu_create_hv(struct kvm_vcpu *vcpu)
|
|||||||
HFSCR_DSCR | HFSCR_VECVSX | HFSCR_FP | HFSCR_PREFIX;
|
HFSCR_DSCR | HFSCR_VECVSX | HFSCR_FP | HFSCR_PREFIX;
|
||||||
if (cpu_has_feature(CPU_FTR_HVMODE)) {
|
if (cpu_has_feature(CPU_FTR_HVMODE)) {
|
||||||
vcpu->arch.hfscr &= mfspr(SPRN_HFSCR);
|
vcpu->arch.hfscr &= mfspr(SPRN_HFSCR);
|
||||||
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
|
if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
|
||||||
vcpu->arch.hfscr |= HFSCR_TM;
|
vcpu->arch.hfscr |= HFSCR_TM;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (cpu_has_feature(CPU_FTR_TM_COMP))
|
if (cpu_has_feature(CPU_FTR_TM_COMP))
|
||||||
vcpu->arch.hfscr |= HFSCR_TM;
|
vcpu->arch.hfscr |= HFSCR_TM;
|
||||||
|
@ -302,6 +302,9 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
|
|||||||
if (vcpu->kvm->arch.l1_ptcr == 0)
|
if (vcpu->kvm->arch.l1_ptcr == 0)
|
||||||
return H_NOT_AVAILABLE;
|
return H_NOT_AVAILABLE;
|
||||||
|
|
||||||
|
if (MSR_TM_TRANSACTIONAL(vcpu->arch.shregs.msr))
|
||||||
|
return H_BAD_MODE;
|
||||||
|
|
||||||
/* copy parameters in */
|
/* copy parameters in */
|
||||||
hv_ptr = kvmppc_get_gpr(vcpu, 4);
|
hv_ptr = kvmppc_get_gpr(vcpu, 4);
|
||||||
regs_ptr = kvmppc_get_gpr(vcpu, 5);
|
regs_ptr = kvmppc_get_gpr(vcpu, 5);
|
||||||
@ -322,6 +325,23 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
|
|||||||
if (l2_hv.vcpu_token >= NR_CPUS)
|
if (l2_hv.vcpu_token >= NR_CPUS)
|
||||||
return H_PARAMETER;
|
return H_PARAMETER;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* L1 must have set up a suspended state to enter the L2 in a
|
||||||
|
* transactional state, and only in that case. These have to be
|
||||||
|
* filtered out here to prevent causing a TM Bad Thing in the
|
||||||
|
* host HRFID. We could synthesize a TM Bad Thing back to the L1
|
||||||
|
* here but there doesn't seem like much point.
|
||||||
|
*/
|
||||||
|
if (MSR_TM_SUSPENDED(vcpu->arch.shregs.msr)) {
|
||||||
|
if (!MSR_TM_ACTIVE(l2_regs.msr))
|
||||||
|
return H_BAD_MODE;
|
||||||
|
} else {
|
||||||
|
if (l2_regs.msr & MSR_TS_MASK)
|
||||||
|
return H_BAD_MODE;
|
||||||
|
if (WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_TS_MASK))
|
||||||
|
return H_BAD_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
/* translate lpid */
|
/* translate lpid */
|
||||||
l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
|
l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
|
||||||
if (!l2)
|
if (!l2)
|
||||||
|
@ -317,6 +317,9 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
|||||||
*/
|
*/
|
||||||
mtspr(SPRN_HDEC, hdec);
|
mtspr(SPRN_HDEC, hdec);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
|
tm_return_to_guest:
|
||||||
|
#endif
|
||||||
mtspr(SPRN_DAR, vcpu->arch.shregs.dar);
|
mtspr(SPRN_DAR, vcpu->arch.shregs.dar);
|
||||||
mtspr(SPRN_DSISR, vcpu->arch.shregs.dsisr);
|
mtspr(SPRN_DSISR, vcpu->arch.shregs.dsisr);
|
||||||
mtspr(SPRN_SRR0, vcpu->arch.shregs.srr0);
|
mtspr(SPRN_SRR0, vcpu->arch.shregs.srr0);
|
||||||
@ -415,11 +418,23 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
|||||||
* is in real suspend mode and is trying to transition to
|
* is in real suspend mode and is trying to transition to
|
||||||
* transactional mode.
|
* transactional mode.
|
||||||
*/
|
*/
|
||||||
if (local_paca->kvm_hstate.fake_suspend &&
|
if (!local_paca->kvm_hstate.fake_suspend &&
|
||||||
(vcpu->arch.shregs.msr & MSR_TS_S)) {
|
(vcpu->arch.shregs.msr & MSR_TS_S)) {
|
||||||
if (kvmhv_p9_tm_emulation_early(vcpu)) {
|
if (kvmhv_p9_tm_emulation_early(vcpu)) {
|
||||||
/* Prevent it being handled again. */
|
/*
|
||||||
trap = 0;
|
* Go straight back into the guest with the
|
||||||
|
* new NIP/MSR as set by TM emulation.
|
||||||
|
*/
|
||||||
|
mtspr(SPRN_HSRR0, vcpu->arch.regs.nip);
|
||||||
|
mtspr(SPRN_HSRR1, vcpu->arch.shregs.msr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* tm_return_to_guest re-loads SRR0/1, DAR,
|
||||||
|
* DSISR after RI is cleared, in case they had
|
||||||
|
* been clobbered by a MCE.
|
||||||
|
*/
|
||||||
|
__mtmsrd(0, 1); /* clear RI */
|
||||||
|
goto tm_return_to_guest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -499,6 +514,10 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
|||||||
* If we are in real mode, only switch MMU on after the MMU is
|
* If we are in real mode, only switch MMU on after the MMU is
|
||||||
* switched to host, to avoid the P9_RADIX_PREFETCH_BUG.
|
* switched to host, to avoid the P9_RADIX_PREFETCH_BUG.
|
||||||
*/
|
*/
|
||||||
|
if (IS_ENABLED(CONFIG_PPC_TRANSACTIONAL_MEM) &&
|
||||||
|
vcpu->arch.shregs.msr & MSR_TS_MASK)
|
||||||
|
msr |= MSR_TS_S;
|
||||||
|
|
||||||
__mtmsrd(msr, 0);
|
__mtmsrd(msr, 0);
|
||||||
|
|
||||||
end_timing(vcpu);
|
end_timing(vcpu);
|
||||||
|
@ -242,6 +242,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
|
|||||||
* value so we can restore it on the way out.
|
* value so we can restore it on the way out.
|
||||||
*/
|
*/
|
||||||
orig_rets = args.rets;
|
orig_rets = args.rets;
|
||||||
|
if (be32_to_cpu(args.nargs) >= ARRAY_SIZE(args.args)) {
|
||||||
|
/*
|
||||||
|
* Don't overflow our args array: ensure there is room for
|
||||||
|
* at least rets[0] (even if the call specifies 0 nret).
|
||||||
|
*
|
||||||
|
* Each handler must then check for the correct nargs and nret
|
||||||
|
* values, but they may always return failure in rets[0].
|
||||||
|
*/
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
args.rets = &args.args[be32_to_cpu(args.nargs)];
|
args.rets = &args.args[be32_to_cpu(args.nargs)];
|
||||||
|
|
||||||
mutex_lock(&vcpu->kvm->arch.rtas_token_lock);
|
mutex_lock(&vcpu->kvm->arch.rtas_token_lock);
|
||||||
@ -269,9 +280,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
|
|||||||
fail:
|
fail:
|
||||||
/*
|
/*
|
||||||
* We only get here if the guest has called RTAS with a bogus
|
* We only get here if the guest has called RTAS with a bogus
|
||||||
* args pointer. That means we can't get to the args, and so we
|
* args pointer or nargs/nret values that would overflow the
|
||||||
* can't fail the RTAS call. So fail right out to userspace,
|
* array. That means we can't get to the args, and so we can't
|
||||||
* which should kill the guest.
|
* fail the RTAS call. So fail right out to userspace, which
|
||||||
|
* should kill the guest.
|
||||||
|
*
|
||||||
|
* SLOF should actually pass the hcall return value from the
|
||||||
|
* rtas handler call in r3, so enter_rtas could be modified to
|
||||||
|
* return a failure indication in r3 and we could return such
|
||||||
|
* errors to the guest rather than failing to host userspace.
|
||||||
|
* However old guests that don't test for failure could then
|
||||||
|
* continue silently after errors, so for now we won't do this.
|
||||||
*/
|
*/
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -240,3 +240,13 @@ void __init setup_kuap(bool disabled)
|
|||||||
mtspr(SPRN_MD_AP, MD_APG_KUAP);
|
mtspr(SPRN_MD_AP, MD_APG_KUAP);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int pud_clear_huge(pud_t *pud)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pmd_clear_huge(pmd_t *pmd)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -42,6 +42,7 @@ static int pasemi_system_reset_exception(struct pt_regs *regs)
|
|||||||
switch (regs->msr & SRR1_WAKEMASK) {
|
switch (regs->msr & SRR1_WAKEMASK) {
|
||||||
case SRR1_WAKEDEC:
|
case SRR1_WAKEDEC:
|
||||||
set_dec(1);
|
set_dec(1);
|
||||||
|
break;
|
||||||
case SRR1_WAKEEE:
|
case SRR1_WAKEEE:
|
||||||
/*
|
/*
|
||||||
* Handle these when interrupts get re-enabled and we take
|
* Handle these when interrupts get re-enabled and we take
|
||||||
|
@ -27,10 +27,10 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md);
|
|||||||
|
|
||||||
#define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
|
#define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
|
||||||
|
|
||||||
/* Load initrd at enough distance from DRAM start */
|
/* Load initrd anywhere in system RAM */
|
||||||
static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
|
static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
|
||||||
{
|
{
|
||||||
return image_addr + SZ_256M;
|
return ULONG_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define alloc_screen_info(x...) (&screen_info)
|
#define alloc_screen_info(x...) (&screen_info)
|
||||||
|
@ -132,8 +132,12 @@ unsigned long get_wchan(struct task_struct *task)
|
|||||||
{
|
{
|
||||||
unsigned long pc = 0;
|
unsigned long pc = 0;
|
||||||
|
|
||||||
if (likely(task && task != current && !task_is_running(task)))
|
if (likely(task && task != current && !task_is_running(task))) {
|
||||||
|
if (!try_get_task_stack(task))
|
||||||
|
return 0;
|
||||||
walk_stackframe(task, NULL, save_wchan, &pc);
|
walk_stackframe(task, NULL, save_wchan, &pc);
|
||||||
|
put_task_stack(task);
|
||||||
|
}
|
||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,23 +30,23 @@ ENTRY(__asm_copy_from_user)
|
|||||||
* t0 - end of uncopied dst
|
* t0 - end of uncopied dst
|
||||||
*/
|
*/
|
||||||
add t0, a0, a2
|
add t0, a0, a2
|
||||||
bgtu a0, t0, 5f
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use byte copy only if too small.
|
* Use byte copy only if too small.
|
||||||
|
* SZREG holds 4 for RV32 and 8 for RV64
|
||||||
*/
|
*/
|
||||||
li a3, 8*SZREG /* size must be larger than size in word_copy */
|
li a3, 9*SZREG /* size must be larger than size in word_copy */
|
||||||
bltu a2, a3, .Lbyte_copy_tail
|
bltu a2, a3, .Lbyte_copy_tail
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy first bytes until dst is align to word boundary.
|
* Copy first bytes until dst is aligned to word boundary.
|
||||||
* a0 - start of dst
|
* a0 - start of dst
|
||||||
* t1 - start of aligned dst
|
* t1 - start of aligned dst
|
||||||
*/
|
*/
|
||||||
addi t1, a0, SZREG-1
|
addi t1, a0, SZREG-1
|
||||||
andi t1, t1, ~(SZREG-1)
|
andi t1, t1, ~(SZREG-1)
|
||||||
/* dst is already aligned, skip */
|
/* dst is already aligned, skip */
|
||||||
beq a0, t1, .Lskip_first_bytes
|
beq a0, t1, .Lskip_align_dst
|
||||||
1:
|
1:
|
||||||
/* a5 - one byte for copying data */
|
/* a5 - one byte for copying data */
|
||||||
fixup lb a5, 0(a1), 10f
|
fixup lb a5, 0(a1), 10f
|
||||||
@ -55,7 +55,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
addi a0, a0, 1 /* dst */
|
addi a0, a0, 1 /* dst */
|
||||||
bltu a0, t1, 1b /* t1 - start of aligned dst */
|
bltu a0, t1, 1b /* t1 - start of aligned dst */
|
||||||
|
|
||||||
.Lskip_first_bytes:
|
.Lskip_align_dst:
|
||||||
/*
|
/*
|
||||||
* Now dst is aligned.
|
* Now dst is aligned.
|
||||||
* Use shift-copy if src is misaligned.
|
* Use shift-copy if src is misaligned.
|
||||||
@ -72,10 +72,9 @@ ENTRY(__asm_copy_from_user)
|
|||||||
*
|
*
|
||||||
* a0 - start of aligned dst
|
* a0 - start of aligned dst
|
||||||
* a1 - start of aligned src
|
* a1 - start of aligned src
|
||||||
* a3 - a1 & mask:(SZREG-1)
|
|
||||||
* t0 - end of aligned dst
|
* t0 - end of aligned dst
|
||||||
*/
|
*/
|
||||||
addi t0, t0, -(8*SZREG-1) /* not to over run */
|
addi t0, t0, -(8*SZREG) /* not to over run */
|
||||||
2:
|
2:
|
||||||
fixup REG_L a4, 0(a1), 10f
|
fixup REG_L a4, 0(a1), 10f
|
||||||
fixup REG_L a5, SZREG(a1), 10f
|
fixup REG_L a5, SZREG(a1), 10f
|
||||||
@ -97,7 +96,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
addi a1, a1, 8*SZREG
|
addi a1, a1, 8*SZREG
|
||||||
bltu a0, t0, 2b
|
bltu a0, t0, 2b
|
||||||
|
|
||||||
addi t0, t0, 8*SZREG-1 /* revert to original value */
|
addi t0, t0, 8*SZREG /* revert to original value */
|
||||||
j .Lbyte_copy_tail
|
j .Lbyte_copy_tail
|
||||||
|
|
||||||
.Lshift_copy:
|
.Lshift_copy:
|
||||||
@ -107,7 +106,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
* For misaligned copy we still perform aligned word copy, but
|
* For misaligned copy we still perform aligned word copy, but
|
||||||
* we need to use the value fetched from the previous iteration and
|
* we need to use the value fetched from the previous iteration and
|
||||||
* do some shifts.
|
* do some shifts.
|
||||||
* This is safe because reading less than a word size.
|
* This is safe because reading is less than a word size.
|
||||||
*
|
*
|
||||||
* a0 - start of aligned dst
|
* a0 - start of aligned dst
|
||||||
* a1 - start of src
|
* a1 - start of src
|
||||||
@ -117,7 +116,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
*/
|
*/
|
||||||
/* calculating aligned word boundary for dst */
|
/* calculating aligned word boundary for dst */
|
||||||
andi t1, t0, ~(SZREG-1)
|
andi t1, t0, ~(SZREG-1)
|
||||||
/* Converting unaligned src to aligned arc */
|
/* Converting unaligned src to aligned src */
|
||||||
andi a1, a1, ~(SZREG-1)
|
andi a1, a1, ~(SZREG-1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -125,11 +124,11 @@ ENTRY(__asm_copy_from_user)
|
|||||||
* t3 - prev shift
|
* t3 - prev shift
|
||||||
* t4 - current shift
|
* t4 - current shift
|
||||||
*/
|
*/
|
||||||
slli t3, a3, LGREG
|
slli t3, a3, 3 /* converting bytes in a3 to bits */
|
||||||
li a5, SZREG*8
|
li a5, SZREG*8
|
||||||
sub t4, a5, t3
|
sub t4, a5, t3
|
||||||
|
|
||||||
/* Load the first word to combine with seceond word */
|
/* Load the first word to combine with second word */
|
||||||
fixup REG_L a5, 0(a1), 10f
|
fixup REG_L a5, 0(a1), 10f
|
||||||
|
|
||||||
3:
|
3:
|
||||||
@ -161,7 +160,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
* a1 - start of remaining src
|
* a1 - start of remaining src
|
||||||
* t0 - end of remaining dst
|
* t0 - end of remaining dst
|
||||||
*/
|
*/
|
||||||
bgeu a0, t0, 5f
|
bgeu a0, t0, .Lout_copy_user /* check if end of copy */
|
||||||
4:
|
4:
|
||||||
fixup lb a5, 0(a1), 10f
|
fixup lb a5, 0(a1), 10f
|
||||||
addi a1, a1, 1 /* src */
|
addi a1, a1, 1 /* src */
|
||||||
@ -169,7 +168,7 @@ ENTRY(__asm_copy_from_user)
|
|||||||
addi a0, a0, 1 /* dst */
|
addi a0, a0, 1 /* dst */
|
||||||
bltu a0, t0, 4b /* t0 - end of dst */
|
bltu a0, t0, 4b /* t0 - end of dst */
|
||||||
|
|
||||||
5:
|
.Lout_copy_user:
|
||||||
/* Disable access to user memory */
|
/* Disable access to user memory */
|
||||||
csrc CSR_STATUS, t6
|
csrc CSR_STATUS, t6
|
||||||
li a0, 0
|
li a0, 0
|
||||||
|
@ -127,10 +127,17 @@ void __init mem_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The default maximal physical memory size is -PAGE_OFFSET,
|
* The default maximal physical memory size is -PAGE_OFFSET for 32-bit kernel,
|
||||||
* limit the memory size via mem.
|
* whereas for 64-bit kernel, the end of the virtual address space is occupied
|
||||||
|
* by the modules/BPF/kernel mappings which reduces the available size of the
|
||||||
|
* linear mapping.
|
||||||
|
* Limit the memory size via mem.
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_64BIT
|
||||||
|
static phys_addr_t memory_limit = -PAGE_OFFSET - SZ_4G;
|
||||||
|
#else
|
||||||
static phys_addr_t memory_limit = -PAGE_OFFSET;
|
static phys_addr_t memory_limit = -PAGE_OFFSET;
|
||||||
|
#endif
|
||||||
|
|
||||||
static int __init early_mem(char *p)
|
static int __init early_mem(char *p)
|
||||||
{
|
{
|
||||||
@ -152,7 +159,7 @@ static void __init setup_bootmem(void)
|
|||||||
{
|
{
|
||||||
phys_addr_t vmlinux_end = __pa_symbol(&_end);
|
phys_addr_t vmlinux_end = __pa_symbol(&_end);
|
||||||
phys_addr_t vmlinux_start = __pa_symbol(&_start);
|
phys_addr_t vmlinux_start = __pa_symbol(&_start);
|
||||||
phys_addr_t max_mapped_addr = __pa(~(ulong)0);
|
phys_addr_t __maybe_unused max_mapped_addr;
|
||||||
phys_addr_t dram_end;
|
phys_addr_t dram_end;
|
||||||
|
|
||||||
#ifdef CONFIG_XIP_KERNEL
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
@ -175,14 +182,21 @@ static void __init setup_bootmem(void)
|
|||||||
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
||||||
|
|
||||||
dram_end = memblock_end_of_DRAM();
|
dram_end = memblock_end_of_DRAM();
|
||||||
|
|
||||||
|
#ifndef CONFIG_64BIT
|
||||||
/*
|
/*
|
||||||
* memblock allocator is not aware of the fact that last 4K bytes of
|
* memblock allocator is not aware of the fact that last 4K bytes of
|
||||||
* the addressable memory can not be mapped because of IS_ERR_VALUE
|
* the addressable memory can not be mapped because of IS_ERR_VALUE
|
||||||
* macro. Make sure that last 4k bytes are not usable by memblock
|
* macro. Make sure that last 4k bytes are not usable by memblock
|
||||||
* if end of dram is equal to maximum addressable memory.
|
* if end of dram is equal to maximum addressable memory. For 64-bit
|
||||||
|
* kernel, this problem can't happen here as the end of the virtual
|
||||||
|
* address space is occupied by the kernel mapping then this check must
|
||||||
|
* be done in create_kernel_page_table.
|
||||||
*/
|
*/
|
||||||
|
max_mapped_addr = __pa(~(ulong)0);
|
||||||
if (max_mapped_addr == (dram_end - 1))
|
if (max_mapped_addr == (dram_end - 1))
|
||||||
memblock_set_current_limit(max_mapped_addr - 4096);
|
memblock_set_current_limit(max_mapped_addr - 4096);
|
||||||
|
#endif
|
||||||
|
|
||||||
min_low_pfn = PFN_UP(memblock_start_of_DRAM());
|
min_low_pfn = PFN_UP(memblock_start_of_DRAM());
|
||||||
max_low_pfn = max_pfn = PFN_DOWN(dram_end);
|
max_low_pfn = max_pfn = PFN_DOWN(dram_end);
|
||||||
@ -570,6 +584,14 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)
|
|||||||
BUG_ON((PAGE_OFFSET % PGDIR_SIZE) != 0);
|
BUG_ON((PAGE_OFFSET % PGDIR_SIZE) != 0);
|
||||||
BUG_ON((kernel_map.phys_addr % map_size) != 0);
|
BUG_ON((kernel_map.phys_addr % map_size) != 0);
|
||||||
|
|
||||||
|
#ifdef CONFIG_64BIT
|
||||||
|
/*
|
||||||
|
* The last 4K bytes of the addressable memory can not be mapped because
|
||||||
|
* of IS_ERR_VALUE macro.
|
||||||
|
*/
|
||||||
|
BUG_ON((kernel_map.virt_addr + kernel_map.size) > ADDRESS_SPACE_END - SZ_4K);
|
||||||
|
#endif
|
||||||
|
|
||||||
pt_ops.alloc_pte = alloc_pte_early;
|
pt_ops.alloc_pte = alloc_pte_early;
|
||||||
pt_ops.get_pte_virt = get_pte_virt_early;
|
pt_ops.get_pte_virt = get_pte_virt_early;
|
||||||
#ifndef __PAGETABLE_PMD_FOLDED
|
#ifndef __PAGETABLE_PMD_FOLDED
|
||||||
@ -709,6 +731,8 @@ static void __init setup_vm_final(void)
|
|||||||
if (start <= __pa(PAGE_OFFSET) &&
|
if (start <= __pa(PAGE_OFFSET) &&
|
||||||
__pa(PAGE_OFFSET) < end)
|
__pa(PAGE_OFFSET) < end)
|
||||||
start = __pa(PAGE_OFFSET);
|
start = __pa(PAGE_OFFSET);
|
||||||
|
if (end >= __pa(PAGE_OFFSET) + memory_limit)
|
||||||
|
end = __pa(PAGE_OFFSET) + memory_limit;
|
||||||
|
|
||||||
map_size = best_map_size(start, end - start);
|
map_size = best_map_size(start, end - start);
|
||||||
for (pa = start; pa < end; pa += map_size) {
|
for (pa = start; pa < end; pa += map_size) {
|
||||||
|
@ -9,16 +9,6 @@
|
|||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
#include <asm/sigp.h>
|
#include <asm/sigp.h>
|
||||||
|
|
||||||
#ifdef CC_USING_EXPOLINE
|
|
||||||
.pushsection .dma.text.__s390_indirect_jump_r14,"axG"
|
|
||||||
__dma__s390_indirect_jump_r14:
|
|
||||||
larl %r1,0f
|
|
||||||
ex 0,0(%r1)
|
|
||||||
j .
|
|
||||||
0: br %r14
|
|
||||||
.popsection
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.section .dma.text,"ax"
|
.section .dma.text,"ax"
|
||||||
/*
|
/*
|
||||||
* Simplified version of expoline thunk. The normal thunks can not be used here,
|
* Simplified version of expoline thunk. The normal thunks can not be used here,
|
||||||
@ -27,11 +17,10 @@ __dma__s390_indirect_jump_r14:
|
|||||||
* affects a few functions that are not performance-relevant.
|
* affects a few functions that are not performance-relevant.
|
||||||
*/
|
*/
|
||||||
.macro BR_EX_DMA_r14
|
.macro BR_EX_DMA_r14
|
||||||
#ifdef CC_USING_EXPOLINE
|
larl %r1,0f
|
||||||
jg __dma__s390_indirect_jump_r14
|
ex 0,0(%r1)
|
||||||
#else
|
j .
|
||||||
br %r14
|
0: br %r14
|
||||||
#endif
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5,7 +5,12 @@ CONFIG_WATCH_QUEUE=y
|
|||||||
CONFIG_AUDIT=y
|
CONFIG_AUDIT=y
|
||||||
CONFIG_NO_HZ_IDLE=y
|
CONFIG_NO_HZ_IDLE=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_BPF_SYSCALL=y
|
||||||
|
CONFIG_BPF_JIT=y
|
||||||
|
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||||
|
CONFIG_BPF_LSM=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_SCHED_CORE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||||
CONFIG_TASKSTATS=y
|
CONFIG_TASKSTATS=y
|
||||||
@ -28,14 +33,13 @@ CONFIG_CGROUP_DEVICE=y
|
|||||||
CONFIG_CGROUP_CPUACCT=y
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
CONFIG_CGROUP_PERF=y
|
CONFIG_CGROUP_PERF=y
|
||||||
CONFIG_CGROUP_BPF=y
|
CONFIG_CGROUP_BPF=y
|
||||||
|
CONFIG_CGROUP_MISC=y
|
||||||
CONFIG_NAMESPACES=y
|
CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
CONFIG_CHECKPOINT_RESTORE=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_LSM=y
|
|
||||||
CONFIG_BPF_SYSCALL=y
|
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
CONFIG_PROFILING=y
|
CONFIG_PROFILING=y
|
||||||
@ -76,6 +80,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
|||||||
CONFIG_BLK_WBT=y
|
CONFIG_BLK_WBT=y
|
||||||
CONFIG_BLK_CGROUP_IOLATENCY=y
|
CONFIG_BLK_CGROUP_IOLATENCY=y
|
||||||
CONFIG_BLK_CGROUP_IOCOST=y
|
CONFIG_BLK_CGROUP_IOCOST=y
|
||||||
|
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
@ -95,6 +100,7 @@ CONFIG_CLEANCACHE=y
|
|||||||
CONFIG_FRONTSWAP=y
|
CONFIG_FRONTSWAP=y
|
||||||
CONFIG_CMA_DEBUG=y
|
CONFIG_CMA_DEBUG=y
|
||||||
CONFIG_CMA_DEBUGFS=y
|
CONFIG_CMA_DEBUGFS=y
|
||||||
|
CONFIG_CMA_SYSFS=y
|
||||||
CONFIG_CMA_AREAS=7
|
CONFIG_CMA_AREAS=7
|
||||||
CONFIG_MEM_SOFT_DIRTY=y
|
CONFIG_MEM_SOFT_DIRTY=y
|
||||||
CONFIG_ZSWAP=y
|
CONFIG_ZSWAP=y
|
||||||
@ -158,6 +164,7 @@ CONFIG_IPV6_RPL_LWTUNNEL=y
|
|||||||
CONFIG_MPTCP=y
|
CONFIG_MPTCP=y
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
CONFIG_BRIDGE_NETFILTER=m
|
CONFIG_BRIDGE_NETFILTER=m
|
||||||
|
CONFIG_NETFILTER_NETLINK_HOOK=m
|
||||||
CONFIG_NF_CONNTRACK=m
|
CONFIG_NF_CONNTRACK=m
|
||||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||||
@ -280,6 +287,7 @@ CONFIG_IP_VS_FTP=m
|
|||||||
CONFIG_IP_VS_PE_SIP=m
|
CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NFT_FIB_IPV4=m
|
CONFIG_NFT_FIB_IPV4=m
|
||||||
CONFIG_NF_TABLES_ARP=y
|
CONFIG_NF_TABLES_ARP=y
|
||||||
|
CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_IP_NF_IPTABLES=m
|
CONFIG_IP_NF_IPTABLES=m
|
||||||
CONFIG_IP_NF_MATCH_AH=m
|
CONFIG_IP_NF_MATCH_AH=m
|
||||||
CONFIG_IP_NF_MATCH_ECN=m
|
CONFIG_IP_NF_MATCH_ECN=m
|
||||||
@ -384,12 +392,11 @@ CONFIG_VSOCKETS=m
|
|||||||
CONFIG_VIRTIO_VSOCKETS=m
|
CONFIG_VIRTIO_VSOCKETS=m
|
||||||
CONFIG_NETLINK_DIAG=m
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_IOV=y
|
|
||||||
# CONFIG_PCIEASPM is not set
|
# CONFIG_PCIEASPM is not set
|
||||||
CONFIG_PCI_DEBUG=y
|
CONFIG_PCI_DEBUG=y
|
||||||
|
CONFIG_PCI_IOV=y
|
||||||
CONFIG_HOTPLUG_PCI=y
|
CONFIG_HOTPLUG_PCI=y
|
||||||
CONFIG_HOTPLUG_PCI_S390=y
|
CONFIG_HOTPLUG_PCI_S390=y
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
@ -436,7 +443,7 @@ CONFIG_MD_MULTIPATH=m
|
|||||||
CONFIG_MD_FAULTY=m
|
CONFIG_MD_FAULTY=m
|
||||||
CONFIG_MD_CLUSTER=m
|
CONFIG_MD_CLUSTER=m
|
||||||
CONFIG_BCACHE=m
|
CONFIG_BCACHE=m
|
||||||
CONFIG_BLK_DEV_DM=m
|
CONFIG_BLK_DEV_DM=y
|
||||||
CONFIG_DM_UNSTRIPED=m
|
CONFIG_DM_UNSTRIPED=m
|
||||||
CONFIG_DM_CRYPT=m
|
CONFIG_DM_CRYPT=m
|
||||||
CONFIG_DM_SNAPSHOT=m
|
CONFIG_DM_SNAPSHOT=m
|
||||||
@ -453,6 +460,7 @@ CONFIG_DM_MULTIPATH_ST=m
|
|||||||
CONFIG_DM_MULTIPATH_HST=m
|
CONFIG_DM_MULTIPATH_HST=m
|
||||||
CONFIG_DM_MULTIPATH_IOA=m
|
CONFIG_DM_MULTIPATH_IOA=m
|
||||||
CONFIG_DM_DELAY=m
|
CONFIG_DM_DELAY=m
|
||||||
|
CONFIG_DM_INIT=y
|
||||||
CONFIG_DM_UEVENT=y
|
CONFIG_DM_UEVENT=y
|
||||||
CONFIG_DM_FLAKEY=m
|
CONFIG_DM_FLAKEY=m
|
||||||
CONFIG_DM_VERITY=m
|
CONFIG_DM_VERITY=m
|
||||||
@ -495,6 +503,7 @@ CONFIG_NLMON=m
|
|||||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROSOFT is not set
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
CONFIG_MLX4_EN=m
|
CONFIG_MLX4_EN=m
|
||||||
CONFIG_MLX5_CORE=m
|
CONFIG_MLX5_CORE=m
|
||||||
@ -551,7 +560,6 @@ CONFIG_INPUT_EVDEV=y
|
|||||||
CONFIG_LEGACY_PTY_COUNT=0
|
CONFIG_LEGACY_PTY_COUNT=0
|
||||||
CONFIG_VIRTIO_CONSOLE=m
|
CONFIG_VIRTIO_CONSOLE=m
|
||||||
CONFIG_HW_RANDOM_VIRTIO=m
|
CONFIG_HW_RANDOM_VIRTIO=m
|
||||||
CONFIG_RAW_DRIVER=m
|
|
||||||
CONFIG_HANGCHECK_TIMER=m
|
CONFIG_HANGCHECK_TIMER=m
|
||||||
CONFIG_TN3270_FS=y
|
CONFIG_TN3270_FS=y
|
||||||
CONFIG_PPS=m
|
CONFIG_PPS=m
|
||||||
@ -574,7 +582,6 @@ CONFIG_SYNC_FILE=y
|
|||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
CONFIG_VFIO_MDEV=m
|
CONFIG_VFIO_MDEV=m
|
||||||
CONFIG_VFIO_MDEV_DEVICE=m
|
|
||||||
CONFIG_VIRTIO_PCI=m
|
CONFIG_VIRTIO_PCI=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
CONFIG_VIRTIO_INPUT=y
|
CONFIG_VIRTIO_INPUT=y
|
||||||
@ -619,6 +626,7 @@ CONFIG_FUSE_FS=y
|
|||||||
CONFIG_CUSE=m
|
CONFIG_CUSE=m
|
||||||
CONFIG_VIRTIO_FS=m
|
CONFIG_VIRTIO_FS=m
|
||||||
CONFIG_OVERLAY_FS=m
|
CONFIG_OVERLAY_FS=m
|
||||||
|
CONFIG_NETFS_STATS=y
|
||||||
CONFIG_FSCACHE=m
|
CONFIG_FSCACHE=m
|
||||||
CONFIG_CACHEFILES=m
|
CONFIG_CACHEFILES=m
|
||||||
CONFIG_ISO9660_FS=y
|
CONFIG_ISO9660_FS=y
|
||||||
@ -654,7 +662,6 @@ CONFIG_NFSD_V3_ACL=y
|
|||||||
CONFIG_NFSD_V4=y
|
CONFIG_NFSD_V4=y
|
||||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
||||||
CONFIG_CIFS=m
|
CONFIG_CIFS=m
|
||||||
CONFIG_CIFS_STATS2=y
|
|
||||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||||
CONFIG_CIFS_UPCALL=y
|
CONFIG_CIFS_UPCALL=y
|
||||||
CONFIG_CIFS_XATTR=y
|
CONFIG_CIFS_XATTR=y
|
||||||
@ -682,6 +689,7 @@ CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
|||||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||||
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
||||||
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
||||||
|
CONFIG_SECURITY_LANDLOCK=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_IMA=y
|
CONFIG_IMA=y
|
||||||
@ -696,6 +704,7 @@ CONFIG_CRYPTO_CRYPTD=m
|
|||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_DH=m
|
CONFIG_CRYPTO_DH=m
|
||||||
CONFIG_CRYPTO_ECDH=m
|
CONFIG_CRYPTO_ECDH=m
|
||||||
|
CONFIG_CRYPTO_ECDSA=m
|
||||||
CONFIG_CRYPTO_ECRDSA=m
|
CONFIG_CRYPTO_ECRDSA=m
|
||||||
CONFIG_CRYPTO_SM2=m
|
CONFIG_CRYPTO_SM2=m
|
||||||
CONFIG_CRYPTO_CURVE25519=m
|
CONFIG_CRYPTO_CURVE25519=m
|
||||||
@ -843,7 +852,6 @@ CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
|||||||
CONFIG_FAIL_FUNCTION=y
|
CONFIG_FAIL_FUNCTION=y
|
||||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||||
CONFIG_LKDTM=m
|
CONFIG_LKDTM=m
|
||||||
CONFIG_TEST_LIST_SORT=y
|
|
||||||
CONFIG_TEST_MIN_HEAP=y
|
CONFIG_TEST_MIN_HEAP=y
|
||||||
CONFIG_TEST_SORT=y
|
CONFIG_TEST_SORT=y
|
||||||
CONFIG_KPROBES_SANITY_TEST=y
|
CONFIG_KPROBES_SANITY_TEST=y
|
||||||
@ -853,3 +861,4 @@ CONFIG_PERCPU_TEST=m
|
|||||||
CONFIG_ATOMIC64_SELFTEST=y
|
CONFIG_ATOMIC64_SELFTEST=y
|
||||||
CONFIG_TEST_BITOPS=m
|
CONFIG_TEST_BITOPS=m
|
||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
|
CONFIG_TEST_LIVEPATCH=m
|
||||||
|
@ -4,6 +4,11 @@ CONFIG_WATCH_QUEUE=y
|
|||||||
CONFIG_AUDIT=y
|
CONFIG_AUDIT=y
|
||||||
CONFIG_NO_HZ_IDLE=y
|
CONFIG_NO_HZ_IDLE=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_BPF_SYSCALL=y
|
||||||
|
CONFIG_BPF_JIT=y
|
||||||
|
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||||
|
CONFIG_BPF_LSM=y
|
||||||
|
CONFIG_SCHED_CORE=y
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||||
CONFIG_TASKSTATS=y
|
CONFIG_TASKSTATS=y
|
||||||
@ -26,14 +31,13 @@ CONFIG_CGROUP_DEVICE=y
|
|||||||
CONFIG_CGROUP_CPUACCT=y
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
CONFIG_CGROUP_PERF=y
|
CONFIG_CGROUP_PERF=y
|
||||||
CONFIG_CGROUP_BPF=y
|
CONFIG_CGROUP_BPF=y
|
||||||
|
CONFIG_CGROUP_MISC=y
|
||||||
CONFIG_NAMESPACES=y
|
CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
CONFIG_CHECKPOINT_RESTORE=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_LSM=y
|
|
||||||
CONFIG_BPF_SYSCALL=y
|
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
CONFIG_PROFILING=y
|
CONFIG_PROFILING=y
|
||||||
@ -70,6 +74,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
|||||||
CONFIG_BLK_WBT=y
|
CONFIG_BLK_WBT=y
|
||||||
CONFIG_BLK_CGROUP_IOLATENCY=y
|
CONFIG_BLK_CGROUP_IOLATENCY=y
|
||||||
CONFIG_BLK_CGROUP_IOCOST=y
|
CONFIG_BLK_CGROUP_IOCOST=y
|
||||||
|
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
@ -87,6 +92,7 @@ CONFIG_KSM=y
|
|||||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||||
CONFIG_CLEANCACHE=y
|
CONFIG_CLEANCACHE=y
|
||||||
CONFIG_FRONTSWAP=y
|
CONFIG_FRONTSWAP=y
|
||||||
|
CONFIG_CMA_SYSFS=y
|
||||||
CONFIG_CMA_AREAS=7
|
CONFIG_CMA_AREAS=7
|
||||||
CONFIG_MEM_SOFT_DIRTY=y
|
CONFIG_MEM_SOFT_DIRTY=y
|
||||||
CONFIG_ZSWAP=y
|
CONFIG_ZSWAP=y
|
||||||
@ -149,6 +155,7 @@ CONFIG_IPV6_RPL_LWTUNNEL=y
|
|||||||
CONFIG_MPTCP=y
|
CONFIG_MPTCP=y
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
CONFIG_BRIDGE_NETFILTER=m
|
CONFIG_BRIDGE_NETFILTER=m
|
||||||
|
CONFIG_NETFILTER_NETLINK_HOOK=m
|
||||||
CONFIG_NF_CONNTRACK=m
|
CONFIG_NF_CONNTRACK=m
|
||||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||||
@ -271,6 +278,7 @@ CONFIG_IP_VS_FTP=m
|
|||||||
CONFIG_IP_VS_PE_SIP=m
|
CONFIG_IP_VS_PE_SIP=m
|
||||||
CONFIG_NFT_FIB_IPV4=m
|
CONFIG_NFT_FIB_IPV4=m
|
||||||
CONFIG_NF_TABLES_ARP=y
|
CONFIG_NF_TABLES_ARP=y
|
||||||
|
CONFIG_NF_LOG_IPV4=m
|
||||||
CONFIG_IP_NF_IPTABLES=m
|
CONFIG_IP_NF_IPTABLES=m
|
||||||
CONFIG_IP_NF_MATCH_AH=m
|
CONFIG_IP_NF_MATCH_AH=m
|
||||||
CONFIG_IP_NF_MATCH_ECN=m
|
CONFIG_IP_NF_MATCH_ECN=m
|
||||||
@ -374,11 +382,10 @@ CONFIG_VSOCKETS=m
|
|||||||
CONFIG_VIRTIO_VSOCKETS=m
|
CONFIG_VIRTIO_VSOCKETS=m
|
||||||
CONFIG_NETLINK_DIAG=m
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_IOV=y
|
|
||||||
# CONFIG_PCIEASPM is not set
|
# CONFIG_PCIEASPM is not set
|
||||||
|
CONFIG_PCI_IOV=y
|
||||||
CONFIG_HOTPLUG_PCI=y
|
CONFIG_HOTPLUG_PCI=y
|
||||||
CONFIG_HOTPLUG_PCI_S390=y
|
CONFIG_HOTPLUG_PCI_S390=y
|
||||||
CONFIG_UEVENT_HELPER=y
|
CONFIG_UEVENT_HELPER=y
|
||||||
@ -427,7 +434,7 @@ CONFIG_MD_MULTIPATH=m
|
|||||||
CONFIG_MD_FAULTY=m
|
CONFIG_MD_FAULTY=m
|
||||||
CONFIG_MD_CLUSTER=m
|
CONFIG_MD_CLUSTER=m
|
||||||
CONFIG_BCACHE=m
|
CONFIG_BCACHE=m
|
||||||
CONFIG_BLK_DEV_DM=m
|
CONFIG_BLK_DEV_DM=y
|
||||||
CONFIG_DM_UNSTRIPED=m
|
CONFIG_DM_UNSTRIPED=m
|
||||||
CONFIG_DM_CRYPT=m
|
CONFIG_DM_CRYPT=m
|
||||||
CONFIG_DM_SNAPSHOT=m
|
CONFIG_DM_SNAPSHOT=m
|
||||||
@ -444,6 +451,7 @@ CONFIG_DM_MULTIPATH_ST=m
|
|||||||
CONFIG_DM_MULTIPATH_HST=m
|
CONFIG_DM_MULTIPATH_HST=m
|
||||||
CONFIG_DM_MULTIPATH_IOA=m
|
CONFIG_DM_MULTIPATH_IOA=m
|
||||||
CONFIG_DM_DELAY=m
|
CONFIG_DM_DELAY=m
|
||||||
|
CONFIG_DM_INIT=y
|
||||||
CONFIG_DM_UEVENT=y
|
CONFIG_DM_UEVENT=y
|
||||||
CONFIG_DM_FLAKEY=m
|
CONFIG_DM_FLAKEY=m
|
||||||
CONFIG_DM_VERITY=m
|
CONFIG_DM_VERITY=m
|
||||||
@ -487,6 +495,7 @@ CONFIG_NLMON=m
|
|||||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICROSOFT is not set
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
CONFIG_MLX4_EN=m
|
CONFIG_MLX4_EN=m
|
||||||
CONFIG_MLX5_CORE=m
|
CONFIG_MLX5_CORE=m
|
||||||
@ -543,7 +552,6 @@ CONFIG_INPUT_EVDEV=y
|
|||||||
CONFIG_LEGACY_PTY_COUNT=0
|
CONFIG_LEGACY_PTY_COUNT=0
|
||||||
CONFIG_VIRTIO_CONSOLE=m
|
CONFIG_VIRTIO_CONSOLE=m
|
||||||
CONFIG_HW_RANDOM_VIRTIO=m
|
CONFIG_HW_RANDOM_VIRTIO=m
|
||||||
CONFIG_RAW_DRIVER=m
|
|
||||||
CONFIG_HANGCHECK_TIMER=m
|
CONFIG_HANGCHECK_TIMER=m
|
||||||
CONFIG_TN3270_FS=y
|
CONFIG_TN3270_FS=y
|
||||||
# CONFIG_PTP_1588_CLOCK is not set
|
# CONFIG_PTP_1588_CLOCK is not set
|
||||||
@ -566,7 +574,6 @@ CONFIG_SYNC_FILE=y
|
|||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
CONFIG_VFIO_MDEV=m
|
CONFIG_VFIO_MDEV=m
|
||||||
CONFIG_VFIO_MDEV_DEVICE=m
|
|
||||||
CONFIG_VIRTIO_PCI=m
|
CONFIG_VIRTIO_PCI=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
CONFIG_VIRTIO_INPUT=y
|
CONFIG_VIRTIO_INPUT=y
|
||||||
@ -607,6 +614,7 @@ CONFIG_FUSE_FS=y
|
|||||||
CONFIG_CUSE=m
|
CONFIG_CUSE=m
|
||||||
CONFIG_VIRTIO_FS=m
|
CONFIG_VIRTIO_FS=m
|
||||||
CONFIG_OVERLAY_FS=m
|
CONFIG_OVERLAY_FS=m
|
||||||
|
CONFIG_NETFS_STATS=y
|
||||||
CONFIG_FSCACHE=m
|
CONFIG_FSCACHE=m
|
||||||
CONFIG_CACHEFILES=m
|
CONFIG_CACHEFILES=m
|
||||||
CONFIG_ISO9660_FS=y
|
CONFIG_ISO9660_FS=y
|
||||||
@ -642,7 +650,6 @@ CONFIG_NFSD_V3_ACL=y
|
|||||||
CONFIG_NFSD_V4=y
|
CONFIG_NFSD_V4=y
|
||||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
||||||
CONFIG_CIFS=m
|
CONFIG_CIFS=m
|
||||||
CONFIG_CIFS_STATS2=y
|
|
||||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||||
CONFIG_CIFS_UPCALL=y
|
CONFIG_CIFS_UPCALL=y
|
||||||
CONFIG_CIFS_XATTR=y
|
CONFIG_CIFS_XATTR=y
|
||||||
@ -669,6 +676,7 @@ CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
|||||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||||
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
||||||
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
||||||
|
CONFIG_SECURITY_LANDLOCK=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_IMA=y
|
CONFIG_IMA=y
|
||||||
@ -684,6 +692,7 @@ CONFIG_CRYPTO_CRYPTD=m
|
|||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_DH=m
|
CONFIG_CRYPTO_DH=m
|
||||||
CONFIG_CRYPTO_ECDH=m
|
CONFIG_CRYPTO_ECDH=m
|
||||||
|
CONFIG_CRYPTO_ECDSA=m
|
||||||
CONFIG_CRYPTO_ECRDSA=m
|
CONFIG_CRYPTO_ECRDSA=m
|
||||||
CONFIG_CRYPTO_SM2=m
|
CONFIG_CRYPTO_SM2=m
|
||||||
CONFIG_CRYPTO_CURVE25519=m
|
CONFIG_CRYPTO_CURVE25519=m
|
||||||
@ -754,6 +763,7 @@ CONFIG_CRC8=m
|
|||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_DYNAMIC_DEBUG=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_DEBUG_INFO_DWARF4=y
|
CONFIG_DEBUG_INFO_DWARF4=y
|
||||||
CONFIG_GDB_SCRIPTS=y
|
CONFIG_GDB_SCRIPTS=y
|
||||||
@ -781,3 +791,4 @@ CONFIG_LKDTM=m
|
|||||||
CONFIG_PERCPU_TEST=m
|
CONFIG_PERCPU_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=y
|
CONFIG_ATOMIC64_SELFTEST=y
|
||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
|
CONFIG_TEST_LIVEPATCH=m
|
||||||
|
@ -29,9 +29,9 @@ CONFIG_PARTITION_ADVANCED=y
|
|||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
# CONFIG_COMPACTION is not set
|
# CONFIG_COMPACTION is not set
|
||||||
# CONFIG_MIGRATION is not set
|
# CONFIG_MIGRATION is not set
|
||||||
# CONFIG_BOUNCE is not set
|
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
# CONFIG_IUCV is not set
|
# CONFIG_IUCV is not set
|
||||||
|
# CONFIG_PCPU_DEV_REFCNT is not set
|
||||||
# CONFIG_ETHTOOL_NETLINK is not set
|
# CONFIG_ETHTOOL_NETLINK is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
@ -51,7 +51,6 @@ CONFIG_ZFCP=y
|
|||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
# CONFIG_HVC_IUCV is not set
|
# CONFIG_HVC_IUCV is not set
|
||||||
# CONFIG_HW_RANDOM_S390 is not set
|
# CONFIG_HW_RANDOM_S390 is not set
|
||||||
CONFIG_RAW_DRIVER=y
|
|
||||||
# CONFIG_HMC_DRV is not set
|
# CONFIG_HMC_DRV is not set
|
||||||
# CONFIG_S390_TAPE is not set
|
# CONFIG_S390_TAPE is not set
|
||||||
# CONFIG_VMCP is not set
|
# CONFIG_VMCP is not set
|
||||||
|
@ -19,6 +19,7 @@ void ftrace_caller(void);
|
|||||||
|
|
||||||
extern char ftrace_graph_caller_end;
|
extern char ftrace_graph_caller_end;
|
||||||
extern unsigned long ftrace_plt;
|
extern unsigned long ftrace_plt;
|
||||||
|
extern void *ftrace_func;
|
||||||
|
|
||||||
struct dyn_arch_ftrace { };
|
struct dyn_arch_ftrace { };
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
* trampoline (ftrace_plt), which clobbers also r1.
|
* trampoline (ftrace_plt), which clobbers also r1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void *ftrace_func __read_mostly = ftrace_stub;
|
||||||
unsigned long ftrace_plt;
|
unsigned long ftrace_plt;
|
||||||
|
|
||||||
int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
|
int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
|
||||||
@ -85,6 +86,7 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
|||||||
|
|
||||||
int ftrace_update_ftrace_func(ftrace_func_t func)
|
int ftrace_update_ftrace_func(ftrace_func_t func)
|
||||||
{
|
{
|
||||||
|
ftrace_func = func;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,13 +59,13 @@ ENTRY(ftrace_caller)
|
|||||||
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
|
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
|
||||||
aghik %r2,%r0,-MCOUNT_INSN_SIZE
|
aghik %r2,%r0,-MCOUNT_INSN_SIZE
|
||||||
lgrl %r4,function_trace_op
|
lgrl %r4,function_trace_op
|
||||||
lgrl %r1,ftrace_trace_function
|
lgrl %r1,ftrace_func
|
||||||
#else
|
#else
|
||||||
lgr %r2,%r0
|
lgr %r2,%r0
|
||||||
aghi %r2,-MCOUNT_INSN_SIZE
|
aghi %r2,-MCOUNT_INSN_SIZE
|
||||||
larl %r4,function_trace_op
|
larl %r4,function_trace_op
|
||||||
lg %r4,0(%r4)
|
lg %r4,0(%r4)
|
||||||
larl %r1,ftrace_trace_function
|
larl %r1,ftrace_func
|
||||||
lg %r1,0(%r1)
|
lg %r1,0(%r1)
|
||||||
#endif
|
#endif
|
||||||
lgr %r3,%r14
|
lgr %r3,%r14
|
||||||
|
@ -745,7 +745,7 @@ static int __init cpumf_pmu_init(void)
|
|||||||
if (!cf_dbg) {
|
if (!cf_dbg) {
|
||||||
pr_err("Registration of s390dbf(cpum_cf) failed\n");
|
pr_err("Registration of s390dbf(cpum_cf) failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
};
|
}
|
||||||
debug_register_view(cf_dbg, &debug_sprintf_view);
|
debug_register_view(cf_dbg, &debug_sprintf_view);
|
||||||
|
|
||||||
cpumf_pmu.attr_groups = cpumf_cf_event_group();
|
cpumf_pmu.attr_groups = cpumf_cf_event_group();
|
||||||
|
@ -29,6 +29,7 @@ $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_32)
|
|||||||
$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
|
$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
|
||||||
|
|
||||||
obj-y += vdso32_wrapper.o
|
obj-y += vdso32_wrapper.o
|
||||||
|
targets += vdso32.lds
|
||||||
CPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
|
CPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
|
||||||
|
|
||||||
# Disable gcov profiling, ubsan and kasan for VDSO code
|
# Disable gcov profiling, ubsan and kasan for VDSO code
|
||||||
|
@ -237,7 +237,7 @@ static void __init hv_smp_prepare_cpus(unsigned int max_cpus)
|
|||||||
for_each_present_cpu(i) {
|
for_each_present_cpu(i) {
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
continue;
|
continue;
|
||||||
ret = hv_call_add_logical_proc(numa_cpu_node(i), i, i);
|
ret = hv_call_add_logical_proc(numa_cpu_node(i), i, cpu_physical_id(i));
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,9 +79,10 @@ __jump_label_patch(struct jump_entry *entry, enum jump_label_type type)
|
|||||||
return (struct jump_label_patch){.code = code, .size = size};
|
return (struct jump_label_patch){.code = code, .size = size};
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void __jump_label_transform(struct jump_entry *entry,
|
static __always_inline void
|
||||||
enum jump_label_type type,
|
__jump_label_transform(struct jump_entry *entry,
|
||||||
int init)
|
enum jump_label_type type,
|
||||||
|
int init)
|
||||||
{
|
{
|
||||||
const struct jump_label_patch jlp = __jump_label_patch(entry, type);
|
const struct jump_label_patch jlp = __jump_label_patch(entry, type);
|
||||||
|
|
||||||
|
@ -682,7 +682,6 @@ int p4d_clear_huge(p4d_t *p4d)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_PGTABLE_LEVELS > 3
|
|
||||||
/**
|
/**
|
||||||
* pud_set_huge - setup kernel PUD mapping
|
* pud_set_huge - setup kernel PUD mapping
|
||||||
*
|
*
|
||||||
@ -721,23 +720,6 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* pud_clear_huge - clear kernel PUD mapping when it is set
|
|
||||||
*
|
|
||||||
* Returns 1 on success and 0 on failure (no PUD map is found).
|
|
||||||
*/
|
|
||||||
int pud_clear_huge(pud_t *pud)
|
|
||||||
{
|
|
||||||
if (pud_large(*pud)) {
|
|
||||||
pud_clear(pud);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CONFIG_PGTABLE_LEVELS > 2
|
|
||||||
/**
|
/**
|
||||||
* pmd_set_huge - setup kernel PMD mapping
|
* pmd_set_huge - setup kernel PMD mapping
|
||||||
*
|
*
|
||||||
@ -768,6 +750,21 @@ int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pud_clear_huge - clear kernel PUD mapping when it is set
|
||||||
|
*
|
||||||
|
* Returns 1 on success and 0 on failure (no PUD map is found).
|
||||||
|
*/
|
||||||
|
int pud_clear_huge(pud_t *pud)
|
||||||
|
{
|
||||||
|
if (pud_large(*pud)) {
|
||||||
|
pud_clear(pud);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pmd_clear_huge - clear kernel PMD mapping when it is set
|
* pmd_clear_huge - clear kernel PMD mapping when it is set
|
||||||
*
|
*
|
||||||
@ -782,7 +779,6 @@ int pmd_clear_huge(pmd_t *pmd)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
/**
|
/**
|
||||||
|
@ -370,7 +370,7 @@ config ACPI_TABLE_UPGRADE
|
|||||||
config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
|
config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
|
||||||
bool "Override ACPI tables from built-in initrd"
|
bool "Override ACPI tables from built-in initrd"
|
||||||
depends on ACPI_TABLE_UPGRADE
|
depends on ACPI_TABLE_UPGRADE
|
||||||
depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION=""
|
depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION_NONE
|
||||||
help
|
help
|
||||||
This option provides functionality to override arbitrary ACPI tables
|
This option provides functionality to override arbitrary ACPI tables
|
||||||
from built-in uncompressed initrd.
|
from built-in uncompressed initrd.
|
||||||
|
@ -860,11 +860,9 @@ EXPORT_SYMBOL(acpi_dev_present);
|
|||||||
* Return the next match of ACPI device if another matching device was present
|
* Return the next match of ACPI device if another matching device was present
|
||||||
* at the moment of invocation, or NULL otherwise.
|
* at the moment of invocation, or NULL otherwise.
|
||||||
*
|
*
|
||||||
* FIXME: The function does not tolerate the sudden disappearance of @adev, e.g.
|
|
||||||
* in the case of a hotplug event. That said, the caller should ensure that
|
|
||||||
* this will never happen.
|
|
||||||
*
|
|
||||||
* The caller is responsible for invoking acpi_dev_put() on the returned device.
|
* The caller is responsible for invoking acpi_dev_put() on the returned device.
|
||||||
|
* On the other hand the function invokes acpi_dev_put() on the given @adev
|
||||||
|
* assuming that its reference counter had been increased beforehand.
|
||||||
*
|
*
|
||||||
* See additional information in acpi_dev_present() as well.
|
* See additional information in acpi_dev_present() as well.
|
||||||
*/
|
*/
|
||||||
@ -880,6 +878,7 @@ acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const cha
|
|||||||
match.hrv = hrv;
|
match.hrv = hrv;
|
||||||
|
|
||||||
dev = bus_find_device(&acpi_bus_type, start, &match, acpi_dev_match_cb);
|
dev = bus_find_device(&acpi_bus_type, start, &match, acpi_dev_match_cb);
|
||||||
|
acpi_dev_put(adev);
|
||||||
return dev ? to_acpi_device(dev) : NULL;
|
return dev ? to_acpi_device(dev) : NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(acpi_dev_get_next_match_dev);
|
EXPORT_SYMBOL(acpi_dev_get_next_match_dev);
|
||||||
|
@ -231,6 +231,8 @@ EXPORT_SYMBOL_GPL(auxiliary_find_device);
|
|||||||
int __auxiliary_driver_register(struct auxiliary_driver *auxdrv,
|
int __auxiliary_driver_register(struct auxiliary_driver *auxdrv,
|
||||||
struct module *owner, const char *modname)
|
struct module *owner, const char *modname)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (WARN_ON(!auxdrv->probe) || WARN_ON(!auxdrv->id_table))
|
if (WARN_ON(!auxdrv->probe) || WARN_ON(!auxdrv->id_table))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@ -246,7 +248,11 @@ int __auxiliary_driver_register(struct auxiliary_driver *auxdrv,
|
|||||||
auxdrv->driver.bus = &auxiliary_bus_type;
|
auxdrv->driver.bus = &auxiliary_bus_type;
|
||||||
auxdrv->driver.mod_name = modname;
|
auxdrv->driver.mod_name = modname;
|
||||||
|
|
||||||
return driver_register(&auxdrv->driver);
|
ret = driver_register(&auxdrv->driver);
|
||||||
|
if (ret)
|
||||||
|
kfree(auxdrv->driver.name);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(__auxiliary_driver_register);
|
EXPORT_SYMBOL_GPL(__auxiliary_driver_register);
|
||||||
|
|
||||||
|
@ -574,8 +574,10 @@ static void devlink_remove_symlinks(struct device *dev,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
|
if (device_is_registered(con)) {
|
||||||
sysfs_remove_link(&con->kobj, buf);
|
snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
|
||||||
|
sysfs_remove_link(&con->kobj, buf);
|
||||||
|
}
|
||||||
snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
|
snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
|
||||||
sysfs_remove_link(&sup->kobj, buf);
|
sysfs_remove_link(&sup->kobj, buf);
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
|
@ -4100,8 +4100,6 @@ static void rbd_acquire_lock(struct work_struct *work)
|
|||||||
|
|
||||||
static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)
|
static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)
|
||||||
{
|
{
|
||||||
bool need_wait;
|
|
||||||
|
|
||||||
dout("%s rbd_dev %p\n", __func__, rbd_dev);
|
dout("%s rbd_dev %p\n", __func__, rbd_dev);
|
||||||
lockdep_assert_held_write(&rbd_dev->lock_rwsem);
|
lockdep_assert_held_write(&rbd_dev->lock_rwsem);
|
||||||
|
|
||||||
@ -4113,11 +4111,11 @@ static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)
|
|||||||
*/
|
*/
|
||||||
rbd_dev->lock_state = RBD_LOCK_STATE_RELEASING;
|
rbd_dev->lock_state = RBD_LOCK_STATE_RELEASING;
|
||||||
rbd_assert(!completion_done(&rbd_dev->releasing_wait));
|
rbd_assert(!completion_done(&rbd_dev->releasing_wait));
|
||||||
need_wait = !list_empty(&rbd_dev->running_list);
|
if (list_empty(&rbd_dev->running_list))
|
||||||
downgrade_write(&rbd_dev->lock_rwsem);
|
return true;
|
||||||
if (need_wait)
|
|
||||||
wait_for_completion(&rbd_dev->releasing_wait);
|
up_write(&rbd_dev->lock_rwsem);
|
||||||
up_read(&rbd_dev->lock_rwsem);
|
wait_for_completion(&rbd_dev->releasing_wait);
|
||||||
|
|
||||||
down_write(&rbd_dev->lock_rwsem);
|
down_write(&rbd_dev->lock_rwsem);
|
||||||
if (rbd_dev->lock_state != RBD_LOCK_STATE_RELEASING)
|
if (rbd_dev->lock_state != RBD_LOCK_STATE_RELEASING)
|
||||||
@ -4203,15 +4201,11 @@ static void rbd_handle_acquired_lock(struct rbd_device *rbd_dev, u8 struct_v,
|
|||||||
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
||||||
down_write(&rbd_dev->lock_rwsem);
|
down_write(&rbd_dev->lock_rwsem);
|
||||||
if (rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
if (rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
||||||
/*
|
dout("%s rbd_dev %p cid %llu-%llu == owner_cid\n",
|
||||||
* we already know that the remote client is
|
__func__, rbd_dev, cid.gid, cid.handle);
|
||||||
* the owner
|
} else {
|
||||||
*/
|
rbd_set_owner_cid(rbd_dev, &cid);
|
||||||
up_write(&rbd_dev->lock_rwsem);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rbd_set_owner_cid(rbd_dev, &cid);
|
|
||||||
downgrade_write(&rbd_dev->lock_rwsem);
|
downgrade_write(&rbd_dev->lock_rwsem);
|
||||||
} else {
|
} else {
|
||||||
down_read(&rbd_dev->lock_rwsem);
|
down_read(&rbd_dev->lock_rwsem);
|
||||||
@ -4236,14 +4230,12 @@ static void rbd_handle_released_lock(struct rbd_device *rbd_dev, u8 struct_v,
|
|||||||
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
||||||
down_write(&rbd_dev->lock_rwsem);
|
down_write(&rbd_dev->lock_rwsem);
|
||||||
if (!rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
if (!rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
||||||
dout("%s rbd_dev %p unexpected owner, cid %llu-%llu != owner_cid %llu-%llu\n",
|
dout("%s rbd_dev %p cid %llu-%llu != owner_cid %llu-%llu\n",
|
||||||
__func__, rbd_dev, cid.gid, cid.handle,
|
__func__, rbd_dev, cid.gid, cid.handle,
|
||||||
rbd_dev->owner_cid.gid, rbd_dev->owner_cid.handle);
|
rbd_dev->owner_cid.gid, rbd_dev->owner_cid.handle);
|
||||||
up_write(&rbd_dev->lock_rwsem);
|
} else {
|
||||||
return;
|
rbd_set_owner_cid(rbd_dev, &rbd_empty_cid);
|
||||||
}
|
}
|
||||||
|
|
||||||
rbd_set_owner_cid(rbd_dev, &rbd_empty_cid);
|
|
||||||
downgrade_write(&rbd_dev->lock_rwsem);
|
downgrade_write(&rbd_dev->lock_rwsem);
|
||||||
} else {
|
} else {
|
||||||
down_read(&rbd_dev->lock_rwsem);
|
down_read(&rbd_dev->lock_rwsem);
|
||||||
@ -4951,6 +4943,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
|
|||||||
disk->minors = RBD_MINORS_PER_MAJOR;
|
disk->minors = RBD_MINORS_PER_MAJOR;
|
||||||
}
|
}
|
||||||
disk->fops = &rbd_bd_ops;
|
disk->fops = &rbd_bd_ops;
|
||||||
|
disk->private_data = rbd_dev;
|
||||||
|
|
||||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||||
/* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */
|
/* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */
|
||||||
|
@ -773,11 +773,18 @@ static void mhi_process_cmd_completion(struct mhi_controller *mhi_cntrl,
|
|||||||
cmd_pkt = mhi_to_virtual(mhi_ring, ptr);
|
cmd_pkt = mhi_to_virtual(mhi_ring, ptr);
|
||||||
|
|
||||||
chan = MHI_TRE_GET_CMD_CHID(cmd_pkt);
|
chan = MHI_TRE_GET_CMD_CHID(cmd_pkt);
|
||||||
mhi_chan = &mhi_cntrl->mhi_chan[chan];
|
|
||||||
write_lock_bh(&mhi_chan->lock);
|
if (chan < mhi_cntrl->max_chan &&
|
||||||
mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre);
|
mhi_cntrl->mhi_chan[chan].configured) {
|
||||||
complete(&mhi_chan->completion);
|
mhi_chan = &mhi_cntrl->mhi_chan[chan];
|
||||||
write_unlock_bh(&mhi_chan->lock);
|
write_lock_bh(&mhi_chan->lock);
|
||||||
|
mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre);
|
||||||
|
complete(&mhi_chan->completion);
|
||||||
|
write_unlock_bh(&mhi_chan->lock);
|
||||||
|
} else {
|
||||||
|
dev_err(&mhi_cntrl->mhi_dev->dev,
|
||||||
|
"Completion packet for invalid channel ID: %d\n", chan);
|
||||||
|
}
|
||||||
|
|
||||||
mhi_del_ring_element(mhi_cntrl, mhi_ring);
|
mhi_del_ring_element(mhi_cntrl, mhi_ring);
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
* @edl: emergency download mode firmware path (if any)
|
* @edl: emergency download mode firmware path (if any)
|
||||||
* @bar_num: PCI base address register to use for MHI MMIO register space
|
* @bar_num: PCI base address register to use for MHI MMIO register space
|
||||||
* @dma_data_width: DMA transfer word size (32 or 64 bits)
|
* @dma_data_width: DMA transfer word size (32 or 64 bits)
|
||||||
|
* @sideband_wake: Devices using dedicated sideband GPIO for wakeup instead
|
||||||
|
* of inband wake support (such as sdx24)
|
||||||
*/
|
*/
|
||||||
struct mhi_pci_dev_info {
|
struct mhi_pci_dev_info {
|
||||||
const struct mhi_controller_config *config;
|
const struct mhi_controller_config *config;
|
||||||
@ -40,6 +42,7 @@ struct mhi_pci_dev_info {
|
|||||||
const char *edl;
|
const char *edl;
|
||||||
unsigned int bar_num;
|
unsigned int bar_num;
|
||||||
unsigned int dma_data_width;
|
unsigned int dma_data_width;
|
||||||
|
bool sideband_wake;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MHI_CHANNEL_CONFIG_UL(ch_num, ch_name, el_count, ev_ring) \
|
#define MHI_CHANNEL_CONFIG_UL(ch_num, ch_name, el_count, ev_ring) \
|
||||||
@ -72,6 +75,22 @@ struct mhi_pci_dev_info {
|
|||||||
.doorbell_mode_switch = false, \
|
.doorbell_mode_switch = false, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(ch_num, ch_name, el_count, ev_ring) \
|
||||||
|
{ \
|
||||||
|
.num = ch_num, \
|
||||||
|
.name = ch_name, \
|
||||||
|
.num_elements = el_count, \
|
||||||
|
.event_ring = ev_ring, \
|
||||||
|
.dir = DMA_FROM_DEVICE, \
|
||||||
|
.ee_mask = BIT(MHI_EE_AMSS), \
|
||||||
|
.pollcfg = 0, \
|
||||||
|
.doorbell = MHI_DB_BRST_DISABLE, \
|
||||||
|
.lpm_notify = false, \
|
||||||
|
.offload_channel = false, \
|
||||||
|
.doorbell_mode_switch = false, \
|
||||||
|
.auto_queue = true, \
|
||||||
|
}
|
||||||
|
|
||||||
#define MHI_EVENT_CONFIG_CTRL(ev_ring, el_count) \
|
#define MHI_EVENT_CONFIG_CTRL(ev_ring, el_count) \
|
||||||
{ \
|
{ \
|
||||||
.num_elements = el_count, \
|
.num_elements = el_count, \
|
||||||
@ -210,7 +229,7 @@ static const struct mhi_channel_config modem_qcom_v1_mhi_channels[] = {
|
|||||||
MHI_CHANNEL_CONFIG_UL(14, "QMI", 4, 0),
|
MHI_CHANNEL_CONFIG_UL(14, "QMI", 4, 0),
|
||||||
MHI_CHANNEL_CONFIG_DL(15, "QMI", 4, 0),
|
MHI_CHANNEL_CONFIG_DL(15, "QMI", 4, 0),
|
||||||
MHI_CHANNEL_CONFIG_UL(20, "IPCR", 8, 0),
|
MHI_CHANNEL_CONFIG_UL(20, "IPCR", 8, 0),
|
||||||
MHI_CHANNEL_CONFIG_DL(21, "IPCR", 8, 0),
|
MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(21, "IPCR", 8, 0),
|
||||||
MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
|
MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
|
||||||
MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
|
MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
|
||||||
MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
|
MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
|
||||||
@ -242,7 +261,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = {
|
|||||||
.edl = "qcom/sdx65m/edl.mbn",
|
.edl = "qcom/sdx65m/edl.mbn",
|
||||||
.config = &modem_qcom_v1_mhiv_config,
|
.config = &modem_qcom_v1_mhiv_config,
|
||||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||||
.dma_data_width = 32
|
.dma_data_width = 32,
|
||||||
|
.sideband_wake = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = {
|
static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = {
|
||||||
@ -251,7 +271,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = {
|
|||||||
.edl = "qcom/sdx55m/edl.mbn",
|
.edl = "qcom/sdx55m/edl.mbn",
|
||||||
.config = &modem_qcom_v1_mhiv_config,
|
.config = &modem_qcom_v1_mhiv_config,
|
||||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||||
.dma_data_width = 32
|
.dma_data_width = 32,
|
||||||
|
.sideband_wake = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = {
|
static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = {
|
||||||
@ -259,7 +280,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = {
|
|||||||
.edl = "qcom/prog_firehose_sdx24.mbn",
|
.edl = "qcom/prog_firehose_sdx24.mbn",
|
||||||
.config = &modem_qcom_v1_mhiv_config,
|
.config = &modem_qcom_v1_mhiv_config,
|
||||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||||
.dma_data_width = 32
|
.dma_data_width = 32,
|
||||||
|
.sideband_wake = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_channel_config mhi_quectel_em1xx_channels[] = {
|
static const struct mhi_channel_config mhi_quectel_em1xx_channels[] = {
|
||||||
@ -301,7 +323,8 @@ static const struct mhi_pci_dev_info mhi_quectel_em1xx_info = {
|
|||||||
.edl = "qcom/prog_firehose_sdx24.mbn",
|
.edl = "qcom/prog_firehose_sdx24.mbn",
|
||||||
.config = &modem_quectel_em1xx_config,
|
.config = &modem_quectel_em1xx_config,
|
||||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||||
.dma_data_width = 32
|
.dma_data_width = 32,
|
||||||
|
.sideband_wake = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
|
static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
|
||||||
@ -339,7 +362,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = {
|
|||||||
.edl = "qcom/sdx55m/edl.mbn",
|
.edl = "qcom/sdx55m/edl.mbn",
|
||||||
.config = &modem_foxconn_sdx55_config,
|
.config = &modem_foxconn_sdx55_config,
|
||||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||||
.dma_data_width = 32
|
.dma_data_width = 32,
|
||||||
|
.sideband_wake = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct pci_device_id mhi_pci_id_table[] = {
|
static const struct pci_device_id mhi_pci_id_table[] = {
|
||||||
@ -640,9 +664,12 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
mhi_cntrl->status_cb = mhi_pci_status_cb;
|
mhi_cntrl->status_cb = mhi_pci_status_cb;
|
||||||
mhi_cntrl->runtime_get = mhi_pci_runtime_get;
|
mhi_cntrl->runtime_get = mhi_pci_runtime_get;
|
||||||
mhi_cntrl->runtime_put = mhi_pci_runtime_put;
|
mhi_cntrl->runtime_put = mhi_pci_runtime_put;
|
||||||
mhi_cntrl->wake_get = mhi_pci_wake_get_nop;
|
|
||||||
mhi_cntrl->wake_put = mhi_pci_wake_put_nop;
|
if (info->sideband_wake) {
|
||||||
mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop;
|
mhi_cntrl->wake_get = mhi_pci_wake_get_nop;
|
||||||
|
mhi_cntrl->wake_put = mhi_pci_wake_put_nop;
|
||||||
|
mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop;
|
||||||
|
}
|
||||||
|
|
||||||
err = mhi_pci_claim(mhi_cntrl, info->bar_num, DMA_BIT_MASK(info->dma_data_width));
|
err = mhi_pci_claim(mhi_cntrl, info->bar_num, DMA_BIT_MASK(info->dma_data_width));
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -333,8 +333,6 @@ vc_mem_init(void)
|
|||||||
vc_mem_inited = 1;
|
vc_mem_inited = 1;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
device_destroy(vc_mem_class, vc_mem_devnum);
|
|
||||||
|
|
||||||
out_class_destroy:
|
out_class_destroy:
|
||||||
class_destroy(vc_mem_class);
|
class_destroy(vc_mem_class);
|
||||||
vc_mem_class = NULL;
|
vc_mem_class = NULL;
|
||||||
|
@ -34,7 +34,6 @@ static long __init parse_acpi_path(const struct efi_dev_path *node,
|
|||||||
break;
|
break;
|
||||||
if (!adev->pnp.unique_id && node->acpi.uid == 0)
|
if (!adev->pnp.unique_id && node->acpi.uid == 0)
|
||||||
break;
|
break;
|
||||||
acpi_dev_put(adev);
|
|
||||||
}
|
}
|
||||||
if (!adev)
|
if (!adev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -896,6 +896,7 @@ static int __init efi_memreserve_map_root(void)
|
|||||||
static int efi_mem_reserve_iomem(phys_addr_t addr, u64 size)
|
static int efi_mem_reserve_iomem(phys_addr_t addr, u64 size)
|
||||||
{
|
{
|
||||||
struct resource *res, *parent;
|
struct resource *res, *parent;
|
||||||
|
int ret;
|
||||||
|
|
||||||
res = kzalloc(sizeof(struct resource), GFP_ATOMIC);
|
res = kzalloc(sizeof(struct resource), GFP_ATOMIC);
|
||||||
if (!res)
|
if (!res)
|
||||||
@ -908,7 +909,17 @@ static int efi_mem_reserve_iomem(phys_addr_t addr, u64 size)
|
|||||||
|
|
||||||
/* we expect a conflict with a 'System RAM' region */
|
/* we expect a conflict with a 'System RAM' region */
|
||||||
parent = request_resource_conflict(&iomem_resource, res);
|
parent = request_resource_conflict(&iomem_resource, res);
|
||||||
return parent ? request_resource(parent, res) : 0;
|
ret = parent ? request_resource(parent, res) : 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Given that efi_mem_reserve_iomem() can be called at any
|
||||||
|
* time, only call memblock_reserve() if the architecture
|
||||||
|
* keeps the infrastructure around.
|
||||||
|
*/
|
||||||
|
if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK) && !ret)
|
||||||
|
memblock_reserve(addr, size);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)
|
int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user