mirror of https://gitee.com/openkylin/linux.git
Merge airlied/drm-next into drm-intel-next-queued
Maarten needs both the new connector->atomic_check hook and the connection_mutex locking changes in the probe helpers to be able to start merging the connector property conversion to atomic. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
commit
ebf3f19abb
1
.mailmap
1
.mailmap
|
@ -171,6 +171,7 @@ Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
|
||||||
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
||||||
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
||||||
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
||||||
|
Yakir Yang <kuankuan.y@gmail.com> <ykk@rock-chips.com>
|
||||||
Yusuke Goda <goda.yusuke@renesas.com>
|
Yusuke Goda <goda.yusuke@renesas.com>
|
||||||
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
||||||
Gustavo Padovan <padovan@profusion.mobi>
|
Gustavo Padovan <padovan@profusion.mobi>
|
||||||
|
|
|
@ -59,9 +59,9 @@
|
||||||
/* Fixed header pattern */
|
/* Fixed header pattern */
|
||||||
header: .byte 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00
|
header: .byte 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00
|
||||||
|
|
||||||
mfg_id: .word swap16(mfgname2id(MFG_LNX1, MFG_LNX2, MFG_LNX3))
|
mfg_id: .hword swap16(mfgname2id(MFG_LNX1, MFG_LNX2, MFG_LNX3))
|
||||||
|
|
||||||
prod_code: .word 0
|
prod_code: .hword 0
|
||||||
|
|
||||||
/* Serial number. 32 bits, little endian. */
|
/* Serial number. 32 bits, little endian. */
|
||||||
serial_number: .long SERIAL
|
serial_number: .long SERIAL
|
||||||
|
@ -177,7 +177,7 @@ std_vres: .byte (XY_RATIO<<6)+VFREQ-60
|
||||||
|
|
||||||
descriptor1:
|
descriptor1:
|
||||||
/* Pixel clock in 10 kHz units. (0.-655.35 MHz, little-endian) */
|
/* Pixel clock in 10 kHz units. (0.-655.35 MHz, little-endian) */
|
||||||
clock: .word CLOCK/10
|
clock: .hword CLOCK/10
|
||||||
|
|
||||||
/* Horizontal active pixels 8 lsbits (0-4095) */
|
/* Horizontal active pixels 8 lsbits (0-4095) */
|
||||||
x_act_lsb: .byte XPIX&0xff
|
x_act_lsb: .byte XPIX&0xff
|
||||||
|
|
|
@ -1725,6 +1725,12 @@
|
||||||
kernel and module base offset ASLR (Address Space
|
kernel and module base offset ASLR (Address Space
|
||||||
Layout Randomization).
|
Layout Randomization).
|
||||||
|
|
||||||
|
kasan_multi_shot
|
||||||
|
[KNL] Enforce KASAN (Kernel Address Sanitizer) to print
|
||||||
|
report on every invalid memory access. Without this
|
||||||
|
parameter KASAN will print report only for the first
|
||||||
|
invalid access.
|
||||||
|
|
||||||
keepinitrd [HW,ARM]
|
keepinitrd [HW,ARM]
|
||||||
|
|
||||||
kernelcore= [KNL,X86,IA-64,PPC]
|
kernelcore= [KNL,X86,IA-64,PPC]
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
Amlogic specific extensions to the Synopsys Designware HDMI Controller
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
The Amlogic Meson Synopsys Designware Integration is composed of :
|
||||||
|
- A Synopsys DesignWare HDMI Controller IP
|
||||||
|
- A TOP control block controlling the Clocks and PHY
|
||||||
|
- A custom HDMI PHY in order to convert video to TMDS signal
|
||||||
|
___________________________________
|
||||||
|
| HDMI TOP |<= HPD
|
||||||
|
|___________________________________|
|
||||||
|
| | |
|
||||||
|
| Synopsys HDMI | HDMI PHY |=> TMDS
|
||||||
|
| Controller |________________|
|
||||||
|
|___________________________________|<=> DDC
|
||||||
|
|
||||||
|
The HDMI TOP block only supports HPD sensing.
|
||||||
|
The Synopsys HDMI Controller interrupt is routed through the
|
||||||
|
TOP Block interrupt.
|
||||||
|
Communication to the TOP Block and the Synopsys HDMI Controller is done
|
||||||
|
via a pair of dedicated addr+read/write registers.
|
||||||
|
The HDMI PHY is configured by registers in the HHI register block.
|
||||||
|
|
||||||
|
Pixel data arrives in 4:4:4 format from the VENC block and the VPU HDMI mux
|
||||||
|
selects either the ENCI encoder for the 576i or 480i formats or the ENCP
|
||||||
|
encoder for all the other formats including interlaced HD formats.
|
||||||
|
|
||||||
|
The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate
|
||||||
|
DVI timings for the HDMI controller.
|
||||||
|
|
||||||
|
Amlogic Meson GXBB, GXL and GXM SoCs families embeds the Synopsys DesignWare
|
||||||
|
HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF
|
||||||
|
audio source interfaces.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: value should be different for each SoC family as :
|
||||||
|
- GXBB (S905) : "amlogic,meson-gxbb-dw-hdmi"
|
||||||
|
- GXL (S905X, S905D) : "amlogic,meson-gxl-dw-hdmi"
|
||||||
|
- GXM (S912) : "amlogic,meson-gxm-dw-hdmi"
|
||||||
|
followed by the common "amlogic,meson-gx-dw-hdmi"
|
||||||
|
- reg: Physical base address and length of the controller's registers.
|
||||||
|
- interrupts: The HDMI interrupt number
|
||||||
|
- clocks, clock-names : must have the phandles to the HDMI iahb and isfr clocks,
|
||||||
|
and the Amlogic Meson venci clocks as described in
|
||||||
|
Documentation/devicetree/bindings/clock/clock-bindings.txt,
|
||||||
|
the clocks are soc specific, the clock-names should be "iahb", "isfr", "venci"
|
||||||
|
- resets, resets-names: must have the phandles to the HDMI apb, glue and phy
|
||||||
|
resets as described in :
|
||||||
|
Documentation/devicetree/bindings/reset/reset.txt,
|
||||||
|
the reset-names should be "hdmitx_apb", "hdmitx", "hdmitx_phy"
|
||||||
|
|
||||||
|
Required nodes:
|
||||||
|
|
||||||
|
The connections to the HDMI ports are modeled using the OF graph
|
||||||
|
bindings specified in Documentation/devicetree/bindings/graph.txt.
|
||||||
|
|
||||||
|
The following table lists for each supported model the port number
|
||||||
|
corresponding to each HDMI output and input.
|
||||||
|
|
||||||
|
Port 0 Port 1
|
||||||
|
-----------------------------------------
|
||||||
|
S905 (GXBB) VENC Input TMDS Output
|
||||||
|
S905X (GXL) VENC Input TMDS Output
|
||||||
|
S905D (GXL) VENC Input TMDS Output
|
||||||
|
S912 (GXM) VENC Input TMDS Output
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
hdmi-connector {
|
||||||
|
compatible = "hdmi-connector";
|
||||||
|
type = "a";
|
||||||
|
|
||||||
|
port {
|
||||||
|
hdmi_connector_in: endpoint {
|
||||||
|
remote-endpoint = <&hdmi_tx_tmds_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hdmi_tx: hdmi-tx@c883a000 {
|
||||||
|
compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
|
||||||
|
reg = <0x0 0xc883a000 0x0 0x1c>;
|
||||||
|
interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
resets = <&reset RESET_HDMITX_CAPB3>,
|
||||||
|
<&reset RESET_HDMI_SYSTEM_RESET>,
|
||||||
|
<&reset RESET_HDMI_TX>;
|
||||||
|
reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
|
||||||
|
clocks = <&clkc CLKID_HDMI_PCLK>,
|
||||||
|
<&clkc CLKID_CLK81>,
|
||||||
|
<&clkc CLKID_GCLK_VENCI_INT0>;
|
||||||
|
clock-names = "isfr", "iahb", "venci";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
/* VPU VENC Input */
|
||||||
|
hdmi_tx_venc_port: port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
hdmi_tx_in: endpoint {
|
||||||
|
remote-endpoint = <&hdmi_tx_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/* TMDS Output */
|
||||||
|
hdmi_tx_tmds_port: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
hdmi_tx_tmds_out: endpoint {
|
||||||
|
remote-endpoint = <&hdmi_connector_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,75 @@
|
||||||
|
Renesas Gen3 DWC HDMI TX Encoder
|
||||||
|
================================
|
||||||
|
|
||||||
|
The HDMI transmitter is a Synopsys DesignWare HDMI 1.4 TX controller IP
|
||||||
|
with a companion PHY IP.
|
||||||
|
|
||||||
|
These DT bindings follow the Synopsys DWC HDMI TX bindings defined in
|
||||||
|
Documentation/devicetree/bindings/display/bridge/dw_hdmi.txt with the
|
||||||
|
following device-specific properties.
|
||||||
|
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible : Shall contain one or more of
|
||||||
|
- "renesas,r8a7795-hdmi" for R8A7795 (R-Car H3) compatible HDMI TX
|
||||||
|
- "renesas,rcar-gen3-hdmi" for the generic R-Car Gen3 compatible HDMI TX
|
||||||
|
|
||||||
|
When compatible with generic versions, nodes must list the SoC-specific
|
||||||
|
version corresponding to the platform first, followed by the
|
||||||
|
family-specific version.
|
||||||
|
|
||||||
|
- reg: See dw_hdmi.txt.
|
||||||
|
- interrupts: HDMI interrupt number
|
||||||
|
- clocks: See dw_hdmi.txt.
|
||||||
|
- clock-names: Shall contain "iahb" and "isfr" as defined in dw_hdmi.txt.
|
||||||
|
- ports: See dw_hdmi.txt. The DWC HDMI shall have one port numbered 0
|
||||||
|
corresponding to the video input of the controller and one port numbered 1
|
||||||
|
corresponding to its HDMI output. Each port shall have a single endpoint.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- power-domains: Shall reference the power domain that contains the DWC HDMI,
|
||||||
|
if any.
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
hdmi0: hdmi0@fead0000 {
|
||||||
|
compatible = "renesas,r8a7795-dw-hdmi";
|
||||||
|
reg = <0 0xfead0000 0 0x10000>;
|
||||||
|
interrupts = <0 389 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cpg CPG_CORE R8A7795_CLK_S0D4>, <&cpg CPG_MOD 729>;
|
||||||
|
clock-names = "iahb", "isfr";
|
||||||
|
power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
dw_hdmi0_in: endpoint {
|
||||||
|
remote-endpoint = <&du_out_hdmi0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
rcar_dw_hdmi0_out: endpoint {
|
||||||
|
remote-endpoint = <&hdmi0_con>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hdmi0-out {
|
||||||
|
compatible = "hdmi-connector";
|
||||||
|
label = "HDMI0 OUT";
|
||||||
|
type = "a";
|
||||||
|
|
||||||
|
port {
|
||||||
|
hdmi0_con: endpoint {
|
||||||
|
remote-endpoint = <&rcar_dw_hdmi0_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -40,6 +40,7 @@ Required properties (all function blocks):
|
||||||
"mediatek,<chip>-dpi" - DPI controller, see mediatek,dpi.txt
|
"mediatek,<chip>-dpi" - DPI controller, see mediatek,dpi.txt
|
||||||
"mediatek,<chip>-disp-mutex" - display mutex
|
"mediatek,<chip>-disp-mutex" - display mutex
|
||||||
"mediatek,<chip>-disp-od" - overdrive
|
"mediatek,<chip>-disp-od" - overdrive
|
||||||
|
the supported chips are mt2701 and mt8173.
|
||||||
- reg: Physical base address and length of the function block register space
|
- reg: Physical base address and length of the function block register space
|
||||||
- interrupts: The interrupt signal from the function block (required, except for
|
- interrupts: The interrupt signal from the function block (required, except for
|
||||||
merge and split function blocks).
|
merge and split function blocks).
|
||||||
|
@ -54,6 +55,7 @@ Required properties (DMA function blocks):
|
||||||
"mediatek,<chip>-disp-ovl"
|
"mediatek,<chip>-disp-ovl"
|
||||||
"mediatek,<chip>-disp-rdma"
|
"mediatek,<chip>-disp-rdma"
|
||||||
"mediatek,<chip>-disp-wdma"
|
"mediatek,<chip>-disp-wdma"
|
||||||
|
the supported chips are mt2701 and mt8173.
|
||||||
- larb: Should contain a phandle pointing to the local arbiter device as defined
|
- larb: Should contain a phandle pointing to the local arbiter device as defined
|
||||||
in Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt
|
in Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt
|
||||||
- iommus: Should point to the respective IOMMU block with master port as
|
- iommus: Should point to the respective IOMMU block with master port as
|
||||||
|
|
|
@ -7,6 +7,7 @@ channel output.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "mediatek,<chip>-dsi"
|
- compatible: "mediatek,<chip>-dsi"
|
||||||
|
the supported chips are mt2701 and mt8173.
|
||||||
- reg: Physical base address and length of the controller's registers
|
- reg: Physical base address and length of the controller's registers
|
||||||
- interrupts: The interrupt signal from the function block.
|
- interrupts: The interrupt signal from the function block.
|
||||||
- clocks: device clocks
|
- clocks: device clocks
|
||||||
|
@ -25,6 +26,7 @@ The MIPI TX configuration module controls the MIPI D-PHY.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "mediatek,<chip>-mipi-tx"
|
- compatible: "mediatek,<chip>-mipi-tx"
|
||||||
|
the supported chips are mt2701 and mt8173.
|
||||||
- reg: Physical base address and length of the controller's registers
|
- reg: Physical base address and length of the controller's registers
|
||||||
- clocks: PLL reference clock
|
- clocks: PLL reference clock
|
||||||
- clock-output-names: name of the output clock line to the DSI encoder
|
- clock-output-names: name of the output clock line to the DSI encoder
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
Mitsubishi AA204XD12 LVDS Display Panel
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
The AA104XD12 is a 10.4" XGA TFT-LCD display panel.
|
||||||
|
|
||||||
|
These DT bindings follow the LVDS panel bindings defined in panel-lvds.txt
|
||||||
|
with the following device-specific properties.
|
||||||
|
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: Shall contain "mitsubishi,aa121td01" and "panel-lvds", in that
|
||||||
|
order.
|
||||||
|
- vcc-supply: Reference to the regulator powering the panel VCC pins.
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
panel {
|
||||||
|
compatible = "mitsubishi,aa104xd12", "panel-lvds";
|
||||||
|
vcc-supply = <&vcc_3v3>;
|
||||||
|
|
||||||
|
width-mm = <210>;
|
||||||
|
height-mm = <158>;
|
||||||
|
|
||||||
|
data-mapping = "jeida-24";
|
||||||
|
|
||||||
|
panel-timing {
|
||||||
|
/* 1024x768 @65Hz */
|
||||||
|
clock-frequency = <65000000>;
|
||||||
|
hactive = <1024>;
|
||||||
|
vactive = <768>;
|
||||||
|
hsync-len = <136>;
|
||||||
|
hfront-porch = <20>;
|
||||||
|
hback-porch = <160>;
|
||||||
|
vfront-porch = <3>;
|
||||||
|
vback-porch = <29>;
|
||||||
|
vsync-len = <6>;
|
||||||
|
};
|
||||||
|
|
||||||
|
port {
|
||||||
|
panel_in: endpoint {
|
||||||
|
remote-endpoint = <&lvds_encoder>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,47 @@
|
||||||
|
Mitsubishi AA121TD01 LVDS Display Panel
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
The AA121TD01 is a 12.1" WXGA TFT-LCD display panel.
|
||||||
|
|
||||||
|
These DT bindings follow the LVDS panel bindings defined in panel-lvds.txt
|
||||||
|
with the following device-specific properties.
|
||||||
|
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: Shall contain "mitsubishi,aa121td01" and "panel-lvds", in that
|
||||||
|
order.
|
||||||
|
- vcc-supply: Reference to the regulator powering the panel VCC pins.
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
panel {
|
||||||
|
compatible = "mitsubishi,aa121td01", "panel-lvds";
|
||||||
|
vcc-supply = <&vcc_3v3>;
|
||||||
|
|
||||||
|
width-mm = <261>;
|
||||||
|
height-mm = <163>;
|
||||||
|
|
||||||
|
data-mapping = "jeida-24";
|
||||||
|
|
||||||
|
panel-timing {
|
||||||
|
/* 1280x800 @60Hz */
|
||||||
|
clock-frequency = <71000000>;
|
||||||
|
hactive = <1280>;
|
||||||
|
vactive = <800>;
|
||||||
|
hsync-len = <70>;
|
||||||
|
hfront-porch = <20>;
|
||||||
|
hback-porch = <70>;
|
||||||
|
vsync-len = <5>;
|
||||||
|
vfront-porch = <3>;
|
||||||
|
vback-porch = <15>;
|
||||||
|
};
|
||||||
|
|
||||||
|
port {
|
||||||
|
panel_in: endpoint {
|
||||||
|
remote-endpoint = <&lvds_encoder>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,91 @@
|
||||||
|
Common Properties for Display Panel
|
||||||
|
===================================
|
||||||
|
|
||||||
|
This document defines device tree properties common to several classes of
|
||||||
|
display panels. It doesn't constitue a device tree binding specification by
|
||||||
|
itself but is meant to be referenced by device tree bindings.
|
||||||
|
|
||||||
|
When referenced from panel device tree bindings the properties defined in this
|
||||||
|
document are defined as follows. The panel device tree bindings are
|
||||||
|
responsible for defining whether each property is required or optional.
|
||||||
|
|
||||||
|
|
||||||
|
Descriptive Properties
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
- width-mm,
|
||||||
|
- height-mm: The width-mm and height-mm specify the width and height of the
|
||||||
|
physical area where images are displayed. These properties are expressed in
|
||||||
|
millimeters and rounded to the closest unit.
|
||||||
|
|
||||||
|
- label: The label property specifies a symbolic name for the panel as a
|
||||||
|
string suitable for use by humans. It typically contains a name inscribed on
|
||||||
|
the system (e.g. as an affixed label) or specified in the system's
|
||||||
|
documentation (e.g. in the user's manual).
|
||||||
|
|
||||||
|
If no such name exists, and unless the property is mandatory according to
|
||||||
|
device tree bindings, it shall rather be omitted than constructed of
|
||||||
|
non-descriptive information. For instance an LCD panel in a system that
|
||||||
|
contains a single panel shall not be labelled "LCD" if that name is not
|
||||||
|
inscribed on the system or used in a descriptive fashion in system
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
|
||||||
|
Display Timings
|
||||||
|
---------------
|
||||||
|
|
||||||
|
- panel-timing: Most display panels are restricted to a single resolution and
|
||||||
|
require specific display timings. The panel-timing subnode expresses those
|
||||||
|
timings as specified in the timing subnode section of the display timing
|
||||||
|
bindings defined in
|
||||||
|
Documentation/devicetree/bindings/display/display-timing.txt.
|
||||||
|
|
||||||
|
|
||||||
|
Connectivity
|
||||||
|
------------
|
||||||
|
|
||||||
|
- ports: Panels receive video data through one or multiple connections. While
|
||||||
|
the nature of those connections is specific to the panel type, the
|
||||||
|
connectivity is expressed in a standard fashion using ports as specified in
|
||||||
|
the device graph bindings defined in
|
||||||
|
Documentation/devicetree/bindings/graph.txt.
|
||||||
|
|
||||||
|
- ddc-i2c-bus: Some panels expose EDID information through an I2C-compatible
|
||||||
|
bus such as DDC2 or E-DDC. For such panels the ddc-i2c-bus contains a
|
||||||
|
phandle to the system I2C controller connected to that bus.
|
||||||
|
|
||||||
|
|
||||||
|
Control I/Os
|
||||||
|
------------
|
||||||
|
|
||||||
|
Many display panels can be controlled through pins driven by GPIOs. The nature
|
||||||
|
and timing of those control signals are device-specific and left for panel
|
||||||
|
device tree bindings to specify. The following GPIO specifiers can however be
|
||||||
|
used for panels that implement compatible control signals.
|
||||||
|
|
||||||
|
- enable-gpios: Specifier for a GPIO connected to the panel enable control
|
||||||
|
signal. The enable signal is active high and enables operation of the panel.
|
||||||
|
This property can also be used for panels implementing an active low power
|
||||||
|
down signal, which is a negated version of the enable signal. Active low
|
||||||
|
enable signals (or active high power down signals) can be supported by
|
||||||
|
inverting the GPIO specifier polarity flag.
|
||||||
|
|
||||||
|
Note that the enable signal control panel operation only and must not be
|
||||||
|
confused with a backlight enable signal.
|
||||||
|
|
||||||
|
- reset-gpios: Specifier for a GPIO coonnected to the panel reset control
|
||||||
|
signal. The reset signal is active low and resets the panel internal logic
|
||||||
|
while active. Active high reset signals can be supported by inverting the
|
||||||
|
GPIO specifier polarity flag.
|
||||||
|
|
||||||
|
|
||||||
|
Backlight
|
||||||
|
---------
|
||||||
|
|
||||||
|
Most display panels include a backlight. Some of them also include a backlight
|
||||||
|
controller exposed through a control bus such as I2C or DSI. Others expose
|
||||||
|
backlight control through GPIO, PWM or other signals connected to an external
|
||||||
|
backlight controller.
|
||||||
|
|
||||||
|
- backlight: For panels whose backlight is controlled by an external backlight
|
||||||
|
controller, this property contains a phandle that references the controller.
|
|
@ -9,6 +9,7 @@ Optional properties:
|
||||||
- enable-gpios: panel enable gpio
|
- enable-gpios: panel enable gpio
|
||||||
- reset-gpios: GPIO to control the RESET pin
|
- reset-gpios: GPIO to control the RESET pin
|
||||||
- vcc-supply: phandle of regulator that will be used to enable power to the display
|
- vcc-supply: phandle of regulator that will be used to enable power to the display
|
||||||
|
- backlight: phandle of the backlight device
|
||||||
|
|
||||||
Required nodes:
|
Required nodes:
|
||||||
- "panel-timing" containing video timings
|
- "panel-timing" containing video timings
|
||||||
|
@ -22,6 +23,8 @@ lcd0: display@0 {
|
||||||
compatible = "samsung,lte430wq-f0c", "panel-dpi";
|
compatible = "samsung,lte430wq-f0c", "panel-dpi";
|
||||||
label = "lcd";
|
label = "lcd";
|
||||||
|
|
||||||
|
backlight = <&backlight>;
|
||||||
|
|
||||||
port {
|
port {
|
||||||
lcd_in: endpoint {
|
lcd_in: endpoint {
|
||||||
remote-endpoint = <&dpi_out>;
|
remote-endpoint = <&dpi_out>;
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
LVDS Display Panel
|
||||||
|
==================
|
||||||
|
|
||||||
|
LVDS is a physical layer specification defined in ANSI/TIA/EIA-644-A. Multiple
|
||||||
|
incompatible data link layers have been used over time to transmit image data
|
||||||
|
to LVDS panels. This bindings supports display panels compatible with the
|
||||||
|
following specifications.
|
||||||
|
|
||||||
|
[JEIDA] "Digital Interface Standards for Monitor", JEIDA-59-1999, February
|
||||||
|
1999 (Version 1.0), Japan Electronic Industry Development Association (JEIDA)
|
||||||
|
[LDI] "Open LVDS Display Interface", May 1999 (Version 0.95), National
|
||||||
|
Semiconductor
|
||||||
|
[VESA] "VESA Notebook Panel Standard", October 2007 (Version 1.0), Video
|
||||||
|
Electronics Standards Association (VESA)
|
||||||
|
|
||||||
|
Device compatible with those specifications have been marketed under the
|
||||||
|
FPD-Link and FlatLink brands.
|
||||||
|
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: Shall contain "panel-lvds" in addition to a mandatory
|
||||||
|
panel-specific compatible string defined in individual panel bindings. The
|
||||||
|
"panel-lvds" value shall never be used on its own.
|
||||||
|
- width-mm: See panel-common.txt.
|
||||||
|
- height-mm: See panel-common.txt.
|
||||||
|
- data-mapping: The color signals mapping order, "jeida-18", "jeida-24"
|
||||||
|
or "vesa-24".
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- label: See panel-common.txt.
|
||||||
|
- gpios: See panel-common.txt.
|
||||||
|
- backlight: See panel-common.txt.
|
||||||
|
- data-mirror: If set, reverse the bit order described in the data mappings
|
||||||
|
below on all data lanes, transmitting bits for slots 6 to 0 instead of
|
||||||
|
0 to 6.
|
||||||
|
|
||||||
|
Required nodes:
|
||||||
|
|
||||||
|
- panel-timing: See panel-common.txt.
|
||||||
|
- ports: See panel-common.txt. These bindings require a single port subnode
|
||||||
|
corresponding to the panel LVDS input.
|
||||||
|
|
||||||
|
|
||||||
|
LVDS data mappings are defined as follows.
|
||||||
|
|
||||||
|
- "jeida-18" - 18-bit data mapping compatible with the [JEIDA], [LDI] and
|
||||||
|
[VESA] specifications. Data are transferred as follows on 3 LVDS lanes.
|
||||||
|
|
||||||
|
Slot 0 1 2 3 4 5 6
|
||||||
|
________________ _________________
|
||||||
|
Clock \_______________________/
|
||||||
|
______ ______ ______ ______ ______ ______ ______
|
||||||
|
DATA0 ><__G0__><__R5__><__R4__><__R3__><__R2__><__R1__><__R0__><
|
||||||
|
DATA1 ><__B1__><__B0__><__G5__><__G4__><__G3__><__G2__><__G1__><
|
||||||
|
DATA2 ><_CTL2_><_CTL1_><_CTL0_><__B5__><__B4__><__B3__><__B2__><
|
||||||
|
|
||||||
|
- "jeida-24" - 24-bit data mapping compatible with the [DSIM] and [LDI]
|
||||||
|
specifications. Data are transferred as follows on 4 LVDS lanes.
|
||||||
|
|
||||||
|
Slot 0 1 2 3 4 5 6
|
||||||
|
________________ _________________
|
||||||
|
Clock \_______________________/
|
||||||
|
______ ______ ______ ______ ______ ______ ______
|
||||||
|
DATA0 ><__G2__><__R7__><__R6__><__R5__><__R4__><__R3__><__R2__><
|
||||||
|
DATA1 ><__B3__><__B2__><__G7__><__G6__><__G5__><__G4__><__G3__><
|
||||||
|
DATA2 ><_CTL2_><_CTL1_><_CTL0_><__B7__><__B6__><__B5__><__B4__><
|
||||||
|
DATA3 ><_CTL3_><__B1__><__B0__><__G1__><__G0__><__R1__><__R0__><
|
||||||
|
|
||||||
|
- "vesa-24" - 24-bit data mapping compatible with the [VESA] specification.
|
||||||
|
Data are transferred as follows on 4 LVDS lanes.
|
||||||
|
|
||||||
|
Slot 0 1 2 3 4 5 6
|
||||||
|
________________ _________________
|
||||||
|
Clock \_______________________/
|
||||||
|
______ ______ ______ ______ ______ ______ ______
|
||||||
|
DATA0 ><__G0__><__R5__><__R4__><__R3__><__R2__><__R1__><__R0__><
|
||||||
|
DATA1 ><__B1__><__B0__><__G5__><__G4__><__G3__><__G2__><__G1__><
|
||||||
|
DATA2 ><_CTL2_><_CTL1_><_CTL0_><__B5__><__B4__><__B3__><__B2__><
|
||||||
|
DATA3 ><_CTL3_><__B7__><__B6__><__G7__><__G6__><__R7__><__R6__><
|
||||||
|
|
||||||
|
Control signals are mapped as follows.
|
||||||
|
|
||||||
|
CTL0: HSync
|
||||||
|
CTL1: VSync
|
||||||
|
CTL2: Data Enable
|
||||||
|
CTL3: 0
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
panel {
|
||||||
|
compatible = "mitsubishi,aa121td01", "panel-lvds";
|
||||||
|
|
||||||
|
width-mm = <261>;
|
||||||
|
height-mm = <163>;
|
||||||
|
|
||||||
|
data-mapping = "jeida-24";
|
||||||
|
|
||||||
|
panel-timing {
|
||||||
|
/* 1280x800 @60Hz */
|
||||||
|
clock-frequency = <71000000>;
|
||||||
|
hactive = <1280>;
|
||||||
|
vactive = <800>;
|
||||||
|
hsync-len = <70>;
|
||||||
|
hfront-porch = <20>;
|
||||||
|
hback-porch = <70>;
|
||||||
|
vsync-len = <5>;
|
||||||
|
vfront-porch = <3>;
|
||||||
|
vback-porch = <15>;
|
||||||
|
};
|
||||||
|
|
||||||
|
port {
|
||||||
|
panel_in: endpoint {
|
||||||
|
remote-endpoint = <&lvds_encoder>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -36,6 +36,9 @@ Required Properties:
|
||||||
When supplied they must be named "dclkin.x" with "x" being the input
|
When supplied they must be named "dclkin.x" with "x" being the input
|
||||||
clock numerical index.
|
clock numerical index.
|
||||||
|
|
||||||
|
- vsps: A list of phandles to the VSP nodes that handle the memory
|
||||||
|
interfaces for the DU channels.
|
||||||
|
|
||||||
Required nodes:
|
Required nodes:
|
||||||
|
|
||||||
The connections to the DU output video ports are modeled using the OF graph
|
The connections to the DU output video ports are modeled using the OF graph
|
||||||
|
|
|
@ -10,16 +10,19 @@ Required properties:
|
||||||
- interrupts: Represent the controller's interrupt to the CPU(s).
|
- interrupts: Represent the controller's interrupt to the CPU(s).
|
||||||
- clocks, clock-names: Phandles to the controller's pll reference
|
- clocks, clock-names: Phandles to the controller's pll reference
|
||||||
clock(ref) and APB clock(pclk). For RK3399, a phy config clock
|
clock(ref) and APB clock(pclk). For RK3399, a phy config clock
|
||||||
(phy_cfg) is additional required. As described in [1].
|
(phy_cfg) and a grf clock(grf) are required. As described in [1].
|
||||||
- rockchip,grf: this soc should set GRF regs to mux vopl/vopb.
|
- rockchip,grf: this soc should set GRF regs to mux vopl/vopb.
|
||||||
- ports: contain a port node with endpoint definitions as defined in [2].
|
- ports: contain a port node with endpoint definitions as defined in [2].
|
||||||
For vopb,set the reg = <0> and set the reg = <1> for vopl.
|
For vopb,set the reg = <0> and set the reg = <1> for vopl.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- power-domains: a phandle to mipi dsi power domain node.
|
- power-domains: a phandle to mipi dsi power domain node.
|
||||||
|
- resets: list of phandle + reset specifier pairs, as described in [3].
|
||||||
|
- reset-names: string reset name, must be "apb".
|
||||||
|
|
||||||
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
[2] Documentation/devicetree/bindings/media/video-interfaces.txt
|
[2] Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
[3] Documentation/devicetree/bindings/reset/reset.txt
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
mipi_dsi: mipi@ff960000 {
|
mipi_dsi: mipi@ff960000 {
|
||||||
|
@ -30,6 +33,8 @@ Example:
|
||||||
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru SCLK_MIPI_24M>, <&cru PCLK_MIPI_DSI0>;
|
clocks = <&cru SCLK_MIPI_24M>, <&cru PCLK_MIPI_DSI0>;
|
||||||
clock-names = "ref", "pclk";
|
clock-names = "ref", "pclk";
|
||||||
|
resets = <&cru SRST_MIPIDSI0>;
|
||||||
|
reset-names = "apb";
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,8 @@ Required properties:
|
||||||
- reg : Offset and length of the register set for the module
|
- reg : Offset and length of the register set for the module
|
||||||
- interrupts : the interrupt number for the RNG module.
|
- interrupts : the interrupt number for the RNG module.
|
||||||
Used for "ti,omap4-rng" and "inside-secure,safexcel-eip76"
|
Used for "ti,omap4-rng" and "inside-secure,safexcel-eip76"
|
||||||
- clocks: the trng clock source
|
- clocks: the trng clock source. Only mandatory for the
|
||||||
|
"inside-secure,safexcel-eip76" compatible.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
/* AM335x */
|
/* AM335x */
|
||||||
|
|
|
@ -58,8 +58,7 @@ prototypes:
|
||||||
int (*permission) (struct inode *, int, unsigned int);
|
int (*permission) (struct inode *, int, unsigned int);
|
||||||
int (*get_acl)(struct inode *, int);
|
int (*get_acl)(struct inode *, int);
|
||||||
int (*setattr) (struct dentry *, struct iattr *);
|
int (*setattr) (struct dentry *, struct iattr *);
|
||||||
int (*getattr) (const struct path *, struct dentry *, struct kstat *,
|
int (*getattr) (const struct path *, struct kstat *, u32, unsigned int);
|
||||||
u32, unsigned int);
|
|
||||||
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
||||||
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
|
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
|
||||||
void (*update_time)(struct inode *, struct timespec *, int);
|
void (*update_time)(struct inode *, struct timespec *, int);
|
||||||
|
|
|
@ -600,3 +600,9 @@ in your dentry operations instead.
|
||||||
[recommended]
|
[recommended]
|
||||||
->readlink is optional for symlinks. Don't set, unless filesystem needs
|
->readlink is optional for symlinks. Don't set, unless filesystem needs
|
||||||
to fake something for readlink(2).
|
to fake something for readlink(2).
|
||||||
|
--
|
||||||
|
[mandatory]
|
||||||
|
->getattr() is now passed a struct path rather than a vfsmount and
|
||||||
|
dentry separately, and it now has request_mask and query_flags arguments
|
||||||
|
to specify the fields and sync type requested by statx. Filesystems not
|
||||||
|
supporting any statx-specific features may ignore the new arguments.
|
||||||
|
|
|
@ -382,8 +382,7 @@ struct inode_operations {
|
||||||
int (*permission) (struct inode *, int);
|
int (*permission) (struct inode *, int);
|
||||||
int (*get_acl)(struct inode *, int);
|
int (*get_acl)(struct inode *, int);
|
||||||
int (*setattr) (struct dentry *, struct iattr *);
|
int (*setattr) (struct dentry *, struct iattr *);
|
||||||
int (*getattr) (const struct path *, struct dentry *, struct kstat *,
|
int (*getattr) (const struct path *, struct kstat *, u32, unsigned int);
|
||||||
u32, unsigned int);
|
|
||||||
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
||||||
void (*update_time)(struct inode *, struct timespec *, int);
|
void (*update_time)(struct inode *, struct timespec *, int);
|
||||||
int (*atomic_open)(struct inode *, struct dentry *, struct file *,
|
int (*atomic_open)(struct inode *, struct dentry *, struct file *,
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
=======================================================
|
||||||
|
drm/bridge/dw-hdmi Synopsys DesignWare HDMI Controller
|
||||||
|
=======================================================
|
||||||
|
|
||||||
|
Synopsys DesignWare HDMI Controller
|
||||||
|
===================================
|
||||||
|
|
||||||
|
This section covers everything related to the Synopsys DesignWare HDMI
|
||||||
|
Controller implemented as a DRM bridge.
|
||||||
|
|
||||||
|
Supported Input Formats and Encodings
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
.. kernel-doc:: include/drm/bridge/dw_hdmi.h
|
||||||
|
:doc: Supported input formats and encodings
|
|
@ -255,56 +255,6 @@ File Operations
|
||||||
.. kernel-doc:: drivers/gpu/drm/drm_file.c
|
.. kernel-doc:: drivers/gpu/drm/drm_file.c
|
||||||
:export:
|
:export:
|
||||||
|
|
||||||
IOCTLs
|
|
||||||
------
|
|
||||||
|
|
||||||
struct drm_ioctl_desc \*ioctls; int num_ioctls;
|
|
||||||
Driver-specific ioctls descriptors table.
|
|
||||||
|
|
||||||
Driver-specific ioctls numbers start at DRM_COMMAND_BASE. The ioctls
|
|
||||||
descriptors table is indexed by the ioctl number offset from the base
|
|
||||||
value. Drivers can use the DRM_IOCTL_DEF_DRV() macro to initialize
|
|
||||||
the table entries.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
DRM_IOCTL_DEF_DRV(ioctl, func, flags)
|
|
||||||
|
|
||||||
``ioctl`` is the ioctl name. Drivers must define the DRM_##ioctl and
|
|
||||||
DRM_IOCTL_##ioctl macros to the ioctl number offset from
|
|
||||||
DRM_COMMAND_BASE and the ioctl number respectively. The first macro is
|
|
||||||
private to the device while the second must be exposed to userspace in a
|
|
||||||
public header.
|
|
||||||
|
|
||||||
``func`` is a pointer to the ioctl handler function compatible with the
|
|
||||||
``drm_ioctl_t`` type.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
typedef int drm_ioctl_t(struct drm_device *dev, void *data,
|
|
||||||
struct drm_file *file_priv);
|
|
||||||
|
|
||||||
``flags`` is a bitmask combination of the following values. It restricts
|
|
||||||
how the ioctl is allowed to be called.
|
|
||||||
|
|
||||||
- DRM_AUTH - Only authenticated callers allowed
|
|
||||||
|
|
||||||
- DRM_MASTER - The ioctl can only be called on the master file handle
|
|
||||||
|
|
||||||
- DRM_ROOT_ONLY - Only callers with the SYSADMIN capability allowed
|
|
||||||
|
|
||||||
- DRM_CONTROL_ALLOW - The ioctl can only be called on a control
|
|
||||||
device
|
|
||||||
|
|
||||||
- DRM_UNLOCKED - The ioctl handler will be called without locking the
|
|
||||||
DRM global mutex. This is the enforced default for kms drivers (i.e.
|
|
||||||
using the DRIVER_MODESET flag) and hence shouldn't be used any more
|
|
||||||
for new drivers.
|
|
||||||
|
|
||||||
.. kernel-doc:: drivers/gpu/drm/drm_ioctl.c
|
|
||||||
:export:
|
|
||||||
|
|
||||||
|
|
||||||
Misc Utilities
|
Misc Utilities
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,20 @@ other hand, a driver requires shared state between clients which is
|
||||||
visible to user-space and accessible beyond open-file boundaries, they
|
visible to user-space and accessible beyond open-file boundaries, they
|
||||||
cannot support render nodes.
|
cannot support render nodes.
|
||||||
|
|
||||||
|
IOCTL Support on Device Nodes
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_ioctl.c
|
||||||
|
:doc: driver specific ioctls
|
||||||
|
|
||||||
|
.. kernel-doc:: include/drm/drm_ioctl.h
|
||||||
|
:internal:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_ioctl.c
|
||||||
|
:export:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_ioc32.c
|
||||||
|
:export:
|
||||||
|
|
||||||
Testing and validation
|
Testing and validation
|
||||||
======================
|
======================
|
||||||
|
@ -207,6 +221,28 @@ Display CRC Support
|
||||||
.. kernel-doc:: drivers/gpu/drm/drm_debugfs_crc.c
|
.. kernel-doc:: drivers/gpu/drm/drm_debugfs_crc.c
|
||||||
:doc: CRC ABI
|
:doc: CRC ABI
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_debugfs_crc.c
|
||||||
|
:export:
|
||||||
|
|
||||||
|
Debugfs Support
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. kernel-doc:: include/drm/drm_debugfs.h
|
||||||
|
:internal:
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_debugfs.c
|
||||||
|
:export:
|
||||||
|
|
||||||
|
Sysfs Support
|
||||||
|
=============
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_sysfs.c
|
||||||
|
:doc: overview
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/drm_sysfs.c
|
||||||
|
:export:
|
||||||
|
|
||||||
|
|
||||||
VBlank event handling
|
VBlank event handling
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
|
|
|
@ -11,10 +11,12 @@ Linux GPU Driver Developer's Guide
|
||||||
drm-kms-helpers
|
drm-kms-helpers
|
||||||
drm-uapi
|
drm-uapi
|
||||||
i915
|
i915
|
||||||
|
meson
|
||||||
tinydrm
|
tinydrm
|
||||||
vc4
|
vc4
|
||||||
vga-switcheroo
|
vga-switcheroo
|
||||||
vgaarbiter
|
vgaarbiter
|
||||||
|
bridge/dw-hdmi
|
||||||
todo
|
todo
|
||||||
|
|
||||||
.. only:: subproject and html
|
.. only:: subproject and html
|
||||||
|
|
|
@ -60,3 +60,28 @@ checkpatch or sparse. We welcome such contributions.
|
||||||
|
|
||||||
Anyone looking to kick it up a notch can find a list of janitorial tasks on
|
Anyone looking to kick it up a notch can find a list of janitorial tasks on
|
||||||
the :ref:`TODO list <todo>`.
|
the :ref:`TODO list <todo>`.
|
||||||
|
|
||||||
|
Contribution Process
|
||||||
|
====================
|
||||||
|
|
||||||
|
Mostly the DRM subsystem works like any other kernel subsystem, see :ref:`the
|
||||||
|
main process guidelines and documentation <process_index>` for how things work.
|
||||||
|
Here we just document some of the specialities of the GPU subsystem.
|
||||||
|
|
||||||
|
Feature Merge Deadlines
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
All feature work must be in the linux-next tree by the -rc6 release of the
|
||||||
|
current release cycle, otherwise they must be postponed and can't reach the next
|
||||||
|
merge window. All patches must have landed in the drm-next tree by latest -rc7,
|
||||||
|
but if your branch is not in linux-next then this must have happened by -rc6
|
||||||
|
already.
|
||||||
|
|
||||||
|
After that point only bugfixes (like after the upstream merge window has closed
|
||||||
|
with the -rc1 release) are allowed. No new platform enabling or new drivers are
|
||||||
|
allowed.
|
||||||
|
|
||||||
|
This means that there's a blackout-period of about one month where feature work
|
||||||
|
can't be merged. The recommended way to deal with that is having a -next tree
|
||||||
|
that's always open, but making sure to not feed it into linux-next during the
|
||||||
|
blackout period. As an example, drm-misc works like that.
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
Owner Module/Drivers,Group,Property Name,Type,Property Values,Object attached,Description/Restrictions
|
Owner Module/Drivers,Group,Property Name,Type,Property Values,Object attached,Description/Restrictions
|
||||||
,,“scaling mode”,ENUM,"{ ""None"", ""Full"", ""Center"", ""Full aspect"" }",Connector,"Supported by: amdgpu, gma500, i915, nouveau and radeon."
|
,,“scaling mode”,ENUM,"{ ""None"", ""Full"", ""Center"", ""Full aspect"" }",Connector,"Supported by: amdgpu, gma500, i915, nouveau and radeon."
|
||||||
,Connector,“EDID”,BLOB | IMMUTABLE,0,Connector,Contains id of edid blob ptr object.
|
|
||||||
,,“DPMS”,ENUM,"{ “On”, “Standby”, “Suspend”, “Off” }",Connector,Contains DPMS operation mode value.
|
|
||||||
,,“PATH”,BLOB | IMMUTABLE,0,Connector,Contains topology path to a connector.
|
|
||||||
,,“TILE”,BLOB | IMMUTABLE,0,Connector,Contains tiling information for a connector.
|
|
||||||
,,“CRTC_ID”,OBJECT,DRM_MODE_OBJECT_CRTC,Connector,CRTC that connector is attached to (atomic)
|
|
||||||
,DVI-I,“subconnector”,ENUM,"{ “Unknown”, “DVI-D”, “DVI-A” }",Connector,TBD
|
,DVI-I,“subconnector”,ENUM,"{ “Unknown”, “DVI-D”, “DVI-A” }",Connector,TBD
|
||||||
,,“select subconnector”,ENUM,"{ “Automatic”, “DVI-D”, “DVI-A” }",Connector,TBD
|
,,“select subconnector”,ENUM,"{ “Automatic”, “DVI-D”, “DVI-A” }",Connector,TBD
|
||||||
,TV,“subconnector”,ENUM,"{ ""Unknown"", ""Composite"", ""SVIDEO"", ""Component"", ""SCART"" }",Connector,TBD
|
,TV,“subconnector”,ENUM,"{ ""Unknown"", ""Composite"", ""SVIDEO"", ""Component"", ""SCART"" }",Connector,TBD
|
||||||
|
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
=============================================
|
||||||
|
drm/meson AmLogic Meson Video Processing Unit
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_drv.c
|
||||||
|
:doc: Video Processing Unit
|
||||||
|
|
||||||
|
Video Processing Unit
|
||||||
|
=====================
|
||||||
|
|
||||||
|
The Amlogic Meson Display controller is composed of several components
|
||||||
|
that are going to be documented below:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
DMC|---------------VPU (Video Processing Unit)----------------|------HHI------|
|
||||||
|
| vd1 _______ _____________ _________________ | |
|
||||||
|
D |-------| |----| | | | | HDMI PLL |
|
||||||
|
D | vd2 | VIU | | Video Post | | Video Encoders |<---|-----VCLK |
|
||||||
|
R |-------| |----| Processing | | | | |
|
||||||
|
| osd2 | | | |---| Enci ----------|----|-----VDAC------|
|
||||||
|
R |-------| CSC |----| Scalers | | Encp ----------|----|----HDMI-TX----|
|
||||||
|
A | osd1 | | | Blenders | | Encl ----------|----|---------------|
|
||||||
|
M |-------|______|----|____________| |________________| | |
|
||||||
|
___|__________________________________________________________|_______________|
|
||||||
|
|
||||||
|
Video Input Unit
|
||||||
|
================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_viu.c
|
||||||
|
:doc: Video Input Unit
|
||||||
|
|
||||||
|
Video Post Processing
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_vpp.c
|
||||||
|
:doc: Video Post Processing
|
||||||
|
|
||||||
|
Video Encoder
|
||||||
|
=============
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_venc.c
|
||||||
|
:doc: Video Encoder
|
||||||
|
|
||||||
|
Video Canvas Management
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_canvas.c
|
||||||
|
:doc: Canvas
|
||||||
|
|
||||||
|
Video Clocks
|
||||||
|
============
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_vclk.c
|
||||||
|
:doc: Video Clocks
|
||||||
|
|
||||||
|
HDMI Video Output
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/meson/meson_dw_hdmi.c
|
||||||
|
:doc: HDMI Output
|
|
@ -16,7 +16,7 @@ De-midlayer drivers
|
||||||
With the recent ``drm_bus`` cleanup patches for 3.17 it is no longer required
|
With the recent ``drm_bus`` cleanup patches for 3.17 it is no longer required
|
||||||
to have a ``drm_bus`` structure set up. Drivers can directly set up the
|
to have a ``drm_bus`` structure set up. Drivers can directly set up the
|
||||||
``drm_device`` structure instead of relying on bus methods in ``drm_usb.c``
|
``drm_device`` structure instead of relying on bus methods in ``drm_usb.c``
|
||||||
and ``drm_platform.c``. The goal is to get rid of the driver's ``->load`` /
|
and ``drm_pci.c``. The goal is to get rid of the driver's ``->load`` /
|
||||||
``->unload`` callbacks and open-code the load/unload sequence properly, using
|
``->unload`` callbacks and open-code the load/unload sequence properly, using
|
||||||
the new two-stage ``drm_device`` setup/teardown.
|
the new two-stage ``drm_device`` setup/teardown.
|
||||||
|
|
||||||
|
@ -99,6 +99,30 @@ events for atomic commits correctly. But fixing these bugs is good anyway.
|
||||||
|
|
||||||
Contact: Daniel Vetter, respective driver maintainers
|
Contact: Daniel Vetter, respective driver maintainers
|
||||||
|
|
||||||
|
Better manual-upload support for atomic
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
This would be especially useful for tinydrm:
|
||||||
|
|
||||||
|
- Add a struct drm_rect dirty_clip to drm_crtc_state. When duplicating the
|
||||||
|
crtc state, clear that to the max values, x/y = 0 and w/h = MAX_INT, in
|
||||||
|
__drm_atomic_helper_crtc_duplicate_state().
|
||||||
|
|
||||||
|
- Move tinydrm_merge_clips into drm_framebuffer.c, dropping the tinydrm_
|
||||||
|
prefix ofc and using drm_fb_. drm_framebuffer.c makes sense since this
|
||||||
|
is a function useful to implement the fb->dirty function.
|
||||||
|
|
||||||
|
- Create a new drm_fb_dirty function which does essentially what e.g.
|
||||||
|
mipi_dbi_fb_dirty does. You can use e.g. drm_atomic_helper_update_plane as the
|
||||||
|
template. But instead of doing a simple full-screen plane update, this new
|
||||||
|
helper also sets crtc_state->dirty_clip to the right coordinates. And of
|
||||||
|
course it needs to check whether the fb is actually active (and maybe where),
|
||||||
|
so there's some book-keeping involved. There's also some good fun involved in
|
||||||
|
scaling things appropriately. For that case we might simply give up and
|
||||||
|
declare the entire area covered by the plane as dirty.
|
||||||
|
|
||||||
|
Contact: Noralf Trønnes, Daniel Vetter
|
||||||
|
|
||||||
Fallout from atomic KMS
|
Fallout from atomic KMS
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
@ -151,7 +175,7 @@ fine-grained per-buffer object and per-context lockings scheme. Currently the
|
||||||
following drivers still use ``struct_mutex``: ``msm``, ``omapdrm`` and
|
following drivers still use ``struct_mutex``: ``msm``, ``omapdrm`` and
|
||||||
``udl``.
|
``udl``.
|
||||||
|
|
||||||
Contact: Daniel Vetter
|
Contact: Daniel Vetter, respective driver maintainers
|
||||||
|
|
||||||
Switch to drm_connector_list_iter for any connector_list walking
|
Switch to drm_connector_list_iter for any connector_list walking
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -193,6 +217,8 @@ plan is to switch to per-file driver API headers, which will also structure
|
||||||
the kerneldoc better. This should also allow more fine-grained ``#include``
|
the kerneldoc better. This should also allow more fine-grained ``#include``
|
||||||
directives.
|
directives.
|
||||||
|
|
||||||
|
In the end no .c file should need to include ``drmP.h`` anymore.
|
||||||
|
|
||||||
Contact: Daniel Vetter
|
Contact: Daniel Vetter
|
||||||
|
|
||||||
Add missing kerneldoc for exported functions
|
Add missing kerneldoc for exported functions
|
||||||
|
@ -220,13 +246,8 @@ be hidden so that driver writers don't accidentally end up using it. And to
|
||||||
prevent security issues in those legacy IOCTLs from being exploited on modern
|
prevent security issues in those legacy IOCTLs from being exploited on modern
|
||||||
drivers. This has multiple possible subtasks:
|
drivers. This has multiple possible subtasks:
|
||||||
|
|
||||||
* Make sure legacy IOCTLs can't be used on modern drivers.
|
|
||||||
* Extract support code for legacy features into a ``drm-legacy.ko`` kernel
|
* Extract support code for legacy features into a ``drm-legacy.ko`` kernel
|
||||||
module and compile it only when one of the legacy drivers is enabled.
|
module and compile it only when one of the legacy drivers is enabled.
|
||||||
* Extract legacy functions into their own headers and remove it that from the
|
|
||||||
monolithic ``drmP.h`` header.
|
|
||||||
* Remove any lingering cruft from the OS abstraction layer from modern
|
|
||||||
drivers.
|
|
||||||
|
|
||||||
This is mostly done, the only thing left is to split up ``drm_irq.c`` into
|
This is mostly done, the only thing left is to split up ``drm_irq.c`` into
|
||||||
legacy cruft and the parts needed by modern KMS drivers.
|
legacy cruft and the parts needed by modern KMS drivers.
|
||||||
|
@ -272,6 +293,32 @@ This is a really varied tasks with lots of little bits and pieces:
|
||||||
|
|
||||||
Contact: Daniel Vetter
|
Contact: Daniel Vetter
|
||||||
|
|
||||||
|
Clean up the debugfs support
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
There's a bunch of issues with it:
|
||||||
|
|
||||||
|
- The drm_info_list ->show() function doesn't even bother to cast to the drm
|
||||||
|
structure for you. This is lazy.
|
||||||
|
|
||||||
|
- We probably want to have some support for debugfs files on crtc/connectors and
|
||||||
|
maybe other kms objects directly in core. There's even drm_print support in
|
||||||
|
the funcs for these objects to dump kms state, so it's all there. And then the
|
||||||
|
->show() functions should obviously give you a pointer to the right object.
|
||||||
|
|
||||||
|
- The drm_info_list stuff is centered on drm_minor instead of drm_device. For
|
||||||
|
anything we want to print drm_device (or maybe drm_file) is the right thing.
|
||||||
|
|
||||||
|
- The drm_driver->debugfs_init hooks we have is just an artifact of the old
|
||||||
|
midlayered load sequence. DRM debugfs should work more like sysfs, where you
|
||||||
|
can create properties/files for an object anytime you want, and the core
|
||||||
|
takes care of publishing/unpuplishing all the files at register/unregister
|
||||||
|
time. Drivers shouldn't need to worry about these technicalities, and fixing
|
||||||
|
this (together with the drm_minor->drm_device move) would allow us to remove
|
||||||
|
debugfs_init.
|
||||||
|
|
||||||
|
Contact: Daniel Vetter
|
||||||
|
|
||||||
Better Testing
|
Better Testing
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
@ -310,25 +357,51 @@ Contact: Daniel Vetter
|
||||||
Driver Specific
|
Driver Specific
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
tinydrm
|
||||||
|
-------
|
||||||
|
|
||||||
|
Tinydrm is the helper driver for really simple fb drivers. The goal is to make
|
||||||
|
those drivers as simple as possible, so lots of room for refactoring:
|
||||||
|
|
||||||
|
- backlight helpers, probably best to put them into a new drm_backlight.c.
|
||||||
|
This is because drivers/video is de-facto unmaintained. We could also
|
||||||
|
move drivers/video/backlight to drivers/gpu/backlight and take it all
|
||||||
|
over within drm-misc, but that's more work.
|
||||||
|
|
||||||
|
- spi helpers, probably best put into spi core/helper code. Thierry said
|
||||||
|
the spi maintainer is fast&reactive, so shouldn't be a big issue.
|
||||||
|
|
||||||
|
- extract the mipi-dbi helper (well, the non-tinydrm specific parts at
|
||||||
|
least) into a separate helper, like we have for mipi-dsi already. Or follow
|
||||||
|
one of the ideas for having a shared dsi/dbi helper, abstracting away the
|
||||||
|
transport details more.
|
||||||
|
|
||||||
|
- tinydrm_lastclose could be drm_fb_helper_lastclose. Only thing we need
|
||||||
|
for that is to store the drm_fb_helper pointer somewhere in
|
||||||
|
drm_device->mode_config. And then we could roll that out to all the
|
||||||
|
drivers.
|
||||||
|
|
||||||
|
- tinydrm_gem_cma_prime_import_sg_table should probably go into the cma
|
||||||
|
helpers, as a _vmapped variant (since not every driver needs the vmap).
|
||||||
|
And tinydrm_gem_cma_free_object could the be merged into
|
||||||
|
drm_gem_cma_free_object().
|
||||||
|
|
||||||
|
- tinydrm_fb_create we could move into drm_simple_pipe, only need to add
|
||||||
|
the fb_create hook to drm_simple_pipe_funcs, which would again simplify a
|
||||||
|
bunch of things (since it gives you a one-stop vfunc for simple drivers).
|
||||||
|
|
||||||
|
- Quick aside: The unregister devm stuff is kinda getting the lifetimes of
|
||||||
|
a drm_device wrong. Doesn't matter, since everyone else gets it wrong
|
||||||
|
too :-)
|
||||||
|
|
||||||
|
- With the fbdev pointer in dev->mode_config we could also make
|
||||||
|
suspend/resume helpers entirely generic, at least if we add a
|
||||||
|
dev->mode_config.suspend_state. We could even provide a generic pm_ops
|
||||||
|
structure with those.
|
||||||
|
|
||||||
|
- also rework the drm_framebuffer_funcs->dirty hook wire-up, see above.
|
||||||
|
|
||||||
|
Contact: Noralf Trønnes, Daniel Vetter
|
||||||
|
|
||||||
Outside DRM
|
Outside DRM
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Better kerneldoc
|
|
||||||
----------------
|
|
||||||
|
|
||||||
This is pretty much done, but there's some advanced topics:
|
|
||||||
|
|
||||||
Come up with a way to hyperlink to struct members. Currently you can hyperlink
|
|
||||||
to the struct using ``#struct_name``, but not to a member within. Would need
|
|
||||||
buy-in from kerneldoc maintainers, and the big question is how to make it work
|
|
||||||
without totally unsightly
|
|
||||||
``drm_foo_bar_really_long_structure->even_longer_memeber`` all over the text
|
|
||||||
which breaks text flow.
|
|
||||||
|
|
||||||
Figure out how to integrate the asciidoc support for ascii-diagrams. We have a
|
|
||||||
few of those (e.g. to describe mode timings), and asciidoc supports converting
|
|
||||||
some ascii-art dialect into pngs. Would be really pretty to make that work.
|
|
||||||
|
|
||||||
Contact: Daniel Vetter, Jani Nikula
|
|
||||||
|
|
||||||
Jani is working on this already, hopefully lands in 4.8.
|
|
||||||
|
|
|
@ -1258,6 +1258,319 @@ The following tables list existing packed RGB formats.
|
||||||
- b\ :sub:`2`
|
- b\ :sub:`2`
|
||||||
- b\ :sub:`1`
|
- b\ :sub:`1`
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-RGB101010-1X30:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_RGB101010_1X30
|
||||||
|
- 0x1018
|
||||||
|
-
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- r\ :sub:`9`
|
||||||
|
- r\ :sub:`8`
|
||||||
|
- r\ :sub:`7`
|
||||||
|
- r\ :sub:`6`
|
||||||
|
- r\ :sub:`5`
|
||||||
|
- r\ :sub:`4`
|
||||||
|
- r\ :sub:`3`
|
||||||
|
- r\ :sub:`2`
|
||||||
|
- r\ :sub:`1`
|
||||||
|
- r\ :sub:`0`
|
||||||
|
- g\ :sub:`9`
|
||||||
|
- g\ :sub:`8`
|
||||||
|
- g\ :sub:`7`
|
||||||
|
- g\ :sub:`6`
|
||||||
|
- g\ :sub:`5`
|
||||||
|
- g\ :sub:`4`
|
||||||
|
- g\ :sub:`3`
|
||||||
|
- g\ :sub:`2`
|
||||||
|
- g\ :sub:`1`
|
||||||
|
- g\ :sub:`0`
|
||||||
|
- b\ :sub:`9`
|
||||||
|
- b\ :sub:`8`
|
||||||
|
- b\ :sub:`7`
|
||||||
|
- b\ :sub:`6`
|
||||||
|
- b\ :sub:`5`
|
||||||
|
- b\ :sub:`4`
|
||||||
|
- b\ :sub:`3`
|
||||||
|
- b\ :sub:`2`
|
||||||
|
- b\ :sub:`1`
|
||||||
|
- b\ :sub:`0`
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\endgroup
|
||||||
|
|
||||||
|
|
||||||
|
The following table list existing packed 36bit wide RGB formats.
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||||
|
|
||||||
|
.. _v4l2-mbus-pixelcode-rgb-36:
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\begingroup
|
||||||
|
\tiny
|
||||||
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
|
.. flat-table:: 36bit RGB formats
|
||||||
|
:header-rows: 2
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
-
|
||||||
|
- :cspan:`35` Data organization
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
- Bit
|
||||||
|
- 35
|
||||||
|
- 34
|
||||||
|
- 33
|
||||||
|
- 32
|
||||||
|
- 31
|
||||||
|
- 30
|
||||||
|
- 29
|
||||||
|
- 28
|
||||||
|
- 27
|
||||||
|
- 26
|
||||||
|
- 25
|
||||||
|
- 24
|
||||||
|
- 23
|
||||||
|
- 22
|
||||||
|
- 21
|
||||||
|
- 20
|
||||||
|
- 19
|
||||||
|
- 18
|
||||||
|
- 17
|
||||||
|
- 16
|
||||||
|
- 15
|
||||||
|
- 14
|
||||||
|
- 13
|
||||||
|
- 12
|
||||||
|
- 11
|
||||||
|
- 10
|
||||||
|
- 9
|
||||||
|
- 8
|
||||||
|
- 7
|
||||||
|
- 6
|
||||||
|
- 5
|
||||||
|
- 4
|
||||||
|
- 3
|
||||||
|
- 2
|
||||||
|
- 1
|
||||||
|
- 0
|
||||||
|
* .. _MEDIA-BUS-FMT-RGB121212-1X36:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_RGB121212_1X36
|
||||||
|
- 0x1019
|
||||||
|
-
|
||||||
|
- r\ :sub:`11`
|
||||||
|
- r\ :sub:`10`
|
||||||
|
- r\ :sub:`9`
|
||||||
|
- r\ :sub:`8`
|
||||||
|
- r\ :sub:`7`
|
||||||
|
- r\ :sub:`6`
|
||||||
|
- r\ :sub:`5`
|
||||||
|
- r\ :sub:`4`
|
||||||
|
- r\ :sub:`3`
|
||||||
|
- r\ :sub:`2`
|
||||||
|
- r\ :sub:`1`
|
||||||
|
- r\ :sub:`0`
|
||||||
|
- g\ :sub:`11`
|
||||||
|
- g\ :sub:`10`
|
||||||
|
- g\ :sub:`9`
|
||||||
|
- g\ :sub:`8`
|
||||||
|
- g\ :sub:`7`
|
||||||
|
- g\ :sub:`6`
|
||||||
|
- g\ :sub:`5`
|
||||||
|
- g\ :sub:`4`
|
||||||
|
- g\ :sub:`3`
|
||||||
|
- g\ :sub:`2`
|
||||||
|
- g\ :sub:`1`
|
||||||
|
- g\ :sub:`0`
|
||||||
|
- b\ :sub:`11`
|
||||||
|
- b\ :sub:`10`
|
||||||
|
- b\ :sub:`9`
|
||||||
|
- b\ :sub:`8`
|
||||||
|
- b\ :sub:`7`
|
||||||
|
- b\ :sub:`6`
|
||||||
|
- b\ :sub:`5`
|
||||||
|
- b\ :sub:`4`
|
||||||
|
- b\ :sub:`3`
|
||||||
|
- b\ :sub:`2`
|
||||||
|
- b\ :sub:`1`
|
||||||
|
- b\ :sub:`0`
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\endgroup
|
||||||
|
|
||||||
|
|
||||||
|
The following table list existing packed 48bit wide RGB formats.
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||||
|
|
||||||
|
.. _v4l2-mbus-pixelcode-rgb-48:
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\begingroup
|
||||||
|
\tiny
|
||||||
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
|
.. flat-table:: 48bit RGB formats
|
||||||
|
:header-rows: 3
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
-
|
||||||
|
- :cspan:`31` Data organization
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
- Bit
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- 47
|
||||||
|
- 46
|
||||||
|
- 45
|
||||||
|
- 44
|
||||||
|
- 43
|
||||||
|
- 42
|
||||||
|
- 41
|
||||||
|
- 40
|
||||||
|
- 39
|
||||||
|
- 38
|
||||||
|
- 37
|
||||||
|
- 36
|
||||||
|
- 35
|
||||||
|
- 34
|
||||||
|
- 33
|
||||||
|
- 32
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- 31
|
||||||
|
- 30
|
||||||
|
- 29
|
||||||
|
- 28
|
||||||
|
- 27
|
||||||
|
- 26
|
||||||
|
- 25
|
||||||
|
- 24
|
||||||
|
- 23
|
||||||
|
- 22
|
||||||
|
- 21
|
||||||
|
- 20
|
||||||
|
- 19
|
||||||
|
- 18
|
||||||
|
- 17
|
||||||
|
- 16
|
||||||
|
- 15
|
||||||
|
- 14
|
||||||
|
- 13
|
||||||
|
- 12
|
||||||
|
- 11
|
||||||
|
- 10
|
||||||
|
- 9
|
||||||
|
- 8
|
||||||
|
- 7
|
||||||
|
- 6
|
||||||
|
- 5
|
||||||
|
- 4
|
||||||
|
- 3
|
||||||
|
- 2
|
||||||
|
- 1
|
||||||
|
- 0
|
||||||
|
* .. _MEDIA-BUS-FMT-RGB161616-1X48:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_RGB161616_1X48
|
||||||
|
- 0x101a
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- r\ :sub:`15`
|
||||||
|
- r\ :sub:`14`
|
||||||
|
- r\ :sub:`13`
|
||||||
|
- r\ :sub:`12`
|
||||||
|
- r\ :sub:`11`
|
||||||
|
- r\ :sub:`10`
|
||||||
|
- r\ :sub:`9`
|
||||||
|
- r\ :sub:`8`
|
||||||
|
- r\ :sub:`7`
|
||||||
|
- r\ :sub:`6`
|
||||||
|
- r\ :sub:`5`
|
||||||
|
- r\ :sub:`4`
|
||||||
|
- r\ :sub:`3`
|
||||||
|
- r\ :sub:`2`
|
||||||
|
- r\ :sub:`1`
|
||||||
|
- r\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- g\ :sub:`15`
|
||||||
|
- g\ :sub:`14`
|
||||||
|
- g\ :sub:`13`
|
||||||
|
- g\ :sub:`12`
|
||||||
|
- g\ :sub:`11`
|
||||||
|
- g\ :sub:`10`
|
||||||
|
- g\ :sub:`9`
|
||||||
|
- g\ :sub:`8`
|
||||||
|
- g\ :sub:`7`
|
||||||
|
- g\ :sub:`6`
|
||||||
|
- g\ :sub:`5`
|
||||||
|
- g\ :sub:`4`
|
||||||
|
- g\ :sub:`3`
|
||||||
|
- g\ :sub:`2`
|
||||||
|
- g\ :sub:`1`
|
||||||
|
- g\ :sub:`0`
|
||||||
|
- b\ :sub:`15`
|
||||||
|
- b\ :sub:`14`
|
||||||
|
- b\ :sub:`13`
|
||||||
|
- b\ :sub:`12`
|
||||||
|
- b\ :sub:`11`
|
||||||
|
- b\ :sub:`10`
|
||||||
|
- b\ :sub:`9`
|
||||||
|
- b\ :sub:`8`
|
||||||
|
- b\ :sub:`7`
|
||||||
|
- b\ :sub:`6`
|
||||||
|
- b\ :sub:`5`
|
||||||
|
- b\ :sub:`4`
|
||||||
|
- b\ :sub:`3`
|
||||||
|
- b\ :sub:`2`
|
||||||
|
- b\ :sub:`1`
|
||||||
|
- b\ :sub:`0`
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
|
@ -2344,7 +2657,8 @@ The format code is made of the following information.
|
||||||
|
|
||||||
- The number of bus samples per pixel. Pixels that are wider than the
|
- The number of bus samples per pixel. Pixels that are wider than the
|
||||||
bus width must be transferred in multiple samples. Common values are
|
bus width must be transferred in multiple samples. Common values are
|
||||||
1, 1.5 (encoded as 1_5) and 2.
|
0.5 (encoded as 0_5; in this case two pixels are transferred per bus
|
||||||
|
sample), 1, 1.5 (encoded as 1_5) and 2.
|
||||||
|
|
||||||
- The bus width. When the bus width is larger than the number of bits
|
- The bus width. When the bus width is larger than the number of bits
|
||||||
per pixel component, several components are packed in a single bus
|
per pixel component, several components are packed in a single bus
|
||||||
|
@ -5962,6 +6276,78 @@ the following codes.
|
||||||
- v\ :sub:`2`
|
- v\ :sub:`2`
|
||||||
- v\ :sub:`1`
|
- v\ :sub:`1`
|
||||||
- v\ :sub:`0`
|
- v\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-UYYVYY8-0-5X24:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_UYYVYY8_0_5X24
|
||||||
|
- 0x2026
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
* .. _MEDIA-BUS-FMT-UYVY12-1X24:
|
* .. _MEDIA-BUS-FMT-UYVY12-1X24:
|
||||||
|
|
||||||
- MEDIA_BUS_FMT_UYVY12_1X24
|
- MEDIA_BUS_FMT_UYVY12_1X24
|
||||||
|
@ -6287,6 +6673,78 @@ the following codes.
|
||||||
- v\ :sub:`2`
|
- v\ :sub:`2`
|
||||||
- v\ :sub:`1`
|
- v\ :sub:`1`
|
||||||
- v\ :sub:`0`
|
- v\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-UYYVYY10-0-5X30:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_UYYVYY10_0_5X30
|
||||||
|
- 0x2027
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- u\ :sub:`9`
|
||||||
|
- u\ :sub:`8`
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- v\ :sub:`9`
|
||||||
|
- v\ :sub:`8`
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
* .. _MEDIA-BUS-FMT-AYUV8-1X32:
|
* .. _MEDIA-BUS-FMT-AYUV8-1X32:
|
||||||
|
|
||||||
- MEDIA_BUS_FMT_AYUV8_1X32
|
- MEDIA_BUS_FMT_AYUV8_1X32
|
||||||
|
@ -6326,6 +6784,506 @@ the following codes.
|
||||||
- v\ :sub:`0`
|
- v\ :sub:`0`
|
||||||
|
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\endgroup
|
||||||
|
|
||||||
|
|
||||||
|
The following table list existing packed 36bit wide YUV formats.
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\begingroup
|
||||||
|
\tiny
|
||||||
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||||
|
|
||||||
|
.. _v4l2-mbus-pixelcode-yuv8-36bit:
|
||||||
|
|
||||||
|
.. flat-table:: 36bit YUV Formats
|
||||||
|
:header-rows: 2
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
-
|
||||||
|
- :cspan:`35` Data organization
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
- Bit
|
||||||
|
- 35
|
||||||
|
- 34
|
||||||
|
- 33
|
||||||
|
- 32
|
||||||
|
- 31
|
||||||
|
- 30
|
||||||
|
- 29
|
||||||
|
- 28
|
||||||
|
- 27
|
||||||
|
- 26
|
||||||
|
- 25
|
||||||
|
- 24
|
||||||
|
- 23
|
||||||
|
- 22
|
||||||
|
- 21
|
||||||
|
- 10
|
||||||
|
- 19
|
||||||
|
- 18
|
||||||
|
- 17
|
||||||
|
- 16
|
||||||
|
- 15
|
||||||
|
- 14
|
||||||
|
- 13
|
||||||
|
- 12
|
||||||
|
- 11
|
||||||
|
- 10
|
||||||
|
- 9
|
||||||
|
- 8
|
||||||
|
- 7
|
||||||
|
- 6
|
||||||
|
- 5
|
||||||
|
- 4
|
||||||
|
- 3
|
||||||
|
- 2
|
||||||
|
- 1
|
||||||
|
- 0
|
||||||
|
* .. _MEDIA-BUS-FMT-UYYVYY12-0-5X36:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_UYYVYY12_0_5X36
|
||||||
|
- 0x2028
|
||||||
|
-
|
||||||
|
- u\ :sub:`11`
|
||||||
|
- u\ :sub:`10`
|
||||||
|
- u\ :sub:`9`
|
||||||
|
- u\ :sub:`8`
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- v\ :sub:`11`
|
||||||
|
- v\ :sub:`10`
|
||||||
|
- v\ :sub:`9`
|
||||||
|
- v\ :sub:`8`
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-YUV12-1X36:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_YUV12_1X36
|
||||||
|
- 0x2029
|
||||||
|
-
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- u\ :sub:`11`
|
||||||
|
- u\ :sub:`10`
|
||||||
|
- u\ :sub:`9`
|
||||||
|
- u\ :sub:`8`
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
- v\ :sub:`11`
|
||||||
|
- v\ :sub:`10`
|
||||||
|
- v\ :sub:`9`
|
||||||
|
- v\ :sub:`8`
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\endgroup
|
||||||
|
|
||||||
|
|
||||||
|
The following table list existing packed 48bit wide YUV formats.
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\begingroup
|
||||||
|
\tiny
|
||||||
|
\setlength{\tabcolsep}{2pt}
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||||
|
|
||||||
|
.. _v4l2-mbus-pixelcode-yuv8-48bit:
|
||||||
|
|
||||||
|
.. flat-table:: 48bit YUV Formats
|
||||||
|
:header-rows: 3
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
|
||||||
|
|
||||||
|
* - Identifier
|
||||||
|
- Code
|
||||||
|
-
|
||||||
|
- :cspan:`31` Data organization
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
- Bit
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- 47
|
||||||
|
- 46
|
||||||
|
- 45
|
||||||
|
- 44
|
||||||
|
- 43
|
||||||
|
- 42
|
||||||
|
- 41
|
||||||
|
- 40
|
||||||
|
- 39
|
||||||
|
- 38
|
||||||
|
- 37
|
||||||
|
- 36
|
||||||
|
- 35
|
||||||
|
- 34
|
||||||
|
- 33
|
||||||
|
- 32
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- 31
|
||||||
|
- 30
|
||||||
|
- 29
|
||||||
|
- 28
|
||||||
|
- 27
|
||||||
|
- 26
|
||||||
|
- 25
|
||||||
|
- 24
|
||||||
|
- 23
|
||||||
|
- 22
|
||||||
|
- 21
|
||||||
|
- 10
|
||||||
|
- 19
|
||||||
|
- 18
|
||||||
|
- 17
|
||||||
|
- 16
|
||||||
|
- 15
|
||||||
|
- 14
|
||||||
|
- 13
|
||||||
|
- 12
|
||||||
|
- 11
|
||||||
|
- 10
|
||||||
|
- 9
|
||||||
|
- 8
|
||||||
|
- 7
|
||||||
|
- 6
|
||||||
|
- 5
|
||||||
|
- 4
|
||||||
|
- 3
|
||||||
|
- 2
|
||||||
|
- 1
|
||||||
|
- 0
|
||||||
|
* .. _MEDIA-BUS-FMT-YUV16-1X48:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_YUV16_1X48
|
||||||
|
- 0x202a
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- y\ :sub:`15`
|
||||||
|
- y\ :sub:`14`
|
||||||
|
- y\ :sub:`13`
|
||||||
|
- y\ :sub:`12`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- u\ :sub:`15`
|
||||||
|
- u\ :sub:`14`
|
||||||
|
- u\ :sub:`13`
|
||||||
|
- u\ :sub:`12`
|
||||||
|
- u\ :sub:`11`
|
||||||
|
- u\ :sub:`10`
|
||||||
|
- u\ :sub:`9`
|
||||||
|
- u\ :sub:`8`
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
- v\ :sub:`15`
|
||||||
|
- v\ :sub:`14`
|
||||||
|
- v\ :sub:`13`
|
||||||
|
- v\ :sub:`12`
|
||||||
|
- v\ :sub:`11`
|
||||||
|
- v\ :sub:`10`
|
||||||
|
- v\ :sub:`9`
|
||||||
|
- v\ :sub:`8`
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-UYYVYY16-0-5X48:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_UYYVYY16_0_5X48
|
||||||
|
- 0x202b
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- u\ :sub:`15`
|
||||||
|
- u\ :sub:`14`
|
||||||
|
- u\ :sub:`13`
|
||||||
|
- u\ :sub:`12`
|
||||||
|
- u\ :sub:`11`
|
||||||
|
- u\ :sub:`10`
|
||||||
|
- u\ :sub:`9`
|
||||||
|
- u\ :sub:`8`
|
||||||
|
- u\ :sub:`7`
|
||||||
|
- u\ :sub:`6`
|
||||||
|
- u\ :sub:`5`
|
||||||
|
- u\ :sub:`4`
|
||||||
|
- u\ :sub:`3`
|
||||||
|
- u\ :sub:`2`
|
||||||
|
- u\ :sub:`1`
|
||||||
|
- u\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- y\ :sub:`15`
|
||||||
|
- y\ :sub:`14`
|
||||||
|
- y\ :sub:`13`
|
||||||
|
- y\ :sub:`12`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`15`
|
||||||
|
- y\ :sub:`14`
|
||||||
|
- y\ :sub:`13`
|
||||||
|
- y\ :sub:`12`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- v\ :sub:`15`
|
||||||
|
- v\ :sub:`14`
|
||||||
|
- v\ :sub:`13`
|
||||||
|
- v\ :sub:`12`
|
||||||
|
- v\ :sub:`11`
|
||||||
|
- v\ :sub:`10`
|
||||||
|
- v\ :sub:`9`
|
||||||
|
- v\ :sub:`8`
|
||||||
|
- v\ :sub:`7`
|
||||||
|
- v\ :sub:`6`
|
||||||
|
- v\ :sub:`5`
|
||||||
|
- v\ :sub:`4`
|
||||||
|
- v\ :sub:`3`
|
||||||
|
- v\ :sub:`2`
|
||||||
|
- v\ :sub:`1`
|
||||||
|
- v\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- y\ :sub:`15`
|
||||||
|
- y\ :sub:`14`
|
||||||
|
- y\ :sub:`13`
|
||||||
|
- y\ :sub:`12`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
- y\ :sub:`15`
|
||||||
|
- y\ :sub:`14`
|
||||||
|
- y\ :sub:`13`
|
||||||
|
- y\ :sub:`12`
|
||||||
|
- y\ :sub:`11`
|
||||||
|
- y\ :sub:`10`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`8`
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
||||||
\endgroup
|
\endgroup
|
||||||
|
|
|
@ -77,9 +77,15 @@ static struct pinctrl_desc foo_desc = {
|
||||||
|
|
||||||
int __init foo_probe(void)
|
int __init foo_probe(void)
|
||||||
{
|
{
|
||||||
|
int error;
|
||||||
|
|
||||||
struct pinctrl_dev *pctl;
|
struct pinctrl_dev *pctl;
|
||||||
|
|
||||||
return pinctrl_register_and_init(&foo_desc, <PARENT>, NULL, &pctl);
|
error = pinctrl_register_and_init(&foo_desc, <PARENT>, NULL, &pctl);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
|
||||||
|
return pinctrl_enable(pctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
To enable the pinctrl subsystem and the subgroups for PINMUX and PINCONF and
|
To enable the pinctrl subsystem and the subgroups for PINMUX and PINCONF and
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
\renewcommand\thesection*
|
\renewcommand\thesection*
|
||||||
\renewcommand\thesubsection*
|
\renewcommand\thesubsection*
|
||||||
|
|
||||||
|
.. _process_index:
|
||||||
|
|
||||||
Working with the kernel development community
|
Working with the kernel development community
|
||||||
=============================================
|
=============================================
|
||||||
|
|
|
@ -124,7 +124,7 @@ specified in the following format in the sign-off area:
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Cc: <stable@vger.kernel.org> # 3.3.x-
|
Cc: <stable@vger.kernel.org> # 3.3.x
|
||||||
|
|
||||||
The tag has the meaning of:
|
The tag has the meaning of:
|
||||||
|
|
||||||
|
|
|
@ -3377,6 +3377,69 @@ struct kvm_ppc_resize_hpt {
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
4.104 KVM_X86_GET_MCE_CAP_SUPPORTED
|
||||||
|
|
||||||
|
Capability: KVM_CAP_MCE
|
||||||
|
Architectures: x86
|
||||||
|
Type: system ioctl
|
||||||
|
Parameters: u64 mce_cap (out)
|
||||||
|
Returns: 0 on success, -1 on error
|
||||||
|
|
||||||
|
Returns supported MCE capabilities. The u64 mce_cap parameter
|
||||||
|
has the same format as the MSR_IA32_MCG_CAP register. Supported
|
||||||
|
capabilities will have the corresponding bits set.
|
||||||
|
|
||||||
|
4.105 KVM_X86_SETUP_MCE
|
||||||
|
|
||||||
|
Capability: KVM_CAP_MCE
|
||||||
|
Architectures: x86
|
||||||
|
Type: vcpu ioctl
|
||||||
|
Parameters: u64 mcg_cap (in)
|
||||||
|
Returns: 0 on success,
|
||||||
|
-EFAULT if u64 mcg_cap cannot be read,
|
||||||
|
-EINVAL if the requested number of banks is invalid,
|
||||||
|
-EINVAL if requested MCE capability is not supported.
|
||||||
|
|
||||||
|
Initializes MCE support for use. The u64 mcg_cap parameter
|
||||||
|
has the same format as the MSR_IA32_MCG_CAP register and
|
||||||
|
specifies which capabilities should be enabled. The maximum
|
||||||
|
supported number of error-reporting banks can be retrieved when
|
||||||
|
checking for KVM_CAP_MCE. The supported capabilities can be
|
||||||
|
retrieved with KVM_X86_GET_MCE_CAP_SUPPORTED.
|
||||||
|
|
||||||
|
4.106 KVM_X86_SET_MCE
|
||||||
|
|
||||||
|
Capability: KVM_CAP_MCE
|
||||||
|
Architectures: x86
|
||||||
|
Type: vcpu ioctl
|
||||||
|
Parameters: struct kvm_x86_mce (in)
|
||||||
|
Returns: 0 on success,
|
||||||
|
-EFAULT if struct kvm_x86_mce cannot be read,
|
||||||
|
-EINVAL if the bank number is invalid,
|
||||||
|
-EINVAL if VAL bit is not set in status field.
|
||||||
|
|
||||||
|
Inject a machine check error (MCE) into the guest. The input
|
||||||
|
parameter is:
|
||||||
|
|
||||||
|
struct kvm_x86_mce {
|
||||||
|
__u64 status;
|
||||||
|
__u64 addr;
|
||||||
|
__u64 misc;
|
||||||
|
__u64 mcg_status;
|
||||||
|
__u8 bank;
|
||||||
|
__u8 pad1[7];
|
||||||
|
__u64 pad2[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
If the MCE being reported is an uncorrected error, KVM will
|
||||||
|
inject it as an MCE exception into the guest. If the guest
|
||||||
|
MCG_STATUS register reports that an MCE is in progress, KVM
|
||||||
|
causes an KVM_EXIT_SHUTDOWN vmexit.
|
||||||
|
|
||||||
|
Otherwise, if the MCE is a corrected error, KVM will just
|
||||||
|
store it in the corresponding bank (provided this bank is
|
||||||
|
not holding a previously reported uncorrected error).
|
||||||
|
|
||||||
5. The kvm_run structure
|
5. The kvm_run structure
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,12 @@ Groups:
|
||||||
|
|
||||||
Bits for undefined preemption levels are RAZ/WI.
|
Bits for undefined preemption levels are RAZ/WI.
|
||||||
|
|
||||||
|
For historical reasons and to provide ABI compatibility with userspace we
|
||||||
|
export the GICC_PMR register in the format of the GICH_VMCR.VMPriMask
|
||||||
|
field in the lower 5 bits of a word, meaning that userspace must always
|
||||||
|
use the lower 5 bits to communicate with the KVM device and must shift the
|
||||||
|
value left by 3 places to obtain the actual priority mask level.
|
||||||
|
|
||||||
Limitations:
|
Limitations:
|
||||||
- Priorities are not implemented, and registers are RAZ/WI
|
- Priorities are not implemented, and registers are RAZ/WI
|
||||||
- Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2.
|
- Currently only implemented for KVM_DEV_TYPE_ARM_VGIC_V2.
|
||||||
|
|
38
MAINTAINERS
38
MAINTAINERS
|
@ -4117,14 +4117,13 @@ F: drivers/block/drbd/
|
||||||
F: lib/lru_cache.c
|
F: lib/lru_cache.c
|
||||||
F: Documentation/blockdev/drbd/
|
F: Documentation/blockdev/drbd/
|
||||||
|
|
||||||
DRIVER CORE, KOBJECTS, DEBUGFS, KERNFS AND SYSFS
|
DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
|
||||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/kobject.txt
|
F: Documentation/kobject.txt
|
||||||
F: drivers/base/
|
F: drivers/base/
|
||||||
F: fs/debugfs/
|
F: fs/debugfs/
|
||||||
F: fs/kernfs/
|
|
||||||
F: fs/sysfs/
|
F: fs/sysfs/
|
||||||
F: include/linux/debugfs.h
|
F: include/linux/debugfs.h
|
||||||
F: include/linux/kobj*
|
F: include/linux/kobj*
|
||||||
|
@ -4145,6 +4144,7 @@ F: Documentation/devicetree/bindings/video/
|
||||||
F: Documentation/gpu/
|
F: Documentation/gpu/
|
||||||
F: include/drm/
|
F: include/drm/
|
||||||
F: include/uapi/drm/
|
F: include/uapi/drm/
|
||||||
|
F: include/linux/vga*
|
||||||
|
|
||||||
DRM DRIVERS AND MISC GPU PATCHES
|
DRM DRIVERS AND MISC GPU PATCHES
|
||||||
M: Daniel Vetter <daniel.vetter@intel.com>
|
M: Daniel Vetter <daniel.vetter@intel.com>
|
||||||
|
@ -4158,6 +4158,7 @@ F: drivers/gpu/vga/
|
||||||
F: drivers/gpu/drm/*
|
F: drivers/gpu/drm/*
|
||||||
F: include/drm/drm*
|
F: include/drm/drm*
|
||||||
F: include/uapi/drm/drm*
|
F: include/uapi/drm/drm*
|
||||||
|
F: include/linux/vga*
|
||||||
|
|
||||||
DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
|
DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
|
||||||
M: Dave Airlie <airlied@redhat.com>
|
M: Dave Airlie <airlied@redhat.com>
|
||||||
|
@ -4255,7 +4256,8 @@ W: http://linux-meson.com/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/gpu/drm/meson/
|
F: drivers/gpu/drm/meson/
|
||||||
F: Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt
|
F: Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt
|
||||||
T: git git://anongit.freedesktop.org/drm/drm-meson
|
F: Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.txt
|
||||||
|
F: Documentation/gpu/meson.rst
|
||||||
T: git git://anongit.freedesktop.org/drm/drm-misc
|
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||||
|
|
||||||
DRM DRIVERS FOR EXYNOS
|
DRM DRIVERS FOR EXYNOS
|
||||||
|
@ -4381,6 +4383,7 @@ S: Supported
|
||||||
F: drivers/gpu/drm/rcar-du/
|
F: drivers/gpu/drm/rcar-du/
|
||||||
F: drivers/gpu/drm/shmobile/
|
F: drivers/gpu/drm/shmobile/
|
||||||
F: include/linux/platform_data/shmob_drm.h
|
F: include/linux/platform_data/shmob_drm.h
|
||||||
|
F: Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
|
||||||
F: Documentation/devicetree/bindings/display/renesas,du.txt
|
F: Documentation/devicetree/bindings/display/renesas,du.txt
|
||||||
|
|
||||||
DRM DRIVER FOR QXL VIRTUAL GPU
|
DRM DRIVER FOR QXL VIRTUAL GPU
|
||||||
|
@ -4781,6 +4784,12 @@ L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/mpc85xx_edac.[ch]
|
F: drivers/edac/mpc85xx_edac.[ch]
|
||||||
|
|
||||||
|
EDAC-PND2
|
||||||
|
M: Tony Luck <tony.luck@intel.com>
|
||||||
|
L: linux-edac@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/edac/pnd2_edac.[ch]
|
||||||
|
|
||||||
EDAC-PASEMI
|
EDAC-PASEMI
|
||||||
M: Egor Martovetsky <egor@pasemi.com>
|
M: Egor Martovetsky <egor@pasemi.com>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
|
@ -4928,6 +4937,7 @@ F: include/linux/netfilter_bridge/
|
||||||
F: net/bridge/
|
F: net/bridge/
|
||||||
|
|
||||||
ETHERNET PHY LIBRARY
|
ETHERNET PHY LIBRARY
|
||||||
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -7089,9 +7099,9 @@ S: Maintained
|
||||||
F: fs/autofs4/
|
F: fs/autofs4/
|
||||||
|
|
||||||
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
||||||
|
M: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
M: Michal Marek <mmarek@suse.com>
|
M: Michal Marek <mmarek@suse.com>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
|
|
||||||
L: linux-kbuild@vger.kernel.org
|
L: linux-kbuild@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/kbuild/
|
F: Documentation/kbuild/
|
||||||
|
@ -7208,6 +7218,14 @@ F: arch/mips/include/uapi/asm/kvm*
|
||||||
F: arch/mips/include/asm/kvm*
|
F: arch/mips/include/asm/kvm*
|
||||||
F: arch/mips/kvm/
|
F: arch/mips/kvm/
|
||||||
|
|
||||||
|
KERNFS
|
||||||
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
M: Tejun Heo <tj@kernel.org>
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
|
||||||
|
S: Supported
|
||||||
|
F: include/linux/kernfs.h
|
||||||
|
F: fs/kernfs/
|
||||||
|
|
||||||
KEXEC
|
KEXEC
|
||||||
M: Eric Biederman <ebiederm@xmission.com>
|
M: Eric Biederman <ebiederm@xmission.com>
|
||||||
W: http://kernel.org/pub/linux/utils/kernel/kexec/
|
W: http://kernel.org/pub/linux/utils/kernel/kexec/
|
||||||
|
@ -10822,6 +10840,7 @@ F: drivers/s390/block/dasd*
|
||||||
F: block/partitions/ibm.c
|
F: block/partitions/ibm.c
|
||||||
|
|
||||||
S390 NETWORK DRIVERS
|
S390 NETWORK DRIVERS
|
||||||
|
M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
|
||||||
M: Ursula Braun <ubraun@linux.vnet.ibm.com>
|
M: Ursula Braun <ubraun@linux.vnet.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/
|
||||||
|
@ -10852,6 +10871,7 @@ S: Supported
|
||||||
F: drivers/s390/scsi/zfcp_*
|
F: drivers/s390/scsi/zfcp_*
|
||||||
|
|
||||||
S390 IUCV NETWORK LAYER
|
S390 IUCV NETWORK LAYER
|
||||||
|
M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
|
||||||
M: Ursula Braun <ubraun@linux.vnet.ibm.com>
|
M: Ursula Braun <ubraun@linux.vnet.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/
|
||||||
|
@ -13257,6 +13277,14 @@ L: kvm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/vfio/platform/
|
F: drivers/vfio/platform/
|
||||||
|
|
||||||
|
VGA_SWITCHEROO
|
||||||
|
R: Lukas Wunner <lukas@wunner.de>
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/gpu/vga-switcheroo.rst
|
||||||
|
F: drivers/gpu/vga/vga_switcheroo.c
|
||||||
|
F: include/linux/vga_switcheroo.h
|
||||||
|
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||||
|
|
||||||
VIDEOBUF2 FRAMEWORK
|
VIDEOBUF2 FRAMEWORK
|
||||||
M: Pawel Osciak <pawel@osciak.com>
|
M: Pawel Osciak <pawel@osciak.com>
|
||||||
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||||
|
|
16
Makefile
16
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 11
|
PATCHLEVEL = 11
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc4
|
EXTRAVERSION = -rc6
|
||||||
NAME = Fearless Coyote
|
NAME = Fearless Coyote
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -372,7 +372,7 @@ LDFLAGS_MODULE =
|
||||||
CFLAGS_KERNEL =
|
CFLAGS_KERNEL =
|
||||||
AFLAGS_KERNEL =
|
AFLAGS_KERNEL =
|
||||||
LDFLAGS_vmlinux =
|
LDFLAGS_vmlinux =
|
||||||
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
|
CFLAGS_GCOV := -fprofile-arcs -ftest-coverage -fno-tree-loop-im $(call cc-disable-warning,maybe-uninitialized,)
|
||||||
CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,)
|
CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,)
|
||||||
|
|
||||||
|
|
||||||
|
@ -653,6 +653,12 @@ KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
|
||||||
# Tell gcc to never replace conditional load with a non-conditional one
|
# Tell gcc to never replace conditional load with a non-conditional one
|
||||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||||
|
|
||||||
|
# check for 'asm goto'
|
||||||
|
ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
|
||||||
|
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
|
||||||
|
KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
|
||||||
|
endif
|
||||||
|
|
||||||
include scripts/Makefile.gcc-plugins
|
include scripts/Makefile.gcc-plugins
|
||||||
|
|
||||||
ifdef CONFIG_READABLE_ASM
|
ifdef CONFIG_READABLE_ASM
|
||||||
|
@ -798,12 +804,6 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
|
||||||
# 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)
|
||||||
|
|
||||||
# check for 'asm goto'
|
|
||||||
ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
|
|
||||||
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
|
|
||||||
KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
|
|
||||||
endif
|
|
||||||
|
|
||||||
include scripts/Makefile.kasan
|
include scripts/Makefile.kasan
|
||||||
include scripts/Makefile.extrawarn
|
include scripts/Makefile.extrawarn
|
||||||
include scripts/Makefile.ubsan
|
include scripts/Makefile.ubsan
|
||||||
|
|
|
@ -1290,7 +1290,7 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
|
||||||
/* copy relevant bits of struct timex. */
|
/* copy relevant bits of struct timex. */
|
||||||
if (copy_from_user(&txc, txc_p, offsetof(struct timex32, time)) ||
|
if (copy_from_user(&txc, txc_p, offsetof(struct timex32, time)) ||
|
||||||
copy_from_user(&txc.tick, &txc_p->tick, sizeof(struct timex32) -
|
copy_from_user(&txc.tick, &txc_p->tick, sizeof(struct timex32) -
|
||||||
offsetof(struct timex32, time)))
|
offsetof(struct timex32, tick)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
ret = do_adjtimex(&txc);
|
ret = do_adjtimex(&txc);
|
||||||
|
|
|
@ -26,6 +26,7 @@ cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "snps,arc770d";
|
compatible = "snps,arc770d";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "snps,archs38";
|
compatible = "snps,archs38";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,27 @@ cpus {
|
||||||
|
|
||||||
cpu@0 {
|
cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "snps,archs38xN";
|
compatible = "snps,archs38";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
|
};
|
||||||
|
cpu@1 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "snps,archs38";
|
||||||
|
reg = <1>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
|
};
|
||||||
|
cpu@2 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "snps,archs38";
|
||||||
|
reg = <2>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
|
};
|
||||||
|
cpu@3 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "snps,archs38";
|
||||||
|
reg = <3>;
|
||||||
|
clocks = <&core_clk>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -112,13 +112,19 @@ mmc@0x15000 {
|
||||||
interrupts = <7>;
|
interrupts = <7>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/* Embedded Vision subsystem UIO mappings; only relevant for EV VDK */
|
/*
|
||||||
uio_ev: uio@0xD0000000 {
|
* Embedded Vision subsystem UIO mappings; only relevant for EV VDK
|
||||||
compatible = "generic-uio";
|
*
|
||||||
reg = <0xD0000000 0x2000 0xD1000000 0x2000 0x90000000 0x10000000 0xC0000000 0x10000000>;
|
* This node is intentionally put outside of MB above becase
|
||||||
reg-names = "ev_gsa", "ev_ctrl", "ev_shared_mem", "ev_code_mem";
|
* it maps areas outside of MB's 0xEz-0xFz.
|
||||||
interrupts = <23>;
|
*/
|
||||||
};
|
uio_ev: uio@0xD0000000 {
|
||||||
|
compatible = "generic-uio";
|
||||||
|
reg = <0xD0000000 0x2000 0xD1000000 0x2000 0x90000000 0x10000000 0xC0000000 0x10000000>;
|
||||||
|
reg-names = "ev_gsa", "ev_ctrl", "ev_shared_mem", "ev_code_mem";
|
||||||
|
interrupt-parent = <&mb_intc>;
|
||||||
|
interrupts = <23>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,9 +54,7 @@ int kprobe_fault_handler(struct pt_regs *regs, unsigned long cause);
|
||||||
void kretprobe_trampoline(void);
|
void kretprobe_trampoline(void);
|
||||||
void trap_is_kprobe(unsigned long address, struct pt_regs *regs);
|
void trap_is_kprobe(unsigned long address, struct pt_regs *regs);
|
||||||
#else
|
#else
|
||||||
static void trap_is_kprobe(unsigned long address, struct pt_regs *regs)
|
#define trap_is_kprobe(address, regs)
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_KPROBES */
|
#endif /* CONFIG_KPROBES */
|
||||||
|
|
||||||
#endif /* _ARC_KPROBES_H */
|
#endif /* _ARC_KPROBES_H */
|
||||||
|
|
|
@ -100,15 +100,21 @@ END(handle_interrupt)
|
||||||
;################### Non TLB Exception Handling #############################
|
;################### Non TLB Exception Handling #############################
|
||||||
|
|
||||||
ENTRY(EV_SWI)
|
ENTRY(EV_SWI)
|
||||||
flag 1
|
; TODO: implement this
|
||||||
|
EXCEPTION_PROLOGUE
|
||||||
|
b ret_from_exception
|
||||||
END(EV_SWI)
|
END(EV_SWI)
|
||||||
|
|
||||||
ENTRY(EV_DivZero)
|
ENTRY(EV_DivZero)
|
||||||
flag 1
|
; TODO: implement this
|
||||||
|
EXCEPTION_PROLOGUE
|
||||||
|
b ret_from_exception
|
||||||
END(EV_DivZero)
|
END(EV_DivZero)
|
||||||
|
|
||||||
ENTRY(EV_DCError)
|
ENTRY(EV_DCError)
|
||||||
flag 1
|
; TODO: implement this
|
||||||
|
EXCEPTION_PROLOGUE
|
||||||
|
b ret_from_exception
|
||||||
END(EV_DCError)
|
END(EV_DCError)
|
||||||
|
|
||||||
; ---------------------------------------------
|
; ---------------------------------------------
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/root_dev.h>
|
#include <linux/root_dev.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
#include <linux/clk-provider.h>
|
#include <linux/clk-provider.h>
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
|
@ -488,8 +489,9 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
int cpu_id = ptr_to_cpu(v);
|
int cpu_id = ptr_to_cpu(v);
|
||||||
struct device_node *core_clk = of_find_node_by_name(NULL, "core_clk");
|
struct device *cpu_dev = get_cpu_device(cpu_id);
|
||||||
u32 freq = 0;
|
struct clk *cpu_clk;
|
||||||
|
unsigned long freq = 0;
|
||||||
|
|
||||||
if (!cpu_online(cpu_id)) {
|
if (!cpu_online(cpu_id)) {
|
||||||
seq_printf(m, "processor [%d]\t: Offline\n", cpu_id);
|
seq_printf(m, "processor [%d]\t: Offline\n", cpu_id);
|
||||||
|
@ -502,9 +504,15 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||||
|
|
||||||
seq_printf(m, arc_cpu_mumbojumbo(cpu_id, str, PAGE_SIZE));
|
seq_printf(m, arc_cpu_mumbojumbo(cpu_id, str, PAGE_SIZE));
|
||||||
|
|
||||||
of_property_read_u32(core_clk, "clock-frequency", &freq);
|
cpu_clk = clk_get(cpu_dev, NULL);
|
||||||
|
if (IS_ERR(cpu_clk)) {
|
||||||
|
seq_printf(m, "CPU speed \t: Cannot get clock for processor [%d]\n",
|
||||||
|
cpu_id);
|
||||||
|
} else {
|
||||||
|
freq = clk_get_rate(cpu_clk);
|
||||||
|
}
|
||||||
if (freq)
|
if (freq)
|
||||||
seq_printf(m, "CPU speed\t: %u.%02u Mhz\n",
|
seq_printf(m, "CPU speed\t: %lu.%02lu Mhz\n",
|
||||||
freq / 1000000, (freq / 10000) % 100);
|
freq / 1000000, (freq / 10000) % 100);
|
||||||
|
|
||||||
seq_printf(m, "Bogo MIPS\t: %lu.%02lu\n",
|
seq_printf(m, "Bogo MIPS\t: %lu.%02lu\n",
|
||||||
|
|
|
@ -633,6 +633,9 @@ noinline static void slc_entire_op(const int op)
|
||||||
|
|
||||||
write_aux_reg(ARC_REG_SLC_INVALIDATE, 1);
|
write_aux_reg(ARC_REG_SLC_INVALIDATE, 1);
|
||||||
|
|
||||||
|
/* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */
|
||||||
|
read_aux_reg(r);
|
||||||
|
|
||||||
/* Important to wait for flush to complete */
|
/* Important to wait for flush to complete */
|
||||||
while (read_aux_reg(r) & SLC_CTRL_BUSY);
|
while (read_aux_reg(r) & SLC_CTRL_BUSY);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,8 +113,8 @@ sound: sound {
|
||||||
simple-audio-card,mclk-fs = <512>;
|
simple-audio-card,mclk-fs = <512>;
|
||||||
simple-audio-card,aux-devs = <&codec_analog>;
|
simple-audio-card,aux-devs = <&codec_analog>;
|
||||||
simple-audio-card,routing =
|
simple-audio-card,routing =
|
||||||
"Left DAC", "Digital Left DAC",
|
"Left DAC", "AIF1 Slot 0 Left",
|
||||||
"Right DAC", "Digital Right DAC";
|
"Right DAC", "AIF1 Slot 0 Right";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
simple-audio-card,cpu {
|
simple-audio-card,cpu {
|
||||||
|
|
|
@ -1124,6 +1124,9 @@ static void cpu_hyp_reinit(void)
|
||||||
if (__hyp_get_vectors() == hyp_default_vectors)
|
if (__hyp_get_vectors() == hyp_default_vectors)
|
||||||
cpu_init_hyp_mode(NULL);
|
cpu_init_hyp_mode(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vgic_present)
|
||||||
|
kvm_vgic_init_cpu_hardware();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cpu_hyp_reset(void)
|
static void cpu_hyp_reset(void)
|
||||||
|
|
|
@ -292,11 +292,18 @@ static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size)
|
||||||
phys_addr_t addr = start, end = start + size;
|
phys_addr_t addr = start, end = start + size;
|
||||||
phys_addr_t next;
|
phys_addr_t next;
|
||||||
|
|
||||||
|
assert_spin_locked(&kvm->mmu_lock);
|
||||||
pgd = kvm->arch.pgd + stage2_pgd_index(addr);
|
pgd = kvm->arch.pgd + stage2_pgd_index(addr);
|
||||||
do {
|
do {
|
||||||
next = stage2_pgd_addr_end(addr, end);
|
next = stage2_pgd_addr_end(addr, end);
|
||||||
if (!stage2_pgd_none(*pgd))
|
if (!stage2_pgd_none(*pgd))
|
||||||
unmap_stage2_puds(kvm, pgd, addr, next);
|
unmap_stage2_puds(kvm, pgd, addr, next);
|
||||||
|
/*
|
||||||
|
* If the range is too large, release the kvm->mmu_lock
|
||||||
|
* to prevent starvation and lockup detector warnings.
|
||||||
|
*/
|
||||||
|
if (next != end)
|
||||||
|
cond_resched_lock(&kvm->mmu_lock);
|
||||||
} while (pgd++, addr = next, addr != end);
|
} while (pgd++, addr = next, addr != end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -803,6 +810,7 @@ void stage2_unmap_vm(struct kvm *kvm)
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
idx = srcu_read_lock(&kvm->srcu);
|
idx = srcu_read_lock(&kvm->srcu);
|
||||||
|
down_read(¤t->mm->mmap_sem);
|
||||||
spin_lock(&kvm->mmu_lock);
|
spin_lock(&kvm->mmu_lock);
|
||||||
|
|
||||||
slots = kvm_memslots(kvm);
|
slots = kvm_memslots(kvm);
|
||||||
|
@ -810,6 +818,7 @@ void stage2_unmap_vm(struct kvm *kvm)
|
||||||
stage2_unmap_memslot(kvm, memslot);
|
stage2_unmap_memslot(kvm, memslot);
|
||||||
|
|
||||||
spin_unlock(&kvm->mmu_lock);
|
spin_unlock(&kvm->mmu_lock);
|
||||||
|
up_read(¤t->mm->mmap_sem);
|
||||||
srcu_read_unlock(&kvm->srcu, idx);
|
srcu_read_unlock(&kvm->srcu, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,7 +838,10 @@ void kvm_free_stage2_pgd(struct kvm *kvm)
|
||||||
if (kvm->arch.pgd == NULL)
|
if (kvm->arch.pgd == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
spin_lock(&kvm->mmu_lock);
|
||||||
unmap_stage2_range(kvm, 0, KVM_PHYS_SIZE);
|
unmap_stage2_range(kvm, 0, KVM_PHYS_SIZE);
|
||||||
|
spin_unlock(&kvm->mmu_lock);
|
||||||
|
|
||||||
/* Free the HW pgd, one page at a time */
|
/* Free the HW pgd, one page at a time */
|
||||||
free_pages_exact(kvm->arch.pgd, S2_PGD_SIZE);
|
free_pages_exact(kvm->arch.pgd, S2_PGD_SIZE);
|
||||||
kvm->arch.pgd = NULL;
|
kvm->arch.pgd = NULL;
|
||||||
|
@ -1801,6 +1813,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||||
(KVM_PHYS_SIZE >> PAGE_SHIFT))
|
(KVM_PHYS_SIZE >> PAGE_SHIFT))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
down_read(¤t->mm->mmap_sem);
|
||||||
/*
|
/*
|
||||||
* A memory region could potentially cover multiple VMAs, and any holes
|
* A memory region could potentially cover multiple VMAs, and any holes
|
||||||
* between them, so iterate over all of them to find out if we can map
|
* between them, so iterate over all of them to find out if we can map
|
||||||
|
@ -1844,8 +1857,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||||
pa += vm_start - vma->vm_start;
|
pa += vm_start - vma->vm_start;
|
||||||
|
|
||||||
/* IO region dirty page logging not allowed */
|
/* IO region dirty page logging not allowed */
|
||||||
if (memslot->flags & KVM_MEM_LOG_DIRTY_PAGES)
|
if (memslot->flags & KVM_MEM_LOG_DIRTY_PAGES) {
|
||||||
return -EINVAL;
|
ret = -EINVAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
ret = kvm_phys_addr_ioremap(kvm, gpa, pa,
|
ret = kvm_phys_addr_ioremap(kvm, gpa, pa,
|
||||||
vm_end - vm_start,
|
vm_end - vm_start,
|
||||||
|
@ -1857,7 +1872,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||||
} while (hva < reg_end);
|
} while (hva < reg_end);
|
||||||
|
|
||||||
if (change == KVM_MR_FLAGS_ONLY)
|
if (change == KVM_MR_FLAGS_ONLY)
|
||||||
return ret;
|
goto out;
|
||||||
|
|
||||||
spin_lock(&kvm->mmu_lock);
|
spin_lock(&kvm->mmu_lock);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -1865,6 +1880,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
|
||||||
else
|
else
|
||||||
stage2_flush_memslot(kvm, memslot);
|
stage2_flush_memslot(kvm, memslot);
|
||||||
spin_unlock(&kvm->mmu_lock);
|
spin_unlock(&kvm->mmu_lock);
|
||||||
|
out:
|
||||||
|
up_read(¤t->mm->mmap_sem);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -935,13 +935,31 @@ static void arm_coherent_dma_free(struct device *dev, size_t size, void *cpu_add
|
||||||
__arm_dma_free(dev, size, cpu_addr, handle, attrs, true);
|
__arm_dma_free(dev, size, cpu_addr, handle, attrs, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The whole dma_get_sgtable() idea is fundamentally unsafe - it seems
|
||||||
|
* that the intention is to allow exporting memory allocated via the
|
||||||
|
* coherent DMA APIs through the dma_buf API, which only accepts a
|
||||||
|
* scattertable. This presents a couple of problems:
|
||||||
|
* 1. Not all memory allocated via the coherent DMA APIs is backed by
|
||||||
|
* a struct page
|
||||||
|
* 2. Passing coherent DMA memory into the streaming APIs is not allowed
|
||||||
|
* as we will try to flush the memory through a different alias to that
|
||||||
|
* actually being used (and the flushes are redundant.)
|
||||||
|
*/
|
||||||
int arm_dma_get_sgtable(struct device *dev, struct sg_table *sgt,
|
int arm_dma_get_sgtable(struct device *dev, struct sg_table *sgt,
|
||||||
void *cpu_addr, dma_addr_t handle, size_t size,
|
void *cpu_addr, dma_addr_t handle, size_t size,
|
||||||
unsigned long attrs)
|
unsigned long attrs)
|
||||||
{
|
{
|
||||||
struct page *page = pfn_to_page(dma_to_pfn(dev, handle));
|
unsigned long pfn = dma_to_pfn(dev, handle);
|
||||||
|
struct page *page;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* If the PFN is not valid, we do not have a struct page */
|
||||||
|
if (!pfn_valid(pfn))
|
||||||
|
return -ENXIO;
|
||||||
|
|
||||||
|
page = pfn_to_page(pfn);
|
||||||
|
|
||||||
ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
|
ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
|
||||||
if (unlikely(ret))
|
if (unlikely(ret))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -303,7 +303,10 @@ static inline void set_vbar(unsigned long val)
|
||||||
*/
|
*/
|
||||||
static inline bool security_extensions_enabled(void)
|
static inline bool security_extensions_enabled(void)
|
||||||
{
|
{
|
||||||
return !!cpuid_feature_extract(CPUID_EXT_PFR1, 4);
|
/* Check CPUID Identification Scheme before ID_PFR1 read */
|
||||||
|
if ((read_cpuid_id() & 0x000f0000) == 0x000f0000)
|
||||||
|
return !!cpuid_feature_extract(CPUID_EXT_PFR1, 4);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long __init setup_vectors_base(void)
|
static unsigned long __init setup_vectors_base(void)
|
||||||
|
|
|
@ -266,11 +266,20 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (p) {
|
if (p) {
|
||||||
if (cur) {
|
if (!p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
|
||||||
|
/*
|
||||||
|
* Probe hit but conditional execution check failed,
|
||||||
|
* so just skip the instruction and continue as if
|
||||||
|
* nothing had happened.
|
||||||
|
* In this case, we can skip recursing check too.
|
||||||
|
*/
|
||||||
|
singlestep_skip(p, regs);
|
||||||
|
} else if (cur) {
|
||||||
/* Kprobe is pending, so we're recursing. */
|
/* Kprobe is pending, so we're recursing. */
|
||||||
switch (kcb->kprobe_status) {
|
switch (kcb->kprobe_status) {
|
||||||
case KPROBE_HIT_ACTIVE:
|
case KPROBE_HIT_ACTIVE:
|
||||||
case KPROBE_HIT_SSDONE:
|
case KPROBE_HIT_SSDONE:
|
||||||
|
case KPROBE_HIT_SS:
|
||||||
/* A pre- or post-handler probe got us here. */
|
/* A pre- or post-handler probe got us here. */
|
||||||
kprobes_inc_nmissed_count(p);
|
kprobes_inc_nmissed_count(p);
|
||||||
save_previous_kprobe(kcb);
|
save_previous_kprobe(kcb);
|
||||||
|
@ -279,11 +288,16 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
|
||||||
singlestep(p, regs, kcb);
|
singlestep(p, regs, kcb);
|
||||||
restore_previous_kprobe(kcb);
|
restore_previous_kprobe(kcb);
|
||||||
break;
|
break;
|
||||||
|
case KPROBE_REENTER:
|
||||||
|
/* A nested probe was hit in FIQ, it is a BUG */
|
||||||
|
pr_warn("Unrecoverable kprobe detected at %p.\n",
|
||||||
|
p->addr);
|
||||||
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
/* impossible cases */
|
/* impossible cases */
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
} else if (p->ainsn.insn_check_cc(regs->ARM_cpsr)) {
|
} else {
|
||||||
/* Probe hit and conditional execution check ok. */
|
/* Probe hit and conditional execution check ok. */
|
||||||
set_current_kprobe(p);
|
set_current_kprobe(p);
|
||||||
kcb->kprobe_status = KPROBE_HIT_ACTIVE;
|
kcb->kprobe_status = KPROBE_HIT_ACTIVE;
|
||||||
|
@ -304,13 +318,6 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
reset_current_kprobe();
|
reset_current_kprobe();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Probe hit but conditional execution check failed,
|
|
||||||
* so just skip the instruction and continue as if
|
|
||||||
* nothing had happened.
|
|
||||||
*/
|
|
||||||
singlestep_skip(p, regs);
|
|
||||||
}
|
}
|
||||||
} else if (cur) {
|
} else if (cur) {
|
||||||
/* We probably hit a jprobe. Call its break handler. */
|
/* We probably hit a jprobe. Call its break handler. */
|
||||||
|
@ -434,6 +441,7 @@ static __used __kprobes void *trampoline_handler(struct pt_regs *regs)
|
||||||
struct hlist_node *tmp;
|
struct hlist_node *tmp;
|
||||||
unsigned long flags, orig_ret_address = 0;
|
unsigned long flags, orig_ret_address = 0;
|
||||||
unsigned long trampoline_address = (unsigned long)&kretprobe_trampoline;
|
unsigned long trampoline_address = (unsigned long)&kretprobe_trampoline;
|
||||||
|
kprobe_opcode_t *correct_ret_addr = NULL;
|
||||||
|
|
||||||
INIT_HLIST_HEAD(&empty_rp);
|
INIT_HLIST_HEAD(&empty_rp);
|
||||||
kretprobe_hash_lock(current, &head, &flags);
|
kretprobe_hash_lock(current, &head, &flags);
|
||||||
|
@ -456,15 +464,7 @@ static __used __kprobes void *trampoline_handler(struct pt_regs *regs)
|
||||||
/* another task is sharing our hash bucket */
|
/* another task is sharing our hash bucket */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ri->rp && ri->rp->handler) {
|
|
||||||
__this_cpu_write(current_kprobe, &ri->rp->kp);
|
|
||||||
get_kprobe_ctlblk()->kprobe_status = KPROBE_HIT_ACTIVE;
|
|
||||||
ri->rp->handler(ri, regs);
|
|
||||||
__this_cpu_write(current_kprobe, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
orig_ret_address = (unsigned long)ri->ret_addr;
|
orig_ret_address = (unsigned long)ri->ret_addr;
|
||||||
recycle_rp_inst(ri, &empty_rp);
|
|
||||||
|
|
||||||
if (orig_ret_address != trampoline_address)
|
if (orig_ret_address != trampoline_address)
|
||||||
/*
|
/*
|
||||||
|
@ -476,6 +476,33 @@ static __used __kprobes void *trampoline_handler(struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
|
|
||||||
kretprobe_assert(ri, orig_ret_address, trampoline_address);
|
kretprobe_assert(ri, orig_ret_address, trampoline_address);
|
||||||
|
|
||||||
|
correct_ret_addr = ri->ret_addr;
|
||||||
|
hlist_for_each_entry_safe(ri, tmp, head, hlist) {
|
||||||
|
if (ri->task != current)
|
||||||
|
/* another task is sharing our hash bucket */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
orig_ret_address = (unsigned long)ri->ret_addr;
|
||||||
|
if (ri->rp && ri->rp->handler) {
|
||||||
|
__this_cpu_write(current_kprobe, &ri->rp->kp);
|
||||||
|
get_kprobe_ctlblk()->kprobe_status = KPROBE_HIT_ACTIVE;
|
||||||
|
ri->ret_addr = correct_ret_addr;
|
||||||
|
ri->rp->handler(ri, regs);
|
||||||
|
__this_cpu_write(current_kprobe, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
recycle_rp_inst(ri, &empty_rp);
|
||||||
|
|
||||||
|
if (orig_ret_address != trampoline_address)
|
||||||
|
/*
|
||||||
|
* This is the real return address. Any other
|
||||||
|
* instances associated with this task are for
|
||||||
|
* other calls deeper on the call stack
|
||||||
|
*/
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
kretprobe_hash_unlock(current, &flags);
|
kretprobe_hash_unlock(current, &flags);
|
||||||
|
|
||||||
hlist_for_each_entry_safe(ri, tmp, &empty_rp, hlist) {
|
hlist_for_each_entry_safe(ri, tmp, &empty_rp, hlist) {
|
||||||
|
|
|
@ -977,7 +977,10 @@ static void coverage_end(void)
|
||||||
void __naked __kprobes_test_case_start(void)
|
void __naked __kprobes_test_case_start(void)
|
||||||
{
|
{
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
"stmdb sp!, {r4-r11} \n\t"
|
"mov r2, sp \n\t"
|
||||||
|
"bic r3, r2, #7 \n\t"
|
||||||
|
"mov sp, r3 \n\t"
|
||||||
|
"stmdb sp!, {r2-r11} \n\t"
|
||||||
"sub sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
"sub sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
||||||
"bic r0, lr, #1 @ r0 = inline data \n\t"
|
"bic r0, lr, #1 @ r0 = inline data \n\t"
|
||||||
"mov r1, sp \n\t"
|
"mov r1, sp \n\t"
|
||||||
|
@ -997,7 +1000,8 @@ void __naked __kprobes_test_case_end_32(void)
|
||||||
"movne pc, r0 \n\t"
|
"movne pc, r0 \n\t"
|
||||||
"mov r0, r4 \n\t"
|
"mov r0, r4 \n\t"
|
||||||
"add sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
"add sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
||||||
"ldmia sp!, {r4-r11} \n\t"
|
"ldmia sp!, {r2-r11} \n\t"
|
||||||
|
"mov sp, r2 \n\t"
|
||||||
"mov pc, r0 \n\t"
|
"mov pc, r0 \n\t"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1013,7 +1017,8 @@ void __naked __kprobes_test_case_end_16(void)
|
||||||
"bxne r0 \n\t"
|
"bxne r0 \n\t"
|
||||||
"mov r0, r4 \n\t"
|
"mov r0, r4 \n\t"
|
||||||
"add sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
"add sp, sp, #"__stringify(TEST_MEMORY_SIZE)"\n\t"
|
||||||
"ldmia sp!, {r4-r11} \n\t"
|
"ldmia sp!, {r2-r11} \n\t"
|
||||||
|
"mov sp, r2 \n\t"
|
||||||
"bx r0 \n\t"
|
"bx r0 \n\t"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
|
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
#include <asm/sysreg.h>
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
|
|
|
@ -944,7 +944,7 @@ static bool have_cpu_die(void)
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
int any_cpu = raw_smp_processor_id();
|
int any_cpu = raw_smp_processor_id();
|
||||||
|
|
||||||
if (cpu_ops[any_cpu]->cpu_die)
|
if (cpu_ops[any_cpu] && cpu_ops[any_cpu]->cpu_die)
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
vdso.lds
|
vdso.lds
|
||||||
vdso-offsets.h
|
|
||||||
|
|
|
@ -42,7 +42,20 @@
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
|
|
||||||
static const char *fault_name(unsigned int esr);
|
struct fault_info {
|
||||||
|
int (*fn)(unsigned long addr, unsigned int esr,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
int sig;
|
||||||
|
int code;
|
||||||
|
const char *name;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct fault_info fault_info[];
|
||||||
|
|
||||||
|
static inline const struct fault_info *esr_to_fault_info(unsigned int esr)
|
||||||
|
{
|
||||||
|
return fault_info + (esr & 63);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KPROBES
|
#ifdef CONFIG_KPROBES
|
||||||
static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr)
|
static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr)
|
||||||
|
@ -197,10 +210,12 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr,
|
||||||
struct pt_regs *regs)
|
struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
struct siginfo si;
|
struct siginfo si;
|
||||||
|
const struct fault_info *inf;
|
||||||
|
|
||||||
if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
|
if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
|
||||||
|
inf = esr_to_fault_info(esr);
|
||||||
pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
|
pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
|
||||||
tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,
|
tsk->comm, task_pid_nr(tsk), inf->name, sig,
|
||||||
addr, esr);
|
addr, esr);
|
||||||
show_pte(tsk->mm, addr);
|
show_pte(tsk->mm, addr);
|
||||||
show_regs(regs);
|
show_regs(regs);
|
||||||
|
@ -219,14 +234,16 @@ static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *re
|
||||||
{
|
{
|
||||||
struct task_struct *tsk = current;
|
struct task_struct *tsk = current;
|
||||||
struct mm_struct *mm = tsk->active_mm;
|
struct mm_struct *mm = tsk->active_mm;
|
||||||
|
const struct fault_info *inf;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are in kernel mode at this point, we have no context to
|
* If we are in kernel mode at this point, we have no context to
|
||||||
* handle this fault with.
|
* handle this fault with.
|
||||||
*/
|
*/
|
||||||
if (user_mode(regs))
|
if (user_mode(regs)) {
|
||||||
__do_user_fault(tsk, addr, esr, SIGSEGV, SEGV_MAPERR, regs);
|
inf = esr_to_fault_info(esr);
|
||||||
else
|
__do_user_fault(tsk, addr, esr, inf->sig, inf->code, regs);
|
||||||
|
} else
|
||||||
__do_kernel_fault(mm, addr, esr, regs);
|
__do_kernel_fault(mm, addr, esr, regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,12 +505,7 @@ static int do_bad(unsigned long addr, unsigned int esr, struct pt_regs *regs)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct fault_info {
|
static const struct fault_info fault_info[] = {
|
||||||
int (*fn)(unsigned long addr, unsigned int esr, struct pt_regs *regs);
|
|
||||||
int sig;
|
|
||||||
int code;
|
|
||||||
const char *name;
|
|
||||||
} fault_info[] = {
|
|
||||||
{ do_bad, SIGBUS, 0, "ttbr address size fault" },
|
{ do_bad, SIGBUS, 0, "ttbr address size fault" },
|
||||||
{ do_bad, SIGBUS, 0, "level 1 address size fault" },
|
{ do_bad, SIGBUS, 0, "level 1 address size fault" },
|
||||||
{ do_bad, SIGBUS, 0, "level 2 address size fault" },
|
{ do_bad, SIGBUS, 0, "level 2 address size fault" },
|
||||||
|
@ -560,19 +572,13 @@ static const struct fault_info {
|
||||||
{ do_bad, SIGBUS, 0, "unknown 63" },
|
{ do_bad, SIGBUS, 0, "unknown 63" },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *fault_name(unsigned int esr)
|
|
||||||
{
|
|
||||||
const struct fault_info *inf = fault_info + (esr & 63);
|
|
||||||
return inf->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dispatch a data abort to the relevant handler.
|
* Dispatch a data abort to the relevant handler.
|
||||||
*/
|
*/
|
||||||
asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
|
asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
|
||||||
struct pt_regs *regs)
|
struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
const struct fault_info *inf = fault_info + (esr & 63);
|
const struct fault_info *inf = esr_to_fault_info(esr);
|
||||||
struct siginfo info;
|
struct siginfo info;
|
||||||
|
|
||||||
if (!inf->fn(addr, esr, regs))
|
if (!inf->fn(addr, esr, regs))
|
||||||
|
|
|
@ -294,10 +294,6 @@ static __init int setup_hugepagesz(char *opt)
|
||||||
hugetlb_add_hstate(PMD_SHIFT - PAGE_SHIFT);
|
hugetlb_add_hstate(PMD_SHIFT - PAGE_SHIFT);
|
||||||
} else if (ps == PUD_SIZE) {
|
} else if (ps == PUD_SIZE) {
|
||||||
hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
|
hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
|
||||||
} else if (ps == (PAGE_SIZE * CONT_PTES)) {
|
|
||||||
hugetlb_add_hstate(CONT_PTE_SHIFT);
|
|
||||||
} else if (ps == (PMD_SIZE * CONT_PMDS)) {
|
|
||||||
hugetlb_add_hstate((PMD_SHIFT + CONT_PMD_SHIFT) - PAGE_SHIFT);
|
|
||||||
} else {
|
} else {
|
||||||
hugetlb_bad_size();
|
hugetlb_bad_size();
|
||||||
pr_err("hugepagesz: Unsupported page size %lu K\n", ps >> 10);
|
pr_err("hugepagesz: Unsupported page size %lu K\n", ps >> 10);
|
||||||
|
@ -306,13 +302,3 @@ static __init int setup_hugepagesz(char *opt)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
__setup("hugepagesz=", setup_hugepagesz);
|
__setup("hugepagesz=", setup_hugepagesz);
|
||||||
|
|
||||||
#ifdef CONFIG_ARM64_64K_PAGES
|
|
||||||
static __init int add_default_hugepagesz(void)
|
|
||||||
{
|
|
||||||
if (size_to_hstate(CONT_PTES * PAGE_SIZE) == NULL)
|
|
||||||
hugetlb_add_hstate(CONT_PTE_SHIFT);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
arch_initcall(add_default_hugepagesz);
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -70,46 +70,6 @@ static int gpr_get(struct task_struct *target,
|
||||||
0, sizeof(*regs));
|
0, sizeof(*regs));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gpr_set(struct task_struct *target,
|
|
||||||
const struct user_regset *regset,
|
|
||||||
unsigned int pos, unsigned int count,
|
|
||||||
const void *kbuf, const void __user *ubuf)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
struct pt_regs *regs = task_pt_regs(target);
|
|
||||||
|
|
||||||
/* Don't copyin TSR or CSR */
|
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
|
||||||
®s,
|
|
||||||
0, PT_TSR * sizeof(long));
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
|
|
||||||
PT_TSR * sizeof(long),
|
|
||||||
(PT_TSR + 1) * sizeof(long));
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
|
||||||
®s,
|
|
||||||
(PT_TSR + 1) * sizeof(long),
|
|
||||||
PT_CSR * sizeof(long));
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
|
|
||||||
PT_CSR * sizeof(long),
|
|
||||||
(PT_CSR + 1) * sizeof(long));
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
|
||||||
®s,
|
|
||||||
(PT_CSR + 1) * sizeof(long), -1);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum c6x_regset {
|
enum c6x_regset {
|
||||||
REGSET_GPR,
|
REGSET_GPR,
|
||||||
};
|
};
|
||||||
|
@ -121,7 +81,6 @@ static const struct user_regset c6x_regsets[] = {
|
||||||
.size = sizeof(u32),
|
.size = sizeof(u32),
|
||||||
.align = sizeof(u32),
|
.align = sizeof(u32),
|
||||||
.get = gpr_get,
|
.get = gpr_get,
|
||||||
.set = gpr_set
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,8 @@ static int regs_get(struct task_struct *target,
|
||||||
long *reg = (long *)®s;
|
long *reg = (long *)®s;
|
||||||
|
|
||||||
/* build user regs in buffer */
|
/* build user regs in buffer */
|
||||||
for (r = 0; r < ARRAY_SIZE(register_offset); r++)
|
BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0);
|
||||||
|
for (r = 0; r < sizeof(regs) / sizeof(long); r++)
|
||||||
*reg++ = h8300_get_reg(target, r);
|
*reg++ = h8300_get_reg(target, r);
|
||||||
|
|
||||||
return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
||||||
|
@ -113,7 +114,8 @@ static int regs_set(struct task_struct *target,
|
||||||
long *reg;
|
long *reg;
|
||||||
|
|
||||||
/* build user regs in buffer */
|
/* build user regs in buffer */
|
||||||
for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++)
|
BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0);
|
||||||
|
for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++)
|
||||||
*reg++ = h8300_get_reg(target, r);
|
*reg++ = h8300_get_reg(target, r);
|
||||||
|
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
||||||
|
@ -122,7 +124,7 @@ static int regs_set(struct task_struct *target,
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* write back to pt_regs */
|
/* write back to pt_regs */
|
||||||
for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++)
|
for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++)
|
||||||
h8300_put_reg(target, r, *reg++);
|
h8300_put_reg(target, r, *reg++);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -60,6 +61,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -71,6 +73,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -101,6 +104,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -298,6 +302,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -371,6 +377,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -383,6 +390,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_A2065=y
|
CONFIG_A2065=y
|
||||||
CONFIG_ARIADNE=y
|
CONFIG_ARIADNE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -404,7 +412,6 @@ CONFIG_ZORRO8390=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_SMSC is not set
|
# CONFIG_NET_VENDOR_SMSC is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -564,6 +571,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -594,6 +603,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -605,6 +615,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -629,4 +640,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -26,6 +26,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -58,6 +59,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -69,6 +71,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -99,6 +102,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -296,6 +300,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -353,6 +359,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -362,6 +369,7 @@ CONFIG_NETCONSOLE_DYNAMIC=y
|
||||||
CONFIG_VETH=m
|
CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -378,7 +386,6 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -523,6 +530,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -553,6 +562,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -564,6 +574,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -588,4 +599,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -58,6 +59,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -69,6 +71,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -99,6 +102,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -296,6 +300,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -362,6 +368,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -372,6 +379,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_ATARILANCE=y
|
CONFIG_ATARILANCE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -389,7 +397,6 @@ CONFIG_NE2000=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -544,6 +551,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -574,6 +583,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -585,6 +595,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -609,4 +620,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
CONFIG_SUN_PARTITION=y
|
CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68040=y
|
CONFIG_M68040=y
|
||||||
|
@ -56,6 +57,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -67,6 +69,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -97,6 +100,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -294,6 +298,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -352,6 +358,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -361,6 +368,7 @@ CONFIG_NETCONSOLE_DYNAMIC=y
|
||||||
CONFIG_VETH=m
|
CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -377,7 +385,6 @@ CONFIG_BVME6000_NET=y
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -515,6 +522,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -545,6 +554,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -556,6 +566,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -580,4 +591,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -26,6 +26,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -58,6 +59,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -69,6 +71,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -99,6 +102,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -296,6 +300,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -353,6 +359,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -363,6 +370,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_HPLANCE=y
|
CONFIG_HPLANCE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -379,7 +387,6 @@ CONFIG_HPLANCE=y
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -525,6 +532,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -555,6 +564,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -566,6 +576,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -590,4 +601,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -57,6 +58,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -68,6 +70,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -98,6 +101,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -298,6 +302,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -369,6 +375,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -379,6 +386,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_MACMACE=y
|
CONFIG_MACMACE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -398,7 +406,6 @@ CONFIG_MAC8390=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_SMSC is not set
|
# CONFIG_NET_VENDOR_SMSC is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -547,6 +554,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -577,6 +586,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -588,6 +598,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -612,4 +623,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -21,6 +21,7 @@ CONFIG_SOLARIS_X86_PARTITION=y
|
||||||
CONFIG_UNIXWARE_DISKLABEL=y
|
CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68020=y
|
CONFIG_M68020=y
|
||||||
|
@ -67,6 +68,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -78,6 +80,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -108,6 +111,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -308,6 +312,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -402,6 +408,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -419,6 +426,7 @@ CONFIG_HPLANCE=y
|
||||||
CONFIG_MVME147_NET=y
|
CONFIG_MVME147_NET=y
|
||||||
CONFIG_SUN3LANCE=y
|
CONFIG_SUN3LANCE=y
|
||||||
CONFIG_MACMACE=y
|
CONFIG_MACMACE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -444,7 +452,6 @@ CONFIG_ZORRO8390=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PLIP=m
|
CONFIG_PLIP=m
|
||||||
|
@ -627,6 +634,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -657,6 +666,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -668,6 +678,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -692,4 +703,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
CONFIG_SUN_PARTITION=y
|
CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68030=y
|
CONFIG_M68030=y
|
||||||
|
@ -55,6 +56,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -66,6 +68,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -96,6 +99,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -293,6 +297,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -351,6 +357,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -361,6 +368,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_MVME147_NET=y
|
CONFIG_MVME147_NET=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -377,7 +385,6 @@ CONFIG_MVME147_NET=y
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -515,6 +522,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -545,6 +554,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -556,6 +566,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -580,4 +591,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
CONFIG_SUN_PARTITION=y
|
CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68040=y
|
CONFIG_M68040=y
|
||||||
|
@ -56,6 +57,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -67,6 +69,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -97,6 +100,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -294,6 +298,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -352,6 +358,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -361,6 +368,7 @@ CONFIG_NETCONSOLE_DYNAMIC=y
|
||||||
CONFIG_VETH=m
|
CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -377,7 +385,6 @@ CONFIG_MVME16x_NET=y
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -515,6 +522,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -545,6 +554,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -556,6 +566,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -580,4 +591,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -26,6 +26,7 @@ CONFIG_SUN_PARTITION=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_M68040=y
|
CONFIG_M68040=y
|
||||||
|
@ -56,6 +57,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -67,6 +69,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -97,6 +100,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -294,6 +298,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -358,6 +364,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -369,6 +376,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
# CONFIG_NET_VENDOR_AMD is not set
|
# CONFIG_NET_VENDOR_AMD is not set
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -388,7 +396,6 @@ CONFIG_NE2000=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_SMSC is not set
|
# CONFIG_NET_VENDOR_SMSC is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PLIP=m
|
CONFIG_PLIP=m
|
||||||
|
@ -538,6 +545,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -568,6 +577,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -579,6 +589,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -603,4 +614,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_SUN3=y
|
CONFIG_SUN3=y
|
||||||
|
@ -53,6 +54,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -64,6 +66,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -94,6 +97,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -291,6 +295,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -349,6 +355,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -359,6 +366,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_SUN3LANCE=y
|
CONFIG_SUN3LANCE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_EZCHIP is not set
|
# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||||
|
@ -375,7 +383,6 @@ CONFIG_SUN3_82586=y
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SUN is not set
|
# CONFIG_NET_VENDOR_SUN is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -517,6 +524,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -546,6 +555,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -557,6 +567,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -581,4 +592,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -25,6 +25,7 @@ CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
# CONFIG_EFI_PARTITION is not set
|
# CONFIG_EFI_PARTITION is not set
|
||||||
CONFIG_SYSV68_PARTITION=y
|
CONFIG_SYSV68_PARTITION=y
|
||||||
CONFIG_IOSCHED_DEADLINE=m
|
CONFIG_IOSCHED_DEADLINE=m
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=m
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
CONFIG_BOOTINFO_PROC=y
|
CONFIG_BOOTINFO_PROC=y
|
||||||
CONFIG_SUN3X=y
|
CONFIG_SUN3X=y
|
||||||
|
@ -53,6 +54,7 @@ CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||||
|
@ -64,6 +66,7 @@ CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
CONFIG_IPV6_ILA=m
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
|
@ -94,6 +97,7 @@ CONFIG_NFT_NUMGEN=m
|
||||||
CONFIG_NFT_CT=m
|
CONFIG_NFT_CT=m
|
||||||
CONFIG_NFT_SET_RBTREE=m
|
CONFIG_NFT_SET_RBTREE=m
|
||||||
CONFIG_NFT_SET_HASH=m
|
CONFIG_NFT_SET_HASH=m
|
||||||
|
CONFIG_NFT_SET_BITMAP=m
|
||||||
CONFIG_NFT_COUNTER=m
|
CONFIG_NFT_COUNTER=m
|
||||||
CONFIG_NFT_LOG=m
|
CONFIG_NFT_LOG=m
|
||||||
CONFIG_NFT_LIMIT=m
|
CONFIG_NFT_LIMIT=m
|
||||||
|
@ -291,6 +295,8 @@ CONFIG_MPLS_IPTUNNEL=m
|
||||||
CONFIG_NET_L3_MASTER_DEV=y
|
CONFIG_NET_L3_MASTER_DEV=y
|
||||||
CONFIG_AF_KCM=m
|
CONFIG_AF_KCM=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_PSAMPLE=m
|
||||||
|
CONFIG_NET_IFE=m
|
||||||
CONFIG_NET_DEVLINK=m
|
CONFIG_NET_DEVLINK=m
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
|
@ -349,6 +355,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
|
||||||
CONFIG_MACVLAN=m
|
CONFIG_MACVLAN=m
|
||||||
CONFIG_MACVTAP=m
|
CONFIG_MACVTAP=m
|
||||||
CONFIG_IPVLAN=m
|
CONFIG_IPVLAN=m
|
||||||
|
CONFIG_IPVTAP=m
|
||||||
CONFIG_VXLAN=m
|
CONFIG_VXLAN=m
|
||||||
CONFIG_GENEVE=m
|
CONFIG_GENEVE=m
|
||||||
CONFIG_GTP=m
|
CONFIG_GTP=m
|
||||||
|
@ -359,6 +366,7 @@ CONFIG_VETH=m
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||||
CONFIG_SUN3LANCE=y
|
CONFIG_SUN3LANCE=y
|
||||||
|
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||||
# CONFIG_NET_VENDOR_ARC is not set
|
# CONFIG_NET_VENDOR_ARC is not set
|
||||||
# CONFIG_NET_CADENCE is not set
|
# CONFIG_NET_CADENCE is not set
|
||||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
@ -375,7 +383,6 @@ CONFIG_SUN3LANCE=y
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
|
@ -517,6 +524,8 @@ CONFIG_NLS_MAC_TURKISH=m
|
||||||
CONFIG_DLM=m
|
CONFIG_DLM=m
|
||||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_WW_MUTEX_SELFTEST=m
|
||||||
|
CONFIG_ATOMIC64_SELFTEST=m
|
||||||
CONFIG_ASYNC_RAID6_TEST=m
|
CONFIG_ASYNC_RAID6_TEST=m
|
||||||
CONFIG_TEST_HEXDUMP=m
|
CONFIG_TEST_HEXDUMP=m
|
||||||
CONFIG_TEST_STRING_HELPERS=m
|
CONFIG_TEST_STRING_HELPERS=m
|
||||||
|
@ -547,6 +556,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||||
|
@ -558,6 +568,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -582,4 +593,5 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
# CONFIG_CRYPTO_HW is not set
|
# CONFIG_CRYPTO_HW is not set
|
||||||
|
CONFIG_CRC32_SELFTEST=m
|
||||||
CONFIG_XZ_DEC_TEST=m
|
CONFIG_XZ_DEC_TEST=m
|
||||||
|
|
|
@ -148,7 +148,7 @@ static inline void bfchg_mem_change_bit(int nr, volatile unsigned long *vaddr)
|
||||||
#define __change_bit(nr, vaddr) change_bit(nr, vaddr)
|
#define __change_bit(nr, vaddr) change_bit(nr, vaddr)
|
||||||
|
|
||||||
|
|
||||||
static inline int test_bit(int nr, const unsigned long *vaddr)
|
static inline int test_bit(int nr, const volatile unsigned long *vaddr)
|
||||||
{
|
{
|
||||||
return (vaddr[nr >> 5] & (1UL << (nr & 31))) != 0;
|
return (vaddr[nr >> 5] & (1UL << (nr & 31))) != 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
|
|
||||||
#define NR_syscalls 379
|
#define NR_syscalls 380
|
||||||
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_OLD_STAT
|
#define __ARCH_WANT_OLD_STAT
|
||||||
|
|
|
@ -384,5 +384,6 @@
|
||||||
#define __NR_copy_file_range 376
|
#define __NR_copy_file_range 376
|
||||||
#define __NR_preadv2 377
|
#define __NR_preadv2 377
|
||||||
#define __NR_pwritev2 378
|
#define __NR_pwritev2 378
|
||||||
|
#define __NR_statx 379
|
||||||
|
|
||||||
#endif /* _UAPI_ASM_M68K_UNISTD_H_ */
|
#endif /* _UAPI_ASM_M68K_UNISTD_H_ */
|
||||||
|
|
|
@ -399,3 +399,4 @@ ENTRY(sys_call_table)
|
||||||
.long sys_copy_file_range
|
.long sys_copy_file_range
|
||||||
.long sys_preadv2
|
.long sys_preadv2
|
||||||
.long sys_pwritev2
|
.long sys_pwritev2
|
||||||
|
.long sys_statx
|
||||||
|
|
|
@ -197,20 +197,21 @@ extern long __must_check strnlen_user(const char __user *src, long count);
|
||||||
|
|
||||||
#define strlen_user(str) strnlen_user(str, 32767)
|
#define strlen_user(str) strnlen_user(str, 32767)
|
||||||
|
|
||||||
extern unsigned long __must_check __copy_user_zeroing(void *to,
|
extern unsigned long raw_copy_from_user(void *to, const void __user *from,
|
||||||
const void __user *from,
|
unsigned long n);
|
||||||
unsigned long n);
|
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long
|
||||||
copy_from_user(void *to, const void __user *from, unsigned long n)
|
copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
{
|
{
|
||||||
|
unsigned long res = n;
|
||||||
if (likely(access_ok(VERIFY_READ, from, n)))
|
if (likely(access_ok(VERIFY_READ, from, n)))
|
||||||
return __copy_user_zeroing(to, from, n);
|
res = raw_copy_from_user(to, from, n);
|
||||||
memset(to, 0, n);
|
if (unlikely(res))
|
||||||
return n;
|
memset(to + (n - res), 0, res);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define __copy_from_user(to, from, n) __copy_user_zeroing(to, from, n)
|
#define __copy_from_user(to, from, n) raw_copy_from_user(to, from, n)
|
||||||
#define __copy_from_user_inatomic __copy_from_user
|
#define __copy_from_user_inatomic __copy_from_user
|
||||||
|
|
||||||
extern unsigned long __must_check __copy_user(void __user *to,
|
extern unsigned long __must_check __copy_user(void __user *to,
|
||||||
|
|
|
@ -26,6 +26,16 @@
|
||||||
* user_regset definitions.
|
* user_regset definitions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static unsigned long user_txstatus(const struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
unsigned long data = (unsigned long)regs->ctx.Flags;
|
||||||
|
|
||||||
|
if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
|
||||||
|
data |= USER_GP_REGS_STATUS_CATCH_BIT;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
int metag_gp_regs_copyout(const struct pt_regs *regs,
|
int metag_gp_regs_copyout(const struct pt_regs *regs,
|
||||||
unsigned int pos, unsigned int count,
|
unsigned int pos, unsigned int count,
|
||||||
void *kbuf, void __user *ubuf)
|
void *kbuf, void __user *ubuf)
|
||||||
|
@ -64,9 +74,7 @@ int metag_gp_regs_copyout(const struct pt_regs *regs,
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
/* TXSTATUS */
|
/* TXSTATUS */
|
||||||
data = (unsigned long)regs->ctx.Flags;
|
data = user_txstatus(regs);
|
||||||
if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
|
|
||||||
data |= USER_GP_REGS_STATUS_CATCH_BIT;
|
|
||||||
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
||||||
&data, 4*25, 4*26);
|
&data, 4*25, 4*26);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -121,6 +129,7 @@ int metag_gp_regs_copyin(struct pt_regs *regs,
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
/* TXSTATUS */
|
/* TXSTATUS */
|
||||||
|
data = user_txstatus(regs);
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
||||||
&data, 4*25, 4*26);
|
&data, 4*25, 4*26);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -246,6 +255,8 @@ int metag_rp_state_copyin(struct pt_regs *regs,
|
||||||
unsigned long long *ptr;
|
unsigned long long *ptr;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
|
if (count < 4*13)
|
||||||
|
return -EINVAL;
|
||||||
/* Read the entire pipeline before making any changes */
|
/* Read the entire pipeline before making any changes */
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
||||||
&rp, 0, 4*13);
|
&rp, 0, 4*13);
|
||||||
|
@ -305,7 +316,7 @@ static int metag_tls_set(struct task_struct *target,
|
||||||
const void *kbuf, const void __user *ubuf)
|
const void *kbuf, const void __user *ubuf)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
void __user *tls;
|
void __user *tls = target->thread.tls_ptr;
|
||||||
|
|
||||||
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
COPY \
|
COPY \
|
||||||
"1:\n" \
|
"1:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .section .fixup,\"ax\"\n" \
|
||||||
" MOV D1Ar1,#0\n" \
|
|
||||||
FIXUP \
|
FIXUP \
|
||||||
" MOVT D1Ar1,#HI(1b)\n" \
|
" MOVT D1Ar1,#HI(1b)\n" \
|
||||||
" JUMP D1Ar1,#LO(1b)\n" \
|
" JUMP D1Ar1,#LO(1b)\n" \
|
||||||
|
@ -260,27 +259,31 @@
|
||||||
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"22:\n" \
|
"22:\n" \
|
||||||
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
"SUB %3, %3, #32\n" \
|
|
||||||
"23:\n" \
|
"23:\n" \
|
||||||
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"SUB %3, %3, #32\n" \
|
||||||
"24:\n" \
|
"24:\n" \
|
||||||
|
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
|
"25:\n" \
|
||||||
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"26:\n" \
|
||||||
"SUB %3, %3, #32\n" \
|
"SUB %3, %3, #32\n" \
|
||||||
"DCACHE [%1+#-64], D0Ar6\n" \
|
"DCACHE [%1+#-64], D0Ar6\n" \
|
||||||
"BR $Lloop"id"\n" \
|
"BR $Lloop"id"\n" \
|
||||||
\
|
\
|
||||||
"MOV RAPF, %1\n" \
|
"MOV RAPF, %1\n" \
|
||||||
"25:\n" \
|
|
||||||
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
|
||||||
"26:\n" \
|
|
||||||
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
|
||||||
"SUB %3, %3, #32\n" \
|
|
||||||
"27:\n" \
|
"27:\n" \
|
||||||
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"28:\n" \
|
"28:\n" \
|
||||||
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
"SUB %0, %0, #8\n" \
|
|
||||||
"29:\n" \
|
"29:\n" \
|
||||||
|
"SUB %3, %3, #32\n" \
|
||||||
|
"30:\n" \
|
||||||
|
"MGETL D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
|
"31:\n" \
|
||||||
|
"MSETL [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"32:\n" \
|
||||||
|
"SUB %0, %0, #8\n" \
|
||||||
|
"33:\n" \
|
||||||
"SETL [%0++], D0.7, D1.7\n" \
|
"SETL [%0++], D0.7, D1.7\n" \
|
||||||
"SUB %3, %3, #32\n" \
|
"SUB %3, %3, #32\n" \
|
||||||
"1:" \
|
"1:" \
|
||||||
|
@ -312,11 +315,15 @@
|
||||||
" .long 26b,3b\n" \
|
" .long 26b,3b\n" \
|
||||||
" .long 27b,3b\n" \
|
" .long 27b,3b\n" \
|
||||||
" .long 28b,3b\n" \
|
" .long 28b,3b\n" \
|
||||||
" .long 29b,4b\n" \
|
" .long 29b,3b\n" \
|
||||||
|
" .long 30b,3b\n" \
|
||||||
|
" .long 31b,3b\n" \
|
||||||
|
" .long 32b,3b\n" \
|
||||||
|
" .long 33b,4b\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
: "=r" (to), "=r" (from), "=r" (ret), "=d" (n) \
|
: "=r" (to), "=r" (from), "=r" (ret), "=d" (n) \
|
||||||
: "0" (to), "1" (from), "2" (ret), "3" (n) \
|
: "0" (to), "1" (from), "2" (ret), "3" (n) \
|
||||||
: "D1Ar1", "D0Ar2", "memory")
|
: "D1Ar1", "D0Ar2", "cc", "memory")
|
||||||
|
|
||||||
/* rewind 'to' and 'from' pointers when a fault occurs
|
/* rewind 'to' and 'from' pointers when a fault occurs
|
||||||
*
|
*
|
||||||
|
@ -342,7 +349,7 @@
|
||||||
#define __asm_copy_to_user_64bit_rapf_loop(to, from, ret, n, id)\
|
#define __asm_copy_to_user_64bit_rapf_loop(to, from, ret, n, id)\
|
||||||
__asm_copy_user_64bit_rapf_loop(to, from, ret, n, id, \
|
__asm_copy_user_64bit_rapf_loop(to, from, ret, n, id, \
|
||||||
"LSR D0Ar2, D0Ar2, #8\n" \
|
"LSR D0Ar2, D0Ar2, #8\n" \
|
||||||
"AND D0Ar2, D0Ar2, #0x7\n" \
|
"ANDS D0Ar2, D0Ar2, #0x7\n" \
|
||||||
"ADDZ D0Ar2, D0Ar2, #4\n" \
|
"ADDZ D0Ar2, D0Ar2, #4\n" \
|
||||||
"SUB D0Ar2, D0Ar2, #1\n" \
|
"SUB D0Ar2, D0Ar2, #1\n" \
|
||||||
"MOV D1Ar1, #4\n" \
|
"MOV D1Ar1, #4\n" \
|
||||||
|
@ -403,47 +410,55 @@
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"22:\n" \
|
"22:\n" \
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
"SUB %3, %3, #16\n" \
|
|
||||||
"23:\n" \
|
"23:\n" \
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
|
||||||
"24:\n" \
|
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
|
||||||
"SUB %3, %3, #16\n" \
|
"SUB %3, %3, #16\n" \
|
||||||
"25:\n" \
|
"24:\n" \
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"26:\n" \
|
"25:\n" \
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"26:\n" \
|
||||||
"SUB %3, %3, #16\n" \
|
"SUB %3, %3, #16\n" \
|
||||||
"27:\n" \
|
"27:\n" \
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"28:\n" \
|
"28:\n" \
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"29:\n" \
|
||||||
|
"SUB %3, %3, #16\n" \
|
||||||
|
"30:\n" \
|
||||||
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
|
"31:\n" \
|
||||||
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"32:\n" \
|
||||||
"SUB %3, %3, #16\n" \
|
"SUB %3, %3, #16\n" \
|
||||||
"DCACHE [%1+#-64], D0Ar6\n" \
|
"DCACHE [%1+#-64], D0Ar6\n" \
|
||||||
"BR $Lloop"id"\n" \
|
"BR $Lloop"id"\n" \
|
||||||
\
|
\
|
||||||
"MOV RAPF, %1\n" \
|
"MOV RAPF, %1\n" \
|
||||||
"29:\n" \
|
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
|
||||||
"30:\n" \
|
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
|
||||||
"SUB %3, %3, #16\n" \
|
|
||||||
"31:\n" \
|
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
|
||||||
"32:\n" \
|
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
|
||||||
"SUB %3, %3, #16\n" \
|
|
||||||
"33:\n" \
|
"33:\n" \
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"34:\n" \
|
"34:\n" \
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
"SUB %3, %3, #16\n" \
|
|
||||||
"35:\n" \
|
"35:\n" \
|
||||||
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
"SUB %3, %3, #16\n" \
|
||||||
"36:\n" \
|
"36:\n" \
|
||||||
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
"SUB %0, %0, #4\n" \
|
|
||||||
"37:\n" \
|
"37:\n" \
|
||||||
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"38:\n" \
|
||||||
|
"SUB %3, %3, #16\n" \
|
||||||
|
"39:\n" \
|
||||||
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
|
"40:\n" \
|
||||||
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"41:\n" \
|
||||||
|
"SUB %3, %3, #16\n" \
|
||||||
|
"42:\n" \
|
||||||
|
"MGETD D0FrT, D0.5, D0.6, D0.7, [%1++]\n" \
|
||||||
|
"43:\n" \
|
||||||
|
"MSETD [%0++], D0FrT, D0.5, D0.6, D0.7\n" \
|
||||||
|
"44:\n" \
|
||||||
|
"SUB %0, %0, #4\n" \
|
||||||
|
"45:\n" \
|
||||||
"SETD [%0++], D0.7\n" \
|
"SETD [%0++], D0.7\n" \
|
||||||
"SUB %3, %3, #16\n" \
|
"SUB %3, %3, #16\n" \
|
||||||
"1:" \
|
"1:" \
|
||||||
|
@ -483,11 +498,19 @@
|
||||||
" .long 34b,3b\n" \
|
" .long 34b,3b\n" \
|
||||||
" .long 35b,3b\n" \
|
" .long 35b,3b\n" \
|
||||||
" .long 36b,3b\n" \
|
" .long 36b,3b\n" \
|
||||||
" .long 37b,4b\n" \
|
" .long 37b,3b\n" \
|
||||||
|
" .long 38b,3b\n" \
|
||||||
|
" .long 39b,3b\n" \
|
||||||
|
" .long 40b,3b\n" \
|
||||||
|
" .long 41b,3b\n" \
|
||||||
|
" .long 42b,3b\n" \
|
||||||
|
" .long 43b,3b\n" \
|
||||||
|
" .long 44b,3b\n" \
|
||||||
|
" .long 45b,4b\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
: "=r" (to), "=r" (from), "=r" (ret), "=d" (n) \
|
: "=r" (to), "=r" (from), "=r" (ret), "=d" (n) \
|
||||||
: "0" (to), "1" (from), "2" (ret), "3" (n) \
|
: "0" (to), "1" (from), "2" (ret), "3" (n) \
|
||||||
: "D1Ar1", "D0Ar2", "memory")
|
: "D1Ar1", "D0Ar2", "cc", "memory")
|
||||||
|
|
||||||
/* rewind 'to' and 'from' pointers when a fault occurs
|
/* rewind 'to' and 'from' pointers when a fault occurs
|
||||||
*
|
*
|
||||||
|
@ -513,7 +536,7 @@
|
||||||
#define __asm_copy_to_user_32bit_rapf_loop(to, from, ret, n, id)\
|
#define __asm_copy_to_user_32bit_rapf_loop(to, from, ret, n, id)\
|
||||||
__asm_copy_user_32bit_rapf_loop(to, from, ret, n, id, \
|
__asm_copy_user_32bit_rapf_loop(to, from, ret, n, id, \
|
||||||
"LSR D0Ar2, D0Ar2, #8\n" \
|
"LSR D0Ar2, D0Ar2, #8\n" \
|
||||||
"AND D0Ar2, D0Ar2, #0x7\n" \
|
"ANDS D0Ar2, D0Ar2, #0x7\n" \
|
||||||
"ADDZ D0Ar2, D0Ar2, #4\n" \
|
"ADDZ D0Ar2, D0Ar2, #4\n" \
|
||||||
"SUB D0Ar2, D0Ar2, #1\n" \
|
"SUB D0Ar2, D0Ar2, #1\n" \
|
||||||
"MOV D1Ar1, #4\n" \
|
"MOV D1Ar1, #4\n" \
|
||||||
|
@ -538,23 +561,31 @@ unsigned long __copy_user(void __user *pdst, const void *psrc,
|
||||||
if ((unsigned long) src & 1) {
|
if ((unsigned long) src & 1) {
|
||||||
__asm_copy_to_user_1(dst, src, retn);
|
__asm_copy_to_user_1(dst, src, retn);
|
||||||
n--;
|
n--;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
if ((unsigned long) dst & 1) {
|
if ((unsigned long) dst & 1) {
|
||||||
/* Worst case - byte copy */
|
/* Worst case - byte copy */
|
||||||
while (n > 0) {
|
while (n > 0) {
|
||||||
__asm_copy_to_user_1(dst, src, retn);
|
__asm_copy_to_user_1(dst, src, retn);
|
||||||
n--;
|
n--;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((unsigned long) src & 2) && n >= 2) {
|
if (((unsigned long) src & 2) && n >= 2) {
|
||||||
__asm_copy_to_user_2(dst, src, retn);
|
__asm_copy_to_user_2(dst, src, retn);
|
||||||
n -= 2;
|
n -= 2;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
if ((unsigned long) dst & 2) {
|
if ((unsigned long) dst & 2) {
|
||||||
/* Second worst case - word copy */
|
/* Second worst case - word copy */
|
||||||
while (n >= 2) {
|
while (n >= 2) {
|
||||||
__asm_copy_to_user_2(dst, src, retn);
|
__asm_copy_to_user_2(dst, src, retn);
|
||||||
n -= 2;
|
n -= 2;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -569,6 +600,8 @@ unsigned long __copy_user(void __user *pdst, const void *psrc,
|
||||||
while (n >= 8) {
|
while (n >= 8) {
|
||||||
__asm_copy_to_user_8x64(dst, src, retn);
|
__asm_copy_to_user_8x64(dst, src, retn);
|
||||||
n -= 8;
|
n -= 8;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (n >= RAPF_MIN_BUF_SIZE) {
|
if (n >= RAPF_MIN_BUF_SIZE) {
|
||||||
|
@ -581,6 +614,8 @@ unsigned long __copy_user(void __user *pdst, const void *psrc,
|
||||||
while (n >= 8) {
|
while (n >= 8) {
|
||||||
__asm_copy_to_user_8x64(dst, src, retn);
|
__asm_copy_to_user_8x64(dst, src, retn);
|
||||||
n -= 8;
|
n -= 8;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -588,11 +623,15 @@ unsigned long __copy_user(void __user *pdst, const void *psrc,
|
||||||
while (n >= 16) {
|
while (n >= 16) {
|
||||||
__asm_copy_to_user_16(dst, src, retn);
|
__asm_copy_to_user_16(dst, src, retn);
|
||||||
n -= 16;
|
n -= 16;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (n >= 4) {
|
while (n >= 4) {
|
||||||
__asm_copy_to_user_4(dst, src, retn);
|
__asm_copy_to_user_4(dst, src, retn);
|
||||||
n -= 4;
|
n -= 4;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (n) {
|
switch (n) {
|
||||||
|
@ -609,6 +648,10 @@ unsigned long __copy_user(void __user *pdst, const void *psrc,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we get here, retn correctly reflects the number of failing
|
||||||
|
* bytes.
|
||||||
|
*/
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__copy_user);
|
EXPORT_SYMBOL(__copy_user);
|
||||||
|
@ -617,16 +660,14 @@ EXPORT_SYMBOL(__copy_user);
|
||||||
__asm_copy_user_cont(to, from, ret, \
|
__asm_copy_user_cont(to, from, ret, \
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
" GETB D1Ar1,[%1++]\n" \
|
||||||
"2: SETB [%0++],D1Ar1\n", \
|
"2: SETB [%0++],D1Ar1\n", \
|
||||||
"3: ADD %2,%2,#1\n" \
|
"3: ADD %2,%2,#1\n", \
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 2b,3b\n")
|
" .long 2b,3b\n")
|
||||||
|
|
||||||
#define __asm_copy_from_user_2x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
#define __asm_copy_from_user_2x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
||||||
__asm_copy_user_cont(to, from, ret, \
|
__asm_copy_user_cont(to, from, ret, \
|
||||||
" GETW D1Ar1,[%1++]\n" \
|
" GETW D1Ar1,[%1++]\n" \
|
||||||
"2: SETW [%0++],D1Ar1\n" COPY, \
|
"2: SETW [%0++],D1Ar1\n" COPY, \
|
||||||
"3: ADD %2,%2,#2\n" \
|
"3: ADD %2,%2,#2\n" FIXUP, \
|
||||||
" SETW [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 2b,3b\n" TENTRY)
|
" .long 2b,3b\n" TENTRY)
|
||||||
|
|
||||||
#define __asm_copy_from_user_2(to, from, ret) \
|
#define __asm_copy_from_user_2(to, from, ret) \
|
||||||
|
@ -636,145 +677,26 @@ EXPORT_SYMBOL(__copy_user);
|
||||||
__asm_copy_from_user_2x_cont(to, from, ret, \
|
__asm_copy_from_user_2x_cont(to, from, ret, \
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
" GETB D1Ar1,[%1++]\n" \
|
||||||
"4: SETB [%0++],D1Ar1\n", \
|
"4: SETB [%0++],D1Ar1\n", \
|
||||||
"5: ADD %2,%2,#1\n" \
|
"5: ADD %2,%2,#1\n", \
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 4b,5b\n")
|
" .long 4b,5b\n")
|
||||||
|
|
||||||
#define __asm_copy_from_user_4x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
#define __asm_copy_from_user_4x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
||||||
__asm_copy_user_cont(to, from, ret, \
|
__asm_copy_user_cont(to, from, ret, \
|
||||||
" GETD D1Ar1,[%1++]\n" \
|
" GETD D1Ar1,[%1++]\n" \
|
||||||
"2: SETD [%0++],D1Ar1\n" COPY, \
|
"2: SETD [%0++],D1Ar1\n" COPY, \
|
||||||
"3: ADD %2,%2,#4\n" \
|
"3: ADD %2,%2,#4\n" FIXUP, \
|
||||||
" SETD [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 2b,3b\n" TENTRY)
|
" .long 2b,3b\n" TENTRY)
|
||||||
|
|
||||||
#define __asm_copy_from_user_4(to, from, ret) \
|
#define __asm_copy_from_user_4(to, from, ret) \
|
||||||
__asm_copy_from_user_4x_cont(to, from, ret, "", "", "")
|
__asm_copy_from_user_4x_cont(to, from, ret, "", "", "")
|
||||||
|
|
||||||
#define __asm_copy_from_user_5(to, from, ret) \
|
|
||||||
__asm_copy_from_user_4x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"4: SETB [%0++],D1Ar1\n", \
|
|
||||||
"5: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 4b,5b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_6x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_4x_cont(to, from, ret, \
|
|
||||||
" GETW D1Ar1,[%1++]\n" \
|
|
||||||
"4: SETW [%0++],D1Ar1\n" COPY, \
|
|
||||||
"5: ADD %2,%2,#2\n" \
|
|
||||||
" SETW [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 4b,5b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_6(to, from, ret) \
|
|
||||||
__asm_copy_from_user_6x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_7(to, from, ret) \
|
|
||||||
__asm_copy_from_user_6x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"6: SETB [%0++],D1Ar1\n", \
|
|
||||||
"7: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 6b,7b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_8x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_4x_cont(to, from, ret, \
|
|
||||||
" GETD D1Ar1,[%1++]\n" \
|
|
||||||
"4: SETD [%0++],D1Ar1\n" COPY, \
|
|
||||||
"5: ADD %2,%2,#4\n" \
|
|
||||||
" SETD [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 4b,5b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_8(to, from, ret) \
|
|
||||||
__asm_copy_from_user_8x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_9(to, from, ret) \
|
|
||||||
__asm_copy_from_user_8x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"6: SETB [%0++],D1Ar1\n", \
|
|
||||||
"7: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 6b,7b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_10x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_8x_cont(to, from, ret, \
|
|
||||||
" GETW D1Ar1,[%1++]\n" \
|
|
||||||
"6: SETW [%0++],D1Ar1\n" COPY, \
|
|
||||||
"7: ADD %2,%2,#2\n" \
|
|
||||||
" SETW [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 6b,7b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_10(to, from, ret) \
|
|
||||||
__asm_copy_from_user_10x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_11(to, from, ret) \
|
|
||||||
__asm_copy_from_user_10x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"8: SETB [%0++],D1Ar1\n", \
|
|
||||||
"9: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 8b,9b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_12x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_8x_cont(to, from, ret, \
|
|
||||||
" GETD D1Ar1,[%1++]\n" \
|
|
||||||
"6: SETD [%0++],D1Ar1\n" COPY, \
|
|
||||||
"7: ADD %2,%2,#4\n" \
|
|
||||||
" SETD [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 6b,7b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_12(to, from, ret) \
|
|
||||||
__asm_copy_from_user_12x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_13(to, from, ret) \
|
|
||||||
__asm_copy_from_user_12x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"8: SETB [%0++],D1Ar1\n", \
|
|
||||||
"9: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 8b,9b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_14x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_12x_cont(to, from, ret, \
|
|
||||||
" GETW D1Ar1,[%1++]\n" \
|
|
||||||
"8: SETW [%0++],D1Ar1\n" COPY, \
|
|
||||||
"9: ADD %2,%2,#2\n" \
|
|
||||||
" SETW [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 8b,9b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_14(to, from, ret) \
|
|
||||||
__asm_copy_from_user_14x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_15(to, from, ret) \
|
|
||||||
__asm_copy_from_user_14x_cont(to, from, ret, \
|
|
||||||
" GETB D1Ar1,[%1++]\n" \
|
|
||||||
"10: SETB [%0++],D1Ar1\n", \
|
|
||||||
"11: ADD %2,%2,#1\n" \
|
|
||||||
" SETB [%0++],D1Ar1\n", \
|
|
||||||
" .long 10b,11b\n")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_16x_cont(to, from, ret, COPY, FIXUP, TENTRY) \
|
|
||||||
__asm_copy_from_user_12x_cont(to, from, ret, \
|
|
||||||
" GETD D1Ar1,[%1++]\n" \
|
|
||||||
"8: SETD [%0++],D1Ar1\n" COPY, \
|
|
||||||
"9: ADD %2,%2,#4\n" \
|
|
||||||
" SETD [%0++],D1Ar1\n" FIXUP, \
|
|
||||||
" .long 8b,9b\n" TENTRY)
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_16(to, from, ret) \
|
|
||||||
__asm_copy_from_user_16x_cont(to, from, ret, "", "", "")
|
|
||||||
|
|
||||||
#define __asm_copy_from_user_8x64(to, from, ret) \
|
#define __asm_copy_from_user_8x64(to, from, ret) \
|
||||||
asm volatile ( \
|
asm volatile ( \
|
||||||
" GETL D0Ar2,D1Ar1,[%1++]\n" \
|
" GETL D0Ar2,D1Ar1,[%1++]\n" \
|
||||||
"2: SETL [%0++],D0Ar2,D1Ar1\n" \
|
"2: SETL [%0++],D0Ar2,D1Ar1\n" \
|
||||||
"1:\n" \
|
"1:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .section .fixup,\"ax\"\n" \
|
||||||
" MOV D1Ar1,#0\n" \
|
|
||||||
" MOV D0Ar2,#0\n" \
|
|
||||||
"3: ADD %2,%2,#8\n" \
|
"3: ADD %2,%2,#8\n" \
|
||||||
" SETL [%0++],D0Ar2,D1Ar1\n" \
|
|
||||||
" MOVT D0Ar2,#HI(1b)\n" \
|
" MOVT D0Ar2,#HI(1b)\n" \
|
||||||
" JUMP D0Ar2,#LO(1b)\n" \
|
" JUMP D0Ar2,#LO(1b)\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
|
@ -789,36 +711,57 @@ EXPORT_SYMBOL(__copy_user);
|
||||||
*
|
*
|
||||||
* Rationale:
|
* Rationale:
|
||||||
* A fault occurs while reading from user buffer, which is the
|
* A fault occurs while reading from user buffer, which is the
|
||||||
* source. Since the fault is at a single address, we only
|
* source.
|
||||||
* need to rewind by 8 bytes.
|
|
||||||
* Since we don't write to kernel buffer until we read first,
|
* Since we don't write to kernel buffer until we read first,
|
||||||
* the kernel buffer is at the right state and needn't be
|
* the kernel buffer is at the right state and needn't be
|
||||||
* corrected.
|
* corrected, but the source must be rewound to the beginning of
|
||||||
|
* the block, which is LSM_STEP*8 bytes.
|
||||||
|
* LSM_STEP is bits 10:8 in TXSTATUS which is already read
|
||||||
|
* and stored in D0Ar2
|
||||||
|
*
|
||||||
|
* NOTE: If a fault occurs at the last operation in M{G,S}ETL
|
||||||
|
* LSM_STEP will be 0. ie: we do 4 writes in our case, if
|
||||||
|
* a fault happens at the 4th write, LSM_STEP will be 0
|
||||||
|
* instead of 4. The code copes with that.
|
||||||
*/
|
*/
|
||||||
#define __asm_copy_from_user_64bit_rapf_loop(to, from, ret, n, id) \
|
#define __asm_copy_from_user_64bit_rapf_loop(to, from, ret, n, id) \
|
||||||
__asm_copy_user_64bit_rapf_loop(to, from, ret, n, id, \
|
__asm_copy_user_64bit_rapf_loop(to, from, ret, n, id, \
|
||||||
"SUB %1, %1, #8\n")
|
"LSR D0Ar2, D0Ar2, #5\n" \
|
||||||
|
"ANDS D0Ar2, D0Ar2, #0x38\n" \
|
||||||
|
"ADDZ D0Ar2, D0Ar2, #32\n" \
|
||||||
|
"SUB %1, %1, D0Ar2\n")
|
||||||
|
|
||||||
/* rewind 'from' pointer when a fault occurs
|
/* rewind 'from' pointer when a fault occurs
|
||||||
*
|
*
|
||||||
* Rationale:
|
* Rationale:
|
||||||
* A fault occurs while reading from user buffer, which is the
|
* A fault occurs while reading from user buffer, which is the
|
||||||
* source. Since the fault is at a single address, we only
|
* source.
|
||||||
* need to rewind by 4 bytes.
|
|
||||||
* Since we don't write to kernel buffer until we read first,
|
* Since we don't write to kernel buffer until we read first,
|
||||||
* the kernel buffer is at the right state and needn't be
|
* the kernel buffer is at the right state and needn't be
|
||||||
* corrected.
|
* corrected, but the source must be rewound to the beginning of
|
||||||
|
* the block, which is LSM_STEP*4 bytes.
|
||||||
|
* LSM_STEP is bits 10:8 in TXSTATUS which is already read
|
||||||
|
* and stored in D0Ar2
|
||||||
|
*
|
||||||
|
* NOTE: If a fault occurs at the last operation in M{G,S}ETL
|
||||||
|
* LSM_STEP will be 0. ie: we do 4 writes in our case, if
|
||||||
|
* a fault happens at the 4th write, LSM_STEP will be 0
|
||||||
|
* instead of 4. The code copes with that.
|
||||||
*/
|
*/
|
||||||
#define __asm_copy_from_user_32bit_rapf_loop(to, from, ret, n, id) \
|
#define __asm_copy_from_user_32bit_rapf_loop(to, from, ret, n, id) \
|
||||||
__asm_copy_user_32bit_rapf_loop(to, from, ret, n, id, \
|
__asm_copy_user_32bit_rapf_loop(to, from, ret, n, id, \
|
||||||
"SUB %1, %1, #4\n")
|
"LSR D0Ar2, D0Ar2, #6\n" \
|
||||||
|
"ANDS D0Ar2, D0Ar2, #0x1c\n" \
|
||||||
|
"ADDZ D0Ar2, D0Ar2, #16\n" \
|
||||||
|
"SUB %1, %1, D0Ar2\n")
|
||||||
|
|
||||||
|
|
||||||
/* Copy from user to kernel, zeroing the bytes that were inaccessible in
|
/*
|
||||||
userland. The return-value is the number of bytes that were
|
* Copy from user to kernel. The return-value is the number of bytes that were
|
||||||
inaccessible. */
|
* inaccessible.
|
||||||
unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
*/
|
||||||
unsigned long n)
|
unsigned long raw_copy_from_user(void *pdst, const void __user *psrc,
|
||||||
|
unsigned long n)
|
||||||
{
|
{
|
||||||
register char *dst asm ("A0.2") = pdst;
|
register char *dst asm ("A0.2") = pdst;
|
||||||
register const char __user *src asm ("A1.2") = psrc;
|
register const char __user *src asm ("A1.2") = psrc;
|
||||||
|
@ -830,6 +773,8 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
if ((unsigned long) src & 1) {
|
if ((unsigned long) src & 1) {
|
||||||
__asm_copy_from_user_1(dst, src, retn);
|
__asm_copy_from_user_1(dst, src, retn);
|
||||||
n--;
|
n--;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
if ((unsigned long) dst & 1) {
|
if ((unsigned long) dst & 1) {
|
||||||
/* Worst case - byte copy */
|
/* Worst case - byte copy */
|
||||||
|
@ -837,12 +782,14 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
__asm_copy_from_user_1(dst, src, retn);
|
__asm_copy_from_user_1(dst, src, retn);
|
||||||
n--;
|
n--;
|
||||||
if (retn)
|
if (retn)
|
||||||
goto copy_exception_bytes;
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((unsigned long) src & 2) && n >= 2) {
|
if (((unsigned long) src & 2) && n >= 2) {
|
||||||
__asm_copy_from_user_2(dst, src, retn);
|
__asm_copy_from_user_2(dst, src, retn);
|
||||||
n -= 2;
|
n -= 2;
|
||||||
|
if (retn)
|
||||||
|
return retn + n;
|
||||||
}
|
}
|
||||||
if ((unsigned long) dst & 2) {
|
if ((unsigned long) dst & 2) {
|
||||||
/* Second worst case - word copy */
|
/* Second worst case - word copy */
|
||||||
|
@ -850,16 +797,10 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
__asm_copy_from_user_2(dst, src, retn);
|
__asm_copy_from_user_2(dst, src, retn);
|
||||||
n -= 2;
|
n -= 2;
|
||||||
if (retn)
|
if (retn)
|
||||||
goto copy_exception_bytes;
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We only need one check after the unalignment-adjustments,
|
|
||||||
because if both adjustments were done, either both or
|
|
||||||
neither reference had an exception. */
|
|
||||||
if (retn != 0)
|
|
||||||
goto copy_exception_bytes;
|
|
||||||
|
|
||||||
#ifdef USE_RAPF
|
#ifdef USE_RAPF
|
||||||
/* 64 bit copy loop */
|
/* 64 bit copy loop */
|
||||||
if (!(((unsigned long) src | (unsigned long) dst) & 7)) {
|
if (!(((unsigned long) src | (unsigned long) dst) & 7)) {
|
||||||
|
@ -872,7 +813,7 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
__asm_copy_from_user_8x64(dst, src, retn);
|
__asm_copy_from_user_8x64(dst, src, retn);
|
||||||
n -= 8;
|
n -= 8;
|
||||||
if (retn)
|
if (retn)
|
||||||
goto copy_exception_bytes;
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -888,7 +829,7 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
__asm_copy_from_user_8x64(dst, src, retn);
|
__asm_copy_from_user_8x64(dst, src, retn);
|
||||||
n -= 8;
|
n -= 8;
|
||||||
if (retn)
|
if (retn)
|
||||||
goto copy_exception_bytes;
|
return retn + n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -898,7 +839,7 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
n -= 4;
|
n -= 4;
|
||||||
|
|
||||||
if (retn)
|
if (retn)
|
||||||
goto copy_exception_bytes;
|
return retn + n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we get here, there were no memory read faults. */
|
/* If we get here, there were no memory read faults. */
|
||||||
|
@ -924,21 +865,8 @@ unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
/* If we get here, retn correctly reflects the number of failing
|
/* If we get here, retn correctly reflects the number of failing
|
||||||
bytes. */
|
bytes. */
|
||||||
return retn;
|
return retn;
|
||||||
|
|
||||||
copy_exception_bytes:
|
|
||||||
/* We already have "retn" bytes cleared, and need to clear the
|
|
||||||
remaining "n" bytes. A non-optimized simple byte-for-byte in-line
|
|
||||||
memset is preferred here, since this isn't speed-critical code and
|
|
||||||
we'd rather have this a leaf-function than calling memset. */
|
|
||||||
{
|
|
||||||
char *endp;
|
|
||||||
for (endp = dst + n; dst < endp; dst++)
|
|
||||||
*dst = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return retn + n;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__copy_user_zeroing);
|
EXPORT_SYMBOL(raw_copy_from_user);
|
||||||
|
|
||||||
#define __asm_clear_8x64(to, ret) \
|
#define __asm_clear_8x64(to, ret) \
|
||||||
asm volatile ( \
|
asm volatile ( \
|
||||||
|
|
|
@ -1531,7 +1531,7 @@ config CPU_MIPS64_R6
|
||||||
select CPU_SUPPORTS_HIGHMEM
|
select CPU_SUPPORTS_HIGHMEM
|
||||||
select CPU_SUPPORTS_MSA
|
select CPU_SUPPORTS_MSA
|
||||||
select GENERIC_CSUM
|
select GENERIC_CSUM
|
||||||
select MIPS_O32_FP64_SUPPORT if MIPS32_O32
|
select MIPS_O32_FP64_SUPPORT if 32BIT || MIPS32_O32
|
||||||
select HAVE_KVM
|
select HAVE_KVM
|
||||||
help
|
help
|
||||||
Choose this option to build a kernel for release 6 or later of the
|
Choose this option to build a kernel for release 6 or later of the
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <asm/cpu-features.h>
|
#include <asm/cpu-features.h>
|
||||||
#include <asm/fpu_emulator.h>
|
#include <asm/fpu_emulator.h>
|
||||||
#include <asm/hazards.h>
|
#include <asm/hazards.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
#include <asm/msa.h>
|
#include <asm/msa.h>
|
||||||
|
|
|
@ -18,9 +18,24 @@
|
||||||
#include <irq.h>
|
#include <irq.h>
|
||||||
|
|
||||||
#define IRQ_STACK_SIZE THREAD_SIZE
|
#define IRQ_STACK_SIZE THREAD_SIZE
|
||||||
|
#define IRQ_STACK_START (IRQ_STACK_SIZE - sizeof(unsigned long))
|
||||||
|
|
||||||
extern void *irq_stack[NR_CPUS];
|
extern void *irq_stack[NR_CPUS];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The highest address on the IRQ stack contains a dummy frame put down in
|
||||||
|
* genex.S (handle_int & except_vec_vi_handler) which is structured as follows:
|
||||||
|
*
|
||||||
|
* top ------------
|
||||||
|
* | task sp | <- irq_stack[cpu] + IRQ_STACK_START
|
||||||
|
* ------------
|
||||||
|
* | | <- First frame of IRQ context
|
||||||
|
* ------------
|
||||||
|
*
|
||||||
|
* task sp holds a copy of the task stack pointer where the struct pt_regs
|
||||||
|
* from exception entry can be found.
|
||||||
|
*/
|
||||||
|
|
||||||
static inline bool on_irq_stack(int cpu, unsigned long sp)
|
static inline bool on_irq_stack(int cpu, unsigned long sp)
|
||||||
{
|
{
|
||||||
unsigned long low = (unsigned long)irq_stack[cpu];
|
unsigned long low = (unsigned long)irq_stack[cpu];
|
||||||
|
|
|
@ -127,7 +127,7 @@ static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
" andi %[ticket], %[ticket], 0xffff \n"
|
" andi %[ticket], %[ticket], 0xffff \n"
|
||||||
" bne %[ticket], %[my_ticket], 4f \n"
|
" bne %[ticket], %[my_ticket], 4f \n"
|
||||||
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
||||||
"2: \n"
|
"2: .insn \n"
|
||||||
" .subsection 2 \n"
|
" .subsection 2 \n"
|
||||||
"4: andi %[ticket], %[ticket], 0xffff \n"
|
"4: andi %[ticket], %[ticket], 0xffff \n"
|
||||||
" sll %[ticket], 5 \n"
|
" sll %[ticket], 5 \n"
|
||||||
|
@ -202,7 +202,7 @@ static inline unsigned int arch_spin_trylock(arch_spinlock_t *lock)
|
||||||
" sc %[ticket], %[ticket_ptr] \n"
|
" sc %[ticket], %[ticket_ptr] \n"
|
||||||
" beqz %[ticket], 1b \n"
|
" beqz %[ticket], 1b \n"
|
||||||
" li %[ticket], 1 \n"
|
" li %[ticket], 1 \n"
|
||||||
"2: \n"
|
"2: .insn \n"
|
||||||
" .subsection 2 \n"
|
" .subsection 2 \n"
|
||||||
"3: b 2b \n"
|
"3: b 2b \n"
|
||||||
" li %[ticket], 0 \n"
|
" li %[ticket], 0 \n"
|
||||||
|
@ -382,7 +382,7 @@ static inline int arch_read_trylock(arch_rwlock_t *rw)
|
||||||
" .set reorder \n"
|
" .set reorder \n"
|
||||||
__WEAK_LLSC_MB
|
__WEAK_LLSC_MB
|
||||||
" li %2, 1 \n"
|
" li %2, 1 \n"
|
||||||
"2: \n"
|
"2: .insn \n"
|
||||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp), "=&r" (ret)
|
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp), "=&r" (ret)
|
||||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||||
: "memory");
|
: "memory");
|
||||||
|
@ -422,7 +422,7 @@ static inline int arch_write_trylock(arch_rwlock_t *rw)
|
||||||
" lui %1, 0x8000 \n"
|
" lui %1, 0x8000 \n"
|
||||||
" sc %1, %0 \n"
|
" sc %1, %0 \n"
|
||||||
" li %2, 1 \n"
|
" li %2, 1 \n"
|
||||||
"2: \n"
|
"2: .insn \n"
|
||||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp),
|
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp),
|
||||||
"=&r" (ret)
|
"=&r" (ret)
|
||||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||||
|
|
|
@ -386,17 +386,18 @@
|
||||||
#define __NR_pkey_mprotect (__NR_Linux + 363)
|
#define __NR_pkey_mprotect (__NR_Linux + 363)
|
||||||
#define __NR_pkey_alloc (__NR_Linux + 364)
|
#define __NR_pkey_alloc (__NR_Linux + 364)
|
||||||
#define __NR_pkey_free (__NR_Linux + 365)
|
#define __NR_pkey_free (__NR_Linux + 365)
|
||||||
|
#define __NR_statx (__NR_Linux + 366)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Offset of the last Linux o32 flavoured syscall
|
* Offset of the last Linux o32 flavoured syscall
|
||||||
*/
|
*/
|
||||||
#define __NR_Linux_syscalls 365
|
#define __NR_Linux_syscalls 366
|
||||||
|
|
||||||
#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
|
#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
|
||||||
|
|
||||||
#define __NR_O32_Linux 4000
|
#define __NR_O32_Linux 4000
|
||||||
#define __NR_O32_Linux_syscalls 365
|
#define __NR_O32_Linux_syscalls 366
|
||||||
|
|
||||||
#if _MIPS_SIM == _MIPS_SIM_ABI64
|
#if _MIPS_SIM == _MIPS_SIM_ABI64
|
||||||
|
|
||||||
|
@ -730,16 +731,17 @@
|
||||||
#define __NR_pkey_mprotect (__NR_Linux + 323)
|
#define __NR_pkey_mprotect (__NR_Linux + 323)
|
||||||
#define __NR_pkey_alloc (__NR_Linux + 324)
|
#define __NR_pkey_alloc (__NR_Linux + 324)
|
||||||
#define __NR_pkey_free (__NR_Linux + 325)
|
#define __NR_pkey_free (__NR_Linux + 325)
|
||||||
|
#define __NR_statx (__NR_Linux + 326)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Offset of the last Linux 64-bit flavoured syscall
|
* Offset of the last Linux 64-bit flavoured syscall
|
||||||
*/
|
*/
|
||||||
#define __NR_Linux_syscalls 325
|
#define __NR_Linux_syscalls 326
|
||||||
|
|
||||||
#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
|
#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
|
||||||
|
|
||||||
#define __NR_64_Linux 5000
|
#define __NR_64_Linux 5000
|
||||||
#define __NR_64_Linux_syscalls 325
|
#define __NR_64_Linux_syscalls 326
|
||||||
|
|
||||||
#if _MIPS_SIM == _MIPS_SIM_NABI32
|
#if _MIPS_SIM == _MIPS_SIM_NABI32
|
||||||
|
|
||||||
|
@ -1077,15 +1079,16 @@
|
||||||
#define __NR_pkey_mprotect (__NR_Linux + 327)
|
#define __NR_pkey_mprotect (__NR_Linux + 327)
|
||||||
#define __NR_pkey_alloc (__NR_Linux + 328)
|
#define __NR_pkey_alloc (__NR_Linux + 328)
|
||||||
#define __NR_pkey_free (__NR_Linux + 329)
|
#define __NR_pkey_free (__NR_Linux + 329)
|
||||||
|
#define __NR_statx (__NR_Linux + 330)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Offset of the last N32 flavoured syscall
|
* Offset of the last N32 flavoured syscall
|
||||||
*/
|
*/
|
||||||
#define __NR_Linux_syscalls 329
|
#define __NR_Linux_syscalls 330
|
||||||
|
|
||||||
#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
|
#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
|
||||||
|
|
||||||
#define __NR_N32_Linux 6000
|
#define __NR_N32_Linux 6000
|
||||||
#define __NR_N32_Linux_syscalls 329
|
#define __NR_N32_Linux_syscalls 330
|
||||||
|
|
||||||
#endif /* _UAPI_ASM_UNISTD_H */
|
#endif /* _UAPI_ASM_UNISTD_H */
|
||||||
|
|
|
@ -102,6 +102,7 @@ void output_thread_info_defines(void)
|
||||||
DEFINE(_THREAD_SIZE, THREAD_SIZE);
|
DEFINE(_THREAD_SIZE, THREAD_SIZE);
|
||||||
DEFINE(_THREAD_MASK, THREAD_MASK);
|
DEFINE(_THREAD_MASK, THREAD_MASK);
|
||||||
DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
|
DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
|
||||||
|
DEFINE(_IRQ_STACK_START, IRQ_STACK_START);
|
||||||
BLANK();
|
BLANK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -361,7 +361,7 @@ LEAF(mips_cps_get_bootcfg)
|
||||||
END(mips_cps_get_bootcfg)
|
END(mips_cps_get_bootcfg)
|
||||||
|
|
||||||
LEAF(mips_cps_boot_vpes)
|
LEAF(mips_cps_boot_vpes)
|
||||||
PTR_L ta2, COREBOOTCFG_VPEMASK(a0)
|
lw ta2, COREBOOTCFG_VPEMASK(a0)
|
||||||
PTR_L ta3, COREBOOTCFG_VPECONFIG(a0)
|
PTR_L ta3, COREBOOTCFG_VPECONFIG(a0)
|
||||||
|
|
||||||
#if defined(CONFIG_CPU_MIPSR6)
|
#if defined(CONFIG_CPU_MIPSR6)
|
||||||
|
|
|
@ -1824,7 +1824,7 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
decode_configs(c);
|
decode_configs(c);
|
||||||
c->options |= MIPS_CPU_TLBINV | MIPS_CPU_LDPTE;
|
c->options |= MIPS_CPU_FTLB | MIPS_CPU_TLBINV | MIPS_CPU_LDPTE;
|
||||||
c->writecombine = _CACHE_UNCACHED_ACCELERATED;
|
c->writecombine = _CACHE_UNCACHED_ACCELERATED;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -215,9 +215,11 @@ NESTED(handle_int, PT_SIZE, sp)
|
||||||
beq t0, t1, 2f
|
beq t0, t1, 2f
|
||||||
|
|
||||||
/* Switch to IRQ stack */
|
/* Switch to IRQ stack */
|
||||||
li t1, _IRQ_STACK_SIZE
|
li t1, _IRQ_STACK_START
|
||||||
PTR_ADD sp, t0, t1
|
PTR_ADD sp, t0, t1
|
||||||
|
|
||||||
|
/* Save task's sp on IRQ stack so that unwinding can follow it */
|
||||||
|
LONG_S s1, 0(sp)
|
||||||
2:
|
2:
|
||||||
jal plat_irq_dispatch
|
jal plat_irq_dispatch
|
||||||
|
|
||||||
|
@ -325,9 +327,11 @@ NESTED(except_vec_vi_handler, 0, sp)
|
||||||
beq t0, t1, 2f
|
beq t0, t1, 2f
|
||||||
|
|
||||||
/* Switch to IRQ stack */
|
/* Switch to IRQ stack */
|
||||||
li t1, _IRQ_STACK_SIZE
|
li t1, _IRQ_STACK_START
|
||||||
PTR_ADD sp, t0, t1
|
PTR_ADD sp, t0, t1
|
||||||
|
|
||||||
|
/* Save task's sp on IRQ stack so that unwinding can follow it */
|
||||||
|
LONG_S s1, 0(sp)
|
||||||
2:
|
2:
|
||||||
jalr v0
|
jalr v0
|
||||||
|
|
||||||
|
@ -519,7 +523,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
||||||
BUILD_HANDLER reserved reserved sti verbose /* others */
|
BUILD_HANDLER reserved reserved sti verbose /* others */
|
||||||
|
|
||||||
.align 5
|
.align 5
|
||||||
LEAF(handle_ri_rdhwr_vivt)
|
LEAF(handle_ri_rdhwr_tlbp)
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
.set noreorder
|
.set noreorder
|
||||||
|
@ -538,7 +542,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
||||||
.set pop
|
.set pop
|
||||||
bltz k1, handle_ri /* slow path */
|
bltz k1, handle_ri /* slow path */
|
||||||
/* fall thru */
|
/* fall thru */
|
||||||
END(handle_ri_rdhwr_vivt)
|
END(handle_ri_rdhwr_tlbp)
|
||||||
|
|
||||||
LEAF(handle_ri_rdhwr)
|
LEAF(handle_ri_rdhwr)
|
||||||
.set push
|
.set push
|
||||||
|
|
|
@ -488,31 +488,52 @@ unsigned long notrace unwind_stack_by_address(unsigned long stack_page,
|
||||||
unsigned long pc,
|
unsigned long pc,
|
||||||
unsigned long *ra)
|
unsigned long *ra)
|
||||||
{
|
{
|
||||||
|
unsigned long low, high, irq_stack_high;
|
||||||
struct mips_frame_info info;
|
struct mips_frame_info info;
|
||||||
unsigned long size, ofs;
|
unsigned long size, ofs;
|
||||||
|
struct pt_regs *regs;
|
||||||
int leaf;
|
int leaf;
|
||||||
extern void ret_from_irq(void);
|
|
||||||
extern void ret_from_exception(void);
|
|
||||||
|
|
||||||
if (!stack_page)
|
if (!stack_page)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we reached the bottom of interrupt context,
|
* IRQ stacks start at IRQ_STACK_START
|
||||||
* return saved pc in pt_regs.
|
* task stacks at THREAD_SIZE - 32
|
||||||
*/
|
*/
|
||||||
if (pc == (unsigned long)ret_from_irq ||
|
low = stack_page;
|
||||||
pc == (unsigned long)ret_from_exception) {
|
if (!preemptible() && on_irq_stack(raw_smp_processor_id(), *sp)) {
|
||||||
struct pt_regs *regs;
|
high = stack_page + IRQ_STACK_START;
|
||||||
if (*sp >= stack_page &&
|
irq_stack_high = high;
|
||||||
*sp + sizeof(*regs) <= stack_page + THREAD_SIZE - 32) {
|
} else {
|
||||||
regs = (struct pt_regs *)*sp;
|
high = stack_page + THREAD_SIZE - 32;
|
||||||
pc = regs->cp0_epc;
|
irq_stack_high = 0;
|
||||||
if (!user_mode(regs) && __kernel_text_address(pc)) {
|
}
|
||||||
*sp = regs->regs[29];
|
|
||||||
*ra = regs->regs[31];
|
/*
|
||||||
return pc;
|
* If we reached the top of the interrupt stack, start unwinding
|
||||||
}
|
* the interrupted task stack.
|
||||||
|
*/
|
||||||
|
if (unlikely(*sp == irq_stack_high)) {
|
||||||
|
unsigned long task_sp = *(unsigned long *)*sp;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check that the pointer saved in the IRQ stack head points to
|
||||||
|
* something within the stack of the current task
|
||||||
|
*/
|
||||||
|
if (!object_is_on_stack((void *)task_sp))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Follow pointer to tasks kernel stack frame where interrupted
|
||||||
|
* state was saved.
|
||||||
|
*/
|
||||||
|
regs = (struct pt_regs *)task_sp;
|
||||||
|
pc = regs->cp0_epc;
|
||||||
|
if (!user_mode(regs) && __kernel_text_address(pc)) {
|
||||||
|
*sp = regs->regs[29];
|
||||||
|
*ra = regs->regs[31];
|
||||||
|
return pc;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -533,8 +554,7 @@ unsigned long notrace unwind_stack_by_address(unsigned long stack_page,
|
||||||
if (leaf < 0)
|
if (leaf < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (*sp < stack_page ||
|
if (*sp < low || *sp + info.frame_size > high)
|
||||||
*sp + info.frame_size > stack_page + THREAD_SIZE - 32)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (leaf)
|
if (leaf)
|
||||||
|
|
|
@ -456,7 +456,8 @@ static int fpr_set(struct task_struct *target,
|
||||||
&target->thread.fpu,
|
&target->thread.fpu,
|
||||||
0, sizeof(elf_fpregset_t));
|
0, sizeof(elf_fpregset_t));
|
||||||
|
|
||||||
for (i = 0; i < NUM_FPU_REGS; i++) {
|
BUILD_BUG_ON(sizeof(fpr_val) != sizeof(elf_fpreg_t));
|
||||||
|
for (i = 0; i < NUM_FPU_REGS && count >= sizeof(elf_fpreg_t); i++) {
|
||||||
err = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
err = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
||||||
&fpr_val, i * sizeof(elf_fpreg_t),
|
&fpr_val, i * sizeof(elf_fpreg_t),
|
||||||
(i + 1) * sizeof(elf_fpreg_t));
|
(i + 1) * sizeof(elf_fpreg_t));
|
||||||
|
|
|
@ -600,3 +600,4 @@ EXPORT(sys_call_table)
|
||||||
PTR sys_pkey_mprotect
|
PTR sys_pkey_mprotect
|
||||||
PTR sys_pkey_alloc
|
PTR sys_pkey_alloc
|
||||||
PTR sys_pkey_free /* 4365 */
|
PTR sys_pkey_free /* 4365 */
|
||||||
|
PTR sys_statx
|
||||||
|
|
|
@ -438,4 +438,5 @@ EXPORT(sys_call_table)
|
||||||
PTR sys_pkey_mprotect
|
PTR sys_pkey_mprotect
|
||||||
PTR sys_pkey_alloc
|
PTR sys_pkey_alloc
|
||||||
PTR sys_pkey_free /* 5325 */
|
PTR sys_pkey_free /* 5325 */
|
||||||
|
PTR sys_statx
|
||||||
.size sys_call_table,.-sys_call_table
|
.size sys_call_table,.-sys_call_table
|
||||||
|
|
|
@ -433,4 +433,5 @@ EXPORT(sysn32_call_table)
|
||||||
PTR sys_pkey_mprotect
|
PTR sys_pkey_mprotect
|
||||||
PTR sys_pkey_alloc
|
PTR sys_pkey_alloc
|
||||||
PTR sys_pkey_free
|
PTR sys_pkey_free
|
||||||
|
PTR sys_statx /* 6330 */
|
||||||
.size sysn32_call_table,.-sysn32_call_table
|
.size sysn32_call_table,.-sysn32_call_table
|
||||||
|
|
|
@ -588,4 +588,5 @@ EXPORT(sys32_call_table)
|
||||||
PTR sys_pkey_mprotect
|
PTR sys_pkey_mprotect
|
||||||
PTR sys_pkey_alloc
|
PTR sys_pkey_alloc
|
||||||
PTR sys_pkey_free /* 4365 */
|
PTR sys_pkey_free /* 4365 */
|
||||||
|
PTR sys_statx
|
||||||
.size sys32_call_table,.-sys32_call_table
|
.size sys32_call_table,.-sys32_call_table
|
||||||
|
|
|
@ -83,7 +83,7 @@ extern asmlinkage void handle_dbe(void);
|
||||||
extern asmlinkage void handle_sys(void);
|
extern asmlinkage void handle_sys(void);
|
||||||
extern asmlinkage void handle_bp(void);
|
extern asmlinkage void handle_bp(void);
|
||||||
extern asmlinkage void handle_ri(void);
|
extern asmlinkage void handle_ri(void);
|
||||||
extern asmlinkage void handle_ri_rdhwr_vivt(void);
|
extern asmlinkage void handle_ri_rdhwr_tlbp(void);
|
||||||
extern asmlinkage void handle_ri_rdhwr(void);
|
extern asmlinkage void handle_ri_rdhwr(void);
|
||||||
extern asmlinkage void handle_cpu(void);
|
extern asmlinkage void handle_cpu(void);
|
||||||
extern asmlinkage void handle_ov(void);
|
extern asmlinkage void handle_ov(void);
|
||||||
|
@ -2408,9 +2408,18 @@ void __init trap_init(void)
|
||||||
|
|
||||||
set_except_vector(EXCCODE_SYS, handle_sys);
|
set_except_vector(EXCCODE_SYS, handle_sys);
|
||||||
set_except_vector(EXCCODE_BP, handle_bp);
|
set_except_vector(EXCCODE_BP, handle_bp);
|
||||||
set_except_vector(EXCCODE_RI, rdhwr_noopt ? handle_ri :
|
|
||||||
(cpu_has_vtag_icache ?
|
if (rdhwr_noopt)
|
||||||
handle_ri_rdhwr_vivt : handle_ri_rdhwr));
|
set_except_vector(EXCCODE_RI, handle_ri);
|
||||||
|
else {
|
||||||
|
if (cpu_has_vtag_icache)
|
||||||
|
set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
||||||
|
else if (current_cpu_type() == CPU_LOONGSON3)
|
||||||
|
set_except_vector(EXCCODE_RI, handle_ri_rdhwr_tlbp);
|
||||||
|
else
|
||||||
|
set_except_vector(EXCCODE_RI, handle_ri_rdhwr);
|
||||||
|
}
|
||||||
|
|
||||||
set_except_vector(EXCCODE_CPU, handle_cpu);
|
set_except_vector(EXCCODE_CPU, handle_cpu);
|
||||||
set_except_vector(EXCCODE_OV, handle_ov);
|
set_except_vector(EXCCODE_OV, handle_ov);
|
||||||
set_except_vector(EXCCODE_TR, handle_tr);
|
set_except_vector(EXCCODE_TR, handle_tr);
|
||||||
|
|
|
@ -467,7 +467,7 @@ void __init ltq_soc_init(void)
|
||||||
|
|
||||||
if (!np_xbar)
|
if (!np_xbar)
|
||||||
panic("Failed to load xbar nodes from devicetree");
|
panic("Failed to load xbar nodes from devicetree");
|
||||||
if (of_address_to_resource(np_pmu, 0, &res_xbar))
|
if (of_address_to_resource(np_xbar, 0, &res_xbar))
|
||||||
panic("Failed to get xbar resources");
|
panic("Failed to get xbar resources");
|
||||||
if (!request_mem_region(res_xbar.start, resource_size(&res_xbar),
|
if (!request_mem_region(res_xbar.start, resource_size(&res_xbar),
|
||||||
res_xbar.name))
|
res_xbar.name))
|
||||||
|
|
|
@ -1562,6 +1562,7 @@ static void probe_vcache(void)
|
||||||
vcache_size = c->vcache.sets * c->vcache.ways * c->vcache.linesz;
|
vcache_size = c->vcache.sets * c->vcache.ways * c->vcache.linesz;
|
||||||
|
|
||||||
c->vcache.waybit = 0;
|
c->vcache.waybit = 0;
|
||||||
|
c->vcache.waysize = vcache_size / c->vcache.ways;
|
||||||
|
|
||||||
pr_info("Unified victim cache %ldkB %s, linesize %d bytes.\n",
|
pr_info("Unified victim cache %ldkB %s, linesize %d bytes.\n",
|
||||||
vcache_size >> 10, way_string[c->vcache.ways], c->vcache.linesz);
|
vcache_size >> 10, way_string[c->vcache.ways], c->vcache.linesz);
|
||||||
|
@ -1664,6 +1665,7 @@ static void __init loongson3_sc_init(void)
|
||||||
/* Loongson-3 has 4 cores, 1MB scache for each. scaches are shared */
|
/* Loongson-3 has 4 cores, 1MB scache for each. scaches are shared */
|
||||||
scache_size *= 4;
|
scache_size *= 4;
|
||||||
c->scache.waybit = 0;
|
c->scache.waybit = 0;
|
||||||
|
c->scache.waysize = scache_size / c->scache.ways;
|
||||||
pr_info("Unified secondary cache %ldkB %s, linesize %d bytes.\n",
|
pr_info("Unified secondary cache %ldkB %s, linesize %d bytes.\n",
|
||||||
scache_size >> 10, way_string[c->scache.ways], c->scache.linesz);
|
scache_size >> 10, way_string[c->scache.ways], c->scache.linesz);
|
||||||
if (scache_size)
|
if (scache_size)
|
||||||
|
|
|
@ -760,7 +760,8 @@ static void build_huge_update_entries(u32 **p, unsigned int pte,
|
||||||
static void build_huge_handler_tail(u32 **p, struct uasm_reloc **r,
|
static void build_huge_handler_tail(u32 **p, struct uasm_reloc **r,
|
||||||
struct uasm_label **l,
|
struct uasm_label **l,
|
||||||
unsigned int pte,
|
unsigned int pte,
|
||||||
unsigned int ptr)
|
unsigned int ptr,
|
||||||
|
unsigned int flush)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
UASM_i_SC(p, pte, 0, ptr);
|
UASM_i_SC(p, pte, 0, ptr);
|
||||||
|
@ -769,6 +770,22 @@ static void build_huge_handler_tail(u32 **p, struct uasm_reloc **r,
|
||||||
#else
|
#else
|
||||||
UASM_i_SW(p, pte, 0, ptr);
|
UASM_i_SW(p, pte, 0, ptr);
|
||||||
#endif
|
#endif
|
||||||
|
if (cpu_has_ftlb && flush) {
|
||||||
|
BUG_ON(!cpu_has_tlbinv);
|
||||||
|
|
||||||
|
UASM_i_MFC0(p, ptr, C0_ENTRYHI);
|
||||||
|
uasm_i_ori(p, ptr, ptr, MIPS_ENTRYHI_EHINV);
|
||||||
|
UASM_i_MTC0(p, ptr, C0_ENTRYHI);
|
||||||
|
build_tlb_write_entry(p, l, r, tlb_indexed);
|
||||||
|
|
||||||
|
uasm_i_xori(p, ptr, ptr, MIPS_ENTRYHI_EHINV);
|
||||||
|
UASM_i_MTC0(p, ptr, C0_ENTRYHI);
|
||||||
|
build_huge_update_entries(p, pte, ptr);
|
||||||
|
build_huge_tlb_write_entry(p, l, r, pte, tlb_random, 0);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
build_huge_update_entries(p, pte, ptr);
|
build_huge_update_entries(p, pte, ptr);
|
||||||
build_huge_tlb_write_entry(p, l, r, pte, tlb_indexed, 0);
|
build_huge_tlb_write_entry(p, l, r, pte, tlb_indexed, 0);
|
||||||
}
|
}
|
||||||
|
@ -2199,7 +2216,7 @@ static void build_r4000_tlb_load_handler(void)
|
||||||
uasm_l_tlbl_goaround2(&l, p);
|
uasm_l_tlbl_goaround2(&l, p);
|
||||||
}
|
}
|
||||||
uasm_i_ori(&p, wr.r1, wr.r1, (_PAGE_ACCESSED | _PAGE_VALID));
|
uasm_i_ori(&p, wr.r1, wr.r1, (_PAGE_ACCESSED | _PAGE_VALID));
|
||||||
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2);
|
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uasm_l_nopage_tlbl(&l, p);
|
uasm_l_nopage_tlbl(&l, p);
|
||||||
|
@ -2254,7 +2271,7 @@ static void build_r4000_tlb_store_handler(void)
|
||||||
build_tlb_probe_entry(&p);
|
build_tlb_probe_entry(&p);
|
||||||
uasm_i_ori(&p, wr.r1, wr.r1,
|
uasm_i_ori(&p, wr.r1, wr.r1,
|
||||||
_PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID | _PAGE_DIRTY);
|
_PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID | _PAGE_DIRTY);
|
||||||
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2);
|
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uasm_l_nopage_tlbs(&l, p);
|
uasm_l_nopage_tlbs(&l, p);
|
||||||
|
@ -2310,7 +2327,7 @@ static void build_r4000_tlb_modify_handler(void)
|
||||||
build_tlb_probe_entry(&p);
|
build_tlb_probe_entry(&p);
|
||||||
uasm_i_ori(&p, wr.r1, wr.r1,
|
uasm_i_ori(&p, wr.r1, wr.r1,
|
||||||
_PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID | _PAGE_DIRTY);
|
_PAGE_ACCESSED | _PAGE_MODIFIED | _PAGE_VALID | _PAGE_DIRTY);
|
||||||
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2);
|
build_huge_handler_tail(&p, &r, &l, wr.r1, wr.r2, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uasm_l_nopage_tlbm(&l, p);
|
uasm_l_nopage_tlbm(&l, p);
|
||||||
|
|
|
@ -35,7 +35,7 @@ static struct rt2880_pmx_func uartlite_func[] = { FUNC("uartlite", 0, 15, 2) };
|
||||||
static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
|
static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
|
||||||
static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
|
static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
|
||||||
static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
|
static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
|
||||||
static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna a", 0, 35, 3) };
|
static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna g", 0, 35, 3) };
|
||||||
static struct rt2880_pmx_func pci_func[] = {
|
static struct rt2880_pmx_func pci_func[] = {
|
||||||
FUNC("pci-dev", 0, 40, 32),
|
FUNC("pci-dev", 0, 40, 32),
|
||||||
FUNC("pci-host2", 1, 40, 32),
|
FUNC("pci-host2", 1, 40, 32),
|
||||||
|
@ -43,7 +43,7 @@ static struct rt2880_pmx_func pci_func[] = {
|
||||||
FUNC("pci-fnc", 3, 40, 32)
|
FUNC("pci-fnc", 3, 40, 32)
|
||||||
};
|
};
|
||||||
static struct rt2880_pmx_func ge1_func[] = { FUNC("ge1", 0, 72, 12) };
|
static struct rt2880_pmx_func ge1_func[] = { FUNC("ge1", 0, 72, 12) };
|
||||||
static struct rt2880_pmx_func ge2_func[] = { FUNC("ge1", 0, 84, 12) };
|
static struct rt2880_pmx_func ge2_func[] = { FUNC("ge2", 0, 84, 12) };
|
||||||
|
|
||||||
static struct rt2880_pmx_group rt3883_pinmux_data[] = {
|
static struct rt2880_pmx_group rt3883_pinmux_data[] = {
|
||||||
GRP("i2c", i2c_func, 1, RT3883_GPIO_MODE_I2C),
|
GRP("i2c", i2c_func, 1, RT3883_GPIO_MODE_I2C),
|
||||||
|
|
|
@ -48,6 +48,13 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
||||||
return alloc_bootmem_align(size, align);
|
return alloc_bootmem_align(size, align);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __init early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
|
||||||
|
bool nomap)
|
||||||
|
{
|
||||||
|
reserve_bootmem(base, size, BOOTMEM_DEFAULT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void __init early_init_devtree(void *params)
|
void __init early_init_devtree(void *params)
|
||||||
{
|
{
|
||||||
__be32 *dtb = (u32 *)__dtb_start;
|
__be32 *dtb = (u32 *)__dtb_start;
|
||||||
|
|
|
@ -201,6 +201,9 @@ void __init setup_arch(char **cmdline_p)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||||
|
|
||||||
|
early_init_fdt_reserve_self();
|
||||||
|
early_init_fdt_scan_reserved_mem();
|
||||||
|
|
||||||
unflatten_and_copy_device_tree();
|
unflatten_and_copy_device_tree();
|
||||||
|
|
||||||
setup_cpuinfo();
|
setup_cpuinfo();
|
||||||
|
|
|
@ -64,6 +64,15 @@ struct exception_table_entry {
|
||||||
".word (" #fault_addr " - .), (" #except_addr " - .)\n\t" \
|
".word (" #fault_addr " - .), (" #except_addr " - .)\n\t" \
|
||||||
".previous\n"
|
".previous\n"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ASM_EXCEPTIONTABLE_ENTRY_EFAULT() creates a special exception table entry
|
||||||
|
* (with lowest bit set) for which the fault handler in fixup_exception() will
|
||||||
|
* load -EFAULT into %r8 for a read or write fault, and zeroes the target
|
||||||
|
* register in case of a read fault in get_user().
|
||||||
|
*/
|
||||||
|
#define ASM_EXCEPTIONTABLE_ENTRY_EFAULT( fault_addr, except_addr )\
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr + 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The page fault handler stores, in a per-cpu area, the following information
|
* The page fault handler stores, in a per-cpu area, the following information
|
||||||
* if a fixup routine is available.
|
* if a fixup routine is available.
|
||||||
|
@ -91,7 +100,7 @@ struct exception_data {
|
||||||
#define __get_user(x, ptr) \
|
#define __get_user(x, ptr) \
|
||||||
({ \
|
({ \
|
||||||
register long __gu_err __asm__ ("r8") = 0; \
|
register long __gu_err __asm__ ("r8") = 0; \
|
||||||
register long __gu_val __asm__ ("r9") = 0; \
|
register long __gu_val; \
|
||||||
\
|
\
|
||||||
load_sr2(); \
|
load_sr2(); \
|
||||||
switch (sizeof(*(ptr))) { \
|
switch (sizeof(*(ptr))) { \
|
||||||
|
@ -107,22 +116,23 @@ struct exception_data {
|
||||||
})
|
})
|
||||||
|
|
||||||
#define __get_user_asm(ldx, ptr) \
|
#define __get_user_asm(ldx, ptr) \
|
||||||
__asm__("\n1:\t" ldx "\t0(%%sr2,%2),%0\n\t" \
|
__asm__("1: " ldx " 0(%%sr2,%2),%0\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_1)\
|
"9:\n" \
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
|
||||||
: "=r"(__gu_val), "=r"(__gu_err) \
|
: "=r"(__gu_val), "=r"(__gu_err) \
|
||||||
: "r"(ptr), "1"(__gu_err) \
|
: "r"(ptr), "1"(__gu_err));
|
||||||
: "r1");
|
|
||||||
|
|
||||||
#if !defined(CONFIG_64BIT)
|
#if !defined(CONFIG_64BIT)
|
||||||
|
|
||||||
#define __get_user_asm64(ptr) \
|
#define __get_user_asm64(ptr) \
|
||||||
__asm__("\n1:\tldw 0(%%sr2,%2),%0" \
|
__asm__(" copy %%r0,%R0\n" \
|
||||||
"\n2:\tldw 4(%%sr2,%2),%R0\n\t" \
|
"1: ldw 0(%%sr2,%2),%0\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_2)\
|
"2: ldw 4(%%sr2,%2),%R0\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_get_user_skip_1)\
|
"9:\n" \
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \
|
||||||
: "=r"(__gu_val), "=r"(__gu_err) \
|
: "=r"(__gu_val), "=r"(__gu_err) \
|
||||||
: "r"(ptr), "1"(__gu_err) \
|
: "r"(ptr), "1"(__gu_err));
|
||||||
: "r1");
|
|
||||||
|
|
||||||
#endif /* !defined(CONFIG_64BIT) */
|
#endif /* !defined(CONFIG_64BIT) */
|
||||||
|
|
||||||
|
@ -148,32 +158,31 @@ struct exception_data {
|
||||||
* The "__put_user/kernel_asm()" macros tell gcc they read from memory
|
* The "__put_user/kernel_asm()" macros tell gcc they read from memory
|
||||||
* instead of writing. This is because they do not write to any memory
|
* instead of writing. This is because they do not write to any memory
|
||||||
* gcc knows about, so there are no aliasing issues. These macros must
|
* gcc knows about, so there are no aliasing issues. These macros must
|
||||||
* also be aware that "fixup_put_user_skip_[12]" are executed in the
|
* also be aware that fixups are executed in the context of the fault,
|
||||||
* context of the fault, and any registers used there must be listed
|
* and any registers used there must be listed as clobbers.
|
||||||
* as clobbers. In this case only "r1" is used by the current routines.
|
* r8 is already listed as err.
|
||||||
* r8/r9 are already listed as err/val.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __put_user_asm(stx, x, ptr) \
|
#define __put_user_asm(stx, x, ptr) \
|
||||||
__asm__ __volatile__ ( \
|
__asm__ __volatile__ ( \
|
||||||
"\n1:\t" stx "\t%2,0(%%sr2,%1)\n\t" \
|
"1: " stx " %2,0(%%sr2,%1)\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_1)\
|
"9:\n" \
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
|
||||||
: "=r"(__pu_err) \
|
: "=r"(__pu_err) \
|
||||||
: "r"(ptr), "r"(x), "0"(__pu_err) \
|
: "r"(ptr), "r"(x), "0"(__pu_err))
|
||||||
: "r1")
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined(CONFIG_64BIT)
|
#if !defined(CONFIG_64BIT)
|
||||||
|
|
||||||
#define __put_user_asm64(__val, ptr) do { \
|
#define __put_user_asm64(__val, ptr) do { \
|
||||||
__asm__ __volatile__ ( \
|
__asm__ __volatile__ ( \
|
||||||
"\n1:\tstw %2,0(%%sr2,%1)" \
|
"1: stw %2,0(%%sr2,%1)\n" \
|
||||||
"\n2:\tstw %R2,4(%%sr2,%1)\n\t" \
|
"2: stw %R2,4(%%sr2,%1)\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_2)\
|
"9:\n" \
|
||||||
ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_put_user_skip_1)\
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
|
||||||
|
ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \
|
||||||
: "=r"(__pu_err) \
|
: "=r"(__pu_err) \
|
||||||
: "r"(ptr), "r"(__val), "0"(__pu_err) \
|
: "r"(ptr), "r"(__val), "0"(__pu_err)); \
|
||||||
: "r1"); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#endif /* !defined(CONFIG_64BIT) */
|
#endif /* !defined(CONFIG_64BIT) */
|
||||||
|
|
|
@ -47,16 +47,6 @@ EXPORT_SYMBOL(__cmpxchg_u64);
|
||||||
EXPORT_SYMBOL(lclear_user);
|
EXPORT_SYMBOL(lclear_user);
|
||||||
EXPORT_SYMBOL(lstrnlen_user);
|
EXPORT_SYMBOL(lstrnlen_user);
|
||||||
|
|
||||||
/* Global fixups - defined as int to avoid creation of function pointers */
|
|
||||||
extern int fixup_get_user_skip_1;
|
|
||||||
extern int fixup_get_user_skip_2;
|
|
||||||
extern int fixup_put_user_skip_1;
|
|
||||||
extern int fixup_put_user_skip_2;
|
|
||||||
EXPORT_SYMBOL(fixup_get_user_skip_1);
|
|
||||||
EXPORT_SYMBOL(fixup_get_user_skip_2);
|
|
||||||
EXPORT_SYMBOL(fixup_put_user_skip_1);
|
|
||||||
EXPORT_SYMBOL(fixup_put_user_skip_2);
|
|
||||||
|
|
||||||
#ifndef CONFIG_64BIT
|
#ifndef CONFIG_64BIT
|
||||||
/* Needed so insmod can set dp value */
|
/* Needed so insmod can set dp value */
|
||||||
extern int $global$;
|
extern int $global$;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue