Merge tag 'v5.7-rc2' into patchwork
Linux 5.7-rc2 * tag 'v5.7-rc2': (331 commits) Linux 5.7-rc2 mm: Fix MREMAP_DONTUNMAP accounting on VMA merge xattr.h: Replace zero-length array with flexible-array member uapi: linux: fiemap.h: Replace zero-length array with flexible-array member uapi: linux: dlm_device.h: Replace zero-length array with flexible-array member tpm_eventlog.h: Replace zero-length array with flexible-array member ti_wilink_st.h: Replace zero-length array with flexible-array member swap.h: Replace zero-length array with flexible-array member skbuff.h: Replace zero-length array with flexible-array member sched: topology.h: Replace zero-length array with flexible-array member rslib.h: Replace zero-length array with flexible-array member rio.h: Replace zero-length array with flexible-array member posix_acl.h: Replace zero-length array with flexible-array member platform_data: wilco-ec.h: Replace zero-length array with flexible-array member memcontrol.h: Replace zero-length array with flexible-array member list_lru.h: Replace zero-length array with flexible-array member lib: cpu_rmap: Replace zero-length array with flexible-array member irq.h: Replace zero-length array with flexible-array member ihex.h: Replace zero-length array with flexible-array member igmp.h: Replace zero-length array with flexible-array member ...
Šī revīzija ir iekļauta:
@@ -390,9 +390,17 @@ When ``kptr_restrict`` is set to 2, kernel pointers printed using
|
||||
modprobe
|
||||
========
|
||||
|
||||
This gives the full path of the modprobe command which the kernel will
|
||||
use to load modules. This can be used to debug module loading
|
||||
requests::
|
||||
The full path to the usermode helper for autoloading kernel modules,
|
||||
by default "/sbin/modprobe". This binary is executed when the kernel
|
||||
requests a module. For example, if userspace passes an unknown
|
||||
filesystem type to mount(), then the kernel will automatically request
|
||||
the corresponding filesystem module by executing this usermode helper.
|
||||
This usermode helper should insert the needed module into the kernel.
|
||||
|
||||
This sysctl only affects module autoloading. It has no effect on the
|
||||
ability to explicitly insert modules.
|
||||
|
||||
This sysctl can be used to debug module loading requests::
|
||||
|
||||
echo '#! /bin/sh' > /tmp/modprobe
|
||||
echo 'echo "$@" >> /tmp/modprobe.log' >> /tmp/modprobe
|
||||
@@ -400,10 +408,15 @@ requests::
|
||||
chmod a+x /tmp/modprobe
|
||||
echo /tmp/modprobe > /proc/sys/kernel/modprobe
|
||||
|
||||
This only applies when the *kernel* is requesting that the module be
|
||||
loaded; it won't have any effect if the module is being loaded
|
||||
explicitly using ``modprobe`` from userspace.
|
||||
Alternatively, if this sysctl is set to the empty string, then module
|
||||
autoloading is completely disabled. The kernel will not try to
|
||||
execute a usermode helper at all, nor will it call the
|
||||
kernel_module_request LSM hook.
|
||||
|
||||
If CONFIG_STATIC_USERMODEHELPER=y is set in the kernel configuration,
|
||||
then the configured static usermode helper overrides this sysctl,
|
||||
except that the empty string is still accepted to completely disable
|
||||
module autoloading as described above.
|
||||
|
||||
modules_disabled
|
||||
================
|
||||
@@ -446,28 +459,6 @@ Notes:
|
||||
successful IPC object allocation. If an IPC object allocation syscall
|
||||
fails, it is undefined if the value remains unmodified or is reset to -1.
|
||||
|
||||
modprobe:
|
||||
=========
|
||||
|
||||
The path to the usermode helper for autoloading kernel modules, by
|
||||
default "/sbin/modprobe". This binary is executed when the kernel
|
||||
requests a module. For example, if userspace passes an unknown
|
||||
filesystem type to mount(), then the kernel will automatically request
|
||||
the corresponding filesystem module by executing this usermode helper.
|
||||
This usermode helper should insert the needed module into the kernel.
|
||||
|
||||
This sysctl only affects module autoloading. It has no effect on the
|
||||
ability to explicitly insert modules.
|
||||
|
||||
If this sysctl is set to the empty string, then module autoloading is
|
||||
completely disabled. The kernel will not try to execute a usermode
|
||||
helper at all, nor will it call the kernel_module_request LSM hook.
|
||||
|
||||
If CONFIG_STATIC_USERMODEHELPER=y is set in the kernel configuration,
|
||||
then the configured static usermode helper overrides this sysctl,
|
||||
except that the empty string is still accepted to completely disable
|
||||
module autoloading as described above.
|
||||
|
||||
nmi_watchdog
|
||||
============
|
||||
|
||||
|
@@ -154,9 +154,9 @@ architectures. These are the recommended replacements:
|
||||
|
||||
Use ktime_get() or ktime_get_ts64() instead.
|
||||
|
||||
.. c:function:: struct timeval do_gettimeofday( void )
|
||||
struct timespec getnstimeofday( void )
|
||||
struct timespec64 getnstimeofday64( void )
|
||||
.. c:function:: void do_gettimeofday( struct timeval * )
|
||||
void getnstimeofday( struct timespec * )
|
||||
void getnstimeofday64( struct timespec64 * )
|
||||
void ktime_get_real_ts( struct timespec * )
|
||||
|
||||
ktime_get_real_ts64() is a direct replacement, but consider using
|
||||
|
@@ -42,6 +42,10 @@ properties:
|
||||
description:
|
||||
See section 2.3.9 of the DeviceTree Specification.
|
||||
|
||||
'#address-cells': true
|
||||
|
||||
'#size-cells': true
|
||||
|
||||
required:
|
||||
- "#interconnect-cells"
|
||||
- compatible
|
||||
@@ -59,6 +63,8 @@ examples:
|
||||
compatible = "allwinner,sun5i-a13-mbus";
|
||||
reg = <0x01c01000 0x1000>;
|
||||
clocks = <&ccu CLK_MBUS>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
dma-ranges = <0x00000000 0x40000000 0x20000000>;
|
||||
#interconnect-cells = <1>;
|
||||
};
|
||||
|
@@ -91,7 +91,7 @@ required:
|
||||
|
||||
examples:
|
||||
- |
|
||||
vco1: clock@00 {
|
||||
vco1: clock {
|
||||
compatible = "arm,impd1-vco1";
|
||||
#clock-cells = <0>;
|
||||
lock-offset = <0x08>;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Analog Device ADV7123 Video DAC
|
||||
-------------------------------
|
||||
Analog Devices ADV7123 Video DAC
|
||||
--------------------------------
|
||||
|
||||
The ADV7123 is a digital-to-analog converter that outputs VGA signals from a
|
||||
parallel video input.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Analog Device ADV7511(W)/13/33/35 HDMI Encoders
|
||||
-----------------------------------------
|
||||
Analog Devices ADV7511(W)/13/33/35 HDMI Encoders
|
||||
------------------------------------------------
|
||||
|
||||
The ADV7511, ADV7511W, ADV7513, ADV7533 and ADV7535 are HDMI audio and video
|
||||
transmitters compatible with HDMI 1.4 and DVI 1.0. They support color space
|
||||
|
@@ -1,4 +1,4 @@
|
||||
Analog Device AXI-DMAC DMA controller
|
||||
Analog Devices AXI-DMAC DMA controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Must be "adi,axi-dmac-1.00.a".
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# Copyright 2019 Analog Devices Inc.
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/hwmon/adi,axi-fan-control.yaml#
|
||||
$id: http://devicetree.org/schemas/hwmon/adi,axi-fan-control.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Analog Devices AXI FAN Control Device Tree Bindings
|
||||
@@ -47,7 +47,7 @@ required:
|
||||
|
||||
examples:
|
||||
- |
|
||||
fpga_axi: fpga-axi@0 {
|
||||
fpga_axi: fpga-axi {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x1>;
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/adt7475.yaml#
|
||||
$id: http://devicetree.org/schemas/hwmon/adt7475.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ADT7475 hwmon sensor
|
||||
|
@@ -1,4 +1,4 @@
|
||||
* Analog Device AD5755 IIO Multi-Channel DAC Linux Driver
|
||||
* Analog Devices AD5755 IIO Multi-Channel DAC Linux Driver
|
||||
|
||||
Required properties:
|
||||
- compatible: Has to contain one of the following:
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# Copyright 2020 Analog Devices Inc.
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/iio/dac/adi,ad5770r.yaml#
|
||||
$id: http://devicetree.org/schemas/iio/dac/adi,ad5770r.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Analog Devices AD5770R DAC device driver
|
||||
@@ -49,93 +49,86 @@ properties:
|
||||
asserted during driver probe.
|
||||
maxItems: 1
|
||||
|
||||
channel0:
|
||||
channel@0:
|
||||
description: Represents an external channel which are
|
||||
connected to the DAC. Channel 0 can act both as a current
|
||||
source and sink.
|
||||
type: object
|
||||
|
||||
properties:
|
||||
num:
|
||||
reg:
|
||||
description: This represents the channel number.
|
||||
items:
|
||||
const: 0
|
||||
const: 0
|
||||
|
||||
adi,range-microamp:
|
||||
description: Output range of the channel.
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/int32-array
|
||||
- items:
|
||||
- enum: [0 300000]
|
||||
- enum: [-60000 0]
|
||||
- enum: [-60000 300000]
|
||||
- const: 0
|
||||
- const: 300000
|
||||
- items:
|
||||
- const: -60000
|
||||
- const: 0
|
||||
- items:
|
||||
- const: -60000
|
||||
- const: 300000
|
||||
|
||||
channel1:
|
||||
channel@1:
|
||||
description: Represents an external channel which are
|
||||
connected to the DAC.
|
||||
type: object
|
||||
|
||||
properties:
|
||||
num:
|
||||
reg:
|
||||
description: This represents the channel number.
|
||||
items:
|
||||
const: 1
|
||||
const: 1
|
||||
|
||||
adi,range-microamp:
|
||||
description: Output range of the channel.
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
- items:
|
||||
- enum: [0 140000]
|
||||
- enum: [0 250000]
|
||||
items:
|
||||
- const: 0
|
||||
- enum: [ 140000, 250000 ]
|
||||
|
||||
channel2:
|
||||
channel@2:
|
||||
description: Represents an external channel which are
|
||||
connected to the DAC.
|
||||
type: object
|
||||
|
||||
properties:
|
||||
num:
|
||||
reg:
|
||||
description: This represents the channel number.
|
||||
items:
|
||||
const: 2
|
||||
const: 2
|
||||
|
||||
adi,range-microamp:
|
||||
description: Output range of the channel.
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
- items:
|
||||
- enum: [0 140000]
|
||||
- enum: [0 250000]
|
||||
items:
|
||||
- const: 0
|
||||
- enum: [ 55000, 150000 ]
|
||||
|
||||
patternProperties:
|
||||
"^channel@([3-5])$":
|
||||
type: object
|
||||
description: Represents the external channels which are connected to the DAC.
|
||||
properties:
|
||||
num:
|
||||
reg:
|
||||
description: This represents the channel number.
|
||||
items:
|
||||
minimum: 3
|
||||
maximum: 5
|
||||
minimum: 3
|
||||
maximum: 5
|
||||
|
||||
adi,range-microamp:
|
||||
description: Output range of the channel.
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
- items:
|
||||
- enum: [0 45000]
|
||||
- enum: [0 100000]
|
||||
items:
|
||||
- const: 0
|
||||
- enum: [ 45000, 100000 ]
|
||||
|
||||
required:
|
||||
- reg
|
||||
- diff-channels
|
||||
- channel0
|
||||
- channel1
|
||||
- channel2
|
||||
- channel3
|
||||
- channel4
|
||||
- channel5
|
||||
- channel@0
|
||||
- channel@1
|
||||
- channel@2
|
||||
- channel@3
|
||||
- channel@4
|
||||
- channel@5
|
||||
|
||||
examples:
|
||||
- |
|
||||
@@ -144,40 +137,42 @@ examples:
|
||||
#size-cells = <0>;
|
||||
|
||||
ad5770r@0 {
|
||||
compatible = "ad5770r";
|
||||
compatible = "adi,ad5770r";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
vref-supply = <&vref>;
|
||||
adi,external-resistor;
|
||||
reset-gpios = <&gpio 22 0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel@0 {
|
||||
num = <0>;
|
||||
adi,range-microamp = <(-60000) 300000>;
|
||||
reg = <0>;
|
||||
adi,range-microamp = <0 300000>;
|
||||
};
|
||||
|
||||
channel@1 {
|
||||
num = <1>;
|
||||
reg = <1>;
|
||||
adi,range-microamp = <0 140000>;
|
||||
};
|
||||
|
||||
channel@2 {
|
||||
num = <2>;
|
||||
reg = <2>;
|
||||
adi,range-microamp = <0 55000>;
|
||||
};
|
||||
|
||||
channel@3 {
|
||||
num = <3>;
|
||||
reg = <3>;
|
||||
adi,range-microamp = <0 45000>;
|
||||
};
|
||||
|
||||
channel@4 {
|
||||
num = <4>;
|
||||
reg = <4>;
|
||||
adi,range-microamp = <0 45000>;
|
||||
};
|
||||
|
||||
channel@5 {
|
||||
num = <5>;
|
||||
reg = <5>;
|
||||
adi,range-microamp = <0 45000>;
|
||||
};
|
||||
};
|
||||
|
@@ -109,7 +109,7 @@ examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c@00000000 {
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
edt-ft5x06@38 {
|
||||
|
@@ -56,9 +56,8 @@ properties:
|
||||
cell with zero.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
- items:
|
||||
minItems: 4
|
||||
maxItems: 4
|
||||
- minItems: 4
|
||||
maxItems: 4
|
||||
|
||||
|
||||
required:
|
||||
|
@@ -97,30 +97,35 @@ examples:
|
||||
#include <dt-bindings/clock/tegra186-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
memory-controller@2c00000 {
|
||||
compatible = "nvidia,tegra186-mc";
|
||||
reg = <0x0 0x02c00000 0x0 0xb0000>;
|
||||
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
bus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>;
|
||||
memory-controller@2c00000 {
|
||||
compatible = "nvidia,tegra186-mc";
|
||||
reg = <0x0 0x02c00000 0x0 0xb0000>;
|
||||
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
/*
|
||||
* Memory clients have access to all 40 bits that the memory
|
||||
* controller can address.
|
||||
*/
|
||||
dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
external-memory-controller@2c60000 {
|
||||
compatible = "nvidia,tegra186-emc";
|
||||
reg = <0x0 0x02c60000 0x0 0x50000>;
|
||||
interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&bpmp TEGRA186_CLK_EMC>;
|
||||
clock-names = "emc";
|
||||
ranges = <0x0 0x02c00000 0x0 0x02c00000 0x0 0xb0000>;
|
||||
|
||||
nvidia,bpmp = <&bpmp>;
|
||||
/*
|
||||
* Memory clients have access to all 40 bits that the memory
|
||||
* controller can address.
|
||||
*/
|
||||
dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
|
||||
|
||||
external-memory-controller@2c60000 {
|
||||
compatible = "nvidia,tegra186-emc";
|
||||
reg = <0x0 0x02c60000 0x0 0x50000>;
|
||||
interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&bpmp TEGRA186_CLK_EMC>;
|
||||
clock-names = "emc";
|
||||
|
||||
nvidia,bpmp = <&bpmp>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@@ -123,7 +123,9 @@ examples:
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c {
|
||||
pmic: pmic@4b {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71837";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
|
@@ -128,7 +128,9 @@ examples:
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c {
|
||||
pmic: pmic@4b {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71847";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
|
@@ -274,7 +274,7 @@ examples:
|
||||
- |
|
||||
#include <dt-bindings/mfd/st,stpmic1.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c@0 {
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pmic@33 {
|
||||
|
@@ -43,6 +43,9 @@ properties:
|
||||
second group of digits is the Phy Identifier 2 register,
|
||||
this is the chip vendor OUI bits 19:24, followed by 10
|
||||
bits of a vendor specific ID.
|
||||
- items:
|
||||
- pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"
|
||||
- const: ethernet-phy-ieee802.3-c22
|
||||
- items:
|
||||
- pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"
|
||||
- const: ethernet-phy-ieee802.3-c45
|
||||
|
@@ -22,6 +22,8 @@ Optional properties:
|
||||
- fsl,err006687-workaround-present: If present indicates that the system has
|
||||
the hardware workaround for ERR006687 applied and does not need a software
|
||||
workaround.
|
||||
- gpr: phandle of SoC general purpose register mode. Required for wake on LAN
|
||||
on some SoCs
|
||||
-interrupt-names: names of the interrupts listed in interrupts property in
|
||||
the same order. The defaults if not specified are
|
||||
__Number of interrupts__ __Default__
|
||||
|
@@ -48,6 +48,7 @@ examples:
|
||||
|
||||
switch@10 {
|
||||
compatible = "qca,qca8337";
|
||||
reg = <0x10>;
|
||||
/* ... */
|
||||
};
|
||||
};
|
||||
|
@@ -29,7 +29,7 @@ Required properties for compatible string qcom,wcn399x-bt:
|
||||
|
||||
Optional properties for compatible string qcom,wcn399x-bt:
|
||||
|
||||
- max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt
|
||||
- max-speed: see Documentation/devicetree/bindings/serial/serial.yaml
|
||||
- firmware-name: specify the name of nvm firmware to load
|
||||
- clocks: clock provided to the controller
|
||||
|
||||
|
@@ -146,7 +146,7 @@ patternProperties:
|
||||
bindings specified in
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-sierra.txt
|
||||
Torrent SERDES should follow the bindings specified in
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-dp.txt
|
||||
Documentation/devicetree/bindings/phy/phy-cadence-torrent.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
@@ -31,10 +31,17 @@ additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
cros_ec_pwm: ec-pwm {
|
||||
compatible = "google,cros-ec-pwm";
|
||||
#pwm-cells = <1>;
|
||||
spi {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
reg = <0>;
|
||||
|
||||
cros_ec_pwm: ec-pwm {
|
||||
compatible = "google,cros-ec-pwm";
|
||||
#pwm-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@@ -39,7 +39,7 @@ additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
rng {
|
||||
rng@7e104000 {
|
||||
compatible = "brcm,bcm2835-rng";
|
||||
reg = <0x7e104000 0x10>;
|
||||
interrupts = <2 29>;
|
||||
|
@@ -61,7 +61,7 @@ examples:
|
||||
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
soc: soc@0 {
|
||||
soc: soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
|
@@ -56,7 +56,7 @@ additionalProperties: false
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/jz4740-cgu.h>
|
||||
usb_phy: usb-phy@0 {
|
||||
usb_phy: usb-phy {
|
||||
compatible = "usb-nop-xceiv";
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
@@ -52,8 +52,8 @@ A child node must exist to represent the core DWC3 IP block. The name of
|
||||
the node is not important. The content of the node is defined in dwc3.txt.
|
||||
|
||||
Phy documentation is provided in the following places:
|
||||
Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY
|
||||
Documentation/devicetree/bindings/phy/qcom-qusb2-phy.txt - USB2 QUSB2 PHY
|
||||
Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY
|
||||
Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml - USB2 QUSB2 PHY
|
||||
|
||||
Example device nodes:
|
||||
|
||||
|
@@ -16,7 +16,7 @@ A child node must exist to represent the core DWC3 IP block. The name of
|
||||
the node is not important. The content of the node is defined in dwc3.txt.
|
||||
|
||||
Phy documentation is provided in the following places:
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt - USB2.0 PHY
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.yaml - USB2.0 PHY
|
||||
Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt - Type-C PHY
|
||||
|
||||
Example device nodes:
|
||||
|
@@ -16,7 +16,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68220
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl68220'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -26,7 +26,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68221
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl68221'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -36,7 +36,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68222
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl68222'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -46,7 +46,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68223
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl68223'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -56,7 +56,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68224
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl68224'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -66,7 +66,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68225
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl68225'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -76,7 +76,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68226
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl68226'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -86,7 +86,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68227
|
||||
|
||||
Prefix: 'raa_dmpvr2_1rail'
|
||||
Prefix: 'isl68227'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -96,7 +96,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68229
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl68229'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -106,7 +106,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68233
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl68233'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -116,7 +116,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL68239
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl68239'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -126,7 +126,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69222
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69222'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -136,7 +136,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69223
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl69223'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -146,7 +146,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69224
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69224'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -156,7 +156,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69225
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69225'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -166,7 +166,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69227
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl69227'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -176,7 +176,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69228
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl69228'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -186,7 +186,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69234
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69234'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -196,7 +196,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69236
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69236'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -206,7 +206,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69239
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl69239'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -216,7 +216,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69242
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69242'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -226,7 +226,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69243
|
||||
|
||||
Prefix: 'raa_dmpvr2_1rail'
|
||||
Prefix: 'isl69243'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -236,7 +236,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69247
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69247'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -246,7 +246,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69248
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69248'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -256,7 +256,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69254
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69254'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -266,7 +266,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69255
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69255'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -276,7 +276,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69256
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69256'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -286,7 +286,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69259
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69259'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -296,7 +296,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69260
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69260'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -306,7 +306,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69268
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69268'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -316,7 +316,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69269
|
||||
|
||||
Prefix: 'raa_dmpvr2_3rail'
|
||||
Prefix: 'isl69269'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -326,7 +326,7 @@ Supported chips:
|
||||
|
||||
* Renesas ISL69298
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'isl69298'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -336,7 +336,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA228000
|
||||
|
||||
Prefix: 'raa_dmpvr2_hv'
|
||||
Prefix: 'raa228000'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -346,7 +346,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA228004
|
||||
|
||||
Prefix: 'raa_dmpvr2_hv'
|
||||
Prefix: 'raa228004'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -356,7 +356,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA228006
|
||||
|
||||
Prefix: 'raa_dmpvr2_hv'
|
||||
Prefix: 'raa228006'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -366,7 +366,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA228228
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'raa228228'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -376,7 +376,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA229001
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'raa229001'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
@@ -386,7 +386,7 @@ Supported chips:
|
||||
|
||||
* Renesas RAA229004
|
||||
|
||||
Prefix: 'raa_dmpvr2_2rail'
|
||||
Prefix: 'raa229004'
|
||||
|
||||
Addresses scanned: -
|
||||
|
||||
|
@@ -257,6 +257,8 @@ drivers:
|
||||
* :doc:`netdevsim`
|
||||
* :doc:`mlxsw`
|
||||
|
||||
.. _Generic-Packet-Trap-Groups:
|
||||
|
||||
Generic Packet Trap Groups
|
||||
==========================
|
||||
|
||||
|
@@ -22,6 +22,7 @@ Contents:
|
||||
z8530book
|
||||
msg_zerocopy
|
||||
failover
|
||||
net_dim
|
||||
net_failover
|
||||
phy
|
||||
sfp-phylink
|
||||
|
@@ -812,7 +812,7 @@ tcp_limit_output_bytes - INTEGER
|
||||
tcp_challenge_ack_limit - INTEGER
|
||||
Limits number of Challenge ACK sent per second, as recommended
|
||||
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
|
||||
Default: 100
|
||||
Default: 1000
|
||||
|
||||
tcp_rx_skb_cache - BOOLEAN
|
||||
Controls a per TCP socket cache of one skb, that might help
|
||||
|
@@ -1,28 +1,20 @@
|
||||
======================================================
|
||||
Net DIM - Generic Network Dynamic Interrupt Moderation
|
||||
======================================================
|
||||
|
||||
Author:
|
||||
Tal Gilboa <talgi@mellanox.com>
|
||||
:Author: Tal Gilboa <talgi@mellanox.com>
|
||||
|
||||
.. contents:: :depth: 2
|
||||
|
||||
Contents
|
||||
=========
|
||||
|
||||
- Assumptions
|
||||
- Introduction
|
||||
- The Net DIM Algorithm
|
||||
- Registering a Network Device to DIM
|
||||
- Example
|
||||
|
||||
Part 0: Assumptions
|
||||
======================
|
||||
Assumptions
|
||||
===========
|
||||
|
||||
This document assumes the reader has basic knowledge in network drivers
|
||||
and in general interrupt moderation.
|
||||
|
||||
|
||||
Part I: Introduction
|
||||
======================
|
||||
Introduction
|
||||
============
|
||||
|
||||
Dynamic Interrupt Moderation (DIM) (in networking) refers to changing the
|
||||
interrupt moderation configuration of a channel in order to optimize packet
|
||||
@@ -41,14 +33,15 @@ number of wanted packets per event. The Net DIM algorithm ascribes importance to
|
||||
increase bandwidth over reducing interrupt rate.
|
||||
|
||||
|
||||
Part II: The Net DIM Algorithm
|
||||
===============================
|
||||
Net DIM Algorithm
|
||||
=================
|
||||
|
||||
Each iteration of the Net DIM algorithm follows these steps:
|
||||
1. Calculates new data sample.
|
||||
2. Compares it to previous sample.
|
||||
3. Makes a decision - suggests interrupt moderation configuration fields.
|
||||
4. Applies a schedule work function, which applies suggested configuration.
|
||||
|
||||
#. Calculates new data sample.
|
||||
#. Compares it to previous sample.
|
||||
#. Makes a decision - suggests interrupt moderation configuration fields.
|
||||
#. Applies a schedule work function, which applies suggested configuration.
|
||||
|
||||
The first two steps are straightforward, both the new and the previous data are
|
||||
supplied by the driver registered to Net DIM. The previous data is the new data
|
||||
@@ -89,19 +82,21 @@ manoeuvre as it may provide partial data or ignore the algorithm suggestion
|
||||
under some conditions.
|
||||
|
||||
|
||||
Part III: Registering a Network Device to DIM
|
||||
==============================================
|
||||
Registering a Network Device to DIM
|
||||
===================================
|
||||
|
||||
Net DIM API exposes the main function net_dim(struct dim *dim,
|
||||
struct dim_sample end_sample). This function is the entry point to the Net
|
||||
Net DIM API exposes the main function net_dim().
|
||||
This function is the entry point to the Net
|
||||
DIM algorithm and has to be called every time the driver would like to check if
|
||||
it should change interrupt moderation parameters. The driver should provide two
|
||||
data structures: struct dim and struct dim_sample. Struct dim
|
||||
data structures: :c:type:`struct dim <dim>` and
|
||||
:c:type:`struct dim_sample <dim_sample>`. :c:type:`struct dim <dim>`
|
||||
describes the state of DIM for a specific object (RX queue, TX queue,
|
||||
other queues, etc.). This includes the current selected profile, previous data
|
||||
samples, the callback function provided by the driver and more.
|
||||
Struct dim_sample describes a data sample, which will be compared to the
|
||||
data sample stored in struct dim in order to decide on the algorithm's next
|
||||
:c:type:`struct dim_sample <dim_sample>` describes a data sample,
|
||||
which will be compared to the data sample stored in :c:type:`struct dim <dim>`
|
||||
in order to decide on the algorithm's next
|
||||
step. The sample should include bytes, packets and interrupts, measured by
|
||||
the driver.
|
||||
|
||||
@@ -110,9 +105,10 @@ main net_dim() function. The recommended method is to call net_dim() on each
|
||||
interrupt. Since Net DIM has a built-in moderation and it might decide to skip
|
||||
iterations under certain conditions, there is no need to moderate the net_dim()
|
||||
calls as well. As mentioned above, the driver needs to provide an object of type
|
||||
struct dim to the net_dim() function call. It is advised for each entity
|
||||
using Net DIM to hold a struct dim as part of its data structure and use it
|
||||
as the main Net DIM API object. The struct dim_sample should hold the latest
|
||||
:c:type:`struct dim <dim>` to the net_dim() function call. It is advised for
|
||||
each entity using Net DIM to hold a :c:type:`struct dim <dim>` as part of its
|
||||
data structure and use it as the main Net DIM API object.
|
||||
The :c:type:`struct dim_sample <dim_sample>` should hold the latest
|
||||
bytes, packets and interrupts count. No need to perform any calculations, just
|
||||
include the raw data.
|
||||
|
||||
@@ -124,19 +120,19 @@ the data flow. After the work is done, Net DIM algorithm needs to be set to
|
||||
the proper state in order to move to the next iteration.
|
||||
|
||||
|
||||
Part IV: Example
|
||||
=================
|
||||
Example
|
||||
=======
|
||||
|
||||
The following code demonstrates how to register a driver to Net DIM. The actual
|
||||
usage is not complete but it should make the outline of the usage clear.
|
||||
|
||||
my_driver.c:
|
||||
.. code-block:: c
|
||||
|
||||
#include <linux/dim.h>
|
||||
#include <linux/dim.h>
|
||||
|
||||
/* Callback for net DIM to schedule on a decision to change moderation */
|
||||
void my_driver_do_dim_work(struct work_struct *work)
|
||||
{
|
||||
/* Callback for net DIM to schedule on a decision to change moderation */
|
||||
void my_driver_do_dim_work(struct work_struct *work)
|
||||
{
|
||||
/* Get struct dim from struct work_struct */
|
||||
struct dim *dim = container_of(work, struct dim,
|
||||
work);
|
||||
@@ -145,11 +141,11 @@ void my_driver_do_dim_work(struct work_struct *work)
|
||||
|
||||
/* Signal net DIM work is done and it should move to next iteration */
|
||||
dim->state = DIM_START_MEASURE;
|
||||
}
|
||||
}
|
||||
|
||||
/* My driver's interrupt handler */
|
||||
int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...)
|
||||
{
|
||||
/* My driver's interrupt handler */
|
||||
int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...)
|
||||
{
|
||||
...
|
||||
/* A struct to hold current measured data */
|
||||
struct dim_sample dim_sample;
|
||||
@@ -162,13 +158,19 @@ int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...)
|
||||
/* Call net DIM */
|
||||
net_dim(&my_entity->dim, dim_sample);
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
/* My entity's initialization function (my_entity was already allocated) */
|
||||
int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...)
|
||||
{
|
||||
/* My entity's initialization function (my_entity was already allocated) */
|
||||
int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...)
|
||||
{
|
||||
...
|
||||
/* Initiate struct work_struct with my driver's callback function */
|
||||
INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work);
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
Dynamic Interrupt Moderation (DIM) library API
|
||||
==============================================
|
||||
|
||||
.. kernel-doc:: include/linux/dim.h
|
||||
:internal:
|
@@ -1399,8 +1399,8 @@ must have read/write permission; CS must be __BOOT_CS and DS, ES, SS
|
||||
must be __BOOT_DS; interrupt must be disabled; %rsi must hold the base
|
||||
address of the struct boot_params.
|
||||
|
||||
EFI Handover Protocol
|
||||
=====================
|
||||
EFI Handover Protocol (deprecated)
|
||||
==================================
|
||||
|
||||
This protocol allows boot loaders to defer initialisation to the EFI
|
||||
boot stub. The boot loader is required to load the kernel/initrd(s)
|
||||
@@ -1408,6 +1408,12 @@ from the boot media and jump to the EFI handover protocol entry point
|
||||
which is hdr->handover_offset bytes from the beginning of
|
||||
startup_{32,64}.
|
||||
|
||||
The boot loader MUST respect the kernel's PE/COFF metadata when it comes
|
||||
to section alignment, the memory footprint of the executable image beyond
|
||||
the size of the file itself, and any other aspect of the PE/COFF header
|
||||
that may affect correct operation of the image as a PE/COFF binary in the
|
||||
execution context provided by the EFI firmware.
|
||||
|
||||
The function prototype for the handover entry point looks like this::
|
||||
|
||||
efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp)
|
||||
@@ -1419,9 +1425,18 @@ UEFI specification. 'bp' is the boot loader-allocated boot params.
|
||||
|
||||
The boot loader *must* fill out the following fields in bp::
|
||||
|
||||
- hdr.code32_start
|
||||
- hdr.cmd_line_ptr
|
||||
- hdr.ramdisk_image (if applicable)
|
||||
- hdr.ramdisk_size (if applicable)
|
||||
|
||||
All other fields should be zero.
|
||||
|
||||
NOTE: The EFI Handover Protocol is deprecated in favour of the ordinary PE/COFF
|
||||
entry point, combined with the LINUX_EFI_INITRD_MEDIA_GUID based initrd
|
||||
loading protocol (refer to [0] for an example of the bootloader side of
|
||||
this), which removes the need for any knowledge on the part of the EFI
|
||||
bootloader regarding the internal representation of boot_params or any
|
||||
requirements/limitations regarding the placement of the command line
|
||||
and ramdisk in memory, or the placement of the kernel image itself.
|
||||
|
||||
[0] https://github.com/u-boot/u-boot/commit/ec80b4735a593961fe701cc3a5d717d4739b0fd0
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user