Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts were simple overlapping changes in microchip driver. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
e0ada51db9
1035 changed files with 34325 additions and 20963 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -11,6 +11,7 @@
|
||||||
#
|
#
|
||||||
.*
|
.*
|
||||||
*.a
|
*.a
|
||||||
|
*.asn1.[ch]
|
||||||
*.bin
|
*.bin
|
||||||
*.bz2
|
*.bz2
|
||||||
*.c.[012]*.*
|
*.c.[012]*.*
|
||||||
|
@ -22,6 +23,7 @@
|
||||||
*.gz
|
*.gz
|
||||||
*.i
|
*.i
|
||||||
*.ko
|
*.ko
|
||||||
|
*.lex.c
|
||||||
*.ll
|
*.ll
|
||||||
*.lst
|
*.lst
|
||||||
*.lz4
|
*.lz4
|
||||||
|
@ -37,6 +39,7 @@
|
||||||
*.so.dbg
|
*.so.dbg
|
||||||
*.su
|
*.su
|
||||||
*.symtypes
|
*.symtypes
|
||||||
|
*.tab.[ch]
|
||||||
*.tar
|
*.tar
|
||||||
*.xz
|
*.xz
|
||||||
Module.symvers
|
Module.symvers
|
||||||
|
@ -129,7 +132,3 @@ all.config
|
||||||
|
|
||||||
# Kdevelop4
|
# Kdevelop4
|
||||||
*.kdev4
|
*.kdev4
|
||||||
|
|
||||||
#Automatically generated by ASN.1 compiler
|
|
||||||
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.c
|
|
||||||
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.h
|
|
||||||
|
|
|
@ -268,9 +268,19 @@ The common clock framework uses two global locks, the prepare lock and the
|
||||||
enable lock.
|
enable lock.
|
||||||
|
|
||||||
The enable lock is a spinlock and is held across calls to the .enable,
|
The enable lock is a spinlock and is held across calls to the .enable,
|
||||||
.disable and .is_enabled operations. Those operations are thus not allowed to
|
.disable operations. Those operations are thus not allowed to sleep,
|
||||||
sleep, and calls to the clk_enable(), clk_disable() and clk_is_enabled() API
|
and calls to the clk_enable(), clk_disable() API functions are allowed in
|
||||||
functions are allowed in atomic context.
|
atomic context.
|
||||||
|
|
||||||
|
For clk_is_enabled() API, it is also designed to be allowed to be used in
|
||||||
|
atomic context. However, it doesn't really make any sense to hold the enable
|
||||||
|
lock in core, unless you want to do something else with the information of
|
||||||
|
the enable state with that lock held. Otherwise, seeing if a clk is enabled is
|
||||||
|
a one-shot read of the enabled state, which could just as easily change after
|
||||||
|
the function returns because the lock is released. Thus the user of this API
|
||||||
|
needs to handle synchronizing the read of the state with whatever they're
|
||||||
|
using it for to make sure that the enable state doesn't change during that
|
||||||
|
time.
|
||||||
|
|
||||||
The prepare lock is a mutex and is held across calls to all other operations.
|
The prepare lock is a mutex and is held across calls to all other operations.
|
||||||
All those operations are allowed to sleep, and calls to the corresponding API
|
All those operations are allowed to sleep, and calls to the corresponding API
|
||||||
|
|
|
@ -136,6 +136,19 @@ Sorting
|
||||||
.. kernel-doc:: lib/list_sort.c
|
.. kernel-doc:: lib/list_sort.c
|
||||||
:export:
|
:export:
|
||||||
|
|
||||||
|
Text Searching
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. kernel-doc:: lib/textsearch.c
|
||||||
|
:doc: ts_intro
|
||||||
|
|
||||||
|
.. kernel-doc:: lib/textsearch.c
|
||||||
|
:export:
|
||||||
|
|
||||||
|
.. kernel-doc:: include/linux/textsearch.h
|
||||||
|
:functions: textsearch_find textsearch_next \
|
||||||
|
textsearch_get_pattern textsearch_get_pattern_len
|
||||||
|
|
||||||
UUID/GUID
|
UUID/GUID
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ The MediaTek AUDSYS controller provides various clocks to the system.
|
||||||
Required Properties:
|
Required Properties:
|
||||||
|
|
||||||
- compatible: Should be one of:
|
- compatible: Should be one of:
|
||||||
|
- "mediatek,mt2701-audsys", "syscon"
|
||||||
- "mediatek,mt7622-audsys", "syscon"
|
- "mediatek,mt7622-audsys", "syscon"
|
||||||
- #clock-cells: Must be 1
|
- #clock-cells: Must be 1
|
||||||
|
|
||||||
|
@ -13,10 +14,19 @@ The AUDSYS controller uses the common clk binding from
|
||||||
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
The available clocks are defined in dt-bindings/clock/mt*-clk.h.
|
The available clocks are defined in dt-bindings/clock/mt*-clk.h.
|
||||||
|
|
||||||
|
Required sub-nodes:
|
||||||
|
-------
|
||||||
|
For common binding part and usage, refer to
|
||||||
|
../sonud/mt2701-afe-pcm.txt.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
audsys: audsys@11220000 {
|
audsys: clock-controller@11220000 {
|
||||||
compatible = "mediatek,mt7622-audsys", "syscon";
|
compatible = "mediatek,mt7622-audsys", "syscon";
|
||||||
reg = <0 0x11220000 0 0x1000>;
|
reg = <0 0x11220000 0 0x2000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
|
||||||
|
afe: audio-controller {
|
||||||
|
...
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
36
Documentation/devicetree/bindings/clock/imx6sll-clock.txt
Normal file
36
Documentation/devicetree/bindings/clock/imx6sll-clock.txt
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
* Clock bindings for Freescale i.MX6 SLL
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "fsl,imx6sll-ccm"
|
||||||
|
- reg: Address and length of the register set
|
||||||
|
- #clock-cells: Should be <1>
|
||||||
|
- clocks: list of clock specifiers, must contain an entry for each required
|
||||||
|
entry in clock-names
|
||||||
|
- clock-names: should include entries "ckil", "osc", "ipp_di0" and "ipp_di1"
|
||||||
|
|
||||||
|
The clock consumer should specify the desired clock by having the clock
|
||||||
|
ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx6sll-clock.h
|
||||||
|
for the full list of i.MX6 SLL clock IDs.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
#include <dt-bindings/clock/imx6sll-clock.h>
|
||||||
|
|
||||||
|
clks: clock-controller@20c4000 {
|
||||||
|
compatible = "fsl,imx6sll-ccm";
|
||||||
|
reg = <0x020c4000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
clocks = <&ckil>, <&osc>, <&ipp_di0>, <&ipp_di1>;
|
||||||
|
clock-names = "ckil", "osc", "ipp_di0", "ipp_di1";
|
||||||
|
};
|
||||||
|
|
||||||
|
uart1: serial@2020000 {
|
||||||
|
compatible = "fsl,imx6sl-uart", "fsl,imx6q-uart", "fsl,imx21-uart";
|
||||||
|
reg = <0x02020000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&clks IMX6SLL_CLK_UART1_IPG>,
|
||||||
|
<&clks IMX6SLL_CLK_UART1_SERIAL>;
|
||||||
|
clock-names = "ipg", "per";
|
||||||
|
};
|
20
Documentation/devicetree/bindings/clock/intc_stratix10.txt
Normal file
20
Documentation/devicetree/bindings/clock/intc_stratix10.txt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Device Tree Clock bindings for Intel's SoCFPGA Stratix10 platform
|
||||||
|
|
||||||
|
This binding uses the common clock binding[1].
|
||||||
|
|
||||||
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : shall be
|
||||||
|
"intel,stratix10-clkmgr"
|
||||||
|
|
||||||
|
- reg : shall be the control register offset from CLOCK_MANAGER's base for the clock.
|
||||||
|
|
||||||
|
- #clock-cells : from common clock binding, shall be set to 1.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
clkmgr: clock-controller@ffd10000 {
|
||||||
|
compatible = "intel,stratix10-clkmgr";
|
||||||
|
reg = <0xffd10000 0x1000>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
|
@ -22,7 +22,9 @@ Required Properties:
|
||||||
- "renesas,r8a7794-cpg-mssr" for the r8a7794 SoC (R-Car E2)
|
- "renesas,r8a7794-cpg-mssr" for the r8a7794 SoC (R-Car E2)
|
||||||
- "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC (R-Car H3)
|
- "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC (R-Car H3)
|
||||||
- "renesas,r8a7796-cpg-mssr" for the r8a7796 SoC (R-Car M3-W)
|
- "renesas,r8a7796-cpg-mssr" for the r8a7796 SoC (R-Car M3-W)
|
||||||
|
- "renesas,r8a77965-cpg-mssr" for the r8a77965 SoC (R-Car M3-N)
|
||||||
- "renesas,r8a77970-cpg-mssr" for the r8a77970 SoC (R-Car V3M)
|
- "renesas,r8a77970-cpg-mssr" for the r8a77970 SoC (R-Car V3M)
|
||||||
|
- "renesas,r8a77980-cpg-mssr" for the r8a77980 SoC (R-Car V3H)
|
||||||
- "renesas,r8a77995-cpg-mssr" for the r8a77995 SoC (R-Car D3)
|
- "renesas,r8a77995-cpg-mssr" for the r8a77995 SoC (R-Car D3)
|
||||||
|
|
||||||
- reg: Base address and length of the memory resource used by the CPG/MSSR
|
- reg: Base address and length of the memory resource used by the CPG/MSSR
|
||||||
|
@ -32,8 +34,8 @@ Required Properties:
|
||||||
clock-names
|
clock-names
|
||||||
- clock-names: List of external parent clock names. Valid names are:
|
- clock-names: List of external parent clock names. Valid names are:
|
||||||
- "extal" (r8a7743, r8a7745, r8a7790, r8a7791, r8a7792, r8a7793, r8a7794,
|
- "extal" (r8a7743, r8a7745, r8a7790, r8a7791, r8a7792, r8a7793, r8a7794,
|
||||||
r8a7795, r8a7796, r8a77970, r8a77995)
|
r8a7795, r8a7796, r8a77965, r8a77970, r8a77980, r8a77995)
|
||||||
- "extalr" (r8a7795, r8a7796, r8a77970)
|
- "extalr" (r8a7795, r8a7796, r8a77965, r8a77970, r8a77980)
|
||||||
- "usb_extal" (r8a7743, r8a7745, r8a7790, r8a7791, r8a7793, r8a7794)
|
- "usb_extal" (r8a7743, r8a7745, r8a7790, r8a7791, r8a7793, r8a7794)
|
||||||
|
|
||||||
- #clock-cells: Must be 2
|
- #clock-cells: Must be 2
|
||||||
|
|
|
@ -32,6 +32,7 @@ clock-output-names:
|
||||||
- "clkin_i2s" - external I2S clock - optional,
|
- "clkin_i2s" - external I2S clock - optional,
|
||||||
- "gmac_clkin" - external GMAC clock - optional
|
- "gmac_clkin" - external GMAC clock - optional
|
||||||
- "phy_50m_out" - output clock of the pll in the mac phy
|
- "phy_50m_out" - output clock of the pll in the mac phy
|
||||||
|
- "hdmi_phy" - output clock of the hdmi phy pll - optional
|
||||||
|
|
||||||
Example: Clock controller node:
|
Example: Clock controller node:
|
||||||
|
|
||||||
|
|
25
Documentation/devicetree/bindings/clock/silabs,si544.txt
Normal file
25
Documentation/devicetree/bindings/clock/silabs,si544.txt
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
Binding for Silicon Labs 544 programmable I2C clock generator.
|
||||||
|
|
||||||
|
Reference
|
||||||
|
This binding uses the common clock binding[1]. Details about the device can be
|
||||||
|
found in the datasheet[2].
|
||||||
|
|
||||||
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
|
[2] Si544 datasheet
|
||||||
|
https://www.silabs.com/documents/public/data-sheets/si544-datasheet.pdf
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: One of "silabs,si514a", "silabs,si514b" "silabs,si514c" according
|
||||||
|
to the speed grade of the chip.
|
||||||
|
- reg: I2C device address.
|
||||||
|
- #clock-cells: From common clock bindings: Shall be 0.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- clock-output-names: From common clock bindings. Recommended to be "si544".
|
||||||
|
|
||||||
|
Example:
|
||||||
|
si544: clock-controller@55 {
|
||||||
|
reg = <0x55>;
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "silabs,si544b";
|
||||||
|
};
|
60
Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt
Normal file
60
Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
STMicroelectronics STM32 Peripheral Reset Clock Controller
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
The RCC IP is both a reset and a clock controller.
|
||||||
|
|
||||||
|
RCC makes also power management (resume/supend and wakeup interrupt).
|
||||||
|
|
||||||
|
Please also refer to reset.txt for common reset controller binding usage.
|
||||||
|
|
||||||
|
Please also refer to clock-bindings.txt for common clock controller
|
||||||
|
binding usage.
|
||||||
|
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: "st,stm32mp1-rcc", "syscon"
|
||||||
|
- reg: should be register base and length as documented in the datasheet
|
||||||
|
- #clock-cells: 1, device nodes should specify the clock in their
|
||||||
|
"clocks" property, containing a phandle to the clock device node,
|
||||||
|
an index specifying the clock to use.
|
||||||
|
- #reset-cells: Shall be 1
|
||||||
|
- interrupts: Should contain a general interrupt line and a interrupt line
|
||||||
|
to the wake-up of processor (CSTOP).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
rcc: rcc@50000000 {
|
||||||
|
compatible = "st,stm32mp1-rcc", "syscon";
|
||||||
|
reg = <0x50000000 0x1000>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
#reset-cells = <1>;
|
||||||
|
interrupts = <GIC_SPI 5 IRQ_TYPE_NONE>,
|
||||||
|
<GIC_SPI 145 IRQ_TYPE_NONE>;
|
||||||
|
};
|
||||||
|
|
||||||
|
Specifying clocks
|
||||||
|
=================
|
||||||
|
|
||||||
|
All available clocks are defined as preprocessor macros in
|
||||||
|
dt-bindings/clock/stm32mp1-clks.h header and can be used in device
|
||||||
|
tree sources.
|
||||||
|
|
||||||
|
Specifying softreset control of devices
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
Device nodes should specify the reset channel required in their "resets"
|
||||||
|
property, containing a phandle to the reset device node and an index specifying
|
||||||
|
which channel to use.
|
||||||
|
The index is the bit number within the RCC registers bank, starting from RCC
|
||||||
|
base address.
|
||||||
|
It is calculated as: index = register_offset / 4 * 32 + bit_offset.
|
||||||
|
Where bit_offset is the bit offset within the register.
|
||||||
|
|
||||||
|
For example on STM32MP1, for LTDC reset:
|
||||||
|
ltdc = APB4_RSTSETR_offset / 4 * 32 + LTDC_bit_offset
|
||||||
|
= 0x180 / 4 * 32 + 0 = 3072
|
||||||
|
|
||||||
|
The list of valid indices for STM32MP1 is available in:
|
||||||
|
include/dt-bindings/reset-controller/stm32mp1-resets.h
|
||||||
|
|
||||||
|
This file implements defines like:
|
||||||
|
#define LTDC_R 3072
|
|
@ -20,6 +20,7 @@ Required properties :
|
||||||
- "allwinner,sun50i-a64-ccu"
|
- "allwinner,sun50i-a64-ccu"
|
||||||
- "allwinner,sun50i-a64-r-ccu"
|
- "allwinner,sun50i-a64-r-ccu"
|
||||||
- "allwinner,sun50i-h5-ccu"
|
- "allwinner,sun50i-h5-ccu"
|
||||||
|
- "allwinner,sun50i-h6-ccu"
|
||||||
- "nextthing,gr8-ccu"
|
- "nextthing,gr8-ccu"
|
||||||
|
|
||||||
- reg: Must contain the registers base address and length
|
- reg: Must contain the registers base address and length
|
||||||
|
@ -31,6 +32,9 @@ Required properties :
|
||||||
- #clock-cells : must contain 1
|
- #clock-cells : must contain 1
|
||||||
- #reset-cells : must contain 1
|
- #reset-cells : must contain 1
|
||||||
|
|
||||||
|
For the main CCU on H6, one more clock is needed:
|
||||||
|
- "iosc": the SoC's internal frequency oscillator
|
||||||
|
|
||||||
For the PRCM CCUs on A83T/H3/A64, two more clocks are needed:
|
For the PRCM CCUs on A83T/H3/A64, two more clocks are needed:
|
||||||
- "pll-periph": the SoC's peripheral PLL from the main CCU
|
- "pll-periph": the SoC's peripheral PLL from the main CCU
|
||||||
- "iosc": the SoC's internal frequency oscillator
|
- "iosc": the SoC's internal frequency oscillator
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
Binding for TI DA8XX/OMAP-L13X/AM17XX/AM18XX CFGCHIP clocks
|
||||||
|
|
||||||
|
TI DA8XX/OMAP-L13X/AM17XX/AM18XX SoCs contain a general purpose set of
|
||||||
|
registers call CFGCHIPn. Some of these registers function as clock
|
||||||
|
gates. This document describes the bindings for those clocks.
|
||||||
|
|
||||||
|
All of the clock nodes described below must be child nodes of a CFGCHIP node
|
||||||
|
(compatible = "ti,da830-cfgchip").
|
||||||
|
|
||||||
|
USB PHY clocks
|
||||||
|
--------------
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be "ti,da830-usb-phy-clocks".
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 1.
|
||||||
|
- clocks: phandles to the parent clocks corresponding to clock-names
|
||||||
|
- clock-names: shall be "fck", "usb_refclkin", "auxclk"
|
||||||
|
|
||||||
|
This node provides two clocks. The clock at index 0 is the USB 2.0 PHY 48MHz
|
||||||
|
clock and the clock at index 1 is the USB 1.1 PHY 48MHz clock.
|
||||||
|
|
||||||
|
eHRPWM Time Base Clock (TBCLK)
|
||||||
|
------------------------------
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be "ti,da830-tbclksync".
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 0.
|
||||||
|
- clocks: phandle to the parent clock
|
||||||
|
- clock-names: shall be "fck"
|
||||||
|
|
||||||
|
PLL DIV4.5 divider
|
||||||
|
------------------
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be "ti,da830-div4p5ena".
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 0.
|
||||||
|
- clocks: phandle to the parent clock
|
||||||
|
- clock-names: shall be "pll0_pllout"
|
||||||
|
|
||||||
|
EMIFA clock source (ASYNC1)
|
||||||
|
---------------------------
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be "ti,da850-async1-clksrc".
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 0.
|
||||||
|
- clocks: phandles to the parent clocks corresponding to clock-names
|
||||||
|
- clock-names: shall be "pll0_sysclk3", "div4.5"
|
||||||
|
|
||||||
|
ASYNC3 clock source
|
||||||
|
-------------------
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be "ti,da850-async3-clksrc".
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 0.
|
||||||
|
- clocks: phandles to the parent clocks corresponding to clock-names
|
||||||
|
- clock-names: shall be "pll0_sysclk2", "pll1_sysclk2"
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
cfgchip: syscon@1417c {
|
||||||
|
compatible = "ti,da830-cfgchip", "syscon", "simple-mfd";
|
||||||
|
reg = <0x1417c 0x14>;
|
||||||
|
|
||||||
|
usb_phy_clk: usb-phy-clocks {
|
||||||
|
compatible = "ti,da830-usb-phy-clocks";
|
||||||
|
#clock-cells = <1>;
|
||||||
|
clocks = <&psc1 1>, <&usb_refclkin>, <&pll0_auxclk>;
|
||||||
|
clock-names = "fck", "usb_refclkin", "auxclk";
|
||||||
|
};
|
||||||
|
ehrpwm_tbclk: ehrpwm_tbclk {
|
||||||
|
compatible = "ti,da830-tbclksync";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&psc1 17>;
|
||||||
|
clock-names = "fck";
|
||||||
|
};
|
||||||
|
div4p5_clk: div4.5 {
|
||||||
|
compatible = "ti,da830-div4p5ena";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&pll0_pllout>;
|
||||||
|
clock-names = "pll0_pllout";
|
||||||
|
};
|
||||||
|
async1_clk: async1 {
|
||||||
|
compatible = "ti,da850-async1-clksrc";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&pll0_sysclk 3>, <&div4p5_clk>;
|
||||||
|
clock-names = "pll0_sysclk3", "div4.5";
|
||||||
|
};
|
||||||
|
async3_clk: async3 {
|
||||||
|
compatible = "ti,da850-async3-clksrc";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&pll0_sysclk 2>, <&pll1_sysclk 2>;
|
||||||
|
clock-names = "pll0_sysclk2", "pll1_sysclk2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Also see:
|
||||||
|
- Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
|
|
96
Documentation/devicetree/bindings/clock/ti/davinci/pll.txt
Normal file
96
Documentation/devicetree/bindings/clock/ti/davinci/pll.txt
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
Binding for TI DaVinci PLL Controllers
|
||||||
|
|
||||||
|
The PLL provides clocks to most of the components on the SoC. In addition
|
||||||
|
to the PLL itself, this controller also contains bypasses, gates, dividers,
|
||||||
|
an multiplexers for various clock signals.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be one of:
|
||||||
|
- "ti,da850-pll0" for PLL0 on DA850/OMAP-L138/AM18XX
|
||||||
|
- "ti,da850-pll1" for PLL1 on DA850/OMAP-L138/AM18XX
|
||||||
|
- reg: physical base address and size of the controller's register area.
|
||||||
|
- clocks: phandles corresponding to the clock names
|
||||||
|
- clock-names: names of the clock sources - depends on compatible string
|
||||||
|
- for "ti,da850-pll0", shall be "clksrc", "extclksrc"
|
||||||
|
- for "ti,da850-pll1", shall be "clksrc"
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- ti,clkmode-square-wave: Indicates that the the board is supplying a square
|
||||||
|
wave input on the OSCIN pin instead of using a crystal oscillator.
|
||||||
|
This property is only valid when compatible = "ti,da850-pll0".
|
||||||
|
|
||||||
|
|
||||||
|
Optional child nodes:
|
||||||
|
|
||||||
|
pllout
|
||||||
|
Describes the main PLL clock output (before POSTDIV). The node name must
|
||||||
|
be "pllout".
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- #clock-cells: shall be 0
|
||||||
|
|
||||||
|
sysclk
|
||||||
|
Describes the PLLDIVn divider clocks that provide the SYSCLKn clock
|
||||||
|
domains. The node name must be "sysclk". Consumers of this node should
|
||||||
|
use "n" in "SYSCLKn" as the index parameter for the clock cell.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- #clock-cells: shall be 1
|
||||||
|
|
||||||
|
auxclk
|
||||||
|
Describes the AUXCLK output of the PLL. The node name must be "auxclk".
|
||||||
|
This child node is only valid when compatible = "ti,da850-pll0".
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- #clock-cells: shall be 0
|
||||||
|
|
||||||
|
obsclk
|
||||||
|
Describes the OBSCLK output of the PLL. The node name must be "obsclk".
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- #clock-cells: shall be 0
|
||||||
|
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
pll0: clock-controller@11000 {
|
||||||
|
compatible = "ti,da850-pll0";
|
||||||
|
reg = <0x11000 0x1000>;
|
||||||
|
clocks = <&ref_clk>, <&pll1_sysclk 3>;
|
||||||
|
clock-names = "clksrc", "extclksrc";
|
||||||
|
ti,clkmode-square-wave;
|
||||||
|
|
||||||
|
pll0_pllout: pllout {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pll0_sysclk: sysclk {
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pll0_auxclk: auxclk {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pll0_obsclk: obsclk {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pll1: clock-controller@21a000 {
|
||||||
|
compatible = "ti,da850-pll1";
|
||||||
|
reg = <0x21a000 0x1000>;
|
||||||
|
clocks = <&ref_clk>;
|
||||||
|
clock-names = "clksrc";
|
||||||
|
|
||||||
|
pll0_sysclk: sysclk {
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pll0_obsclk: obsclk {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Also see:
|
||||||
|
- Documentation/devicetree/bindings/clock/clock-bindings.txt
|
71
Documentation/devicetree/bindings/clock/ti/davinci/psc.txt
Normal file
71
Documentation/devicetree/bindings/clock/ti/davinci/psc.txt
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
Binding for TI DaVinci Power Sleep Controller (PSC)
|
||||||
|
|
||||||
|
The PSC provides power management, clock gating and reset functionality. It is
|
||||||
|
primarily used for clocking.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: shall be one of:
|
||||||
|
- "ti,da850-psc0" for PSC0 on DA850/OMAP-L138/AM18XX
|
||||||
|
- "ti,da850-psc1" for PSC1 on DA850/OMAP-L138/AM18XX
|
||||||
|
- reg: physical base address and size of the controller's register area
|
||||||
|
- #clock-cells: from common clock binding; shall be set to 1
|
||||||
|
- #power-domain-cells: from generic power domain binding; shall be set to 1.
|
||||||
|
- clocks: phandles to clocks corresponding to the clock-names property
|
||||||
|
- clock-names: list of parent clock names - depends on compatible value
|
||||||
|
- for "ti,da850-psc0", shall be "pll0_sysclk1", "pll0_sysclk2",
|
||||||
|
"pll0_sysclk4", "pll0_sysclk6", "async1"
|
||||||
|
- for "ti,da850-psc1", shall be "pll0_sysclk2", "pll0_sysclk4", "async3"
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- #reset-cells: from reset binding; shall be set to 1 - only applicable when
|
||||||
|
at least one local domain provides a local reset.
|
||||||
|
|
||||||
|
Consumers:
|
||||||
|
|
||||||
|
Clock, power domain and reset consumers shall use the local power domain
|
||||||
|
module ID (LPSC) as the index corresponding to the clock cell. Refer to
|
||||||
|
the device-specific datasheet to find these numbers. NB: Most local
|
||||||
|
domains only provide a clock/power domain and not a reset.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
psc0: clock-controller@10000 {
|
||||||
|
compatible = "ti,da850-psc0";
|
||||||
|
reg = <0x10000 0x1000>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
|
#reset-cells = <1>;
|
||||||
|
clocks = <&pll0_sysclk 1>, <&pll0_sysclk 2>,
|
||||||
|
<&pll0_sysclk 4>, <&pll0_sysclk 6>, <&async1_clk>;
|
||||||
|
clock_names = "pll0_sysclk1", "pll0_sysclk2",
|
||||||
|
"pll0_sysclk4", "pll0_sysclk6", "async1";
|
||||||
|
};
|
||||||
|
psc1: clock-controller@227000 {
|
||||||
|
compatible = "ti,da850-psc1";
|
||||||
|
reg = <0x227000 0x1000>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
|
clocks = <&pll0_sysclk 2>, <&pll0_sysclk 4>, <&async3_clk>;
|
||||||
|
clock_names = "pll0_sysclk2", "pll0_sysclk4", "async3";
|
||||||
|
};
|
||||||
|
|
||||||
|
/* consumer */
|
||||||
|
dsp: dsp@11800000 {
|
||||||
|
compatible = "ti,da850-dsp";
|
||||||
|
reg = <0x11800000 0x40000>,
|
||||||
|
<0x11e00000 0x8000>,
|
||||||
|
<0x11f00000 0x8000>,
|
||||||
|
<0x01c14044 0x4>,
|
||||||
|
<0x01c14174 0x8>;
|
||||||
|
reg-names = "l2sram", "l1pram", "l1dram", "host1cfg", "chipsig";
|
||||||
|
interrupt-parent = <&intc>;
|
||||||
|
interrupts = <28>;
|
||||||
|
clocks = <&psc0 15>;
|
||||||
|
power-domains = <&psc0 15>;
|
||||||
|
resets = <&psc0 15>;
|
||||||
|
};
|
||||||
|
|
||||||
|
Also see:
|
||||||
|
- Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
|
- Documentation/devicetree/bindings/power/power_domain.txt
|
||||||
|
- Documentation/devicetree/bindings/reset/reset.txt
|
|
@ -75,6 +75,9 @@ Optional properties:
|
||||||
- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0,
|
- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0,
|
||||||
see [2]
|
see [2]
|
||||||
- ti,set-rate-parent : clk_set_rate is propagated to parent
|
- ti,set-rate-parent : clk_set_rate is propagated to parent
|
||||||
|
- ti,latch-bit : latch the divider value to HW, only needed if the register
|
||||||
|
access requires this. As an example dra76x DPLL_GMAC H14 divider implements
|
||||||
|
such behavior.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 {
|
dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 {
|
||||||
|
|
|
@ -48,6 +48,9 @@ Optional properties:
|
||||||
zero
|
zero
|
||||||
- ti,set-rate-parent : clk_set_rate is propagated to parent clock,
|
- ti,set-rate-parent : clk_set_rate is propagated to parent clock,
|
||||||
not supported by the composite-mux-clock subtype
|
not supported by the composite-mux-clock subtype
|
||||||
|
- ti,latch-bit : latch the mux value to HW, only needed if the register
|
||||||
|
access requires this. As an example, dra7x DPLL_GMAC H14 muxing
|
||||||
|
implements such behavior.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|
25
Documentation/devicetree/bindings/pwm/ingenic,jz47xx-pwm.txt
Normal file
25
Documentation/devicetree/bindings/pwm/ingenic,jz47xx-pwm.txt
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
Ingenic JZ47xx PWM Controller
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: One of:
|
||||||
|
* "ingenic,jz4740-pwm"
|
||||||
|
* "ingenic,jz4770-pwm"
|
||||||
|
* "ingenic,jz4780-pwm"
|
||||||
|
- #pwm-cells: Should be 3. See pwm.txt in this directory for a description
|
||||||
|
of the cells format.
|
||||||
|
- clocks : phandle to the external clock.
|
||||||
|
- clock-names : Should be "ext".
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
pwm: pwm@10002000 {
|
||||||
|
compatible = "ingenic,jz4740-pwm";
|
||||||
|
reg = <0x10002000 0x1000>;
|
||||||
|
|
||||||
|
#pwm-cells = <3>;
|
||||||
|
|
||||||
|
clocks = <&ext>;
|
||||||
|
clock-names = "ext";
|
||||||
|
};
|
|
@ -7,6 +7,8 @@ See ../mfd/stm32-lptimer.txt for details about the parent node.
|
||||||
|
|
||||||
Required parameters:
|
Required parameters:
|
||||||
- compatible: Must be "st,stm32-pwm-lp".
|
- compatible: Must be "st,stm32-pwm-lp".
|
||||||
|
- #pwm-cells: Should be set to 3. This PWM chip uses the default 3 cells
|
||||||
|
bindings defined in pwm.txt.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- pinctrl-names: Set to "default".
|
- pinctrl-names: Set to "default".
|
||||||
|
@ -18,6 +20,7 @@ Example:
|
||||||
...
|
...
|
||||||
pwm {
|
pwm {
|
||||||
compatible = "st,stm32-pwm-lp";
|
compatible = "st,stm32-pwm-lp";
|
||||||
|
#pwm-cells = <3>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&lppwm1_pins>;
|
pinctrl-0 = <&lppwm1_pins>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,8 @@ Required properties:
|
||||||
- "allwinner,sun5i-a13-pwm"
|
- "allwinner,sun5i-a13-pwm"
|
||||||
- "allwinner,sun7i-a20-pwm"
|
- "allwinner,sun7i-a20-pwm"
|
||||||
- "allwinner,sun8i-h3-pwm"
|
- "allwinner,sun8i-h3-pwm"
|
||||||
|
- "allwinner,sun50i-a64-pwm", "allwinner,sun5i-a13-pwm"
|
||||||
|
- "allwinner,sun50i-h5-pwm", "allwinner,sun5i-a13-pwm"
|
||||||
- reg: physical base address and length of the controller's registers
|
- reg: physical base address and length of the controller's registers
|
||||||
- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
|
- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
|
||||||
the cells format.
|
the cells format.
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
Required Properties:
|
Required Properties:
|
||||||
- compatible: should be "renesas,pwm-rcar" and one of the following.
|
- compatible: should be "renesas,pwm-rcar" and one of the following.
|
||||||
|
- "renesas,pwm-r8a7743": for RZ/G1M
|
||||||
|
- "renesas,pwm-r8a7745": for RZ/G1E
|
||||||
- "renesas,pwm-r8a7778": for R-Car M1A
|
- "renesas,pwm-r8a7778": for R-Car M1A
|
||||||
- "renesas,pwm-r8a7779": for R-Car H1
|
- "renesas,pwm-r8a7779": for R-Car H1
|
||||||
- "renesas,pwm-r8a7790": for R-Car H2
|
- "renesas,pwm-r8a7790": for R-Car H2
|
||||||
|
@ -9,6 +11,7 @@ Required Properties:
|
||||||
- "renesas,pwm-r8a7794": for R-Car E2
|
- "renesas,pwm-r8a7794": for R-Car E2
|
||||||
- "renesas,pwm-r8a7795": for R-Car H3
|
- "renesas,pwm-r8a7795": for R-Car H3
|
||||||
- "renesas,pwm-r8a7796": for R-Car M3-W
|
- "renesas,pwm-r8a7796": for R-Car M3-W
|
||||||
|
- "renesas,pwm-r8a77965": for R-Car M3-N
|
||||||
- "renesas,pwm-r8a77995": for R-Car D3
|
- "renesas,pwm-r8a77995": for R-Car D3
|
||||||
- reg: base address and length of the registers block for the PWM.
|
- reg: base address and length of the registers block for the PWM.
|
||||||
- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
|
- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
|
||||||
|
@ -17,13 +20,15 @@ Required Properties:
|
||||||
- pinctrl-0: phandle, referring to a default pin configuration node.
|
- pinctrl-0: phandle, referring to a default pin configuration node.
|
||||||
- pinctrl-names: Set to "default".
|
- pinctrl-names: Set to "default".
|
||||||
|
|
||||||
Example: R8A7790 (R-Car H2) PWM Timer node
|
Example: R8A7743 (RZ/G1M) PWM Timer node
|
||||||
|
|
||||||
pwm0: pwm@e6e30000 {
|
pwm0: pwm@e6e30000 {
|
||||||
compatible = "renesas,pwm-r8a7790", "renesas,pwm-rcar";
|
compatible = "renesas,pwm-r8a7743", "renesas,pwm-rcar";
|
||||||
reg = <0 0xe6e30000 0 0x8>;
|
reg = <0 0xe6e30000 0 0x8>;
|
||||||
|
clocks = <&cpg CPG_MOD 523>;
|
||||||
|
power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
|
||||||
|
resets = <&cpg 523>;
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
clocks = <&mstp5_clks R8A7790_CLK_PWM>;
|
|
||||||
pinctrl-0 = <&pwm0_pins>;
|
pinctrl-0 = <&pwm0_pins>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,10 +3,12 @@
|
||||||
Required Properties:
|
Required Properties:
|
||||||
|
|
||||||
- compatible: should be one of the following.
|
- compatible: should be one of the following.
|
||||||
- "renesas,tpu-r8a73a4": for R8A77A4 (R-Mobile APE6) compatible PWM controller.
|
- "renesas,tpu-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible PWM controller.
|
||||||
- "renesas,tpu-r8a7740": for R8A7740 (R-Mobile A1) compatible PWM controller.
|
- "renesas,tpu-r8a7740": for R8A7740 (R-Mobile A1) compatible PWM controller.
|
||||||
|
- "renesas,tpu-r8a7743": for R8A7743 (RZ/G1M) compatible PWM controller.
|
||||||
|
- "renesas,tpu-r8a7745": for R8A7745 (RZ/G1E) compatible PWM controller.
|
||||||
- "renesas,tpu-r8a7790": for R8A7790 (R-Car H2) compatible PWM controller.
|
- "renesas,tpu-r8a7790": for R8A7790 (R-Car H2) compatible PWM controller.
|
||||||
- "renesas,tpu": for generic R-Car TPU PWM controller.
|
- "renesas,tpu": for generic R-Car and RZ/G1 TPU PWM controller.
|
||||||
|
|
||||||
- reg: Base address and length of each memory resource used by the PWM
|
- reg: Base address and length of each memory resource used by the PWM
|
||||||
controller hardware module.
|
controller hardware module.
|
||||||
|
@ -18,10 +20,10 @@ Required Properties:
|
||||||
Please refer to pwm.txt in this directory for details of the common PWM bindings
|
Please refer to pwm.txt in this directory for details of the common PWM bindings
|
||||||
used by client devices.
|
used by client devices.
|
||||||
|
|
||||||
Example: R8A7740 (R-Car A1) TPU controller node
|
Example: R8A7740 (R-Mobile A1) TPU controller node
|
||||||
|
|
||||||
tpu: pwm@e6600000 {
|
tpu: pwm@e6600000 {
|
||||||
compatible = "renesas,tpu-r8a7740", "renesas,tpu";
|
compatible = "renesas,tpu-r8a7740", "renesas,tpu";
|
||||||
reg = <0xe6600000 0x100>;
|
reg = <0xe6600000 0x148>;
|
||||||
#pwm-cells = <3>;
|
#pwm-cells = <3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,19 +49,6 @@ on the SoC (only first trip points defined in DT will be configured):
|
||||||
- samsung,exynos5433-tmu: 8
|
- samsung,exynos5433-tmu: 8
|
||||||
- samsung,exynos7-tmu: 8
|
- samsung,exynos7-tmu: 8
|
||||||
|
|
||||||
Following properties are mandatory (depending on SoC):
|
|
||||||
- samsung,tmu_gain: Gain value for internal TMU operation.
|
|
||||||
- samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage
|
|
||||||
- samsung,tmu_noise_cancel_mode: Mode for noise cancellation
|
|
||||||
- samsung,tmu_efuse_value: Default level of temperature - it is needed when
|
|
||||||
in factory fusing produced wrong value
|
|
||||||
- samsung,tmu_min_efuse_value: Minimum temperature fused value
|
|
||||||
- samsung,tmu_max_efuse_value: Maximum temperature fused value
|
|
||||||
- samsung,tmu_first_point_trim: First point trimming value
|
|
||||||
- samsung,tmu_second_point_trim: Second point trimming value
|
|
||||||
- samsung,tmu_default_temp_offset: Default temperature offset
|
|
||||||
- samsung,tmu_cal_type: Callibration type
|
|
||||||
|
|
||||||
** Optional properties:
|
** Optional properties:
|
||||||
|
|
||||||
- vtmu-supply: This entry is optional and provides the regulator node supplying
|
- vtmu-supply: This entry is optional and provides the regulator node supplying
|
||||||
|
@ -78,7 +65,7 @@ Example 1):
|
||||||
clocks = <&clock 383>;
|
clocks = <&clock 383>;
|
||||||
clock-names = "tmu_apbif";
|
clock-names = "tmu_apbif";
|
||||||
vtmu-supply = <&tmu_regulator_node>;
|
vtmu-supply = <&tmu_regulator_node>;
|
||||||
#include "exynos4412-tmu-sensor-conf.dtsi"
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
Example 2):
|
Example 2):
|
||||||
|
@ -89,7 +76,7 @@ Example 2):
|
||||||
interrupts = <0 58 0>;
|
interrupts = <0 58 0>;
|
||||||
clocks = <&clock 21>;
|
clocks = <&clock 21>;
|
||||||
clock-names = "tmu_apbif";
|
clock-names = "tmu_apbif";
|
||||||
#include "exynos5440-tmu-sensor-conf.dtsi"
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
||||||
|
@ -99,7 +86,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
||||||
interrupts = <0 184 0>;
|
interrupts = <0 184 0>;
|
||||||
clocks = <&clock 318>, <&clock 318>;
|
clocks = <&clock 318>, <&clock 318>;
|
||||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||||
#include "exynos4412-tmu-sensor-conf.dtsi"
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
tmu_cpu3: tmu@1006c000 {
|
tmu_cpu3: tmu@1006c000 {
|
||||||
|
@ -108,7 +95,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
||||||
interrupts = <0 185 0>;
|
interrupts = <0 185 0>;
|
||||||
clocks = <&clock 318>, <&clock 319>;
|
clocks = <&clock 318>, <&clock 319>;
|
||||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||||
#include "exynos4412-tmu-sensor-conf.dtsi"
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
tmu_gpu: tmu@100a0000 {
|
tmu_gpu: tmu@100a0000 {
|
||||||
|
@ -117,7 +104,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
||||||
interrupts = <0 215 0>;
|
interrupts = <0 215 0>;
|
||||||
clocks = <&clock 319>, <&clock 318>;
|
clocks = <&clock 319>, <&clock 318>;
|
||||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||||
#include "exynos4412-tmu-sensor-conf.dtsi"
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
Note: For multi-instance tmu each instance should have an alias correctly
|
Note: For multi-instance tmu each instance should have an alias correctly
|
||||||
|
|
|
@ -55,8 +55,7 @@ of heat dissipation). For example a fan's cooling states correspond to
|
||||||
the different fan speeds possible. Cooling states are referred to by
|
the different fan speeds possible. Cooling states are referred to by
|
||||||
single unsigned integers, where larger numbers mean greater heat
|
single unsigned integers, where larger numbers mean greater heat
|
||||||
dissipation. The precise set of cooling states associated with a device
|
dissipation. The precise set of cooling states associated with a device
|
||||||
(as referred to by the cooling-min-level and cooling-max-level
|
should be defined in a particular device's binding.
|
||||||
properties) should be defined in a particular device's binding.
|
|
||||||
For more examples of cooling devices, refer to the example sections below.
|
For more examples of cooling devices, refer to the example sections below.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
@ -69,15 +68,6 @@ Required properties:
|
||||||
See Cooling device maps section below for more details
|
See Cooling device maps section below for more details
|
||||||
on how consumers refer to cooling devices.
|
on how consumers refer to cooling devices.
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- cooling-min-level: An integer indicating the smallest
|
|
||||||
Type: unsigned cooling state accepted. Typically 0.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
- cooling-max-level: An integer indicating the largest
|
|
||||||
Type: unsigned cooling state accepted.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
* Trip points
|
* Trip points
|
||||||
|
|
||||||
The trip node is a node to describe a point in the temperature domain
|
The trip node is a node to describe a point in the temperature domain
|
||||||
|
@ -226,8 +216,6 @@ cpus {
|
||||||
396000 950000
|
396000 950000
|
||||||
198000 850000
|
198000 850000
|
||||||
>;
|
>;
|
||||||
cooling-min-level = <0>;
|
|
||||||
cooling-max-level = <3>;
|
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
...
|
...
|
||||||
|
@ -241,8 +229,6 @@ cpus {
|
||||||
*/
|
*/
|
||||||
fan0: fan@48 {
|
fan0: fan@48 {
|
||||||
...
|
...
|
||||||
cooling-min-level = <0>;
|
|
||||||
cooling-max-level = <9>;
|
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
Nuvoton NPCM7xx timer
|
||||||
|
|
||||||
|
Nuvoton NPCM7xx have three timer modules, each timer module provides five 24-bit
|
||||||
|
timer counters.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "nuvoton,npcm750-timer" for Poleg NPCM750.
|
||||||
|
- reg : Offset and length of the register set for the device.
|
||||||
|
- interrupts : Contain the timer interrupt with flags for
|
||||||
|
falling edge.
|
||||||
|
- clocks : phandle of timer reference clock (usually a 25 MHz clock).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
timer@f0008000 {
|
||||||
|
compatible = "nuvoton,npcm750-timer";
|
||||||
|
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
reg = <0xf0008000 0x50>;
|
||||||
|
clocks = <&clk NPCM7XX_CLK_TIMER>;
|
||||||
|
};
|
||||||
|
|
|
@ -15,7 +15,7 @@ Required properties:
|
||||||
- interrupts : Should be the clock event device interrupt.
|
- interrupts : Should be the clock event device interrupt.
|
||||||
- clocks : The clocks provided by the SoC to drive the timer, must contain
|
- clocks : The clocks provided by the SoC to drive the timer, must contain
|
||||||
an entry for each entry in clock-names.
|
an entry for each entry in clock-names.
|
||||||
- clock-names : Must include the following entries: "igp" and "per".
|
- clock-names : Must include the following entries: "ipg" and "per".
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
tpm5: tpm@40260000 {
|
tpm5: tpm@40260000 {
|
||||||
|
|
|
@ -11,6 +11,7 @@ Optional properties:
|
||||||
detail please see: Documentation/devicetree/bindings/regmap/regmap.txt.
|
detail please see: Documentation/devicetree/bindings/regmap/regmap.txt.
|
||||||
- fsl,ext-reset-output: If present the watchdog device is configured to
|
- fsl,ext-reset-output: If present the watchdog device is configured to
|
||||||
assert its external reset (WDOG_B) instead of issuing a software reset.
|
assert its external reset (WDOG_B) instead of issuing a software reset.
|
||||||
|
- timeout-sec : Contains the watchdog timeout in seconds
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
@ -19,4 +20,5 @@ wdt@73f98000 {
|
||||||
reg = <0x73f98000 0x4000>;
|
reg = <0x73f98000 0x4000>;
|
||||||
interrupts = <58>;
|
interrupts = <58>;
|
||||||
big-endian;
|
big-endian;
|
||||||
|
timeout-sec = <20>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,9 +9,13 @@ Required properties:
|
||||||
"amlogic,meson8m2-wdt" and "amlogic,meson8b-wdt" on Meson8m2 SoCs
|
"amlogic,meson8m2-wdt" and "amlogic,meson8b-wdt" on Meson8m2 SoCs
|
||||||
- reg : Specifies base physical address and size of the registers.
|
- reg : Specifies base physical address and size of the registers.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec: contains the watchdog timeout in seconds.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
wdt: watchdog@c1109900 {
|
wdt: watchdog@c1109900 {
|
||||||
compatible = "amlogic,meson6-wdt";
|
compatible = "amlogic,meson6-wdt";
|
||||||
reg = <0xc1109900 0x8>;
|
reg = <0xc1109900 0x8>;
|
||||||
|
timeout-sec = <10>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,9 +11,13 @@ Required properties:
|
||||||
|
|
||||||
- reg : Specifies base physical address and size of the registers.
|
- reg : Specifies base physical address and size of the registers.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec: contains the watchdog timeout in seconds.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
wdt: watchdog@10000000 {
|
wdt: watchdog@10000000 {
|
||||||
compatible = "mediatek,mt6589-wdt";
|
compatible = "mediatek,mt6589-wdt";
|
||||||
reg = <0x10000000 0x18>;
|
reg = <0x10000000 0x18>;
|
||||||
|
timeout-sec = <10>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
Nuvoton NPCM Watchdog
|
||||||
|
|
||||||
|
Nuvoton NPCM timer module provides five 24-bit timer counters, and a watchdog.
|
||||||
|
The watchdog supports a pre-timeout interrupt that fires 10ms before the
|
||||||
|
expiry.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "nuvoton,npcm750-wdt" for NPCM750 (Poleg).
|
||||||
|
- reg : Offset and length of the register set for the device.
|
||||||
|
- interrupts : Contain the timer interrupt with flags for
|
||||||
|
falling edge.
|
||||||
|
|
||||||
|
Required clocking property, have to be one of:
|
||||||
|
- clocks : phandle of timer reference clock.
|
||||||
|
- clock-frequency : The frequency in Hz of the clock that drives the NPCM7xx
|
||||||
|
timer (usually 25000000).
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec : Contains the watchdog timeout in seconds
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
timer@f000801c {
|
||||||
|
compatible = "nuvoton,npcm750-wdt";
|
||||||
|
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
reg = <0xf000801c 0x4>;
|
||||||
|
clocks = <&clk NPCM7XX_CLK_TIMER>;
|
||||||
|
};
|
|
@ -5,10 +5,14 @@ Required properties:
|
||||||
- reg: Address range of tick timer/WDT register set
|
- reg: Address range of tick timer/WDT register set
|
||||||
- interrupts: interrupt number to the cpu
|
- interrupts: interrupt number to the cpu
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec : Contains the watchdog timeout in seconds
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
timer@b0020000 {
|
timer@b0020000 {
|
||||||
compatible = "sirf,prima2-tick";
|
compatible = "sirf,prima2-tick";
|
||||||
reg = <0xb0020000 0x1000>;
|
reg = <0xb0020000 0x1000>;
|
||||||
interrupts = <0>;
|
interrupts = <0>;
|
||||||
|
timeout-sec = <30>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,9 +8,13 @@ Required properties:
|
||||||
"allwinner,sun50i-a64-wdt","allwinner,sun6i-a31-wdt"
|
"allwinner,sun50i-a64-wdt","allwinner,sun6i-a31-wdt"
|
||||||
- reg : Specifies base physical address and size of the registers.
|
- reg : Specifies base physical address and size of the registers.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec : Contains the watchdog timeout in seconds
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
wdt: watchdog@1c20c90 {
|
wdt: watchdog@1c20c90 {
|
||||||
compatible = "allwinner,sun4i-a10-wdt";
|
compatible = "allwinner,sun4i-a10-wdt";
|
||||||
reg = <0x01c20c90 0x10>;
|
reg = <0x01c20c90 0x10>;
|
||||||
|
timeout-sec = <10>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,7 @@ Contents:
|
||||||
- Proc filesystem.
|
- Proc filesystem.
|
||||||
- The cell database.
|
- The cell database.
|
||||||
- Security.
|
- Security.
|
||||||
- Examples.
|
- The @sys substitution.
|
||||||
|
|
||||||
|
|
||||||
========
|
========
|
||||||
|
@ -230,3 +230,29 @@ If a file is opened with a particular key and then the file descriptor is
|
||||||
passed to a process that doesn't have that key (perhaps over an AF_UNIX
|
passed to a process that doesn't have that key (perhaps over an AF_UNIX
|
||||||
socket), then the operations on the file will be made with key that was used to
|
socket), then the operations on the file will be made with key that was used to
|
||||||
open the file.
|
open the file.
|
||||||
|
|
||||||
|
|
||||||
|
=====================
|
||||||
|
THE @SYS SUBSTITUTION
|
||||||
|
=====================
|
||||||
|
|
||||||
|
The list of up to 16 @sys substitutions for the current network namespace can
|
||||||
|
be configured by writing a list to /proc/fs/afs/sysname:
|
||||||
|
|
||||||
|
[root@andromeda ~]# echo foo amd64_linux_26 >/proc/fs/afs/sysname
|
||||||
|
|
||||||
|
or cleared entirely by writing an empty list:
|
||||||
|
|
||||||
|
[root@andromeda ~]# echo >/proc/fs/afs/sysname
|
||||||
|
|
||||||
|
The current list for current network namespace can be retrieved by:
|
||||||
|
|
||||||
|
[root@andromeda ~]# cat /proc/fs/afs/sysname
|
||||||
|
foo
|
||||||
|
amd64_linux_26
|
||||||
|
|
||||||
|
When @sys is being substituted for, each element of the list is tried in the
|
||||||
|
order given.
|
||||||
|
|
||||||
|
By default, the list will contain one item that conforms to the pattern
|
||||||
|
"<arch>_linux_26", amd64 being the name for x86_64.
|
||||||
|
|
|
@ -100,14 +100,15 @@ indicates that it is caching uptodate data.
|
||||||
|
|
||||||
Glock locking order within GFS2:
|
Glock locking order within GFS2:
|
||||||
|
|
||||||
1. i_mutex (if required)
|
1. i_rwsem (if required)
|
||||||
2. Rename glock (for rename only)
|
2. Rename glock (for rename only)
|
||||||
3. Inode glock(s)
|
3. Inode glock(s)
|
||||||
(Parents before children, inodes at "same level" with same parent in
|
(Parents before children, inodes at "same level" with same parent in
|
||||||
lock number order)
|
lock number order)
|
||||||
4. Rgrp glock(s) (for (de)allocation operations)
|
4. Rgrp glock(s) (for (de)allocation operations)
|
||||||
5. Transaction glock (via gfs2_trans_begin) for non-read operations
|
5. Transaction glock (via gfs2_trans_begin) for non-read operations
|
||||||
6. Page lock (always last, very important!)
|
6. i_rw_mutex (if required)
|
||||||
|
7. Page lock (always last, very important!)
|
||||||
|
|
||||||
There are two glocks per inode. One deals with access to the inode
|
There are two glocks per inode. One deals with access to the inode
|
||||||
itself (locking order as above), and the other, known as the iopen
|
itself (locking order as above), and the other, known as the iopen
|
||||||
|
|
|
@ -14,9 +14,13 @@ The result will inevitably fail to look exactly like a normal
|
||||||
filesystem for various technical reasons. The expectation is that
|
filesystem for various technical reasons. The expectation is that
|
||||||
many use cases will be able to ignore these differences.
|
many use cases will be able to ignore these differences.
|
||||||
|
|
||||||
This approach is 'hybrid' because the objects that appear in the
|
|
||||||
filesystem do not all appear to belong to that filesystem. In many
|
Overlay objects
|
||||||
cases an object accessed in the union will be indistinguishable
|
---------------
|
||||||
|
|
||||||
|
The overlay filesystem approach is 'hybrid', because the objects that
|
||||||
|
appear in the filesystem do not always appear to belong to that filesystem.
|
||||||
|
In many cases, an object accessed in the union will be indistinguishable
|
||||||
from accessing the corresponding object from the original filesystem.
|
from accessing the corresponding object from the original filesystem.
|
||||||
This is most obvious from the 'st_dev' field returned by stat(2).
|
This is most obvious from the 'st_dev' field returned by stat(2).
|
||||||
|
|
||||||
|
@ -34,6 +38,19 @@ make the overlay mount more compliant with filesystem scanners and
|
||||||
overlay objects will be distinguishable from the corresponding
|
overlay objects will be distinguishable from the corresponding
|
||||||
objects in the original filesystem.
|
objects in the original filesystem.
|
||||||
|
|
||||||
|
On 64bit systems, even if all overlay layers are not on the same
|
||||||
|
underlying filesystem, the same compliant behavior could be achieved
|
||||||
|
with the "xino" feature. The "xino" feature composes a unique object
|
||||||
|
identifier from the real object st_ino and an underlying fsid index.
|
||||||
|
If all underlying filesystems support NFS file handles and export file
|
||||||
|
handles with 32bit inode number encoding (e.g. ext4), overlay filesystem
|
||||||
|
will use the high inode number bits for fsid. Even when the underlying
|
||||||
|
filesystem uses 64bit inode numbers, users can still enable the "xino"
|
||||||
|
feature with the "-o xino=on" overlay mount option. That is useful for the
|
||||||
|
case of underlying filesystems like xfs and tmpfs, which use 64bit inode
|
||||||
|
numbers, but are very unlikely to use the high inode number bit.
|
||||||
|
|
||||||
|
|
||||||
Upper and Lower
|
Upper and Lower
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
@ -290,10 +307,19 @@ Non-standard behavior
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
The copy_up operation essentially creates a new, identical file and
|
The copy_up operation essentially creates a new, identical file and
|
||||||
moves it over to the old name. The new file may be on a different
|
moves it over to the old name. Any open files referring to this inode
|
||||||
filesystem, so both st_dev and st_ino of the file may change.
|
will access the old data.
|
||||||
|
|
||||||
Any open files referring to this inode will access the old data.
|
The new file may be on a different filesystem, so both st_dev and st_ino
|
||||||
|
of the real file may change. The values of st_dev and st_ino returned by
|
||||||
|
stat(2) on an overlay object are often not the same as the real file
|
||||||
|
stat(2) values to prevent the values from changing on copy_up.
|
||||||
|
|
||||||
|
Unless "xino" feature is enabled, when overlay layers are not all on the
|
||||||
|
same underlying filesystem, the value of st_dev may be different for two
|
||||||
|
non-directory objects in the same overlay filesystem and the value of
|
||||||
|
st_ino for directory objects may be non persistent and could change even
|
||||||
|
while the overlay filesystem is still mounted.
|
||||||
|
|
||||||
Unless "inode index" feature is enabled, if a file with multiple hard
|
Unless "inode index" feature is enabled, if a file with multiple hard
|
||||||
links is copied up, then this will "break" the link. Changes will not be
|
links is copied up, then this will "break" the link. Changes will not be
|
||||||
|
@ -302,6 +328,7 @@ propagated to other names referring to the same inode.
|
||||||
Unless "redirect_dir" feature is enabled, rename(2) on a lower or merged
|
Unless "redirect_dir" feature is enabled, rename(2) on a lower or merged
|
||||||
directory will fail with EXDEV.
|
directory will fail with EXDEV.
|
||||||
|
|
||||||
|
|
||||||
Changes to underlying filesystems
|
Changes to underlying filesystems
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,13 @@ meta-data and shadow-data:
|
||||||
- data[] - storage for shadow data
|
- data[] - storage for shadow data
|
||||||
|
|
||||||
It is important to note that the klp_shadow_alloc() and
|
It is important to note that the klp_shadow_alloc() and
|
||||||
klp_shadow_get_or_alloc() calls, described below, store a *copy* of the
|
klp_shadow_get_or_alloc() are zeroing the variable by default.
|
||||||
data that the functions are provided. Callers should provide whatever
|
They also allow to call a custom constructor function when a non-zero
|
||||||
mutual exclusion is required of the shadow data.
|
value is needed. Callers should provide whatever mutual exclusion
|
||||||
|
is required.
|
||||||
|
|
||||||
|
Note that the constructor is called under klp_shadow_lock spinlock. It allows
|
||||||
|
to do actions that can be done only once when a new variable is allocated.
|
||||||
|
|
||||||
* klp_shadow_get() - retrieve a shadow variable data pointer
|
* klp_shadow_get() - retrieve a shadow variable data pointer
|
||||||
- search hashtable for <obj, id> pair
|
- search hashtable for <obj, id> pair
|
||||||
|
@ -47,7 +51,7 @@ mutual exclusion is required of the shadow data.
|
||||||
- WARN and return NULL
|
- WARN and return NULL
|
||||||
- if <obj, id> doesn't already exist
|
- if <obj, id> doesn't already exist
|
||||||
- allocate a new shadow variable
|
- allocate a new shadow variable
|
||||||
- copy data into the new shadow variable
|
- initialize the variable using a custom constructor and data when provided
|
||||||
- add <obj, id> to the global hashtable
|
- add <obj, id> to the global hashtable
|
||||||
|
|
||||||
* klp_shadow_get_or_alloc() - get existing or alloc a new shadow variable
|
* klp_shadow_get_or_alloc() - get existing or alloc a new shadow variable
|
||||||
|
@ -56,16 +60,20 @@ mutual exclusion is required of the shadow data.
|
||||||
- return existing shadow variable
|
- return existing shadow variable
|
||||||
- if <obj, id> doesn't already exist
|
- if <obj, id> doesn't already exist
|
||||||
- allocate a new shadow variable
|
- allocate a new shadow variable
|
||||||
- copy data into the new shadow variable
|
- initialize the variable using a custom constructor and data when provided
|
||||||
- add <obj, id> pair to the global hashtable
|
- add <obj, id> pair to the global hashtable
|
||||||
|
|
||||||
* klp_shadow_free() - detach and free a <obj, id> shadow variable
|
* klp_shadow_free() - detach and free a <obj, id> shadow variable
|
||||||
- find and remove a <obj, id> reference from global hashtable
|
- find and remove a <obj, id> reference from global hashtable
|
||||||
- if found, free shadow variable
|
- if found
|
||||||
|
- call destructor function if defined
|
||||||
|
- free shadow variable
|
||||||
|
|
||||||
* klp_shadow_free_all() - detach and free all <*, id> shadow variables
|
* klp_shadow_free_all() - detach and free all <*, id> shadow variables
|
||||||
- find and remove any <*, id> references from global hashtable
|
- find and remove any <*, id> references from global hashtable
|
||||||
- if found, free shadow variable
|
- if found
|
||||||
|
- call destructor function if defined
|
||||||
|
- free shadow variable
|
||||||
|
|
||||||
|
|
||||||
2. Use cases
|
2. Use cases
|
||||||
|
@ -107,7 +115,8 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
|
||||||
sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
|
sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
|
||||||
|
|
||||||
/* Attach a corresponding shadow variable, then initialize it */
|
/* Attach a corresponding shadow variable, then initialize it */
|
||||||
ps_lock = klp_shadow_alloc(sta, PS_LOCK, NULL, sizeof(*ps_lock), gfp);
|
ps_lock = klp_shadow_alloc(sta, PS_LOCK, sizeof(*ps_lock), gfp,
|
||||||
|
NULL, NULL);
|
||||||
if (!ps_lock)
|
if (!ps_lock)
|
||||||
goto shadow_fail;
|
goto shadow_fail;
|
||||||
spin_lock_init(ps_lock);
|
spin_lock_init(ps_lock);
|
||||||
|
@ -131,7 +140,7 @@ variable:
|
||||||
|
|
||||||
void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
|
void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
|
||||||
{
|
{
|
||||||
klp_shadow_free(sta, PS_LOCK);
|
klp_shadow_free(sta, PS_LOCK, NULL);
|
||||||
kfree(sta);
|
kfree(sta);
|
||||||
...
|
...
|
||||||
|
|
||||||
|
@ -148,16 +157,24 @@ shadow variables to parents already in-flight.
|
||||||
For commit 1d147bfa6429, a good spot to allocate a shadow spinlock is
|
For commit 1d147bfa6429, a good spot to allocate a shadow spinlock is
|
||||||
inside ieee80211_sta_ps_deliver_wakeup():
|
inside ieee80211_sta_ps_deliver_wakeup():
|
||||||
|
|
||||||
|
int ps_lock_shadow_ctor(void *obj, void *shadow_data, void *ctor_data)
|
||||||
|
{
|
||||||
|
spinlock_t *lock = shadow_data;
|
||||||
|
|
||||||
|
spin_lock_init(lock);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#define PS_LOCK 1
|
#define PS_LOCK 1
|
||||||
void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
|
void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
|
||||||
{
|
{
|
||||||
DEFINE_SPINLOCK(ps_lock_fallback);
|
|
||||||
spinlock_t *ps_lock;
|
spinlock_t *ps_lock;
|
||||||
|
|
||||||
/* sync with ieee80211_tx_h_unicast_ps_buf */
|
/* sync with ieee80211_tx_h_unicast_ps_buf */
|
||||||
ps_lock = klp_shadow_get_or_alloc(sta, PS_LOCK,
|
ps_lock = klp_shadow_get_or_alloc(sta, PS_LOCK,
|
||||||
&ps_lock_fallback, sizeof(ps_lock_fallback),
|
sizeof(*ps_lock), GFP_ATOMIC,
|
||||||
GFP_ATOMIC);
|
ps_lock_shadow_ctor, NULL);
|
||||||
|
|
||||||
if (ps_lock)
|
if (ps_lock)
|
||||||
spin_lock(ps_lock);
|
spin_lock(ps_lock);
|
||||||
...
|
...
|
||||||
|
|
|
@ -169,7 +169,7 @@ access to BPF code as well.
|
||||||
BPF engine and instruction set
|
BPF engine and instruction set
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
Under tools/net/ there's a small helper tool called bpf_asm which can
|
Under tools/bpf/ there's a small helper tool called bpf_asm which can
|
||||||
be used to write low-level filters for example scenarios mentioned in the
|
be used to write low-level filters for example scenarios mentioned in the
|
||||||
previous section. Asm-like syntax mentioned here has been implemented in
|
previous section. Asm-like syntax mentioned here has been implemented in
|
||||||
bpf_asm and will be used for further explanations (instead of dealing with
|
bpf_asm and will be used for further explanations (instead of dealing with
|
||||||
|
@ -359,7 +359,7 @@ $ ./bpf_asm -c foo
|
||||||
In particular, as usage with xt_bpf or cls_bpf can result in more complex BPF
|
In particular, as usage with xt_bpf or cls_bpf can result in more complex BPF
|
||||||
filters that might not be obvious at first, it's good to test filters before
|
filters that might not be obvious at first, it's good to test filters before
|
||||||
attaching to a live system. For that purpose, there's a small tool called
|
attaching to a live system. For that purpose, there's a small tool called
|
||||||
bpf_dbg under tools/net/ in the kernel source directory. This debugger allows
|
bpf_dbg under tools/bpf/ in the kernel source directory. This debugger allows
|
||||||
for testing BPF filters against given pcap files, single stepping through the
|
for testing BPF filters against given pcap files, single stepping through the
|
||||||
BPF code on the pcap's packets and to do BPF machine register dumps.
|
BPF code on the pcap's packets and to do BPF machine register dumps.
|
||||||
|
|
||||||
|
@ -483,7 +483,7 @@ Example output from dmesg:
|
||||||
[ 3389.935851] JIT code: 00000030: 00 e8 28 94 ff e0 83 f8 01 75 07 b8 ff ff 00 00
|
[ 3389.935851] JIT code: 00000030: 00 e8 28 94 ff e0 83 f8 01 75 07 b8 ff ff 00 00
|
||||||
[ 3389.935852] JIT code: 00000040: eb 02 31 c0 c9 c3
|
[ 3389.935852] JIT code: 00000040: eb 02 31 c0 c9 c3
|
||||||
|
|
||||||
In the kernel source tree under tools/net/, there's bpf_jit_disasm for
|
In the kernel source tree under tools/bpf/, there's bpf_jit_disasm for
|
||||||
generating disassembly out of the kernel log's hexdump:
|
generating disassembly out of the kernel log's hexdump:
|
||||||
|
|
||||||
# ./bpf_jit_disasm
|
# ./bpf_jit_disasm
|
||||||
|
|
|
@ -1390,26 +1390,26 @@ mld_qrv - INTEGER
|
||||||
Default: 2 (as specified by RFC3810 9.1)
|
Default: 2 (as specified by RFC3810 9.1)
|
||||||
Minimum: 1 (as specified by RFC6636 4.5)
|
Minimum: 1 (as specified by RFC6636 4.5)
|
||||||
|
|
||||||
max_dst_opts_cnt - INTEGER
|
max_dst_opts_number - INTEGER
|
||||||
Maximum number of non-padding TLVs allowed in a Destination
|
Maximum number of non-padding TLVs allowed in a Destination
|
||||||
options extension header. If this value is less than zero
|
options extension header. If this value is less than zero
|
||||||
then unknown options are disallowed and the number of known
|
then unknown options are disallowed and the number of known
|
||||||
TLVs allowed is the absolute value of this number.
|
TLVs allowed is the absolute value of this number.
|
||||||
Default: 8
|
Default: 8
|
||||||
|
|
||||||
max_hbh_opts_cnt - INTEGER
|
max_hbh_opts_number - INTEGER
|
||||||
Maximum number of non-padding TLVs allowed in a Hop-by-Hop
|
Maximum number of non-padding TLVs allowed in a Hop-by-Hop
|
||||||
options extension header. If this value is less than zero
|
options extension header. If this value is less than zero
|
||||||
then unknown options are disallowed and the number of known
|
then unknown options are disallowed and the number of known
|
||||||
TLVs allowed is the absolute value of this number.
|
TLVs allowed is the absolute value of this number.
|
||||||
Default: 8
|
Default: 8
|
||||||
|
|
||||||
max dst_opts_len - INTEGER
|
max_dst_opts_length - INTEGER
|
||||||
Maximum length allowed for a Destination options extension
|
Maximum length allowed for a Destination options extension
|
||||||
header.
|
header.
|
||||||
Default: INT_MAX (unlimited)
|
Default: INT_MAX (unlimited)
|
||||||
|
|
||||||
max hbh_opts_len - INTEGER
|
max_hbh_length - INTEGER
|
||||||
Maximum length allowed for a Hop-by-Hop options extension
|
Maximum length allowed for a Hop-by-Hop options extension
|
||||||
header.
|
header.
|
||||||
Default: INT_MAX (unlimited)
|
Default: INT_MAX (unlimited)
|
||||||
|
|
|
@ -360,7 +360,7 @@ First, the entry in ``arch/x86/entry/syscalls/syscall_32.tbl`` gets an extra
|
||||||
column to indicate that a 32-bit userspace program running on a 64-bit kernel
|
column to indicate that a 32-bit userspace program running on a 64-bit kernel
|
||||||
should hit the compat entry point::
|
should hit the compat entry point::
|
||||||
|
|
||||||
380 i386 xyzzy sys_xyzzy compat_sys_xyzzy
|
380 i386 xyzzy sys_xyzzy __ia32_compat_sys_xyzzy
|
||||||
|
|
||||||
Second, you need to figure out what should happen for the x32 ABI version of
|
Second, you need to figure out what should happen for the x32 ABI version of
|
||||||
the new system call. There's a choice here: the layout of the arguments
|
the new system call. There's a choice here: the layout of the arguments
|
||||||
|
@ -373,7 +373,7 @@ the compatibility wrapper::
|
||||||
|
|
||||||
333 64 xyzzy sys_xyzzy
|
333 64 xyzzy sys_xyzzy
|
||||||
...
|
...
|
||||||
555 x32 xyzzy compat_sys_xyzzy
|
555 x32 xyzzy __x32_compat_sys_xyzzy
|
||||||
|
|
||||||
If no pointers are involved, then it is preferable to re-use the 64-bit system
|
If no pointers are involved, then it is preferable to re-use the 64-bit system
|
||||||
call for the x32 ABI (and consequently the entry in
|
call for the x32 ABI (and consequently the entry in
|
||||||
|
|
|
@ -255,6 +255,7 @@ temperature) and throttle appropriate devices.
|
||||||
2. sysfs attributes structure
|
2. sysfs attributes structure
|
||||||
|
|
||||||
RO read only value
|
RO read only value
|
||||||
|
WO write only value
|
||||||
RW read/write value
|
RW read/write value
|
||||||
|
|
||||||
Thermal sysfs attributes will be represented under /sys/class/thermal.
|
Thermal sysfs attributes will be represented under /sys/class/thermal.
|
||||||
|
@ -286,6 +287,11 @@ Thermal cooling device sys I/F, created once it's registered:
|
||||||
|---type: Type of the cooling device(processor/fan/...)
|
|---type: Type of the cooling device(processor/fan/...)
|
||||||
|---max_state: Maximum cooling state of the cooling device
|
|---max_state: Maximum cooling state of the cooling device
|
||||||
|---cur_state: Current cooling state of the cooling device
|
|---cur_state: Current cooling state of the cooling device
|
||||||
|
|---stats: Directory containing cooling device's statistics
|
||||||
|
|---stats/reset: Writing any value resets the statistics
|
||||||
|
|---stats/time_in_state_ms: Time (msec) spent in various cooling states
|
||||||
|
|---stats/total_trans: Total number of times cooling state is changed
|
||||||
|
|---stats/trans_table: Cooing state transition table
|
||||||
|
|
||||||
|
|
||||||
Then next two dynamic attributes are created/removed in pairs. They represent
|
Then next two dynamic attributes are created/removed in pairs. They represent
|
||||||
|
@ -490,6 +496,31 @@ cur_state
|
||||||
- cur_state == max_state means the maximum cooling.
|
- cur_state == max_state means the maximum cooling.
|
||||||
RW, Required
|
RW, Required
|
||||||
|
|
||||||
|
stats/reset
|
||||||
|
Writing any value resets the cooling device's statistics.
|
||||||
|
WO, Required
|
||||||
|
|
||||||
|
stats/time_in_state_ms:
|
||||||
|
The amount of time spent by the cooling device in various cooling
|
||||||
|
states. The output will have "<state> <time>" pair in each line, which
|
||||||
|
will mean this cooling device spent <time> msec of time at <state>.
|
||||||
|
Output will have one line for each of the supported states. usertime
|
||||||
|
units here is 10mS (similar to other time exported in /proc).
|
||||||
|
RO, Required
|
||||||
|
|
||||||
|
stats/total_trans:
|
||||||
|
A single positive value showing the total number of times the state of a
|
||||||
|
cooling device is changed.
|
||||||
|
RO, Required
|
||||||
|
|
||||||
|
stats/trans_table:
|
||||||
|
This gives fine grained information about all the cooling state
|
||||||
|
transitions. The cat output here is a two dimensional matrix, where an
|
||||||
|
entry <i,j> (row i, column j) represents the number of transitions from
|
||||||
|
State_i to State_j. If the transition table is bigger than PAGE_SIZE,
|
||||||
|
reading this will return an -EFBIG error.
|
||||||
|
RO, Required
|
||||||
|
|
||||||
3. A simple implementation
|
3. A simple implementation
|
||||||
|
|
||||||
ACPI thermal zone may support multiple trip points like critical, hot,
|
ACPI thermal zone may support multiple trip points like critical, hot,
|
||||||
|
|
|
@ -20,7 +20,7 @@ ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
|
||||||
ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
|
ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
|
||||||
... unused hole ...
|
... unused hole ...
|
||||||
ffffffff80000000 - ffffffff9fffffff (=512 MB) kernel text mapping, from phys 0
|
ffffffff80000000 - ffffffff9fffffff (=512 MB) kernel text mapping, from phys 0
|
||||||
ffffffffa0000000 - [fixmap start] (~1526 MB) module mapping space (variable)
|
ffffffffa0000000 - fffffffffeffffff (1520 MB) module mapping space
|
||||||
[fixmap start] - ffffffffff5fffff kernel-internal fixmap range
|
[fixmap start] - ffffffffff5fffff kernel-internal fixmap range
|
||||||
ffffffffff600000 - ffffffffff600fff (=4 kB) legacy vsyscall ABI
|
ffffffffff600000 - ffffffffff600fff (=4 kB) legacy vsyscall ABI
|
||||||
ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
|
ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
|
||||||
|
|
90
MAINTAINERS
90
MAINTAINERS
|
@ -934,8 +934,8 @@ F: drivers/char/apm-emulation.c
|
||||||
APPARMOR SECURITY MODULE
|
APPARMOR SECURITY MODULE
|
||||||
M: John Johansen <john.johansen@canonical.com>
|
M: John Johansen <john.johansen@canonical.com>
|
||||||
L: apparmor@lists.ubuntu.com (subscribers-only, general discussion)
|
L: apparmor@lists.ubuntu.com (subscribers-only, general discussion)
|
||||||
W: apparmor.wiki.kernel.org
|
W: wiki.apparmor.net
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor
|
||||||
S: Supported
|
S: Supported
|
||||||
F: security/apparmor/
|
F: security/apparmor/
|
||||||
F: Documentation/admin-guide/LSM/apparmor.rst
|
F: Documentation/admin-guide/LSM/apparmor.rst
|
||||||
|
@ -2426,7 +2426,6 @@ T: git git://github.com/ndyer/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/input/atmel,maxtouch.txt
|
F: Documentation/devicetree/bindings/input/atmel,maxtouch.txt
|
||||||
F: drivers/input/touchscreen/atmel_mxt_ts.c
|
F: drivers/input/touchscreen/atmel_mxt_ts.c
|
||||||
F: include/linux/platform_data/atmel_mxt_ts.h
|
|
||||||
|
|
||||||
ATMEL SAMA5D2 ADC DRIVER
|
ATMEL SAMA5D2 ADC DRIVER
|
||||||
M: Ludovic Desroches <ludovic.desroches@microchip.com>
|
M: Ludovic Desroches <ludovic.desroches@microchip.com>
|
||||||
|
@ -5784,6 +5783,14 @@ F: fs/crypto/
|
||||||
F: include/linux/fscrypt*.h
|
F: include/linux/fscrypt*.h
|
||||||
F: Documentation/filesystems/fscrypt.rst
|
F: Documentation/filesystems/fscrypt.rst
|
||||||
|
|
||||||
|
FSNOTIFY: FILESYSTEM NOTIFICATION INFRASTRUCTURE
|
||||||
|
M: Jan Kara <jack@suse.cz>
|
||||||
|
R: Amir Goldstein <amir73il@gmail.com>
|
||||||
|
L: linux-fsdevel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: fs/notify/
|
||||||
|
F: include/linux/fsnotify*.h
|
||||||
|
|
||||||
FUJITSU LAPTOP EXTRAS
|
FUJITSU LAPTOP EXTRAS
|
||||||
M: Jonathan Woithe <jwoithe@just42.net>
|
M: Jonathan Woithe <jwoithe@just42.net>
|
||||||
L: platform-driver-x86@vger.kernel.org
|
L: platform-driver-x86@vger.kernel.org
|
||||||
|
@ -5842,7 +5849,7 @@ F: scripts/Makefile.gcc-plugins
|
||||||
F: Documentation/gcc-plugins.txt
|
F: Documentation/gcc-plugins.txt
|
||||||
|
|
||||||
GCOV BASED KERNEL PROFILING
|
GCOV BASED KERNEL PROFILING
|
||||||
M: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
|
M: Peter Oberparleiter <oberpar@linux.ibm.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/gcov/
|
F: kernel/gcov/
|
||||||
F: Documentation/dev-tools/gcov.rst
|
F: Documentation/dev-tools/gcov.rst
|
||||||
|
@ -5910,6 +5917,11 @@ S: Supported
|
||||||
F: drivers/phy/
|
F: drivers/phy/
|
||||||
F: include/linux/phy/
|
F: include/linux/phy/
|
||||||
|
|
||||||
|
GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER
|
||||||
|
M: Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||||
|
S: Supported
|
||||||
|
F: drivers/i2c/muxes/i2c-demux-pinctrl.c
|
||||||
|
|
||||||
GENERIC PM DOMAINS
|
GENERIC PM DOMAINS
|
||||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||||
M: Kevin Hilman <khilman@kernel.org>
|
M: Kevin Hilman <khilman@kernel.org>
|
||||||
|
@ -6585,15 +6597,25 @@ W: https://i2c.wiki.kernel.org/
|
||||||
Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
|
Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/i2c/
|
F: Documentation/devicetree/bindings/i2c/i2c.txt
|
||||||
F: Documentation/i2c/
|
F: Documentation/i2c/
|
||||||
F: drivers/i2c/
|
F: drivers/i2c/*
|
||||||
F: drivers/i2c/*/
|
|
||||||
F: include/linux/i2c.h
|
F: include/linux/i2c.h
|
||||||
F: include/linux/i2c-*.h
|
F: include/linux/i2c-dev.h
|
||||||
|
F: include/linux/i2c-smbus.h
|
||||||
F: include/uapi/linux/i2c.h
|
F: include/uapi/linux/i2c.h
|
||||||
F: include/uapi/linux/i2c-*.h
|
F: include/uapi/linux/i2c-*.h
|
||||||
|
|
||||||
|
I2C SUBSYSTEM HOST DRIVERS
|
||||||
|
L: linux-i2c@vger.kernel.org
|
||||||
|
W: https://i2c.wiki.kernel.org/
|
||||||
|
Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
|
||||||
|
S: Odd Fixes
|
||||||
|
F: Documentation/devicetree/bindings/i2c/
|
||||||
|
F: drivers/i2c/algos/
|
||||||
|
F: drivers/i2c/busses/
|
||||||
|
|
||||||
I2C-TAOS-EVM DRIVER
|
I2C-TAOS-EVM DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
|
@ -7767,7 +7789,7 @@ F: arch/powerpc/kernel/kvm*
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
|
KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
|
||||||
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
M: Janosch Frank <frankja@linux.vnet.ibm.com>
|
M: Janosch Frank <frankja@linux.ibm.com>
|
||||||
R: David Hildenbrand <david@redhat.com>
|
R: David Hildenbrand <david@redhat.com>
|
||||||
R: Cornelia Huck <cohuck@redhat.com>
|
R: Cornelia Huck <cohuck@redhat.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
|
@ -9750,6 +9772,7 @@ F: include/uapi/linux/net_namespace.h
|
||||||
F: tools/testing/selftests/net/
|
F: tools/testing/selftests/net/
|
||||||
F: lib/net_utils.c
|
F: lib/net_utils.c
|
||||||
F: lib/random32.c
|
F: lib/random32.c
|
||||||
|
F: Documentation/networking/
|
||||||
|
|
||||||
NETWORKING [IPSEC]
|
NETWORKING [IPSEC]
|
||||||
M: Steffen Klassert <steffen.klassert@secunet.com>
|
M: Steffen Klassert <steffen.klassert@secunet.com>
|
||||||
|
@ -11905,6 +11928,11 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git c
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/clk/renesas/
|
F: drivers/clk/renesas/
|
||||||
|
|
||||||
|
RENESAS EMEV2 I2C DRIVER
|
||||||
|
M: Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||||
|
S: Supported
|
||||||
|
F: drivers/i2c/busses/i2c-emev2.c
|
||||||
|
|
||||||
RENESAS ETHERNET DRIVERS
|
RENESAS ETHERNET DRIVERS
|
||||||
R: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
|
R: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
@ -11920,6 +11948,12 @@ L: linux-iio@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/iio/adc/rcar_gyro_adc.c
|
F: drivers/iio/adc/rcar_gyro_adc.c
|
||||||
|
|
||||||
|
RENESAS R-CAR I2C DRIVERS
|
||||||
|
M: Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||||
|
S: Supported
|
||||||
|
F: drivers/i2c/busses/i2c-rcar.c
|
||||||
|
F: drivers/i2c/busses/i2c-sh_mobile.c
|
||||||
|
|
||||||
RENESAS USB PHY DRIVER
|
RENESAS USB PHY DRIVER
|
||||||
M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
|
M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
|
||||||
L: linux-renesas-soc@vger.kernel.org
|
L: linux-renesas-soc@vger.kernel.org
|
||||||
|
@ -12123,16 +12157,16 @@ F: Documentation/s390/
|
||||||
F: Documentation/driver-api/s390-drivers.rst
|
F: Documentation/driver-api/s390-drivers.rst
|
||||||
|
|
||||||
S390 COMMON I/O LAYER
|
S390 COMMON I/O LAYER
|
||||||
M: Sebastian Ott <sebott@linux.vnet.ibm.com>
|
M: Sebastian Ott <sebott@linux.ibm.com>
|
||||||
M: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
|
M: Peter Oberparleiter <oberpar@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/s390/cio/
|
F: drivers/s390/cio/
|
||||||
|
|
||||||
S390 DASD DRIVER
|
S390 DASD DRIVER
|
||||||
M: Stefan Haberland <sth@linux.vnet.ibm.com>
|
M: Stefan Haberland <sth@linux.ibm.com>
|
||||||
M: Jan Hoeppner <hoeppner@linux.vnet.ibm.com>
|
M: Jan Hoeppner <hoeppner@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -12147,8 +12181,8 @@ S: Supported
|
||||||
F: drivers/iommu/s390-iommu.c
|
F: drivers/iommu/s390-iommu.c
|
||||||
|
|
||||||
S390 IUCV NETWORK LAYER
|
S390 IUCV NETWORK LAYER
|
||||||
M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
|
M: Julian Wiedmann <jwi@linux.ibm.com>
|
||||||
M: Ursula Braun <ubraun@linux.vnet.ibm.com>
|
M: Ursula Braun <ubraun@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -12157,15 +12191,15 @@ F: include/net/iucv/
|
||||||
F: net/iucv/
|
F: net/iucv/
|
||||||
|
|
||||||
S390 NETWORK DRIVERS
|
S390 NETWORK DRIVERS
|
||||||
M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
|
M: Julian Wiedmann <jwi@linux.ibm.com>
|
||||||
M: Ursula Braun <ubraun@linux.vnet.ibm.com>
|
M: Ursula Braun <ubraun@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/s390/net/
|
F: drivers/s390/net/
|
||||||
|
|
||||||
S390 PCI SUBSYSTEM
|
S390 PCI SUBSYSTEM
|
||||||
M: Sebastian Ott <sebott@linux.vnet.ibm.com>
|
M: Sebastian Ott <sebott@linux.ibm.com>
|
||||||
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
|
@ -12175,8 +12209,8 @@ F: drivers/pci/hotplug/s390_pci_hpc.c
|
||||||
|
|
||||||
S390 VFIO-CCW DRIVER
|
S390 VFIO-CCW DRIVER
|
||||||
M: Cornelia Huck <cohuck@redhat.com>
|
M: Cornelia Huck <cohuck@redhat.com>
|
||||||
M: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
|
M: Dong Jia Shi <bjsdjshi@linux.ibm.com>
|
||||||
M: Halil Pasic <pasic@linux.vnet.ibm.com>
|
M: Halil Pasic <pasic@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
L: kvm@vger.kernel.org
|
L: kvm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -12192,8 +12226,8 @@ S: Supported
|
||||||
F: drivers/s390/crypto/
|
F: drivers/s390/crypto/
|
||||||
|
|
||||||
S390 ZFCP DRIVER
|
S390 ZFCP DRIVER
|
||||||
M: Steffen Maier <maier@linux.vnet.ibm.com>
|
M: Steffen Maier <maier@linux.ibm.com>
|
||||||
M: Benjamin Block <bblock@linux.vnet.ibm.com>
|
M: Benjamin Block <bblock@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -12338,6 +12372,7 @@ M: Tomasz Figa <tomasz.figa@gmail.com>
|
||||||
M: Chanwoo Choi <cw00.choi@samsung.com>
|
M: Chanwoo Choi <cw00.choi@samsung.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
|
||||||
F: drivers/clk/samsung/
|
F: drivers/clk/samsung/
|
||||||
F: include/dt-bindings/clock/exynos*.h
|
F: include/dt-bindings/clock/exynos*.h
|
||||||
F: Documentation/devicetree/bindings/clock/exynos*.txt
|
F: Documentation/devicetree/bindings/clock/exynos*.txt
|
||||||
|
@ -12629,7 +12664,7 @@ S: Maintained
|
||||||
F: drivers/misc/sgi-xp/
|
F: drivers/misc/sgi-xp/
|
||||||
|
|
||||||
SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
|
SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
|
||||||
M: Ursula Braun <ubraun@linux.vnet.ibm.com>
|
M: Ursula Braun <ubraun@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -13974,6 +14009,13 @@ F: arch/arm/mach-davinci/
|
||||||
F: drivers/i2c/busses/i2c-davinci.c
|
F: drivers/i2c/busses/i2c-davinci.c
|
||||||
F: arch/arm/boot/dts/da850*
|
F: arch/arm/boot/dts/da850*
|
||||||
|
|
||||||
|
TI DAVINCI SERIES CLOCK DRIVER
|
||||||
|
M: David Lechner <david@lechnology.com>
|
||||||
|
R: Sekhar Nori <nsekhar@ti.com>
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/clock/ti/davinci/
|
||||||
|
F: drivers/clk/davinci/
|
||||||
|
|
||||||
TI DAVINCI SERIES GPIO DRIVER
|
TI DAVINCI SERIES GPIO DRIVER
|
||||||
M: Keerthy <j-keerthy@ti.com>
|
M: Keerthy <j-keerthy@ti.com>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
|
@ -14966,7 +15008,7 @@ F: include/uapi/linux/virtio_crypto.h
|
||||||
|
|
||||||
VIRTIO DRIVERS FOR S390
|
VIRTIO DRIVERS FOR S390
|
||||||
M: Cornelia Huck <cohuck@redhat.com>
|
M: Cornelia Huck <cohuck@redhat.com>
|
||||||
M: Halil Pasic <pasic@linux.vnet.ibm.com>
|
M: Halil Pasic <pasic@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
L: virtualization@lists.linux-foundation.org
|
L: virtualization@lists.linux-foundation.org
|
||||||
L: kvm@vger.kernel.org
|
L: kvm@vger.kernel.org
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -1,8 +1,8 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 16
|
PATCHLEVEL = 17
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION =
|
EXTRAVERSION = -rc1
|
||||||
NAME = Fearless Coyote
|
NAME = Fearless Coyote
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -846,6 +846,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
|
||||||
# Require designated initializers for all marked structures
|
# Require designated initializers for all marked structures
|
||||||
KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
|
KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
|
||||||
|
|
||||||
|
# change __FILE__ to the relative path from the srctree
|
||||||
|
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
|
||||||
|
|
||||||
# use the deterministic mode of AR if available
|
# use the deterministic mode of AR if available
|
||||||
KBUILD_ARFLAGS := $(call ar-option,D)
|
KBUILD_ARFLAGS := $(call ar-option,D)
|
||||||
|
|
||||||
|
@ -1615,6 +1618,8 @@ clean: $(clean-dirs)
|
||||||
-o -name '*.dwo' -o -name '*.lst' \
|
-o -name '*.dwo' -o -name '*.lst' \
|
||||||
-o -name '*.su' \
|
-o -name '*.su' \
|
||||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||||
|
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||||
|
-o -name '*.asn1.[ch]' \
|
||||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||||
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
||||||
-o -name .cache.mk \
|
-o -name .cache.mk \
|
||||||
|
|
|
@ -9,8 +9,6 @@ endif
|
||||||
obj-y += $(builtindtb-y).dtb.o
|
obj-y += $(builtindtb-y).dtb.o
|
||||||
dtb-y := $(builtindtb-y).dtb
|
dtb-y := $(builtindtb-y).dtb
|
||||||
|
|
||||||
.SECONDARY: $(obj)/$(builtindtb-y).dtb.S
|
|
||||||
|
|
||||||
# for CONFIG_OF_ALL_DTBS test
|
# for CONFIG_OF_ALL_DTBS test
|
||||||
dtstree := $(srctree)/$(src)
|
dtstree := $(srctree)/$(src)
|
||||||
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||||
|
|
|
@ -67,4 +67,4 @@ $(src)/sha512-core.S_shipped: $(src)/sha512-armv4.pl
|
||||||
$(call cmd,perl)
|
$(call cmd,perl)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S
|
targets += sha256-core.S sha512-core.S
|
||||||
|
|
|
@ -78,4 +78,4 @@ $(src)/sha512-core.S_shipped: $(src)/sha512-armv8.pl
|
||||||
$(call cmd,perlasm)
|
$(call cmd,perlasm)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S
|
targets += sha256-core.S sha512-core.S
|
||||||
|
|
|
@ -565,4 +565,140 @@ USER(\label, ic ivau, \tmp2) // invalidate I line PoU
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
/*
|
||||||
|
* frame_push - Push @regcount callee saved registers to the stack,
|
||||||
|
* starting at x19, as well as x29/x30, and set x29 to
|
||||||
|
* the new value of sp. Add @extra bytes of stack space
|
||||||
|
* for locals.
|
||||||
|
*/
|
||||||
|
.macro frame_push, regcount:req, extra
|
||||||
|
__frame st, \regcount, \extra
|
||||||
|
.endm
|
||||||
|
|
||||||
|
/*
|
||||||
|
* frame_pop - Pop the callee saved registers from the stack that were
|
||||||
|
* pushed in the most recent call to frame_push, as well
|
||||||
|
* as x29/x30 and any extra stack space that may have been
|
||||||
|
* allocated.
|
||||||
|
*/
|
||||||
|
.macro frame_pop
|
||||||
|
__frame ld
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro __frame_regs, reg1, reg2, op, num
|
||||||
|
.if .Lframe_regcount == \num
|
||||||
|
\op\()r \reg1, [sp, #(\num + 1) * 8]
|
||||||
|
.elseif .Lframe_regcount > \num
|
||||||
|
\op\()p \reg1, \reg2, [sp, #(\num + 1) * 8]
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro __frame, op, regcount, extra=0
|
||||||
|
.ifc \op, st
|
||||||
|
.if (\regcount) < 0 || (\regcount) > 10
|
||||||
|
.error "regcount should be in the range [0 ... 10]"
|
||||||
|
.endif
|
||||||
|
.if ((\extra) % 16) != 0
|
||||||
|
.error "extra should be a multiple of 16 bytes"
|
||||||
|
.endif
|
||||||
|
.ifdef .Lframe_regcount
|
||||||
|
.if .Lframe_regcount != -1
|
||||||
|
.error "frame_push/frame_pop may not be nested"
|
||||||
|
.endif
|
||||||
|
.endif
|
||||||
|
.set .Lframe_regcount, \regcount
|
||||||
|
.set .Lframe_extra, \extra
|
||||||
|
.set .Lframe_local_offset, ((\regcount + 3) / 2) * 16
|
||||||
|
stp x29, x30, [sp, #-.Lframe_local_offset - .Lframe_extra]!
|
||||||
|
mov x29, sp
|
||||||
|
.endif
|
||||||
|
|
||||||
|
__frame_regs x19, x20, \op, 1
|
||||||
|
__frame_regs x21, x22, \op, 3
|
||||||
|
__frame_regs x23, x24, \op, 5
|
||||||
|
__frame_regs x25, x26, \op, 7
|
||||||
|
__frame_regs x27, x28, \op, 9
|
||||||
|
|
||||||
|
.ifc \op, ld
|
||||||
|
.if .Lframe_regcount == -1
|
||||||
|
.error "frame_push/frame_pop may not be nested"
|
||||||
|
.endif
|
||||||
|
ldp x29, x30, [sp], #.Lframe_local_offset + .Lframe_extra
|
||||||
|
.set .Lframe_regcount, -1
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether to yield to another runnable task from kernel mode NEON code
|
||||||
|
* (which runs with preemption disabled).
|
||||||
|
*
|
||||||
|
* if_will_cond_yield_neon
|
||||||
|
* // pre-yield patchup code
|
||||||
|
* do_cond_yield_neon
|
||||||
|
* // post-yield patchup code
|
||||||
|
* endif_yield_neon <label>
|
||||||
|
*
|
||||||
|
* where <label> is optional, and marks the point where execution will resume
|
||||||
|
* after a yield has been performed. If omitted, execution resumes right after
|
||||||
|
* the endif_yield_neon invocation. Note that the entire sequence, including
|
||||||
|
* the provided patchup code, will be omitted from the image if CONFIG_PREEMPT
|
||||||
|
* is not defined.
|
||||||
|
*
|
||||||
|
* As a convenience, in the case where no patchup code is required, the above
|
||||||
|
* sequence may be abbreviated to
|
||||||
|
*
|
||||||
|
* cond_yield_neon <label>
|
||||||
|
*
|
||||||
|
* Note that the patchup code does not support assembler directives that change
|
||||||
|
* the output section, any use of such directives is undefined.
|
||||||
|
*
|
||||||
|
* The yield itself consists of the following:
|
||||||
|
* - Check whether the preempt count is exactly 1, in which case disabling
|
||||||
|
* preemption once will make the task preemptible. If this is not the case,
|
||||||
|
* yielding is pointless.
|
||||||
|
* - Check whether TIF_NEED_RESCHED is set, and if so, disable and re-enable
|
||||||
|
* kernel mode NEON (which will trigger a reschedule), and branch to the
|
||||||
|
* yield fixup code.
|
||||||
|
*
|
||||||
|
* This macro sequence may clobber all CPU state that is not guaranteed by the
|
||||||
|
* AAPCS to be preserved across an ordinary function call.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.macro cond_yield_neon, lbl
|
||||||
|
if_will_cond_yield_neon
|
||||||
|
do_cond_yield_neon
|
||||||
|
endif_yield_neon \lbl
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro if_will_cond_yield_neon
|
||||||
|
#ifdef CONFIG_PREEMPT
|
||||||
|
get_thread_info x0
|
||||||
|
ldr w1, [x0, #TSK_TI_PREEMPT]
|
||||||
|
ldr x0, [x0, #TSK_TI_FLAGS]
|
||||||
|
cmp w1, #PREEMPT_DISABLE_OFFSET
|
||||||
|
csel x0, x0, xzr, eq
|
||||||
|
tbnz x0, #TIF_NEED_RESCHED, .Lyield_\@ // needs rescheduling?
|
||||||
|
/* fall through to endif_yield_neon */
|
||||||
|
.subsection 1
|
||||||
|
.Lyield_\@ :
|
||||||
|
#else
|
||||||
|
.section ".discard.cond_yield_neon", "ax"
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro do_cond_yield_neon
|
||||||
|
bl kernel_neon_end
|
||||||
|
bl kernel_neon_begin
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro endif_yield_neon, lbl
|
||||||
|
.ifnb \lbl
|
||||||
|
b \lbl
|
||||||
|
.else
|
||||||
|
b .Lyield_out_\@
|
||||||
|
.endif
|
||||||
|
.previous
|
||||||
|
.Lyield_out_\@ :
|
||||||
|
.endm
|
||||||
|
|
||||||
#endif /* __ASM_ASSEMBLER_H */
|
#endif /* __ASM_ASSEMBLER_H */
|
||||||
|
|
|
@ -43,13 +43,12 @@
|
||||||
#define ARM64_SVE 22
|
#define ARM64_SVE 22
|
||||||
#define ARM64_UNMAP_KERNEL_AT_EL0 23
|
#define ARM64_UNMAP_KERNEL_AT_EL0 23
|
||||||
#define ARM64_HARDEN_BRANCH_PREDICTOR 24
|
#define ARM64_HARDEN_BRANCH_PREDICTOR 24
|
||||||
#define ARM64_HARDEN_BP_POST_GUEST_EXIT 25
|
#define ARM64_HAS_RAS_EXTN 25
|
||||||
#define ARM64_HAS_RAS_EXTN 26
|
#define ARM64_WORKAROUND_843419 26
|
||||||
#define ARM64_WORKAROUND_843419 27
|
#define ARM64_HAS_CACHE_IDC 27
|
||||||
#define ARM64_HAS_CACHE_IDC 28
|
#define ARM64_HAS_CACHE_DIC 28
|
||||||
#define ARM64_HAS_CACHE_DIC 29
|
#define ARM64_HW_DBM 29
|
||||||
#define ARM64_HW_DBM 30
|
|
||||||
|
|
||||||
#define ARM64_NCAPS 31
|
#define ARM64_NCAPS 30
|
||||||
|
|
||||||
#endif /* __ASM_CPUCAPS_H */
|
#endif /* __ASM_CPUCAPS_H */
|
||||||
|
|
|
@ -71,8 +71,6 @@ extern u32 __kvm_get_mdcr_el2(void);
|
||||||
|
|
||||||
extern u32 __init_stage2_translation(void);
|
extern u32 __init_stage2_translation(void);
|
||||||
|
|
||||||
extern void __qcom_hyp_sanitize_btac_predictors(void);
|
|
||||||
|
|
||||||
#else /* __ASSEMBLY__ */
|
#else /* __ASSEMBLY__ */
|
||||||
|
|
||||||
.macro get_host_ctxt reg, tmp
|
.macro get_host_ctxt reg, tmp
|
||||||
|
|
|
@ -55,8 +55,6 @@ arm64-reloc-test-y := reloc_test_core.o reloc_test_syms.o
|
||||||
arm64-obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
arm64-obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
arm64-obj-$(CONFIG_ARM_SDE_INTERFACE) += sdei.o
|
arm64-obj-$(CONFIG_ARM_SDE_INTERFACE) += sdei.o
|
||||||
|
|
||||||
arm64-obj-$(CONFIG_KVM_INDIRECT_VECTORS)+= bpi.o
|
|
||||||
|
|
||||||
obj-y += $(arm64-obj-y) vdso/ probes/
|
obj-y += $(arm64-obj-y) vdso/ probes/
|
||||||
obj-m += $(arm64-obj-m)
|
obj-m += $(arm64-obj-m)
|
||||||
head-y := head.o
|
head-y := head.o
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/kvm_host.h>
|
#include <linux/kvm_host.h>
|
||||||
|
#include <linux/preempt.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <asm/cpufeature.h>
|
#include <asm/cpufeature.h>
|
||||||
#include <asm/fixmap.h>
|
#include <asm/fixmap.h>
|
||||||
|
@ -93,6 +94,8 @@ int main(void)
|
||||||
DEFINE(DMA_TO_DEVICE, DMA_TO_DEVICE);
|
DEFINE(DMA_TO_DEVICE, DMA_TO_DEVICE);
|
||||||
DEFINE(DMA_FROM_DEVICE, DMA_FROM_DEVICE);
|
DEFINE(DMA_FROM_DEVICE, DMA_FROM_DEVICE);
|
||||||
BLANK();
|
BLANK();
|
||||||
|
DEFINE(PREEMPT_DISABLE_OFFSET, PREEMPT_DISABLE_OFFSET);
|
||||||
|
BLANK();
|
||||||
DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
|
DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
|
||||||
DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
|
DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
|
||||||
DEFINE(CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_RAW);
|
DEFINE(CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_RAW);
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
/*
|
|
||||||
* Contains CPU specific branch predictor invalidation sequences
|
|
||||||
*
|
|
||||||
* Copyright (C) 2018 ARM Ltd.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
|
||||||
* published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/linkage.h>
|
|
||||||
#include <linux/arm-smccc.h>
|
|
||||||
|
|
||||||
#include <asm/alternative.h>
|
|
||||||
#include <asm/mmu.h>
|
|
||||||
|
|
||||||
.macro hyp_ventry
|
|
||||||
.align 7
|
|
||||||
1: .rept 27
|
|
||||||
nop
|
|
||||||
.endr
|
|
||||||
/*
|
|
||||||
* The default sequence is to directly branch to the KVM vectors,
|
|
||||||
* using the computed offset. This applies for VHE as well as
|
|
||||||
* !ARM64_HARDEN_EL2_VECTORS.
|
|
||||||
*
|
|
||||||
* For ARM64_HARDEN_EL2_VECTORS configurations, this gets replaced
|
|
||||||
* with:
|
|
||||||
*
|
|
||||||
* stp x0, x1, [sp, #-16]!
|
|
||||||
* movz x0, #(addr & 0xffff)
|
|
||||||
* movk x0, #((addr >> 16) & 0xffff), lsl #16
|
|
||||||
* movk x0, #((addr >> 32) & 0xffff), lsl #32
|
|
||||||
* br x0
|
|
||||||
*
|
|
||||||
* Where addr = kern_hyp_va(__kvm_hyp_vector) + vector-offset + 4.
|
|
||||||
* See kvm_patch_vector_branch for details.
|
|
||||||
*/
|
|
||||||
alternative_cb kvm_patch_vector_branch
|
|
||||||
b __kvm_hyp_vector + (1b - 0b)
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
alternative_cb_end
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro generate_vectors
|
|
||||||
0:
|
|
||||||
.rept 16
|
|
||||||
hyp_ventry
|
|
||||||
.endr
|
|
||||||
.org 0b + SZ_2K // Safety measure
|
|
||||||
.endm
|
|
||||||
|
|
||||||
|
|
||||||
.text
|
|
||||||
.pushsection .hyp.text, "ax"
|
|
||||||
|
|
||||||
.align 11
|
|
||||||
ENTRY(__bp_harden_hyp_vecs_start)
|
|
||||||
.rept BP_HARDEN_EL2_SLOTS
|
|
||||||
generate_vectors
|
|
||||||
.endr
|
|
||||||
ENTRY(__bp_harden_hyp_vecs_end)
|
|
||||||
|
|
||||||
.popsection
|
|
||||||
|
|
||||||
ENTRY(__qcom_hyp_sanitize_link_stack_start)
|
|
||||||
stp x29, x30, [sp, #-16]!
|
|
||||||
.rept 16
|
|
||||||
bl . + 4
|
|
||||||
.endr
|
|
||||||
ldp x29, x30, [sp], #16
|
|
||||||
ENTRY(__qcom_hyp_sanitize_link_stack_end)
|
|
||||||
|
|
||||||
.macro smccc_workaround_1 inst
|
|
||||||
sub sp, sp, #(8 * 4)
|
|
||||||
stp x2, x3, [sp, #(8 * 0)]
|
|
||||||
stp x0, x1, [sp, #(8 * 2)]
|
|
||||||
mov w0, #ARM_SMCCC_ARCH_WORKAROUND_1
|
|
||||||
\inst #0
|
|
||||||
ldp x2, x3, [sp, #(8 * 0)]
|
|
||||||
ldp x0, x1, [sp, #(8 * 2)]
|
|
||||||
add sp, sp, #(8 * 4)
|
|
||||||
.endm
|
|
||||||
|
|
||||||
ENTRY(__smccc_workaround_1_smc_start)
|
|
||||||
smccc_workaround_1 smc
|
|
||||||
ENTRY(__smccc_workaround_1_smc_end)
|
|
||||||
|
|
||||||
ENTRY(__smccc_workaround_1_hvc_start)
|
|
||||||
smccc_workaround_1 hvc
|
|
||||||
ENTRY(__smccc_workaround_1_hvc_end)
|
|
|
@ -86,13 +86,9 @@ atomic_t arm64_el2_vector_last_slot = ATOMIC_INIT(-1);
|
||||||
|
|
||||||
DEFINE_PER_CPU_READ_MOSTLY(struct bp_hardening_data, bp_hardening_data);
|
DEFINE_PER_CPU_READ_MOSTLY(struct bp_hardening_data, bp_hardening_data);
|
||||||
|
|
||||||
#ifdef CONFIG_KVM
|
#ifdef CONFIG_KVM_INDIRECT_VECTORS
|
||||||
extern char __qcom_hyp_sanitize_link_stack_start[];
|
|
||||||
extern char __qcom_hyp_sanitize_link_stack_end[];
|
|
||||||
extern char __smccc_workaround_1_smc_start[];
|
extern char __smccc_workaround_1_smc_start[];
|
||||||
extern char __smccc_workaround_1_smc_end[];
|
extern char __smccc_workaround_1_smc_end[];
|
||||||
extern char __smccc_workaround_1_hvc_start[];
|
|
||||||
extern char __smccc_workaround_1_hvc_end[];
|
|
||||||
|
|
||||||
static void __copy_hyp_vect_bpi(int slot, const char *hyp_vecs_start,
|
static void __copy_hyp_vect_bpi(int slot, const char *hyp_vecs_start,
|
||||||
const char *hyp_vecs_end)
|
const char *hyp_vecs_end)
|
||||||
|
@ -132,12 +128,8 @@ static void __install_bp_hardening_cb(bp_hardening_cb_t fn,
|
||||||
spin_unlock(&bp_lock);
|
spin_unlock(&bp_lock);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define __qcom_hyp_sanitize_link_stack_start NULL
|
|
||||||
#define __qcom_hyp_sanitize_link_stack_end NULL
|
|
||||||
#define __smccc_workaround_1_smc_start NULL
|
#define __smccc_workaround_1_smc_start NULL
|
||||||
#define __smccc_workaround_1_smc_end NULL
|
#define __smccc_workaround_1_smc_end NULL
|
||||||
#define __smccc_workaround_1_hvc_start NULL
|
|
||||||
#define __smccc_workaround_1_hvc_end NULL
|
|
||||||
|
|
||||||
static void __install_bp_hardening_cb(bp_hardening_cb_t fn,
|
static void __install_bp_hardening_cb(bp_hardening_cb_t fn,
|
||||||
const char *hyp_vecs_start,
|
const char *hyp_vecs_start,
|
||||||
|
@ -145,7 +137,7 @@ static void __install_bp_hardening_cb(bp_hardening_cb_t fn,
|
||||||
{
|
{
|
||||||
__this_cpu_write(bp_hardening_data.fn, fn);
|
__this_cpu_write(bp_hardening_data.fn, fn);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_KVM */
|
#endif /* CONFIG_KVM_INDIRECT_VECTORS */
|
||||||
|
|
||||||
static void install_bp_hardening_cb(const struct arm64_cpu_capabilities *entry,
|
static void install_bp_hardening_cb(const struct arm64_cpu_capabilities *entry,
|
||||||
bp_hardening_cb_t fn,
|
bp_hardening_cb_t fn,
|
||||||
|
@ -178,12 +170,25 @@ static void call_hvc_arch_workaround_1(void)
|
||||||
arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_WORKAROUND_1, NULL);
|
arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_WORKAROUND_1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void qcom_link_stack_sanitization(void)
|
||||||
|
{
|
||||||
|
u64 tmp;
|
||||||
|
|
||||||
|
asm volatile("mov %0, x30 \n"
|
||||||
|
".rept 16 \n"
|
||||||
|
"bl . + 4 \n"
|
||||||
|
".endr \n"
|
||||||
|
"mov x30, %0 \n"
|
||||||
|
: "=&r" (tmp));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
enable_smccc_arch_workaround_1(const struct arm64_cpu_capabilities *entry)
|
enable_smccc_arch_workaround_1(const struct arm64_cpu_capabilities *entry)
|
||||||
{
|
{
|
||||||
bp_hardening_cb_t cb;
|
bp_hardening_cb_t cb;
|
||||||
void *smccc_start, *smccc_end;
|
void *smccc_start, *smccc_end;
|
||||||
struct arm_smccc_res res;
|
struct arm_smccc_res res;
|
||||||
|
u32 midr = read_cpuid_id();
|
||||||
|
|
||||||
if (!entry->matches(entry, SCOPE_LOCAL_CPU))
|
if (!entry->matches(entry, SCOPE_LOCAL_CPU))
|
||||||
return;
|
return;
|
||||||
|
@ -198,8 +203,9 @@ enable_smccc_arch_workaround_1(const struct arm64_cpu_capabilities *entry)
|
||||||
if ((int)res.a0 < 0)
|
if ((int)res.a0 < 0)
|
||||||
return;
|
return;
|
||||||
cb = call_hvc_arch_workaround_1;
|
cb = call_hvc_arch_workaround_1;
|
||||||
smccc_start = __smccc_workaround_1_hvc_start;
|
/* This is a guest, no need to patch KVM vectors */
|
||||||
smccc_end = __smccc_workaround_1_hvc_end;
|
smccc_start = NULL;
|
||||||
|
smccc_end = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PSCI_CONDUIT_SMC:
|
case PSCI_CONDUIT_SMC:
|
||||||
|
@ -216,30 +222,14 @@ enable_smccc_arch_workaround_1(const struct arm64_cpu_capabilities *entry)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (((midr & MIDR_CPU_MODEL_MASK) == MIDR_QCOM_FALKOR) ||
|
||||||
|
((midr & MIDR_CPU_MODEL_MASK) == MIDR_QCOM_FALKOR_V1))
|
||||||
|
cb = qcom_link_stack_sanitization;
|
||||||
|
|
||||||
install_bp_hardening_cb(entry, cb, smccc_start, smccc_end);
|
install_bp_hardening_cb(entry, cb, smccc_start, smccc_end);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qcom_link_stack_sanitization(void)
|
|
||||||
{
|
|
||||||
u64 tmp;
|
|
||||||
|
|
||||||
asm volatile("mov %0, x30 \n"
|
|
||||||
".rept 16 \n"
|
|
||||||
"bl . + 4 \n"
|
|
||||||
".endr \n"
|
|
||||||
"mov x30, %0 \n"
|
|
||||||
: "=&r" (tmp));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
qcom_enable_link_stack_sanitization(const struct arm64_cpu_capabilities *entry)
|
|
||||||
{
|
|
||||||
install_bp_hardening_cb(entry, qcom_link_stack_sanitization,
|
|
||||||
__qcom_hyp_sanitize_link_stack_start,
|
|
||||||
__qcom_hyp_sanitize_link_stack_end);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_HARDEN_BRANCH_PREDICTOR */
|
#endif /* CONFIG_HARDEN_BRANCH_PREDICTOR */
|
||||||
|
|
||||||
#define CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max) \
|
#define CAP_MIDR_RANGE(model, v_min, r_min, v_max, r_max) \
|
||||||
|
@ -324,33 +314,23 @@ static const struct midr_range arm64_bp_harden_smccc_cpus[] = {
|
||||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A75),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A75),
|
||||||
MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
|
MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
|
||||||
MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
|
MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
|
||||||
{},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct midr_range qcom_bp_harden_cpus[] = {
|
|
||||||
MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR_V1),
|
MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR_V1),
|
||||||
MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR),
|
MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR),
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct arm64_cpu_capabilities arm64_bp_harden_list[] = {
|
#endif
|
||||||
{
|
|
||||||
CAP_MIDR_RANGE_LIST(arm64_bp_harden_smccc_cpus),
|
#ifdef CONFIG_HARDEN_EL2_VECTORS
|
||||||
.cpu_enable = enable_smccc_arch_workaround_1,
|
|
||||||
},
|
static const struct midr_range arm64_harden_el2_vectors[] = {
|
||||||
{
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
|
||||||
CAP_MIDR_RANGE_LIST(qcom_bp_harden_cpus),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
|
||||||
.cpu_enable = qcom_enable_link_stack_sanitization,
|
|
||||||
},
|
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ERRATA_MIDR_ALL_VERSIONS
|
|
||||||
#define ERRATA_MIDR_ALL_VERSIONS(x) MIDR_ALL_VERSIONS(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const struct arm64_cpu_capabilities arm64_errata[] = {
|
const struct arm64_cpu_capabilities arm64_errata[] = {
|
||||||
#if defined(CONFIG_ARM64_ERRATUM_826319) || \
|
#if defined(CONFIG_ARM64_ERRATUM_826319) || \
|
||||||
defined(CONFIG_ARM64_ERRATUM_827319) || \
|
defined(CONFIG_ARM64_ERRATUM_827319) || \
|
||||||
|
@ -495,25 +475,16 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
|
||||||
{
|
{
|
||||||
.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
|
.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
|
||||||
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
|
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
|
||||||
.matches = multi_entry_cap_matches,
|
.cpu_enable = enable_smccc_arch_workaround_1,
|
||||||
.cpu_enable = multi_entry_cap_cpu_enable,
|
ERRATA_MIDR_RANGE_LIST(arm64_bp_harden_smccc_cpus),
|
||||||
.match_list = arm64_bp_harden_list,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.capability = ARM64_HARDEN_BP_POST_GUEST_EXIT,
|
|
||||||
ERRATA_MIDR_RANGE_LIST(qcom_bp_harden_cpus),
|
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_HARDEN_EL2_VECTORS
|
#ifdef CONFIG_HARDEN_EL2_VECTORS
|
||||||
{
|
{
|
||||||
.desc = "Cortex-A57 EL2 vector hardening",
|
.desc = "EL2 vector hardening",
|
||||||
.capability = ARM64_HARDEN_EL2_VECTORS,
|
.capability = ARM64_HARDEN_EL2_VECTORS,
|
||||||
ERRATA_MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
|
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
|
||||||
},
|
ERRATA_MIDR_RANGE_LIST(arm64_harden_el2_vectors),
|
||||||
{
|
|
||||||
.desc = "Cortex-A72 EL2 vector hardening",
|
|
||||||
.capability = ARM64_HARDEN_EL2_VECTORS,
|
|
||||||
ERRATA_MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
|
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|
|
@ -209,15 +209,3 @@ alternative_endif
|
||||||
|
|
||||||
eret
|
eret
|
||||||
ENDPROC(__fpsimd_guest_restore)
|
ENDPROC(__fpsimd_guest_restore)
|
||||||
|
|
||||||
ENTRY(__qcom_hyp_sanitize_btac_predictors)
|
|
||||||
/**
|
|
||||||
* Call SMC64 with Silicon provider serviceID 23<<8 (0xc2001700)
|
|
||||||
* 0xC2000000-0xC200FFFF: assigned to SiP Service Calls
|
|
||||||
* b15-b0: contains SiP functionID
|
|
||||||
*/
|
|
||||||
movz x0, #0x1700
|
|
||||||
movk x0, #0xc200, lsl #16
|
|
||||||
smc #0
|
|
||||||
ret
|
|
||||||
ENDPROC(__qcom_hyp_sanitize_btac_predictors)
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 - ARM Ltd
|
* Copyright (C) 2015-2018 - ARM Ltd
|
||||||
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -24,6 +24,7 @@
|
||||||
#include <asm/kvm_arm.h>
|
#include <asm/kvm_arm.h>
|
||||||
#include <asm/kvm_asm.h>
|
#include <asm/kvm_asm.h>
|
||||||
#include <asm/kvm_mmu.h>
|
#include <asm/kvm_mmu.h>
|
||||||
|
#include <asm/mmu.h>
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.pushsection .hyp.text, "ax"
|
.pushsection .hyp.text, "ax"
|
||||||
|
@ -237,3 +238,64 @@ ENTRY(__kvm_hyp_vector)
|
||||||
invalid_vect el1_fiq_invalid // FIQ 32-bit EL1
|
invalid_vect el1_fiq_invalid // FIQ 32-bit EL1
|
||||||
valid_vect el1_error // Error 32-bit EL1
|
valid_vect el1_error // Error 32-bit EL1
|
||||||
ENDPROC(__kvm_hyp_vector)
|
ENDPROC(__kvm_hyp_vector)
|
||||||
|
|
||||||
|
#ifdef CONFIG_KVM_INDIRECT_VECTORS
|
||||||
|
.macro hyp_ventry
|
||||||
|
.align 7
|
||||||
|
1: .rept 27
|
||||||
|
nop
|
||||||
|
.endr
|
||||||
|
/*
|
||||||
|
* The default sequence is to directly branch to the KVM vectors,
|
||||||
|
* using the computed offset. This applies for VHE as well as
|
||||||
|
* !ARM64_HARDEN_EL2_VECTORS.
|
||||||
|
*
|
||||||
|
* For ARM64_HARDEN_EL2_VECTORS configurations, this gets replaced
|
||||||
|
* with:
|
||||||
|
*
|
||||||
|
* stp x0, x1, [sp, #-16]!
|
||||||
|
* movz x0, #(addr & 0xffff)
|
||||||
|
* movk x0, #((addr >> 16) & 0xffff), lsl #16
|
||||||
|
* movk x0, #((addr >> 32) & 0xffff), lsl #32
|
||||||
|
* br x0
|
||||||
|
*
|
||||||
|
* Where addr = kern_hyp_va(__kvm_hyp_vector) + vector-offset + 4.
|
||||||
|
* See kvm_patch_vector_branch for details.
|
||||||
|
*/
|
||||||
|
alternative_cb kvm_patch_vector_branch
|
||||||
|
b __kvm_hyp_vector + (1b - 0b)
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
alternative_cb_end
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro generate_vectors
|
||||||
|
0:
|
||||||
|
.rept 16
|
||||||
|
hyp_ventry
|
||||||
|
.endr
|
||||||
|
.org 0b + SZ_2K // Safety measure
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.align 11
|
||||||
|
ENTRY(__bp_harden_hyp_vecs_start)
|
||||||
|
.rept BP_HARDEN_EL2_SLOTS
|
||||||
|
generate_vectors
|
||||||
|
.endr
|
||||||
|
ENTRY(__bp_harden_hyp_vecs_end)
|
||||||
|
|
||||||
|
.popsection
|
||||||
|
|
||||||
|
ENTRY(__smccc_workaround_1_smc_start)
|
||||||
|
sub sp, sp, #(8 * 4)
|
||||||
|
stp x2, x3, [sp, #(8 * 0)]
|
||||||
|
stp x0, x1, [sp, #(8 * 2)]
|
||||||
|
mov w0, #ARM_SMCCC_ARCH_WORKAROUND_1
|
||||||
|
smc #0
|
||||||
|
ldp x2, x3, [sp, #(8 * 0)]
|
||||||
|
ldp x0, x1, [sp, #(8 * 2)]
|
||||||
|
add sp, sp, #(8 * 4)
|
||||||
|
ENTRY(__smccc_workaround_1_smc_end)
|
||||||
|
#endif
|
||||||
|
|
|
@ -472,16 +472,6 @@ int __hyp_text __kvm_vcpu_run_nvhe(struct kvm_vcpu *vcpu)
|
||||||
/* And we're baaack! */
|
/* And we're baaack! */
|
||||||
} while (fixup_guest_exit(vcpu, &exit_code));
|
} while (fixup_guest_exit(vcpu, &exit_code));
|
||||||
|
|
||||||
if (cpus_have_const_cap(ARM64_HARDEN_BP_POST_GUEST_EXIT)) {
|
|
||||||
u32 midr = read_cpuid_id();
|
|
||||||
|
|
||||||
/* Apply BTAC predictors mitigation to all Falkor chips */
|
|
||||||
if (((midr & MIDR_CPU_MODEL_MASK) == MIDR_QCOM_FALKOR) ||
|
|
||||||
((midr & MIDR_CPU_MODEL_MASK) == MIDR_QCOM_FALKOR_V1)) {
|
|
||||||
__qcom_hyp_sanitize_btac_predictors();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fp_enabled = __fpsimd_enabled_nvhe();
|
fp_enabled = __fpsimd_enabled_nvhe();
|
||||||
|
|
||||||
__sysreg_save_state_nvhe(guest_ctxt);
|
__sysreg_save_state_nvhe(guest_ctxt);
|
||||||
|
|
|
@ -51,6 +51,8 @@
|
||||||
ranges = <0x02000000 0 0x40000000
|
ranges = <0x02000000 0 0x40000000
|
||||||
0x40000000 0 0x40000000>;
|
0x40000000 0 0x40000000>;
|
||||||
|
|
||||||
|
bus-range = <0x00 0xff>;
|
||||||
|
|
||||||
interrupt-map-mask = <0 0 0 7>;
|
interrupt-map-mask = <0 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &pci0_intc 1>,
|
interrupt-map = <0 0 0 1 &pci0_intc 1>,
|
||||||
<0 0 0 2 &pci0_intc 2>,
|
<0 0 0 2 &pci0_intc 2>,
|
||||||
|
@ -79,6 +81,8 @@
|
||||||
ranges = <0x02000000 0 0x20000000
|
ranges = <0x02000000 0 0x20000000
|
||||||
0x20000000 0 0x20000000>;
|
0x20000000 0 0x20000000>;
|
||||||
|
|
||||||
|
bus-range = <0x00 0xff>;
|
||||||
|
|
||||||
interrupt-map-mask = <0 0 0 7>;
|
interrupt-map-mask = <0 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &pci1_intc 1>,
|
interrupt-map = <0 0 0 1 &pci1_intc 1>,
|
||||||
<0 0 0 2 &pci1_intc 2>,
|
<0 0 0 2 &pci1_intc 2>,
|
||||||
|
@ -107,6 +111,8 @@
|
||||||
ranges = <0x02000000 0 0x16000000
|
ranges = <0x02000000 0 0x16000000
|
||||||
0x16000000 0 0x100000>;
|
0x16000000 0 0x100000>;
|
||||||
|
|
||||||
|
bus-range = <0x00 0xff>;
|
||||||
|
|
||||||
interrupt-map-mask = <0 0 0 7>;
|
interrupt-map-mask = <0 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &pci2_intc 1>,
|
interrupt-map = <0 0 0 1 &pci2_intc 1>,
|
||||||
<0 0 0 2 &pci2_intc 2>,
|
<0 0 0 2 &pci2_intc 2>,
|
||||||
|
|
|
@ -307,7 +307,7 @@ static inline void iounmap(const volatile void __iomem *addr)
|
||||||
#if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_LOONGSON3_ENHANCEMENT)
|
#if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_LOONGSON3_ENHANCEMENT)
|
||||||
#define war_io_reorder_wmb() wmb()
|
#define war_io_reorder_wmb() wmb()
|
||||||
#else
|
#else
|
||||||
#define war_io_reorder_wmb() do { } while (0)
|
#define war_io_reorder_wmb() barrier()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq) \
|
#define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq) \
|
||||||
|
@ -377,6 +377,8 @@ static inline type pfx##read##bwlq(const volatile void __iomem *mem) \
|
||||||
BUG(); \
|
BUG(); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
/* prevent prefetching of coherent DMA data prematurely */ \
|
||||||
|
rmb(); \
|
||||||
return pfx##ioswab##bwlq(__mem, __val); \
|
return pfx##ioswab##bwlq(__mem, __val); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -654,6 +654,13 @@ __clear_user(void __user *addr, __kernel_size_t size)
|
||||||
{
|
{
|
||||||
__kernel_size_t res;
|
__kernel_size_t res;
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_MICROMIPS
|
||||||
|
/* micromips memset / bzero also clobbers t7 & t8 */
|
||||||
|
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$15", "$24", "$31"
|
||||||
|
#else
|
||||||
|
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"
|
||||||
|
#endif /* CONFIG_CPU_MICROMIPS */
|
||||||
|
|
||||||
if (eva_kernel_access()) {
|
if (eva_kernel_access()) {
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
"move\t$4, %1\n\t"
|
"move\t$4, %1\n\t"
|
||||||
|
@ -663,7 +670,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
|
||||||
"move\t%0, $6"
|
"move\t%0, $6"
|
||||||
: "=r" (res)
|
: "=r" (res)
|
||||||
: "r" (addr), "r" (size)
|
: "r" (addr), "r" (size)
|
||||||
: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
|
: bzero_clobbers);
|
||||||
} else {
|
} else {
|
||||||
might_fault();
|
might_fault();
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
|
@ -674,7 +681,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
|
||||||
"move\t%0, $6"
|
"move\t%0, $6"
|
||||||
: "=r" (res)
|
: "=r" (res)
|
||||||
: "r" (addr), "r" (size)
|
: "r" (addr), "r" (size)
|
||||||
: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
|
: bzero_clobbers);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -219,7 +219,7 @@
|
||||||
1: PTR_ADDIU a0, 1 /* fill bytewise */
|
1: PTR_ADDIU a0, 1 /* fill bytewise */
|
||||||
R10KCBARRIER(0(ra))
|
R10KCBARRIER(0(ra))
|
||||||
bne t1, a0, 1b
|
bne t1, a0, 1b
|
||||||
sb a1, -1(a0)
|
EX(sb, a1, -1(a0), .Lsmall_fixup\@)
|
||||||
|
|
||||||
2: jr ra /* done */
|
2: jr ra /* done */
|
||||||
move a2, zero
|
move a2, zero
|
||||||
|
@ -252,13 +252,18 @@
|
||||||
PTR_L t0, TI_TASK($28)
|
PTR_L t0, TI_TASK($28)
|
||||||
andi a2, STORMASK
|
andi a2, STORMASK
|
||||||
LONG_L t0, THREAD_BUADDR(t0)
|
LONG_L t0, THREAD_BUADDR(t0)
|
||||||
LONG_ADDU a2, t1
|
LONG_ADDU a2, a0
|
||||||
jr ra
|
jr ra
|
||||||
LONG_SUBU a2, t0
|
LONG_SUBU a2, t0
|
||||||
|
|
||||||
.Llast_fixup\@:
|
.Llast_fixup\@:
|
||||||
jr ra
|
jr ra
|
||||||
andi v1, a2, STORMASK
|
nop
|
||||||
|
|
||||||
|
.Lsmall_fixup\@:
|
||||||
|
PTR_SUBU a2, t1, a0
|
||||||
|
jr ra
|
||||||
|
PTR_ADDIU a2, 1
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,8 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end,
|
||||||
/*
|
/*
|
||||||
* Like get_user_pages_fast() except its IRQ-safe in that it won't fall
|
* Like get_user_pages_fast() except its IRQ-safe in that it won't fall
|
||||||
* back to the regular GUP.
|
* back to the regular GUP.
|
||||||
|
* Note a difference with get_user_pages_fast: this always returns the
|
||||||
|
* number of pages pinned, 0 if no pages were pinned.
|
||||||
*/
|
*/
|
||||||
int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||||
struct page **pages)
|
struct page **pages)
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __ARCH_HAVE_MMU
|
|
||||||
|
|
||||||
#define sys_mmap2 sys_mmap_pgoff
|
#define sys_mmap2 sys_mmap_pgoff
|
||||||
|
|
||||||
#define __ARCH_WANT_RENAMEAT
|
#define __ARCH_WANT_RENAMEAT
|
||||||
|
|
|
@ -338,6 +338,7 @@ source "mm/Kconfig"
|
||||||
config COMPAT
|
config COMPAT
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on 64BIT
|
depends on 64BIT
|
||||||
|
select COMPAT_BINFMT_ELF if BINFMT_ELF
|
||||||
|
|
||||||
config SYSVIPC_COMPAT
|
config SYSVIPC_COMPAT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
|
@ -192,6 +192,12 @@ struct compat_shmid64_ds {
|
||||||
compat_ulong_t __unused6;
|
compat_ulong_t __unused6;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The type of struct elf_prstatus.pr_reg in compatible core dumps.
|
||||||
|
*/
|
||||||
|
#define COMPAT_ELF_NGREG 80
|
||||||
|
typedef compat_ulong_t compat_elf_gregset_t[COMPAT_ELF_NGREG];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A pointer passed in from user mode. This should not
|
* A pointer passed in from user mode. This should not
|
||||||
* be used for syscall parameters, just declare them
|
* be used for syscall parameters, just declare them
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* ELF register definitions..
|
* ELF register definitions..
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
#define EM_PARISC 15
|
#define EM_PARISC 15
|
||||||
|
|
||||||
|
@ -169,16 +169,12 @@ typedef struct elf64_fdesc {
|
||||||
__u64 gp;
|
__u64 gp;
|
||||||
} Elf64_Fdesc;
|
} Elf64_Fdesc;
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
#define Elf_Fdesc Elf64_Fdesc
|
#define Elf_Fdesc Elf64_Fdesc
|
||||||
#else
|
#else
|
||||||
#define Elf_Fdesc Elf32_Fdesc
|
#define Elf_Fdesc Elf32_Fdesc
|
||||||
#endif /*CONFIG_64BIT*/
|
#endif /*CONFIG_64BIT*/
|
||||||
|
|
||||||
#endif /*__KERNEL__*/
|
|
||||||
|
|
||||||
/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */
|
/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */
|
||||||
|
|
||||||
#define PT_HP_TLS (PT_LOOS + 0x0)
|
#define PT_HP_TLS (PT_LOOS + 0x0)
|
||||||
|
@ -212,45 +208,45 @@ typedef struct elf64_fdesc {
|
||||||
#define PF_HP_LAZYSWAP 0x04000000
|
#define PF_HP_LAZYSWAP 0x04000000
|
||||||
#define PF_HP_SBP 0x08000000
|
#define PF_HP_SBP 0x08000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This yields a string that ld.so will use to load implementation
|
||||||
|
* specific libraries for optimization. This is more specific in
|
||||||
|
* intent than poking at uname or /proc/cpuinfo.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ELF_PLATFORM ("PARISC")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following definitions are those for 32-bit ELF binaries on a 32-bit
|
* The following definitions are those for 32-bit ELF binaries on a 32-bit
|
||||||
* kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries
|
* kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries
|
||||||
* on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these
|
* on a 64-bit kernel, fs/compat_binfmt_elf.c defines ELF_CLASS and then
|
||||||
* macros appropriately and then #includes binfmt_elf.c, which then includes
|
* #includes binfmt_elf.c, which then includes this file.
|
||||||
* this file.
|
|
||||||
*/
|
*/
|
||||||
#ifndef ELF_CLASS
|
#ifndef ELF_CLASS
|
||||||
|
|
||||||
/*
|
|
||||||
* This is used to ensure we don't load something for the wrong architecture.
|
|
||||||
*
|
|
||||||
* Note that this header file is used by default in fs/binfmt_elf.c. So
|
|
||||||
* the following macros are for the default case. However, for the 64
|
|
||||||
* bit kernel we also support 32 bit parisc binaries. To do that
|
|
||||||
* arch/parisc/kernel/binfmt_elf32.c defines its own set of these
|
|
||||||
* macros, and then it includes fs/binfmt_elf.c to provide an alternate
|
|
||||||
* elf binary handler for 32 bit binaries (on the 64 bit kernel).
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
#define ELF_CLASS ELFCLASS64
|
#define ELF_CLASS ELFCLASS64
|
||||||
#else
|
#else
|
||||||
#define ELF_CLASS ELFCLASS32
|
#define ELF_CLASS ELFCLASS32
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef unsigned long elf_greg_t;
|
typedef unsigned long elf_greg_t;
|
||||||
|
|
||||||
/*
|
|
||||||
* This yields a string that ld.so will use to load implementation
|
|
||||||
* specific libraries for optimization. This is more specific in
|
|
||||||
* intent than poking at uname or /proc/cpuinfo.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ELF_PLATFORM ("PARISC\0")
|
|
||||||
|
|
||||||
#define SET_PERSONALITY(ex) \
|
#define SET_PERSONALITY(ex) \
|
||||||
|
({ \
|
||||||
set_personality((current->personality & ~PER_MASK) | PER_LINUX); \
|
set_personality((current->personality & ~PER_MASK) | PER_LINUX); \
|
||||||
current->thread.map_base = DEFAULT_MAP_BASE; \
|
current->thread.map_base = DEFAULT_MAP_BASE; \
|
||||||
current->thread.task_size = DEFAULT_TASK_SIZE \
|
current->thread.task_size = DEFAULT_TASK_SIZE; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#endif /* ! ELF_CLASS */
|
||||||
|
|
||||||
|
#define COMPAT_SET_PERSONALITY(ex) \
|
||||||
|
({ \
|
||||||
|
set_thread_flag(TIF_32BIT); \
|
||||||
|
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
||||||
|
current->thread.task_size = DEFAULT_TASK_SIZE32; \
|
||||||
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill in general registers in a core dump. This saves pretty
|
* Fill in general registers in a core dump. This saves pretty
|
||||||
|
@ -277,10 +273,12 @@ typedef unsigned long elf_greg_t;
|
||||||
|
|
||||||
#define ELF_CORE_COPY_REGS(dst, pt) \
|
#define ELF_CORE_COPY_REGS(dst, pt) \
|
||||||
memset(dst, 0, sizeof(dst)); /* don't leak any "random" bits */ \
|
memset(dst, 0, sizeof(dst)); /* don't leak any "random" bits */ \
|
||||||
memcpy(dst + 0, pt->gr, 32 * sizeof(elf_greg_t)); \
|
{ int i; \
|
||||||
memcpy(dst + 32, pt->sr, 8 * sizeof(elf_greg_t)); \
|
for (i = 0; i < 32; i++) dst[i] = pt->gr[i]; \
|
||||||
memcpy(dst + 40, pt->iaoq, 2 * sizeof(elf_greg_t)); \
|
for (i = 0; i < 8; i++) dst[32 + i] = pt->sr[i]; \
|
||||||
memcpy(dst + 42, pt->iasq, 2 * sizeof(elf_greg_t)); \
|
} \
|
||||||
|
dst[40] = pt->iaoq[0]; dst[41] = pt->iaoq[1]; \
|
||||||
|
dst[42] = pt->iasq[0]; dst[43] = pt->iasq[1]; \
|
||||||
dst[44] = pt->sar; dst[45] = pt->iir; \
|
dst[44] = pt->sar; dst[45] = pt->iir; \
|
||||||
dst[46] = pt->isr; dst[47] = pt->ior; \
|
dst[46] = pt->isr; dst[47] = pt->ior; \
|
||||||
dst[48] = mfctl(22); dst[49] = mfctl(0); \
|
dst[48] = mfctl(22); dst[49] = mfctl(0); \
|
||||||
|
@ -292,7 +290,7 @@ typedef unsigned long elf_greg_t;
|
||||||
dst[60] = mfctl(12); dst[61] = mfctl(13); \
|
dst[60] = mfctl(12); dst[61] = mfctl(13); \
|
||||||
dst[62] = mfctl(10); dst[63] = mfctl(15);
|
dst[62] = mfctl(10); dst[63] = mfctl(15);
|
||||||
|
|
||||||
#endif /* ! ELF_CLASS */
|
#define CORE_DUMP_USE_REGSET
|
||||||
|
|
||||||
#define ELF_NGREG 80 /* We only need 64 at present, but leave space
|
#define ELF_NGREG 80 /* We only need 64 at present, but leave space
|
||||||
for expansion. */
|
for expansion. */
|
||||||
|
@ -310,7 +308,10 @@ extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *);
|
||||||
struct pt_regs; /* forward declaration... */
|
struct pt_regs; /* forward declaration... */
|
||||||
|
|
||||||
|
|
||||||
#define elf_check_arch(x) ((x)->e_machine == EM_PARISC && (x)->e_ident[EI_CLASS] == ELF_CLASS)
|
#define elf_check_arch(x) \
|
||||||
|
((x)->e_machine == EM_PARISC && (x)->e_ident[EI_CLASS] == ELF_CLASS)
|
||||||
|
#define compat_elf_check_arch(x) \
|
||||||
|
((x)->e_machine == EM_PARISC && (x)->e_ident[EI_CLASS] == ELFCLASS32)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are used to set parameters in the core dumps.
|
* These are used to set parameters in the core dumps.
|
||||||
|
|
|
@ -8,11 +8,4 @@
|
||||||
|
|
||||||
#include <asm-generic/siginfo.h>
|
#include <asm-generic/siginfo.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* SIGFPE si_codes
|
|
||||||
*/
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
#define FPE_FIXME 0 /* Broken dup of SI_USER */
|
|
||||||
#endif /* __KERNEL__ */
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,7 +23,7 @@ obj-$(CONFIG_SMP) += smp.o
|
||||||
obj-$(CONFIG_PA11) += pci-dma.o
|
obj-$(CONFIG_PA11) += pci-dma.o
|
||||||
obj-$(CONFIG_PCI) += pci.o
|
obj-$(CONFIG_PCI) += pci.o
|
||||||
obj-$(CONFIG_MODULES) += module.o
|
obj-$(CONFIG_MODULES) += module.o
|
||||||
obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o signal32.o
|
obj-$(CONFIG_64BIT) += sys_parisc32.o signal32.o
|
||||||
obj-$(CONFIG_STACKTRACE)+= stacktrace.o
|
obj-$(CONFIG_STACKTRACE)+= stacktrace.o
|
||||||
obj-$(CONFIG_AUDIT) += audit.o
|
obj-$(CONFIG_AUDIT) += audit.o
|
||||||
obj64-$(CONFIG_AUDIT) += compat_audit.o
|
obj64-$(CONFIG_AUDIT) += compat_audit.o
|
||||||
|
|
|
@ -1,98 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
/*
|
|
||||||
* Support for 32-bit Linux/Parisc ELF binaries on 64 bit kernels
|
|
||||||
*
|
|
||||||
* Copyright (C) 2000 John Marvin
|
|
||||||
* Copyright (C) 2000 Hewlett Packard Co.
|
|
||||||
*
|
|
||||||
* Heavily inspired from various other efforts to do the same thing
|
|
||||||
* (ia64,sparc64/mips64)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Make sure include/asm-parisc/elf.h does the right thing */
|
|
||||||
|
|
||||||
#define ELF_CLASS ELFCLASS32
|
|
||||||
|
|
||||||
#define ELF_CORE_COPY_REGS(dst, pt) \
|
|
||||||
memset(dst, 0, sizeof(dst)); /* don't leak any "random" bits */ \
|
|
||||||
{ int i; \
|
|
||||||
for (i = 0; i < 32; i++) dst[i] = (elf_greg_t) pt->gr[i]; \
|
|
||||||
for (i = 0; i < 8; i++) dst[32 + i] = (elf_greg_t) pt->sr[i]; \
|
|
||||||
} \
|
|
||||||
dst[40] = (elf_greg_t) pt->iaoq[0]; dst[41] = (elf_greg_t) pt->iaoq[1]; \
|
|
||||||
dst[42] = (elf_greg_t) pt->iasq[0]; dst[43] = (elf_greg_t) pt->iasq[1]; \
|
|
||||||
dst[44] = (elf_greg_t) pt->sar; dst[45] = (elf_greg_t) pt->iir; \
|
|
||||||
dst[46] = (elf_greg_t) pt->isr; dst[47] = (elf_greg_t) pt->ior; \
|
|
||||||
dst[48] = (elf_greg_t) mfctl(22); dst[49] = (elf_greg_t) mfctl(0); \
|
|
||||||
dst[50] = (elf_greg_t) mfctl(24); dst[51] = (elf_greg_t) mfctl(25); \
|
|
||||||
dst[52] = (elf_greg_t) mfctl(26); dst[53] = (elf_greg_t) mfctl(27); \
|
|
||||||
dst[54] = (elf_greg_t) mfctl(28); dst[55] = (elf_greg_t) mfctl(29); \
|
|
||||||
dst[56] = (elf_greg_t) mfctl(30); dst[57] = (elf_greg_t) mfctl(31); \
|
|
||||||
dst[58] = (elf_greg_t) mfctl( 8); dst[59] = (elf_greg_t) mfctl( 9); \
|
|
||||||
dst[60] = (elf_greg_t) mfctl(12); dst[61] = (elf_greg_t) mfctl(13); \
|
|
||||||
dst[62] = (elf_greg_t) mfctl(10); dst[63] = (elf_greg_t) mfctl(15);
|
|
||||||
|
|
||||||
|
|
||||||
typedef unsigned int elf_greg_t;
|
|
||||||
|
|
||||||
#include <linux/spinlock.h>
|
|
||||||
#include <asm/processor.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/elfcore.h>
|
|
||||||
#include <linux/compat.h> /* struct compat_timeval */
|
|
||||||
|
|
||||||
#define elf_prstatus elf_prstatus32
|
|
||||||
struct elf_prstatus32
|
|
||||||
{
|
|
||||||
struct elf_siginfo pr_info; /* Info associated with signal */
|
|
||||||
short pr_cursig; /* Current signal */
|
|
||||||
unsigned int pr_sigpend; /* Set of pending signals */
|
|
||||||
unsigned int pr_sighold; /* Set of held signals */
|
|
||||||
pid_t pr_pid;
|
|
||||||
pid_t pr_ppid;
|
|
||||||
pid_t pr_pgrp;
|
|
||||||
pid_t pr_sid;
|
|
||||||
struct compat_timeval pr_utime; /* User time */
|
|
||||||
struct compat_timeval pr_stime; /* System time */
|
|
||||||
struct compat_timeval pr_cutime; /* Cumulative user time */
|
|
||||||
struct compat_timeval pr_cstime; /* Cumulative system time */
|
|
||||||
elf_gregset_t pr_reg; /* GP registers */
|
|
||||||
int pr_fpvalid; /* True if math co-processor being used. */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define elf_prpsinfo elf_prpsinfo32
|
|
||||||
struct elf_prpsinfo32
|
|
||||||
{
|
|
||||||
char pr_state; /* numeric process state */
|
|
||||||
char pr_sname; /* char for pr_state */
|
|
||||||
char pr_zomb; /* zombie */
|
|
||||||
char pr_nice; /* nice val */
|
|
||||||
unsigned int pr_flag; /* flags */
|
|
||||||
u16 pr_uid;
|
|
||||||
u16 pr_gid;
|
|
||||||
pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
|
||||||
/* Lots missing */
|
|
||||||
char pr_fname[16]; /* filename of executable */
|
|
||||||
char pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define init_elf_binfmt init_elf32_binfmt
|
|
||||||
|
|
||||||
#define ELF_PLATFORM ("PARISC32\0")
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We should probably use this macro to set a flag somewhere to indicate
|
|
||||||
* this is a 32 on 64 process. We could use PER_LINUX_32BIT, or we
|
|
||||||
* could set a processor dependent flag in the thread_struct.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef SET_PERSONALITY
|
|
||||||
#define SET_PERSONALITY(ex) \
|
|
||||||
set_thread_flag(TIF_32BIT); \
|
|
||||||
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
|
||||||
current->thread.task_size = DEFAULT_TASK_SIZE32 \
|
|
||||||
|
|
||||||
#undef ns_to_timeval
|
|
||||||
#define ns_to_timeval ns_to_compat_timeval
|
|
||||||
|
|
||||||
#include "../../../fs/binfmt_elf.c"
|
|
|
@ -254,7 +254,7 @@ parisc_cache_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void disable_sr_hashing(void)
|
void __init disable_sr_hashing(void)
|
||||||
{
|
{
|
||||||
int srhash_type, retval;
|
int srhash_type, retval;
|
||||||
unsigned long space_bits;
|
unsigned long space_bits;
|
||||||
|
|
|
@ -38,9 +38,10 @@
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/ldcw.h>
|
#include <asm/ldcw.h>
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
|
||||||
.text
|
.section .text.hot
|
||||||
.align 128
|
.align 16
|
||||||
|
|
||||||
ENTRY_CFI(flush_tlb_all_local)
|
ENTRY_CFI(flush_tlb_all_local)
|
||||||
.proc
|
.proc
|
||||||
|
@ -328,8 +329,6 @@ fdsync:
|
||||||
.procend
|
.procend
|
||||||
ENDPROC_CFI(flush_data_cache_local)
|
ENDPROC_CFI(flush_data_cache_local)
|
||||||
|
|
||||||
.align 16
|
|
||||||
|
|
||||||
/* Macros to serialize TLB purge operations on SMP. */
|
/* Macros to serialize TLB purge operations on SMP. */
|
||||||
|
|
||||||
.macro tlb_lock la,flags,tmp
|
.macro tlb_lock la,flags,tmp
|
||||||
|
@ -1216,6 +1215,8 @@ ENTRY_CFI(flush_kernel_icache_range_asm)
|
||||||
.procend
|
.procend
|
||||||
ENDPROC_CFI(flush_kernel_icache_range_asm)
|
ENDPROC_CFI(flush_kernel_icache_range_asm)
|
||||||
|
|
||||||
|
__INIT
|
||||||
|
|
||||||
/* align should cover use of rfi in disable_sr_hashing_asm and
|
/* align should cover use of rfi in disable_sr_hashing_asm and
|
||||||
* srdis_done.
|
* srdis_done.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -112,14 +112,6 @@ void machine_restart(char *cmd)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void machine_halt(void)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
** The LED/ChassisCodes are updated by the led_halt()
|
|
||||||
** function, called by the reboot notifier chain.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void (*chassis_power_off)(void);
|
void (*chassis_power_off)(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -158,6 +150,11 @@ void machine_power_off(void)
|
||||||
void (*pm_power_off)(void);
|
void (*pm_power_off)(void);
|
||||||
EXPORT_SYMBOL(pm_power_off);
|
EXPORT_SYMBOL(pm_power_off);
|
||||||
|
|
||||||
|
void machine_halt(void)
|
||||||
|
{
|
||||||
|
machine_power_off();
|
||||||
|
}
|
||||||
|
|
||||||
void flush_thread(void)
|
void flush_thread(void)
|
||||||
{
|
{
|
||||||
/* Only needs to handle fpu stuff or perf monitors.
|
/* Only needs to handle fpu stuff or perf monitors.
|
||||||
|
|
|
@ -627,9 +627,10 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
|
||||||
on condition */
|
on condition */
|
||||||
if(user_mode(regs)){
|
if(user_mode(regs)){
|
||||||
si.si_signo = SIGFPE;
|
si.si_signo = SIGFPE;
|
||||||
/* Set to zero, and let the userspace app figure it out from
|
/* Let userspace app figure it out from the insn pointed
|
||||||
the insn pointed to by si_addr */
|
* to by si_addr.
|
||||||
si.si_code = FPE_FIXME;
|
*/
|
||||||
|
si.si_code = FPE_CONDTRAP;
|
||||||
si.si_addr = (void __user *) regs->iaoq[0];
|
si.si_addr = (void __user *) regs->iaoq[0];
|
||||||
force_sig_info(SIGFPE, &si, current);
|
force_sig_info(SIGFPE, &si, current);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -552,6 +552,9 @@ config KEXEC_FILE
|
||||||
for kernel and initramfs as opposed to a list of segments as is the
|
for kernel and initramfs as opposed to a list of segments as is the
|
||||||
case for the older kexec call.
|
case for the older kexec call.
|
||||||
|
|
||||||
|
config ARCH_HAS_KEXEC_PURGATORY
|
||||||
|
def_bool KEXEC_FILE
|
||||||
|
|
||||||
config RELOCATABLE
|
config RELOCATABLE
|
||||||
bool "Build a relocatable kernel"
|
bool "Build a relocatable kernel"
|
||||||
depends on PPC64 || (FLATMEM && (44x || FSL_BOOKE))
|
depends on PPC64 || (FLATMEM && (44x || FSL_BOOKE))
|
||||||
|
|
|
@ -545,18 +545,37 @@ enum {
|
||||||
#ifdef CONFIG_PPC_BOOK3E
|
#ifdef CONFIG_PPC_BOOK3E
|
||||||
#define CPU_FTRS_ALWAYS (CPU_FTRS_E6500 & CPU_FTRS_E5500)
|
#define CPU_FTRS_ALWAYS (CPU_FTRS_E6500 & CPU_FTRS_E5500)
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_DT_CPU_FTRS
|
||||||
|
#define CPU_FTRS_DT_CPU_BASE \
|
||||||
|
(CPU_FTR_LWSYNC | \
|
||||||
|
CPU_FTR_FPU_UNAVAILABLE | \
|
||||||
|
CPU_FTR_NODSISRALIGN | \
|
||||||
|
CPU_FTR_NOEXECUTE | \
|
||||||
|
CPU_FTR_COHERENT_ICACHE | \
|
||||||
|
CPU_FTR_STCX_CHECKS_ADDRESS | \
|
||||||
|
CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||||
|
CPU_FTR_DAWR | \
|
||||||
|
CPU_FTR_ARCH_206 | \
|
||||||
|
CPU_FTR_ARCH_207S)
|
||||||
|
#else
|
||||||
|
#define CPU_FTRS_DT_CPU_BASE (~0ul)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||||
#define CPU_FTRS_ALWAYS \
|
#define CPU_FTRS_ALWAYS \
|
||||||
(CPU_FTRS_POSSIBLE & ~CPU_FTR_HVMODE & CPU_FTRS_POWER7 & \
|
(CPU_FTRS_POSSIBLE & ~CPU_FTR_HVMODE & CPU_FTRS_POWER7 & \
|
||||||
CPU_FTRS_POWER8E & CPU_FTRS_POWER8 & CPU_FTRS_POWER8_DD1 & \
|
CPU_FTRS_POWER8E & CPU_FTRS_POWER8 & CPU_FTRS_POWER8_DD1 & \
|
||||||
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD1 & CPU_FTRS_POWER9_DD2_1)
|
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD1 & CPU_FTRS_POWER9_DD2_1 & \
|
||||||
|
CPU_FTRS_DT_CPU_BASE)
|
||||||
#else
|
#else
|
||||||
#define CPU_FTRS_ALWAYS \
|
#define CPU_FTRS_ALWAYS \
|
||||||
(CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & \
|
(CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & \
|
||||||
CPU_FTRS_POWER6 & CPU_FTRS_POWER7 & CPU_FTRS_CELL & \
|
CPU_FTRS_POWER6 & CPU_FTRS_POWER7 & CPU_FTRS_CELL & \
|
||||||
CPU_FTRS_PA6T & CPU_FTRS_POWER8 & CPU_FTRS_POWER8E & \
|
CPU_FTRS_PA6T & CPU_FTRS_POWER8 & CPU_FTRS_POWER8E & \
|
||||||
CPU_FTRS_POWER8_DD1 & ~CPU_FTR_HVMODE & CPU_FTRS_POSSIBLE & \
|
CPU_FTRS_POWER8_DD1 & ~CPU_FTR_HVMODE & CPU_FTRS_POSSIBLE & \
|
||||||
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD1 & CPU_FTRS_POWER9_DD2_1)
|
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD1 & CPU_FTRS_POWER9_DD2_1 & \
|
||||||
|
CPU_FTRS_DT_CPU_BASE)
|
||||||
#endif /* CONFIG_CPU_LITTLE_ENDIAN */
|
#endif /* CONFIG_CPU_LITTLE_ENDIAN */
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -95,7 +95,7 @@ static inline bool kdump_in_progress(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC_FILE
|
#ifdef CONFIG_KEXEC_FILE
|
||||||
extern struct kexec_file_ops kexec_elf64_ops;
|
extern const struct kexec_file_ops kexec_elf64_ops;
|
||||||
|
|
||||||
#ifdef CONFIG_IMA_KEXEC
|
#ifdef CONFIG_IMA_KEXEC
|
||||||
#define ARCH_HAS_KIMAGE_ARCH
|
#define ARCH_HAS_KIMAGE_ARCH
|
||||||
|
|
|
@ -15,9 +15,19 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef CC_USING_MPROFILE_KERNEL
|
#ifdef CC_USING_MPROFILE_KERNEL
|
||||||
#define MODULE_ARCH_VERMAGIC "mprofile-kernel"
|
#define MODULE_ARCH_VERMAGIC_FTRACE "mprofile-kernel "
|
||||||
|
#else
|
||||||
|
#define MODULE_ARCH_VERMAGIC_FTRACE ""
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_RELOCATABLE
|
||||||
|
#define MODULE_ARCH_VERMAGIC_RELOCATABLE "relocatable "
|
||||||
|
#else
|
||||||
|
#define MODULE_ARCH_VERMAGIC_RELOCATABLE ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MODULE_ARCH_VERMAGIC MODULE_ARCH_VERMAGIC_FTRACE MODULE_ARCH_VERMAGIC_RELOCATABLE
|
||||||
|
|
||||||
#ifndef __powerpc64__
|
#ifndef __powerpc64__
|
||||||
/*
|
/*
|
||||||
* Thanks to Paul M for explaining this.
|
* Thanks to Paul M for explaining this.
|
||||||
|
|
|
@ -21,6 +21,9 @@
|
||||||
/* We calculate number of sg entries based on PAGE_SIZE */
|
/* We calculate number of sg entries based on PAGE_SIZE */
|
||||||
#define SG_ENTRIES_PER_NODE ((PAGE_SIZE - 16) / sizeof(struct opal_sg_entry))
|
#define SG_ENTRIES_PER_NODE ((PAGE_SIZE - 16) / sizeof(struct opal_sg_entry))
|
||||||
|
|
||||||
|
/* Default time to sleep or delay between OPAL_BUSY/OPAL_BUSY_EVENT loops */
|
||||||
|
#define OPAL_BUSY_DELAY_MS 10
|
||||||
|
|
||||||
/* /sys/firmware/opal */
|
/* /sys/firmware/opal */
|
||||||
extern struct kobject *opal_kobj;
|
extern struct kobject *opal_kobj;
|
||||||
|
|
||||||
|
|
|
@ -53,18 +53,6 @@ struct dt_cpu_feature {
|
||||||
int disabled;
|
int disabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CPU_FTRS_BASE \
|
|
||||||
(CPU_FTR_LWSYNC | \
|
|
||||||
CPU_FTR_FPU_UNAVAILABLE |\
|
|
||||||
CPU_FTR_NODSISRALIGN |\
|
|
||||||
CPU_FTR_NOEXECUTE |\
|
|
||||||
CPU_FTR_COHERENT_ICACHE | \
|
|
||||||
CPU_FTR_STCX_CHECKS_ADDRESS |\
|
|
||||||
CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
|
||||||
CPU_FTR_DAWR | \
|
|
||||||
CPU_FTR_ARCH_206 |\
|
|
||||||
CPU_FTR_ARCH_207S)
|
|
||||||
|
|
||||||
#define MMU_FTRS_HASH_BASE (MMU_FTRS_POWER8)
|
#define MMU_FTRS_HASH_BASE (MMU_FTRS_POWER8)
|
||||||
|
|
||||||
#define COMMON_USER_BASE (PPC_FEATURE_32 | PPC_FEATURE_64 | \
|
#define COMMON_USER_BASE (PPC_FEATURE_32 | PPC_FEATURE_64 | \
|
||||||
|
@ -124,7 +112,7 @@ static char dt_cpu_name[64];
|
||||||
|
|
||||||
static struct cpu_spec __initdata base_cpu_spec = {
|
static struct cpu_spec __initdata base_cpu_spec = {
|
||||||
.cpu_name = NULL,
|
.cpu_name = NULL,
|
||||||
.cpu_features = CPU_FTRS_BASE,
|
.cpu_features = CPU_FTRS_DT_CPU_BASE,
|
||||||
.cpu_user_features = COMMON_USER_BASE,
|
.cpu_user_features = COMMON_USER_BASE,
|
||||||
.cpu_user_features2 = COMMON_USER2_BASE,
|
.cpu_user_features2 = COMMON_USER2_BASE,
|
||||||
.mmu_features = 0,
|
.mmu_features = 0,
|
||||||
|
|
|
@ -807,7 +807,8 @@ static void eeh_restore_bridge_bars(struct eeh_dev *edev)
|
||||||
eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]);
|
eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]);
|
||||||
|
|
||||||
/* PCI Command: 0x4 */
|
/* PCI Command: 0x4 */
|
||||||
eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1]);
|
eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1] |
|
||||||
|
PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
|
||||||
|
|
||||||
/* Check the PCIe link is ready */
|
/* Check the PCIe link is ready */
|
||||||
eeh_bridge_check_link(edev);
|
eeh_bridge_check_link(edev);
|
||||||
|
|
|
@ -553,12 +553,12 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_ARCH_300)
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
|
#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
|
||||||
lbz r0,HSTATE_HWTHREAD_STATE(r13)
|
lbz r0,HSTATE_HWTHREAD_STATE(r13)
|
||||||
cmpwi r0,KVM_HWTHREAD_IN_KERNEL
|
cmpwi r0,KVM_HWTHREAD_IN_KERNEL
|
||||||
beq 1f
|
beq 0f
|
||||||
li r0,KVM_HWTHREAD_IN_KERNEL
|
li r0,KVM_HWTHREAD_IN_KERNEL
|
||||||
stb r0,HSTATE_HWTHREAD_STATE(r13)
|
stb r0,HSTATE_HWTHREAD_STATE(r13)
|
||||||
/* Order setting hwthread_state vs. testing hwthread_req */
|
/* Order setting hwthread_state vs. testing hwthread_req */
|
||||||
sync
|
sync
|
||||||
lbz r0,HSTATE_HWTHREAD_REQ(r13)
|
0: lbz r0,HSTATE_HWTHREAD_REQ(r13)
|
||||||
cmpwi r0,0
|
cmpwi r0,0
|
||||||
beq 1f
|
beq 1f
|
||||||
b kvm_start_guest
|
b kvm_start_guest
|
||||||
|
|
|
@ -572,7 +572,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
unsigned int fdt_size;
|
unsigned int fdt_size;
|
||||||
unsigned long kernel_load_addr, purgatory_load_addr;
|
unsigned long kernel_load_addr;
|
||||||
unsigned long initrd_load_addr = 0, fdt_load_addr;
|
unsigned long initrd_load_addr = 0, fdt_load_addr;
|
||||||
void *fdt;
|
void *fdt;
|
||||||
const void *slave_code;
|
const void *slave_code;
|
||||||
|
@ -580,6 +580,8 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
|
||||||
struct elf_info elf_info;
|
struct elf_info elf_info;
|
||||||
struct kexec_buf kbuf = { .image = image, .buf_min = 0,
|
struct kexec_buf kbuf = { .image = image, .buf_min = 0,
|
||||||
.buf_max = ppc64_rma_size };
|
.buf_max = ppc64_rma_size };
|
||||||
|
struct kexec_buf pbuf = { .image = image, .buf_min = 0,
|
||||||
|
.buf_max = ppc64_rma_size, .top_down = true };
|
||||||
|
|
||||||
ret = build_elf_exec_info(kernel_buf, kernel_len, &ehdr, &elf_info);
|
ret = build_elf_exec_info(kernel_buf, kernel_len, &ehdr, &elf_info);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -591,14 +593,13 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
|
||||||
|
|
||||||
pr_debug("Loaded the kernel at 0x%lx\n", kernel_load_addr);
|
pr_debug("Loaded the kernel at 0x%lx\n", kernel_load_addr);
|
||||||
|
|
||||||
ret = kexec_load_purgatory(image, 0, ppc64_rma_size, true,
|
ret = kexec_load_purgatory(image, &pbuf);
|
||||||
&purgatory_load_addr);
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("Loading purgatory failed.\n");
|
pr_err("Loading purgatory failed.\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("Loaded purgatory at 0x%lx\n", purgatory_load_addr);
|
pr_debug("Loaded purgatory at 0x%lx\n", pbuf.mem);
|
||||||
|
|
||||||
if (initrd != NULL) {
|
if (initrd != NULL) {
|
||||||
kbuf.buffer = initrd;
|
kbuf.buffer = initrd;
|
||||||
|
@ -657,7 +658,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
|
||||||
return ret ? ERR_PTR(ret) : fdt;
|
return ret ? ERR_PTR(ret) : fdt;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct kexec_file_ops kexec_elf64_ops = {
|
const struct kexec_file_ops kexec_elf64_ops = {
|
||||||
.probe = elf64_probe,
|
.probe = elf64_probe,
|
||||||
.load = elf64_load,
|
.load = elf64_load,
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,52 +31,19 @@
|
||||||
|
|
||||||
#define SLAVE_CODE_SIZE 256
|
#define SLAVE_CODE_SIZE 256
|
||||||
|
|
||||||
static struct kexec_file_ops *kexec_file_loaders[] = {
|
const struct kexec_file_ops * const kexec_file_loaders[] = {
|
||||||
&kexec_elf64_ops,
|
&kexec_elf64_ops,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
int arch_kexec_kernel_image_probe(struct kimage *image, void *buf,
|
int arch_kexec_kernel_image_probe(struct kimage *image, void *buf,
|
||||||
unsigned long buf_len)
|
unsigned long buf_len)
|
||||||
{
|
{
|
||||||
int i, ret = -ENOEXEC;
|
|
||||||
struct kexec_file_ops *fops;
|
|
||||||
|
|
||||||
/* We don't support crash kernels yet. */
|
/* We don't support crash kernels yet. */
|
||||||
if (image->type == KEXEC_TYPE_CRASH)
|
if (image->type == KEXEC_TYPE_CRASH)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(kexec_file_loaders); i++) {
|
return kexec_image_probe_default(image, buf, buf_len);
|
||||||
fops = kexec_file_loaders[i];
|
|
||||||
if (!fops || !fops->probe)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ret = fops->probe(buf, buf_len);
|
|
||||||
if (!ret) {
|
|
||||||
image->fops = fops;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *arch_kexec_kernel_image_load(struct kimage *image)
|
|
||||||
{
|
|
||||||
if (!image->fops || !image->fops->load)
|
|
||||||
return ERR_PTR(-ENOEXEC);
|
|
||||||
|
|
||||||
return image->fops->load(image, image->kernel_buf,
|
|
||||||
image->kernel_buf_len, image->initrd_buf,
|
|
||||||
image->initrd_buf_len, image->cmdline_buf,
|
|
||||||
image->cmdline_buf_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
int arch_kimage_file_post_load_cleanup(struct kimage *image)
|
|
||||||
{
|
|
||||||
if (!image->fops || !image->fops->cleanup)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return image->fops->cleanup(image->image_loader_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -880,7 +880,7 @@ void rfi_flush_enable(bool enable)
|
||||||
rfi_flush = enable;
|
rfi_flush = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_fallback_flush(void)
|
static void __ref init_fallback_flush(void)
|
||||||
{
|
{
|
||||||
u64 l1d_size, limit;
|
u64 l1d_size, limit;
|
||||||
int cpu;
|
int cpu;
|
||||||
|
@ -890,6 +890,17 @@ static void init_fallback_flush(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
l1d_size = ppc64_caches.l1d.size;
|
l1d_size = ppc64_caches.l1d.size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If there is no d-cache-size property in the device tree, l1d_size
|
||||||
|
* could be zero. That leads to the loop in the asm wrapping around to
|
||||||
|
* 2^64-1, and then walking off the end of the fallback area and
|
||||||
|
* eventually causing a page fault which is fatal. Just default to
|
||||||
|
* something vaguely sane.
|
||||||
|
*/
|
||||||
|
if (!l1d_size)
|
||||||
|
l1d_size = (64 * 1024);
|
||||||
|
|
||||||
limit = min(ppc64_bolted_size(), ppc64_rma_size);
|
limit = min(ppc64_bolted_size(), ppc64_rma_size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1613,6 +1613,22 @@ void facility_unavailable_exception(struct pt_regs *regs)
|
||||||
value = mfspr(SPRN_FSCR);
|
value = mfspr(SPRN_FSCR);
|
||||||
|
|
||||||
status = value >> 56;
|
status = value >> 56;
|
||||||
|
if ((hv || status >= 2) &&
|
||||||
|
(status < ARRAY_SIZE(facility_strings)) &&
|
||||||
|
facility_strings[status])
|
||||||
|
facility = facility_strings[status];
|
||||||
|
|
||||||
|
/* We should not have taken this interrupt in kernel */
|
||||||
|
if (!user_mode(regs)) {
|
||||||
|
pr_emerg("Facility '%s' unavailable (%d) exception in kernel mode at %lx\n",
|
||||||
|
facility, status, regs->nip);
|
||||||
|
die("Unexpected facility unavailable exception", regs, SIGABRT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We restore the interrupt state now */
|
||||||
|
if (!arch_irq_disabled_regs(regs))
|
||||||
|
local_irq_enable();
|
||||||
|
|
||||||
if (status == FSCR_DSCR_LG) {
|
if (status == FSCR_DSCR_LG) {
|
||||||
/*
|
/*
|
||||||
* User is accessing the DSCR register using the problem
|
* User is accessing the DSCR register using the problem
|
||||||
|
@ -1679,25 +1695,11 @@ void facility_unavailable_exception(struct pt_regs *regs)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((hv || status >= 2) &&
|
|
||||||
(status < ARRAY_SIZE(facility_strings)) &&
|
|
||||||
facility_strings[status])
|
|
||||||
facility = facility_strings[status];
|
|
||||||
|
|
||||||
/* We restore the interrupt state now */
|
|
||||||
if (!arch_irq_disabled_regs(regs))
|
|
||||||
local_irq_enable();
|
|
||||||
|
|
||||||
pr_err_ratelimited("%sFacility '%s' unavailable (%d), exception at 0x%lx, MSR=%lx\n",
|
pr_err_ratelimited("%sFacility '%s' unavailable (%d), exception at 0x%lx, MSR=%lx\n",
|
||||||
hv ? "Hypervisor " : "", facility, status, regs->nip, regs->msr);
|
hv ? "Hypervisor " : "", facility, status, regs->nip, regs->msr);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (user_mode(regs)) {
|
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
||||||
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
die("Unexpected facility unavailable exception", regs, SIGABRT);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -470,8 +470,6 @@ static void do_tlbies(struct kvm *kvm, unsigned long *rbvalues,
|
||||||
for (i = 0; i < npages; ++i) {
|
for (i = 0; i < npages; ++i) {
|
||||||
asm volatile(PPC_TLBIE_5(%0,%1,0,0,0) : :
|
asm volatile(PPC_TLBIE_5(%0,%1,0,0,0) : :
|
||||||
"r" (rbvalues[i]), "r" (kvm->arch.lpid));
|
"r" (rbvalues[i]), "r" (kvm->arch.lpid));
|
||||||
trace_tlbie(kvm->arch.lpid, 0, rbvalues[i],
|
|
||||||
kvm->arch.lpid, 0, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpu_has_feature(CPU_FTR_P9_TLBIE_BUG)) {
|
if (cpu_has_feature(CPU_FTR_P9_TLBIE_BUG)) {
|
||||||
|
@ -492,8 +490,6 @@ static void do_tlbies(struct kvm *kvm, unsigned long *rbvalues,
|
||||||
for (i = 0; i < npages; ++i) {
|
for (i = 0; i < npages; ++i) {
|
||||||
asm volatile(PPC_TLBIEL(%0,%1,0,0,0) : :
|
asm volatile(PPC_TLBIEL(%0,%1,0,0,0) : :
|
||||||
"r" (rbvalues[i]), "r" (0));
|
"r" (rbvalues[i]), "r" (0));
|
||||||
trace_tlbie(kvm->arch.lpid, 1, rbvalues[i],
|
|
||||||
0, 0, 0, 0);
|
|
||||||
}
|
}
|
||||||
asm volatile("ptesync" : : : "memory");
|
asm volatile("ptesync" : : : "memory");
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ static int patch_alt_instruction(unsigned int *src, unsigned int *dest,
|
||||||
unsigned int *target = (unsigned int *)branch_target(src);
|
unsigned int *target = (unsigned int *)branch_target(src);
|
||||||
|
|
||||||
/* Branch within the section doesn't need translating */
|
/* Branch within the section doesn't need translating */
|
||||||
if (target < alt_start || target >= alt_end) {
|
if (target < alt_start || target > alt_end) {
|
||||||
instr = translate_branch(dest, src);
|
instr = translate_branch(dest, src);
|
||||||
if (!instr)
|
if (!instr)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <asm/mmu.h>
|
#include <asm/mmu.h>
|
||||||
#include <asm/copro.h>
|
#include <asm/copro.h>
|
||||||
#include <asm/hugetlb.h>
|
#include <asm/hugetlb.h>
|
||||||
|
#include <asm/mmu_context.h>
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(slice_convert_lock);
|
static DEFINE_SPINLOCK(slice_convert_lock);
|
||||||
|
|
||||||
|
|
|
@ -33,13 +33,12 @@ static inline void tlbiel_radix_set_isa300(unsigned int set, unsigned int is,
|
||||||
{
|
{
|
||||||
unsigned long rb;
|
unsigned long rb;
|
||||||
unsigned long rs;
|
unsigned long rs;
|
||||||
unsigned int r = 1; /* radix format */
|
|
||||||
|
|
||||||
rb = (set << PPC_BITLSHIFT(51)) | (is << PPC_BITLSHIFT(53));
|
rb = (set << PPC_BITLSHIFT(51)) | (is << PPC_BITLSHIFT(53));
|
||||||
rs = ((unsigned long)pid << PPC_BITLSHIFT(31));
|
rs = ((unsigned long)pid << PPC_BITLSHIFT(31));
|
||||||
|
|
||||||
asm volatile(PPC_TLBIEL(%0, %1, %2, %3, %4)
|
asm volatile(PPC_TLBIEL(%0, %1, %2, %3, 1)
|
||||||
: : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "r"(r)
|
: : "r"(rb), "r"(rs), "i"(ric), "i"(prs)
|
||||||
: "memory");
|
: "memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#define DEBUG
|
#define DEBUG
|
||||||
|
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
|
@ -56,8 +57,12 @@ static ssize_t opal_nvram_write(char *buf, size_t count, loff_t *index)
|
||||||
|
|
||||||
while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
|
while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
|
||||||
rc = opal_write_nvram(__pa(buf), count, off);
|
rc = opal_write_nvram(__pa(buf), count, off);
|
||||||
if (rc == OPAL_BUSY_EVENT)
|
if (rc == OPAL_BUSY_EVENT) {
|
||||||
|
msleep(OPAL_BUSY_DELAY_MS);
|
||||||
opal_poll_events(NULL);
|
opal_poll_events(NULL);
|
||||||
|
} else if (rc == OPAL_BUSY) {
|
||||||
|
msleep(OPAL_BUSY_DELAY_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc)
|
if (rc)
|
||||||
|
|
|
@ -389,6 +389,10 @@ static void xive_native_setup_cpu(unsigned int cpu, struct xive_cpu *xc)
|
||||||
if (xive_pool_vps == XIVE_INVALID_VP)
|
if (xive_pool_vps == XIVE_INVALID_VP)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Check if pool VP already active, if it is, pull it */
|
||||||
|
if (in_be32(xive_tima + TM_QW2_HV_POOL + TM_WORD2) & TM_QW2W2_VP)
|
||||||
|
in_be64(xive_tima + TM_SPC_PULL_POOL_CTX);
|
||||||
|
|
||||||
/* Enable the pool VP */
|
/* Enable the pool VP */
|
||||||
vp = xive_pool_vps + cpu;
|
vp = xive_pool_vps + cpu;
|
||||||
pr_debug("CPU %d setting up pool VP 0x%x\n", cpu, vp);
|
pr_debug("CPU %d setting up pool VP 0x%x\n", cpu, vp);
|
||||||
|
|
|
@ -8,3 +8,4 @@ obj-$(CONFIG_APPLDATA_BASE) += appldata/
|
||||||
obj-y += net/
|
obj-y += net/
|
||||||
obj-$(CONFIG_PCI) += pci/
|
obj-$(CONFIG_PCI) += pci/
|
||||||
obj-$(CONFIG_NUMA) += numa/
|
obj-$(CONFIG_NUMA) += numa/
|
||||||
|
obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += purgatory/
|
||||||
|
|
|
@ -47,10 +47,6 @@ config PGSTE
|
||||||
config ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
config ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config KEXEC
|
|
||||||
def_bool y
|
|
||||||
select KEXEC_CORE
|
|
||||||
|
|
||||||
config AUDIT_ARCH
|
config AUDIT_ARCH
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
@ -290,12 +286,12 @@ config MARCH_Z13
|
||||||
older machines.
|
older machines.
|
||||||
|
|
||||||
config MARCH_Z14
|
config MARCH_Z14
|
||||||
bool "IBM z14"
|
bool "IBM z14 ZR1 and z14"
|
||||||
select HAVE_MARCH_Z14_FEATURES
|
select HAVE_MARCH_Z14_FEATURES
|
||||||
help
|
help
|
||||||
Select this to enable optimizations for IBM z14 (3906 series).
|
Select this to enable optimizations for IBM z14 ZR1 and z14 (3907
|
||||||
The kernel will be slightly faster but will not work on older
|
and 3906 series). The kernel will be slightly faster but will not
|
||||||
machines.
|
work on older machines.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
@ -525,6 +521,26 @@ source kernel/Kconfig.preempt
|
||||||
|
|
||||||
source kernel/Kconfig.hz
|
source kernel/Kconfig.hz
|
||||||
|
|
||||||
|
config KEXEC
|
||||||
|
def_bool y
|
||||||
|
select KEXEC_CORE
|
||||||
|
|
||||||
|
config KEXEC_FILE
|
||||||
|
bool "kexec file based system call"
|
||||||
|
select KEXEC_CORE
|
||||||
|
select BUILD_BIN2C
|
||||||
|
depends on CRYPTO
|
||||||
|
depends on CRYPTO_SHA256
|
||||||
|
depends on CRYPTO_SHA256_S390
|
||||||
|
help
|
||||||
|
Enable the kexec file based system call. In contrast to the normal
|
||||||
|
kexec system call this system call takes file descriptors for the
|
||||||
|
kernel and initramfs as arguments.
|
||||||
|
|
||||||
|
config ARCH_HAS_KEXEC_PURGATORY
|
||||||
|
def_bool y
|
||||||
|
depends on KEXEC_FILE
|
||||||
|
|
||||||
config ARCH_RANDOM
|
config ARCH_RANDOM
|
||||||
def_bool y
|
def_bool y
|
||||||
prompt "s390 architectural random number generation API"
|
prompt "s390 architectural random number generation API"
|
||||||
|
|
|
@ -3,12 +3,6 @@
|
||||||
# Makefile for the linux s390-specific parts of the memory manager.
|
# Makefile for the linux s390-specific parts of the memory manager.
|
||||||
#
|
#
|
||||||
|
|
||||||
COMPILE_VERSION := __linux_compile_version_id__`hostname | \
|
|
||||||
tr -c '[0-9A-Za-z]' '_'`__`date | \
|
|
||||||
tr -c '[0-9A-Za-z]' '_'`_t
|
|
||||||
|
|
||||||
ccflags-y := -DCOMPILE_VERSION=$(COMPILE_VERSION) -gstabs -I.
|
|
||||||
|
|
||||||
targets := image
|
targets := image
|
||||||
targets += bzImage
|
targets += bzImage
|
||||||
subdir- := compressed
|
subdir- := compressed
|
||||||
|
|
1
arch/s390/boot/compressed/.gitignore
vendored
1
arch/s390/boot/compressed/.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
sizes.h
|
sizes.h
|
||||||
vmlinux
|
vmlinux
|
||||||
vmlinux.lds
|
vmlinux.lds
|
||||||
|
vmlinux.bin.full
|
||||||
|
|
|
@ -119,34 +119,12 @@ static void error(char *x)
|
||||||
asm volatile("lpsw %0" : : "Q" (psw));
|
asm volatile("lpsw %0" : : "Q" (psw));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Safe guard the ipl parameter block against a memory area that will be
|
|
||||||
* overwritten. The validity check for the ipl parameter block is complex
|
|
||||||
* (see cio_get_iplinfo and ipl_save_parameters) but if the pointer to
|
|
||||||
* the ipl parameter block intersects with the passed memory area we can
|
|
||||||
* safely assume that we can read from that memory. In that case just copy
|
|
||||||
* the memory to IPL_PARMBLOCK_ORIGIN even if there is no ipl parameter
|
|
||||||
* block.
|
|
||||||
*/
|
|
||||||
static void check_ipl_parmblock(void *start, unsigned long size)
|
|
||||||
{
|
|
||||||
void *src, *dst;
|
|
||||||
|
|
||||||
src = (void *)(unsigned long) S390_lowcore.ipl_parmblock_ptr;
|
|
||||||
if (src + PAGE_SIZE <= start || src >= start + size)
|
|
||||||
return;
|
|
||||||
dst = (void *) IPL_PARMBLOCK_ORIGIN;
|
|
||||||
memmove(dst, src, PAGE_SIZE);
|
|
||||||
S390_lowcore.ipl_parmblock_ptr = IPL_PARMBLOCK_ORIGIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned long decompress_kernel(void)
|
unsigned long decompress_kernel(void)
|
||||||
{
|
{
|
||||||
void *output, *kernel_end;
|
void *output, *kernel_end;
|
||||||
|
|
||||||
output = (void *) ALIGN((unsigned long) _end + HEAP_SIZE, PAGE_SIZE);
|
output = (void *) ALIGN((unsigned long) _end + HEAP_SIZE, PAGE_SIZE);
|
||||||
kernel_end = output + SZ__bss_start;
|
kernel_end = output + SZ__bss_start;
|
||||||
check_ipl_parmblock((void *) 0, (unsigned long) kernel_end);
|
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_DEV_INITRD
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
/*
|
/*
|
||||||
|
@ -156,7 +134,6 @@ unsigned long decompress_kernel(void)
|
||||||
* current bss section..
|
* current bss section..
|
||||||
*/
|
*/
|
||||||
if (INITRD_START && INITRD_SIZE && kernel_end > (void *) INITRD_START) {
|
if (INITRD_START && INITRD_SIZE && kernel_end > (void *) INITRD_START) {
|
||||||
check_ipl_parmblock(kernel_end, INITRD_SIZE);
|
|
||||||
memmove(kernel_end, (void *) INITRD_START, INITRD_SIZE);
|
memmove(kernel_end, (void *) INITRD_START, INITRD_SIZE);
|
||||||
INITRD_START = (unsigned long) kernel_end;
|
INITRD_START = (unsigned long) kernel_end;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,13 @@ CONFIG_CPUSETS=y
|
||||||
CONFIG_CGROUP_DEVICE=y
|
CONFIG_CGROUP_DEVICE=y
|
||||||
CONFIG_CGROUP_CPUACCT=y
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
CONFIG_CGROUP_PERF=y
|
CONFIG_CGROUP_PERF=y
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
|
||||||
CONFIG_NAMESPACES=y
|
CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
|
CONFIG_CHECKPOINT_RESTORE=y
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -59,10 +59,11 @@ CONFIG_CFQ_GROUP_IOSCHED=y
|
||||||
CONFIG_DEFAULT_DEADLINE=y
|
CONFIG_DEFAULT_DEADLINE=y
|
||||||
CONFIG_LIVEPATCH=y
|
CONFIG_LIVEPATCH=y
|
||||||
CONFIG_TUNE_ZEC12=y
|
CONFIG_TUNE_ZEC12=y
|
||||||
CONFIG_NR_CPUS=256
|
CONFIG_NR_CPUS=512
|
||||||
CONFIG_NUMA=y
|
CONFIG_NUMA=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_HZ_100=y
|
CONFIG_HZ_100=y
|
||||||
|
CONFIG_KEXEC_FILE=y
|
||||||
CONFIG_MEMORY_HOTPLUG=y
|
CONFIG_MEMORY_HOTPLUG=y
|
||||||
CONFIG_MEMORY_HOTREMOVE=y
|
CONFIG_MEMORY_HOTREMOVE=y
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
|
@ -305,7 +306,6 @@ CONFIG_IP6_NF_SECURITY=m
|
||||||
CONFIG_IP6_NF_NAT=m
|
CONFIG_IP6_NF_NAT=m
|
||||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||||
CONFIG_NF_TABLES_BRIDGE=m
|
CONFIG_NF_TABLES_BRIDGE=m
|
||||||
CONFIG_NET_SCTPPROBE=m
|
|
||||||
CONFIG_RDS=m
|
CONFIG_RDS=m
|
||||||
CONFIG_RDS_RDMA=m
|
CONFIG_RDS_RDMA=m
|
||||||
CONFIG_RDS_TCP=m
|
CONFIG_RDS_TCP=m
|
||||||
|
@ -364,11 +364,11 @@ CONFIG_NET_ACT_SIMP=m
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
CONFIG_NET_ACT_SKBEDIT=m
|
||||||
CONFIG_NET_ACT_CSUM=m
|
CONFIG_NET_ACT_CSUM=m
|
||||||
CONFIG_DNS_RESOLVER=y
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
CONFIG_OPENVSWITCH=m
|
||||||
CONFIG_NETLINK_DIAG=m
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
CONFIG_NET_TCPPROBE=m
|
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
|
@ -380,9 +380,9 @@ CONFIG_BLK_DEV_DRBD=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
CONFIG_BLK_DEV_RAM_DAX=y
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
CONFIG_VIRTIO_BLK=y
|
||||||
CONFIG_BLK_DEV_RBD=m
|
CONFIG_BLK_DEV_RBD=m
|
||||||
|
CONFIG_BLK_DEV_NVME=m
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
CONFIG_ENCLOSURE_SERVICES=m
|
||||||
CONFIG_GENWQE=m
|
CONFIG_GENWQE=m
|
||||||
CONFIG_RAID_ATTRS=m
|
CONFIG_RAID_ATTRS=m
|
||||||
|
@ -461,6 +461,7 @@ CONFIG_PPTP=m
|
||||||
CONFIG_PPPOL2TP=m
|
CONFIG_PPPOL2TP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
CONFIG_PPP_SYNC_TTY=m
|
||||||
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
@ -474,6 +475,9 @@ 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=y
|
||||||
|
CONFIG_DRM_VIRTIO_GPU=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
# CONFIG_HID is not set
|
# CONFIG_HID is not set
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
|
@ -482,7 +486,9 @@ CONFIG_MLX4_INFINIBAND=m
|
||||||
CONFIG_MLX5_INFINIBAND=m
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
|
CONFIG_VIRTIO_PCI=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
|
CONFIG_VIRTIO_INPUT=y
|
||||||
CONFIG_EXT4_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
CONFIG_EXT4_FS_SECURITY=y
|
CONFIG_EXT4_FS_SECURITY=y
|
||||||
|
@ -641,6 +647,8 @@ CONFIG_ATOMIC64_SELFTEST=y
|
||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||||
CONFIG_S390_PTDUMP=y
|
CONFIG_S390_PTDUMP=y
|
||||||
|
CONFIG_PERSISTENT_KEYRINGS=y
|
||||||
|
CONFIG_BIG_KEYS=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
CONFIG_SECURITY_NETWORK=y
|
CONFIG_SECURITY_NETWORK=y
|
||||||
|
@ -649,17 +657,20 @@ CONFIG_SECURITY_SELINUX=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
||||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||||
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_IMA=y
|
CONFIG_IMA=y
|
||||||
|
CONFIG_IMA_DEFAULT_HASH_SHA256=y
|
||||||
|
CONFIG_IMA_WRITE_POLICY=y
|
||||||
CONFIG_IMA_APPRAISE=y
|
CONFIG_IMA_APPRAISE=y
|
||||||
CONFIG_CRYPTO_RSA=m
|
|
||||||
CONFIG_CRYPTO_DH=m
|
CONFIG_CRYPTO_DH=m
|
||||||
CONFIG_CRYPTO_ECDH=m
|
CONFIG_CRYPTO_ECDH=m
|
||||||
CONFIG_CRYPTO_USER=m
|
CONFIG_CRYPTO_USER=m
|
||||||
|
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||||
CONFIG_CRYPTO_PCRYPT=m
|
CONFIG_CRYPTO_PCRYPT=m
|
||||||
CONFIG_CRYPTO_CRYPTD=m
|
CONFIG_CRYPTO_CRYPTD=m
|
||||||
CONFIG_CRYPTO_MCRYPTD=m
|
CONFIG_CRYPTO_MCRYPTD=m
|
||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_GCM=m
|
|
||||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
|
@ -707,9 +718,8 @@ CONFIG_CRYPTO_DES_S390=m
|
||||||
CONFIG_CRYPTO_AES_S390=m
|
CONFIG_CRYPTO_AES_S390=m
|
||||||
CONFIG_CRYPTO_GHASH_S390=m
|
CONFIG_CRYPTO_GHASH_S390=m
|
||||||
CONFIG_CRYPTO_CRC32_S390=y
|
CONFIG_CRYPTO_CRC32_S390=y
|
||||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
CONFIG_PKCS7_MESSAGE_PARSER=y
|
||||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
|
CONFIG_SYSTEM_TRUSTED_KEYRING=y
|
||||||
CONFIG_X509_CERTIFICATE_PARSER=m
|
|
||||||
CONFIG_CRC7=m
|
CONFIG_CRC7=m
|
||||||
CONFIG_CRC8=m
|
CONFIG_CRC8=m
|
||||||
CONFIG_RANDOM32_SELFTEST=y
|
CONFIG_RANDOM32_SELFTEST=y
|
|
@ -1,661 +0,0 @@
|
||||||
CONFIG_SYSVIPC=y
|
|
||||||
CONFIG_POSIX_MQUEUE=y
|
|
||||||
CONFIG_AUDIT=y
|
|
||||||
CONFIG_NO_HZ_IDLE=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
|
||||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
|
||||||
CONFIG_TASKSTATS=y
|
|
||||||
CONFIG_TASK_DELAY_ACCT=y
|
|
||||||
CONFIG_TASK_XACCT=y
|
|
||||||
CONFIG_TASK_IO_ACCOUNTING=y
|
|
||||||
CONFIG_IKCONFIG=y
|
|
||||||
CONFIG_IKCONFIG_PROC=y
|
|
||||||
CONFIG_NUMA_BALANCING=y
|
|
||||||
# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
|
|
||||||
CONFIG_MEMCG=y
|
|
||||||
CONFIG_MEMCG_SWAP=y
|
|
||||||
CONFIG_BLK_CGROUP=y
|
|
||||||
CONFIG_CFS_BANDWIDTH=y
|
|
||||||
CONFIG_RT_GROUP_SCHED=y
|
|
||||||
CONFIG_CGROUP_PIDS=y
|
|
||||||
CONFIG_CGROUP_FREEZER=y
|
|
||||||
CONFIG_CGROUP_HUGETLB=y
|
|
||||||
CONFIG_CPUSETS=y
|
|
||||||
CONFIG_CGROUP_DEVICE=y
|
|
||||||
CONFIG_CGROUP_CPUACCT=y
|
|
||||||
CONFIG_CGROUP_PERF=y
|
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
|
||||||
CONFIG_NAMESPACES=y
|
|
||||||
CONFIG_USER_NS=y
|
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
|
||||||
CONFIG_EXPERT=y
|
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
|
||||||
CONFIG_BPF_SYSCALL=y
|
|
||||||
CONFIG_USERFAULTFD=y
|
|
||||||
# CONFIG_COMPAT_BRK is not set
|
|
||||||
CONFIG_PROFILING=y
|
|
||||||
CONFIG_OPROFILE=m
|
|
||||||
CONFIG_KPROBES=y
|
|
||||||
CONFIG_JUMP_LABEL=y
|
|
||||||
CONFIG_GCOV_KERNEL=y
|
|
||||||
CONFIG_GCOV_PROFILE_ALL=y
|
|
||||||
CONFIG_MODULES=y
|
|
||||||
CONFIG_MODULE_FORCE_LOAD=y
|
|
||||||
CONFIG_MODULE_UNLOAD=y
|
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
|
||||||
CONFIG_MODVERSIONS=y
|
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
|
||||||
CONFIG_BLK_DEV_INTEGRITY=y
|
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
|
||||||
CONFIG_BLK_WBT=y
|
|
||||||
CONFIG_BLK_WBT_SQ=y
|
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_IBM_PARTITION=y
|
|
||||||
CONFIG_BSD_DISKLABEL=y
|
|
||||||
CONFIG_MINIX_SUBPARTITION=y
|
|
||||||
CONFIG_SOLARIS_X86_PARTITION=y
|
|
||||||
CONFIG_UNIXWARE_DISKLABEL=y
|
|
||||||
CONFIG_CFQ_GROUP_IOSCHED=y
|
|
||||||
CONFIG_DEFAULT_DEADLINE=y
|
|
||||||
CONFIG_LIVEPATCH=y
|
|
||||||
CONFIG_TUNE_ZEC12=y
|
|
||||||
CONFIG_NR_CPUS=512
|
|
||||||
CONFIG_NUMA=y
|
|
||||||
CONFIG_HZ_100=y
|
|
||||||
CONFIG_MEMORY_HOTPLUG=y
|
|
||||||
CONFIG_MEMORY_HOTREMOVE=y
|
|
||||||
CONFIG_KSM=y
|
|
||||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
|
||||||
CONFIG_CLEANCACHE=y
|
|
||||||
CONFIG_FRONTSWAP=y
|
|
||||||
CONFIG_MEM_SOFT_DIRTY=y
|
|
||||||
CONFIG_ZSWAP=y
|
|
||||||
CONFIG_ZBUD=m
|
|
||||||
CONFIG_ZSMALLOC=m
|
|
||||||
CONFIG_ZSMALLOC_STAT=y
|
|
||||||
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
|
|
||||||
CONFIG_IDLE_PAGE_TRACKING=y
|
|
||||||
CONFIG_PCI=y
|
|
||||||
CONFIG_HOTPLUG_PCI=y
|
|
||||||
CONFIG_HOTPLUG_PCI_S390=y
|
|
||||||
CONFIG_CHSC_SCH=y
|
|
||||||
CONFIG_CRASH_DUMP=y
|
|
||||||
CONFIG_BINFMT_MISC=m
|
|
||||||
CONFIG_HIBERNATION=y
|
|
||||||
CONFIG_NET=y
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
CONFIG_PACKET_DIAG=m
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
CONFIG_UNIX_DIAG=m
|
|
||||||
CONFIG_XFRM_USER=m
|
|
||||||
CONFIG_NET_KEY=m
|
|
||||||
CONFIG_SMC=m
|
|
||||||
CONFIG_SMC_DIAG=m
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_MULTICAST=y
|
|
||||||
CONFIG_IP_ADVANCED_ROUTER=y
|
|
||||||
CONFIG_IP_MULTIPLE_TABLES=y
|
|
||||||
CONFIG_IP_ROUTE_MULTIPATH=y
|
|
||||||
CONFIG_IP_ROUTE_VERBOSE=y
|
|
||||||
CONFIG_NET_IPIP=m
|
|
||||||
CONFIG_NET_IPGRE_DEMUX=m
|
|
||||||
CONFIG_NET_IPGRE=m
|
|
||||||
CONFIG_NET_IPGRE_BROADCAST=y
|
|
||||||
CONFIG_IP_MROUTE=y
|
|
||||||
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
|
|
||||||
CONFIG_IP_PIMSM_V1=y
|
|
||||||
CONFIG_IP_PIMSM_V2=y
|
|
||||||
CONFIG_SYN_COOKIES=y
|
|
||||||
CONFIG_NET_IPVTI=m
|
|
||||||
CONFIG_INET_AH=m
|
|
||||||
CONFIG_INET_ESP=m
|
|
||||||
CONFIG_INET_IPCOMP=m
|
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
|
||||||
CONFIG_INET_XFRM_MODE_BEET=m
|
|
||||||
CONFIG_INET_DIAG=m
|
|
||||||
CONFIG_INET_UDP_DIAG=m
|
|
||||||
CONFIG_TCP_CONG_ADVANCED=y
|
|
||||||
CONFIG_TCP_CONG_HSTCP=m
|
|
||||||
CONFIG_TCP_CONG_HYBLA=m
|
|
||||||
CONFIG_TCP_CONG_SCALABLE=m
|
|
||||||
CONFIG_TCP_CONG_LP=m
|
|
||||||
CONFIG_TCP_CONG_VENO=m
|
|
||||||
CONFIG_TCP_CONG_YEAH=m
|
|
||||||
CONFIG_TCP_CONG_ILLINOIS=m
|
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
|
||||||
CONFIG_INET6_AH=m
|
|
||||||
CONFIG_INET6_ESP=m
|
|
||||||
CONFIG_INET6_IPCOMP=m
|
|
||||||
CONFIG_IPV6_MIP6=m
|
|
||||||
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
|
|
||||||
CONFIG_INET6_XFRM_MODE_TUNNEL=m
|
|
||||||
CONFIG_INET6_XFRM_MODE_BEET=m
|
|
||||||
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
|
|
||||||
CONFIG_IPV6_VTI=m
|
|
||||||
CONFIG_IPV6_SIT=m
|
|
||||||
CONFIG_IPV6_GRE=m
|
|
||||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
|
||||||
CONFIG_IPV6_SUBTREES=y
|
|
||||||
CONFIG_NETFILTER=y
|
|
||||||
CONFIG_NF_CONNTRACK=m
|
|
||||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
|
||||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
|
||||||
CONFIG_NF_CONNTRACK_TIMEOUT=y
|
|
||||||
CONFIG_NF_CONNTRACK_TIMESTAMP=y
|
|
||||||
CONFIG_NF_CONNTRACK_AMANDA=m
|
|
||||||
CONFIG_NF_CONNTRACK_FTP=m
|
|
||||||
CONFIG_NF_CONNTRACK_H323=m
|
|
||||||
CONFIG_NF_CONNTRACK_IRC=m
|
|
||||||
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
|
|
||||||
CONFIG_NF_CONNTRACK_SNMP=m
|
|
||||||
CONFIG_NF_CONNTRACK_PPTP=m
|
|
||||||
CONFIG_NF_CONNTRACK_SANE=m
|
|
||||||
CONFIG_NF_CONNTRACK_SIP=m
|
|
||||||
CONFIG_NF_CONNTRACK_TFTP=m
|
|
||||||
CONFIG_NF_CT_NETLINK=m
|
|
||||||
CONFIG_NF_CT_NETLINK_TIMEOUT=m
|
|
||||||
CONFIG_NF_TABLES=m
|
|
||||||
CONFIG_NFT_EXTHDR=m
|
|
||||||
CONFIG_NFT_META=m
|
|
||||||
CONFIG_NFT_CT=m
|
|
||||||
CONFIG_NFT_COUNTER=m
|
|
||||||
CONFIG_NFT_LOG=m
|
|
||||||
CONFIG_NFT_LIMIT=m
|
|
||||||
CONFIG_NFT_NAT=m
|
|
||||||
CONFIG_NFT_COMPAT=m
|
|
||||||
CONFIG_NFT_HASH=m
|
|
||||||
CONFIG_NETFILTER_XT_SET=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_AUDIT=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_CT=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_DSCP=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_HMARK=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_LOG=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_MARK=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_TEE=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_TRACE=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
|
|
||||||
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_BPF=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_DSCP=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_ESP=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_HELPER=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_IPVS=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_MAC=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_MARK=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_NFACCT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_OSF=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_OWNER=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_POLICY=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_REALM=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_RECENT=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_STATE=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_TIME=m
|
|
||||||
CONFIG_NETFILTER_XT_MATCH_U32=m
|
|
||||||
CONFIG_IP_SET=m
|
|
||||||
CONFIG_IP_SET_BITMAP_IP=m
|
|
||||||
CONFIG_IP_SET_BITMAP_IPMAC=m
|
|
||||||
CONFIG_IP_SET_BITMAP_PORT=m
|
|
||||||
CONFIG_IP_SET_HASH_IP=m
|
|
||||||
CONFIG_IP_SET_HASH_IPPORT=m
|
|
||||||
CONFIG_IP_SET_HASH_IPPORTIP=m
|
|
||||||
CONFIG_IP_SET_HASH_IPPORTNET=m
|
|
||||||
CONFIG_IP_SET_HASH_NETPORTNET=m
|
|
||||||
CONFIG_IP_SET_HASH_NET=m
|
|
||||||
CONFIG_IP_SET_HASH_NETNET=m
|
|
||||||
CONFIG_IP_SET_HASH_NETPORT=m
|
|
||||||
CONFIG_IP_SET_HASH_NETIFACE=m
|
|
||||||
CONFIG_IP_SET_LIST_SET=m
|
|
||||||
CONFIG_IP_VS=m
|
|
||||||
CONFIG_IP_VS_PROTO_TCP=y
|
|
||||||
CONFIG_IP_VS_PROTO_UDP=y
|
|
||||||
CONFIG_IP_VS_PROTO_ESP=y
|
|
||||||
CONFIG_IP_VS_PROTO_AH=y
|
|
||||||
CONFIG_IP_VS_RR=m
|
|
||||||
CONFIG_IP_VS_WRR=m
|
|
||||||
CONFIG_IP_VS_LC=m
|
|
||||||
CONFIG_IP_VS_WLC=m
|
|
||||||
CONFIG_IP_VS_LBLC=m
|
|
||||||
CONFIG_IP_VS_LBLCR=m
|
|
||||||
CONFIG_IP_VS_DH=m
|
|
||||||
CONFIG_IP_VS_SH=m
|
|
||||||
CONFIG_IP_VS_SED=m
|
|
||||||
CONFIG_IP_VS_NQ=m
|
|
||||||
CONFIG_IP_VS_FTP=m
|
|
||||||
CONFIG_IP_VS_PE_SIP=m
|
|
||||||
CONFIG_NF_CONNTRACK_IPV4=m
|
|
||||||
CONFIG_NF_TABLES_IPV4=m
|
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
|
||||||
CONFIG_NF_TABLES_ARP=m
|
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
|
||||||
CONFIG_IP_NF_IPTABLES=m
|
|
||||||
CONFIG_IP_NF_MATCH_AH=m
|
|
||||||
CONFIG_IP_NF_MATCH_ECN=m
|
|
||||||
CONFIG_IP_NF_MATCH_RPFILTER=m
|
|
||||||
CONFIG_IP_NF_MATCH_TTL=m
|
|
||||||
CONFIG_IP_NF_FILTER=m
|
|
||||||
CONFIG_IP_NF_TARGET_REJECT=m
|
|
||||||
CONFIG_IP_NF_NAT=m
|
|
||||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
|
||||||
CONFIG_IP_NF_MANGLE=m
|
|
||||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
|
||||||
CONFIG_IP_NF_TARGET_ECN=m
|
|
||||||
CONFIG_IP_NF_TARGET_TTL=m
|
|
||||||
CONFIG_IP_NF_RAW=m
|
|
||||||
CONFIG_IP_NF_SECURITY=m
|
|
||||||
CONFIG_IP_NF_ARPTABLES=m
|
|
||||||
CONFIG_IP_NF_ARPFILTER=m
|
|
||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
|
||||||
CONFIG_NF_CONNTRACK_IPV6=m
|
|
||||||
CONFIG_NF_TABLES_IPV6=m
|
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
|
||||||
CONFIG_IP6_NF_IPTABLES=m
|
|
||||||
CONFIG_IP6_NF_MATCH_AH=m
|
|
||||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
|
||||||
CONFIG_IP6_NF_MATCH_FRAG=m
|
|
||||||
CONFIG_IP6_NF_MATCH_OPTS=m
|
|
||||||
CONFIG_IP6_NF_MATCH_HL=m
|
|
||||||
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
|
||||||
CONFIG_IP6_NF_MATCH_MH=m
|
|
||||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
|
||||||
CONFIG_IP6_NF_MATCH_RT=m
|
|
||||||
CONFIG_IP6_NF_TARGET_HL=m
|
|
||||||
CONFIG_IP6_NF_FILTER=m
|
|
||||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
|
||||||
CONFIG_IP6_NF_MANGLE=m
|
|
||||||
CONFIG_IP6_NF_RAW=m
|
|
||||||
CONFIG_IP6_NF_SECURITY=m
|
|
||||||
CONFIG_IP6_NF_NAT=m
|
|
||||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
|
||||||
CONFIG_NF_TABLES_BRIDGE=m
|
|
||||||
CONFIG_NET_SCTPPROBE=m
|
|
||||||
CONFIG_RDS=m
|
|
||||||
CONFIG_RDS_RDMA=m
|
|
||||||
CONFIG_RDS_TCP=m
|
|
||||||
CONFIG_L2TP=m
|
|
||||||
CONFIG_L2TP_DEBUGFS=m
|
|
||||||
CONFIG_L2TP_V3=y
|
|
||||||
CONFIG_L2TP_IP=m
|
|
||||||
CONFIG_L2TP_ETH=m
|
|
||||||
CONFIG_BRIDGE=m
|
|
||||||
CONFIG_VLAN_8021Q=m
|
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
|
||||||
CONFIG_NET_SCHED=y
|
|
||||||
CONFIG_NET_SCH_CBQ=m
|
|
||||||
CONFIG_NET_SCH_HTB=m
|
|
||||||
CONFIG_NET_SCH_HFSC=m
|
|
||||||
CONFIG_NET_SCH_PRIO=m
|
|
||||||
CONFIG_NET_SCH_MULTIQ=m
|
|
||||||
CONFIG_NET_SCH_RED=m
|
|
||||||
CONFIG_NET_SCH_SFB=m
|
|
||||||
CONFIG_NET_SCH_SFQ=m
|
|
||||||
CONFIG_NET_SCH_TEQL=m
|
|
||||||
CONFIG_NET_SCH_TBF=m
|
|
||||||
CONFIG_NET_SCH_GRED=m
|
|
||||||
CONFIG_NET_SCH_DSMARK=m
|
|
||||||
CONFIG_NET_SCH_NETEM=m
|
|
||||||
CONFIG_NET_SCH_DRR=m
|
|
||||||
CONFIG_NET_SCH_MQPRIO=m
|
|
||||||
CONFIG_NET_SCH_CHOKE=m
|
|
||||||
CONFIG_NET_SCH_QFQ=m
|
|
||||||
CONFIG_NET_SCH_CODEL=m
|
|
||||||
CONFIG_NET_SCH_FQ_CODEL=m
|
|
||||||
CONFIG_NET_SCH_INGRESS=m
|
|
||||||
CONFIG_NET_SCH_PLUG=m
|
|
||||||
CONFIG_NET_CLS_BASIC=m
|
|
||||||
CONFIG_NET_CLS_TCINDEX=m
|
|
||||||
CONFIG_NET_CLS_ROUTE4=m
|
|
||||||
CONFIG_NET_CLS_FW=m
|
|
||||||
CONFIG_NET_CLS_U32=m
|
|
||||||
CONFIG_CLS_U32_PERF=y
|
|
||||||
CONFIG_CLS_U32_MARK=y
|
|
||||||
CONFIG_NET_CLS_RSVP=m
|
|
||||||
CONFIG_NET_CLS_RSVP6=m
|
|
||||||
CONFIG_NET_CLS_FLOW=m
|
|
||||||
CONFIG_NET_CLS_CGROUP=y
|
|
||||||
CONFIG_NET_CLS_BPF=m
|
|
||||||
CONFIG_NET_CLS_ACT=y
|
|
||||||
CONFIG_NET_ACT_POLICE=m
|
|
||||||
CONFIG_NET_ACT_GACT=m
|
|
||||||
CONFIG_GACT_PROB=y
|
|
||||||
CONFIG_NET_ACT_MIRRED=m
|
|
||||||
CONFIG_NET_ACT_IPT=m
|
|
||||||
CONFIG_NET_ACT_NAT=m
|
|
||||||
CONFIG_NET_ACT_PEDIT=m
|
|
||||||
CONFIG_NET_ACT_SIMP=m
|
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
|
||||||
CONFIG_NET_ACT_CSUM=m
|
|
||||||
CONFIG_DNS_RESOLVER=y
|
|
||||||
CONFIG_NETLINK_DIAG=m
|
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
|
||||||
CONFIG_BPF_JIT=y
|
|
||||||
CONFIG_NET_PKTGEN=m
|
|
||||||
CONFIG_NET_TCPPROBE=m
|
|
||||||
CONFIG_DEVTMPFS=y
|
|
||||||
CONFIG_DMA_CMA=y
|
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
|
||||||
CONFIG_CONNECTOR=y
|
|
||||||
CONFIG_ZRAM=m
|
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|
||||||
CONFIG_BLK_DEV_DRBD=m
|
|
||||||
CONFIG_BLK_DEV_NBD=m
|
|
||||||
CONFIG_BLK_DEV_RAM=y
|
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
|
||||||
CONFIG_BLK_DEV_RAM_DAX=y
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
|
||||||
CONFIG_GENWQE=m
|
|
||||||
CONFIG_RAID_ATTRS=m
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_CHR_DEV_ST=m
|
|
||||||
CONFIG_CHR_DEV_OSST=m
|
|
||||||
CONFIG_BLK_DEV_SR=m
|
|
||||||
CONFIG_CHR_DEV_SG=y
|
|
||||||
CONFIG_CHR_DEV_SCH=m
|
|
||||||
CONFIG_SCSI_ENCLOSURE=m
|
|
||||||
CONFIG_SCSI_CONSTANTS=y
|
|
||||||
CONFIG_SCSI_LOGGING=y
|
|
||||||
CONFIG_SCSI_SPI_ATTRS=m
|
|
||||||
CONFIG_SCSI_FC_ATTRS=y
|
|
||||||
CONFIG_SCSI_SAS_LIBSAS=m
|
|
||||||
CONFIG_SCSI_SRP_ATTRS=m
|
|
||||||
CONFIG_ISCSI_TCP=m
|
|
||||||
CONFIG_SCSI_DEBUG=m
|
|
||||||
CONFIG_ZFCP=y
|
|
||||||
CONFIG_SCSI_VIRTIO=m
|
|
||||||
CONFIG_SCSI_DH=y
|
|
||||||
CONFIG_SCSI_DH_RDAC=m
|
|
||||||
CONFIG_SCSI_DH_HP_SW=m
|
|
||||||
CONFIG_SCSI_DH_EMC=m
|
|
||||||
CONFIG_SCSI_DH_ALUA=m
|
|
||||||
CONFIG_SCSI_OSD_INITIATOR=m
|
|
||||||
CONFIG_SCSI_OSD_ULD=m
|
|
||||||
CONFIG_MD=y
|
|
||||||
CONFIG_BLK_DEV_MD=y
|
|
||||||
CONFIG_MD_LINEAR=m
|
|
||||||
CONFIG_MD_MULTIPATH=m
|
|
||||||
CONFIG_MD_FAULTY=m
|
|
||||||
CONFIG_BLK_DEV_DM=m
|
|
||||||
CONFIG_DM_CRYPT=m
|
|
||||||
CONFIG_DM_SNAPSHOT=m
|
|
||||||
CONFIG_DM_THIN_PROVISIONING=m
|
|
||||||
CONFIG_DM_MIRROR=m
|
|
||||||
CONFIG_DM_LOG_USERSPACE=m
|
|
||||||
CONFIG_DM_RAID=m
|
|
||||||
CONFIG_DM_ZERO=m
|
|
||||||
CONFIG_DM_MULTIPATH=m
|
|
||||||
CONFIG_DM_MULTIPATH_QL=m
|
|
||||||
CONFIG_DM_MULTIPATH_ST=m
|
|
||||||
CONFIG_DM_DELAY=m
|
|
||||||
CONFIG_DM_UEVENT=y
|
|
||||||
CONFIG_DM_FLAKEY=m
|
|
||||||
CONFIG_DM_VERITY=m
|
|
||||||
CONFIG_DM_SWITCH=m
|
|
||||||
CONFIG_NETDEVICES=y
|
|
||||||
CONFIG_BONDING=m
|
|
||||||
CONFIG_DUMMY=m
|
|
||||||
CONFIG_EQUALIZER=m
|
|
||||||
CONFIG_IFB=m
|
|
||||||
CONFIG_MACVLAN=m
|
|
||||||
CONFIG_MACVTAP=m
|
|
||||||
CONFIG_VXLAN=m
|
|
||||||
CONFIG_TUN=m
|
|
||||||
CONFIG_VETH=m
|
|
||||||
CONFIG_VIRTIO_NET=m
|
|
||||||
CONFIG_NLMON=m
|
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
|
||||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
|
||||||
CONFIG_MLX4_EN=m
|
|
||||||
CONFIG_MLX5_CORE=m
|
|
||||||
CONFIG_MLX5_CORE_EN=y
|
|
||||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
|
||||||
CONFIG_PPP=m
|
|
||||||
CONFIG_PPP_BSDCOMP=m
|
|
||||||
CONFIG_PPP_DEFLATE=m
|
|
||||||
CONFIG_PPP_MPPE=m
|
|
||||||
CONFIG_PPPOE=m
|
|
||||||
CONFIG_PPTP=m
|
|
||||||
CONFIG_PPPOL2TP=m
|
|
||||||
CONFIG_PPP_ASYNC=m
|
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
|
||||||
# CONFIG_SERIO is not set
|
|
||||||
CONFIG_LEGACY_PTY_COUNT=0
|
|
||||||
CONFIG_HW_RANDOM_VIRTIO=m
|
|
||||||
CONFIG_RAW_DRIVER=m
|
|
||||||
CONFIG_HANGCHECK_TIMER=m
|
|
||||||
CONFIG_TN3270_FS=y
|
|
||||||
# CONFIG_HWMON is not set
|
|
||||||
CONFIG_WATCHDOG=y
|
|
||||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
|
||||||
CONFIG_SOFT_WATCHDOG=m
|
|
||||||
CONFIG_DIAG288_WATCHDOG=m
|
|
||||||
# CONFIG_HID is not set
|
|
||||||
# CONFIG_USB_SUPPORT is not set
|
|
||||||
CONFIG_INFINIBAND=m
|
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
|
||||||
CONFIG_MLX5_INFINIBAND=m
|
|
||||||
CONFIG_VFIO=m
|
|
||||||
CONFIG_VFIO_PCI=m
|
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
|
||||||
CONFIG_EXT4_FS_SECURITY=y
|
|
||||||
CONFIG_EXT4_ENCRYPTION=y
|
|
||||||
CONFIG_JBD2_DEBUG=y
|
|
||||||
CONFIG_JFS_FS=m
|
|
||||||
CONFIG_JFS_POSIX_ACL=y
|
|
||||||
CONFIG_JFS_SECURITY=y
|
|
||||||
CONFIG_JFS_STATISTICS=y
|
|
||||||
CONFIG_XFS_FS=y
|
|
||||||
CONFIG_XFS_QUOTA=y
|
|
||||||
CONFIG_XFS_POSIX_ACL=y
|
|
||||||
CONFIG_XFS_RT=y
|
|
||||||
CONFIG_GFS2_FS=m
|
|
||||||
CONFIG_GFS2_FS_LOCKING_DLM=y
|
|
||||||
CONFIG_OCFS2_FS=m
|
|
||||||
CONFIG_BTRFS_FS=y
|
|
||||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
|
||||||
CONFIG_NILFS2_FS=m
|
|
||||||
CONFIG_FS_DAX=y
|
|
||||||
CONFIG_EXPORTFS_BLOCK_OPS=y
|
|
||||||
CONFIG_FANOTIFY=y
|
|
||||||
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
|
||||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
|
||||||
CONFIG_QFMT_V1=m
|
|
||||||
CONFIG_QFMT_V2=m
|
|
||||||
CONFIG_AUTOFS4_FS=m
|
|
||||||
CONFIG_FUSE_FS=y
|
|
||||||
CONFIG_CUSE=m
|
|
||||||
CONFIG_OVERLAY_FS=m
|
|
||||||
CONFIG_OVERLAY_FS_REDIRECT_DIR=y
|
|
||||||
CONFIG_FSCACHE=m
|
|
||||||
CONFIG_CACHEFILES=m
|
|
||||||
CONFIG_ISO9660_FS=y
|
|
||||||
CONFIG_JOLIET=y
|
|
||||||
CONFIG_ZISOFS=y
|
|
||||||
CONFIG_UDF_FS=m
|
|
||||||
CONFIG_MSDOS_FS=m
|
|
||||||
CONFIG_VFAT_FS=m
|
|
||||||
CONFIG_NTFS_FS=m
|
|
||||||
CONFIG_NTFS_RW=y
|
|
||||||
CONFIG_PROC_KCORE=y
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
CONFIG_TMPFS_POSIX_ACL=y
|
|
||||||
CONFIG_HUGETLBFS=y
|
|
||||||
CONFIG_CONFIGFS_FS=m
|
|
||||||
CONFIG_ECRYPT_FS=m
|
|
||||||
CONFIG_CRAMFS=m
|
|
||||||
CONFIG_SQUASHFS=m
|
|
||||||
CONFIG_SQUASHFS_XATTR=y
|
|
||||||
CONFIG_SQUASHFS_LZO=y
|
|
||||||
CONFIG_SQUASHFS_XZ=y
|
|
||||||
CONFIG_ROMFS_FS=m
|
|
||||||
CONFIG_NFS_FS=m
|
|
||||||
CONFIG_NFS_V3_ACL=y
|
|
||||||
CONFIG_NFS_V4=m
|
|
||||||
CONFIG_NFS_SWAP=y
|
|
||||||
CONFIG_NFSD=m
|
|
||||||
CONFIG_NFSD_V3_ACL=y
|
|
||||||
CONFIG_NFSD_V4=y
|
|
||||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
|
||||||
CONFIG_CIFS=m
|
|
||||||
CONFIG_CIFS_STATS=y
|
|
||||||
CONFIG_CIFS_STATS2=y
|
|
||||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
|
||||||
CONFIG_CIFS_UPCALL=y
|
|
||||||
CONFIG_CIFS_XATTR=y
|
|
||||||
CONFIG_CIFS_POSIX=y
|
|
||||||
# CONFIG_CIFS_DEBUG is not set
|
|
||||||
CONFIG_CIFS_DFS_UPCALL=y
|
|
||||||
CONFIG_NLS_DEFAULT="utf8"
|
|
||||||
CONFIG_NLS_CODEPAGE_437=m
|
|
||||||
CONFIG_NLS_CODEPAGE_850=m
|
|
||||||
CONFIG_NLS_ASCII=m
|
|
||||||
CONFIG_NLS_ISO8859_1=m
|
|
||||||
CONFIG_NLS_ISO8859_15=m
|
|
||||||
CONFIG_NLS_UTF8=m
|
|
||||||
CONFIG_DLM=m
|
|
||||||
CONFIG_PRINTK_TIME=y
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
CONFIG_DEBUG_INFO_DWARF4=y
|
|
||||||
CONFIG_GDB_SCRIPTS=y
|
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
|
||||||
CONFIG_FRAME_WARN=1024
|
|
||||||
CONFIG_UNUSED_SYMBOLS=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_DEBUG_MEMORY_INIT=y
|
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
|
||||||
CONFIG_RCU_TORTURE_TEST=m
|
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
|
||||||
CONFIG_LATENCYTOP=y
|
|
||||||
CONFIG_SCHED_TRACER=y
|
|
||||||
CONFIG_FTRACE_SYSCALLS=y
|
|
||||||
CONFIG_STACK_TRACER=y
|
|
||||||
CONFIG_BLK_DEV_IO_TRACE=y
|
|
||||||
CONFIG_FUNCTION_PROFILER=y
|
|
||||||
CONFIG_HIST_TRIGGERS=y
|
|
||||||
CONFIG_LKDTM=m
|
|
||||||
CONFIG_PERCPU_TEST=m
|
|
||||||
CONFIG_ATOMIC64_SELFTEST=y
|
|
||||||
CONFIG_TEST_BPF=m
|
|
||||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
|
||||||
CONFIG_S390_PTDUMP=y
|
|
||||||
CONFIG_PERSISTENT_KEYRINGS=y
|
|
||||||
CONFIG_BIG_KEYS=y
|
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
|
||||||
CONFIG_SECURITY=y
|
|
||||||
CONFIG_SECURITY_NETWORK=y
|
|
||||||
CONFIG_SECURITY_SELINUX=y
|
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
|
||||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
|
||||||
CONFIG_IMA=y
|
|
||||||
CONFIG_IMA_WRITE_POLICY=y
|
|
||||||
CONFIG_IMA_APPRAISE=y
|
|
||||||
CONFIG_CRYPTO_DH=m
|
|
||||||
CONFIG_CRYPTO_ECDH=m
|
|
||||||
CONFIG_CRYPTO_USER=m
|
|
||||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
|
||||||
CONFIG_CRYPTO_PCRYPT=m
|
|
||||||
CONFIG_CRYPTO_CRYPTD=m
|
|
||||||
CONFIG_CRYPTO_MCRYPTD=m
|
|
||||||
CONFIG_CRYPTO_TEST=m
|
|
||||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
|
||||||
CONFIG_CRYPTO_LRW=m
|
|
||||||
CONFIG_CRYPTO_PCBC=m
|
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
|
||||||
CONFIG_CRYPTO_XCBC=m
|
|
||||||
CONFIG_CRYPTO_VMAC=m
|
|
||||||
CONFIG_CRYPTO_CRC32=m
|
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
|
||||||
CONFIG_CRYPTO_RMD128=m
|
|
||||||
CONFIG_CRYPTO_RMD160=m
|
|
||||||
CONFIG_CRYPTO_RMD256=m
|
|
||||||
CONFIG_CRYPTO_RMD320=m
|
|
||||||
CONFIG_CRYPTO_SHA512=m
|
|
||||||
CONFIG_CRYPTO_SHA3=m
|
|
||||||
CONFIG_CRYPTO_TGR192=m
|
|
||||||
CONFIG_CRYPTO_WP512=m
|
|
||||||
CONFIG_CRYPTO_AES_TI=m
|
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
|
||||||
CONFIG_CRYPTO_CAST5=m
|
|
||||||
CONFIG_CRYPTO_CAST6=m
|
|
||||||
CONFIG_CRYPTO_FCRYPT=m
|
|
||||||
CONFIG_CRYPTO_KHAZAD=m
|
|
||||||
CONFIG_CRYPTO_SALSA20=m
|
|
||||||
CONFIG_CRYPTO_SEED=m
|
|
||||||
CONFIG_CRYPTO_SERPENT=m
|
|
||||||
CONFIG_CRYPTO_TEA=m
|
|
||||||
CONFIG_CRYPTO_TWOFISH=m
|
|
||||||
CONFIG_CRYPTO_842=m
|
|
||||||
CONFIG_CRYPTO_LZ4=m
|
|
||||||
CONFIG_CRYPTO_LZ4HC=m
|
|
||||||
CONFIG_CRYPTO_ANSI_CPRNG=m
|
|
||||||
CONFIG_CRYPTO_USER_API_HASH=m
|
|
||||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
|
||||||
CONFIG_ZCRYPT=m
|
|
||||||
CONFIG_PKEY=m
|
|
||||||
CONFIG_CRYPTO_PAES_S390=m
|
|
||||||
CONFIG_CRYPTO_SHA1_S390=m
|
|
||||||
CONFIG_CRYPTO_SHA256_S390=m
|
|
||||||
CONFIG_CRYPTO_SHA512_S390=m
|
|
||||||
CONFIG_CRYPTO_DES_S390=m
|
|
||||||
CONFIG_CRYPTO_AES_S390=m
|
|
||||||
CONFIG_CRYPTO_GHASH_S390=m
|
|
||||||
CONFIG_CRYPTO_CRC32_S390=y
|
|
||||||
CONFIG_CRC7=m
|
|
||||||
CONFIG_CRC8=m
|
|
||||||
CONFIG_CORDIC=m
|
|
||||||
CONFIG_CMM=m
|
|
||||||
CONFIG_APPLDATA_BASE=y
|
|
||||||
CONFIG_KVM=m
|
|
||||||
CONFIG_KVM_S390_UCONTROL=y
|
|
||||||
CONFIG_VHOST_NET=m
|
|
|
@ -25,13 +25,13 @@ CONFIG_CPUSETS=y
|
||||||
CONFIG_CGROUP_DEVICE=y
|
CONFIG_CGROUP_DEVICE=y
|
||||||
CONFIG_CGROUP_CPUACCT=y
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
CONFIG_CGROUP_PERF=y
|
CONFIG_CGROUP_PERF=y
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
|
||||||
CONFIG_NAMESPACES=y
|
CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
|
CONFIG_CHECKPOINT_RESTORE=y
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -45,6 +45,8 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||||
|
CONFIG_MODULE_SIG=y
|
||||||
|
CONFIG_MODULE_SIG_SHA256=y
|
||||||
CONFIG_BLK_DEV_INTEGRITY=y
|
CONFIG_BLK_DEV_INTEGRITY=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
CONFIG_BLK_WBT=y
|
CONFIG_BLK_WBT=y
|
||||||
|
@ -62,6 +64,7 @@ CONFIG_TUNE_ZEC12=y
|
||||||
CONFIG_NR_CPUS=512
|
CONFIG_NR_CPUS=512
|
||||||
CONFIG_NUMA=y
|
CONFIG_NUMA=y
|
||||||
CONFIG_HZ_100=y
|
CONFIG_HZ_100=y
|
||||||
|
CONFIG_KEXEC_FILE=y
|
||||||
CONFIG_MEMORY_HOTPLUG=y
|
CONFIG_MEMORY_HOTPLUG=y
|
||||||
CONFIG_MEMORY_HOTREMOVE=y
|
CONFIG_MEMORY_HOTREMOVE=y
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
|
@ -301,7 +304,6 @@ CONFIG_IP6_NF_SECURITY=m
|
||||||
CONFIG_IP6_NF_NAT=m
|
CONFIG_IP6_NF_NAT=m
|
||||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||||
CONFIG_NF_TABLES_BRIDGE=m
|
CONFIG_NF_TABLES_BRIDGE=m
|
||||||
CONFIG_NET_SCTPPROBE=m
|
|
||||||
CONFIG_RDS=m
|
CONFIG_RDS=m
|
||||||
CONFIG_RDS_RDMA=m
|
CONFIG_RDS_RDMA=m
|
||||||
CONFIG_RDS_TCP=m
|
CONFIG_RDS_TCP=m
|
||||||
|
@ -359,11 +361,11 @@ CONFIG_NET_ACT_SIMP=m
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
CONFIG_NET_ACT_SKBEDIT=m
|
||||||
CONFIG_NET_ACT_CSUM=m
|
CONFIG_NET_ACT_CSUM=m
|
||||||
CONFIG_DNS_RESOLVER=y
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
CONFIG_OPENVSWITCH=m
|
||||||
CONFIG_NETLINK_DIAG=m
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
CONFIG_NET_TCPPROBE=m
|
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
|
@ -375,8 +377,9 @@ CONFIG_BLK_DEV_DRBD=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
CONFIG_BLK_DEV_RAM_DAX=y
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
CONFIG_VIRTIO_BLK=y
|
||||||
|
CONFIG_BLK_DEV_RBD=m
|
||||||
|
CONFIG_BLK_DEV_NVME=m
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
CONFIG_ENCLOSURE_SERVICES=m
|
||||||
CONFIG_GENWQE=m
|
CONFIG_GENWQE=m
|
||||||
CONFIG_RAID_ATTRS=m
|
CONFIG_RAID_ATTRS=m
|
||||||
|
@ -455,6 +458,7 @@ CONFIG_PPTP=m
|
||||||
CONFIG_PPPOL2TP=m
|
CONFIG_PPPOL2TP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
CONFIG_PPP_SYNC_TTY=m
|
||||||
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
@ -468,6 +472,9 @@ 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=y
|
||||||
|
CONFIG_DRM_VIRTIO_GPU=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
# CONFIG_HID is not set
|
# CONFIG_HID is not set
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
|
@ -476,7 +483,9 @@ CONFIG_MLX4_INFINIBAND=m
|
||||||
CONFIG_MLX5_INFINIBAND=m
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_VFIO=m
|
CONFIG_VFIO=m
|
||||||
CONFIG_VFIO_PCI=m
|
CONFIG_VFIO_PCI=m
|
||||||
|
CONFIG_VIRTIO_PCI=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
|
CONFIG_VIRTIO_INPUT=y
|
||||||
CONFIG_EXT4_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
CONFIG_EXT4_FS_SECURITY=y
|
CONFIG_EXT4_FS_SECURITY=y
|
||||||
|
@ -507,7 +516,6 @@ CONFIG_AUTOFS4_FS=m
|
||||||
CONFIG_FUSE_FS=y
|
CONFIG_FUSE_FS=y
|
||||||
CONFIG_CUSE=m
|
CONFIG_CUSE=m
|
||||||
CONFIG_OVERLAY_FS=m
|
CONFIG_OVERLAY_FS=m
|
||||||
CONFIG_OVERLAY_FS_REDIRECT_DIR=y
|
|
||||||
CONFIG_FSCACHE=m
|
CONFIG_FSCACHE=m
|
||||||
CONFIG_CACHEFILES=m
|
CONFIG_CACHEFILES=m
|
||||||
CONFIG_ISO9660_FS=y
|
CONFIG_ISO9660_FS=y
|
||||||
|
@ -592,8 +600,10 @@ CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_IMA=y
|
CONFIG_IMA=y
|
||||||
|
CONFIG_IMA_DEFAULT_HASH_SHA256=y
|
||||||
CONFIG_IMA_WRITE_POLICY=y
|
CONFIG_IMA_WRITE_POLICY=y
|
||||||
CONFIG_IMA_APPRAISE=y
|
CONFIG_IMA_APPRAISE=y
|
||||||
|
CONFIG_CRYPTO_FIPS=y
|
||||||
CONFIG_CRYPTO_DH=m
|
CONFIG_CRYPTO_DH=m
|
||||||
CONFIG_CRYPTO_ECDH=m
|
CONFIG_CRYPTO_ECDH=m
|
||||||
CONFIG_CRYPTO_USER=m
|
CONFIG_CRYPTO_USER=m
|
||||||
|
|
|
@ -329,7 +329,7 @@ static void fallback_exit_blk(struct crypto_tfm *tfm)
|
||||||
static struct crypto_alg ecb_aes_alg = {
|
static struct crypto_alg ecb_aes_alg = {
|
||||||
.cra_name = "ecb(aes)",
|
.cra_name = "ecb(aes)",
|
||||||
.cra_driver_name = "ecb-aes-s390",
|
.cra_driver_name = "ecb-aes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + ecb */
|
.cra_priority = 401, /* combo: aes + ecb + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
||||||
CRYPTO_ALG_NEED_FALLBACK,
|
CRYPTO_ALG_NEED_FALLBACK,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
|
@ -426,7 +426,7 @@ static int cbc_aes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg cbc_aes_alg = {
|
static struct crypto_alg cbc_aes_alg = {
|
||||||
.cra_name = "cbc(aes)",
|
.cra_name = "cbc(aes)",
|
||||||
.cra_driver_name = "cbc-aes-s390",
|
.cra_driver_name = "cbc-aes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + cbc */
|
.cra_priority = 402, /* ecb-aes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
||||||
CRYPTO_ALG_NEED_FALLBACK,
|
CRYPTO_ALG_NEED_FALLBACK,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
|
@ -633,7 +633,7 @@ static void xts_fallback_exit(struct crypto_tfm *tfm)
|
||||||
static struct crypto_alg xts_aes_alg = {
|
static struct crypto_alg xts_aes_alg = {
|
||||||
.cra_name = "xts(aes)",
|
.cra_name = "xts(aes)",
|
||||||
.cra_driver_name = "xts-aes-s390",
|
.cra_driver_name = "xts-aes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + xts */
|
.cra_priority = 402, /* ecb-aes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
||||||
CRYPTO_ALG_NEED_FALLBACK,
|
CRYPTO_ALG_NEED_FALLBACK,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
|
@ -763,7 +763,7 @@ static int ctr_aes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg ctr_aes_alg = {
|
static struct crypto_alg ctr_aes_alg = {
|
||||||
.cra_name = "ctr(aes)",
|
.cra_name = "ctr(aes)",
|
||||||
.cra_driver_name = "ctr-aes-s390",
|
.cra_driver_name = "ctr-aes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + ctr */
|
.cra_priority = 402, /* ecb-aes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER |
|
||||||
CRYPTO_ALG_NEED_FALLBACK,
|
CRYPTO_ALG_NEED_FALLBACK,
|
||||||
.cra_blocksize = 1,
|
.cra_blocksize = 1,
|
||||||
|
|
|
@ -138,7 +138,7 @@ static int ecb_paes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg ecb_paes_alg = {
|
static struct crypto_alg ecb_paes_alg = {
|
||||||
.cra_name = "ecb(paes)",
|
.cra_name = "ecb(paes)",
|
||||||
.cra_driver_name = "ecb-paes-s390",
|
.cra_driver_name = "ecb-paes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + ecb */
|
.cra_priority = 401, /* combo: aes + ecb + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
||||||
|
@ -241,7 +241,7 @@ static int cbc_paes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg cbc_paes_alg = {
|
static struct crypto_alg cbc_paes_alg = {
|
||||||
.cra_name = "cbc(paes)",
|
.cra_name = "cbc(paes)",
|
||||||
.cra_driver_name = "cbc-paes-s390",
|
.cra_driver_name = "cbc-paes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + cbc */
|
.cra_priority = 402, /* ecb-paes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
||||||
|
@ -377,7 +377,7 @@ static int xts_paes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg xts_paes_alg = {
|
static struct crypto_alg xts_paes_alg = {
|
||||||
.cra_name = "xts(paes)",
|
.cra_name = "xts(paes)",
|
||||||
.cra_driver_name = "xts-paes-s390",
|
.cra_driver_name = "xts-paes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + xts */
|
.cra_priority = 402, /* ecb-paes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||||
.cra_blocksize = AES_BLOCK_SIZE,
|
.cra_blocksize = AES_BLOCK_SIZE,
|
||||||
.cra_ctxsize = sizeof(struct s390_pxts_ctx),
|
.cra_ctxsize = sizeof(struct s390_pxts_ctx),
|
||||||
|
@ -523,7 +523,7 @@ static int ctr_paes_decrypt(struct blkcipher_desc *desc,
|
||||||
static struct crypto_alg ctr_paes_alg = {
|
static struct crypto_alg ctr_paes_alg = {
|
||||||
.cra_name = "ctr(paes)",
|
.cra_name = "ctr(paes)",
|
||||||
.cra_driver_name = "ctr-paes-s390",
|
.cra_driver_name = "ctr-paes-s390",
|
||||||
.cra_priority = 400, /* combo: aes + ctr */
|
.cra_priority = 402, /* ecb-paes-s390 + 1 */
|
||||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||||
.cra_blocksize = 1,
|
.cra_blocksize = 1,
|
||||||
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
.cra_ctxsize = sizeof(struct s390_paes_ctx),
|
||||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_TASKSTATS=y
|
||||||
CONFIG_TASK_DELAY_ACCT=y
|
CONFIG_TASK_DELAY_ACCT=y
|
||||||
CONFIG_TASK_XACCT=y
|
CONFIG_TASK_XACCT=y
|
||||||
CONFIG_TASK_IO_ACCOUNTING=y
|
CONFIG_TASK_IO_ACCOUNTING=y
|
||||||
|
# CONFIG_CPU_ISOLATION is not set
|
||||||
CONFIG_IKCONFIG=y
|
CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_CGROUPS=y
|
CONFIG_CGROUPS=y
|
||||||
|
@ -23,12 +24,12 @@ CONFIG_CPUSETS=y
|
||||||
CONFIG_CGROUP_DEVICE=y
|
CONFIG_CGROUP_DEVICE=y
|
||||||
CONFIG_CGROUP_CPUACCT=y
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
CONFIG_CGROUP_PERF=y
|
CONFIG_CGROUP_PERF=y
|
||||||
CONFIG_CHECKPOINT_RESTORE=y
|
|
||||||
CONFIG_NAMESPACES=y
|
CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
# CONFIG_SYSFS_SYSCALL is not set
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
|
CONFIG_CHECKPOINT_RESTORE=y
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -47,6 +48,7 @@ CONFIG_LIVEPATCH=y
|
||||||
CONFIG_NR_CPUS=256
|
CONFIG_NR_CPUS=256
|
||||||
CONFIG_NUMA=y
|
CONFIG_NUMA=y
|
||||||
CONFIG_HZ_100=y
|
CONFIG_HZ_100=y
|
||||||
|
CONFIG_KEXEC_FILE=y
|
||||||
CONFIG_MEMORY_HOTPLUG=y
|
CONFIG_MEMORY_HOTPLUG=y
|
||||||
CONFIG_MEMORY_HOTREMOVE=y
|
CONFIG_MEMORY_HOTREMOVE=y
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
|
@ -129,10 +131,13 @@ CONFIG_EQUALIZER=m
|
||||||
CONFIG_TUN=m
|
CONFIG_TUN=m
|
||||||
CONFIG_VIRTIO_NET=y
|
CONFIG_VIRTIO_NET=y
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
|
# CONFIG_NET_VENDOR_CORTINA is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
|
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
# CONFIG_INPUT is not set
|
# CONFIG_INPUT is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
# CONFIG_VT is not set
|
||||||
CONFIG_DEVKMEM=y
|
CONFIG_DEVKMEM=y
|
||||||
CONFIG_RAW_DRIVER=m
|
CONFIG_RAW_DRIVER=m
|
||||||
CONFIG_VIRTIO_BALLOON=y
|
CONFIG_VIRTIO_BALLOON=y
|
||||||
|
@ -177,13 +182,15 @@ CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
|
||||||
CONFIG_STACK_TRACER=y
|
CONFIG_STACK_TRACER=y
|
||||||
CONFIG_BLK_DEV_IO_TRACE=y
|
CONFIG_BLK_DEV_IO_TRACE=y
|
||||||
CONFIG_FUNCTION_PROFILER=y
|
CONFIG_FUNCTION_PROFILER=y
|
||||||
CONFIG_KPROBES_SANITY_TEST=y
|
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||||
CONFIG_S390_PTDUMP=y
|
CONFIG_S390_PTDUMP=y
|
||||||
CONFIG_CRYPTO_CRYPTD=m
|
CONFIG_CRYPTO_CRYPTD=m
|
||||||
|
CONFIG_CRYPTO_AUTHENC=m
|
||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_CCM=m
|
CONFIG_CRYPTO_CCM=m
|
||||||
CONFIG_CRYPTO_GCM=m
|
CONFIG_CRYPTO_GCM=m
|
||||||
CONFIG_CRYPTO_CBC=y
|
CONFIG_CRYPTO_CBC=y
|
||||||
|
CONFIG_CRYPTO_CFB=m
|
||||||
CONFIG_CRYPTO_CTS=m
|
CONFIG_CRYPTO_CTS=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
|
@ -213,6 +220,8 @@ CONFIG_CRYPTO_KHAZAD=m
|
||||||
CONFIG_CRYPTO_SALSA20=m
|
CONFIG_CRYPTO_SALSA20=m
|
||||||
CONFIG_CRYPTO_SEED=m
|
CONFIG_CRYPTO_SEED=m
|
||||||
CONFIG_CRYPTO_SERPENT=m
|
CONFIG_CRYPTO_SERPENT=m
|
||||||
|
CONFIG_CRYPTO_SM4=m
|
||||||
|
CONFIG_CRYPTO_SPECK=m
|
||||||
CONFIG_CRYPTO_TEA=m
|
CONFIG_CRYPTO_TEA=m
|
||||||
CONFIG_CRYPTO_TWOFISH=m
|
CONFIG_CRYPTO_TWOFISH=m
|
||||||
CONFIG_CRYPTO_DEFLATE=m
|
CONFIG_CRYPTO_DEFLATE=m
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue