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:
Wolfram Sang 2024-07-13 11:10:54 +02:00
commit 479f18ccca
621 changed files with 6501 additions and 4033 deletions

View File

@ -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

View File

@ -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]

View File

@ -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);

View File

@ -30,6 +30,9 @@ properties:
clocks: clocks:
minItems: 1 minItems: 1
power-domains:
maxItems: 1
required: required:
- compatible - compatible
- reg - reg

View File

@ -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:

View File

@ -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>;
}; };
... ...

View File

@ -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>;
};
};
}; };
};
}; };
};
}; };

View File

@ -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>;
};
};

View File

@ -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

View 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>;
};

View File

@ -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>;
}; };

View File

@ -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>;
}; };

View File

@ -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>;
}; };

View File

@ -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>;
}; };

View File

@ -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

View File

@ -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

View File

@ -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>;
}; };

View File

@ -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>;
}; };

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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!

View File

@ -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/

View File

@ -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*

View File

@ -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 {

View File

@ -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>;
}; };
}; };

View File

@ -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";

View File

@ -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;

View File

@ -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";
}; };

View File

@ -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>;

View File

@ -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>;

View File

@ -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;

View File

@ -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;

View File

@ -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>;

View File

@ -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";

View File

@ -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>;

View File

@ -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>;

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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)))

View File

@ -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)

View File

@ -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;

View 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);

View File

@ -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>

View File

@ -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>
}; };

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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;
} }

View File

@ -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. */

View File

@ -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

View File

@ -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.

View File

@ -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);
}

View File

@ -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);

View File

@ -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

View File

@ -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";

View File

@ -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";
}; };
}; };
}; };

View File

@ -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)>,

View File

@ -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>;

View File

@ -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";

View File

@ -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>;

View File

@ -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>;

View File

@ -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";
}; };
}; };

View File

@ -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

View File

@ -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(&param->cpu_count) <= num_online_cpus()) while (atomic_read(&param->cpu_count) <= num_online_cpus())
cpu_relax(); cpu_relax();
}
local_flush_icache_all(); local_flush_icache_all();
}
return 0; return 0;
} }

View File

@ -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)

View File

@ -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;
} }

View File

@ -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);

View File

@ -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),

View File

@ -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);
} }

View File

@ -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;
}
} }
/* /*

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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

View File

@ -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),

View File

@ -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)

View File

@ -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;
} }

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)) \

View File

@ -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

View File

@ -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);

View File

@ -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