mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
This release includes significant updates, with the primary
change being the renaming from "master/slave" to "controller/target" to adhere to I2C v7 and SMBus 3.2 standards. New Support: - Added support for Intel Arrow Lake-H. - Added I2C support in the Arioha SoC by linking the Mediatek I2C controller. Cleanups: - Added the MODULE_DESCRIPTION() macro, resolving a modpost warning in the ALi 1563 Southbridge driver. - Constified the regmap_config declaration in the i2c-designware driver. - Improved the coding style in the Renesas R-Car driver by removing unnecessary semicolons after brackets. General improvements: - In the OMAP device, replaced NOIRQ_SYSTEM_SLEEP_PM_OPS with RUNTIME_PM_OPS to enable waking up the controller during suspend() before suspend_noirq() kicks in. - Improved logging in the Xilinx driver. - Added a warning (WARN()) in the Renesas R-Car driver for spurious interrupts. DTS Changes: - Removed address-cell and size-cell from the Atmel at91sam, nVidia Tegra 20, and Samsung S3c2410 devices. - Fixed Texas Instruments OMAP4 I2C controller to comply with the i2c-controller.yaml schema. - Improved indentation in DTS examples for several I2C devices. - Converted the NXP LPC1788 binding to the dt-schema. - Added documentation for the compatible string thead,th1520-i2c. - Added the "power-domains" property for the Meson I2C driver. -----BEGIN PGP SIGNATURE----- iIwEABYIADQWIQScDfrjQa34uOld1VLaeAVmJtMtbgUCZpI+BRYcYW5kaS5zaHl0 aUBrZXJuZWwub3JnAAoJENp4BWYm0y1umiEBALp3CHUYpEKmjim8/vOEXAPzEss6 j8bMb/Iwbrtinm9VAQC0lnmWglcyuRSQN7uz/6Jd+T7QcVFmg/Jck7HsmbBsAg== =sTD/ -----END PGP SIGNATURE----- Merge tag 'i2c-host-6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-mergewindow This release includes significant updates, with the primary change being the renaming from "master/slave" to "controller/target" to adhere to I2C v7 and SMBus 3.2 standards. New Support: - Added support for Intel Arrow Lake-H. - Added I2C support in the Arioha SoC by linking the Mediatek I2C controller. Cleanups: - Added the MODULE_DESCRIPTION() macro, resolving a modpost warning in the ALi 1563 Southbridge driver. - Constified the regmap_config declaration in the i2c-designware driver. - Improved the coding style in the Renesas R-Car driver by removing unnecessary semicolons after brackets. General improvements: - In the OMAP device, replaced NOIRQ_SYSTEM_SLEEP_PM_OPS with RUNTIME_PM_OPS to enable waking up the controller during suspend() before suspend_noirq() kicks in. - Improved logging in the Xilinx driver. - Added a warning (WARN()) in the Renesas R-Car driver for spurious interrupts. DTS Changes: - Removed address-cell and size-cell from the Atmel at91sam, nVidia Tegra 20, and Samsung S3c2410 devices. - Fixed Texas Instruments OMAP4 I2C controller to comply with the i2c-controller.yaml schema. - Improved indentation in DTS examples for several I2C devices. - Converted the NXP LPC1788 binding to the dt-schema. - Added documentation for the compatible string thead,th1520-i2c. - Added the "power-domains" property for the Meson I2C driver.
This commit is contained in:
commit
479f18ccca
8
CREDITS
8
CREDITS
@ -1214,6 +1214,10 @@ D: UDF filesystem
|
|||||||
S: (ask for current address)
|
S: (ask for current address)
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
N: Larry Finger
|
||||||
|
E: Larry.Finger@lwfinger.net
|
||||||
|
D: Maintainer of wireless drivers, too many to list here
|
||||||
|
|
||||||
N: Jürgen Fischer
|
N: Jürgen Fischer
|
||||||
E: fischer@norbit.de
|
E: fischer@norbit.de
|
||||||
D: Author of Adaptec AHA-152x SCSI driver
|
D: Author of Adaptec AHA-152x SCSI driver
|
||||||
@ -3146,9 +3150,11 @@ S: Triftstra=DFe 55
|
|||||||
S: 13353 Berlin
|
S: 13353 Berlin
|
||||||
S: Germany
|
S: Germany
|
||||||
|
|
||||||
N: Gustavo Pimental
|
N: Gustavo Pimentel
|
||||||
E: gustavo.pimentel@synopsys.com
|
E: gustavo.pimentel@synopsys.com
|
||||||
D: PCI driver for Synopsys DesignWare
|
D: PCI driver for Synopsys DesignWare
|
||||||
|
D: Synopsys DesignWare eDMA driver
|
||||||
|
D: Synopsys DesignWare xData traffic generator
|
||||||
|
|
||||||
N: Emanuel Pirker
|
N: Emanuel Pirker
|
||||||
E: epirker@edu.uni-klu.ac.at
|
E: epirker@edu.uni-klu.ac.at
|
||||||
|
@ -788,25 +788,6 @@
|
|||||||
Documentation/networking/netconsole.rst for an
|
Documentation/networking/netconsole.rst for an
|
||||||
alternative.
|
alternative.
|
||||||
|
|
||||||
<DEVNAME>:<n>.<n>[,options]
|
|
||||||
Use the specified serial port on the serial core bus.
|
|
||||||
The addressing uses DEVNAME of the physical serial port
|
|
||||||
device, followed by the serial core controller instance,
|
|
||||||
and the serial port instance. The options are the same
|
|
||||||
as documented for the ttyS addressing above.
|
|
||||||
|
|
||||||
The mapping of the serial ports to the tty instances
|
|
||||||
can be viewed with:
|
|
||||||
|
|
||||||
$ ls -d /sys/bus/serial-base/devices/*:*.*/tty/*
|
|
||||||
/sys/bus/serial-base/devices/00:04:0.0/tty/ttyS0
|
|
||||||
|
|
||||||
In the above example, the console can be addressed with
|
|
||||||
console=00:04:0.0. Note that a console addressed this
|
|
||||||
way will only get added when the related device driver
|
|
||||||
is ready. The use of an earlycon parameter in addition to
|
|
||||||
the console may be desired for console output early on.
|
|
||||||
|
|
||||||
uart[8250],io,<addr>[,options]
|
uart[8250],io,<addr>[,options]
|
||||||
uart[8250],mmio,<addr>[,options]
|
uart[8250],mmio,<addr>[,options]
|
||||||
uart[8250],mmio16,<addr>[,options]
|
uart[8250],mmio16,<addr>[,options]
|
||||||
|
@ -62,10 +62,10 @@ cmodx.c::
|
|||||||
printf("Value before cmodx: %d\n", value);
|
printf("Value before cmodx: %d\n", value);
|
||||||
|
|
||||||
// Call prctl before first fence.i is called inside modify_instruction
|
// Call prctl before first fence.i is called inside modify_instruction
|
||||||
prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX_ON, PR_RISCV_CTX_SW_FENCEI, PR_RISCV_SCOPE_PER_PROCESS);
|
prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_ON, PR_RISCV_SCOPE_PER_PROCESS);
|
||||||
modify_instruction();
|
modify_instruction();
|
||||||
// Call prctl after final fence.i is called in process
|
// Call prctl after final fence.i is called in process
|
||||||
prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX_OFF, PR_RISCV_CTX_SW_FENCEI, PR_RISCV_SCOPE_PER_PROCESS);
|
prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_OFF, PR_RISCV_SCOPE_PER_PROCESS);
|
||||||
|
|
||||||
value = get_value();
|
value = get_value();
|
||||||
printf("Value after cmodx: %d\n", value);
|
printf("Value after cmodx: %d\n", value);
|
||||||
|
@ -30,6 +30,9 @@ properties:
|
|||||||
clocks:
|
clocks:
|
||||||
minItems: 1
|
minItems: 1
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -26,6 +26,7 @@ properties:
|
|||||||
- microchip,sam9x60-i2c
|
- microchip,sam9x60-i2c
|
||||||
- items:
|
- items:
|
||||||
- enum:
|
- enum:
|
||||||
|
- microchip,sama7d65-i2c
|
||||||
- microchip,sama7g5-i2c
|
- microchip,sama7g5-i2c
|
||||||
- microchip,sam9x7-i2c
|
- microchip,sam9x7-i2c
|
||||||
- const: microchip,sam9x60-i2c
|
- const: microchip,sam9x60-i2c
|
||||||
@ -36,12 +37,6 @@ properties:
|
|||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
"#address-cells":
|
|
||||||
const: 1
|
|
||||||
|
|
||||||
"#size-cells":
|
|
||||||
const: 0
|
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
@ -72,8 +67,6 @@ required:
|
|||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- interrupts
|
- interrupts
|
||||||
- "#address-cells"
|
|
||||||
- "#size-cells"
|
|
||||||
- clocks
|
- clocks
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
@ -86,6 +79,7 @@ allOf:
|
|||||||
- atmel,sama5d4-i2c
|
- atmel,sama5d4-i2c
|
||||||
- atmel,sama5d2-i2c
|
- atmel,sama5d2-i2c
|
||||||
- microchip,sam9x60-i2c
|
- microchip,sam9x60-i2c
|
||||||
|
- microchip,sama7d65-i2c
|
||||||
- microchip,sama7g5-i2c
|
- microchip,sama7g5-i2c
|
||||||
then:
|
then:
|
||||||
properties:
|
properties:
|
||||||
|
@ -76,21 +76,21 @@ else:
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
bsca: i2c@f0406200 {
|
bsca: i2c@f0406200 {
|
||||||
clock-frequency = <390000>;
|
compatible = "brcm,brcmstb-i2c";
|
||||||
compatible = "brcm,brcmstb-i2c";
|
reg = <0xf0406200 0x58>;
|
||||||
interrupt-parent = <&irq0_intc>;
|
clock-frequency = <390000>;
|
||||||
reg = <0xf0406200 0x58>;
|
interrupt-parent = <&irq0_intc>;
|
||||||
interrupts = <0x18>;
|
interrupts = <0x18>;
|
||||||
interrupt-names = "upg_bsca";
|
interrupt-names = "upg_bsca";
|
||||||
};
|
};
|
||||||
|
|
||||||
- |
|
- |
|
||||||
ddc0: i2c@7ef04500 {
|
ddc0: i2c@7ef04500 {
|
||||||
compatible = "brcm,bcm2711-hdmi-i2c";
|
compatible = "brcm,bcm2711-hdmi-i2c";
|
||||||
reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
|
reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
|
||||||
reg-names = "bsc", "auto-i2c";
|
reg-names = "bsc", "auto-i2c";
|
||||||
clock-frequency = <390000>;
|
clock-frequency = <390000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -109,65 +109,65 @@ examples:
|
|||||||
// Example for a bus to be demuxed. It contains various I2C clients for
|
// Example for a bus to be demuxed. It contains various I2C clients for
|
||||||
// HDMI, so the bus is named "i2c-hdmi":
|
// HDMI, so the bus is named "i2c-hdmi":
|
||||||
i2chdmi: i2c-mux3 {
|
i2chdmi: i2c-mux3 {
|
||||||
compatible = "i2c-demux-pinctrl";
|
compatible = "i2c-demux-pinctrl";
|
||||||
i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
|
i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
|
||||||
i2c-bus-name = "i2c-hdmi";
|
i2c-bus-name = "i2c-hdmi";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
ak4643: codec@12 {
|
ak4643: codec@12 {
|
||||||
compatible = "asahi-kasei,ak4643";
|
compatible = "asahi-kasei,ak4643";
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
reg = <0x12>;
|
reg = <0x12>;
|
||||||
|
};
|
||||||
|
|
||||||
|
composite-in@20 {
|
||||||
|
compatible = "adi,adv7180";
|
||||||
|
reg = <0x20>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
adv7180: endpoint {
|
||||||
|
bus-width = <8>;
|
||||||
|
remote-endpoint = <&vin1ep0>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
composite-in@20 {
|
hdmi@39 {
|
||||||
compatible = "adi,adv7180";
|
compatible = "adi,adv7511w";
|
||||||
reg = <0x20>;
|
reg = <0x39>;
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
clocks = <&cec_clock>;
|
||||||
|
clock-names = "cec";
|
||||||
|
|
||||||
port {
|
avdd-supply = <&fixedregulator1v8>;
|
||||||
adv7180: endpoint {
|
dvdd-supply = <&fixedregulator1v8>;
|
||||||
bus-width = <8>;
|
pvdd-supply = <&fixedregulator1v8>;
|
||||||
remote-endpoint = <&vin1ep0>;
|
dvdd-3v-supply = <&fixedregulator3v3>;
|
||||||
};
|
bgvdd-supply = <&fixedregulator1v8>;
|
||||||
|
|
||||||
|
adi,input-depth = <8>;
|
||||||
|
adi,input-colorspace = "rgb";
|
||||||
|
adi,input-clock = "1x";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
adv7511_in: endpoint {
|
||||||
|
remote-endpoint = <&lvds0_out>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hdmi@39 {
|
port@1 {
|
||||||
compatible = "adi,adv7511w";
|
reg = <1>;
|
||||||
reg = <0x39>;
|
adv7511_out: endpoint {
|
||||||
interrupt-parent = <&gpio1>;
|
remote-endpoint = <&hdmi_con_out>;
|
||||||
interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
clocks = <&cec_clock>;
|
|
||||||
clock-names = "cec";
|
|
||||||
|
|
||||||
avdd-supply = <&fixedregulator1v8>;
|
|
||||||
dvdd-supply = <&fixedregulator1v8>;
|
|
||||||
pvdd-supply = <&fixedregulator1v8>;
|
|
||||||
dvdd-3v-supply = <&fixedregulator3v3>;
|
|
||||||
bgvdd-supply = <&fixedregulator1v8>;
|
|
||||||
|
|
||||||
adi,input-depth = <8>;
|
|
||||||
adi,input-colorspace = "rgb";
|
|
||||||
adi,input-clock = "1x";
|
|
||||||
|
|
||||||
ports {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
adv7511_in: endpoint {
|
|
||||||
remote-endpoint = <&lvds0_out>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
adv7511_out: endpoint {
|
|
||||||
remote-endpoint = <&hdmi_con_out>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
NXP I2C controller for LPC2xxx/178x/18xx/43xx
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: must be "nxp,lpc1788-i2c"
|
|
||||||
- reg: physical address and length of the device registers
|
|
||||||
- interrupts: a single interrupt specifier
|
|
||||||
- clocks: clock for the device
|
|
||||||
- #address-cells: should be <1>
|
|
||||||
- #size-cells: should be <0>
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- clock-frequency: the desired I2C bus clock frequency in Hz; in
|
|
||||||
absence of this property the default value is used (100 kHz).
|
|
||||||
|
|
||||||
Example:
|
|
||||||
i2c0: i2c@400a1000 {
|
|
||||||
compatible = "nxp,lpc1788-i2c";
|
|
||||||
reg = <0x400a1000 0x1000>;
|
|
||||||
interrupts = <18>;
|
|
||||||
clocks = <&ccu1 CLK_APB1_I2C0>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
|
|
||||||
lm75@48 {
|
|
||||||
compatible = "nxp,lm75";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -87,12 +87,6 @@ properties:
|
|||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
'#address-cells':
|
|
||||||
const: 1
|
|
||||||
|
|
||||||
'#size-cells':
|
|
||||||
const: 0
|
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
minItems: 1
|
minItems: 1
|
||||||
maxItems: 2
|
maxItems: 2
|
||||||
|
54
Documentation/devicetree/bindings/i2c/nxp,lpc1788-i2c.yaml
Normal file
54
Documentation/devicetree/bindings/i2c/nxp,lpc1788-i2c.yaml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/i2c/nxp,lpc1788-i2c.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: NXP I2C controller for LPC2xxx/178x/18xx/43xx
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Vladimir Zapolskiy <vz@mleia.com>
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: nxp,lpc1788-i2c
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-frequency:
|
||||||
|
description: the desired I2C bus clock frequency in Hz
|
||||||
|
default: 100000
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include "dt-bindings/clock/lpc18xx-ccu.h"
|
||||||
|
|
||||||
|
i2c@400a1000 {
|
||||||
|
compatible = "nxp,lpc1788-i2c";
|
||||||
|
reg = <0x400a1000 0x1000>;
|
||||||
|
interrupts = <18>;
|
||||||
|
clocks = <&ccu1 CLK_APB1_I2C0>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
@ -44,11 +44,11 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
iic0: i2c@e0070000 {
|
iic0: i2c@e0070000 {
|
||||||
#address-cells = <1>;
|
compatible = "renesas,iic-emev2";
|
||||||
#size-cells = <0>;
|
reg = <0xe0070000 0x28>;
|
||||||
compatible = "renesas,iic-emev2";
|
interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
|
||||||
reg = <0xe0070000 0x28>;
|
clocks = <&iic0_sclk>;
|
||||||
interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
|
clock-names = "sclk";
|
||||||
clocks = <&iic0_sclk>;
|
#address-cells = <1>;
|
||||||
clock-names = "sclk";
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -153,14 +153,14 @@ examples:
|
|||||||
#include <dt-bindings/power/r8a7791-sysc.h>
|
#include <dt-bindings/power/r8a7791-sysc.h>
|
||||||
|
|
||||||
i2c0: i2c@e6508000 {
|
i2c0: i2c@e6508000 {
|
||||||
#address-cells = <1>;
|
compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
|
||||||
#size-cells = <0>;
|
reg = <0xe6508000 0x40>;
|
||||||
compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
|
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
reg = <0xe6508000 0x40>;
|
clock-frequency = <400000>;
|
||||||
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
|
clocks = <&cpg CPG_MOD 931>;
|
||||||
clock-frequency = <400000>;
|
power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
|
||||||
clocks = <&cpg CPG_MOD 931>;
|
resets = <&cpg 931>;
|
||||||
power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
|
i2c-scl-internal-delay-ns = <6>;
|
||||||
resets = <&cpg 931>;
|
#address-cells = <1>;
|
||||||
i2c-scl-internal-delay-ns = <6>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -97,21 +97,21 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
i2c0: i2c@fcfee000 {
|
i2c0: i2c@fcfee000 {
|
||||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||||
reg = <0xfcfee000 0x44>;
|
reg = <0xfcfee000 0x44>;
|
||||||
interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
|
<GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
|
||||||
<GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
|
<GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
|
||||||
<GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali",
|
interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali",
|
||||||
"tmoi";
|
"tmoi";
|
||||||
clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
|
clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
|
||||||
clock-frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
power-domains = <&cpg_clocks>;
|
power-domains = <&cpg_clocks>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -134,16 +134,16 @@ examples:
|
|||||||
#include <dt-bindings/power/r8a7790-sysc.h>
|
#include <dt-bindings/power/r8a7790-sysc.h>
|
||||||
|
|
||||||
iic0: i2c@e6500000 {
|
iic0: i2c@e6500000 {
|
||||||
compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
|
compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
|
||||||
"renesas,rmobile-iic";
|
"renesas,rmobile-iic";
|
||||||
reg = <0xe6500000 0x425>;
|
reg = <0xe6500000 0x425>;
|
||||||
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cpg CPG_MOD 318>;
|
clocks = <&cpg CPG_MOD 318>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
dmas = <&dmac0 0x61>, <&dmac0 0x62>, <&dmac1 0x61>, <&dmac1 0x62>;
|
dmas = <&dmac0 0x61>, <&dmac0 0x62>, <&dmac1 0x61>, <&dmac1 0x62>;
|
||||||
dma-names = "tx", "rx", "tx", "rx";
|
dma-names = "tx", "rx", "tx", "rx";
|
||||||
power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
|
power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
|
||||||
resets = <&cpg 318>;
|
resets = <&cpg 318>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -26,9 +26,6 @@ properties:
|
|||||||
- samsung,exynos850-i2c
|
- samsung,exynos850-i2c
|
||||||
- const: samsung,s3c2440-i2c
|
- const: samsung,s3c2440-i2c
|
||||||
|
|
||||||
'#address-cells':
|
|
||||||
const: 1
|
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
@ -73,9 +70,6 @@ properties:
|
|||||||
$ref: /schemas/types.yaml#/definitions/phandle
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
description: Pandle to syscon used to control the system registers.
|
description: Pandle to syscon used to control the system registers.
|
||||||
|
|
||||||
'#size-cells':
|
|
||||||
const: 0
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -33,6 +33,10 @@ properties:
|
|||||||
- const: snps,designware-i2c
|
- const: snps,designware-i2c
|
||||||
- description: Baikal-T1 SoC System I2C controller
|
- description: Baikal-T1 SoC System I2C controller
|
||||||
const: baikal,bt1-sys-i2c
|
const: baikal,bt1-sys-i2c
|
||||||
|
- description: T-HEAD TH1520 SoCs I2C controller
|
||||||
|
items:
|
||||||
|
- const: thead,th1520-i2c
|
||||||
|
- const: snps,designware-i2c
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
minItems: 1
|
minItems: 1
|
||||||
|
@ -145,31 +145,31 @@ examples:
|
|||||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||||
//Example 1 (with st,stm32f4-i2c compatible)
|
//Example 1 (with st,stm32f4-i2c compatible)
|
||||||
i2c@40005400 {
|
i2c@40005400 {
|
||||||
compatible = "st,stm32f4-i2c";
|
compatible = "st,stm32f4-i2c";
|
||||||
#address-cells = <1>;
|
reg = <0x40005400 0x400>;
|
||||||
#size-cells = <0>;
|
interrupts = <31>,
|
||||||
reg = <0x40005400 0x400>;
|
<32>;
|
||||||
interrupts = <31>,
|
resets = <&rcc 277>;
|
||||||
<32>;
|
clocks = <&rcc 0 149>;
|
||||||
resets = <&rcc 277>;
|
#address-cells = <1>;
|
||||||
clocks = <&rcc 0 149>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
- |
|
- |
|
||||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||||
//Example 2 (with st,stm32f7-i2c compatible)
|
//Example 2 (with st,stm32f7-i2c compatible)
|
||||||
i2c@40005800 {
|
i2c@40005800 {
|
||||||
compatible = "st,stm32f7-i2c";
|
compatible = "st,stm32f7-i2c";
|
||||||
#address-cells = <1>;
|
reg = <0x40005800 0x400>;
|
||||||
#size-cells = <0>;
|
interrupts = <31>,
|
||||||
reg = <0x40005800 0x400>;
|
<32>;
|
||||||
interrupts = <31>,
|
resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
|
||||||
<32>;
|
clocks = <&rcc 1 CLK_I2C1>;
|
||||||
resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
|
#address-cells = <1>;
|
||||||
clocks = <&rcc 1 CLK_I2C1>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
- |
|
- |
|
||||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||||
@ -178,16 +178,16 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
#include <dt-bindings/clock/stm32mp1-clks.h>
|
#include <dt-bindings/clock/stm32mp1-clks.h>
|
||||||
#include <dt-bindings/reset/stm32mp1-resets.h>
|
#include <dt-bindings/reset/stm32mp1-resets.h>
|
||||||
i2c@40013000 {
|
i2c@40013000 {
|
||||||
compatible = "st,stm32mp15-i2c";
|
compatible = "st,stm32mp15-i2c";
|
||||||
#address-cells = <1>;
|
reg = <0x40013000 0x400>;
|
||||||
#size-cells = <0>;
|
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
reg = <0x40013000 0x400>;
|
<GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
|
clocks = <&rcc I2C2_K>;
|
||||||
<GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
resets = <&rcc I2C2_R>;
|
||||||
clocks = <&rcc I2C2_K>;
|
i2c-scl-rising-time-ns = <185>;
|
||||||
resets = <&rcc I2C2_R>;
|
i2c-scl-falling-time-ns = <20>;
|
||||||
i2c-scl-rising-time-ns = <185>;
|
st,syscfg-fmp = <&syscfg 0x4 0x2>;
|
||||||
i2c-scl-falling-time-ns = <20>;
|
#address-cells = <1>;
|
||||||
st,syscfg-fmp = <&syscfg 0x4 0x2>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -37,16 +37,8 @@ properties:
|
|||||||
clock-names:
|
clock-names:
|
||||||
const: fck
|
const: fck
|
||||||
|
|
||||||
clock-frequency: true
|
|
||||||
|
|
||||||
power-domains: true
|
power-domains: true
|
||||||
|
|
||||||
"#address-cells":
|
|
||||||
const: 1
|
|
||||||
|
|
||||||
"#size-cells":
|
|
||||||
const: 0
|
|
||||||
|
|
||||||
ti,hwmods:
|
ti,hwmods:
|
||||||
description:
|
description:
|
||||||
Must be "i2c<n>", n being the instance number (1-based).
|
Must be "i2c<n>", n being the instance number (1-based).
|
||||||
@ -55,38 +47,34 @@ properties:
|
|||||||
$ref: /schemas/types.yaml#/definitions/string
|
$ref: /schemas/types.yaml#/definitions/string
|
||||||
deprecated: true
|
deprecated: true
|
||||||
|
|
||||||
# subnode's properties
|
|
||||||
patternProperties:
|
|
||||||
"@[0-9a-f]+$":
|
|
||||||
type: object
|
|
||||||
description:
|
|
||||||
Flash device uses the below defined properties in the subnode.
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- interrupts
|
- interrupts
|
||||||
|
|
||||||
additionalProperties: false
|
allOf:
|
||||||
|
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||||
|
|
||||||
if:
|
- if:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
enum:
|
||||||
- ti,omap2420-i2c
|
- ti,omap2420-i2c
|
||||||
- ti,omap2430-i2c
|
- ti,omap2430-i2c
|
||||||
- ti,omap3-i2c
|
- ti,omap3-i2c
|
||||||
- ti,omap4-i2c
|
- ti,omap4-i2c
|
||||||
|
|
||||||
then:
|
then:
|
||||||
properties:
|
properties:
|
||||||
ti,hwmods:
|
ti,hwmods:
|
||||||
items:
|
items:
|
||||||
- pattern: "^i2c([1-9])$"
|
- pattern: "^i2c([1-9])$"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
properties:
|
properties:
|
||||||
ti,hwmods: false
|
ti,hwmods: false
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
@ -94,9 +82,9 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
main_i2c0: i2c@2000000 {
|
main_i2c0: i2c@2000000 {
|
||||||
compatible = "ti,j721e-i2c", "ti,omap4-i2c";
|
compatible = "ti,j721e-i2c", "ti,omap4-i2c";
|
||||||
reg = <0x2000000 0x100>;
|
reg = <0x2000000 0x100>;
|
||||||
interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -128,7 +128,6 @@ required:
|
|||||||
- cell-index
|
- cell-index
|
||||||
- reg
|
- reg
|
||||||
- fsl,fman-ports
|
- fsl,fman-ports
|
||||||
- ptp-timer
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
pcs-handle-names:
|
pcs-handle-names:
|
||||||
|
@ -29,7 +29,6 @@ properties:
|
|||||||
- qcom,pm7325-gpio
|
- qcom,pm7325-gpio
|
||||||
- qcom,pm7550ba-gpio
|
- qcom,pm7550ba-gpio
|
||||||
- qcom,pm8005-gpio
|
- qcom,pm8005-gpio
|
||||||
- qcom,pm8008-gpio
|
|
||||||
- qcom,pm8018-gpio
|
- qcom,pm8018-gpio
|
||||||
- qcom,pm8019-gpio
|
- qcom,pm8019-gpio
|
||||||
- qcom,pm8038-gpio
|
- qcom,pm8038-gpio
|
||||||
@ -126,7 +125,6 @@ allOf:
|
|||||||
compatible:
|
compatible:
|
||||||
contains:
|
contains:
|
||||||
enum:
|
enum:
|
||||||
- qcom,pm8008-gpio
|
|
||||||
- qcom,pmi8950-gpio
|
- qcom,pmi8950-gpio
|
||||||
- qcom,pmr735d-gpio
|
- qcom,pmr735d-gpio
|
||||||
then:
|
then:
|
||||||
@ -448,7 +446,6 @@ $defs:
|
|||||||
- gpio1-gpio10 for pm7325
|
- gpio1-gpio10 for pm7325
|
||||||
- gpio1-gpio8 for pm7550ba
|
- gpio1-gpio8 for pm7550ba
|
||||||
- gpio1-gpio4 for pm8005
|
- gpio1-gpio4 for pm8005
|
||||||
- gpio1-gpio2 for pm8008
|
|
||||||
- gpio1-gpio6 for pm8018
|
- gpio1-gpio6 for pm8018
|
||||||
- gpio1-gpio12 for pm8038
|
- gpio1-gpio12 for pm8038
|
||||||
- gpio1-gpio40 for pm8058
|
- gpio1-gpio40 for pm8058
|
||||||
|
@ -328,6 +328,12 @@ CXL Memory Device
|
|||||||
.. kernel-doc:: drivers/cxl/mem.c
|
.. kernel-doc:: drivers/cxl/mem.c
|
||||||
:doc: cxl mem
|
:doc: cxl mem
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/cxl/cxlmem.h
|
||||||
|
:internal:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/cxl/core/memdev.c
|
||||||
|
:identifiers:
|
||||||
|
|
||||||
CXL Port
|
CXL Port
|
||||||
--------
|
--------
|
||||||
.. kernel-doc:: drivers/cxl/port.c
|
.. kernel-doc:: drivers/cxl/port.c
|
||||||
@ -341,6 +347,15 @@ CXL Core
|
|||||||
.. kernel-doc:: drivers/cxl/cxl.h
|
.. kernel-doc:: drivers/cxl/cxl.h
|
||||||
:internal:
|
:internal:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/cxl/core/hdm.c
|
||||||
|
:doc: cxl core hdm
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/cxl/core/hdm.c
|
||||||
|
:identifiers:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/cxl/core/cdat.c
|
||||||
|
:identifiers:
|
||||||
|
|
||||||
.. kernel-doc:: drivers/cxl/core/port.c
|
.. kernel-doc:: drivers/cxl/core/port.c
|
||||||
:doc: cxl core
|
:doc: cxl core
|
||||||
|
|
||||||
|
@ -571,6 +571,7 @@ encoded manner. The codes are the following:
|
|||||||
um userfaultfd missing tracking
|
um userfaultfd missing tracking
|
||||||
uw userfaultfd wr-protect tracking
|
uw userfaultfd wr-protect tracking
|
||||||
ss shadow stack page
|
ss shadow stack page
|
||||||
|
sl sealed
|
||||||
== =======================================
|
== =======================================
|
||||||
|
|
||||||
Note that there is no guarantee that every flag and associated mnemonic will
|
Note that there is no guarantee that every flag and associated mnemonic will
|
||||||
|
@ -48,6 +48,7 @@ Supported adapters:
|
|||||||
* Intel Raptor Lake (PCH)
|
* Intel Raptor Lake (PCH)
|
||||||
* Intel Meteor Lake (SOC and PCH)
|
* Intel Meteor Lake (SOC and PCH)
|
||||||
* Intel Birch Stream (SOC)
|
* Intel Birch Stream (SOC)
|
||||||
|
* Intel Arrow Lake (SOC)
|
||||||
|
|
||||||
Datasheets: Publicly available at the Intel website
|
Datasheets: Publicly available at the Intel website
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ executed to make module versioning work.
|
|||||||
|
|
||||||
modules_install
|
modules_install
|
||||||
Install the external module(s). The default location is
|
Install the external module(s). The default location is
|
||||||
/lib/modules/<kernel_release>/extra/, but a prefix may
|
/lib/modules/<kernel_release>/updates/, but a prefix may
|
||||||
be added with INSTALL_MOD_PATH (discussed in section 5).
|
be added with INSTALL_MOD_PATH (discussed in section 5).
|
||||||
|
|
||||||
clean
|
clean
|
||||||
@ -417,7 +417,7 @@ directory:
|
|||||||
|
|
||||||
And external modules are installed in:
|
And external modules are installed in:
|
||||||
|
|
||||||
/lib/modules/$(KERNELRELEASE)/extra/
|
/lib/modules/$(KERNELRELEASE)/updates/
|
||||||
|
|
||||||
5.1 INSTALL_MOD_PATH
|
5.1 INSTALL_MOD_PATH
|
||||||
--------------------
|
--------------------
|
||||||
@ -438,10 +438,10 @@ And external modules are installed in:
|
|||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
External modules are by default installed to a directory under
|
External modules are by default installed to a directory under
|
||||||
/lib/modules/$(KERNELRELEASE)/extra/, but you may wish to
|
/lib/modules/$(KERNELRELEASE)/updates/, but you may wish to
|
||||||
locate modules for a specific functionality in a separate
|
locate modules for a specific functionality in a separate
|
||||||
directory. For this purpose, use INSTALL_MOD_DIR to specify an
|
directory. For this purpose, use INSTALL_MOD_DIR to specify an
|
||||||
alternative name to "extra."::
|
alternative name to "updates."::
|
||||||
|
|
||||||
$ make INSTALL_MOD_DIR=gandalf -C $KDIR \
|
$ make INSTALL_MOD_DIR=gandalf -C $KDIR \
|
||||||
M=$PWD modules_install
|
M=$PWD modules_install
|
||||||
|
@ -1603,7 +1603,7 @@ operations:
|
|||||||
attributes:
|
attributes:
|
||||||
- header
|
- header
|
||||||
reply:
|
reply:
|
||||||
attributes: &pse
|
attributes:
|
||||||
- header
|
- header
|
||||||
- podl-pse-admin-state
|
- podl-pse-admin-state
|
||||||
- podl-pse-admin-control
|
- podl-pse-admin-control
|
||||||
@ -1620,7 +1620,10 @@ operations:
|
|||||||
|
|
||||||
do:
|
do:
|
||||||
request:
|
request:
|
||||||
attributes: *pse
|
attributes:
|
||||||
|
- header
|
||||||
|
- podl-pse-admin-control
|
||||||
|
- c33-pse-admin-control
|
||||||
-
|
-
|
||||||
name: rss-get
|
name: rss-get
|
||||||
doc: Get RSS params.
|
doc: Get RSS params.
|
||||||
|
@ -186,6 +186,7 @@ Code Seq# Include File Comments
|
|||||||
'Q' all linux/soundcard.h
|
'Q' all linux/soundcard.h
|
||||||
'R' 00-1F linux/random.h conflict!
|
'R' 00-1F linux/random.h conflict!
|
||||||
'R' 01 linux/rfkill.h conflict!
|
'R' 01 linux/rfkill.h conflict!
|
||||||
|
'R' 20-2F linux/trace_mmap.h
|
||||||
'R' C0-DF net/bluetooth/rfcomm.h
|
'R' C0-DF net/bluetooth/rfcomm.h
|
||||||
'R' E0 uapi/linux/fsl_mc.h
|
'R' E0 uapi/linux/fsl_mc.h
|
||||||
'S' all linux/cdrom.h conflict!
|
'S' all linux/cdrom.h conflict!
|
||||||
|
35
MAINTAINERS
35
MAINTAINERS
@ -1044,7 +1044,7 @@ M: Joerg Roedel <joro@8bytes.org>
|
|||||||
R: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
R: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
|
||||||
L: iommu@lists.linux.dev
|
L: iommu@lists.linux.dev
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
|
||||||
F: drivers/iommu/amd/
|
F: drivers/iommu/amd/
|
||||||
F: include/linux/amd-iommu.h
|
F: include/linux/amd-iommu.h
|
||||||
|
|
||||||
@ -2374,7 +2374,7 @@ ARM/LPC18XX ARCHITECTURE
|
|||||||
M: Vladimir Zapolskiy <vz@mleia.com>
|
M: Vladimir Zapolskiy <vz@mleia.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt
|
F: Documentation/devicetree/bindings/i2c/nxp,lpc1788-i2c.yaml
|
||||||
F: arch/arm/boot/dts/nxp/lpc/lpc43*
|
F: arch/arm/boot/dts/nxp/lpc/lpc43*
|
||||||
F: drivers/i2c/busses/i2c-lpc2k.c
|
F: drivers/i2c/busses/i2c-lpc2k.c
|
||||||
F: drivers/memory/pl172.c
|
F: drivers/memory/pl172.c
|
||||||
@ -3601,10 +3601,9 @@ W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
|
|||||||
F: drivers/net/wireless/broadcom/b43/
|
F: drivers/net/wireless/broadcom/b43/
|
||||||
|
|
||||||
B43LEGACY WIRELESS DRIVER
|
B43LEGACY WIRELESS DRIVER
|
||||||
M: Larry Finger <Larry.Finger@lwfinger.net>
|
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
L: b43-dev@lists.infradead.org
|
L: b43-dev@lists.infradead.org
|
||||||
S: Maintained
|
S: Orphan
|
||||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
|
W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
|
||||||
F: drivers/net/wireless/broadcom/b43legacy/
|
F: drivers/net/wireless/broadcom/b43legacy/
|
||||||
|
|
||||||
@ -4083,12 +4082,13 @@ F: kernel/bpf/ringbuf.c
|
|||||||
|
|
||||||
BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
|
BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
|
||||||
M: KP Singh <kpsingh@kernel.org>
|
M: KP Singh <kpsingh@kernel.org>
|
||||||
R: Matt Bobrowski <mattbobrowski@google.com>
|
M: Matt Bobrowski <mattbobrowski@google.com>
|
||||||
L: bpf@vger.kernel.org
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/bpf/prog_lsm.rst
|
F: Documentation/bpf/prog_lsm.rst
|
||||||
F: include/linux/bpf_lsm.h
|
F: include/linux/bpf_lsm.h
|
||||||
F: kernel/bpf/bpf_lsm.c
|
F: kernel/bpf/bpf_lsm.c
|
||||||
|
F: kernel/trace/bpf_trace.c
|
||||||
F: security/bpf/
|
F: security/bpf/
|
||||||
|
|
||||||
BPF [SELFTESTS] (Test Runners & Infrastructure)
|
BPF [SELFTESTS] (Test Runners & Infrastructure)
|
||||||
@ -6238,9 +6238,8 @@ S: Maintained
|
|||||||
F: drivers/usb/dwc3/
|
F: drivers/usb/dwc3/
|
||||||
|
|
||||||
DESIGNWARE XDATA IP DRIVER
|
DESIGNWARE XDATA IP DRIVER
|
||||||
M: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
|
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Maintained
|
S: Orphan
|
||||||
F: Documentation/misc-devices/dw-xdata-pcie.rst
|
F: Documentation/misc-devices/dw-xdata-pcie.rst
|
||||||
F: drivers/misc/dw-xdata-pcie.c
|
F: drivers/misc/dw-xdata-pcie.c
|
||||||
|
|
||||||
@ -11156,7 +11155,7 @@ M: David Woodhouse <dwmw2@infradead.org>
|
|||||||
M: Lu Baolu <baolu.lu@linux.intel.com>
|
M: Lu Baolu <baolu.lu@linux.intel.com>
|
||||||
L: iommu@lists.linux.dev
|
L: iommu@lists.linux.dev
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
|
||||||
F: drivers/iommu/intel/
|
F: drivers/iommu/intel/
|
||||||
|
|
||||||
INTEL IPU3 CSI-2 CIO2 DRIVER
|
INTEL IPU3 CSI-2 CIO2 DRIVER
|
||||||
@ -11529,7 +11528,7 @@ IOMMU DMA-API LAYER
|
|||||||
M: Robin Murphy <robin.murphy@arm.com>
|
M: Robin Murphy <robin.murphy@arm.com>
|
||||||
L: iommu@lists.linux.dev
|
L: iommu@lists.linux.dev
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
|
||||||
F: drivers/iommu/dma-iommu.c
|
F: drivers/iommu/dma-iommu.c
|
||||||
F: drivers/iommu/dma-iommu.h
|
F: drivers/iommu/dma-iommu.h
|
||||||
F: drivers/iommu/iova.c
|
F: drivers/iommu/iova.c
|
||||||
@ -11541,7 +11540,7 @@ M: Will Deacon <will@kernel.org>
|
|||||||
R: Robin Murphy <robin.murphy@arm.com>
|
R: Robin Murphy <robin.murphy@arm.com>
|
||||||
L: iommu@lists.linux.dev
|
L: iommu@lists.linux.dev
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
|
||||||
F: Documentation/devicetree/bindings/iommu/
|
F: Documentation/devicetree/bindings/iommu/
|
||||||
F: Documentation/userspace-api/iommu.rst
|
F: Documentation/userspace-api/iommu.rst
|
||||||
F: drivers/iommu/
|
F: drivers/iommu/
|
||||||
@ -17531,7 +17530,6 @@ F: include/linux/peci.h
|
|||||||
PENSANDO ETHERNET DRIVERS
|
PENSANDO ETHERNET DRIVERS
|
||||||
M: Shannon Nelson <shannon.nelson@amd.com>
|
M: Shannon Nelson <shannon.nelson@amd.com>
|
||||||
M: Brett Creeley <brett.creeley@amd.com>
|
M: Brett Creeley <brett.creeley@amd.com>
|
||||||
M: drivers@pensando.io
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/networking/device_drivers/ethernet/pensando/ionic.rst
|
F: Documentation/networking/device_drivers/ethernet/pensando/ionic.rst
|
||||||
@ -18209,6 +18207,7 @@ QCOM AUDIO (ASoC) DRIVERS
|
|||||||
M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||||
M: Banajit Goswami <bgoswami@quicinc.com>
|
M: Banajit Goswami <bgoswami@quicinc.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
|
L: linux-arm-msm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/devicetree/bindings/soc/qcom/qcom,apr*
|
F: Documentation/devicetree/bindings/soc/qcom/qcom,apr*
|
||||||
F: Documentation/devicetree/bindings/sound/qcom,*
|
F: Documentation/devicetree/bindings/sound/qcom,*
|
||||||
@ -18373,7 +18372,7 @@ M: Jeff Johnson <jjohnson@kernel.org>
|
|||||||
L: ath12k@lists.infradead.org
|
L: ath12k@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
|
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
|
||||||
F: drivers/net/wireless/ath/ath12k/
|
F: drivers/net/wireless/ath/ath12k/
|
||||||
N: ath12k
|
N: ath12k
|
||||||
|
|
||||||
@ -18383,7 +18382,7 @@ M: Jeff Johnson <jjohnson@kernel.org>
|
|||||||
L: ath10k@lists.infradead.org
|
L: ath10k@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
|
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
|
||||||
F: drivers/net/wireless/ath/ath10k/
|
F: drivers/net/wireless/ath/ath10k/
|
||||||
N: ath10k
|
N: ath10k
|
||||||
|
|
||||||
@ -18394,7 +18393,7 @@ L: ath11k@lists.infradead.org
|
|||||||
S: Supported
|
S: Supported
|
||||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
|
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
|
||||||
B: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
|
B: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
|
||||||
F: drivers/net/wireless/ath/ath11k/
|
F: drivers/net/wireless/ath/ath11k/
|
||||||
N: ath11k
|
N: ath11k
|
||||||
|
|
||||||
@ -18403,7 +18402,7 @@ M: Toke Høiland-Jørgensen <toke@toke.dk>
|
|||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
|
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
|
||||||
F: Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
|
F: Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
|
||||||
F: drivers/net/wireless/ath/ath9k/
|
F: drivers/net/wireless/ath/ath9k/
|
||||||
|
|
||||||
@ -19314,7 +19313,7 @@ F: drivers/perf/riscv_pmu_legacy.c
|
|||||||
F: drivers/perf/riscv_pmu_sbi.c
|
F: drivers/perf/riscv_pmu_sbi.c
|
||||||
|
|
||||||
RISC-V THEAD SoC SUPPORT
|
RISC-V THEAD SoC SUPPORT
|
||||||
M: Jisheng Zhang <jszhang@kernel.org>
|
M: Drew Fustini <drew@pdp7.com>
|
||||||
M: Guo Ren <guoren@kernel.org>
|
M: Guo Ren <guoren@kernel.org>
|
||||||
M: Fu Wei <wefu@redhat.com>
|
M: Fu Wei <wefu@redhat.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
@ -19508,7 +19507,6 @@ F: drivers/net/wireless/realtek/rtl818x/rtl8180/
|
|||||||
|
|
||||||
RTL8187 WIRELESS DRIVER
|
RTL8187 WIRELESS DRIVER
|
||||||
M: Hin-Tak Leung <hintak.leung@gmail.com>
|
M: Hin-Tak Leung <hintak.leung@gmail.com>
|
||||||
M: Larry Finger <Larry.Finger@lwfinger.net>
|
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git https://github.com/pkshih/rtw.git
|
T: git https://github.com/pkshih/rtw.git
|
||||||
@ -21246,7 +21244,6 @@ W: http://wiki.laptop.org/go/DCON
|
|||||||
F: drivers/staging/olpc_dcon/
|
F: drivers/staging/olpc_dcon/
|
||||||
|
|
||||||
STAGING - REALTEK RTL8712U DRIVERS
|
STAGING - REALTEK RTL8712U DRIVERS
|
||||||
M: Larry Finger <Larry.Finger@lwfinger.net>
|
|
||||||
M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
|
M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/staging/rtl8712/
|
F: drivers/staging/rtl8712/
|
||||||
@ -22745,7 +22742,7 @@ M: Jarkko Sakkinen <jarkko@kernel.org>
|
|||||||
R: Jason Gunthorpe <jgg@ziepe.ca>
|
R: Jason Gunthorpe <jgg@ziepe.ca>
|
||||||
L: linux-integrity@vger.kernel.org
|
L: linux-integrity@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
W: https://gitlab.com/jarkkojs/linux-tpmdd-test
|
W: https://codeberg.org/jarkko/linux-tpmdd-test
|
||||||
Q: https://patchwork.kernel.org/project/linux-integrity/list/
|
Q: https://patchwork.kernel.org/project/linux-integrity/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
|
||||||
F: Documentation/devicetree/bindings/tpm/
|
F: Documentation/devicetree/bindings/tpm/
|
||||||
|
2
Makefile
2
Makefile
@ -2,7 +2,7 @@
|
|||||||
VERSION = 6
|
VERSION = 6
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc5
|
EXTRAVERSION = -rc7
|
||||||
NAME = Baby Opossum Posse
|
NAME = Baby Opossum Posse
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -128,6 +128,7 @@
|
|||||||
pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
|
pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
|
||||||
power-domains = <&power RK3066_PD_VIO>;
|
power-domains = <&power RK3066_PD_VIO>;
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include <dt-bindings/leds/common.h>
|
||||||
#include "rk3308.dtsi"
|
#include "rk3308.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
@ -24,17 +26,21 @@
|
|||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&green_led_gio>, <&heartbeat_led_gpio>;
|
pinctrl-0 = <&green_led>, <&heartbeat_led>;
|
||||||
|
|
||||||
green-led {
|
green-led {
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
|
function = LED_FUNCTION_POWER;
|
||||||
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||||
label = "rockpis:green:power";
|
label = "rockpis:green:power";
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
};
|
};
|
||||||
|
|
||||||
blue-led {
|
blue-led {
|
||||||
|
color = <LED_COLOR_ID_BLUE>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
|
function = LED_FUNCTION_HEARTBEAT;
|
||||||
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||||
label = "rockpis:blue:user";
|
label = "rockpis:blue:user";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
@ -126,10 +132,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&emmc {
|
&emmc {
|
||||||
bus-width = <4>;
|
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
mmc-hs200-1_8v;
|
cap-sd-highspeed;
|
||||||
|
no-sdio;
|
||||||
non-removable;
|
non-removable;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||||
vmmc-supply = <&vcc_io>;
|
vmmc-supply = <&vcc_io>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
@ -214,11 +222,11 @@
|
|||||||
pinctrl-0 = <&rtc_32k>;
|
pinctrl-0 = <&rtc_32k>;
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
green_led_gio: green-led-gpio {
|
green_led: green-led {
|
||||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
heartbeat_led_gpio: heartbeat-led-gpio {
|
heartbeat_led: heartbeat-led {
|
||||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -811,7 +811,7 @@
|
|||||||
clocks = <&cru SCLK_I2S2_8CH_TX_OUT>,
|
clocks = <&cru SCLK_I2S2_8CH_TX_OUT>,
|
||||||
<&cru SCLK_I2S2_8CH_RX_OUT>,
|
<&cru SCLK_I2S2_8CH_RX_OUT>,
|
||||||
<&cru PCLK_ACODEC>;
|
<&cru PCLK_ACODEC>;
|
||||||
reset-names = "codec-reset";
|
reset-names = "codec";
|
||||||
resets = <&cru SRST_ACODEC_P>;
|
resets = <&cru SRST_ACODEC_P>;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -241,8 +241,8 @@
|
|||||||
rk805: pmic@18 {
|
rk805: pmic@18 {
|
||||||
compatible = "rockchip,rk805";
|
compatible = "rockchip,rk805";
|
||||||
reg = <0x18>;
|
reg = <0x18>;
|
||||||
interrupt-parent = <&gpio2>;
|
interrupt-parent = <&gpio0>;
|
||||||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-output-names = "xin32k", "rk805-clkout2";
|
clock-output-names = "xin32k", "rk805-clkout2";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
@ -793,6 +793,7 @@
|
|||||||
dma-names = "tx";
|
dma-names = "tx";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&spdif_tx>;
|
pinctrl-0 = <&spdif_tx>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -804,6 +805,7 @@
|
|||||||
clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>;
|
clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>;
|
||||||
dmas = <&dmac_bus 6>, <&dmac_bus 7>;
|
dmas = <&dmac_bus 6>, <&dmac_bus 7>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -817,6 +819,7 @@
|
|||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2s_8ch_bus>;
|
pinctrl-0 = <&i2s_8ch_bus>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -450,7 +450,7 @@ ap_i2c_audio: &i2c8 {
|
|||||||
dlg,btn-cfg = <50>;
|
dlg,btn-cfg = <50>;
|
||||||
dlg,mic-det-thr = <500>;
|
dlg,mic-det-thr = <500>;
|
||||||
dlg,jack-ins-deb = <20>;
|
dlg,jack-ins-deb = <20>;
|
||||||
dlg,jack-det-rate = "32ms_64ms";
|
dlg,jack-det-rate = "32_64";
|
||||||
dlg,jack-rem-deb = <1>;
|
dlg,jack-rem-deb = <1>;
|
||||||
|
|
||||||
dlg,a-d-btn-thr = <0xa>;
|
dlg,a-d-btn-thr = <0xa>;
|
||||||
|
@ -289,7 +289,7 @@
|
|||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <900000>;
|
regulator-min-microvolt = <500000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
regulator-ramp-delay = <6001>;
|
regulator-ramp-delay = <6001>;
|
||||||
|
|
||||||
|
@ -444,6 +444,7 @@
|
|||||||
&sdmmc {
|
&sdmmc {
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
max-frequency = <150000000>;
|
max-frequency = <150000000>;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
|
@ -435,6 +435,7 @@
|
|||||||
&sdmmc {
|
&sdmmc {
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
max-frequency = <150000000>;
|
max-frequency = <150000000>;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
|
@ -383,6 +383,7 @@
|
|||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
sd-uhs-sdr104;
|
sd-uhs-sdr104;
|
||||||
vmmc-supply = <&vcc_3v3_s3>;
|
vmmc-supply = <&vcc_3v3_s3>;
|
||||||
|
@ -344,6 +344,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&pwm0 {
|
||||||
|
pinctrl-0 = <&pwm0m1_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
};
|
||||||
|
|
||||||
&saradc {
|
&saradc {
|
||||||
vref-supply = <&vcc_1v8_s0>;
|
vref-supply = <&vcc_1v8_s0>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@ -288,9 +288,9 @@
|
|||||||
pinctrl-0 = <&i2c7m0_xfer>;
|
pinctrl-0 = <&i2c7m0_xfer>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
es8316: audio-codec@11 {
|
es8316: audio-codec@10 {
|
||||||
compatible = "everest,es8316";
|
compatible = "everest,es8316";
|
||||||
reg = <0x11>;
|
reg = <0x10>;
|
||||||
assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
|
assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
|
||||||
assigned-clock-rates = <12288000>;
|
assigned-clock-rates = <12288000>;
|
||||||
clocks = <&cru I2S0_8CH_MCLKOUT>;
|
clocks = <&cru I2S0_8CH_MCLKOUT>;
|
||||||
|
@ -366,6 +366,7 @@
|
|||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
max-frequency = <150000000>;
|
max-frequency = <150000000>;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
@ -393,6 +394,7 @@
|
|||||||
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
|
pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
|
||||||
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
|
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
|
||||||
spi-max-frequency = <1000000>;
|
spi-max-frequency = <1000000>;
|
||||||
|
system-power-controller;
|
||||||
|
|
||||||
vcc1-supply = <&vcc5v0_sys>;
|
vcc1-supply = <&vcc5v0_sys>;
|
||||||
vcc2-supply = <&vcc5v0_sys>;
|
vcc2-supply = <&vcc5v0_sys>;
|
||||||
|
@ -170,6 +170,7 @@
|
|||||||
#define PTE_CONT (_AT(pteval_t, 1) << 52) /* Contiguous range */
|
#define PTE_CONT (_AT(pteval_t, 1) << 52) /* Contiguous range */
|
||||||
#define PTE_PXN (_AT(pteval_t, 1) << 53) /* Privileged XN */
|
#define PTE_PXN (_AT(pteval_t, 1) << 53) /* Privileged XN */
|
||||||
#define PTE_UXN (_AT(pteval_t, 1) << 54) /* User XN */
|
#define PTE_UXN (_AT(pteval_t, 1) << 54) /* User XN */
|
||||||
|
#define PTE_SWBITS_MASK _AT(pteval_t, (BIT(63) | GENMASK(58, 55)))
|
||||||
|
|
||||||
#define PTE_ADDR_LOW (((_AT(pteval_t, 1) << (50 - PAGE_SHIFT)) - 1) << PAGE_SHIFT)
|
#define PTE_ADDR_LOW (((_AT(pteval_t, 1) << (50 - PAGE_SHIFT)) - 1) << PAGE_SHIFT)
|
||||||
#ifdef CONFIG_ARM64_PA_BITS_52
|
#ifdef CONFIG_ARM64_PA_BITS_52
|
||||||
|
@ -840,7 +840,7 @@ __SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)
|
|||||||
#define __NR_ppoll_time64 414
|
#define __NR_ppoll_time64 414
|
||||||
__SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)
|
__SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)
|
||||||
#define __NR_io_pgetevents_time64 416
|
#define __NR_io_pgetevents_time64 416
|
||||||
__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
|
__SYSCALL(__NR_io_pgetevents_time64, compat_sys_io_pgetevents_time64)
|
||||||
#define __NR_recvmmsg_time64 417
|
#define __NR_recvmmsg_time64 417
|
||||||
__SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)
|
__SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)
|
||||||
#define __NR_mq_timedsend_time64 418
|
#define __NR_mq_timedsend_time64 418
|
||||||
|
@ -173,7 +173,7 @@ static void __init remap_idmap_for_lpa2(void)
|
|||||||
* Don't bother with the FDT, we no longer need it after this.
|
* Don't bother with the FDT, we no longer need it after this.
|
||||||
*/
|
*/
|
||||||
memset(init_idmap_pg_dir, 0,
|
memset(init_idmap_pg_dir, 0,
|
||||||
(u64)init_idmap_pg_dir - (u64)init_idmap_pg_end);
|
(u64)init_idmap_pg_end - (u64)init_idmap_pg_dir);
|
||||||
|
|
||||||
create_init_idmap(init_idmap_pg_dir, mask);
|
create_init_idmap(init_idmap_pg_dir, mask);
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
|
@ -53,17 +53,15 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,
|
|||||||
syscall_set_return_value(current, regs, 0, ret);
|
syscall_set_return_value(current, regs, 0, ret);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
|
* This value will get limited by KSTACK_OFFSET_MAX(), which is 10
|
||||||
* but not enough for arm64 stack utilization comfort. To keep
|
* bits. The actual entropy will be further reduced by the compiler
|
||||||
* reasonable stack head room, reduce the maximum offset to 9 bits.
|
* when applying stack alignment constraints: the AAPCS mandates a
|
||||||
|
* 16-byte aligned SP at function boundaries, which will remove the
|
||||||
|
* 4 low bits from any entropy chosen here.
|
||||||
*
|
*
|
||||||
* The actual entropy will be further reduced by the compiler when
|
* The resulting 6 bits of entropy is seen in SP[9:4].
|
||||||
* applying stack alignment constraints: the AAPCS mandates a
|
|
||||||
* 16-byte (i.e. 4-bit) aligned SP at function boundaries.
|
|
||||||
*
|
|
||||||
* The resulting 5 bits of entropy is seen in SP[8:4].
|
|
||||||
*/
|
*/
|
||||||
choose_random_kstack_offset(get_random_u16() & 0x1FF);
|
choose_random_kstack_offset(get_random_u16());
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool has_syscall_work(unsigned long flags)
|
static inline bool has_syscall_work(unsigned long flags)
|
||||||
|
@ -124,7 +124,8 @@ bool pgattr_change_is_safe(u64 old, u64 new)
|
|||||||
* The following mapping attributes may be updated in live
|
* The following mapping attributes may be updated in live
|
||||||
* kernel mappings without the need for break-before-make.
|
* kernel mappings without the need for break-before-make.
|
||||||
*/
|
*/
|
||||||
pteval_t mask = PTE_PXN | PTE_RDONLY | PTE_WRITE | PTE_NG;
|
pteval_t mask = PTE_PXN | PTE_RDONLY | PTE_WRITE | PTE_NG |
|
||||||
|
PTE_SWBITS_MASK;
|
||||||
|
|
||||||
/* creating or taking down mappings is always safe */
|
/* creating or taking down mappings is always safe */
|
||||||
if (!pte_valid(__pte(old)) || !pte_valid(__pte(new)))
|
if (!pte_valid(__pte(old)) || !pte_valid(__pte(new)))
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#define __ARCH_WANT_SYS_CLONE3
|
#define __ARCH_WANT_SYS_CLONE3
|
||||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||||
|
#define __ARCH_WANT_SYNC_FILE_RANGE2
|
||||||
#include <asm-generic/unistd.h>
|
#include <asm-generic/unistd.h>
|
||||||
|
|
||||||
#define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
|
#define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
|
||||||
|
@ -20,7 +20,7 @@ SYSCALL_DEFINE6(mmap2,
|
|||||||
unsigned long, prot,
|
unsigned long, prot,
|
||||||
unsigned long, flags,
|
unsigned long, flags,
|
||||||
unsigned long, fd,
|
unsigned long, fd,
|
||||||
off_t, offset)
|
unsigned long, offset)
|
||||||
{
|
{
|
||||||
if (unlikely(offset & (~PAGE_MASK >> 12)))
|
if (unlikely(offset & (~PAGE_MASK >> 12)))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
6
arch/hexagon/include/asm/syscalls.h
Normal file
6
arch/hexagon/include/asm/syscalls.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
|
||||||
|
#include <asm-generic/syscalls.h>
|
||||||
|
|
||||||
|
asmlinkage long sys_hexagon_fadvise64_64(int fd, int advice,
|
||||||
|
u32 a2, u32 a3, u32 a4, u32 a5);
|
@ -36,5 +36,6 @@
|
|||||||
#define __ARCH_WANT_SYS_VFORK
|
#define __ARCH_WANT_SYS_VFORK
|
||||||
#define __ARCH_WANT_SYS_FORK
|
#define __ARCH_WANT_SYS_FORK
|
||||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||||
|
#define __ARCH_WANT_SYNC_FILE_RANGE2
|
||||||
|
|
||||||
#include <asm-generic/unistd.h>
|
#include <asm-generic/unistd.h>
|
||||||
|
@ -14,6 +14,13 @@
|
|||||||
#undef __SYSCALL
|
#undef __SYSCALL
|
||||||
#define __SYSCALL(nr, call) [nr] = (call),
|
#define __SYSCALL(nr, call) [nr] = (call),
|
||||||
|
|
||||||
|
SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice,
|
||||||
|
SC_ARG64(offset), SC_ARG64(len))
|
||||||
|
{
|
||||||
|
return ksys_fadvise64_64(fd, SC_VAL64(loff_t, offset), SC_VAL64(loff_t, len), advice);
|
||||||
|
}
|
||||||
|
#define sys_fadvise64_64 sys_hexagon_fadvise64_64
|
||||||
|
|
||||||
void *sys_call_table[__NR_syscalls] = {
|
void *sys_call_table[__NR_syscalls] = {
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#define __SYSCALL(nr, call) [nr] = (call),
|
#define __SYSCALL(nr, call) [nr] = (call),
|
||||||
|
|
||||||
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long,
|
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, unsigned long,
|
||||||
prot, unsigned long, flags, unsigned long, fd, off_t, offset)
|
prot, unsigned long, flags, unsigned long, fd, unsigned long, offset)
|
||||||
{
|
{
|
||||||
if (offset & ~PAGE_MASK)
|
if (offset & ~PAGE_MASK)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
|
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
|
||||||
unsigned long, prot, unsigned long, flags, unsigned long, fd,
|
unsigned long, prot, unsigned long, flags, unsigned long, fd,
|
||||||
off_t, pgoff)
|
unsigned long, pgoff)
|
||||||
{
|
{
|
||||||
if (pgoff & ~PAGE_MASK)
|
if (pgoff & ~PAGE_MASK)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -354,7 +354,7 @@
|
|||||||
412 n32 utimensat_time64 sys_utimensat
|
412 n32 utimensat_time64 sys_utimensat
|
||||||
413 n32 pselect6_time64 compat_sys_pselect6_time64
|
413 n32 pselect6_time64 compat_sys_pselect6_time64
|
||||||
414 n32 ppoll_time64 compat_sys_ppoll_time64
|
414 n32 ppoll_time64 compat_sys_ppoll_time64
|
||||||
416 n32 io_pgetevents_time64 sys_io_pgetevents
|
416 n32 io_pgetevents_time64 compat_sys_io_pgetevents_time64
|
||||||
417 n32 recvmmsg_time64 compat_sys_recvmmsg_time64
|
417 n32 recvmmsg_time64 compat_sys_recvmmsg_time64
|
||||||
418 n32 mq_timedsend_time64 sys_mq_timedsend
|
418 n32 mq_timedsend_time64 sys_mq_timedsend
|
||||||
419 n32 mq_timedreceive_time64 sys_mq_timedreceive
|
419 n32 mq_timedreceive_time64 sys_mq_timedreceive
|
||||||
|
@ -403,7 +403,7 @@
|
|||||||
412 o32 utimensat_time64 sys_utimensat sys_utimensat
|
412 o32 utimensat_time64 sys_utimensat sys_utimensat
|
||||||
413 o32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
413 o32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||||
414 o32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
414 o32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||||
416 o32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
416 o32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||||
417 o32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
417 o32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||||
418 o32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
418 o32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||||
419 o32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
419 o32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||||
|
@ -16,6 +16,7 @@ config PARISC
|
|||||||
select ARCH_HAS_UBSAN
|
select ARCH_HAS_UBSAN
|
||||||
select ARCH_HAS_PTE_SPECIAL
|
select ARCH_HAS_PTE_SPECIAL
|
||||||
select ARCH_NO_SG_CHAIN
|
select ARCH_NO_SG_CHAIN
|
||||||
|
select ARCH_SPLIT_ARG64 if !64BIT
|
||||||
select ARCH_SUPPORTS_HUGETLBFS if PA20
|
select ARCH_SUPPORTS_HUGETLBFS if PA20
|
||||||
select ARCH_SUPPORTS_MEMORY_FAILURE
|
select ARCH_SUPPORTS_MEMORY_FAILURE
|
||||||
select ARCH_STACKWALK
|
select ARCH_STACKWALK
|
||||||
|
@ -23,12 +23,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
|
|||||||
current->comm, current->pid, r20);
|
current->comm, current->pid, r20);
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags,
|
|
||||||
compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd,
|
|
||||||
const char __user * pathname)
|
|
||||||
{
|
|
||||||
return sys_fanotify_mark(fanotify_fd, flags,
|
|
||||||
((__u64)mask1 << 32) | mask0,
|
|
||||||
dfd, pathname);
|
|
||||||
}
|
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
95 common fchown sys_fchown
|
95 common fchown sys_fchown
|
||||||
96 common getpriority sys_getpriority
|
96 common getpriority sys_getpriority
|
||||||
97 common setpriority sys_setpriority
|
97 common setpriority sys_setpriority
|
||||||
98 common recv sys_recv
|
98 common recv sys_recv compat_sys_recv
|
||||||
99 common statfs sys_statfs compat_sys_statfs
|
99 common statfs sys_statfs compat_sys_statfs
|
||||||
100 common fstatfs sys_fstatfs compat_sys_fstatfs
|
100 common fstatfs sys_fstatfs compat_sys_fstatfs
|
||||||
101 common stat64 sys_stat64
|
101 common stat64 sys_stat64
|
||||||
@ -135,7 +135,7 @@
|
|||||||
120 common clone sys_clone_wrapper
|
120 common clone sys_clone_wrapper
|
||||||
121 common setdomainname sys_setdomainname
|
121 common setdomainname sys_setdomainname
|
||||||
122 common sendfile sys_sendfile compat_sys_sendfile
|
122 common sendfile sys_sendfile compat_sys_sendfile
|
||||||
123 common recvfrom sys_recvfrom
|
123 common recvfrom sys_recvfrom compat_sys_recvfrom
|
||||||
124 32 adjtimex sys_adjtimex_time32
|
124 32 adjtimex sys_adjtimex_time32
|
||||||
124 64 adjtimex sys_adjtimex
|
124 64 adjtimex sys_adjtimex
|
||||||
125 common mprotect sys_mprotect
|
125 common mprotect sys_mprotect
|
||||||
@ -364,7 +364,7 @@
|
|||||||
320 common accept4 sys_accept4
|
320 common accept4 sys_accept4
|
||||||
321 common prlimit64 sys_prlimit64
|
321 common prlimit64 sys_prlimit64
|
||||||
322 common fanotify_init sys_fanotify_init
|
322 common fanotify_init sys_fanotify_init
|
||||||
323 common fanotify_mark sys_fanotify_mark sys32_fanotify_mark
|
323 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark
|
||||||
324 32 clock_adjtime sys_clock_adjtime32
|
324 32 clock_adjtime sys_clock_adjtime32
|
||||||
324 64 clock_adjtime sys_clock_adjtime
|
324 64 clock_adjtime sys_clock_adjtime
|
||||||
325 common name_to_handle_at sys_name_to_handle_at
|
325 common name_to_handle_at sys_name_to_handle_at
|
||||||
|
@ -849,6 +849,7 @@ struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe)
|
|||||||
{
|
{
|
||||||
struct eeh_dev *edev;
|
struct eeh_dev *edev;
|
||||||
struct pci_dev *pdev;
|
struct pci_dev *pdev;
|
||||||
|
struct pci_bus *bus = NULL;
|
||||||
|
|
||||||
if (pe->type & EEH_PE_PHB)
|
if (pe->type & EEH_PE_PHB)
|
||||||
return pe->phb->bus;
|
return pe->phb->bus;
|
||||||
@ -859,9 +860,11 @@ struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe)
|
|||||||
|
|
||||||
/* Retrieve the parent PCI bus of first (top) PCI device */
|
/* Retrieve the parent PCI bus of first (top) PCI device */
|
||||||
edev = list_first_entry_or_null(&pe->edevs, struct eeh_dev, entry);
|
edev = list_first_entry_or_null(&pe->edevs, struct eeh_dev, entry);
|
||||||
|
pci_lock_rescan_remove();
|
||||||
pdev = eeh_dev_to_pci_dev(edev);
|
pdev = eeh_dev_to_pci_dev(edev);
|
||||||
if (pdev)
|
if (pdev)
|
||||||
return pdev->bus;
|
bus = pdev->bus;
|
||||||
|
pci_unlock_rescan_remove();
|
||||||
|
|
||||||
return NULL;
|
return bus;
|
||||||
}
|
}
|
||||||
|
@ -647,8 +647,9 @@ __after_prom_start:
|
|||||||
* Note: This process overwrites the OF exception vectors.
|
* Note: This process overwrites the OF exception vectors.
|
||||||
*/
|
*/
|
||||||
LOAD_REG_IMMEDIATE(r3, PAGE_OFFSET)
|
LOAD_REG_IMMEDIATE(r3, PAGE_OFFSET)
|
||||||
mr. r4,r26 /* In some cases the loader may */
|
mr r4,r26 /* Load the virtual source address into r4 */
|
||||||
beq 9f /* have already put us at zero */
|
cmpld r3,r4 /* Check if source == dest */
|
||||||
|
beq 9f /* If so skip the copy */
|
||||||
li r6,0x100 /* Start offset, the first 0x100 */
|
li r6,0x100 /* Start offset, the first 0x100 */
|
||||||
/* bytes were copied earlier. */
|
/* bytes were copied earlier. */
|
||||||
|
|
||||||
|
@ -230,8 +230,10 @@
|
|||||||
178 nospu rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend
|
178 nospu rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend
|
||||||
179 32 pread64 sys_ppc_pread64 compat_sys_ppc_pread64
|
179 32 pread64 sys_ppc_pread64 compat_sys_ppc_pread64
|
||||||
179 64 pread64 sys_pread64
|
179 64 pread64 sys_pread64
|
||||||
|
179 spu pread64 sys_pread64
|
||||||
180 32 pwrite64 sys_ppc_pwrite64 compat_sys_ppc_pwrite64
|
180 32 pwrite64 sys_ppc_pwrite64 compat_sys_ppc_pwrite64
|
||||||
180 64 pwrite64 sys_pwrite64
|
180 64 pwrite64 sys_pwrite64
|
||||||
|
180 spu pwrite64 sys_pwrite64
|
||||||
181 common chown sys_chown
|
181 common chown sys_chown
|
||||||
182 common getcwd sys_getcwd
|
182 common getcwd sys_getcwd
|
||||||
183 common capget sys_capget
|
183 common capget sys_capget
|
||||||
@ -246,6 +248,7 @@
|
|||||||
190 common ugetrlimit sys_getrlimit compat_sys_getrlimit
|
190 common ugetrlimit sys_getrlimit compat_sys_getrlimit
|
||||||
191 32 readahead sys_ppc_readahead compat_sys_ppc_readahead
|
191 32 readahead sys_ppc_readahead compat_sys_ppc_readahead
|
||||||
191 64 readahead sys_readahead
|
191 64 readahead sys_readahead
|
||||||
|
191 spu readahead sys_readahead
|
||||||
192 32 mmap2 sys_mmap2 compat_sys_mmap2
|
192 32 mmap2 sys_mmap2 compat_sys_mmap2
|
||||||
193 32 truncate64 sys_ppc_truncate64 compat_sys_ppc_truncate64
|
193 32 truncate64 sys_ppc_truncate64 compat_sys_ppc_truncate64
|
||||||
194 32 ftruncate64 sys_ppc_ftruncate64 compat_sys_ppc_ftruncate64
|
194 32 ftruncate64 sys_ppc_ftruncate64 compat_sys_ppc_ftruncate64
|
||||||
@ -293,6 +296,7 @@
|
|||||||
232 nospu set_tid_address sys_set_tid_address
|
232 nospu set_tid_address sys_set_tid_address
|
||||||
233 32 fadvise64 sys_ppc32_fadvise64 compat_sys_ppc32_fadvise64
|
233 32 fadvise64 sys_ppc32_fadvise64 compat_sys_ppc32_fadvise64
|
||||||
233 64 fadvise64 sys_fadvise64
|
233 64 fadvise64 sys_fadvise64
|
||||||
|
233 spu fadvise64 sys_fadvise64
|
||||||
234 nospu exit_group sys_exit_group
|
234 nospu exit_group sys_exit_group
|
||||||
235 nospu lookup_dcookie sys_ni_syscall
|
235 nospu lookup_dcookie sys_ni_syscall
|
||||||
236 common epoll_create sys_epoll_create
|
236 common epoll_create sys_epoll_create
|
||||||
@ -502,7 +506,7 @@
|
|||||||
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
||||||
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||||
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||||
416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||||
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||||
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||||
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <asm/paca.h>
|
#include <asm/paca.h>
|
||||||
#include <asm/mmu.h>
|
#include <asm/mmu.h>
|
||||||
#include <asm/sections.h> /* _end */
|
#include <asm/sections.h> /* _end */
|
||||||
|
#include <asm/setup.h>
|
||||||
#include <asm/smp.h>
|
#include <asm/smp.h>
|
||||||
#include <asm/hw_breakpoint.h>
|
#include <asm/hw_breakpoint.h>
|
||||||
#include <asm/svm.h>
|
#include <asm/svm.h>
|
||||||
@ -317,6 +318,16 @@ void default_machine_kexec(struct kimage *image)
|
|||||||
if (!kdump_in_progress())
|
if (!kdump_in_progress())
|
||||||
kexec_prepare_cpus();
|
kexec_prepare_cpus();
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_PSERIES
|
||||||
|
/*
|
||||||
|
* This must be done after other CPUs have shut down, otherwise they
|
||||||
|
* could execute the 'scv' instruction, which is not supported with
|
||||||
|
* reloc disabled (see configure_exceptions()).
|
||||||
|
*/
|
||||||
|
if (firmware_has_feature(FW_FEATURE_SET_MODE))
|
||||||
|
pseries_disable_reloc_on_exc();
|
||||||
|
#endif
|
||||||
|
|
||||||
printk("kexec: Starting switchover sequence.\n");
|
printk("kexec: Starting switchover sequence.\n");
|
||||||
|
|
||||||
/* switch to a staticly allocated stack. Based on irq stack code.
|
/* switch to a staticly allocated stack. Based on irq stack code.
|
||||||
|
@ -61,11 +61,3 @@ void pseries_kexec_cpu_down(int crash_shutdown, int secondary)
|
|||||||
} else
|
} else
|
||||||
xics_kexec_teardown_cpu(secondary);
|
xics_kexec_teardown_cpu(secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pseries_machine_kexec(struct kimage *image)
|
|
||||||
{
|
|
||||||
if (firmware_has_feature(FW_FEATURE_SET_MODE))
|
|
||||||
pseries_disable_reloc_on_exc();
|
|
||||||
|
|
||||||
default_machine_kexec(image);
|
|
||||||
}
|
|
||||||
|
@ -38,7 +38,6 @@ static inline void smp_init_pseries(void) { }
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void pseries_kexec_cpu_down(int crash_shutdown, int secondary);
|
extern void pseries_kexec_cpu_down(int crash_shutdown, int secondary);
|
||||||
void pseries_machine_kexec(struct kimage *image);
|
|
||||||
|
|
||||||
extern void pSeries_final_fixup(void);
|
extern void pSeries_final_fixup(void);
|
||||||
|
|
||||||
|
@ -343,8 +343,8 @@ static int alloc_dispatch_log_kmem_cache(void)
|
|||||||
{
|
{
|
||||||
void (*ctor)(void *) = get_dtl_cache_ctor();
|
void (*ctor)(void *) = get_dtl_cache_ctor();
|
||||||
|
|
||||||
dtl_cache = kmem_cache_create("dtl", DISPATCH_LOG_BYTES,
|
dtl_cache = kmem_cache_create_usercopy("dtl", DISPATCH_LOG_BYTES,
|
||||||
DISPATCH_LOG_BYTES, 0, ctor);
|
DISPATCH_LOG_BYTES, 0, 0, DISPATCH_LOG_BYTES, ctor);
|
||||||
if (!dtl_cache) {
|
if (!dtl_cache) {
|
||||||
pr_warn("Failed to create dispatch trace log buffer cache\n");
|
pr_warn("Failed to create dispatch trace log buffer cache\n");
|
||||||
pr_warn("Stolen time statistics will be unreliable\n");
|
pr_warn("Stolen time statistics will be unreliable\n");
|
||||||
@ -1159,7 +1159,6 @@ define_machine(pseries) {
|
|||||||
.machine_check_exception = pSeries_machine_check_exception,
|
.machine_check_exception = pSeries_machine_check_exception,
|
||||||
.machine_check_log_err = pSeries_machine_check_log_err,
|
.machine_check_log_err = pSeries_machine_check_log_err,
|
||||||
#ifdef CONFIG_KEXEC_CORE
|
#ifdef CONFIG_KEXEC_CORE
|
||||||
.machine_kexec = pseries_machine_kexec,
|
|
||||||
.kexec_cpu_down = pseries_kexec_cpu_down,
|
.kexec_cpu_down = pseries_kexec_cpu_down,
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
model = "Kendryte KD233";
|
model = "Kendryte KD233";
|
||||||
compatible = "canaan,kendryte-kd233", "canaan,kendryte-k210";
|
compatible = "canaan,kendryte-kd233", "canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -46,7 +50,6 @@
|
|||||||
&fpioa {
|
&fpioa {
|
||||||
pinctrl-0 = <&jtag_pinctrl>;
|
pinctrl-0 = <&jtag_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
jtag_pinctrl: jtag-pinmux {
|
jtag_pinctrl: jtag-pinmux {
|
||||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||||
@ -118,6 +121,7 @@
|
|||||||
#sound-dai-cells = <1>;
|
#sound-dai-cells = <1>;
|
||||||
pinctrl-0 = <&i2s0_pinctrl>;
|
pinctrl-0 = <&i2s0_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&spi0 {
|
&spi0 {
|
||||||
@ -125,6 +129,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "canaan,kd233-tft", "ilitek,ili9341";
|
compatible = "canaan,kd233-tft", "ilitek,ili9341";
|
||||||
|
@ -16,13 +16,6 @@
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "canaan,kendryte-k210";
|
compatible = "canaan,kendryte-k210";
|
||||||
|
|
||||||
aliases {
|
|
||||||
serial0 = &uarths0;
|
|
||||||
serial1 = &uart1;
|
|
||||||
serial2 = &uart2;
|
|
||||||
serial3 = &uart3;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The K210 has an sv39 MMU following the privileged specification v1.9.
|
* The K210 has an sv39 MMU following the privileged specification v1.9.
|
||||||
* Since this is a non-ratified draft specification, the kernel does not
|
* Since this is a non-ratified draft specification, the kernel does not
|
||||||
@ -137,6 +130,7 @@
|
|||||||
reg = <0x38000000 0x1000>;
|
reg = <0x38000000 0x1000>;
|
||||||
interrupts = <33>;
|
interrupts = <33>;
|
||||||
clocks = <&sysclk K210_CLK_CPU>;
|
clocks = <&sysclk K210_CLK_CPU>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0: gpio-controller@38001000 {
|
gpio0: gpio-controller@38001000 {
|
||||||
@ -152,6 +146,7 @@
|
|||||||
<62>, <63>, <64>, <65>;
|
<62>, <63>, <64>, <65>;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
ngpios = <32>;
|
ngpios = <32>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
dmac0: dma-controller@50000000 {
|
dmac0: dma-controller@50000000 {
|
||||||
@ -187,6 +182,7 @@
|
|||||||
<&sysclk K210_CLK_GPIO>;
|
<&sysclk K210_CLK_GPIO>;
|
||||||
clock-names = "bus", "db";
|
clock-names = "bus", "db";
|
||||||
resets = <&sysrst K210_RST_GPIO>;
|
resets = <&sysrst K210_RST_GPIO>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
gpio1_0: gpio-port@0 {
|
gpio1_0: gpio-port@0 {
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
@ -214,6 +210,7 @@
|
|||||||
dsr-override;
|
dsr-override;
|
||||||
cts-override;
|
cts-override;
|
||||||
ri-override;
|
ri-override;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart2: serial@50220000 {
|
uart2: serial@50220000 {
|
||||||
@ -230,6 +227,7 @@
|
|||||||
dsr-override;
|
dsr-override;
|
||||||
cts-override;
|
cts-override;
|
||||||
ri-override;
|
ri-override;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart3: serial@50230000 {
|
uart3: serial@50230000 {
|
||||||
@ -246,6 +244,7 @@
|
|||||||
dsr-override;
|
dsr-override;
|
||||||
cts-override;
|
cts-override;
|
||||||
ri-override;
|
ri-override;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spi2: spi@50240000 {
|
spi2: spi@50240000 {
|
||||||
@ -259,6 +258,7 @@
|
|||||||
<&sysclk K210_CLK_APB0>;
|
<&sysclk K210_CLK_APB0>;
|
||||||
clock-names = "ssi_clk", "pclk";
|
clock-names = "ssi_clk", "pclk";
|
||||||
resets = <&sysrst K210_RST_SPI2>;
|
resets = <&sysrst K210_RST_SPI2>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s0: i2s@50250000 {
|
i2s0: i2s@50250000 {
|
||||||
@ -268,6 +268,7 @@
|
|||||||
clocks = <&sysclk K210_CLK_I2S0>;
|
clocks = <&sysclk K210_CLK_I2S0>;
|
||||||
clock-names = "i2sclk";
|
clock-names = "i2sclk";
|
||||||
resets = <&sysrst K210_RST_I2S0>;
|
resets = <&sysrst K210_RST_I2S0>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s1: i2s@50260000 {
|
i2s1: i2s@50260000 {
|
||||||
@ -277,6 +278,7 @@
|
|||||||
clocks = <&sysclk K210_CLK_I2S1>;
|
clocks = <&sysclk K210_CLK_I2S1>;
|
||||||
clock-names = "i2sclk";
|
clock-names = "i2sclk";
|
||||||
resets = <&sysrst K210_RST_I2S1>;
|
resets = <&sysrst K210_RST_I2S1>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s2: i2s@50270000 {
|
i2s2: i2s@50270000 {
|
||||||
@ -286,6 +288,7 @@
|
|||||||
clocks = <&sysclk K210_CLK_I2S2>;
|
clocks = <&sysclk K210_CLK_I2S2>;
|
||||||
clock-names = "i2sclk";
|
clock-names = "i2sclk";
|
||||||
resets = <&sysrst K210_RST_I2S2>;
|
resets = <&sysrst K210_RST_I2S2>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0: i2c@50280000 {
|
i2c0: i2c@50280000 {
|
||||||
@ -296,6 +299,7 @@
|
|||||||
<&sysclk K210_CLK_APB0>;
|
<&sysclk K210_CLK_APB0>;
|
||||||
clock-names = "ref", "pclk";
|
clock-names = "ref", "pclk";
|
||||||
resets = <&sysrst K210_RST_I2C0>;
|
resets = <&sysrst K210_RST_I2C0>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@50290000 {
|
i2c1: i2c@50290000 {
|
||||||
@ -306,6 +310,7 @@
|
|||||||
<&sysclk K210_CLK_APB0>;
|
<&sysclk K210_CLK_APB0>;
|
||||||
clock-names = "ref", "pclk";
|
clock-names = "ref", "pclk";
|
||||||
resets = <&sysrst K210_RST_I2C1>;
|
resets = <&sysrst K210_RST_I2C1>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c2: i2c@502a0000 {
|
i2c2: i2c@502a0000 {
|
||||||
@ -316,6 +321,7 @@
|
|||||||
<&sysclk K210_CLK_APB0>;
|
<&sysclk K210_CLK_APB0>;
|
||||||
clock-names = "ref", "pclk";
|
clock-names = "ref", "pclk";
|
||||||
resets = <&sysrst K210_RST_I2C2>;
|
resets = <&sysrst K210_RST_I2C2>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
fpioa: pinmux@502b0000 {
|
fpioa: pinmux@502b0000 {
|
||||||
@ -464,6 +470,7 @@
|
|||||||
reset-names = "spi";
|
reset-names = "spi";
|
||||||
num-cs = <4>;
|
num-cs = <4>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spi1: spi@53000000 {
|
spi1: spi@53000000 {
|
||||||
@ -479,6 +486,7 @@
|
|||||||
reset-names = "spi";
|
reset-names = "spi";
|
||||||
num-cs = <4>;
|
num-cs = <4>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spi3: spi@54000000 {
|
spi3: spi@54000000 {
|
||||||
@ -495,6 +503,7 @@
|
|||||||
|
|
||||||
num-cs = <4>;
|
num-cs = <4>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
model = "Kendryte K210 generic";
|
model = "Kendryte K210 generic";
|
||||||
compatible = "canaan,kendryte-k210";
|
compatible = "canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -24,7 +28,6 @@
|
|||||||
&fpioa {
|
&fpioa {
|
||||||
pinctrl-0 = <&jtag_pins>;
|
pinctrl-0 = <&jtag_pins>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
jtag_pins: jtag-pinmux {
|
jtag_pins: jtag-pinmux {
|
||||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
compatible = "sipeed,maix-bit", "sipeed,maix-bitm",
|
compatible = "sipeed,maix-bit", "sipeed,maix-bitm",
|
||||||
"canaan,kendryte-k210";
|
"canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -58,7 +62,6 @@
|
|||||||
&fpioa {
|
&fpioa {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&jtag_pinctrl>;
|
pinctrl-0 = <&jtag_pinctrl>;
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
jtag_pinctrl: jtag-pinmux {
|
jtag_pinctrl: jtag-pinmux {
|
||||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||||
@ -156,6 +159,7 @@
|
|||||||
#sound-dai-cells = <1>;
|
#sound-dai-cells = <1>;
|
||||||
pinctrl-0 = <&i2s0_pinctrl>;
|
pinctrl-0 = <&i2s0_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
@ -170,6 +174,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "sitronix,st7789v";
|
compatible = "sitronix,st7789v";
|
||||||
@ -199,6 +204,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&spi3 {
|
&spi3 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
flash@0 {
|
flash@0 {
|
||||||
compatible = "jedec,spi-nor";
|
compatible = "jedec,spi-nor";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
compatible = "sipeed,maix-dock-m1", "sipeed,maix-dock-m1w",
|
compatible = "sipeed,maix-dock-m1", "sipeed,maix-dock-m1w",
|
||||||
"canaan,kendryte-k210";
|
"canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -63,7 +67,6 @@
|
|||||||
&fpioa {
|
&fpioa {
|
||||||
pinctrl-0 = <&jtag_pinctrl>;
|
pinctrl-0 = <&jtag_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
jtag_pinctrl: jtag-pinmux {
|
jtag_pinctrl: jtag-pinmux {
|
||||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||||
@ -159,6 +162,7 @@
|
|||||||
#sound-dai-cells = <1>;
|
#sound-dai-cells = <1>;
|
||||||
pinctrl-0 = <&i2s0_pinctrl>;
|
pinctrl-0 = <&i2s0_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
@ -173,6 +177,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "sitronix,st7789v";
|
compatible = "sitronix,st7789v";
|
||||||
|
@ -16,6 +16,10 @@
|
|||||||
model = "SiPeed MAIX GO";
|
model = "SiPeed MAIX GO";
|
||||||
compatible = "sipeed,maix-go", "canaan,kendryte-k210";
|
compatible = "sipeed,maix-go", "canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -69,7 +73,6 @@
|
|||||||
&fpioa {
|
&fpioa {
|
||||||
pinctrl-0 = <&jtag_pinctrl>;
|
pinctrl-0 = <&jtag_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
jtag_pinctrl: jtag-pinmux {
|
jtag_pinctrl: jtag-pinmux {
|
||||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||||
@ -167,6 +170,7 @@
|
|||||||
#sound-dai-cells = <1>;
|
#sound-dai-cells = <1>;
|
||||||
pinctrl-0 = <&i2s0_pinctrl>;
|
pinctrl-0 = <&i2s0_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
@ -181,6 +185,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "sitronix,st7789v";
|
compatible = "sitronix,st7789v";
|
||||||
@ -209,6 +214,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&spi3 {
|
&spi3 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
flash@0 {
|
flash@0 {
|
||||||
compatible = "jedec,spi-nor";
|
compatible = "jedec,spi-nor";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
model = "SiPeed MAIXDUINO";
|
model = "SiPeed MAIXDUINO";
|
||||||
compatible = "sipeed,maixduino", "canaan,kendryte-k210";
|
compatible = "sipeed,maixduino", "canaan,kendryte-k210";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarths0;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlycon console=ttySIF0";
|
bootargs = "earlycon console=ttySIF0";
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
@ -39,8 +43,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&fpioa {
|
&fpioa {
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
uarths_pinctrl: uarths-pinmux {
|
uarths_pinctrl: uarths-pinmux {
|
||||||
pinmux = <K210_FPIOA(4, K210_PCF_UARTHS_RX)>, /* Header "0" */
|
pinmux = <K210_FPIOA(4, K210_PCF_UARTHS_RX)>, /* Header "0" */
|
||||||
<K210_FPIOA(5, K210_PCF_UARTHS_TX)>; /* Header "1" */
|
<K210_FPIOA(5, K210_PCF_UARTHS_TX)>; /* Header "1" */
|
||||||
@ -132,6 +134,7 @@
|
|||||||
#sound-dai-cells = <1>;
|
#sound-dai-cells = <1>;
|
||||||
pinctrl-0 = <&i2s0_pinctrl>;
|
pinctrl-0 = <&i2s0_pinctrl>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
@ -146,6 +149,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "sitronix,st7789v";
|
compatible = "sitronix,st7789v";
|
||||||
@ -174,6 +178,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&spi3 {
|
&spi3 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
flash@0 {
|
flash@0 {
|
||||||
compatible = "jedec,spi-nor";
|
compatible = "jedec,spi-nor";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
@ -244,7 +244,7 @@
|
|||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-name = "emmc_vdd";
|
regulator-name = "emmc_vdd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -145,7 +145,7 @@
|
|||||||
|
|
||||||
/* parts of opcode for RVF, RVD and RVQ */
|
/* parts of opcode for RVF, RVD and RVQ */
|
||||||
#define RVFDQ_FL_FS_WIDTH_OFF 12
|
#define RVFDQ_FL_FS_WIDTH_OFF 12
|
||||||
#define RVFDQ_FL_FS_WIDTH_MASK GENMASK(3, 0)
|
#define RVFDQ_FL_FS_WIDTH_MASK GENMASK(2, 0)
|
||||||
#define RVFDQ_FL_FS_WIDTH_W 2
|
#define RVFDQ_FL_FS_WIDTH_W 2
|
||||||
#define RVFDQ_FL_FS_WIDTH_D 3
|
#define RVFDQ_FL_FS_WIDTH_D 3
|
||||||
#define RVFDQ_LS_FS_WIDTH_Q 4
|
#define RVFDQ_LS_FS_WIDTH_Q 4
|
||||||
|
@ -120,9 +120,6 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
|
|||||||
out = ftrace_make_nop(mod, rec, MCOUNT_ADDR);
|
out = ftrace_make_nop(mod, rec, MCOUNT_ADDR);
|
||||||
mutex_unlock(&text_mutex);
|
mutex_unlock(&text_mutex);
|
||||||
|
|
||||||
if (!mod)
|
|
||||||
local_flush_icache_range(rec->ip, rec->ip + MCOUNT_INSN_SIZE);
|
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,9 +153,9 @@ static int __ftrace_modify_code(void *data)
|
|||||||
} else {
|
} else {
|
||||||
while (atomic_read(¶m->cpu_count) <= num_online_cpus())
|
while (atomic_read(¶m->cpu_count) <= num_online_cpus())
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
}
|
|
||||||
|
|
||||||
local_flush_icache_all();
|
local_flush_icache_all();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -121,20 +121,12 @@ static void machine_kexec_mask_interrupts(void)
|
|||||||
|
|
||||||
for_each_irq_desc(i, desc) {
|
for_each_irq_desc(i, desc) {
|
||||||
struct irq_chip *chip;
|
struct irq_chip *chip;
|
||||||
int ret;
|
|
||||||
|
|
||||||
chip = irq_desc_get_chip(desc);
|
chip = irq_desc_get_chip(desc);
|
||||||
if (!chip)
|
if (!chip)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
if (chip->irq_eoi && irqd_irq_inprogress(&desc->irq_data))
|
||||||
* First try to remove the active state. If this
|
|
||||||
* fails, try to EOI the interrupt.
|
|
||||||
*/
|
|
||||||
ret = irq_set_irqchip_state(i, IRQCHIP_STATE_ACTIVE, false);
|
|
||||||
|
|
||||||
if (ret && irqd_irq_inprogress(&desc->irq_data) &&
|
|
||||||
chip->irq_eoi)
|
|
||||||
chip->irq_eoi(&desc->irq_data);
|
chip->irq_eoi(&desc->irq_data);
|
||||||
|
|
||||||
if (chip->irq_mask)
|
if (chip->irq_mask)
|
||||||
|
@ -89,6 +89,14 @@ static int __patch_insn_set(void *addr, u8 c, size_t len)
|
|||||||
|
|
||||||
memset(waddr, c, len);
|
memset(waddr, c, len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We could have just patched a function that is about to be
|
||||||
|
* called so make sure we don't execute partially patched
|
||||||
|
* instructions by flushing the icache as soon as possible.
|
||||||
|
*/
|
||||||
|
local_flush_icache_range((unsigned long)waddr,
|
||||||
|
(unsigned long)waddr + len);
|
||||||
|
|
||||||
patch_unmap(FIX_TEXT_POKE0);
|
patch_unmap(FIX_TEXT_POKE0);
|
||||||
|
|
||||||
if (across_pages)
|
if (across_pages)
|
||||||
@ -135,6 +143,14 @@ static int __patch_insn_write(void *addr, const void *insn, size_t len)
|
|||||||
|
|
||||||
ret = copy_to_kernel_nofault(waddr, insn, len);
|
ret = copy_to_kernel_nofault(waddr, insn, len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We could have just patched a function that is about to be
|
||||||
|
* called so make sure we don't execute partially patched
|
||||||
|
* instructions by flushing the icache as soon as possible.
|
||||||
|
*/
|
||||||
|
local_flush_icache_range((unsigned long)waddr,
|
||||||
|
(unsigned long)waddr + len);
|
||||||
|
|
||||||
patch_unmap(FIX_TEXT_POKE0);
|
patch_unmap(FIX_TEXT_POKE0);
|
||||||
|
|
||||||
if (across_pages)
|
if (across_pages)
|
||||||
@ -189,9 +205,6 @@ int patch_text_set_nosync(void *addr, u8 c, size_t len)
|
|||||||
|
|
||||||
ret = patch_insn_set(tp, c, len);
|
ret = patch_insn_set(tp, c, len);
|
||||||
|
|
||||||
if (!ret)
|
|
||||||
flush_icache_range((uintptr_t)tp, (uintptr_t)tp + len);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
NOKPROBE_SYMBOL(patch_text_set_nosync);
|
NOKPROBE_SYMBOL(patch_text_set_nosync);
|
||||||
@ -224,9 +237,6 @@ int patch_text_nosync(void *addr, const void *insns, size_t len)
|
|||||||
|
|
||||||
ret = patch_insn_write(tp, insns, len);
|
ret = patch_insn_write(tp, insns, len);
|
||||||
|
|
||||||
if (!ret)
|
|
||||||
flush_icache_range((uintptr_t) tp, (uintptr_t) tp + len);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
NOKPROBE_SYMBOL(patch_text_nosync);
|
NOKPROBE_SYMBOL(patch_text_nosync);
|
||||||
@ -253,9 +263,9 @@ static int patch_text_cb(void *data)
|
|||||||
} else {
|
} else {
|
||||||
while (atomic_read(&patch->cpu_count) <= num_online_cpus())
|
while (atomic_read(&patch->cpu_count) <= num_online_cpus())
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
}
|
|
||||||
|
|
||||||
local_flush_icache_all();
|
local_flush_icache_all();
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
|
|||||||
bool (*fn)(void *, unsigned long), void *arg)
|
bool (*fn)(void *, unsigned long), void *arg)
|
||||||
{
|
{
|
||||||
unsigned long fp, sp, pc;
|
unsigned long fp, sp, pc;
|
||||||
|
int graph_idx = 0;
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
||||||
if (regs) {
|
if (regs) {
|
||||||
@ -68,7 +69,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
|
|||||||
pc = regs->ra;
|
pc = regs->ra;
|
||||||
} else {
|
} else {
|
||||||
fp = frame->fp;
|
fp = frame->fp;
|
||||||
pc = ftrace_graph_ret_addr(current, NULL, frame->ra,
|
pc = ftrace_graph_ret_addr(current, &graph_idx, frame->ra,
|
||||||
&frame->ra);
|
&frame->ra);
|
||||||
if (pc == (unsigned long)ret_from_exception) {
|
if (pc == (unsigned long)ret_from_exception) {
|
||||||
if (unlikely(!__kernel_text_address(pc) || !fn(arg, pc)))
|
if (unlikely(!__kernel_text_address(pc) || !fn(arg, pc)))
|
||||||
@ -156,7 +157,7 @@ unsigned long __get_wchan(struct task_struct *task)
|
|||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
|
|
||||||
noinline void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
|
noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
|
||||||
struct task_struct *task, struct pt_regs *regs)
|
struct task_struct *task, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
walk_stackframe(task, regs, consume_entry, cookie);
|
walk_stackframe(task, regs, consume_entry, cookie);
|
||||||
|
@ -23,7 +23,7 @@ static long riscv_sys_mmap(unsigned long addr, unsigned long len,
|
|||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
|
SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
|
||||||
unsigned long, prot, unsigned long, flags,
|
unsigned long, prot, unsigned long, flags,
|
||||||
unsigned long, fd, off_t, offset)
|
unsigned long, fd, unsigned long, offset)
|
||||||
{
|
{
|
||||||
return riscv_sys_mmap(addr, len, prot, flags, fd, offset, 0);
|
return riscv_sys_mmap(addr, len, prot, flags, fd, offset, 0);
|
||||||
}
|
}
|
||||||
@ -32,7 +32,7 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
|
|||||||
#if defined(CONFIG_32BIT) || defined(CONFIG_COMPAT)
|
#if defined(CONFIG_32BIT) || defined(CONFIG_COMPAT)
|
||||||
SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
|
SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
|
||||||
unsigned long, prot, unsigned long, flags,
|
unsigned long, prot, unsigned long, flags,
|
||||||
unsigned long, fd, off_t, offset)
|
unsigned long, fd, unsigned long, offset)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Note that the shift for mmap2 is constant (12),
|
* Note that the shift for mmap2 is constant (12),
|
||||||
|
@ -327,7 +327,7 @@ static long kvm_pmu_create_perf_event(struct kvm_pmc *pmc, struct perf_event_att
|
|||||||
|
|
||||||
event = perf_event_create_kernel_counter(attr, -1, current, kvm_riscv_pmu_overflow, pmc);
|
event = perf_event_create_kernel_counter(attr, -1, current, kvm_riscv_pmu_overflow, pmc);
|
||||||
if (IS_ERR(event)) {
|
if (IS_ERR(event)) {
|
||||||
pr_err("kvm pmu event creation failed for eidx %lx: %ld\n", eidx, PTR_ERR(event));
|
pr_debug("kvm pmu event creation failed for eidx %lx: %ld\n", eidx, PTR_ERR(event));
|
||||||
return PTR_ERR(event);
|
return PTR_ERR(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,11 +170,14 @@ static void kaslr_adjust_got(unsigned long offset)
|
|||||||
u64 *entry;
|
u64 *entry;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Even without -fPIE, Clang still uses a global offset table for some
|
* Adjust GOT entries, except for ones for undefined weak symbols
|
||||||
* reason. Adjust the GOT entries.
|
* that resolved to zero. This also skips the first three reserved
|
||||||
|
* entries on s390x that are zero.
|
||||||
*/
|
*/
|
||||||
for (entry = (u64 *)vmlinux.got_start; entry < (u64 *)vmlinux.got_end; entry++)
|
for (entry = (u64 *)vmlinux.got_start; entry < (u64 *)vmlinux.got_end; entry++) {
|
||||||
*entry += offset - __START_KERNEL;
|
if (*entry)
|
||||||
|
*entry += offset - __START_KERNEL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -601,17 +601,16 @@ CONFIG_WATCHDOG=y
|
|||||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
CONFIG_SOFT_WATCHDOG=m
|
CONFIG_SOFT_WATCHDOG=m
|
||||||
CONFIG_DIAG288_WATCHDOG=m
|
CONFIG_DIAG288_WATCHDOG=m
|
||||||
|
CONFIG_DRM=m
|
||||||
|
CONFIG_DRM_VIRTIO_GPU=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
# CONFIG_FB_DEVICE is not set
|
# CONFIG_FB_DEVICE is not set
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
|
||||||
# CONFIG_HID_SUPPORT is not set
|
# CONFIG_HID_SUPPORT is not set
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
CONFIG_MLX4_INFINIBAND=m
|
||||||
CONFIG_MLX5_INFINIBAND=m
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_SYNC_FILE=y
|
|
||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
CONFIG_MLX5_VFIO_PCI=m
|
CONFIG_MLX5_VFIO_PCI=m
|
||||||
|
@ -592,17 +592,16 @@ CONFIG_WATCHDOG_CORE=y
|
|||||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
CONFIG_SOFT_WATCHDOG=m
|
CONFIG_SOFT_WATCHDOG=m
|
||||||
CONFIG_DIAG288_WATCHDOG=m
|
CONFIG_DIAG288_WATCHDOG=m
|
||||||
|
CONFIG_DRM=m
|
||||||
|
CONFIG_DRM_VIRTIO_GPU=m
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
# CONFIG_FB_DEVICE is not set
|
# CONFIG_FB_DEVICE is not set
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
|
||||||
# CONFIG_HID_SUPPORT is not set
|
# CONFIG_HID_SUPPORT is not set
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
CONFIG_MLX4_INFINIBAND=m
|
||||||
CONFIG_MLX5_INFINIBAND=m
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_SYNC_FILE=y
|
|
||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
CONFIG_MLX5_VFIO_PCI=m
|
CONFIG_MLX5_VFIO_PCI=m
|
||||||
|
@ -54,7 +54,7 @@ static __always_inline void arch_exit_to_user_mode(void)
|
|||||||
static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
|
static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
|
||||||
unsigned long ti_work)
|
unsigned long ti_work)
|
||||||
{
|
{
|
||||||
choose_random_kstack_offset(get_tod_clock_fast() & 0xff);
|
choose_random_kstack_offset(get_tod_clock_fast());
|
||||||
}
|
}
|
||||||
|
|
||||||
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
||||||
|
@ -427,6 +427,7 @@ struct kvm_vcpu_stat {
|
|||||||
u64 instruction_io_other;
|
u64 instruction_io_other;
|
||||||
u64 instruction_lpsw;
|
u64 instruction_lpsw;
|
||||||
u64 instruction_lpswe;
|
u64 instruction_lpswe;
|
||||||
|
u64 instruction_lpswey;
|
||||||
u64 instruction_pfmf;
|
u64 instruction_pfmf;
|
||||||
u64 instruction_ptff;
|
u64 instruction_ptff;
|
||||||
u64 instruction_sck;
|
u64 instruction_sck;
|
||||||
|
@ -38,33 +38,6 @@
|
|||||||
|
|
||||||
#include "entry.h"
|
#include "entry.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* Perform the mmap() system call. Linux for S/390 isn't able to handle more
|
|
||||||
* than 5 system call parameters, so this system call uses a memory block
|
|
||||||
* for parameter passing.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct s390_mmap_arg_struct {
|
|
||||||
unsigned long addr;
|
|
||||||
unsigned long len;
|
|
||||||
unsigned long prot;
|
|
||||||
unsigned long flags;
|
|
||||||
unsigned long fd;
|
|
||||||
unsigned long offset;
|
|
||||||
};
|
|
||||||
|
|
||||||
SYSCALL_DEFINE1(mmap2, struct s390_mmap_arg_struct __user *, arg)
|
|
||||||
{
|
|
||||||
struct s390_mmap_arg_struct a;
|
|
||||||
int error = -EFAULT;
|
|
||||||
|
|
||||||
if (copy_from_user(&a, arg, sizeof(a)))
|
|
||||||
goto out;
|
|
||||||
error = ksys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
|
|
||||||
out:
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYSVIPC
|
#ifdef CONFIG_SYSVIPC
|
||||||
/*
|
/*
|
||||||
* sys_ipc() is the de-multiplexer for the SysV IPC calls.
|
* sys_ipc() is the de-multiplexer for the SysV IPC calls.
|
||||||
|
@ -418,7 +418,7 @@
|
|||||||
412 32 utimensat_time64 - sys_utimensat
|
412 32 utimensat_time64 - sys_utimensat
|
||||||
413 32 pselect6_time64 - compat_sys_pselect6_time64
|
413 32 pselect6_time64 - compat_sys_pselect6_time64
|
||||||
414 32 ppoll_time64 - compat_sys_ppoll_time64
|
414 32 ppoll_time64 - compat_sys_ppoll_time64
|
||||||
416 32 io_pgetevents_time64 - sys_io_pgetevents
|
416 32 io_pgetevents_time64 - compat_sys_io_pgetevents_time64
|
||||||
417 32 recvmmsg_time64 - compat_sys_recvmmsg_time64
|
417 32 recvmmsg_time64 - compat_sys_recvmmsg_time64
|
||||||
418 32 mq_timedsend_time64 - sys_mq_timedsend
|
418 32 mq_timedsend_time64 - sys_mq_timedsend
|
||||||
419 32 mq_timedreceive_time64 - sys_mq_timedreceive
|
419 32 mq_timedreceive_time64 - sys_mq_timedreceive
|
||||||
|
@ -132,6 +132,7 @@ const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
|||||||
STATS_DESC_COUNTER(VCPU, instruction_io_other),
|
STATS_DESC_COUNTER(VCPU, instruction_io_other),
|
||||||
STATS_DESC_COUNTER(VCPU, instruction_lpsw),
|
STATS_DESC_COUNTER(VCPU, instruction_lpsw),
|
||||||
STATS_DESC_COUNTER(VCPU, instruction_lpswe),
|
STATS_DESC_COUNTER(VCPU, instruction_lpswe),
|
||||||
|
STATS_DESC_COUNTER(VCPU, instruction_lpswey),
|
||||||
STATS_DESC_COUNTER(VCPU, instruction_pfmf),
|
STATS_DESC_COUNTER(VCPU, instruction_pfmf),
|
||||||
STATS_DESC_COUNTER(VCPU, instruction_ptff),
|
STATS_DESC_COUNTER(VCPU, instruction_ptff),
|
||||||
STATS_DESC_COUNTER(VCPU, instruction_sck),
|
STATS_DESC_COUNTER(VCPU, instruction_sck),
|
||||||
|
@ -138,6 +138,21 @@ static inline u64 kvm_s390_get_base_disp_s(struct kvm_vcpu *vcpu, u8 *ar)
|
|||||||
return (base2 ? vcpu->run->s.regs.gprs[base2] : 0) + disp2;
|
return (base2 ? vcpu->run->s.regs.gprs[base2] : 0) + disp2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline u64 kvm_s390_get_base_disp_siy(struct kvm_vcpu *vcpu, u8 *ar)
|
||||||
|
{
|
||||||
|
u32 base1 = vcpu->arch.sie_block->ipb >> 28;
|
||||||
|
s64 disp1;
|
||||||
|
|
||||||
|
/* The displacement is a 20bit _SIGNED_ value */
|
||||||
|
disp1 = sign_extend64(((vcpu->arch.sie_block->ipb & 0x0fff0000) >> 16) +
|
||||||
|
((vcpu->arch.sie_block->ipb & 0xff00) << 4), 19);
|
||||||
|
|
||||||
|
if (ar)
|
||||||
|
*ar = base1;
|
||||||
|
|
||||||
|
return (base1 ? vcpu->run->s.regs.gprs[base1] : 0) + disp1;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void kvm_s390_get_base_disp_sse(struct kvm_vcpu *vcpu,
|
static inline void kvm_s390_get_base_disp_sse(struct kvm_vcpu *vcpu,
|
||||||
u64 *address1, u64 *address2,
|
u64 *address1, u64 *address2,
|
||||||
u8 *ar_b1, u8 *ar_b2)
|
u8 *ar_b1, u8 *ar_b2)
|
||||||
|
@ -797,6 +797,36 @@ static int handle_lpswe(struct kvm_vcpu *vcpu)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int handle_lpswey(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
psw_t new_psw;
|
||||||
|
u64 addr;
|
||||||
|
int rc;
|
||||||
|
u8 ar;
|
||||||
|
|
||||||
|
vcpu->stat.instruction_lpswey++;
|
||||||
|
|
||||||
|
if (!test_kvm_facility(vcpu->kvm, 193))
|
||||||
|
return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
|
||||||
|
|
||||||
|
if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
||||||
|
return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
||||||
|
|
||||||
|
addr = kvm_s390_get_base_disp_siy(vcpu, &ar);
|
||||||
|
if (addr & 7)
|
||||||
|
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
|
||||||
|
|
||||||
|
rc = read_guest(vcpu, addr, ar, &new_psw, sizeof(new_psw));
|
||||||
|
if (rc)
|
||||||
|
return kvm_s390_inject_prog_cond(vcpu, rc);
|
||||||
|
|
||||||
|
vcpu->arch.sie_block->gpsw = new_psw;
|
||||||
|
if (!is_valid_psw(&vcpu->arch.sie_block->gpsw))
|
||||||
|
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int handle_stidp(struct kvm_vcpu *vcpu)
|
static int handle_stidp(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
u64 stidp_data = vcpu->kvm->arch.model.cpuid;
|
u64 stidp_data = vcpu->kvm->arch.model.cpuid;
|
||||||
@ -1462,6 +1492,8 @@ int kvm_s390_handle_eb(struct kvm_vcpu *vcpu)
|
|||||||
case 0x61:
|
case 0x61:
|
||||||
case 0x62:
|
case 0x62:
|
||||||
return handle_ri(vcpu);
|
return handle_ri(vcpu);
|
||||||
|
case 0x71:
|
||||||
|
return handle_lpswey(vcpu);
|
||||||
default:
|
default:
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)
|
|||||||
union zpci_sic_iib iib = {{0}};
|
union zpci_sic_iib iib = {{0}};
|
||||||
union zpci_sic_iib ziib = {{0}};
|
union zpci_sic_iib ziib = {{0}};
|
||||||
|
|
||||||
iib.cdiib.dibv_addr = (u64) zpci_ibv[smp_processor_id()]->vector;
|
iib.cdiib.dibv_addr = virt_to_phys(zpci_ibv[smp_processor_id()]->vector);
|
||||||
|
|
||||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_SET_CPU, 0, &iib);
|
zpci_set_irq_ctrl(SIC_IRQ_MODE_SET_CPU, 0, &iib);
|
||||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_D_SINGLE, PCI_ISC, &ziib);
|
zpci_set_irq_ctrl(SIC_IRQ_MODE_D_SINGLE, PCI_ISC, &ziib);
|
||||||
|
@ -59,3 +59,14 @@ asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1,
|
|||||||
(u64)len0 << 32 | len1, advice);
|
(u64)len0 << 32 | len1, advice);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* swap the arguments the way that libc wants them instead of
|
||||||
|
* moving flags ahead of the 64-bit nbytes argument
|
||||||
|
*/
|
||||||
|
SYSCALL_DEFINE6(sh_sync_file_range6, int, fd, SC_ARG64(offset),
|
||||||
|
SC_ARG64(nbytes), unsigned int, flags)
|
||||||
|
{
|
||||||
|
return ksys_sync_file_range(fd, SC_VAL64(loff_t, offset),
|
||||||
|
SC_VAL64(loff_t, nbytes), flags);
|
||||||
|
}
|
||||||
|
@ -321,7 +321,7 @@
|
|||||||
311 common set_robust_list sys_set_robust_list
|
311 common set_robust_list sys_set_robust_list
|
||||||
312 common get_robust_list sys_get_robust_list
|
312 common get_robust_list sys_get_robust_list
|
||||||
313 common splice sys_splice
|
313 common splice sys_splice
|
||||||
314 common sync_file_range sys_sync_file_range
|
314 common sync_file_range sys_sh_sync_file_range6
|
||||||
315 common tee sys_tee
|
315 common tee sys_tee
|
||||||
316 common vmsplice sys_vmsplice
|
316 common vmsplice sys_vmsplice
|
||||||
317 common move_pages sys_move_pages
|
317 common move_pages sys_move_pages
|
||||||
@ -395,6 +395,7 @@
|
|||||||
385 common pkey_alloc sys_pkey_alloc
|
385 common pkey_alloc sys_pkey_alloc
|
||||||
386 common pkey_free sys_pkey_free
|
386 common pkey_free sys_pkey_free
|
||||||
387 common rseq sys_rseq
|
387 common rseq sys_rseq
|
||||||
|
388 common sync_file_range2 sys_sync_file_range2
|
||||||
# room for arch specific syscalls
|
# room for arch specific syscalls
|
||||||
393 common semget sys_semget
|
393 common semget sys_semget
|
||||||
394 common semctl sys_semctl
|
394 common semctl sys_semctl
|
||||||
|
@ -18,224 +18,3 @@ sys32_mmap2:
|
|||||||
sethi %hi(sys_mmap), %g1
|
sethi %hi(sys_mmap), %g1
|
||||||
jmpl %g1 + %lo(sys_mmap), %g0
|
jmpl %g1 + %lo(sys_mmap), %g0
|
||||||
sllx %o5, 12, %o5
|
sllx %o5, 12, %o5
|
||||||
|
|
||||||
.align 32
|
|
||||||
.globl sys32_socketcall
|
|
||||||
sys32_socketcall: /* %o0=call, %o1=args */
|
|
||||||
cmp %o0, 1
|
|
||||||
bl,pn %xcc, do_einval
|
|
||||||
cmp %o0, 18
|
|
||||||
bg,pn %xcc, do_einval
|
|
||||||
sub %o0, 1, %o0
|
|
||||||
sllx %o0, 5, %o0
|
|
||||||
sethi %hi(__socketcall_table_begin), %g2
|
|
||||||
or %g2, %lo(__socketcall_table_begin), %g2
|
|
||||||
jmpl %g2 + %o0, %g0
|
|
||||||
nop
|
|
||||||
do_einval:
|
|
||||||
retl
|
|
||||||
mov -EINVAL, %o0
|
|
||||||
|
|
||||||
.align 32
|
|
||||||
__socketcall_table_begin:
|
|
||||||
|
|
||||||
/* Each entry is exactly 32 bytes. */
|
|
||||||
do_sys_socket: /* sys_socket(int, int, int) */
|
|
||||||
1: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_socket), %g1
|
|
||||||
2: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_socket), %g0
|
|
||||||
3: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_bind: /* sys_bind(int fd, struct sockaddr *, int) */
|
|
||||||
4: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_bind), %g1
|
|
||||||
5: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_bind), %g0
|
|
||||||
6: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_connect: /* sys_connect(int, struct sockaddr *, int) */
|
|
||||||
7: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_connect), %g1
|
|
||||||
8: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_connect), %g0
|
|
||||||
9: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_listen: /* sys_listen(int, int) */
|
|
||||||
10: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_listen), %g1
|
|
||||||
jmpl %g1 + %lo(sys_listen), %g0
|
|
||||||
11: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_accept: /* sys_accept(int, struct sockaddr *, int *) */
|
|
||||||
12: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_accept), %g1
|
|
||||||
13: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_accept), %g0
|
|
||||||
14: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_getsockname: /* sys_getsockname(int, struct sockaddr *, int *) */
|
|
||||||
15: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_getsockname), %g1
|
|
||||||
16: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_getsockname), %g0
|
|
||||||
17: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_getpeername: /* sys_getpeername(int, struct sockaddr *, int *) */
|
|
||||||
18: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_getpeername), %g1
|
|
||||||
19: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(sys_getpeername), %g0
|
|
||||||
20: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_socketpair: /* sys_socketpair(int, int, int, int *) */
|
|
||||||
21: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_socketpair), %g1
|
|
||||||
22: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
23: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
jmpl %g1 + %lo(sys_socketpair), %g0
|
|
||||||
24: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_send: /* sys_send(int, void *, size_t, unsigned int) */
|
|
||||||
25: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_send), %g1
|
|
||||||
26: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
27: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
jmpl %g1 + %lo(sys_send), %g0
|
|
||||||
28: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_recv: /* sys_recv(int, void *, size_t, unsigned int) */
|
|
||||||
29: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_recv), %g1
|
|
||||||
30: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
31: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
jmpl %g1 + %lo(sys_recv), %g0
|
|
||||||
32: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_sendto: /* sys_sendto(int, u32, compat_size_t, unsigned int, u32, int) */
|
|
||||||
33: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_sendto), %g1
|
|
||||||
34: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
35: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
36: lduwa [%o1 + 0x10] %asi, %o4
|
|
||||||
37: ldswa [%o1 + 0x14] %asi, %o5
|
|
||||||
jmpl %g1 + %lo(sys_sendto), %g0
|
|
||||||
38: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
do_sys_recvfrom: /* sys_recvfrom(int, u32, compat_size_t, unsigned int, u32, u32) */
|
|
||||||
39: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_recvfrom), %g1
|
|
||||||
40: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
41: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
42: lduwa [%o1 + 0x10] %asi, %o4
|
|
||||||
43: lduwa [%o1 + 0x14] %asi, %o5
|
|
||||||
jmpl %g1 + %lo(sys_recvfrom), %g0
|
|
||||||
44: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
do_sys_shutdown: /* sys_shutdown(int, int) */
|
|
||||||
45: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_shutdown), %g1
|
|
||||||
jmpl %g1 + %lo(sys_shutdown), %g0
|
|
||||||
46: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_setsockopt: /* sys_setsockopt(int, int, int, char *, int) */
|
|
||||||
47: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_setsockopt), %g1
|
|
||||||
48: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
49: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
50: ldswa [%o1 + 0x10] %asi, %o4
|
|
||||||
jmpl %g1 + %lo(sys_setsockopt), %g0
|
|
||||||
51: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
do_sys_getsockopt: /* sys_getsockopt(int, int, int, u32, u32) */
|
|
||||||
52: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_getsockopt), %g1
|
|
||||||
53: ldswa [%o1 + 0x8] %asi, %o2
|
|
||||||
54: lduwa [%o1 + 0xc] %asi, %o3
|
|
||||||
55: lduwa [%o1 + 0x10] %asi, %o4
|
|
||||||
jmpl %g1 + %lo(sys_getsockopt), %g0
|
|
||||||
56: ldswa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
do_sys_sendmsg: /* compat_sys_sendmsg(int, struct compat_msghdr *, unsigned int) */
|
|
||||||
57: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(compat_sys_sendmsg), %g1
|
|
||||||
58: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(compat_sys_sendmsg), %g0
|
|
||||||
59: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_recvmsg: /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) */
|
|
||||||
60: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(compat_sys_recvmsg), %g1
|
|
||||||
61: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
jmpl %g1 + %lo(compat_sys_recvmsg), %g0
|
|
||||||
62: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */
|
|
||||||
63: ldswa [%o1 + 0x0] %asi, %o0
|
|
||||||
sethi %hi(sys_accept4), %g1
|
|
||||||
64: lduwa [%o1 + 0x8] %asi, %o2
|
|
||||||
65: ldswa [%o1 + 0xc] %asi, %o3
|
|
||||||
jmpl %g1 + %lo(sys_accept4), %g0
|
|
||||||
66: lduwa [%o1 + 0x4] %asi, %o1
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
|
|
||||||
.section __ex_table,"a"
|
|
||||||
.align 4
|
|
||||||
.word 1b, __retl_efault, 2b, __retl_efault
|
|
||||||
.word 3b, __retl_efault, 4b, __retl_efault
|
|
||||||
.word 5b, __retl_efault, 6b, __retl_efault
|
|
||||||
.word 7b, __retl_efault, 8b, __retl_efault
|
|
||||||
.word 9b, __retl_efault, 10b, __retl_efault
|
|
||||||
.word 11b, __retl_efault, 12b, __retl_efault
|
|
||||||
.word 13b, __retl_efault, 14b, __retl_efault
|
|
||||||
.word 15b, __retl_efault, 16b, __retl_efault
|
|
||||||
.word 17b, __retl_efault, 18b, __retl_efault
|
|
||||||
.word 19b, __retl_efault, 20b, __retl_efault
|
|
||||||
.word 21b, __retl_efault, 22b, __retl_efault
|
|
||||||
.word 23b, __retl_efault, 24b, __retl_efault
|
|
||||||
.word 25b, __retl_efault, 26b, __retl_efault
|
|
||||||
.word 27b, __retl_efault, 28b, __retl_efault
|
|
||||||
.word 29b, __retl_efault, 30b, __retl_efault
|
|
||||||
.word 31b, __retl_efault, 32b, __retl_efault
|
|
||||||
.word 33b, __retl_efault, 34b, __retl_efault
|
|
||||||
.word 35b, __retl_efault, 36b, __retl_efault
|
|
||||||
.word 37b, __retl_efault, 38b, __retl_efault
|
|
||||||
.word 39b, __retl_efault, 40b, __retl_efault
|
|
||||||
.word 41b, __retl_efault, 42b, __retl_efault
|
|
||||||
.word 43b, __retl_efault, 44b, __retl_efault
|
|
||||||
.word 45b, __retl_efault, 46b, __retl_efault
|
|
||||||
.word 47b, __retl_efault, 48b, __retl_efault
|
|
||||||
.word 49b, __retl_efault, 50b, __retl_efault
|
|
||||||
.word 51b, __retl_efault, 52b, __retl_efault
|
|
||||||
.word 53b, __retl_efault, 54b, __retl_efault
|
|
||||||
.word 55b, __retl_efault, 56b, __retl_efault
|
|
||||||
.word 57b, __retl_efault, 58b, __retl_efault
|
|
||||||
.word 59b, __retl_efault, 60b, __retl_efault
|
|
||||||
.word 61b, __retl_efault, 62b, __retl_efault
|
|
||||||
.word 63b, __retl_efault, 64b, __retl_efault
|
|
||||||
.word 65b, __retl_efault, 66b, __retl_efault
|
|
||||||
.previous
|
|
||||||
|
@ -117,7 +117,7 @@
|
|||||||
90 common dup2 sys_dup2
|
90 common dup2 sys_dup2
|
||||||
91 32 setfsuid32 sys_setfsuid
|
91 32 setfsuid32 sys_setfsuid
|
||||||
92 common fcntl sys_fcntl compat_sys_fcntl
|
92 common fcntl sys_fcntl compat_sys_fcntl
|
||||||
93 common select sys_select
|
93 common select sys_select compat_sys_select
|
||||||
94 32 setfsgid32 sys_setfsgid
|
94 32 setfsgid32 sys_setfsgid
|
||||||
95 common fsync sys_fsync
|
95 common fsync sys_fsync
|
||||||
96 common setpriority sys_setpriority
|
96 common setpriority sys_setpriority
|
||||||
@ -155,7 +155,7 @@
|
|||||||
123 32 fchown sys_fchown16
|
123 32 fchown sys_fchown16
|
||||||
123 64 fchown sys_fchown
|
123 64 fchown sys_fchown
|
||||||
124 common fchmod sys_fchmod
|
124 common fchmod sys_fchmod
|
||||||
125 common recvfrom sys_recvfrom
|
125 common recvfrom sys_recvfrom compat_sys_recvfrom
|
||||||
126 32 setreuid sys_setreuid16
|
126 32 setreuid sys_setreuid16
|
||||||
126 64 setreuid sys_setreuid
|
126 64 setreuid sys_setreuid
|
||||||
127 32 setregid sys_setregid16
|
127 32 setregid sys_setregid16
|
||||||
@ -247,7 +247,7 @@
|
|||||||
204 32 readdir sys_old_readdir compat_sys_old_readdir
|
204 32 readdir sys_old_readdir compat_sys_old_readdir
|
||||||
204 64 readdir sys_nis_syscall
|
204 64 readdir sys_nis_syscall
|
||||||
205 common readahead sys_readahead compat_sys_readahead
|
205 common readahead sys_readahead compat_sys_readahead
|
||||||
206 common socketcall sys_socketcall sys32_socketcall
|
206 common socketcall sys_socketcall compat_sys_socketcall
|
||||||
207 common syslog sys_syslog
|
207 common syslog sys_syslog
|
||||||
208 common lookup_dcookie sys_ni_syscall
|
208 common lookup_dcookie sys_ni_syscall
|
||||||
209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
|
209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
|
||||||
@ -461,7 +461,7 @@
|
|||||||
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
412 32 utimensat_time64 sys_utimensat sys_utimensat
|
||||||
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||||
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||||
416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents
|
416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||||
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||||
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend
|
||||||
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
|
||||||
|
@ -420,7 +420,7 @@
|
|||||||
412 i386 utimensat_time64 sys_utimensat
|
412 i386 utimensat_time64 sys_utimensat
|
||||||
413 i386 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
413 i386 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64
|
||||||
414 i386 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
414 i386 ppoll_time64 sys_ppoll compat_sys_ppoll_time64
|
||||||
416 i386 io_pgetevents_time64 sys_io_pgetevents
|
416 i386 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64
|
||||||
417 i386 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
417 i386 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64
|
||||||
418 i386 mq_timedsend_time64 sys_mq_timedsend
|
418 i386 mq_timedsend_time64 sys_mq_timedsend
|
||||||
419 i386 mq_timedreceive_time64 sys_mq_timedreceive
|
419 i386 mq_timedreceive_time64 sys_mq_timedreceive
|
||||||
|
@ -93,10 +93,9 @@ static __always_inline bool __try_cmpxchg64_local(volatile u64 *ptr, u64 *oldp,
|
|||||||
\
|
\
|
||||||
asm volatile(ALTERNATIVE(_lock_loc \
|
asm volatile(ALTERNATIVE(_lock_loc \
|
||||||
"call cmpxchg8b_emu", \
|
"call cmpxchg8b_emu", \
|
||||||
_lock "cmpxchg8b %[ptr]", X86_FEATURE_CX8) \
|
_lock "cmpxchg8b %a[ptr]", X86_FEATURE_CX8) \
|
||||||
: [ptr] "+m" (*(_ptr)), \
|
: "+a" (o.low), "+d" (o.high) \
|
||||||
"+a" (o.low), "+d" (o.high) \
|
: "b" (n.low), "c" (n.high), [ptr] "S" (_ptr) \
|
||||||
: "b" (n.low), "c" (n.high), "S" (_ptr) \
|
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
\
|
\
|
||||||
o.full; \
|
o.full; \
|
||||||
@ -122,12 +121,11 @@ static __always_inline u64 arch_cmpxchg64_local(volatile u64 *ptr, u64 old, u64
|
|||||||
\
|
\
|
||||||
asm volatile(ALTERNATIVE(_lock_loc \
|
asm volatile(ALTERNATIVE(_lock_loc \
|
||||||
"call cmpxchg8b_emu", \
|
"call cmpxchg8b_emu", \
|
||||||
_lock "cmpxchg8b %[ptr]", X86_FEATURE_CX8) \
|
_lock "cmpxchg8b %a[ptr]", X86_FEATURE_CX8) \
|
||||||
CC_SET(e) \
|
CC_SET(e) \
|
||||||
: CC_OUT(e) (ret), \
|
: CC_OUT(e) (ret), \
|
||||||
[ptr] "+m" (*(_ptr)), \
|
|
||||||
"+a" (o.low), "+d" (o.high) \
|
"+a" (o.low), "+d" (o.high) \
|
||||||
: "b" (n.low), "c" (n.high), "S" (_ptr) \
|
: "b" (n.low), "c" (n.high), [ptr] "S" (_ptr) \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
\
|
\
|
||||||
if (unlikely(!ret)) \
|
if (unlikely(!ret)) \
|
||||||
|
@ -73,19 +73,16 @@ static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
|
* This value will get limited by KSTACK_OFFSET_MAX(), which is 10
|
||||||
* but not enough for x86 stack utilization comfort. To keep
|
* bits. The actual entropy will be further reduced by the compiler
|
||||||
* reasonable stack head room, reduce the maximum offset to 8 bits.
|
* when applying stack alignment constraints (see cc_stack_align4/8 in
|
||||||
*
|
|
||||||
* The actual entropy will be further reduced by the compiler when
|
|
||||||
* applying stack alignment constraints (see cc_stack_align4/8 in
|
|
||||||
* arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32)
|
* arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32)
|
||||||
* low bits from any entropy chosen here.
|
* low bits from any entropy chosen here.
|
||||||
*
|
*
|
||||||
* Therefore, final stack offset entropy will be 5 (x86_64) or
|
* Therefore, final stack offset entropy will be 7 (x86_64) or
|
||||||
* 6 (ia32) bits.
|
* 8 (ia32) bits.
|
||||||
*/
|
*/
|
||||||
choose_random_kstack_offset(rdtsc() & 0xFF);
|
choose_random_kstack_offset(rdtsc());
|
||||||
}
|
}
|
||||||
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
|
||||||
|
|
||||||
|
@ -27,25 +27,7 @@
|
|||||||
|
|
||||||
unsigned long profile_pc(struct pt_regs *regs)
|
unsigned long profile_pc(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned long pc = instruction_pointer(regs);
|
return instruction_pointer(regs);
|
||||||
|
|
||||||
if (!user_mode(regs) && in_lock_functions(pc)) {
|
|
||||||
#ifdef CONFIG_FRAME_POINTER
|
|
||||||
return *(unsigned long *)(regs->bp + sizeof(long));
|
|
||||||
#else
|
|
||||||
unsigned long *sp = (unsigned long *)regs->sp;
|
|
||||||
/*
|
|
||||||
* Return address is either directly at stack pointer
|
|
||||||
* or above a saved flags. Eflags has bits 22-31 zero,
|
|
||||||
* kernel addresses don't.
|
|
||||||
*/
|
|
||||||
if (sp[0] >> 22)
|
|
||||||
return sp[0];
|
|
||||||
if (sp[1] >> 22)
|
|
||||||
return sp[1];
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return pc;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(profile_pc);
|
EXPORT_SYMBOL(profile_pc);
|
||||||
|
|
||||||
|
@ -1975,8 +1975,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
n_ports = max(ahci_nr_ports(hpriv->cap), fls(hpriv->port_map));
|
n_ports = max(ahci_nr_ports(hpriv->cap), fls(hpriv->port_map));
|
||||||
|
|
||||||
host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports);
|
host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports);
|
||||||
if (!host)
|
if (!host) {
|
||||||
return -ENOMEM;
|
rc = -ENOMEM;
|
||||||
|
goto err_rm_sysfs_file;
|
||||||
|
}
|
||||||
host->private_data = hpriv;
|
host->private_data = hpriv;
|
||||||
|
|
||||||
if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
|
if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
|
||||||
@ -2031,11 +2033,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
/* initialize adapter */
|
/* initialize adapter */
|
||||||
rc = ahci_configure_dma_masks(pdev, hpriv);
|
rc = ahci_configure_dma_masks(pdev, hpriv);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto err_rm_sysfs_file;
|
||||||
|
|
||||||
rc = ahci_pci_reset_controller(host);
|
rc = ahci_pci_reset_controller(host);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto err_rm_sysfs_file;
|
||||||
|
|
||||||
ahci_pci_init_controller(host);
|
ahci_pci_init_controller(host);
|
||||||
ahci_pci_print_info(host);
|
ahci_pci_print_info(host);
|
||||||
@ -2044,10 +2046,15 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
|
|
||||||
rc = ahci_host_activate(host, &ahci_sht);
|
rc = ahci_host_activate(host, &ahci_sht);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto err_rm_sysfs_file;
|
||||||
|
|
||||||
pm_runtime_put_noidle(&pdev->dev);
|
pm_runtime_put_noidle(&pdev->dev);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_rm_sysfs_file:
|
||||||
|
sysfs_remove_file_from_group(&pdev->dev.kobj,
|
||||||
|
&dev_attr_remapped_nvme.attr, NULL);
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ahci_shutdown_one(struct pci_dev *pdev)
|
static void ahci_shutdown_one(struct pci_dev *pdev)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user