Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

No conflicts.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2022-01-27 12:54:16 -08:00
commit 72d044e4bf
746 changed files with 11404 additions and 8003 deletions

View File

@ -92,7 +92,8 @@ Triggers can be set on more than one psi metric and more than one trigger
for the same psi metric can be specified. However for each trigger a separate for the same psi metric can be specified. However for each trigger a separate
file descriptor is required to be able to poll it separately from others, file descriptor is required to be able to poll it separately from others,
therefore for each trigger a separate open() syscall should be made even therefore for each trigger a separate open() syscall should be made even
when opening the same psi interface file. when opening the same psi interface file. Write operations to a file descriptor
with an already existing psi trigger will fail with EBUSY.
Monitors activate only when system enters stall state for the monitored Monitors activate only when system enters stall state for the monitored
psi metric and deactivates upon exit from the stall state. While system is psi metric and deactivates upon exit from the stall state. While system is

View File

@ -7,7 +7,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analogix ANX7814 SlimPort (Full-HD Transmitter) title: Analogix ANX7814 SlimPort (Full-HD Transmitter)
maintainers: maintainers:
- Enric Balletbo i Serra <enric.balletbo@collabora.com> - Andrzej Hajda <andrzej.hajda@intel.com>
- Neil Armstrong <narmstrong@baylibre.com>
- Robert Foss <robert.foss@linaro.org>
properties: properties:
compatible: compatible:

View File

@ -8,7 +8,6 @@ title: ChromeOS EC ANX7688 HDMI to DP Converter through Type-C Port
maintainers: maintainers:
- Nicolas Boichat <drinkcat@chromium.org> - Nicolas Boichat <drinkcat@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
ChromeOS EC ANX7688 is a display bridge that converts HDMI 2.0 to ChromeOS EC ANX7688 is a display bridge that converts HDMI 2.0 to

View File

@ -8,7 +8,6 @@ title: MIPI DSI to eDP Video Format Converter Device Tree Bindings
maintainers: maintainers:
- Nicolas Boichat <drinkcat@chromium.org> - Nicolas Boichat <drinkcat@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
The PS8640 is a low power MIPI-to-eDP video format converter supporting The PS8640 is a low power MIPI-to-eDP video format converter supporting

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Asia Better Technology 3.0" (320x480 pixels) 24-bit IPS LCD panel title: Asia Better Technology 3.0" (320x480 pixels) 24-bit IPS LCD panel
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Paul Cercueil <paul@crapouillou.net> - Paul Cercueil <paul@crapouillou.net>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -15,11 +15,9 @@ description: |
960 TFT source driver pins and 240 TFT gate driver pins, VCOM, VCOML and 960 TFT source driver pins and 240 TFT gate driver pins, VCOM, VCOML and
VCOMH outputs. VCOMH outputs.
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Innolux EJ030NA 3.0" (320x480 pixels) 24-bit TFT LCD panel title: Innolux EJ030NA 3.0" (320x480 pixels) 24-bit TFT LCD panel
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Paul Cercueil <paul@crapouillou.net> - Paul Cercueil <paul@crapouillou.net>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: King Display KD035G6-54NT 3.5" (320x240 pixels) 24-bit TFT LCD panel title: King Display KD035G6-54NT 3.5" (320x240 pixels) 24-bit TFT LCD panel
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Paul Cercueil <paul@crapouillou.net> - Paul Cercueil <paul@crapouillou.net>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: LG.Philips LB035Q02 Panel title: LG.Philips LB035Q02 Panel
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Tomi Valkeinen <tomi.valkeinen@ti.com> - Tomi Valkeinen <tomi.valkeinen@ti.com>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung LD9040 AMOLED LCD parallel RGB panel with SPI control bus title: Samsung LD9040 AMOLED LCD parallel RGB panel with SPI control bus
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Andrzej Hajda <a.hajda@samsung.com> - Andrzej Hajda <a.hajda@samsung.com>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:
@ -63,8 +60,6 @@ examples:
lcd@0 { lcd@0 {
compatible = "samsung,ld9040"; compatible = "samsung,ld9040";
#address-cells = <1>;
#size-cells = <0>;
reg = <0>; reg = <0>;
vdd3-supply = <&ldo7_reg>; vdd3-supply = <&ldo7_reg>;

View File

@ -12,6 +12,7 @@ maintainers:
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/leds/backlight/common.yaml# - $ref: /schemas/leds/backlight/common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sitronix ST7789V RGB panel with SPI control bus title: Sitronix ST7789V RGB panel with SPI control bus
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Maxime Ripard <mripard@kernel.org> - Maxime Ripard <mripard@kernel.org>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,15 +6,12 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sony ACX565AKM SDI Panel title: Sony ACX565AKM SDI Panel
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Tomi Valkeinen <tomi.valkeinen@ti.com> - Tomi Valkeinen <tomi.valkeinen@ti.com>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -6,16 +6,13 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Toppoly TD Panels title: Toppoly TD Panels
description: |
The panel must obey the rules for a SPI slave device as specified in
spi/spi-controller.yaml
maintainers: maintainers:
- Marek Belisko <marek@goldelico.com> - Marek Belisko <marek@goldelico.com>
- H. Nikolaus Schaller <hns@goldelico.com> - H. Nikolaus Schaller <hns@goldelico.com>
allOf: allOf:
- $ref: panel-common.yaml# - $ref: panel-common.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
properties: properties:
compatible: compatible:

View File

@ -26,14 +26,6 @@ properties:
clock-names: clock-names:
const: hclk const: hclk
pinctrl-0:
maxItems: 2
pinctrl-names:
const: default
description:
Switch the iomux for the HPD/I2C pins to HDMI function.
power-domains: power-domains:
maxItems: 1 maxItems: 1

View File

@ -8,7 +8,6 @@ title: ChromeOS EC USB Type-C cable and accessories detection
maintainers: maintainers:
- Benson Leung <bleung@chromium.org> - Benson Leung <bleung@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
On ChromeOS systems with USB Type C ports, the ChromeOS Embedded Controller is On ChromeOS systems with USB Type C ports, the ChromeOS Embedded Controller is

View File

@ -10,7 +10,6 @@ title: I2C bus that tunnels through the ChromeOS EC (cros-ec)
maintainers: maintainers:
- Doug Anderson <dianders@chromium.org> - Doug Anderson <dianders@chromium.org>
- Benson Leung <bleung@chromium.org> - Benson Leung <bleung@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
On some ChromeOS board designs we've got a connection to the EC On some ChromeOS board designs we've got a connection to the EC

View File

@ -10,7 +10,6 @@ title: ChromeOS EC MKBP Proximity Sensor
maintainers: maintainers:
- Stephen Boyd <swboyd@chromium.org> - Stephen Boyd <swboyd@chromium.org>
- Benson Leung <bleung@chromium.org> - Benson Leung <bleung@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
Google's ChromeOS EC sometimes has the ability to detect user proximity. Google's ChromeOS EC sometimes has the ability to detect user proximity.

View File

@ -10,7 +10,6 @@ title: ChromeOS EC Keyboard
maintainers: maintainers:
- Simon Glass <sjg@chromium.org> - Simon Glass <sjg@chromium.org>
- Benson Leung <bleung@chromium.org> - Benson Leung <bleung@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
description: | description: |
Google's ChromeOS EC Keyboard is a simple matrix keyboard Google's ChromeOS EC Keyboard is a simple matrix keyboard

View File

@ -88,12 +88,6 @@ patternProperties:
which can be disabled to suppress events from the button. which can be disabled to suppress events from the button.
type: boolean type: boolean
pinctrl-0:
maxItems: 1
pinctrl-names:
maxItems: 1
required: required:
- linux,code - linux,code

View File

@ -81,14 +81,12 @@ properties:
data-lanes: data-lanes:
description: description:
Note that 'fsl,imx7-mipi-csi2' only supports up to 2 data lines. Note that 'fsl,imx7-mipi-csi2' only supports up to 2 data lines.
minItems: 1
items: items:
minItems: 1 - const: 1
maxItems: 4 - const: 2
items: - const: 3
- const: 1 - const: 4
- const: 2
- const: 3
- const: 4
required: required:
- data-lanes - data-lanes

View File

@ -87,14 +87,12 @@ properties:
properties: properties:
data-lanes: data-lanes:
minItems: 1
items: items:
minItems: 1 - const: 1
maxItems: 4 - const: 2
items: - const: 3
- const: 1 - const: 4
- const: 2
- const: 3
- const: 4
required: required:
- data-lanes - data-lanes

View File

@ -245,8 +245,7 @@ examples:
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupts = <&host_irq1>; interrupts = <4 1 0>;
interrupt-parent = <&gic>;
gpio-controller; gpio-controller;
#gpio-cells = <2>; #gpio-cells = <2>;

View File

@ -8,7 +8,6 @@ title: ChromeOS Embedded Controller
maintainers: maintainers:
- Benson Leung <bleung@chromium.org> - Benson Leung <bleung@chromium.org>
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
- Guenter Roeck <groeck@chromium.org> - Guenter Roeck <groeck@chromium.org>
description: description:

View File

@ -185,6 +185,9 @@ examples:
clock-names = "mclk", "apb_pclk"; clock-names = "mclk", "apb_pclk";
}; };
- |
#include <dt-bindings/interrupt-controller/irq.h>
mmc@80126000 { mmc@80126000 {
compatible = "arm,pl18x", "arm,primecell"; compatible = "arm,pl18x", "arm,primecell";
reg = <0x80126000 0x1000>; reg = <0x80126000 0x1000>;
@ -206,12 +209,12 @@ examples:
vqmmc-supply = <&vmmci>; vqmmc-supply = <&vmmci>;
}; };
- |
mmc@101f6000 { mmc@101f6000 {
compatible = "arm,pl18x", "arm,primecell"; compatible = "arm,pl18x", "arm,primecell";
reg = <0x101f6000 0x1000>; reg = <0x101f6000 0x1000>;
clocks = <&sdiclk>, <&pclksdi>; clocks = <&sdiclk>, <&pclksdi>;
clock-names = "mclk", "apb_pclk"; clock-names = "mclk", "apb_pclk";
interrupt-parent = <&vica>;
interrupts = <22>; interrupts = <22>;
max-frequency = <400000>; max-frequency = <400000>;
bus-width = <4>; bus-width = <4>;
@ -226,6 +229,7 @@ examples:
vmmc-supply = <&vmmc_regulator>; vmmc-supply = <&vmmc_regulator>;
}; };
- |
mmc@52007000 { mmc@52007000 {
compatible = "arm,pl18x", "arm,primecell"; compatible = "arm,pl18x", "arm,primecell";
arm,primecell-periphid = <0x10153180>; arm,primecell-periphid = <0x10153180>;

View File

@ -76,33 +76,31 @@ properties:
M_CAN user manual for details. M_CAN user manual for details.
$ref: /schemas/types.yaml#/definitions/int32-array $ref: /schemas/types.yaml#/definitions/int32-array
items: items:
items: - description: The 'offset' is an address offset of the Message RAM where
- description: The 'offset' is an address offset of the Message RAM where the following elements start from. This is usually set to 0x0 if
the following elements start from. This is usually set to 0x0 if you're using a private Message RAM.
you're using a private Message RAM. default: 0
default: 0 - description: 11-bit Filter 0-128 elements / 0-128 words
- description: 11-bit Filter 0-128 elements / 0-128 words minimum: 0
minimum: 0 maximum: 128
maximum: 128 - description: 29-bit Filter 0-64 elements / 0-128 words
- description: 29-bit Filter 0-64 elements / 0-128 words minimum: 0
minimum: 0 maximum: 64
maximum: 64 - description: Rx FIFO 0 0-64 elements / 0-1152 words
- description: Rx FIFO 0 0-64 elements / 0-1152 words minimum: 0
minimum: 0 maximum: 64
maximum: 64 - description: Rx FIFO 1 0-64 elements / 0-1152 words
- description: Rx FIFO 1 0-64 elements / 0-1152 words minimum: 0
minimum: 0 maximum: 64
maximum: 64 - description: Rx Buffers 0-64 elements / 0-1152 words
- description: Rx Buffers 0-64 elements / 0-1152 words minimum: 0
minimum: 0 maximum: 64
maximum: 64 - description: Tx Event FIFO 0-32 elements / 0-64 words
- description: Tx Event FIFO 0-32 elements / 0-64 words minimum: 0
minimum: 0 maximum: 32
maximum: 32 - description: Tx Buffers 0-32 elements / 0-576 words
- description: Tx Buffers 0-32 elements / 0-576 words minimum: 0
minimum: 0 maximum: 32
maximum: 32
maxItems: 1
power-domains: power-domains:
description: description:

View File

@ -17,9 +17,8 @@ properties:
description: description:
Specifies the MAC address that was assigned to the network device. Specifies the MAC address that was assigned to the network device.
$ref: /schemas/types.yaml#/definitions/uint8-array $ref: /schemas/types.yaml#/definitions/uint8-array
items: minItems: 6
- minItems: 6 maxItems: 6
maxItems: 6
mac-address: mac-address:
description: description:
@ -28,9 +27,8 @@ properties:
to the device by the boot program is different from the to the device by the boot program is different from the
local-mac-address property. local-mac-address property.
$ref: /schemas/types.yaml#/definitions/uint8-array $ref: /schemas/types.yaml#/definitions/uint8-array
items: minItems: 6
- minItems: 6 maxItems: 6
maxItems: 6
max-frame-size: max-frame-size:
$ref: /schemas/types.yaml#/definitions/uint32 $ref: /schemas/types.yaml#/definitions/uint32
@ -164,33 +162,30 @@ properties:
type: array type: array
then: then:
deprecated: true deprecated: true
minItems: 1
maxItems: 1
items: items:
items: - minimum: 0
- minimum: 0 maximum: 31
maximum: 31 description:
description: Emulated PHY ID, choose any but unique to the all
Emulated PHY ID, choose any but unique to the all specified fixed-links
specified fixed-links
- enum: [0, 1] - enum: [0, 1]
description: description:
Duplex configuration. 0 for half duplex or 1 for Duplex configuration. 0 for half duplex or 1 for
full duplex full duplex
- enum: [10, 100, 1000, 2500, 10000] - enum: [10, 100, 1000, 2500, 10000]
description: description:
Link speed in Mbits/sec. Link speed in Mbits/sec.
- enum: [0, 1] - enum: [0, 1]
description: description:
Pause configuration. 0 for no pause, 1 for pause Pause configuration. 0 for no pause, 1 for pause
- enum: [0, 1] - enum: [0, 1]
description: description:
Asymmetric pause configuration. 0 for no asymmetric Asymmetric pause configuration. 0 for no asymmetric
pause, 1 for asymmetric pause pause, 1 for asymmetric pause
- if: - if:

View File

@ -50,16 +50,15 @@ patternProperties:
Offset and size in bytes within the storage device. Offset and size in bytes within the storage device.
bits: bits:
maxItems: 1 $ref: /schemas/types.yaml#/definitions/uint32-array
items: items:
items: - minimum: 0
- minimum: 0 maximum: 7
maximum: 7 description:
description: Offset in bit within the address range specified by reg.
Offset in bit within the address range specified by reg. - minimum: 1
- minimum: 1 description:
description: Size in bit within the address range specified by reg.
Size in bit within the address range specified by reg.
required: required:
- reg - reg

View File

@ -51,15 +51,6 @@ properties:
appropriate of the LOCHNAGARx_PIN_NUM_GPIOS define, see [3]. appropriate of the LOCHNAGARx_PIN_NUM_GPIOS define, see [3].
maxItems: 1 maxItems: 1
pinctrl-0:
description:
A phandle to the default pinctrl state.
pinctrl-names:
description:
A pinctrl state named "default" must be defined.
const: default
pin-settings: pin-settings:
type: object type: object
patternProperties: patternProperties:

View File

@ -30,16 +30,6 @@ description: |
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
properties: properties:
pinctrl-0:
description:
A phandle to the node containing the subnodes containing default
configurations.
pinctrl-names:
description:
A pinctrl state named "default" must be defined.
const: default
pin-settings: pin-settings:
description: description:
One subnode is required to contain the default settings. It One subnode is required to contain the default settings. It

View File

@ -43,7 +43,7 @@ properties:
priority: priority:
$ref: /schemas/types.yaml#/definitions/uint32 $ref: /schemas/types.yaml#/definitions/uint32
description: | description: |
A priority ranging from 0 to 255 (default 128) according to the following guidelines: A priority ranging from 0 to 255 (default 129) according to the following guidelines:
0: Restart handler of last resort, with limited restart capabilities. 0: Restart handler of last resort, with limited restart capabilities.
128: Default restart handler; use if no other restart handler is expected to be available, 128: Default restart handler; use if no other restart handler is expected to be available,
@ -51,7 +51,7 @@ properties:
255: Highest priority restart handler, will preempt all other restart handlers. 255: Highest priority restart handler, will preempt all other restart handlers.
minimum: 0 minimum: 0
maximum: 255 maximum: 255
default: 128 default: 129
active-delay: active-delay:
$ref: /schemas/types.yaml#/definitions/uint32 $ref: /schemas/types.yaml#/definitions/uint32

View File

@ -9,6 +9,8 @@ title: PWM controllers (providers)
maintainers: maintainers:
- Thierry Reding <thierry.reding@gmail.com> - Thierry Reding <thierry.reding@gmail.com>
select: false
properties: properties:
$nodename: $nodename:
pattern: "^pwm(@.*|-[0-9a-f])*$" pattern: "^pwm(@.*|-[0-9a-f])*$"

View File

@ -15,6 +15,7 @@ allOf:
properties: properties:
compatible: compatible:
enum: enum:
- epson,rx8804
- epson,rx8900 - epson,rx8900
- microcrystal,rv8803 - microcrystal,rv8803

View File

@ -19,7 +19,14 @@ properties:
- qcom,pmk8350-rtc - qcom,pmk8350-rtc
reg: reg:
maxItems: 1 minItems: 1
maxItems: 2
reg-names:
minItems: 1
items:
- const: rtc
- const: alarm
interrupts: interrupts:
maxItems: 1 maxItems: 1

View File

@ -127,6 +127,7 @@ examples:
st,syscfg = <&pwrcfg 0x00 0x100>; st,syscfg = <&pwrcfg 0x00 0x100>;
}; };
- |
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/stm32mp1-clks.h> #include <dt-bindings/clock/stm32mp1-clks.h>
rtc@5c004000 { rtc@5c004000 {

View File

@ -0,0 +1,56 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) Sunplus Co., Ltd. 2021
%YAML 1.2
---
$id: http://devicetree.org/schemas/rtc/sunplus,sp7021-rtc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sunplus SP7021 Real Time Clock controller
maintainers:
- Vincent Shih <vincent.sunplus@gmail.com>
properties:
compatible:
const: sunplus,sp7021-rtc
reg:
maxItems: 1
reg-names:
items:
- const: rtc
clocks:
maxItems: 1
resets:
maxItems: 1
interrupts:
maxItems: 1
required:
- compatible
- reg
- reg-names
- clocks
- resets
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
rtc: serial@9c003a00 {
compatible = "sunplus,sp7021-rtc";
reg = <0x9c003a00 0x80>;
reg-names = "rtc";
clocks = <&clkc 0x12>;
resets = <&rstc 0x02>;
interrupt-parent = <&intc>;
interrupts = <163 IRQ_TYPE_EDGE_RISING>;
};
...

View File

@ -110,12 +110,6 @@ properties:
Internal DMA register base address of the audio Internal DMA register base address of the audio
subsystem (used in secondary sound source). subsystem (used in secondary sound source).
pinctrl-0:
description: Should specify pin control groups used for this controller.
pinctrl-names:
const: default
power-domains: power-domains:
maxItems: 1 maxItems: 1

View File

@ -31,7 +31,7 @@ properties:
- enum: - enum:
# SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin # SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin
- ad,ad7414 - ad,ad7414
# ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems # ADM9240: Complete System Hardware Monitor for uProcessor-Based Systems
- ad,adm9240 - ad,adm9240
# AD5110 - Nonvolatile Digital Potentiometer # AD5110 - Nonvolatile Digital Potentiometer
- adi,ad5110 - adi,ad5110
@ -43,7 +43,7 @@ properties:
- adi,adp5589 - adi,adp5589
# AMS iAQ-Core VOC Sensor # AMS iAQ-Core VOC Sensor
- ams,iaq-core - ams,iaq-core
# i2c serial eeprom (24cxx) # i2c serial eeprom (24cxx)
- at,24c08 - at,24c08
# i2c trusted platform module (TPM) # i2c trusted platform module (TPM)
- atmel,at97sc3204t - atmel,at97sc3204t
@ -303,9 +303,9 @@ properties:
- skyworks,sky81452 - skyworks,sky81452
# Socionext SynQuacer TPM MMIO module # Socionext SynQuacer TPM MMIO module
- socionext,synquacer-tpm-mmio - socionext,synquacer-tpm-mmio
# i2c serial eeprom (24cxx)
- sparkfun,qwiic-joystick
# SparkFun Qwiic Joystick (COM-15168) with i2c interface # SparkFun Qwiic Joystick (COM-15168) with i2c interface
- sparkfun,qwiic-joystick
# i2c serial eeprom (24cxx)
- st,24c256 - st,24c256
# Ambient Light Sensor with SMBUS/Two Wire Serial Interface # Ambient Light Sensor with SMBUS/Two Wire Serial Interface
- taos,tsl2550 - taos,tsl2550

View File

@ -25,6 +25,8 @@ patternProperties:
# Keep list in alphabetical order. # Keep list in alphabetical order.
"^70mai,.*": "^70mai,.*":
description: 70mai Co., Ltd. description: 70mai Co., Ltd.
"^8dev,.*":
description: 8devices, UAB
"^abb,.*": "^abb,.*":
description: ABB description: ABB
"^abilis,.*": "^abilis,.*":
@ -441,6 +443,8 @@ patternProperties:
description: Freescale Semiconductor description: Freescale Semiconductor
"^fujitsu,.*": "^fujitsu,.*":
description: Fujitsu Ltd. description: Fujitsu Ltd.
"^fxtec,.*":
description: FX Technology Ltd.
"^gardena,.*": "^gardena,.*":
description: GARDENA GmbH description: GARDENA GmbH
"^gateworks,.*": "^gateworks,.*":
@ -515,6 +519,8 @@ patternProperties:
description: HannStar Display Co. description: HannStar Display Co.
"^holtek,.*": "^holtek,.*":
description: Holtek Semiconductor, Inc. description: Holtek Semiconductor, Inc.
"^huawei,.*":
description: Huawei Technologies Co., Ltd.
"^hugsun,.*": "^hugsun,.*":
description: Shenzhen Hugsun Technology Co. Ltd. description: Shenzhen Hugsun Technology Co. Ltd.
"^hwacom,.*": "^hwacom,.*":
@ -1207,6 +1213,8 @@ patternProperties:
description: THine Electronics, Inc. description: THine Electronics, Inc.
"^thingyjp,.*": "^thingyjp,.*":
description: thingy.jp description: thingy.jp
"^thundercomm,.*":
description: Thundercomm Technology Co., Ltd.
"^ti,.*": "^ti,.*":
description: Texas Instruments description: Texas Instruments
"^tianma,.*": "^tianma,.*":
@ -1334,6 +1342,8 @@ patternProperties:
description: Wiligear, Ltd. description: Wiligear, Ltd.
"^winbond,.*": "^winbond,.*":
description: Winbond Electronics corp. description: Winbond Electronics corp.
"^wingtech,.*":
description: Wingtech Technology Co., Ltd.
"^winlink,.*": "^winlink,.*":
description: WinLink Co., Ltd description: WinLink Co., Ltd
"^winstar,.*": "^winstar,.*":

View File

@ -19,7 +19,7 @@ of kernel interfaces is available via exported symbols in `firewire-core` module
Firewire char device data structures Firewire char device data structures
==================================== ====================================
.. include:: /ABI/stable/firewire-cdev .. include:: ../ABI/stable/firewire-cdev
:literal: :literal:
.. kernel-doc:: include/uapi/linux/firewire-cdev.h .. kernel-doc:: include/uapi/linux/firewire-cdev.h
@ -28,7 +28,7 @@ Firewire char device data structures
Firewire device probing and sysfs interfaces Firewire device probing and sysfs interfaces
============================================ ============================================
.. include:: /ABI/stable/sysfs-bus-firewire .. include:: ../ABI/stable/sysfs-bus-firewire
:literal: :literal:
.. kernel-doc:: drivers/firewire/core-device.c .. kernel-doc:: drivers/firewire/core-device.c

View File

@ -82,7 +82,7 @@ Mount Syntax
The basic mount syntax is:: The basic mount syntax is::
# mount -t ceph monip[:port][,monip2[:port]...]:/[subdir] mnt # mount -t ceph user@fsid.fs_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
You only need to specify a single monitor, as the client will get the You only need to specify a single monitor, as the client will get the
full list when it connects. (However, if the monitor you specify full list when it connects. (However, if the monitor you specify
@ -90,16 +90,35 @@ happens to be down, the mount won't succeed.) The port can be left
off if the monitor is using the default. So if the monitor is at off if the monitor is using the default. So if the monitor is at
1.2.3.4:: 1.2.3.4::
# mount -t ceph 1.2.3.4:/ /mnt/ceph # mount -t ceph cephuser@07fe3187-00d9-42a3-814b-72a4d5e7d5be.cephfs=/ /mnt/ceph -o mon_addr=1.2.3.4
is sufficient. If /sbin/mount.ceph is installed, a hostname can be is sufficient. If /sbin/mount.ceph is installed, a hostname can be
used instead of an IP address. used instead of an IP address and the cluster FSID can be left out
(as the mount helper will fill it in by reading the ceph configuration
file)::
# mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=mon-addr
Multiple monitor addresses can be passed by separating each address with a slash (`/`)::
# mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=192.168.1.100/192.168.1.101
When using the mount helper, monitor address can be read from ceph
configuration file if available. Note that, the cluster FSID (passed as part
of the device string) is validated by checking it with the FSID reported by
the monitor.
Mount Options Mount Options
============= =============
mon_addr=ip_address[:port][/ip_address[:port]]
Monitor address to the cluster. This is used to bootstrap the
connection to the cluster. Once connection is established, the
monitor addresses in the monitor map are followed.
fsid=cluster-id
FSID of the cluster (from `ceph fsid` command).
ip=A.B.C.D[:N] ip=A.B.C.D[:N]
Specify the IP and/or port the client should bind to locally. Specify the IP and/or port the client should bind to locally.
There is normally not much reason to do this. If the IP is not There is normally not much reason to do this. If the IP is not

View File

@ -47,12 +47,12 @@ RISC-V Linux Kernel SV39
| Kernel-space virtual memory, shared between all processes: | Kernel-space virtual memory, shared between all processes:
____________________________________________________________|___________________________________________________________ ____________________________________________________________|___________________________________________________________
| | | | | | | |
ffffffc000000000 | -256 GB | ffffffc7ffffffff | 32 GB | kasan ffffffc6fee00000 | -228 GB | ffffffc6feffffff | 2 MB | fixmap
ffffffcefee00000 | -196 GB | ffffffcefeffffff | 2 MB | fixmap ffffffc6ff000000 | -228 GB | ffffffc6ffffffff | 16 MB | PCI io
ffffffceff000000 | -196 GB | ffffffceffffffff | 16 MB | PCI io ffffffc700000000 | -228 GB | ffffffc7ffffffff | 4 GB | vmemmap
ffffffcf00000000 | -196 GB | ffffffcfffffffff | 4 GB | vmemmap ffffffc800000000 | -224 GB | ffffffd7ffffffff | 64 GB | vmalloc/ioremap space
ffffffd000000000 | -192 GB | ffffffdfffffffff | 64 GB | vmalloc/ioremap space ffffffd800000000 | -160 GB | fffffff6ffffffff | 124 GB | direct mapping of all physical memory
ffffffe000000000 | -128 GB | ffffffff7fffffff | 124 GB | direct mapping of all physical memory fffffff700000000 | -36 GB | fffffffeffffffff | 32 GB | kasan
__________________|____________|__________________|_________|____________________________________________________________ __________________|____________|__________________|_________|____________________________________________________________
| |
| |

View File

@ -255,7 +255,7 @@ The following picture shows a high level overview of AMD-TEE::
+--------------------------+ +---------+--------------------+ +--------------------------+ +---------+--------------------+
At the lowest level (in x86), the AMD Secure Processor (ASP) driver uses the At the lowest level (in x86), the AMD Secure Processor (ASP) driver uses the
CPU to PSP mailbox regsister to submit commands to the PSP. The format of the CPU to PSP mailbox register to submit commands to the PSP. The format of the
command buffer is opaque to the ASP driver. It's role is to submit commands to command buffer is opaque to the ASP driver. It's role is to submit commands to
the secure processor and return results to AMD-TEE driver. The interface the secure processor and return results to AMD-TEE driver. The interface
between AMD-TEE driver and AMD Secure Processor driver can be found in [6]. between AMD-TEE driver and AMD Secure Processor driver can be found in [6].
@ -290,7 +290,7 @@ cancel_req driver callback is not supported by AMD-TEE.
The GlobalPlatform TEE Client API [5] can be used by the user space (client) to The GlobalPlatform TEE Client API [5] can be used by the user space (client) to
talk to AMD's TEE. AMD's TEE provides a secure environment for loading, opening talk to AMD's TEE. AMD's TEE provides a secure environment for loading, opening
a session, invoking commands and clossing session with TA. a session, invoking commands and closing session with TA.
References References
========== ==========

View File

@ -3370,7 +3370,7 @@ one of the latency tracers, you will get the following results.
Instances Instances
--------- ---------
In the tracefs tracing directory is a directory called "instances". In the tracefs tracing directory, there is a directory called "instances".
This directory can have new directories created inside of it using This directory can have new directories created inside of it using
mkdir, and removing directories with rmdir. The directory created mkdir, and removing directories with rmdir. The directory created
with mkdir in this directory will already contain files and other with mkdir in this directory will already contain files and other

View File

@ -5545,8 +5545,8 @@ the trailing ``'\0'``, is indicated by ``name_size`` in the header.
The Stats Data block contains an array of 64-bit values in the same order The Stats Data block contains an array of 64-bit values in the same order
as the descriptors in Descriptors block. as the descriptors in Descriptors block.
4.42 KVM_GET_XSAVE2 4.134 KVM_GET_XSAVE2
------------------ --------------------
:Capability: KVM_CAP_XSAVE2 :Capability: KVM_CAP_XSAVE2
:Architectures: x86 :Architectures: x86
@ -7363,7 +7363,7 @@ trap and emulate MSRs that are outside of the scope of KVM as well as
limit the attack surface on KVM's MSR emulation code. limit the attack surface on KVM's MSR emulation code.
8.28 KVM_CAP_ENFORCE_PV_FEATURE_CPUID 8.28 KVM_CAP_ENFORCE_PV_FEATURE_CPUID
----------------------------- -------------------------------------
Architectures: x86 Architectures: x86

View File

@ -1,296 +0,0 @@
.. _cleancache:
==========
Cleancache
==========
Motivation
==========
Cleancache is a new optional feature provided by the VFS layer that
potentially dramatically increases page cache effectiveness for
many workloads in many environments at a negligible cost.
Cleancache can be thought of as a page-granularity victim cache for clean
pages that the kernel's pageframe replacement algorithm (PFRA) would like
to keep around, but can't since there isn't enough memory. So when the
PFRA "evicts" a page, it first attempts to use cleancache code to
put the data contained in that page into "transcendent memory", memory
that is not directly accessible or addressable by the kernel and is
of unknown and possibly time-varying size.
Later, when a cleancache-enabled filesystem wishes to access a page
in a file on disk, it first checks cleancache to see if it already
contains it; if it does, the page of data is copied into the kernel
and a disk access is avoided.
Transcendent memory "drivers" for cleancache are currently implemented
in Xen (using hypervisor memory) and zcache (using in-kernel compressed
memory) and other implementations are in development.
:ref:`FAQs <faq>` are included below.
Implementation Overview
=======================
A cleancache "backend" that provides transcendent memory registers itself
to the kernel's cleancache "frontend" by calling cleancache_register_ops,
passing a pointer to a cleancache_ops structure with funcs set appropriately.
The functions provided must conform to certain semantics as follows:
Most important, cleancache is "ephemeral". Pages which are copied into
cleancache have an indefinite lifetime which is completely unknowable
by the kernel and so may or may not still be in cleancache at any later time.
Thus, as its name implies, cleancache is not suitable for dirty pages.
Cleancache has complete discretion over what pages to preserve and what
pages to discard and when.
Mounting a cleancache-enabled filesystem should call "init_fs" to obtain a
pool id which, if positive, must be saved in the filesystem's superblock;
a negative return value indicates failure. A "put_page" will copy a
(presumably about-to-be-evicted) page into cleancache and associate it with
the pool id, a file key, and a page index into the file. (The combination
of a pool id, a file key, and an index is sometimes called a "handle".)
A "get_page" will copy the page, if found, from cleancache into kernel memory.
An "invalidate_page" will ensure the page no longer is present in cleancache;
an "invalidate_inode" will invalidate all pages associated with the specified
file; and, when a filesystem is unmounted, an "invalidate_fs" will invalidate
all pages in all files specified by the given pool id and also surrender
the pool id.
An "init_shared_fs", like init_fs, obtains a pool id but tells cleancache
to treat the pool as shared using a 128-bit UUID as a key. On systems
that may run multiple kernels (such as hard partitioned or virtualized
systems) that may share a clustered filesystem, and where cleancache
may be shared among those kernels, calls to init_shared_fs that specify the
same UUID will receive the same pool id, thus allowing the pages to
be shared. Note that any security requirements must be imposed outside
of the kernel (e.g. by "tools" that control cleancache). Or a
cleancache implementation can simply disable shared_init by always
returning a negative value.
If a get_page is successful on a non-shared pool, the page is invalidated
(thus making cleancache an "exclusive" cache). On a shared pool, the page
is NOT invalidated on a successful get_page so that it remains accessible to
other sharers. The kernel is responsible for ensuring coherency between
cleancache (shared or not), the page cache, and the filesystem, using
cleancache invalidate operations as required.
Note that cleancache must enforce put-put-get coherency and get-get
coherency. For the former, if two puts are made to the same handle but
with different data, say AAA by the first put and BBB by the second, a
subsequent get can never return the stale data (AAA). For get-get coherency,
if a get for a given handle fails, subsequent gets for that handle will
never succeed unless preceded by a successful put with that handle.
Last, cleancache provides no SMP serialization guarantees; if two
different Linux threads are simultaneously putting and invalidating a page
with the same handle, the results are indeterminate. Callers must
lock the page to ensure serial behavior.
Cleancache Performance Metrics
==============================
If properly configured, monitoring of cleancache is done via debugfs in
the `/sys/kernel/debug/cleancache` directory. The effectiveness of cleancache
can be measured (across all filesystems) with:
``succ_gets``
number of gets that were successful
``failed_gets``
number of gets that failed
``puts``
number of puts attempted (all "succeed")
``invalidates``
number of invalidates attempted
A backend implementation may provide additional metrics.
.. _faq:
FAQ
===
* Where's the value? (Andrew Morton)
Cleancache provides a significant performance benefit to many workloads
in many environments with negligible overhead by improving the
effectiveness of the pagecache. Clean pagecache pages are
saved in transcendent memory (RAM that is otherwise not directly
addressable to the kernel); fetching those pages later avoids "refaults"
and thus disk reads.
Cleancache (and its sister code "frontswap") provide interfaces for
this transcendent memory (aka "tmem"), which conceptually lies between
fast kernel-directly-addressable RAM and slower DMA/asynchronous devices.
Disallowing direct kernel or userland reads/writes to tmem
is ideal when data is transformed to a different form and size (such
as with compression) or secretly moved (as might be useful for write-
balancing for some RAM-like devices). Evicted page-cache pages (and
swap pages) are a great use for this kind of slower-than-RAM-but-much-
faster-than-disk transcendent memory, and the cleancache (and frontswap)
"page-object-oriented" specification provides a nice way to read and
write -- and indirectly "name" -- the pages.
In the virtual case, the whole point of virtualization is to statistically
multiplex physical resources across the varying demands of multiple
virtual machines. This is really hard to do with RAM and efforts to
do it well with no kernel change have essentially failed (except in some
well-publicized special-case workloads). Cleancache -- and frontswap --
with a fairly small impact on the kernel, provide a huge amount
of flexibility for more dynamic, flexible RAM multiplexing.
Specifically, the Xen Transcendent Memory backend allows otherwise
"fallow" hypervisor-owned RAM to not only be "time-shared" between multiple
virtual machines, but the pages can be compressed and deduplicated to
optimize RAM utilization. And when guest OS's are induced to surrender
underutilized RAM (e.g. with "self-ballooning"), page cache pages
are the first to go, and cleancache allows those pages to be
saved and reclaimed if overall host system memory conditions allow.
And the identical interface used for cleancache can be used in
physical systems as well. The zcache driver acts as a memory-hungry
device that stores pages of data in a compressed state. And
the proposed "RAMster" driver shares RAM across multiple physical
systems.
* Why does cleancache have its sticky fingers so deep inside the
filesystems and VFS? (Andrew Morton and Christoph Hellwig)
The core hooks for cleancache in VFS are in most cases a single line
and the minimum set are placed precisely where needed to maintain
coherency (via cleancache_invalidate operations) between cleancache,
the page cache, and disk. All hooks compile into nothingness if
cleancache is config'ed off and turn into a function-pointer-
compare-to-NULL if config'ed on but no backend claims the ops
functions, or to a compare-struct-element-to-negative if a
backend claims the ops functions but a filesystem doesn't enable
cleancache.
Some filesystems are built entirely on top of VFS and the hooks
in VFS are sufficient, so don't require an "init_fs" hook; the
initial implementation of cleancache didn't provide this hook.
But for some filesystems (such as btrfs), the VFS hooks are
incomplete and one or more hooks in fs-specific code are required.
And for some other filesystems, such as tmpfs, cleancache may
be counterproductive. So it seemed prudent to require a filesystem
to "opt in" to use cleancache, which requires adding a hook in
each filesystem. Not all filesystems are supported by cleancache
only because they haven't been tested. The existing set should
be sufficient to validate the concept, the opt-in approach means
that untested filesystems are not affected, and the hooks in the
existing filesystems should make it very easy to add more
filesystems in the future.
The total impact of the hooks to existing fs and mm files is only
about 40 lines added (not counting comments and blank lines).
* Why not make cleancache asynchronous and batched so it can more
easily interface with real devices with DMA instead of copying each
individual page? (Minchan Kim)
The one-page-at-a-time copy semantics simplifies the implementation
on both the frontend and backend and also allows the backend to
do fancy things on-the-fly like page compression and
page deduplication. And since the data is "gone" (copied into/out
of the pageframe) before the cleancache get/put call returns,
a great deal of race conditions and potential coherency issues
are avoided. While the interface seems odd for a "real device"
or for real kernel-addressable RAM, it makes perfect sense for
transcendent memory.
* Why is non-shared cleancache "exclusive"? And where is the
page "invalidated" after a "get"? (Minchan Kim)
The main reason is to free up space in transcendent memory and
to avoid unnecessary cleancache_invalidate calls. If you want inclusive,
the page can be "put" immediately following the "get". If
put-after-get for inclusive becomes common, the interface could
be easily extended to add a "get_no_invalidate" call.
The invalidate is done by the cleancache backend implementation.
* What's the performance impact?
Performance analysis has been presented at OLS'09 and LCA'10.
Briefly, performance gains can be significant on most workloads,
especially when memory pressure is high (e.g. when RAM is
overcommitted in a virtual workload); and because the hooks are
invoked primarily in place of or in addition to a disk read/write,
overhead is negligible even in worst case workloads. Basically
cleancache replaces I/O with memory-copy-CPU-overhead; on older
single-core systems with slow memory-copy speeds, cleancache
has little value, but in newer multicore machines, especially
consolidated/virtualized machines, it has great value.
* How do I add cleancache support for filesystem X? (Boaz Harrash)
Filesystems that are well-behaved and conform to certain
restrictions can utilize cleancache simply by making a call to
cleancache_init_fs at mount time. Unusual, misbehaving, or
poorly layered filesystems must either add additional hooks
and/or undergo extensive additional testing... or should just
not enable the optional cleancache.
Some points for a filesystem to consider:
- The FS should be block-device-based (e.g. a ram-based FS such
as tmpfs should not enable cleancache)
- To ensure coherency/correctness, the FS must ensure that all
file removal or truncation operations either go through VFS or
add hooks to do the equivalent cleancache "invalidate" operations
- To ensure coherency/correctness, either inode numbers must
be unique across the lifetime of the on-disk file OR the
FS must provide an "encode_fh" function.
- The FS must call the VFS superblock alloc and deactivate routines
or add hooks to do the equivalent cleancache calls done there.
- To maximize performance, all pages fetched from the FS should
go through the do_mpag_readpage routine or the FS should add
hooks to do the equivalent (cf. btrfs)
- Currently, the FS blocksize must be the same as PAGESIZE. This
is not an architectural restriction, but no backends currently
support anything different.
- A clustered FS should invoke the "shared_init_fs" cleancache
hook to get best performance for some backends.
* Why not use the KVA of the inode as the key? (Christoph Hellwig)
If cleancache would use the inode virtual address instead of
inode/filehandle, the pool id could be eliminated. But, this
won't work because cleancache retains pagecache data pages
persistently even when the inode has been pruned from the
inode unused list, and only invalidates the data page if the file
gets removed/truncated. So if cleancache used the inode kva,
there would be potential coherency issues if/when the inode
kva is reused for a different file. Alternately, if cleancache
invalidated the pages when the inode kva was freed, much of the value
of cleancache would be lost because the cache of pages in cleanache
is potentially much larger than the kernel pagecache and is most
useful if the pages survive inode cache removal.
* Why is a global variable required?
The cleancache_enabled flag is checked in all of the frequently-used
cleancache hooks. The alternative is a function call to check a static
variable. Since cleancache is enabled dynamically at runtime, systems
that don't enable cleancache would suffer thousands (possibly
tens-of-thousands) of unnecessary function calls per second. So the
global variable allows cleancache to be enabled by default at compile
time, but have insignificant performance impact when cleancache remains
disabled at runtime.
* Does cleanache work with KVM?
The memory model of KVM is sufficiently different that a cleancache
backend may have less value for KVM. This remains to be tested,
especially in an overcommitted system.
* Does cleancache work in userspace? It sounds useful for
memory hungry caches like web browsers. (Jamie Lokier)
No plans yet, though we agree it sounds useful, at least for
apps that bypass the page cache (e.g. O_DIRECT).
Last updated: Dan Magenheimer, April 13 2011

View File

@ -8,12 +8,6 @@ Frontswap provides a "transcendent memory" interface for swap pages.
In some environments, dramatic performance savings may be obtained because In some environments, dramatic performance savings may be obtained because
swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk. swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk.
(Note, frontswap -- and :ref:`cleancache` (merged at 3.0) -- are the "frontends"
and the only necessary changes to the core kernel for transcendent memory;
all other supporting code -- the "backends" -- is implemented as drivers.
See the LWN.net article `Transcendent memory in a nutshell`_
for a detailed overview of frontswap and related kernel parts)
.. _Transcendent memory in a nutshell: https://lwn.net/Articles/454795/ .. _Transcendent memory in a nutshell: https://lwn.net/Articles/454795/
Frontswap is so named because it can be thought of as the opposite of Frontswap is so named because it can be thought of as the opposite of
@ -45,12 +39,6 @@ a disk write and, if the data is later read back, a disk read are avoided.
If a store returns failure, transcendent memory has rejected the data, and the If a store returns failure, transcendent memory has rejected the data, and the
page can be written to swap as usual. page can be written to swap as usual.
If a backend chooses, frontswap can be configured as a "writethrough
cache" by calling frontswap_writethrough(). In this mode, the reduction
in swap device writes is lost (and also a non-trivial performance advantage)
in order to allow the backend to arbitrarily "reclaim" space used to
store frontswap pages to more completely manage its memory usage.
Note that if a page is stored and the page already exists in transcendent memory Note that if a page is stored and the page already exists in transcendent memory
(a "duplicate" store), either the store succeeds and the data is overwritten, (a "duplicate" store), either the store succeeds and the data is overwritten,
or the store fails AND the page is invalidated. This ensures stale data may or the store fails AND the page is invalidated. This ensures stale data may
@ -87,11 +75,9 @@ This interface is ideal when data is transformed to a different form
and size (such as with compression) or secretly moved (as might be and size (such as with compression) or secretly moved (as might be
useful for write-balancing for some RAM-like devices). Swap pages (and useful for write-balancing for some RAM-like devices). Swap pages (and
evicted page-cache pages) are a great use for this kind of slower-than-RAM- evicted page-cache pages) are a great use for this kind of slower-than-RAM-
but-much-faster-than-disk "pseudo-RAM device" and the frontswap (and but-much-faster-than-disk "pseudo-RAM device".
cleancache) interface to transcendent memory provides a nice way to read
and write -- and indirectly "name" -- the pages.
Frontswap -- and cleancache -- with a fairly small impact on the kernel, Frontswap with a fairly small impact on the kernel,
provides a huge amount of flexibility for more dynamic, flexible RAM provides a huge amount of flexibility for more dynamic, flexible RAM
utilization in various system configurations: utilization in various system configurations:
@ -269,19 +255,6 @@ the old data and ensure that it is no longer accessible. Since the
swap subsystem then writes the new data to the read swap device, swap subsystem then writes the new data to the read swap device,
this is the correct course of action to ensure coherency. this is the correct course of action to ensure coherency.
* What is frontswap_shrink for?
When the (non-frontswap) swap subsystem swaps out a page to a real
swap device, that page is only taking up low-value pre-allocated disk
space. But if frontswap has placed a page in transcendent memory, that
page may be taking up valuable real estate. The frontswap_shrink
routine allows code outside of the swap subsystem to force pages out
of the memory managed by frontswap and back into kernel-addressable memory.
For example, in RAMster, a "suction driver" thread will attempt
to "repatriate" pages sent to a remote machine back to the local machine;
this is driven using the frontswap_shrink mechanism when memory pressure
subsides.
* Why does the frontswap patch create the new include file swapfile.h? * Why does the frontswap patch create the new include file swapfile.h?
The frontswap code depends on some swap-subsystem-internal data The frontswap code depends on some swap-subsystem-internal data

View File

@ -15,7 +15,6 @@ algorithms. If you are looking for advice on simply allocating memory, see the
active_mm active_mm
arch_pgtable_helpers arch_pgtable_helpers
balance balance
cleancache
damon/index damon/index
free_page_reporting free_page_reporting
frontswap frontswap

View File

@ -3411,14 +3411,14 @@ M: Yury Norov <yury.norov@gmail.com>
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
R: Rasmus Villemoes <linux@rasmusvillemoes.dk> R: Rasmus Villemoes <linux@rasmusvillemoes.dk>
S: Maintained S: Maintained
F: include/asm-generic/bitops/find.h
F: include/linux/bitmap.h F: include/linux/bitmap.h
F: include/linux/find.h
F: lib/bitmap.c F: lib/bitmap.c
F: lib/find_bit.c F: lib/find_bit.c
F: lib/find_bit_benchmark.c F: lib/find_bit_benchmark.c
F: lib/test_bitmap.c F: lib/test_bitmap.c
F: tools/include/asm-generic/bitops/find.h
F: tools/include/linux/bitmap.h F: tools/include/linux/bitmap.h
F: tools/include/linux/find.h
F: tools/lib/bitmap.c F: tools/lib/bitmap.c
F: tools/lib/find_bit.c F: tools/lib/find_bit.c
@ -4706,13 +4706,6 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/cla
F: include/linux/cfi.h F: include/linux/cfi.h
F: kernel/cfi.c F: kernel/cfi.c
CLEANCACHE API
M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
L: linux-kernel@vger.kernel.org
S: Maintained
F: include/linux/cleancache.h
F: mm/cleancache.c
CLK API CLK API
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
L: linux-clk@vger.kernel.org L: linux-clk@vger.kernel.org
@ -7216,8 +7209,10 @@ F: drivers/net/mdio/of_mdio.c
F: drivers/net/pcs/ F: drivers/net/pcs/
F: drivers/net/phy/ F: drivers/net/phy/
F: include/dt-bindings/net/qca-ar803x.h F: include/dt-bindings/net/qca-ar803x.h
F: include/linux/linkmode.h
F: include/linux/*mdio*.h F: include/linux/*mdio*.h
F: include/linux/mdio/*.h F: include/linux/mdio/*.h
F: include/linux/mii.h
F: include/linux/of_net.h F: include/linux/of_net.h
F: include/linux/phy.h F: include/linux/phy.h
F: include/linux/phy_fixed.h F: include/linux/phy_fixed.h
@ -13459,7 +13454,11 @@ L: netdev@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git
F: arch/x86/net/* F: arch/x86/net/*
F: include/linux/ip.h
F: include/linux/ipv6*
F: include/net/fib*
F: include/net/ip* F: include/net/ip*
F: include/net/route.h
F: net/ipv4/ F: net/ipv4/
F: net/ipv6/ F: net/ipv6/
@ -16807,6 +16806,7 @@ M: Heiko Carstens <hca@linux.ibm.com>
M: Vasily Gorbik <gor@linux.ibm.com> M: Vasily Gorbik <gor@linux.ibm.com>
M: Christian Borntraeger <borntraeger@linux.ibm.com> M: Christian Borntraeger <borntraeger@linux.ibm.com>
R: Alexander Gordeev <agordeev@linux.ibm.com> R: Alexander Gordeev <agordeev@linux.ibm.com>
R: Sven Schnelle <svens@linux.ibm.com>
L: linux-s390@vger.kernel.org L: linux-s390@vger.kernel.org
S: Supported S: Supported
W: http://www.ibm.com/developerworks/linux/linux390/ W: http://www.ibm.com/developerworks/linux/linux390/
@ -18490,6 +18490,13 @@ L: netdev@vger.kernel.org
S: Maintained S: Maintained
F: drivers/net/ethernet/dlink/sundance.c F: drivers/net/ethernet/dlink/sundance.c
SUNPLUS RTC DRIVER
M: Vincent Shih <vincent.sunplus@gmail.com>
L: linux-rtc@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/rtc/sunplus,sp7021-rtc.yaml
F: drivers/rtc/rtc-sunplus.c
SUPERH SUPERH
M: Yoshinori Sato <ysato@users.sourceforge.jp> M: Yoshinori Sato <ysato@users.sourceforge.jp>
M: Rich Felker <dalias@libc.org> M: Rich Felker <dalias@libc.org>

View File

@ -1,8 +1,8 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 5 VERSION = 5
PATCHLEVEL = 16 PATCHLEVEL = 17
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = EXTRAVERSION = -rc1
NAME = Gobble Gobble NAME = Gobble Gobble
# *DOCUMENTATION* # *DOCUMENTATION*
@ -778,7 +778,7 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG) := -fstack-protector-strong
KBUILD_CFLAGS += $(stackp-flags-y) KBUILD_CFLAGS += $(stackp-flags-y)
KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH:"%"=%) KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)
ifdef CONFIG_CC_IS_CLANG ifdef CONFIG_CC_IS_CLANG
KBUILD_CPPFLAGS += -Qunused-arguments KBUILD_CPPFLAGS += -Qunused-arguments

View File

@ -430,8 +430,6 @@ static inline unsigned int __arch_hweight8(unsigned int w)
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#include <asm-generic/bitops/find.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
/* /*

View File

@ -80,7 +80,12 @@ init_rtc_epoch(void)
static int static int
alpha_rtc_read_time(struct device *dev, struct rtc_time *tm) alpha_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ {
mc146818_get_time(tm); int ret = mc146818_get_time(tm);
if (ret < 0) {
dev_err_ratelimited(dev, "unable to read current time\n");
return ret;
}
/* Adjust for non-default epochs. It's easier to depend on the /* Adjust for non-default epochs. It's easier to depend on the
generic __get_rtc_time and adjust the epoch here than create generic __get_rtc_time and adjust the epoch here than create

View File

@ -83,14 +83,14 @@ static int srm_env_proc_show(struct seq_file *m, void *v)
static int srm_env_proc_open(struct inode *inode, struct file *file) static int srm_env_proc_open(struct inode *inode, struct file *file)
{ {
return single_open(file, srm_env_proc_show, PDE_DATA(inode)); return single_open(file, srm_env_proc_show, pde_data(inode));
} }
static ssize_t srm_env_proc_write(struct file *file, const char __user *buffer, static ssize_t srm_env_proc_write(struct file *file, const char __user *buffer,
size_t count, loff_t *pos) size_t count, loff_t *pos)
{ {
int res; int res;
unsigned long id = (unsigned long)PDE_DATA(file_inode(file)); unsigned long id = (unsigned long)pde_data(file_inode(file));
char *buf = (char *) __get_free_page(GFP_USER); char *buf = (char *) __get_free_page(GFP_USER);
unsigned long ret1, ret2; unsigned long ret1, ret2;

View File

@ -20,7 +20,6 @@ config ARC
select COMMON_CLK select COMMON_CLK
select DMA_DIRECT_REMAP select DMA_DIRECT_REMAP
select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC) select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC)
select GENERIC_FIND_FIRST_BIT
# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_PCI_IOMAP select GENERIC_PCI_IOMAP

View File

@ -189,7 +189,6 @@ static inline __attribute__ ((const)) unsigned long __ffs(unsigned long x)
#include <asm-generic/bitops/atomic.h> #include <asm-generic/bitops/atomic.h>
#include <asm-generic/bitops/non-atomic.h> #include <asm-generic/bitops/non-atomic.h>
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/le.h> #include <asm-generic/bitops/le.h>
#include <asm-generic/bitops/ext2-atomic-setbit.h> #include <asm-generic/bitops/ext2-atomic-setbit.h>

View File

@ -31,7 +31,6 @@ CONFIG_ARCH_BCM2835=y
CONFIG_PREEMPT_VOLUNTARY=y CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_AEABI=y CONFIG_AEABI=y
CONFIG_KSM=y CONFIG_KSM=y
CONFIG_CLEANCACHE=y
CONFIG_CMA=y CONFIG_CMA=y
CONFIG_SECCOMP=y CONFIG_SECCOMP=y
CONFIG_KEXEC=y CONFIG_KEXEC=y

View File

@ -27,7 +27,6 @@ CONFIG_PCIE_QCOM=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_HIGHMEM=y CONFIG_HIGHMEM=y
CONFIG_CLEANCACHE=y
CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y

View File

@ -288,6 +288,7 @@
*/ */
#define ALT_UP(instr...) \ #define ALT_UP(instr...) \
.pushsection ".alt.smp.init", "a" ;\ .pushsection ".alt.smp.init", "a" ;\
.align 2 ;\
.long 9998b - . ;\ .long 9998b - . ;\
9997: instr ;\ 9997: instr ;\
.if . - 9997b == 2 ;\ .if . - 9997b == 2 ;\
@ -299,6 +300,7 @@
.popsection .popsection
#define ALT_UP_B(label) \ #define ALT_UP_B(label) \
.pushsection ".alt.smp.init", "a" ;\ .pushsection ".alt.smp.init", "a" ;\
.align 2 ;\
.long 9998b - . ;\ .long 9998b - . ;\
W(b) . + (label - 9998b) ;\ W(b) . + (label - 9998b) ;\
.popsection .popsection

View File

@ -264,7 +264,6 @@ static inline int find_next_bit_le(const void *p, int size, int offset)
#endif #endif
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/le.h> #include <asm-generic/bitops/le.h>
/* /*

View File

@ -96,6 +96,7 @@ unsigned long __get_wchan(struct task_struct *p);
#define __ALT_SMP_ASM(smp, up) \ #define __ALT_SMP_ASM(smp, up) \
"9998: " smp "\n" \ "9998: " smp "\n" \
" .pushsection \".alt.smp.init\", \"a\"\n" \ " .pushsection \".alt.smp.init\", \"a\"\n" \
" .align 2\n" \
" .long 9998b - .\n" \ " .long 9998b - .\n" \
" " up "\n" \ " " up "\n" \
" .popsection\n" " .popsection\n"

View File

@ -11,6 +11,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <asm/memory.h> #include <asm/memory.h>
#include <asm/domain.h> #include <asm/domain.h>
#include <asm/unaligned.h>
#include <asm/unified.h> #include <asm/unified.h>
#include <asm/compiler.h> #include <asm/compiler.h>
@ -497,7 +498,10 @@ do { \
} \ } \
default: __err = __get_user_bad(); break; \ default: __err = __get_user_bad(); break; \
} \ } \
*(type *)(dst) = __val; \ if (IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) \
put_unaligned(__val, (type *)(dst)); \
else \
*(type *)(dst) = __val; /* aligned by caller */ \
if (__err) \ if (__err) \
goto err_label; \ goto err_label; \
} while (0) } while (0)
@ -507,7 +511,9 @@ do { \
const type *__pk_ptr = (dst); \ const type *__pk_ptr = (dst); \
unsigned long __dst = (unsigned long)__pk_ptr; \ unsigned long __dst = (unsigned long)__pk_ptr; \
int __err = 0; \ int __err = 0; \
type __val = *(type *)src; \ type __val = IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) \
? get_unaligned((type *)(src)) \
: *(type *)(src); /* aligned by caller */ \
switch (sizeof(type)) { \ switch (sizeof(type)) { \
case 1: __put_user_asm_byte(__val, __dst, __err, ""); break; \ case 1: __put_user_asm_byte(__val, __dst, __err, ""); break; \
case 2: __put_user_asm_half(__val, __dst, __err, ""); break; \ case 2: __put_user_asm_half(__val, __dst, __err, ""); break; \

View File

@ -13,7 +13,7 @@ struct buffer {
static ssize_t atags_read(struct file *file, char __user *buf, static ssize_t atags_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct buffer *b = PDE_DATA(file_inode(file)); struct buffer *b = pde_data(file_inode(file));
return simple_read_from_buffer(buf, count, ppos, b->data, b->size); return simple_read_from_buffer(buf, count, ppos, b->data, b->size);
} }

View File

@ -1005,7 +1005,7 @@ static int __init noalign_setup(char *__unused)
__setup("noalign", noalign_setup); __setup("noalign", noalign_setup);
/* /*
* This needs to be done after sysctl_init, otherwise sys/ will be * This needs to be done after sysctl_init_bases(), otherwise sys/ will be
* overwritten. Actually, this shouldn't be in sys/ at all since * overwritten. Actually, this shouldn't be in sys/ at all since
* it isn't a sysctl, and it doesn't contain sysctl information. * it isn't a sysctl, and it doesn't contain sysctl information.
* We now locate it in /proc/cpu/alignment instead. * We now locate it in /proc/cpu/alignment instead.

View File

@ -1,4 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
KASAN_SANITIZE_actions-common.o := n
KASAN_SANITIZE_actions-arm.o := n
KASAN_SANITIZE_actions-thumb.o := n
obj-$(CONFIG_KPROBES) += core.o actions-common.o checkers-common.o obj-$(CONFIG_KPROBES) += core.o actions-common.o checkers-common.o
obj-$(CONFIG_ARM_KPROBES_TEST) += test-kprobes.o obj-$(CONFIG_ARM_KPROBES_TEST) += test-kprobes.o
test-kprobes-objs := test-core.o test-kprobes-objs := test-core.o

View File

@ -120,7 +120,6 @@ config ARM64
select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_AUTOPROBE
select GENERIC_CPU_VULNERABILITIES select GENERIC_CPU_VULNERABILITIES
select GENERIC_EARLY_IOREMAP select GENERIC_EARLY_IOREMAP
select GENERIC_FIND_FIRST_BIT
select GENERIC_IDLE_POLL_SETUP select GENERIC_IDLE_POLL_SETUP
select GENERIC_IRQ_IPI select GENERIC_IRQ_IPI
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE

View File

@ -249,7 +249,7 @@ __lse__cmpxchg_case_##name##sz(volatile void *ptr, \
" mov %" #w "[tmp], %" #w "[old]\n" \ " mov %" #w "[tmp], %" #w "[old]\n" \
" cas" #mb #sfx "\t%" #w "[tmp], %" #w "[new], %[v]\n" \ " cas" #mb #sfx "\t%" #w "[tmp], %" #w "[new], %[v]\n" \
" mov %" #w "[ret], %" #w "[tmp]" \ " mov %" #w "[ret], %" #w "[tmp]" \
: [ret] "+r" (x0), [v] "+Q" (*(unsigned long *)ptr), \ : [ret] "+r" (x0), [v] "+Q" (*(u##sz *)ptr), \
[tmp] "=&r" (tmp) \ [tmp] "=&r" (tmp) \
: [old] "r" (x1), [new] "r" (x2) \ : [old] "r" (x1), [new] "r" (x2) \
: cl); \ : cl); \

View File

@ -18,7 +18,6 @@
#include <asm-generic/bitops/ffz.h> #include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/fls64.h> #include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/hweight.h>

View File

@ -243,7 +243,7 @@ static inline void __cmpwait_case_##sz(volatile void *ptr, \
" cbnz %" #w "[tmp], 1f\n" \ " cbnz %" #w "[tmp], 1f\n" \
" wfe\n" \ " wfe\n" \
"1:" \ "1:" \
: [tmp] "=&r" (tmp), [v] "+Q" (*(unsigned long *)ptr) \ : [tmp] "=&r" (tmp), [v] "+Q" (*(u##sz *)ptr) \
: [val] "r" (val)); \ : [val] "r" (val)); \
} }

View File

@ -172,7 +172,7 @@ int pfn_is_map_memory(unsigned long pfn)
} }
EXPORT_SYMBOL(pfn_is_map_memory); EXPORT_SYMBOL(pfn_is_map_memory);
static phys_addr_t memory_limit = PHYS_ADDR_MAX; static phys_addr_t memory_limit __ro_after_init = PHYS_ADDR_MAX;
/* /*
* Limit the memory size that was specified via FDT. * Limit the memory size that was specified via FDT.

View File

@ -59,7 +59,6 @@ static __always_inline unsigned long __fls(unsigned long x)
#include <asm-generic/bitops/ffz.h> #include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/fls64.h> #include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/find.h>
#ifndef _LINUX_BITOPS_H #ifndef _LINUX_BITOPS_H
#error only <linux/bitops.h> can be included directly #error only <linux/bitops.h> can be included directly

View File

@ -168,7 +168,6 @@ static inline unsigned long __ffs(unsigned long word)
return result; return result;
} }
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/hweight.h>
#include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/lock.h>

View File

@ -271,7 +271,6 @@ static inline unsigned long __fls(unsigned long word)
} }
#include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/lock.h>
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/fls64.h> #include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/sched.h>

View File

@ -441,8 +441,6 @@ static __inline__ unsigned long __arch_hweight64(unsigned long x)
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#include <asm-generic/bitops/find.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <asm-generic/bitops/le.h> #include <asm-generic/bitops/le.h>

View File

@ -282,7 +282,7 @@ salinfo_event_open(struct inode *inode, struct file *file)
static ssize_t static ssize_t
salinfo_event_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) salinfo_event_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{ {
struct salinfo_data *data = PDE_DATA(file_inode(file)); struct salinfo_data *data = pde_data(file_inode(file));
char cmd[32]; char cmd[32];
size_t size; size_t size;
int i, n, cpu = -1; int i, n, cpu = -1;
@ -340,7 +340,7 @@ static const struct proc_ops salinfo_event_proc_ops = {
static int static int
salinfo_log_open(struct inode *inode, struct file *file) salinfo_log_open(struct inode *inode, struct file *file)
{ {
struct salinfo_data *data = PDE_DATA(inode); struct salinfo_data *data = pde_data(inode);
if (!capable(CAP_SYS_ADMIN)) if (!capable(CAP_SYS_ADMIN))
return -EPERM; return -EPERM;
@ -365,7 +365,7 @@ salinfo_log_open(struct inode *inode, struct file *file)
static int static int
salinfo_log_release(struct inode *inode, struct file *file) salinfo_log_release(struct inode *inode, struct file *file)
{ {
struct salinfo_data *data = PDE_DATA(inode); struct salinfo_data *data = pde_data(inode);
if (data->state == STATE_NO_DATA) { if (data->state == STATE_NO_DATA) {
vfree(data->log_buffer); vfree(data->log_buffer);
@ -433,7 +433,7 @@ retry:
static ssize_t static ssize_t
salinfo_log_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) salinfo_log_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{ {
struct salinfo_data *data = PDE_DATA(file_inode(file)); struct salinfo_data *data = pde_data(file_inode(file));
u8 *buf; u8 *buf;
u64 bufsize; u64 bufsize;
@ -494,7 +494,7 @@ salinfo_log_clear(struct salinfo_data *data, int cpu)
static ssize_t static ssize_t
salinfo_log_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) salinfo_log_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
{ {
struct salinfo_data *data = PDE_DATA(file_inode(file)); struct salinfo_data *data = pde_data(file_inode(file));
char cmd[32]; char cmd[32];
size_t size; size_t size;
u32 offset; u32 offset;

View File

@ -45,7 +45,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -41,7 +41,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -48,7 +48,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -38,7 +38,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -40,7 +40,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -39,7 +39,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -59,7 +59,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -37,7 +37,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -38,7 +38,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -39,7 +39,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -35,7 +35,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -35,7 +35,6 @@ CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
# CONFIG_COMPACTION is not set # CONFIG_COMPACTION is not set
CONFIG_CLEANCACHE=y
CONFIG_ZPOOL=m CONFIG_ZPOOL=m
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y

View File

@ -529,6 +529,4 @@ static inline int __fls(int x)
#include <asm-generic/bitops/le.h> #include <asm-generic/bitops/le.h>
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#include <asm-generic/bitops/find.h>
#endif /* _M68K_BITOPS_H */ #endif /* _M68K_BITOPS_H */

View File

@ -32,7 +32,6 @@ config MIPS
select GENERIC_ATOMIC64 if !64BIT select GENERIC_ATOMIC64 if !64BIT
select GENERIC_CMOS_UPDATE select GENERIC_CMOS_UPDATE
select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_AUTOPROBE
select GENERIC_FIND_FIRST_BIT
select GENERIC_GETTIMEOFDAY select GENERIC_GETTIMEOFDAY
select GENERIC_IOMAP select GENERIC_IOMAP
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE

View File

@ -444,7 +444,6 @@ static inline int ffs(int word)
} }
#include <asm-generic/bitops/ffz.h> #include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/find.h>
#ifdef __KERNEL__ #ifdef __KERNEL__

View File

@ -30,7 +30,6 @@
#include <asm/bitops/fls.h> #include <asm/bitops/fls.h>
#include <asm/bitops/__fls.h> #include <asm/bitops/__fls.h>
#include <asm-generic/bitops/fls64.h> #include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/find.h>
#ifndef _LINUX_BITOPS_H #ifndef _LINUX_BITOPS_H
#error only <linux/bitops.h> can be included directly #error only <linux/bitops.h> can be included directly

View File

@ -203,7 +203,6 @@ static __inline__ int fls(unsigned int x)
#include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/hweight.h>
#include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/lock.h>
#include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/find.h>
#include <asm-generic/bitops/le.h> #include <asm-generic/bitops/le.h>
#include <asm-generic/bitops/ext2-atomic-setbit.h> #include <asm-generic/bitops/ext2-atomic-setbit.h>

View File

@ -289,6 +289,7 @@ extern int _parisc_requires_coherency;
extern int running_on_qemu; extern int running_on_qemu;
extern void __noreturn toc_intr(struct pt_regs *regs);
extern void toc_handler(void); extern void toc_handler(void);
extern unsigned int toc_handler_size; extern unsigned int toc_handler_size;
extern unsigned int toc_handler_csum; extern unsigned int toc_handler_csum;

View File

@ -48,6 +48,7 @@ struct proc_dir_entry * proc_mckinley_root __read_mostly = NULL;
void __init setup_cmdline(char **cmdline_p) void __init setup_cmdline(char **cmdline_p)
{ {
extern unsigned int boot_args[]; extern unsigned int boot_args[];
char *p;
/* Collect stuff passed in from the boot loader */ /* Collect stuff passed in from the boot loader */
@ -56,9 +57,19 @@ void __init setup_cmdline(char **cmdline_p)
/* called from hpux boot loader */ /* called from hpux boot loader */
boot_command_line[0] = '\0'; boot_command_line[0] = '\0';
} else { } else {
strlcpy(boot_command_line, (char *)__va(boot_args[1]), strscpy(boot_command_line, (char *)__va(boot_args[1]),
COMMAND_LINE_SIZE); COMMAND_LINE_SIZE);
/* autodetect console type (if not done by palo yet) */
p = boot_command_line;
if (!str_has_prefix(p, "console=") && !strstr(p, " console=")) {
strlcat(p, " console=", COMMAND_LINE_SIZE);
if (PAGE0->mem_cons.cl_class == CL_DUPLEX)
strlcat(p, "ttyS0", COMMAND_LINE_SIZE);
else
strlcat(p, "tty0", COMMAND_LINE_SIZE);
}
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ if (boot_args[2] != 0) /* did palo pass us a ramdisk? */
{ {
@ -68,7 +79,7 @@ void __init setup_cmdline(char **cmdline_p)
#endif #endif
} }
strcpy(command_line, boot_command_line); strscpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
*cmdline_p = command_line; *cmdline_p = command_line;
} }

View File

@ -10,9 +10,10 @@
#include <asm/pdc.h> #include <asm/pdc.h>
#include <asm/pdc_chassis.h> #include <asm/pdc_chassis.h>
#include <asm/ldcw.h> #include <asm/ldcw.h>
#include <asm/processor.h>
static unsigned int __aligned(16) toc_lock = 1; static unsigned int __aligned(16) toc_lock = 1;
DEFINE_PER_CPU_PAGE_ALIGNED(char [16384], toc_stack); DEFINE_PER_CPU_PAGE_ALIGNED(char [16384], toc_stack) __visible;
static void toc20_to_pt_regs(struct pt_regs *regs, struct pdc_toc_pim_20 *toc) static void toc20_to_pt_regs(struct pt_regs *regs, struct pdc_toc_pim_20 *toc)
{ {

View File

@ -168,6 +168,11 @@
interrupts = <14>; interrupts = <14>;
}; };
srnprot@d800060 {
compatible = "nintendo,hollywood-srnprot";
reg = <0x0d800060 0x4>;
};
GPIO: gpio@d8000c0 { GPIO: gpio@d8000c0 {
#gpio-cells = <2>; #gpio-cells = <2>;
compatible = "nintendo,hollywood-gpio"; compatible = "nintendo,hollywood-gpio";

View File

@ -68,7 +68,7 @@ CONFIG_SND_SEQUENCER=y
CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_USB_SUPPORT is not set # CONFIG_USB_SUPPORT is not set
CONFIG_RTC_CLASS=y CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_GENERIC=y CONFIG_RTC_DRV_GAMECUBE=y
CONFIG_EXT2_FS=y CONFIG_EXT2_FS=y
CONFIG_EXT4_FS=y CONFIG_EXT4_FS=y
CONFIG_ISO9660_FS=y CONFIG_ISO9660_FS=y

View File

@ -98,7 +98,7 @@ CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_PANIC=y CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_RTC_CLASS=y CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_GENERIC=y CONFIG_RTC_DRV_GAMECUBE=y
CONFIG_NVMEM_NINTENDO_OTP=y CONFIG_NVMEM_NINTENDO_OTP=y
CONFIG_EXT2_FS=y CONFIG_EXT2_FS=y
CONFIG_EXT4_FS=y CONFIG_EXT4_FS=y

View File

@ -328,8 +328,6 @@ unsigned long __arch_hweight64(__u64 w);
#include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/hweight.h>
#endif #endif
#include <asm-generic/bitops/find.h>
/* wrappers that deal with KASAN instrumentation */ /* wrappers that deal with KASAN instrumentation */
#include <asm-generic/bitops/instrumented-atomic.h> #include <asm-generic/bitops/instrumented-atomic.h>
#include <asm-generic/bitops/instrumented-lock.h> #include <asm-generic/bitops/instrumented-lock.h>

View File

@ -223,6 +223,8 @@ static __always_inline void update_user_segments(u32 val)
update_user_segment(15, val); update_user_segment(15, val);
} }
int __init find_free_bat(void);
unsigned int bat_block_size(unsigned long base, unsigned long top);
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
/* We happily ignore the smaller BATs on 601, we don't actually use /* We happily ignore the smaller BATs on 601, we don't actually use

View File

@ -473,7 +473,7 @@ static inline bool arch_irq_disabled_regs(struct pt_regs *regs)
return !(regs->msr & MSR_EE); return !(regs->msr & MSR_EE);
} }
static inline bool should_hard_irq_enable(void) static __always_inline bool should_hard_irq_enable(void)
{ {
return false; return false;
} }

Some files were not shown because too many files have changed in this diff Show More