Merge 5.7-rc3 into staging-next

We need the staging fixes in here too, and this resolves a merge issue
with the vt6656 driver.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2020-04-27 12:20:40 +02:00
commit e8014d83f6
768 changed files with 8066 additions and 4704 deletions

View File

@ -142,10 +142,13 @@ ForEachMacros:
- 'for_each_card_auxs' - 'for_each_card_auxs'
- 'for_each_card_auxs_safe' - 'for_each_card_auxs_safe'
- 'for_each_card_components' - 'for_each_card_components'
- 'for_each_card_dapms'
- 'for_each_card_pre_auxs' - 'for_each_card_pre_auxs'
- 'for_each_card_prelinks' - 'for_each_card_prelinks'
- 'for_each_card_rtds' - 'for_each_card_rtds'
- 'for_each_card_rtds_safe' - 'for_each_card_rtds_safe'
- 'for_each_card_widgets'
- 'for_each_card_widgets_safe'
- 'for_each_cgroup_storage_type' - 'for_each_cgroup_storage_type'
- 'for_each_child_of_node' - 'for_each_child_of_node'
- 'for_each_clear_bit' - 'for_each_clear_bit'
@ -160,6 +163,7 @@ ForEachMacros:
- 'for_each_cpu_and' - 'for_each_cpu_and'
- 'for_each_cpu_not' - 'for_each_cpu_not'
- 'for_each_cpu_wrap' - 'for_each_cpu_wrap'
- 'for_each_dapm_widgets'
- 'for_each_dev_addr' - 'for_each_dev_addr'
- 'for_each_dev_scope' - 'for_each_dev_scope'
- 'for_each_displayid_db' - 'for_each_displayid_db'
@ -170,7 +174,6 @@ ForEachMacros:
- 'for_each_dpcm_fe' - 'for_each_dpcm_fe'
- 'for_each_drhd_unit' - 'for_each_drhd_unit'
- 'for_each_dss_dev' - 'for_each_dss_dev'
- 'for_each_efi_handle'
- 'for_each_efi_memory_desc' - 'for_each_efi_memory_desc'
- 'for_each_efi_memory_desc_in_map' - 'for_each_efi_memory_desc_in_map'
- 'for_each_element' - 'for_each_element'
@ -191,6 +194,7 @@ ForEachMacros:
- 'for_each_ip_tunnel_rcu' - 'for_each_ip_tunnel_rcu'
- 'for_each_irq_nr' - 'for_each_irq_nr'
- 'for_each_link_codecs' - 'for_each_link_codecs'
- 'for_each_link_cpus'
- 'for_each_link_platforms' - 'for_each_link_platforms'
- 'for_each_lru' - 'for_each_lru'
- 'for_each_matching_node' - 'for_each_matching_node'
@ -250,6 +254,7 @@ ForEachMacros:
- 'for_each_pci_bridge' - 'for_each_pci_bridge'
- 'for_each_pci_dev' - 'for_each_pci_dev'
- 'for_each_pci_msi_entry' - 'for_each_pci_msi_entry'
- 'for_each_pcm_streams'
- 'for_each_populated_zone' - 'for_each_populated_zone'
- 'for_each_possible_cpu' - 'for_each_possible_cpu'
- 'for_each_present_cpu' - 'for_each_present_cpu'
@ -260,9 +265,12 @@ ForEachMacros:
- 'for_each_property_of_node' - 'for_each_property_of_node'
- 'for_each_registered_fb' - 'for_each_registered_fb'
- 'for_each_reserved_mem_region' - 'for_each_reserved_mem_region'
- 'for_each_rtd_codec_dai' - 'for_each_rtd_codec_dais'
- 'for_each_rtd_codec_dai_rollback' - 'for_each_rtd_codec_dais_rollback'
- 'for_each_rtd_components' - 'for_each_rtd_components'
- 'for_each_rtd_cpu_dais'
- 'for_each_rtd_cpu_dais_rollback'
- 'for_each_rtd_dais'
- 'for_each_set_bit' - 'for_each_set_bit'
- 'for_each_set_bit_from' - 'for_each_set_bit_from'
- 'for_each_set_clump8' - 'for_each_set_clump8'
@ -334,6 +342,7 @@ ForEachMacros:
- 'klp_for_each_object' - 'klp_for_each_object'
- 'klp_for_each_object_safe' - 'klp_for_each_object_safe'
- 'klp_for_each_object_static' - 'klp_for_each_object_static'
- 'kunit_suite_for_each_test_case'
- 'kvm_for_each_memslot' - 'kvm_for_each_memslot'
- 'kvm_for_each_vcpu' - 'kvm_for_each_vcpu'
- 'list_for_each' - 'list_for_each'
@ -387,6 +396,7 @@ ForEachMacros:
- 'of_property_for_each_string' - 'of_property_for_each_string'
- 'of_property_for_each_u32' - 'of_property_for_each_u32'
- 'pci_bus_for_each_resource' - 'pci_bus_for_each_resource'
- 'pcm_for_each_format'
- 'ping_portaddr_for_each_entry' - 'ping_portaddr_for_each_entry'
- 'plist_for_each' - 'plist_for_each'
- 'plist_for_each_continue' - 'plist_for_each_continue'
@ -482,7 +492,7 @@ KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: '' MacroBlockBegin: ''
MacroBlockEnd: '' MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1 MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner NamespaceIndentation: None
#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0 #ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0
ObjCBlockIndentWidth: 8 ObjCBlockIndentWidth: 8
ObjCSpaceAfterProperty: true ObjCSpaceAfterProperty: true

View File

@ -5187,8 +5187,7 @@
usbcore.old_scheme_first= usbcore.old_scheme_first=
[USB] Start with the old device initialization [USB] Start with the old device initialization
scheme, applies only to low and full-speed devices scheme (default 0 = off).
(default 0 = off).
usbcore.usbfs_memory_mb= usbcore.usbfs_memory_mb=
[USB] Memory limit (in MB) for buffers allocated by [USB] Memory limit (in MB) for buffers allocated by

View File

@ -390,9 +390,17 @@ When ``kptr_restrict`` is set to 2, kernel pointers printed using
modprobe modprobe
======== ========
This gives the full path of the modprobe command which the kernel will The full path to the usermode helper for autoloading kernel modules,
use to load modules. This can be used to debug module loading by default "/sbin/modprobe". This binary is executed when the kernel
requests:: 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 '#! /bin/sh' > /tmp/modprobe
echo 'echo "$@" >> /tmp/modprobe.log' >> /tmp/modprobe echo 'echo "$@" >> /tmp/modprobe.log' >> /tmp/modprobe
@ -400,10 +408,15 @@ requests::
chmod a+x /tmp/modprobe chmod a+x /tmp/modprobe
echo /tmp/modprobe > /proc/sys/kernel/modprobe echo /tmp/modprobe > /proc/sys/kernel/modprobe
This only applies when the *kernel* is requesting that the module be Alternatively, if this sysctl is set to the empty string, then module
loaded; it won't have any effect if the module is being loaded autoloading is completely disabled. The kernel will not try to
explicitly using ``modprobe`` from userspace. 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 modules_disabled
================ ================
@ -446,28 +459,6 @@ Notes:
successful IPC object allocation. If an IPC object allocation syscall successful IPC object allocation. If an IPC object allocation syscall
fails, it is undefined if the value remains unmodified or is reset to -1. 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 nmi_watchdog
============ ============

View File

@ -23,6 +23,7 @@ optional external memory-mapped interface.
Version 1 of the Activity Monitors architecture implements a counter group Version 1 of the Activity Monitors architecture implements a counter group
of four fixed and architecturally defined 64-bit event counters. of four fixed and architecturally defined 64-bit event counters.
- CPU cycle counter: increments at the frequency of the CPU. - CPU cycle counter: increments at the frequency of the CPU.
- Constant counter: increments at the fixed frequency of the system - Constant counter: increments at the fixed frequency of the system
clock. clock.
@ -57,6 +58,7 @@ counters, only the presence of the extension.
Firmware (code running at higher exception levels, e.g. arm-tf) support is Firmware (code running at higher exception levels, e.g. arm-tf) support is
needed to: needed to:
- Enable access for lower exception levels (EL2 and EL1) to the AMU - Enable access for lower exception levels (EL2 and EL1) to the AMU
registers. registers.
- Enable the counters. If not enabled these will read as 0. - Enable the counters. If not enabled these will read as 0.
@ -78,6 +80,7 @@ are not trapped in EL2/EL3.
The fixed counters of AMUv1 are accessible though the following system The fixed counters of AMUv1 are accessible though the following system
register definitions: register definitions:
- SYS_AMEVCNTR0_CORE_EL0 - SYS_AMEVCNTR0_CORE_EL0
- SYS_AMEVCNTR0_CONST_EL0 - SYS_AMEVCNTR0_CONST_EL0
- SYS_AMEVCNTR0_INST_RET_EL0 - SYS_AMEVCNTR0_INST_RET_EL0
@ -93,6 +96,7 @@ Userspace access
---------------- ----------------
Currently, access from userspace to the AMU registers is disabled due to: Currently, access from userspace to the AMU registers is disabled due to:
- Security reasons: they might expose information about code executed in - Security reasons: they might expose information about code executed in
secure mode. secure mode.
- Purpose: AMU counters are intended for system management use. - Purpose: AMU counters are intended for system management use.
@ -105,6 +109,7 @@ Virtualization
Currently, access from userspace (EL0) and kernelspace (EL1) on the KVM Currently, access from userspace (EL0) and kernelspace (EL1) on the KVM
guest side is disabled due to: guest side is disabled due to:
- Security reasons: they might expose information about code executed - Security reasons: they might expose information about code executed
by other guests or the host. by other guests or the host.

View File

@ -154,9 +154,9 @@ architectures. These are the recommended replacements:
Use ktime_get() or ktime_get_ts64() instead. Use ktime_get() or ktime_get_ts64() instead.
.. c:function:: struct timeval do_gettimeofday( void ) .. c:function:: void do_gettimeofday( struct timeval * )
struct timespec getnstimeofday( void ) void getnstimeofday( struct timespec * )
struct timespec64 getnstimeofday64( void ) void getnstimeofday64( struct timespec64 * )
void ktime_get_real_ts( struct timespec * ) void ktime_get_real_ts( struct timespec * )
ktime_get_real_ts64() is a direct replacement, but consider using ktime_get_real_ts64() is a direct replacement, but consider using

View File

@ -2,6 +2,7 @@
DT_DOC_CHECKER ?= dt-doc-validate DT_DOC_CHECKER ?= dt-doc-validate
DT_EXTRACT_EX ?= dt-extract-example DT_EXTRACT_EX ?= dt-extract-example
DT_MK_SCHEMA ?= dt-mk-schema DT_MK_SCHEMA ?= dt-mk-schema
DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<) quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \ cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
@ -13,16 +14,18 @@ $(obj)/%.example.dts: $(src)/%.yaml FORCE
# Use full schemas when checking %.example.dts # Use full schemas when checking %.example.dts
DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
quiet_cmd_mk_schema = SCHEMA $@ find_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
DT_DOCS = $(addprefix $(src)/, \
$(shell \
cd $(srctree)/$(src) && \
find * \( -name '*.yaml' ! \
-name 'processed-schema*' ! \ -name 'processed-schema*' ! \
-name '*.example.dt.yaml' \) \ -name '*.example.dt.yaml' \)
))
quiet_cmd_mk_schema = SCHEMA $@
cmd_mk_schema = rm -f $@ ; \
$(if $(DT_MK_SCHEMA_FLAGS), \
echo $(real-prereqs), \
$(find_cmd)) | \
xargs $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) >> $@
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
DT_SCHEMA_FILES ?= $(DT_DOCS) DT_SCHEMA_FILES ?= $(DT_DOCS)
@ -37,7 +40,7 @@ override DTC_FLAGS := \
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE $(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
$(call if_changed,mk_schema) $(call if_changed,mk_schema)
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u $(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG)
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE $(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
$(call if_changed,mk_schema) $(call if_changed,mk_schema)

View File

@ -42,6 +42,10 @@ properties:
description: description:
See section 2.3.9 of the DeviceTree Specification. See section 2.3.9 of the DeviceTree Specification.
'#address-cells': true
'#size-cells': true
required: required:
- "#interconnect-cells" - "#interconnect-cells"
- compatible - compatible
@ -59,6 +63,8 @@ examples:
compatible = "allwinner,sun5i-a13-mbus"; compatible = "allwinner,sun5i-a13-mbus";
reg = <0x01c01000 0x1000>; reg = <0x01c01000 0x1000>;
clocks = <&ccu CLK_MBUS>; clocks = <&ccu CLK_MBUS>;
#address-cells = <1>;
#size-cells = <1>;
dma-ranges = <0x00000000 0x40000000 0x20000000>; dma-ranges = <0x00000000 0x40000000 0x20000000>;
#interconnect-cells = <1>; #interconnect-cells = <1>;
}; };

View File

@ -91,7 +91,7 @@ required:
examples: examples:
- | - |
vco1: clock@00 { vco1: clock {
compatible = "arm,impd1-vco1"; compatible = "arm,impd1-vco1";
#clock-cells = <0>; #clock-cells = <0>;
lock-offset = <0x08>; lock-offset = <0x08>;

View File

@ -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 The ADV7123 is a digital-to-analog converter that outputs VGA signals from a
parallel video input. parallel video input.

View File

@ -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 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 transmitters compatible with HDMI 1.4 and DVI 1.0. They support color space

View File

@ -37,7 +37,6 @@ examples:
dsi { dsi {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <0xff450000 0x1000>;
panel@0 { panel@0 {
compatible = "leadtek,ltk500hd1829"; compatible = "leadtek,ltk500hd1829";

View File

@ -96,12 +96,20 @@ properties:
If set, reverse the bit order described in the data mappings below on all If set, reverse the bit order described in the data mappings below on all
data lanes, transmitting bits for slots 6 to 0 instead of 0 to 6. data lanes, transmitting bits for slots 6 to 0 instead of 0 to 6.
port: true
ports: true
required: required:
- compatible - compatible
- data-mapping - data-mapping
- width-mm - width-mm
- height-mm - height-mm
- panel-timing - panel-timing
oneOf:
- required:
- port - port
- required:
- ports
... ...

View File

@ -37,7 +37,6 @@ examples:
dsi { dsi {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <0xff450000 0x1000>;
panel@0 { panel@0 {
compatible = "xinpeng,xpp055c272"; compatible = "xinpeng,xpp055c272";

View File

@ -1,4 +1,4 @@
Analog Device AXI-DMAC DMA controller Analog Devices AXI-DMAC DMA controller
Required properties: Required properties:
- compatible: Must be "adi,axi-dmac-1.00.a". - compatible: Must be "adi,axi-dmac-1.00.a".

View File

@ -2,7 +2,7 @@
# Copyright 2019 Analog Devices Inc. # Copyright 2019 Analog Devices Inc.
%YAML 1.2 %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# $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AXI FAN Control Device Tree Bindings title: Analog Devices AXI FAN Control Device Tree Bindings
@ -47,7 +47,7 @@ required:
examples: examples:
- | - |
fpga_axi: fpga-axi@0 { fpga_axi: fpga-axi {
#address-cells = <0x2>; #address-cells = <0x2>;
#size-cells = <0x1>; #size-cells = <0x1>;

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2 %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# $schema: http://devicetree.org/meta-schemas/core.yaml#
title: ADT7475 hwmon sensor title: ADT7475 hwmon sensor

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2 %YAML 1.2
--- ---
$id: "http://devicetree.org/schemas/bindings/iio/adc/st,stm32-adc.yaml#" $id: "http://devicetree.org/schemas/iio/adc/st,stm32-adc.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#" $schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: STMicroelectronics STM32 ADC bindings title: STMicroelectronics STM32 ADC bindings

View File

@ -1,4 +1,4 @@
* Analog Device AD5755 IIO Multi-Channel DAC Linux Driver * Analog Devices AD5755 IIO Multi-Channel DAC Linux Driver
Required properties: Required properties:
- compatible: Has to contain one of the following: - compatible: Has to contain one of the following:

View File

@ -2,7 +2,7 @@
# Copyright 2020 Analog Devices Inc. # Copyright 2020 Analog Devices Inc.
%YAML 1.2 %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# $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD5770R DAC device driver title: Analog Devices AD5770R DAC device driver
@ -49,93 +49,86 @@ properties:
asserted during driver probe. asserted during driver probe.
maxItems: 1 maxItems: 1
channel0: channel@0:
description: Represents an external channel which are description: Represents an external channel which are
connected to the DAC. Channel 0 can act both as a current connected to the DAC. Channel 0 can act both as a current
source and sink. source and sink.
type: object type: object
properties: properties:
num: reg:
description: This represents the channel number. description: This represents the channel number.
items:
const: 0 const: 0
adi,range-microamp: adi,range-microamp:
description: Output range of the channel. description: Output range of the channel.
oneOf: oneOf:
- $ref: /schemas/types.yaml#/definitions/int32-array
- items: - items:
- enum: [0 300000] - const: 0
- enum: [-60000 0] - const: 300000
- enum: [-60000 300000] - items:
- const: -60000
- const: 0
- items:
- const: -60000
- const: 300000
channel1: channel@1:
description: Represents an external channel which are description: Represents an external channel which are
connected to the DAC. connected to the DAC.
type: object type: object
properties: properties:
num: reg:
description: This represents the channel number. description: This represents the channel number.
items:
const: 1 const: 1
adi,range-microamp: adi,range-microamp:
description: Output range of the channel. description: Output range of the channel.
oneOf: items:
- $ref: /schemas/types.yaml#/definitions/uint32-array - const: 0
- items: - enum: [ 140000, 250000 ]
- enum: [0 140000]
- enum: [0 250000]
channel2: channel@2:
description: Represents an external channel which are description: Represents an external channel which are
connected to the DAC. connected to the DAC.
type: object type: object
properties: properties:
num: reg:
description: This represents the channel number. description: This represents the channel number.
items:
const: 2 const: 2
adi,range-microamp: adi,range-microamp:
description: Output range of the channel. description: Output range of the channel.
oneOf: items:
- $ref: /schemas/types.yaml#/definitions/uint32-array - const: 0
- items: - enum: [ 55000, 150000 ]
- enum: [0 140000]
- enum: [0 250000]
patternProperties: patternProperties:
"^channel@([3-5])$": "^channel@([3-5])$":
type: object type: object
description: Represents the external channels which are connected to the DAC. description: Represents the external channels which are connected to the DAC.
properties: properties:
num: reg:
description: This represents the channel number. description: This represents the channel number.
items:
minimum: 3 minimum: 3
maximum: 5 maximum: 5
adi,range-microamp: adi,range-microamp:
description: Output range of the channel. description: Output range of the channel.
oneOf: items:
- $ref: /schemas/types.yaml#/definitions/uint32-array - const: 0
- items: - enum: [ 45000, 100000 ]
- enum: [0 45000]
- enum: [0 100000]
required: required:
- reg - reg
- diff-channels - channel@0
- channel0 - channel@1
- channel1 - channel@2
- channel2 - channel@3
- channel3 - channel@4
- channel4 - channel@5
- channel5
examples: examples:
- | - |
@ -144,40 +137,42 @@ examples:
#size-cells = <0>; #size-cells = <0>;
ad5770r@0 { ad5770r@0 {
compatible = "ad5770r"; compatible = "adi,ad5770r";
reg = <0>; reg = <0>;
spi-max-frequency = <1000000>; spi-max-frequency = <1000000>;
vref-supply = <&vref>; vref-supply = <&vref>;
adi,external-resistor; adi,external-resistor;
reset-gpios = <&gpio 22 0>; reset-gpios = <&gpio 22 0>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 { channel@0 {
num = <0>; reg = <0>;
adi,range-microamp = <(-60000) 300000>; adi,range-microamp = <0 300000>;
}; };
channel@1 { channel@1 {
num = <1>; reg = <1>;
adi,range-microamp = <0 140000>; adi,range-microamp = <0 140000>;
}; };
channel@2 { channel@2 {
num = <2>; reg = <2>;
adi,range-microamp = <0 55000>; adi,range-microamp = <0 55000>;
}; };
channel@3 { channel@3 {
num = <3>; reg = <3>;
adi,range-microamp = <0 45000>; adi,range-microamp = <0 45000>;
}; };
channel@4 { channel@4 {
num = <4>; reg = <4>;
adi,range-microamp = <0 45000>; adi,range-microamp = <0 45000>;
}; };
channel@5 { channel@5 {
num = <5>; reg = <5>;
adi,range-microamp = <0 45000>; adi,range-microamp = <0 45000>;
}; };
}; };

View File

@ -109,7 +109,7 @@ examples:
- | - |
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
i2c@00000000 { i2c {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
edt-ft5x06@38 { edt-ft5x06@38 {

View File

@ -56,8 +56,7 @@ properties:
cell with zero. cell with zero.
allOf: allOf:
- $ref: /schemas/types.yaml#/definitions/uint32-array - $ref: /schemas/types.yaml#/definitions/uint32-array
- items: - minItems: 4
minItems: 4
maxItems: 4 maxItems: 4

View File

@ -97,6 +97,10 @@ examples:
#include <dt-bindings/clock/tegra186-clock.h> #include <dt-bindings/clock/tegra186-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
memory-controller@2c00000 { memory-controller@2c00000 {
compatible = "nvidia,tegra186-mc"; compatible = "nvidia,tegra186-mc";
reg = <0x0 0x02c00000 0x0 0xb0000>; reg = <0x0 0x02c00000 0x0 0xb0000>;
@ -105,7 +109,7 @@ examples:
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>; ranges = <0x0 0x02c00000 0x0 0x02c00000 0x0 0xb0000>;
/* /*
* Memory clients have access to all 40 bits that the memory * Memory clients have access to all 40 bits that the memory
@ -123,6 +127,7 @@ examples:
nvidia,bpmp = <&bpmp>; nvidia,bpmp = <&bpmp>;
}; };
}; };
};
bpmp: bpmp { bpmp: bpmp {
compatible = "nvidia,tegra186-bpmp"; compatible = "nvidia,tegra186-bpmp";

View File

@ -123,6 +123,8 @@ examples:
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
i2c { i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic: pmic@4b { pmic: pmic@4b {
compatible = "rohm,bd71837"; compatible = "rohm,bd71837";
reg = <0x4b>; reg = <0x4b>;

View File

@ -128,6 +128,8 @@ examples:
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
i2c { i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic: pmic@4b { pmic: pmic@4b {
compatible = "rohm,bd71847"; compatible = "rohm,bd71847";
reg = <0x4b>; reg = <0x4b>;

View File

@ -261,8 +261,6 @@ properties:
additionalProperties: false additionalProperties: false
additionalProperties: false
required: required:
- compatible - compatible
- reg - reg
@ -274,7 +272,7 @@ examples:
- | - |
#include <dt-bindings/mfd/st,stpmic1.h> #include <dt-bindings/mfd/st,stpmic1.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
i2c@0 { i2c {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
pmic@33 { pmic@33 {

View File

@ -43,6 +43,9 @@ properties:
second group of digits is the Phy Identifier 2 register, second group of digits is the Phy Identifier 2 register,
this is the chip vendor OUI bits 19:24, followed by 10 this is the chip vendor OUI bits 19:24, followed by 10
bits of a vendor specific ID. 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: - items:
- pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$" - pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"
- const: ethernet-phy-ieee802.3-c45 - const: ethernet-phy-ieee802.3-c45

View File

@ -22,6 +22,8 @@ Optional properties:
- fsl,err006687-workaround-present: If present indicates that the system has - fsl,err006687-workaround-present: If present indicates that the system has
the hardware workaround for ERR006687 applied and does not need a software the hardware workaround for ERR006687 applied and does not need a software
workaround. 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 -interrupt-names: names of the interrupts listed in interrupts property in
the same order. The defaults if not specified are the same order. The defaults if not specified are
__Number of interrupts__ __Default__ __Number of interrupts__ __Default__

View File

@ -48,6 +48,7 @@ examples:
switch@10 { switch@10 {
compatible = "qca,qca8337"; compatible = "qca,qca8337";
reg = <0x10>;
/* ... */ /* ... */
}; };
}; };

View File

@ -29,7 +29,7 @@ Required properties for compatible string qcom,wcn399x-bt:
Optional 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 - firmware-name: specify the name of nvm firmware to load
- clocks: clock provided to the controller - clocks: clock provided to the controller

View File

@ -97,7 +97,7 @@ then:
- $ref: /schemas/types.yaml#/definitions/uint32 - $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0 - minimum: 0
maximum: 63 maximum: 63
default: 0 default: 32
qcom,charge-ctrl-value: qcom,charge-ctrl-value:
description: description:
@ -130,7 +130,7 @@ then:
- $ref: /schemas/types.yaml#/definitions/uint32 - $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0 - minimum: 0
maximum: 3 maximum: 3
default: 2 default: 0
qcom,preemphasis-width: qcom,preemphasis-width:
description: description:
@ -152,7 +152,7 @@ then:
- $ref: /schemas/types.yaml#/definitions/uint32 - $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0 - minimum: 0
maximum: 3 maximum: 3
default: 0 default: 1
required: required:
- compatible - compatible

View File

@ -146,7 +146,7 @@ patternProperties:
bindings specified in bindings specified in
Documentation/devicetree/bindings/phy/phy-cadence-sierra.txt Documentation/devicetree/bindings/phy/phy-cadence-sierra.txt
Torrent SERDES should follow the bindings specified in 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: required:
- compatible - compatible

View File

@ -31,10 +31,17 @@ additionalProperties: false
examples: examples:
- | - |
spi {
#address-cells = <1>;
#size-cells = <0>;
cros-ec@0 { cros-ec@0 {
compatible = "google,cros-ec-spi"; compatible = "google,cros-ec-spi";
reg = <0>;
cros_ec_pwm: ec-pwm { cros_ec_pwm: ec-pwm {
compatible = "google,cros-ec-pwm"; compatible = "google,cros-ec-pwm";
#pwm-cells = <1>; #pwm-cells = <1>;
}; };
}; };
};

View File

@ -37,7 +37,6 @@ properties:
type: object type: object
additionalProperties: false additionalProperties: false
additionalProperties: false
required: required:
- compatible - compatible

View File

@ -75,7 +75,8 @@ properties:
description: | description: |
disables over voltage protection of this buck disables over voltage protection of this buck
additionalProperties: false unevaluatedProperties: false
additionalProperties: false additionalProperties: false
required: required:

View File

@ -35,6 +35,8 @@ patternProperties:
description: description:
should be "ldo1", ..., "ldo7" should be "ldo1", ..., "ldo7"
unevaluatedProperties: false
"^BUCK[1-7]$": "^BUCK[1-7]$":
type: object type: object
allOf: allOf:
@ -103,5 +105,7 @@ patternProperties:
required: required:
- regulator-name - regulator-name
additionalProperties: false
unevaluatedProperties: false
additionalProperties: false additionalProperties: false

View File

@ -41,6 +41,8 @@ patternProperties:
description: description:
should be "ldo1", ..., "ldo7" should be "ldo1", ..., "ldo7"
unevaluatedProperties: false
"^BUCK[1-8]$": "^BUCK[1-8]$":
type: object type: object
allOf: allOf:
@ -99,5 +101,7 @@ patternProperties:
required: required:
- regulator-name - regulator-name
additionalProperties: false
unevaluatedProperties: false
additionalProperties: false additionalProperties: false

View File

@ -40,6 +40,8 @@ patternProperties:
description: description:
should be "ldo1", ..., "ldo6" should be "ldo1", ..., "ldo6"
unevaluatedProperties: false
"^BUCK[1-6]$": "^BUCK[1-6]$":
type: object type: object
allOf: allOf:
@ -93,5 +95,7 @@ patternProperties:
required: required:
- regulator-name - regulator-name
additionalProperties: false
unevaluatedProperties: false
additionalProperties: false additionalProperties: false

View File

@ -39,7 +39,7 @@ additionalProperties: false
examples: examples:
- | - |
rng { rng@7e104000 {
compatible = "brcm,bcm2835-rng"; compatible = "brcm,bcm2835-rng";
reg = <0x7e104000 0x10>; reg = <0x7e104000 0x10>;
interrupts = <2 29>; interrupts = <2 29>;

View File

@ -56,6 +56,9 @@ properties:
- const: tx - const: tx
- const: rx - const: rx
power-domains:
maxItems: 1
rockchip,capture-channels: rockchip,capture-channels:
allOf: allOf:
- $ref: /schemas/types.yaml#/definitions/uint32 - $ref: /schemas/types.yaml#/definitions/uint32

View File

@ -1,45 +0,0 @@
* Rockchip SPDIF transceiver
The S/PDIF audio block is a stereo transceiver that allows the
processor to receive and transmit digital audio via an coaxial cable or
a fibre cable.
Required properties:
- compatible: should be one of the following:
- "rockchip,rk3066-spdif"
- "rockchip,rk3188-spdif"
- "rockchip,rk3228-spdif"
- "rockchip,rk3288-spdif"
- "rockchip,rk3328-spdif"
- "rockchip,rk3366-spdif"
- "rockchip,rk3368-spdif"
- "rockchip,rk3399-spdif"
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: should contain the SPDIF interrupt.
- dmas: DMA specifiers for tx dma. See the DMA client binding,
Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should be "tx"
- clocks: a list of phandle + clock-specifier pairs, one for each entry
in clock-names.
- clock-names: should contain following:
- "hclk": clock for SPDIF controller
- "mclk" : clock for SPDIF bus
Required properties on RK3288:
- rockchip,grf: the phandle of the syscon node for the general register
file (GRF)
Example for the rk3188 SPDIF controller:
spdif: spdif@1011e000 {
compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
reg = <0x1011e000 0x2000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac1_s 8>;
dma-names = "tx";
clock-names = "hclk", "mclk";
clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
#sound-dai-cells = <0>;
};

View File

@ -0,0 +1,101 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/rockchip-spdif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip SPDIF transceiver
description:
The S/PDIF audio block is a stereo transceiver that allows the
processor to receive and transmit digital audio via a coaxial or
fibre cable.
maintainers:
- Heiko Stuebner <heiko@sntech.de>
properties:
compatible:
oneOf:
- const: rockchip,rk3066-spdif
- const: rockchip,rk3228-spdif
- const: rockchip,rk3328-spdif
- const: rockchip,rk3366-spdif
- const: rockchip,rk3368-spdif
- const: rockchip,rk3399-spdif
- items:
- enum:
- rockchip,rk3188-spdif
- rockchip,rk3288-spdif
- const: rockchip,rk3066-spdif
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
items:
- description: clock for SPDIF bus
- description: clock for SPDIF controller
clock-names:
items:
- const: mclk
- const: hclk
dmas:
maxItems: 1
dma-names:
const: tx
power-domains:
maxItems: 1
rockchip,grf:
$ref: /schemas/types.yaml#/definitions/phandle
description:
The phandle of the syscon node for the GRF register.
Required property on RK3288.
"#sound-dai-cells":
const: 0
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- dmas
- dma-names
- "#sound-dai-cells"
if:
properties:
compatible:
contains:
const: rockchip,rk3288-spdif
then:
required:
- rockchip,grf
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/rk3188-cru.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
spdif: spdif@1011e000 {
compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
reg = <0x1011e000 0x2000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_SPDIF>, <&cru HCLK_SPDIF>;
clock-names = "mclk", "hclk";
dmas = <&dmac1_s 8>;
dma-names = "tx";
#sound-dai-cells = <0>;
};

View File

@ -61,7 +61,7 @@ examples:
#include <dt-bindings/clock/qcom,gcc-sdm845.h> #include <dt-bindings/clock/qcom,gcc-sdm845.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
soc: soc@0 { soc: soc {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;

View File

@ -56,7 +56,7 @@ additionalProperties: false
examples: examples:
- | - |
#include <dt-bindings/clock/jz4740-cgu.h> #include <dt-bindings/clock/jz4740-cgu.h>
usb_phy: usb-phy@0 { usb_phy: usb-phy {
compatible = "usb-nop-xceiv"; compatible = "usb-nop-xceiv";
#phy-cells = <0>; #phy-cells = <0>;
}; };

View File

@ -53,7 +53,7 @@ the node is not important. The content of the node is defined in dwc3.txt.
Phy documentation is provided in the following places: Phy documentation is provided in the following places:
Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY 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,qusb2-phy.yaml - USB2 QUSB2 PHY
Example device nodes: Example device nodes:

View File

@ -18,6 +18,7 @@ properties:
- renesas,r8a774c0-usb3-peri # RZ/G2E - renesas,r8a774c0-usb3-peri # RZ/G2E
- renesas,r8a7795-usb3-peri # R-Car H3 - renesas,r8a7795-usb3-peri # R-Car H3
- renesas,r8a7796-usb3-peri # R-Car M3-W - renesas,r8a7796-usb3-peri # R-Car M3-W
- renesas,r8a77961-usb3-peri # R-Car M3-W+
- renesas,r8a77965-usb3-peri # R-Car M3-N - renesas,r8a77965-usb3-peri # R-Car M3-N
- renesas,r8a77990-usb3-peri # R-Car E3 - renesas,r8a77990-usb3-peri # R-Car E3
- const: renesas,rcar-gen3-usb3-peri - const: renesas,rcar-gen3-usb3-peri

View File

@ -40,6 +40,7 @@ properties:
- renesas,usbhs-r8a774c0 # RZ/G2E - renesas,usbhs-r8a774c0 # RZ/G2E
- renesas,usbhs-r8a7795 # R-Car H3 - renesas,usbhs-r8a7795 # R-Car H3
- renesas,usbhs-r8a7796 # R-Car M3-W - renesas,usbhs-r8a7796 # R-Car M3-W
- renesas,usbhs-r8a77961 # R-Car M3-W+
- renesas,usbhs-r8a77965 # R-Car M3-N - renesas,usbhs-r8a77965 # R-Car M3-N
- renesas,usbhs-r8a77990 # R-Car E3 - renesas,usbhs-r8a77990 # R-Car E3
- renesas,usbhs-r8a77995 # R-Car D3 - renesas,usbhs-r8a77995 # R-Car D3

View File

@ -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. the node is not important. The content of the node is defined in dwc3.txt.
Phy documentation is provided in the following places: 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 Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt - Type-C PHY
Example device nodes: Example device nodes:

View File

@ -16,7 +16,8 @@ Required properties:
- "renesas,xhci-r8a7791" for r8a7791 SoC - "renesas,xhci-r8a7791" for r8a7791 SoC
- "renesas,xhci-r8a7793" for r8a7793 SoC - "renesas,xhci-r8a7793" for r8a7793 SoC
- "renesas,xhci-r8a7795" for r8a7795 SoC - "renesas,xhci-r8a7795" for r8a7795 SoC
- "renesas,xhci-r8a7796" for r8a7796 SoC - "renesas,xhci-r8a7796" for r8a77960 SoC
- "renesas,xhci-r8a77961" for r8a77961 SoC
- "renesas,xhci-r8a77965" for r8a77965 SoC - "renesas,xhci-r8a77965" for r8a77965 SoC
- "renesas,xhci-r8a77990" for r8a77990 SoC - "renesas,xhci-r8a77990" for r8a77990 SoC
- "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 or RZ/G1 compatible - "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 or RZ/G1 compatible

View File

@ -79,7 +79,7 @@ created with any of::
struct dentry *parent, u8 *value); struct dentry *parent, u8 *value);
void debugfs_create_u16(const char *name, umode_t mode, void debugfs_create_u16(const char *name, umode_t mode,
struct dentry *parent, u16 *value); struct dentry *parent, u16 *value);
struct dentry *debugfs_create_u32(const char *name, umode_t mode, void debugfs_create_u32(const char *name, umode_t mode,
struct dentry *parent, u32 *value); struct dentry *parent, u32 *value);
void debugfs_create_u64(const char *name, umode_t mode, void debugfs_create_u64(const char *name, umode_t mode,
struct dentry *parent, u64 *value); struct dentry *parent, u64 *value);

View File

@ -16,7 +16,7 @@ Supported chips:
* Renesas ISL68220 * Renesas ISL68220
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl68220'
Addresses scanned: - Addresses scanned: -
@ -26,7 +26,7 @@ Supported chips:
* Renesas ISL68221 * Renesas ISL68221
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl68221'
Addresses scanned: - Addresses scanned: -
@ -36,7 +36,7 @@ Supported chips:
* Renesas ISL68222 * Renesas ISL68222
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl68222'
Addresses scanned: - Addresses scanned: -
@ -46,7 +46,7 @@ Supported chips:
* Renesas ISL68223 * Renesas ISL68223
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl68223'
Addresses scanned: - Addresses scanned: -
@ -56,7 +56,7 @@ Supported chips:
* Renesas ISL68224 * Renesas ISL68224
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl68224'
Addresses scanned: - Addresses scanned: -
@ -66,7 +66,7 @@ Supported chips:
* Renesas ISL68225 * Renesas ISL68225
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl68225'
Addresses scanned: - Addresses scanned: -
@ -76,7 +76,7 @@ Supported chips:
* Renesas ISL68226 * Renesas ISL68226
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl68226'
Addresses scanned: - Addresses scanned: -
@ -86,7 +86,7 @@ Supported chips:
* Renesas ISL68227 * Renesas ISL68227
Prefix: 'raa_dmpvr2_1rail' Prefix: 'isl68227'
Addresses scanned: - Addresses scanned: -
@ -96,7 +96,7 @@ Supported chips:
* Renesas ISL68229 * Renesas ISL68229
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl68229'
Addresses scanned: - Addresses scanned: -
@ -106,7 +106,7 @@ Supported chips:
* Renesas ISL68233 * Renesas ISL68233
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl68233'
Addresses scanned: - Addresses scanned: -
@ -116,7 +116,7 @@ Supported chips:
* Renesas ISL68239 * Renesas ISL68239
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl68239'
Addresses scanned: - Addresses scanned: -
@ -126,7 +126,7 @@ Supported chips:
* Renesas ISL69222 * Renesas ISL69222
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69222'
Addresses scanned: - Addresses scanned: -
@ -136,7 +136,7 @@ Supported chips:
* Renesas ISL69223 * Renesas ISL69223
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl69223'
Addresses scanned: - Addresses scanned: -
@ -146,7 +146,7 @@ Supported chips:
* Renesas ISL69224 * Renesas ISL69224
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69224'
Addresses scanned: - Addresses scanned: -
@ -156,7 +156,7 @@ Supported chips:
* Renesas ISL69225 * Renesas ISL69225
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69225'
Addresses scanned: - Addresses scanned: -
@ -166,7 +166,7 @@ Supported chips:
* Renesas ISL69227 * Renesas ISL69227
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl69227'
Addresses scanned: - Addresses scanned: -
@ -176,7 +176,7 @@ Supported chips:
* Renesas ISL69228 * Renesas ISL69228
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl69228'
Addresses scanned: - Addresses scanned: -
@ -186,7 +186,7 @@ Supported chips:
* Renesas ISL69234 * Renesas ISL69234
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69234'
Addresses scanned: - Addresses scanned: -
@ -196,7 +196,7 @@ Supported chips:
* Renesas ISL69236 * Renesas ISL69236
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69236'
Addresses scanned: - Addresses scanned: -
@ -206,7 +206,7 @@ Supported chips:
* Renesas ISL69239 * Renesas ISL69239
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl69239'
Addresses scanned: - Addresses scanned: -
@ -216,7 +216,7 @@ Supported chips:
* Renesas ISL69242 * Renesas ISL69242
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69242'
Addresses scanned: - Addresses scanned: -
@ -226,7 +226,7 @@ Supported chips:
* Renesas ISL69243 * Renesas ISL69243
Prefix: 'raa_dmpvr2_1rail' Prefix: 'isl69243'
Addresses scanned: - Addresses scanned: -
@ -236,7 +236,7 @@ Supported chips:
* Renesas ISL69247 * Renesas ISL69247
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69247'
Addresses scanned: - Addresses scanned: -
@ -246,7 +246,7 @@ Supported chips:
* Renesas ISL69248 * Renesas ISL69248
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69248'
Addresses scanned: - Addresses scanned: -
@ -256,7 +256,7 @@ Supported chips:
* Renesas ISL69254 * Renesas ISL69254
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69254'
Addresses scanned: - Addresses scanned: -
@ -266,7 +266,7 @@ Supported chips:
* Renesas ISL69255 * Renesas ISL69255
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69255'
Addresses scanned: - Addresses scanned: -
@ -276,7 +276,7 @@ Supported chips:
* Renesas ISL69256 * Renesas ISL69256
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69256'
Addresses scanned: - Addresses scanned: -
@ -286,7 +286,7 @@ Supported chips:
* Renesas ISL69259 * Renesas ISL69259
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69259'
Addresses scanned: - Addresses scanned: -
@ -296,7 +296,7 @@ Supported chips:
* Renesas ISL69260 * Renesas ISL69260
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69260'
Addresses scanned: - Addresses scanned: -
@ -306,7 +306,7 @@ Supported chips:
* Renesas ISL69268 * Renesas ISL69268
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69268'
Addresses scanned: - Addresses scanned: -
@ -316,7 +316,7 @@ Supported chips:
* Renesas ISL69269 * Renesas ISL69269
Prefix: 'raa_dmpvr2_3rail' Prefix: 'isl69269'
Addresses scanned: - Addresses scanned: -
@ -326,7 +326,7 @@ Supported chips:
* Renesas ISL69298 * Renesas ISL69298
Prefix: 'raa_dmpvr2_2rail' Prefix: 'isl69298'
Addresses scanned: - Addresses scanned: -
@ -336,7 +336,7 @@ Supported chips:
* Renesas RAA228000 * Renesas RAA228000
Prefix: 'raa_dmpvr2_hv' Prefix: 'raa228000'
Addresses scanned: - Addresses scanned: -
@ -346,7 +346,7 @@ Supported chips:
* Renesas RAA228004 * Renesas RAA228004
Prefix: 'raa_dmpvr2_hv' Prefix: 'raa228004'
Addresses scanned: - Addresses scanned: -
@ -356,7 +356,7 @@ Supported chips:
* Renesas RAA228006 * Renesas RAA228006
Prefix: 'raa_dmpvr2_hv' Prefix: 'raa228006'
Addresses scanned: - Addresses scanned: -
@ -366,7 +366,7 @@ Supported chips:
* Renesas RAA228228 * Renesas RAA228228
Prefix: 'raa_dmpvr2_2rail' Prefix: 'raa228228'
Addresses scanned: - Addresses scanned: -
@ -376,7 +376,7 @@ Supported chips:
* Renesas RAA229001 * Renesas RAA229001
Prefix: 'raa_dmpvr2_2rail' Prefix: 'raa229001'
Addresses scanned: - Addresses scanned: -
@ -386,7 +386,7 @@ Supported chips:
* Renesas RAA229004 * Renesas RAA229004
Prefix: 'raa_dmpvr2_2rail' Prefix: 'raa229004'
Addresses scanned: - Addresses scanned: -

View File

@ -1241,7 +1241,8 @@ When kbuild executes, the following steps are followed (roughly):
will be displayed with "make KBUILD_VERBOSE=0". will be displayed with "make KBUILD_VERBOSE=0".
--- 6.9 Preprocessing linker scripts 6.9 Preprocessing linker scripts
--------------------------------
When the vmlinux image is built, the linker script When the vmlinux image is built, the linker script
arch/$(ARCH)/kernel/vmlinux.lds is used. arch/$(ARCH)/kernel/vmlinux.lds is used.

View File

@ -257,6 +257,8 @@ drivers:
* :doc:`netdevsim` * :doc:`netdevsim`
* :doc:`mlxsw` * :doc:`mlxsw`
.. _Generic-Packet-Trap-Groups:
Generic Packet Trap Groups Generic Packet Trap Groups
========================== ==========================

View File

@ -22,6 +22,7 @@ Contents:
z8530book z8530book
msg_zerocopy msg_zerocopy
failover failover
net_dim
net_failover net_failover
phy phy
sfp-phylink sfp-phylink

View File

@ -812,7 +812,7 @@ tcp_limit_output_bytes - INTEGER
tcp_challenge_ack_limit - INTEGER tcp_challenge_ack_limit - INTEGER
Limits number of Challenge ACK sent per second, as recommended Limits number of Challenge ACK sent per second, as recommended
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
Default: 100 Default: 1000
tcp_rx_skb_cache - BOOLEAN tcp_rx_skb_cache - BOOLEAN
Controls a per TCP socket cache of one skb, that might help Controls a per TCP socket cache of one skb, that might help
@ -983,6 +983,13 @@ ip_early_demux - BOOLEAN
reduces overall throughput, in such case you should disable it. reduces overall throughput, in such case you should disable it.
Default: 1 Default: 1
ping_group_range - 2 INTEGERS
Restrict ICMP_PROTO datagram sockets to users in the group range.
The default is "1 0", meaning, that nobody (not even root) may
create ping sockets. Setting it to "100 100" would grant permissions
to the single group. "0 4294967295" would enable it for the world, "100
4294967295" would enable it for the users, but not daemons.
tcp_early_demux - BOOLEAN tcp_early_demux - BOOLEAN
Enable early demux for established TCP sockets. Enable early demux for established TCP sockets.
Default: 1 Default: 1

View File

@ -1,28 +1,20 @@
======================================================
Net DIM - Generic Network Dynamic Interrupt Moderation Net DIM - Generic Network Dynamic Interrupt Moderation
====================================================== ======================================================
Author: :Author: Tal Gilboa <talgi@mellanox.com>
Tal Gilboa <talgi@mellanox.com>
.. contents:: :depth: 2
Contents Assumptions
========= ===========
- Assumptions
- Introduction
- The Net DIM Algorithm
- Registering a Network Device to DIM
- Example
Part 0: Assumptions
======================
This document assumes the reader has basic knowledge in network drivers This document assumes the reader has basic knowledge in network drivers
and in general interrupt moderation. and in general interrupt moderation.
Part I: Introduction Introduction
====================== ============
Dynamic Interrupt Moderation (DIM) (in networking) refers to changing the Dynamic Interrupt Moderation (DIM) (in networking) refers to changing the
interrupt moderation configuration of a channel in order to optimize packet 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. 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: Each iteration of the Net DIM algorithm follows these steps:
1. Calculates new data sample.
2. Compares it to previous sample. #. Calculates new data sample.
3. Makes a decision - suggests interrupt moderation configuration fields. #. Compares it to previous sample.
4. Applies a schedule work function, which applies suggested configuration. #. 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 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 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. 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, Net DIM API exposes the main function net_dim().
struct dim_sample end_sample). This function is the entry point to the Net 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 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 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, describes the state of DIM for a specific object (RX queue, TX queue,
other queues, etc.). This includes the current selected profile, previous data other queues, etc.). This includes the current selected profile, previous data
samples, the callback function provided by the driver and more. samples, the callback function provided by the driver and more.
Struct dim_sample describes a data sample, which will be compared to the :c:type:`struct dim_sample <dim_sample>` describes a data sample,
data sample stored in struct dim in order to decide on the algorithm's next 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 step. The sample should include bytes, packets and interrupts, measured by
the driver. 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 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() 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 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 :c:type:`struct dim <dim>` to the net_dim() function call. It is advised for
using Net DIM to hold a struct dim as part of its data structure and use it each entity using Net DIM to hold a :c:type:`struct dim <dim>` as part of its
as the main Net DIM API object. The struct dim_sample should hold the latest 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 bytes, packets and interrupts count. No need to perform any calculations, just
include the raw data. include the raw data.
@ -124,13 +120,13 @@ 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. 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 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. 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>
@ -172,3 +168,9 @@ int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...)
INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work); INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work);
... ...
} }
Dynamic Interrupt Moderation (DIM) library API
==============================================
.. kernel-doc:: include/linux/dim.h
:internal:

View File

@ -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 must be __BOOT_DS; interrupt must be disabled; %rsi must hold the base
address of the struct boot_params. address of the struct boot_params.
EFI Handover Protocol EFI Handover Protocol (deprecated)
===================== ==================================
This protocol allows boot loaders to defer initialisation to the EFI This protocol allows boot loaders to defer initialisation to the EFI
boot stub. The boot loader is required to load the kernel/initrd(s) 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 which is hdr->handover_offset bytes from the beginning of
startup_{32,64}. 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:: The function prototype for the handover entry point looks like this::
efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp) 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:: The boot loader *must* fill out the following fields in bp::
- hdr.code32_start
- hdr.cmd_line_ptr - hdr.cmd_line_ptr
- hdr.ramdisk_image (if applicable) - hdr.ramdisk_image (if applicable)
- hdr.ramdisk_size (if applicable) - hdr.ramdisk_size (if applicable)
All other fields should be zero. 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

View File

@ -189,7 +189,7 @@ F: drivers/net/hamradio/6pack.c
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/driver-api/80211/cfg80211.rst F: Documentation/driver-api/80211/cfg80211.rst
@ -506,7 +506,7 @@ F: drivers/hwmon/adm1029.c
ADM8211 WIRELESS DRIVER ADM8211 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
F: drivers/net/wireless/admtek/adm8211.* F: drivers/net/wireless/admtek/adm8211.*
ADP1653 FLASH CONTROLLER DRIVER ADP1653 FLASH CONTROLLER DRIVER
@ -571,7 +571,7 @@ F: Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml
F: drivers/input/misc/adxl34x.c F: drivers/input/misc/adxl34x.c
ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <michael.hennerich@analog.com>
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml
@ -923,7 +923,7 @@ F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
F: drivers/net/ethernet/amd/xgbe/ F: drivers/net/ethernet/amd/xgbe/
ANALOG DEVICES INC AD5686 DRIVER ANALOG DEVICES INC AD5686 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -931,7 +931,7 @@ F: drivers/iio/dac/ad5686*
F: drivers/iio/dac/ad5696* F: drivers/iio/dac/ad5696*
ANALOG DEVICES INC AD5758 DRIVER ANALOG DEVICES INC AD5758 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -947,7 +947,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml
F: drivers/iio/adc/ad7091r5.c F: drivers/iio/adc/ad7091r5.c
ANALOG DEVICES INC AD7124 DRIVER ANALOG DEVICES INC AD7124 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -971,7 +971,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
F: drivers/iio/adc/ad7292.c F: drivers/iio/adc/ad7292.c
ANALOG DEVICES INC AD7606 DRIVER ANALOG DEVICES INC AD7606 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
M: Beniamin Bia <beniamin.bia@analog.com> M: Beniamin Bia <beniamin.bia@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Supported S: Supported
@ -980,7 +980,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
F: drivers/iio/adc/ad7606.c F: drivers/iio/adc/ad7606.c
ANALOG DEVICES INC AD7768-1 DRIVER ANALOG DEVICES INC AD7768-1 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -1041,7 +1041,7 @@ F: Documentation/devicetree/bindings/hwmon/adi,adm1177.yaml
F: drivers/hwmon/adm1177.c F: drivers/hwmon/adm1177.c
ANALOG DEVICES INC ADP5061 DRIVER ANALOG DEVICES INC ADP5061 DRIVER
M: Stefan Popa <stefan.popa@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
S: Supported S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -1110,7 +1110,6 @@ F: drivers/iio/amplifiers/hmc425a.c
ANALOG DEVICES INC IIO DRIVERS ANALOG DEVICES INC IIO DRIVERS
M: Lars-Peter Clausen <lars@metafoo.de> M: Lars-Peter Clausen <lars@metafoo.de>
M: Michael Hennerich <Michael.Hennerich@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
M: Stefan Popa <stefan.popa@analog.com>
S: Supported S: Supported
W: http://wiki.analog.com/ W: http://wiki.analog.com/
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
@ -1324,7 +1323,10 @@ ARM INTEGRATOR, VERSATILE AND REALVIEW SUPPORT
M: Linus Walleij <linus.walleij@linaro.org> M: Linus Walleij <linus.walleij@linaro.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/arm/arm-boards F: Documentation/devicetree/bindings/arm/arm,integrator.yaml
F: Documentation/devicetree/bindings/arm/arm,realview.yaml
F: Documentation/devicetree/bindings/arm/arm,versatile.yaml
F: Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml
F: Documentation/devicetree/bindings/auxdisplay/arm-charlcd.txt F: Documentation/devicetree/bindings/auxdisplay/arm-charlcd.txt
F: Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml F: Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
F: Documentation/devicetree/bindings/i2c/i2c-versatile.txt F: Documentation/devicetree/bindings/i2c/i2c-versatile.txt
@ -2848,14 +2850,14 @@ M: Nick Kossifidis <mickflemm@gmail.com>
M: Luis Chamberlain <mcgrof@kernel.org> M: Luis Chamberlain <mcgrof@kernel.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/ath5k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath5k
F: drivers/net/wireless/ath/ath5k/ F: drivers/net/wireless/ath/ath5k/
ATHEROS ATH6KL WIRELESS DRIVER ATHEROS ATH6KL WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath6kl W: https://wireless.wiki.kernel.org/en/users/Drivers/ath6kl
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
F: drivers/net/wireless/ath/ath6kl/ F: drivers/net/wireless/ath/ath6kl/
@ -3018,7 +3020,7 @@ B43 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org L: b43-dev@lists.infradead.org
S: Odd Fixes S: Odd Fixes
W: http://wireless.kernel.org/en/users/Drivers/b43 W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43/ F: drivers/net/wireless/broadcom/b43/
B43LEGACY WIRELESS DRIVER B43LEGACY WIRELESS DRIVER
@ -3026,7 +3028,7 @@ M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org L: b43-dev@lists.infradead.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/b43 W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43legacy/ F: drivers/net/wireless/broadcom/b43legacy/
BACKLIGHT CLASS/SUBSYSTEM BACKLIGHT CLASS/SUBSYSTEM
@ -3841,7 +3843,7 @@ CARL9170 LINUX COMMUNITY WIRELESS DRIVER
M: Christian Lamparter <chunkeey@googlemail.com> M: Christian Lamparter <chunkeey@googlemail.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/carl9170 W: https://wireless.wiki.kernel.org/en/users/Drivers/carl9170
F: drivers/net/wireless/ath/carl9170/ F: drivers/net/wireless/ath/carl9170/
CAVIUM I2C DRIVER CAVIUM I2C DRIVER
@ -5174,6 +5176,7 @@ S: Maintained
F: drivers/soc/fsl/dpio F: drivers/soc/fsl/dpio
DPAA2 ETHERNET DRIVER DPAA2 ETHERNET DRIVER
M: Ioana Ciornei <ioana.ciornei@nxp.com>
M: Ioana Radulescu <ruxandra.radulescu@nxp.com> M: Ioana Radulescu <ruxandra.radulescu@nxp.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
@ -5553,7 +5556,7 @@ M: Chen-Yu Tsai <wens@csie.org>
L: dri-devel@lists.freedesktop.org L: dri-devel@lists.freedesktop.org
S: Supported S: Supported
T: git git://anongit.freedesktop.org/drm/drm-misc T: git git://anongit.freedesktop.org/drm/drm-misc
F: Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt F: Documentation/devicetree/bindings/display/allwinner*
F: drivers/gpu/drm/sun4i/ F: drivers/gpu/drm/sun4i/
DRM DRIVERS FOR AMLOGIC SOCS DRM DRIVERS FOR AMLOGIC SOCS
@ -5935,6 +5938,7 @@ M: Tal Gilboa <talgi@mellanox.com>
S: Maintained S: Maintained
F: include/linux/dim.h F: include/linux/dim.h
F: lib/dim/ F: lib/dim/
F: Documentation/networking/net_dim.rst
DZ DECSTATION DZ11 SERIAL DRIVER DZ DECSTATION DZ11 SERIAL DRIVER
M: "Maciej W. Rozycki" <macro@linux-mips.org> M: "Maciej W. Rozycki" <macro@linux-mips.org>
@ -9327,6 +9331,7 @@ M: Christian Borntraeger <borntraeger@de.ibm.com>
M: Janosch Frank <frankja@linux.ibm.com> M: Janosch Frank <frankja@linux.ibm.com>
R: David Hildenbrand <david@redhat.com> R: David Hildenbrand <david@redhat.com>
R: Cornelia Huck <cohuck@redhat.com> R: Cornelia Huck <cohuck@redhat.com>
R: Claudio Imbrenda <imbrenda@linux.ibm.com>
L: kvm@vger.kernel.org L: kvm@vger.kernel.org
S: Supported S: Supported
W: http://www.ibm.com/developerworks/linux/linux390/ W: http://www.ibm.com/developerworks/linux/linux390/
@ -9414,6 +9419,13 @@ F: include/linux/keyctl.h
F: include/uapi/linux/keyctl.h F: include/uapi/linux/keyctl.h
F: security/keys/ F: security/keys/
KFIFO
M: Stefani Seibold <stefani@seibold.net>
S: Maintained
F: include/linux/kfifo.h
F: lib/kfifo.c
F: samples/kfifo/
KGDB / KDB /debug_core KGDB / KDB /debug_core
M: Jason Wessel <jason.wessel@windriver.com> M: Jason Wessel <jason.wessel@windriver.com>
M: Daniel Thompson <daniel.thompson@linaro.org> M: Daniel Thompson <daniel.thompson@linaro.org>
@ -10065,7 +10077,7 @@ MAC80211
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/networking/mac80211-injection.txt F: Documentation/networking/mac80211-injection.txt
@ -10695,7 +10707,6 @@ MEDIATEK MT76 WIRELESS LAN DRIVER
M: Felix Fietkau <nbd@nbd.name> M: Felix Fietkau <nbd@nbd.name>
M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
R: Ryder Lee <ryder.lee@mediatek.com> R: Ryder Lee <ryder.lee@mediatek.com>
R: Roy Luo <royluo@google.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
F: drivers/net/wireless/mediatek/mt76/ F: drivers/net/wireless/mediatek/mt76/
@ -12646,7 +12657,7 @@ F: fs/orangefs/
ORINOCO DRIVER ORINOCO DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/en/users/Drivers/orinoco W: https://wireless.wiki.kernel.org/en/users/Drivers/orinoco
W: http://www.nongnu.org/orinoco/ W: http://www.nongnu.org/orinoco/
F: drivers/net/wireless/intersil/orinoco/ F: drivers/net/wireless/intersil/orinoco/
@ -12672,7 +12683,7 @@ P54 WIRELESS DRIVER
M: Christian Lamparter <chunkeey@googlemail.com> M: Christian Lamparter <chunkeey@googlemail.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/en/users/Drivers/p54 W: https://wireless.wiki.kernel.org/en/users/Drivers/p54
F: drivers/net/wireless/intersil/p54/ F: drivers/net/wireless/intersil/p54/
PACKING PACKING
@ -13040,7 +13051,7 @@ F: drivers/pci/controller/pci-xgene-msi.c
PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
R: Andrew Murray <amurray@thegoodpenguin.co.uk> R: Rob Herring <robh@kernel.org>
L: linux-pci@vger.kernel.org L: linux-pci@vger.kernel.org
S: Supported S: Supported
Q: http://patchwork.ozlabs.org/project/linux-pci/list/ Q: http://patchwork.ozlabs.org/project/linux-pci/list/
@ -13593,7 +13604,7 @@ PRISM54 WIRELESS DRIVER
M: Luis Chamberlain <mcgrof@kernel.org> M: Luis Chamberlain <mcgrof@kernel.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Obsolete S: Obsolete
W: http://wireless.kernel.org/en/users/Drivers/p54 W: https://wireless.wiki.kernel.org/en/users/Drivers/p54
F: drivers/net/wireless/intersil/prism54/ F: drivers/net/wireless/intersil/prism54/
PROC FILESYSTEM PROC FILESYSTEM
@ -13855,7 +13866,8 @@ S: Maintained
F: drivers/scsi/qla1280.[ch] F: drivers/scsi/qla1280.[ch]
QLOGIC QLA2XXX FC-SCSI DRIVER QLOGIC QLA2XXX FC-SCSI DRIVER
M: hmadhani@marvell.com M: Nilesh Javali <njavali@marvell.com>
M: GR-QLogic-Storage-Upstream@marvell.com
L: linux-scsi@vger.kernel.org L: linux-scsi@vger.kernel.org
S: Supported S: Supported
F: Documentation/scsi/LICENSE.qla2xxx F: Documentation/scsi/LICENSE.qla2xxx
@ -13933,7 +13945,7 @@ QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: ath10k@lists.infradead.org L: ath10k@lists.infradead.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath10k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
F: drivers/net/wireless/ath/ath10k/ F: drivers/net/wireless/ath/ath10k/
@ -13948,7 +13960,7 @@ QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com> M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/ath9k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
F: drivers/net/wireless/ath/ath9k/ F: drivers/net/wireless/ath/ath9k/
QUALCOMM CAMERA SUBSYSTEM DRIVER QUALCOMM CAMERA SUBSYSTEM DRIVER
@ -14045,13 +14057,12 @@ QUALCOMM WCN36XX WIRELESS DRIVER
M: Kalle Valo <kvalo@codeaurora.org> M: Kalle Valo <kvalo@codeaurora.org>
L: wcn36xx@lists.infradead.org L: wcn36xx@lists.infradead.org
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/wcn36xx W: https://wireless.wiki.kernel.org/en/users/Drivers/wcn36xx
T: git git://github.com/KrasnikovEugene/wcn36xx.git T: git git://github.com/KrasnikovEugene/wcn36xx.git
F: drivers/net/wireless/ath/wcn36xx/ F: drivers/net/wireless/ath/wcn36xx/
QUANTENNA QTNFMAC WIRELESS DRIVER QUANTENNA QTNFMAC WIRELESS DRIVER
M: Igor Mitsyanko <imitsyanko@quantenna.com> M: Igor Mitsyanko <imitsyanko@quantenna.com>
M: Avinash Patil <avinashp@quantenna.com>
M: Sergey Matyukevich <smatyukevich@quantenna.com> M: Sergey Matyukevich <smatyukevich@quantenna.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
@ -14273,7 +14284,7 @@ REALTEK WIRELESS DRIVER (rtlwifi family)
M: Ping-Ke Shih <pkshih@realtek.com> M: Ping-Ke Shih <pkshih@realtek.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtlwifi/ F: drivers/net/wireless/realtek/rtlwifi/
@ -14408,7 +14419,7 @@ RFKILL
M: Johannes Berg <johannes@sipsolutions.net> M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
F: Documentation/ABI/stable/sysfs-class-rfkill F: Documentation/ABI/stable/sysfs-class-rfkill
@ -14557,7 +14568,7 @@ F: drivers/media/dvb-frontends/rtl2832_sdr*
RTL8180 WIRELESS DRIVER RTL8180 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtl818x/rtl8180/ F: drivers/net/wireless/realtek/rtl818x/rtl8180/
@ -14567,7 +14578,7 @@ M: Hin-Tak Leung <htl10@users.sourceforge.net>
M: Larry Finger <Larry.Finger@lwfinger.net> M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: http://wireless.kernel.org/ W: https://wireless.wiki.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
F: drivers/net/wireless/realtek/rtl818x/rtl8187/ F: drivers/net/wireless/realtek/rtl818x/rtl8187/
@ -16922,8 +16933,8 @@ F: drivers/media/platform/ti-vpe/
TI WILINK WIRELESS DRIVERS TI WILINK WIRELESS DRIVERS
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Orphan S: Orphan
W: http://wireless.kernel.org/en/users/Drivers/wl12xx W: https://wireless.wiki.kernel.org/en/users/Drivers/wl12xx
W: http://wireless.kernel.org/en/users/Drivers/wl1251 W: https://wireless.wiki.kernel.org/en/users/Drivers/wl1251
T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
F: drivers/net/wireless/ti/ F: drivers/net/wireless/ti/
F: include/linux/wl12xx.h F: include/linux/wl12xx.h
@ -18205,7 +18216,7 @@ M: Maya Erez <merez@codeaurora.org>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: wil6210@qti.qualcomm.com L: wil6210@qti.qualcomm.com
S: Supported S: Supported
W: http://wireless.kernel.org/en/users/Drivers/wil6210 W: https://wireless.wiki.kernel.org/en/users/Drivers/wil6210
F: drivers/net/wireless/ath/wil6210/ F: drivers/net/wireless/ath/wil6210/
WIMAX STACK WIMAX STACK

View File

@ -2,7 +2,7 @@
VERSION = 5 VERSION = 5
PATCHLEVEL = 7 PATCHLEVEL = 7
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc1 EXTRAVERSION = -rc3
NAME = Kleptomaniac Octopus NAME = Kleptomaniac Octopus
# *DOCUMENTATION* # *DOCUMENTATION*

View File

@ -3,7 +3,6 @@
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
* *
* Amit Bhor, Sameer Dhavale: Codito Technologies 2004 * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
*/ */
#ifndef _ASM_ARC_MODULE_H #ifndef _ASM_ARC_MODULE_H
@ -19,8 +18,4 @@ struct mod_arch_specific {
const char *secstr; const char *secstr;
}; };
#define MODULE_PROC_FAMILY "ARC700"
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
#endif /* _ASM_ARC_MODULE_H */ #endif /* _ASM_ARC_MODULE_H */

View File

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#define MODULE_ARCH_VERMAGIC "ARC700"
#endif /* _ASM_VERMAGIC_H */

View File

@ -1450,7 +1450,8 @@ ENTRY(efi_enter_kernel)
@ running beyond the PoU, and so calling cache_off below from @ running beyond the PoU, and so calling cache_off below from
@ inside the PE/COFF loader allocated region is unsafe unless @ inside the PE/COFF loader allocated region is unsafe unless
@ we explicitly clean it to the PoC. @ we explicitly clean it to the PoC.
adr r0, call_cache_fn @ region of code we will ARM( adrl r0, call_cache_fn )
THUMB( adr r0, call_cache_fn ) @ region of code we will
adr r1, 0f @ run with MMU off adr r1, 0f @ run with MMU off
bl cache_clean_flush bl cache_clean_flush
bl cache_off bl cache_off

View File

@ -14,6 +14,9 @@
soc { soc {
firmware: firmware { firmware: firmware {
compatible = "raspberrypi,bcm2835-firmware", "simple-bus"; compatible = "raspberrypi,bcm2835-firmware", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
mboxes = <&mailbox>; mboxes = <&mailbox>;
dma-ranges; dma-ranges;
}; };

View File

@ -372,6 +372,7 @@
"dsi0_ddr2", "dsi0_ddr2",
"dsi0_ddr"; "dsi0_ddr";
status = "disabled";
}; };
aux: aux@7e215000 { aux: aux@7e215000 {

View File

@ -1039,13 +1039,13 @@
compatible = "fsl,imx6q-fec"; compatible = "fsl,imx6q-fec";
reg = <0x02188000 0x4000>; reg = <0x02188000 0x4000>;
interrupt-names = "int0", "pps"; interrupt-names = "int0", "pps";
interrupts-extended = interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>,
<&intc 0 118 IRQ_TYPE_LEVEL_HIGH>, <0 119 IRQ_TYPE_LEVEL_HIGH>;
<&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6QDL_CLK_ENET>, clocks = <&clks IMX6QDL_CLK_ENET>,
<&clks IMX6QDL_CLK_ENET>, <&clks IMX6QDL_CLK_ENET>,
<&clks IMX6QDL_CLK_ENET_REF>; <&clks IMX6QDL_CLK_ENET_REF>;
clock-names = "ipg", "ahb", "ptp"; clock-names = "ipg", "ahb", "ptp";
gpr = <&gpr>;
status = "disabled"; status = "disabled";
}; };

View File

@ -77,7 +77,6 @@
}; };
&fec { &fec {
/delete-property/interrupts-extended;
interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>,
<0 119 IRQ_TYPE_LEVEL_HIGH>; <0 119 IRQ_TYPE_LEVEL_HIGH>;
}; };

View File

@ -341,6 +341,11 @@
status = "disabled"; status = "disabled";
}; };
/* RNG not directly accessible on N950/N9. */
&rng_target {
status = "disabled";
};
&usb_otg_hs { &usb_otg_hs {
interface-type = <0>; interface-type = <0>;
usb-phy = <&usb2_phy>; usb-phy = <&usb2_phy>;

View File

@ -37,30 +37,6 @@ struct mod_arch_specific {
struct module; struct module;
u32 get_module_plt(struct module *mod, unsigned long loc, Elf32_Addr val); u32 get_module_plt(struct module *mod, unsigned long loc, Elf32_Addr val);
/*
* Add the ARM architecture version to the version magic string
*/
#define MODULE_ARCH_VERMAGIC_ARMVSN "ARMv" __stringify(__LINUX_ARM_ARCH__) " "
/* Add __virt_to_phys patching state as well */
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
#define MODULE_ARCH_VERMAGIC_P2V "p2v8 "
#else
#define MODULE_ARCH_VERMAGIC_P2V ""
#endif
/* Add instruction set architecture tag to distinguish ARM/Thumb kernels */
#ifdef CONFIG_THUMB2_KERNEL
#define MODULE_ARCH_VERMAGIC_ARMTHUMB "thumb2 "
#else
#define MODULE_ARCH_VERMAGIC_ARMTHUMB ""
#endif
#define MODULE_ARCH_VERMAGIC \
MODULE_ARCH_VERMAGIC_ARMVSN \
MODULE_ARCH_VERMAGIC_ARMTHUMB \
MODULE_ARCH_VERMAGIC_P2V
#ifdef CONFIG_THUMB2_KERNEL #ifdef CONFIG_THUMB2_KERNEL
#define HAVE_ARCH_KALLSYMS_SYMBOL_VALUE #define HAVE_ARCH_KALLSYMS_SYMBOL_VALUE
static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym) static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym)

View File

@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#include <linux/stringify.h>
/*
* Add the ARM architecture version to the version magic string
*/
#define MODULE_ARCH_VERMAGIC_ARMVSN "ARMv" __stringify(__LINUX_ARM_ARCH__) " "
/* Add __virt_to_phys patching state as well */
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
#define MODULE_ARCH_VERMAGIC_P2V "p2v8 "
#else
#define MODULE_ARCH_VERMAGIC_P2V ""
#endif
/* Add instruction set architecture tag to distinguish ARM/Thumb kernels */
#ifdef CONFIG_THUMB2_KERNEL
#define MODULE_ARCH_VERMAGIC_ARMTHUMB "thumb2 "
#else
#define MODULE_ARCH_VERMAGIC_ARMTHUMB ""
#endif
#define MODULE_ARCH_VERMAGIC \
MODULE_ARCH_VERMAGIC_ARMVSN \
MODULE_ARCH_VERMAGIC_ARMTHUMB \
MODULE_ARCH_VERMAGIC_P2V
#endif /* _ASM_VERMAGIC_H */

View File

@ -91,8 +91,10 @@ AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o
obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o
endif endif
ifeq ($(CONFIG_ARM_CPU_SUSPEND),y)
AFLAGS_resume-imx6.o :=-Wa,-march=armv7-a AFLAGS_resume-imx6.o :=-Wa,-march=armv7-a
obj-$(CONFIG_SOC_IMX6) += resume-imx6.o obj-$(CONFIG_SOC_IMX6) += resume-imx6.o
endif
obj-$(CONFIG_SOC_IMX6) += pm-imx6.o obj-$(CONFIG_SOC_IMX6) += pm-imx6.o
obj-$(CONFIG_SOC_IMX1) += mach-imx1.o obj-$(CONFIG_SOC_IMX1) += mach-imx1.o

View File

@ -929,7 +929,11 @@ static inline void emit_a32_rsh_i64(const s8 dst[],
rd = arm_bpf_get_reg64(dst, tmp, ctx); rd = arm_bpf_get_reg64(dst, tmp, ctx);
/* Do LSR operation */ /* Do LSR operation */
if (val < 32) { if (val == 0) {
/* An immediate value of 0 encodes a shift amount of 32
* for LSR. To shift by 0, don't do anything.
*/
} else if (val < 32) {
emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx);
emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx);
emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_LSR, val), ctx); emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_LSR, val), ctx);
@ -955,7 +959,11 @@ static inline void emit_a32_arsh_i64(const s8 dst[],
rd = arm_bpf_get_reg64(dst, tmp, ctx); rd = arm_bpf_get_reg64(dst, tmp, ctx);
/* Do ARSH operation */ /* Do ARSH operation */
if (val < 32) { if (val == 0) {
/* An immediate value of 0 encodes a shift amount of 32
* for ASR. To shift by 0, don't do anything.
*/
} else if (val < 32) {
emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx);
emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx);
emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, val), ctx); emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, val), ctx);
@ -992,21 +1000,35 @@ static inline void emit_a32_mul_r64(const s8 dst[], const s8 src[],
arm_bpf_put_reg32(dst_hi, rd[0], ctx); arm_bpf_put_reg32(dst_hi, rd[0], ctx);
} }
static bool is_ldst_imm(s16 off, const u8 size)
{
s16 off_max = 0;
switch (size) {
case BPF_B:
case BPF_W:
off_max = 0xfff;
break;
case BPF_H:
off_max = 0xff;
break;
case BPF_DW:
/* Need to make sure off+4 does not overflow. */
off_max = 0xfff - 4;
break;
}
return -off_max <= off && off <= off_max;
}
/* *(size *)(dst + off) = src */ /* *(size *)(dst + off) = src */
static inline void emit_str_r(const s8 dst, const s8 src[], static inline void emit_str_r(const s8 dst, const s8 src[],
s32 off, struct jit_ctx *ctx, const u8 sz){ s16 off, struct jit_ctx *ctx, const u8 sz){
const s8 *tmp = bpf2a32[TMP_REG_1]; const s8 *tmp = bpf2a32[TMP_REG_1];
s32 off_max;
s8 rd; s8 rd;
rd = arm_bpf_get_reg32(dst, tmp[1], ctx); rd = arm_bpf_get_reg32(dst, tmp[1], ctx);
if (sz == BPF_H) if (!is_ldst_imm(off, sz)) {
off_max = 0xff;
else
off_max = 0xfff;
if (off < 0 || off > off_max) {
emit_a32_mov_i(tmp[0], off, ctx); emit_a32_mov_i(tmp[0], off, ctx);
emit(ARM_ADD_R(tmp[0], tmp[0], rd), ctx); emit(ARM_ADD_R(tmp[0], tmp[0], rd), ctx);
rd = tmp[0]; rd = tmp[0];
@ -1035,18 +1057,12 @@ static inline void emit_str_r(const s8 dst, const s8 src[],
/* dst = *(size*)(src + off) */ /* dst = *(size*)(src + off) */
static inline void emit_ldx_r(const s8 dst[], const s8 src, static inline void emit_ldx_r(const s8 dst[], const s8 src,
s32 off, struct jit_ctx *ctx, const u8 sz){ s16 off, struct jit_ctx *ctx, const u8 sz){
const s8 *tmp = bpf2a32[TMP_REG_1]; const s8 *tmp = bpf2a32[TMP_REG_1];
const s8 *rd = is_stacked(dst_lo) ? tmp : dst; const s8 *rd = is_stacked(dst_lo) ? tmp : dst;
s8 rm = src; s8 rm = src;
s32 off_max;
if (sz == BPF_H) if (!is_ldst_imm(off, sz)) {
off_max = 0xff;
else
off_max = 0xfff;
if (off < 0 || off > off_max) {
emit_a32_mov_i(tmp[0], off, ctx); emit_a32_mov_i(tmp[0], off, ctx);
emit(ARM_ADD_R(tmp[0], tmp[0], src), ctx); emit(ARM_ADD_R(tmp[0], tmp[0], src), ctx);
rm = tmp[0]; rm = tmp[0];

View File

@ -36,7 +36,7 @@
#include <linux/mm.h> #include <linux/mm.h>
struct start_info _xen_start_info; static struct start_info _xen_start_info;
struct start_info *xen_start_info = &_xen_start_info; struct start_info *xen_start_info = &_xen_start_info;
EXPORT_SYMBOL(xen_start_info); EXPORT_SYMBOL(xen_start_info);

View File

@ -7,8 +7,6 @@
#include <asm-generic/module.h> #include <asm-generic/module.h>
#define MODULE_ARCH_VERMAGIC "aarch64"
#ifdef CONFIG_ARM64_MODULE_PLTS #ifdef CONFIG_ARM64_MODULE_PLTS
struct mod_plt_sec { struct mod_plt_sec {
int plt_shndx; int plt_shndx;

View File

@ -47,7 +47,7 @@ static inline void ptrauth_keys_init_user(struct ptrauth_keys_user *keys)
get_random_bytes(&keys->apga, sizeof(keys->apga)); get_random_bytes(&keys->apga, sizeof(keys->apga));
} }
#define __ptrauth_key_install(k, v) \ #define __ptrauth_key_install_nosync(k, v) \
do { \ do { \
struct ptrauth_key __pki_v = (v); \ struct ptrauth_key __pki_v = (v); \
write_sysreg_s(__pki_v.lo, SYS_ ## k ## KEYLO_EL1); \ write_sysreg_s(__pki_v.lo, SYS_ ## k ## KEYLO_EL1); \
@ -62,8 +62,11 @@ static __always_inline void ptrauth_keys_init_kernel(struct ptrauth_keys_kernel
static __always_inline void ptrauth_keys_switch_kernel(struct ptrauth_keys_kernel *keys) static __always_inline void ptrauth_keys_switch_kernel(struct ptrauth_keys_kernel *keys)
{ {
if (system_supports_address_auth()) if (!system_supports_address_auth())
__ptrauth_key_install(APIA, keys->apia); return;
__ptrauth_key_install_nosync(APIA, keys->apia);
isb();
} }
extern int ptrauth_prctl_reset_keys(struct task_struct *tsk, unsigned long arg); extern int ptrauth_prctl_reset_keys(struct task_struct *tsk, unsigned long arg);

View File

@ -49,6 +49,8 @@
#ifndef CONFIG_BROKEN_GAS_INST #ifndef CONFIG_BROKEN_GAS_INST
#ifdef __ASSEMBLY__ #ifdef __ASSEMBLY__
// The space separator is omitted so that __emit_inst(x) can be parsed as
// either an assembler directive or an assembler macro argument.
#define __emit_inst(x) .inst(x) #define __emit_inst(x) .inst(x)
#else #else
#define __emit_inst(x) ".inst " __stringify((x)) "\n\t" #define __emit_inst(x) ".inst " __stringify((x)) "\n\t"

View File

@ -0,0 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) 2012 ARM Ltd.
*/
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#define MODULE_ARCH_VERMAGIC "aarch64"
#endif /* _ASM_VERMAGIC_H */

View File

@ -260,18 +260,7 @@ static int __aarch32_alloc_vdso_pages(void)
if (ret) if (ret)
return ret; return ret;
ret = aarch32_alloc_kuser_vdso_page(); return aarch32_alloc_kuser_vdso_page();
if (ret) {
unsigned long c_vvar =
(unsigned long)page_to_virt(aarch32_vdso_pages[C_VVAR]);
unsigned long c_vdso =
(unsigned long)page_to_virt(aarch32_vdso_pages[C_VDSO]);
free_page(c_vvar);
free_page(c_vdso);
}
return ret;
} }
#else #else
static int __aarch32_alloc_vdso_pages(void) static int __aarch32_alloc_vdso_pages(void)

2
arch/h8300/kernel/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# SPDX-License-Identifier: GPL-2.0-only
vmlinux.lds

View File

@ -3,11 +3,11 @@
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*/ */
#ifndef _ASM_MODULE_H #ifndef _ASM_VERMAGIC_H
#define _ASM_MODULE_H #define _ASM_VERMAGIC_H
#include <asm-generic/module.h> #include <linux/stringify.h>
#define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " " #define MODULE_ARCH_VERMAGIC __stringify(PROCESSOR_MODEL_NAME) " "
#endif #endif /* _ASM_VERMAGIC_H */

View File

@ -26,10 +26,6 @@ struct mod_arch_specific {
unsigned int next_got_entry; /* index of next available got entry */ unsigned int next_got_entry; /* index of next available got entry */
}; };
#define MODULE_PROC_FAMILY "ia64"
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY \
"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
#define ARCH_SHF_SMALL SHF_IA_64_SHORT #define ARCH_SHF_SMALL SHF_IA_64_SHORT
#endif /* _ASM_IA64_MODULE_H */ #endif /* _ASM_IA64_MODULE_H */

View File

@ -0,0 +1,15 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2003 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#include <linux/stringify.h>
#define MODULE_ARCH_VERMAGIC "ia64" \
"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
#endif /* _ASM_VERMAGIC_H */

View File

@ -1,7 +1,6 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
generated-y += syscall_table.h generated-y += syscall_table.h
generic-y += extable.h generic-y += extable.h
generic-y += hardirq.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += local64.h generic-y += local64.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h

View File

@ -83,65 +83,4 @@ search_module_dbetables(unsigned long addr)
} }
#endif #endif
#ifdef CONFIG_CPU_BMIPS
#define MODULE_PROC_FAMILY "BMIPS "
#elif defined CONFIG_CPU_MIPS32_R1
#define MODULE_PROC_FAMILY "MIPS32_R1 "
#elif defined CONFIG_CPU_MIPS32_R2
#define MODULE_PROC_FAMILY "MIPS32_R2 "
#elif defined CONFIG_CPU_MIPS32_R6
#define MODULE_PROC_FAMILY "MIPS32_R6 "
#elif defined CONFIG_CPU_MIPS64_R1
#define MODULE_PROC_FAMILY "MIPS64_R1 "
#elif defined CONFIG_CPU_MIPS64_R2
#define MODULE_PROC_FAMILY "MIPS64_R2 "
#elif defined CONFIG_CPU_MIPS64_R6
#define MODULE_PROC_FAMILY "MIPS64_R6 "
#elif defined CONFIG_CPU_R3000
#define MODULE_PROC_FAMILY "R3000 "
#elif defined CONFIG_CPU_TX39XX
#define MODULE_PROC_FAMILY "TX39XX "
#elif defined CONFIG_CPU_VR41XX
#define MODULE_PROC_FAMILY "VR41XX "
#elif defined CONFIG_CPU_R4X00
#define MODULE_PROC_FAMILY "R4X00 "
#elif defined CONFIG_CPU_TX49XX
#define MODULE_PROC_FAMILY "TX49XX "
#elif defined CONFIG_CPU_R5000
#define MODULE_PROC_FAMILY "R5000 "
#elif defined CONFIG_CPU_R5500
#define MODULE_PROC_FAMILY "R5500 "
#elif defined CONFIG_CPU_NEVADA
#define MODULE_PROC_FAMILY "NEVADA "
#elif defined CONFIG_CPU_R10000
#define MODULE_PROC_FAMILY "R10000 "
#elif defined CONFIG_CPU_RM7000
#define MODULE_PROC_FAMILY "RM7000 "
#elif defined CONFIG_CPU_SB1
#define MODULE_PROC_FAMILY "SB1 "
#elif defined CONFIG_CPU_LOONGSON32
#define MODULE_PROC_FAMILY "LOONGSON32 "
#elif defined CONFIG_CPU_LOONGSON2EF
#define MODULE_PROC_FAMILY "LOONGSON2EF "
#elif defined CONFIG_CPU_LOONGSON64
#define MODULE_PROC_FAMILY "LOONGSON64 "
#elif defined CONFIG_CPU_CAVIUM_OCTEON
#define MODULE_PROC_FAMILY "OCTEON "
#elif defined CONFIG_CPU_XLR
#define MODULE_PROC_FAMILY "XLR "
#elif defined CONFIG_CPU_XLP
#define MODULE_PROC_FAMILY "XLP "
#else
#error MODULE_PROC_FAMILY undefined for your processor configuration
#endif
#ifdef CONFIG_32BIT
#define MODULE_KERNEL_TYPE "32BIT "
#elif defined CONFIG_64BIT
#define MODULE_KERNEL_TYPE "64BIT "
#endif
#define MODULE_ARCH_VERMAGIC \
MODULE_PROC_FAMILY MODULE_KERNEL_TYPE
#endif /* _ASM_MODULE_H */ #endif /* _ASM_MODULE_H */

View File

@ -0,0 +1,66 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#ifdef CONFIG_CPU_BMIPS
#define MODULE_PROC_FAMILY "BMIPS "
#elif defined CONFIG_CPU_MIPS32_R1
#define MODULE_PROC_FAMILY "MIPS32_R1 "
#elif defined CONFIG_CPU_MIPS32_R2
#define MODULE_PROC_FAMILY "MIPS32_R2 "
#elif defined CONFIG_CPU_MIPS32_R6
#define MODULE_PROC_FAMILY "MIPS32_R6 "
#elif defined CONFIG_CPU_MIPS64_R1
#define MODULE_PROC_FAMILY "MIPS64_R1 "
#elif defined CONFIG_CPU_MIPS64_R2
#define MODULE_PROC_FAMILY "MIPS64_R2 "
#elif defined CONFIG_CPU_MIPS64_R6
#define MODULE_PROC_FAMILY "MIPS64_R6 "
#elif defined CONFIG_CPU_R3000
#define MODULE_PROC_FAMILY "R3000 "
#elif defined CONFIG_CPU_TX39XX
#define MODULE_PROC_FAMILY "TX39XX "
#elif defined CONFIG_CPU_VR41XX
#define MODULE_PROC_FAMILY "VR41XX "
#elif defined CONFIG_CPU_R4X00
#define MODULE_PROC_FAMILY "R4X00 "
#elif defined CONFIG_CPU_TX49XX
#define MODULE_PROC_FAMILY "TX49XX "
#elif defined CONFIG_CPU_R5000
#define MODULE_PROC_FAMILY "R5000 "
#elif defined CONFIG_CPU_R5500
#define MODULE_PROC_FAMILY "R5500 "
#elif defined CONFIG_CPU_NEVADA
#define MODULE_PROC_FAMILY "NEVADA "
#elif defined CONFIG_CPU_R10000
#define MODULE_PROC_FAMILY "R10000 "
#elif defined CONFIG_CPU_RM7000
#define MODULE_PROC_FAMILY "RM7000 "
#elif defined CONFIG_CPU_SB1
#define MODULE_PROC_FAMILY "SB1 "
#elif defined CONFIG_CPU_LOONGSON32
#define MODULE_PROC_FAMILY "LOONGSON32 "
#elif defined CONFIG_CPU_LOONGSON2EF
#define MODULE_PROC_FAMILY "LOONGSON2EF "
#elif defined CONFIG_CPU_LOONGSON64
#define MODULE_PROC_FAMILY "LOONGSON64 "
#elif defined CONFIG_CPU_CAVIUM_OCTEON
#define MODULE_PROC_FAMILY "OCTEON "
#elif defined CONFIG_CPU_XLR
#define MODULE_PROC_FAMILY "XLR "
#elif defined CONFIG_CPU_XLP
#define MODULE_PROC_FAMILY "XLP "
#else
#error MODULE_PROC_FAMILY undefined for your processor configuration
#endif
#ifdef CONFIG_32BIT
#define MODULE_KERNEL_TYPE "32BIT "
#elif defined CONFIG_64BIT
#define MODULE_KERNEL_TYPE "64BIT "
#endif
#define MODULE_ARCH_VERMAGIC \
MODULE_PROC_FAMILY MODULE_KERNEL_TYPE
#endif /* _ASM_VERMAGIC_H */

View File

@ -1,11 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
// Copyright (C) 2005-2017 Andes Technology Corporation // Copyright (C) 2005-2017 Andes Technology Corporation
#ifndef _ASM_NDS32_MODULE_H #ifndef _ASM_VERMAGIC_H
#define _ASM_NDS32_MODULE_H #define _ASM_VERMAGIC_H
#include <asm-generic/module.h>
#define MODULE_ARCH_VERMAGIC "NDS32v3" #define MODULE_ARCH_VERMAGIC "NDS32v3"
#endif /* _ASM_NDS32_MODULE_H */ #endif /* _ASM_VERMAGIC_H */

View File

@ -3,28 +3,10 @@
#define _ASM_POWERPC_MODULE_H #define _ASM_POWERPC_MODULE_H
#ifdef __KERNEL__ #ifdef __KERNEL__
/*
*/
#include <linux/list.h> #include <linux/list.h>
#include <asm/bug.h> #include <asm/bug.h>
#include <asm-generic/module.h> #include <asm-generic/module.h>
#ifdef CONFIG_MPROFILE_KERNEL
#define MODULE_ARCH_VERMAGIC_FTRACE "mprofile-kernel "
#else
#define MODULE_ARCH_VERMAGIC_FTRACE ""
#endif
#ifdef CONFIG_RELOCATABLE
#define MODULE_ARCH_VERMAGIC_RELOCATABLE "relocatable "
#else
#define MODULE_ARCH_VERMAGIC_RELOCATABLE ""
#endif
#define MODULE_ARCH_VERMAGIC MODULE_ARCH_VERMAGIC_FTRACE MODULE_ARCH_VERMAGIC_RELOCATABLE
#ifndef __powerpc64__ #ifndef __powerpc64__
/* /*
* Thanks to Paul M for explaining this. * Thanks to Paul M for explaining this.

View File

@ -0,0 +1,20 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#ifdef CONFIG_MPROFILE_KERNEL
#define MODULE_ARCH_VERMAGIC_FTRACE "mprofile-kernel "
#else
#define MODULE_ARCH_VERMAGIC_FTRACE ""
#endif
#ifdef CONFIG_RELOCATABLE
#define MODULE_ARCH_VERMAGIC_RELOCATABLE "relocatable "
#else
#define MODULE_ARCH_VERMAGIC_RELOCATABLE ""
#endif
#define MODULE_ARCH_VERMAGIC \
MODULE_ARCH_VERMAGIC_FTRACE MODULE_ARCH_VERMAGIC_RELOCATABLE
#endif /* _ASM_VERMAGIC_H */

View File

@ -732,7 +732,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_SPE)
stw r10,_CCR(r1) stw r10,_CCR(r1)
stw r1,KSP(r3) /* Set old stack pointer */ stw r1,KSP(r3) /* Set old stack pointer */
kuap_check r2, r4 kuap_check r2, r0
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* We need a sync somewhere here to make sure that if the /* We need a sync somewhere here to make sure that if the
* previous task gets rescheduled on another CPU, it sees all * previous task gets rescheduled on another CPU, it sees all

View File

@ -534,6 +534,8 @@ static bool __init parse_cache_info(struct device_node *np,
lsizep = of_get_property(np, propnames[3], NULL); lsizep = of_get_property(np, propnames[3], NULL);
if (bsizep == NULL) if (bsizep == NULL)
bsizep = lsizep; bsizep = lsizep;
if (lsizep == NULL)
lsizep = bsizep;
if (lsizep != NULL) if (lsizep != NULL)
lsize = be32_to_cpu(*lsizep); lsize = be32_to_cpu(*lsizep);
if (bsizep != NULL) if (bsizep != NULL)

View File

@ -604,18 +604,19 @@ int kvmppc_book3s_hv_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu,
*/ */
local_irq_disable(); local_irq_disable();
ptep = __find_linux_pte(vcpu->arch.pgdir, hva, NULL, &shift); ptep = __find_linux_pte(vcpu->arch.pgdir, hva, NULL, &shift);
pte = __pte(0);
if (ptep)
pte = *ptep;
local_irq_enable();
/* /*
* If the PTE disappeared temporarily due to a THP * If the PTE disappeared temporarily due to a THP
* collapse, just return and let the guest try again. * collapse, just return and let the guest try again.
*/ */
if (!ptep) { if (!pte_present(pte)) {
local_irq_enable();
if (page) if (page)
put_page(page); put_page(page);
return RESUME_GUEST; return RESUME_GUEST;
} }
pte = *ptep;
local_irq_enable();
hpa = pte_pfn(pte) << PAGE_SHIFT; hpa = pte_pfn(pte) << PAGE_SHIFT;
pte_size = PAGE_SIZE; pte_size = PAGE_SIZE;
if (shift) if (shift)

View File

@ -815,18 +815,19 @@ int kvmppc_book3s_instantiate_page(struct kvm_vcpu *vcpu,
*/ */
local_irq_disable(); local_irq_disable();
ptep = __find_linux_pte(vcpu->arch.pgdir, hva, NULL, &shift); ptep = __find_linux_pte(vcpu->arch.pgdir, hva, NULL, &shift);
pte = __pte(0);
if (ptep)
pte = *ptep;
local_irq_enable();
/* /*
* If the PTE disappeared temporarily due to a THP * If the PTE disappeared temporarily due to a THP
* collapse, just return and let the guest try again. * collapse, just return and let the guest try again.
*/ */
if (!ptep) { if (!pte_present(pte)) {
local_irq_enable();
if (page) if (page)
put_page(page); put_page(page);
return RESUME_GUEST; return RESUME_GUEST;
} }
pte = *ptep;
local_irq_enable();
/* If we're logging dirty pages, always map single pages */ /* If we're logging dirty pages, always map single pages */
large_enable = !(memslot->flags & KVM_MEM_LOG_DIRTY_PAGES); large_enable = !(memslot->flags & KVM_MEM_LOG_DIRTY_PAGES);

View File

@ -185,6 +185,7 @@ void mmu_mark_initmem_nx(void)
mmu_mapin_ram_chunk(etext8, einittext8, PAGE_KERNEL); mmu_mapin_ram_chunk(etext8, einittext8, PAGE_KERNEL);
} }
} }
_tlbil_all();
} }
#ifdef CONFIG_STRICT_KERNEL_RWX #ifdef CONFIG_STRICT_KERNEL_RWX
@ -199,6 +200,8 @@ void mmu_mark_rodata_ro(void)
~(LARGE_PAGE_SIZE_8M - 1))); ~(LARGE_PAGE_SIZE_8M - 1)));
mmu_patch_addis(&patch__dtlbmiss_romem_top, -__pa(_sinittext)); mmu_patch_addis(&patch__dtlbmiss_romem_top, -__pa(_sinittext));
_tlbil_all();
/* Update page tables for PTDUMP and BDI */ /* Update page tables for PTDUMP and BDI */
mmu_mapin_ram_chunk(0, sinittext, __pgprot(0)); mmu_mapin_ram_chunk(0, sinittext, __pgprot(0));
mmu_mapin_ram_chunk(0, etext, PAGE_KERNEL_ROX); mmu_mapin_ram_chunk(0, etext, PAGE_KERNEL_ROX);

View File

@ -397,7 +397,7 @@ config PPC_KUAP
config PPC_KUAP_DEBUG config PPC_KUAP_DEBUG
bool "Extra debugging for Kernel Userspace Access Protection" bool "Extra debugging for Kernel Userspace Access Protection"
depends on PPC_KUAP && (PPC_RADIX_MMU || PPC_32) depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
help help
Add extra debugging for Kernel Userspace Access Protection (KUAP) Add extra debugging for Kernel Userspace Access Protection (KUAP)
If you're unsure, say N. If you're unsure, say N.

View File

@ -55,7 +55,7 @@ config RISCV
select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_PTE_SPECIAL
select ARCH_HAS_MMIOWB select ARCH_HAS_MMIOWB
select ARCH_HAS_DEBUG_VIRTUAL select ARCH_HAS_DEBUG_VIRTUAL
select HAVE_EBPF_JIT select HAVE_EBPF_JIT if MMU
select EDAC_SUPPORT select EDAC_SUPPORT
select ARCH_HAS_GIGANTIC_PAGE select ARCH_HAS_GIGANTIC_PAGE
select ARCH_HAS_SET_DIRECT_MAP select ARCH_HAS_SET_DIRECT_MAP

View File

@ -6,8 +6,6 @@
#include <asm-generic/module.h> #include <asm-generic/module.h>
#define MODULE_ARCH_VERMAGIC "riscv"
struct module; struct module;
unsigned long module_emit_got_entry(struct module *mod, unsigned long val); unsigned long module_emit_got_entry(struct module *mod, unsigned long val);
unsigned long module_emit_plt_entry(struct module *mod, unsigned long val); unsigned long module_emit_plt_entry(struct module *mod, unsigned long val);

View File

@ -0,0 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2017 Andes Technology Corporation */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#define MODULE_ARCH_VERMAGIC "riscv"
#endif /* _ASM_VERMAGIC_H */

View File

@ -110,6 +110,16 @@ static bool is_32b_int(s64 val)
return -(1L << 31) <= val && val < (1L << 31); return -(1L << 31) <= val && val < (1L << 31);
} }
static bool in_auipc_jalr_range(s64 val)
{
/*
* auipc+jalr can reach any signed PC-relative offset in the range
* [-2^31 - 2^11, 2^31 - 2^11).
*/
return (-(1L << 31) - (1L << 11)) <= val &&
val < ((1L << 31) - (1L << 11));
}
static void emit_imm(u8 rd, s64 val, struct rv_jit_context *ctx) static void emit_imm(u8 rd, s64 val, struct rv_jit_context *ctx)
{ {
/* Note that the immediate from the add is sign-extended, /* Note that the immediate from the add is sign-extended,
@ -380,20 +390,24 @@ static void emit_sext_32_rd(u8 *rd, struct rv_jit_context *ctx)
*rd = RV_REG_T2; *rd = RV_REG_T2;
} }
static void emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr, static int emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr,
struct rv_jit_context *ctx) struct rv_jit_context *ctx)
{ {
s64 upper, lower; s64 upper, lower;
if (rvoff && is_21b_int(rvoff) && !force_jalr) { if (rvoff && is_21b_int(rvoff) && !force_jalr) {
emit(rv_jal(rd, rvoff >> 1), ctx); emit(rv_jal(rd, rvoff >> 1), ctx);
return; return 0;
} } else if (in_auipc_jalr_range(rvoff)) {
upper = (rvoff + (1 << 11)) >> 12; upper = (rvoff + (1 << 11)) >> 12;
lower = rvoff & 0xfff; lower = rvoff & 0xfff;
emit(rv_auipc(RV_REG_T1, upper), ctx); emit(rv_auipc(RV_REG_T1, upper), ctx);
emit(rv_jalr(rd, RV_REG_T1, lower), ctx); emit(rv_jalr(rd, RV_REG_T1, lower), ctx);
return 0;
}
pr_err("bpf-jit: target offset 0x%llx is out of range\n", rvoff);
return -ERANGE;
} }
static bool is_signed_bpf_cond(u8 cond) static bool is_signed_bpf_cond(u8 cond)
@ -407,18 +421,16 @@ static int emit_call(bool fixed, u64 addr, struct rv_jit_context *ctx)
s64 off = 0; s64 off = 0;
u64 ip; u64 ip;
u8 rd; u8 rd;
int ret;
if (addr && ctx->insns) { if (addr && ctx->insns) {
ip = (u64)(long)(ctx->insns + ctx->ninsns); ip = (u64)(long)(ctx->insns + ctx->ninsns);
off = addr - ip; off = addr - ip;
if (!is_32b_int(off)) {
pr_err("bpf-jit: target call addr %pK is out of range\n",
(void *)addr);
return -ERANGE;
}
} }
emit_jump_and_link(RV_REG_RA, off, !fixed, ctx); ret = emit_jump_and_link(RV_REG_RA, off, !fixed, ctx);
if (ret)
return ret;
rd = bpf_to_rv_reg(BPF_REG_0, ctx); rd = bpf_to_rv_reg(BPF_REG_0, ctx);
emit(rv_addi(rd, RV_REG_A0, 0), ctx); emit(rv_addi(rd, RV_REG_A0, 0), ctx);
return 0; return 0;
@ -429,7 +441,7 @@ int bpf_jit_emit_insn(const struct bpf_insn *insn, struct rv_jit_context *ctx,
{ {
bool is64 = BPF_CLASS(insn->code) == BPF_ALU64 || bool is64 = BPF_CLASS(insn->code) == BPF_ALU64 ||
BPF_CLASS(insn->code) == BPF_JMP; BPF_CLASS(insn->code) == BPF_JMP;
int s, e, rvoff, i = insn - ctx->prog->insnsi; int s, e, rvoff, ret, i = insn - ctx->prog->insnsi;
struct bpf_prog_aux *aux = ctx->prog->aux; struct bpf_prog_aux *aux = ctx->prog->aux;
u8 rd = -1, rs = -1, code = insn->code; u8 rd = -1, rs = -1, code = insn->code;
s16 off = insn->off; s16 off = insn->off;
@ -699,7 +711,9 @@ out_be:
/* JUMP off */ /* JUMP off */
case BPF_JMP | BPF_JA: case BPF_JMP | BPF_JA:
rvoff = rv_offset(i, off, ctx); rvoff = rv_offset(i, off, ctx);
emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx);
if (ret)
return ret;
break; break;
/* IF (dst COND src) JUMP off */ /* IF (dst COND src) JUMP off */
@ -801,7 +815,6 @@ out_be:
case BPF_JMP | BPF_CALL: case BPF_JMP | BPF_CALL:
{ {
bool fixed; bool fixed;
int ret;
u64 addr; u64 addr;
mark_call(ctx); mark_call(ctx);
@ -826,7 +839,9 @@ out_be:
break; break;
rvoff = epilogue_offset(ctx); rvoff = epilogue_offset(ctx);
emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx);
if (ret)
return ret;
break; break;
/* dst = imm64 */ /* dst = imm64 */

View File

@ -7,9 +7,7 @@
#ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST #ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST
int __bootdata_preserved(prot_virt_guest); int __bootdata_preserved(prot_virt_guest);
#endif #endif
#if IS_ENABLED(CONFIG_KVM)
struct uv_info __bootdata_preserved(uv_info); struct uv_info __bootdata_preserved(uv_info);
#endif
void uv_query_info(void) void uv_query_info(void)
{ {

View File

@ -133,7 +133,7 @@ void diag_stat_inc(enum diag_stat_enum nr)
} }
EXPORT_SYMBOL(diag_stat_inc); EXPORT_SYMBOL(diag_stat_inc);
void diag_stat_inc_norecursion(enum diag_stat_enum nr) void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr)
{ {
this_cpu_inc(diag_stat.counter[nr]); this_cpu_inc(diag_stat.counter[nr]);
trace_s390_diagnose_norecursion(diag_map[nr].code); trace_s390_diagnose_norecursion(diag_map[nr].code);

View File

@ -403,7 +403,7 @@ int smp_find_processor_id(u16 address)
return -1; return -1;
} }
bool arch_vcpu_is_preempted(int cpu) bool notrace arch_vcpu_is_preempted(int cpu)
{ {
if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu)) if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu))
return false; return false;
@ -413,7 +413,7 @@ bool arch_vcpu_is_preempted(int cpu)
} }
EXPORT_SYMBOL(arch_vcpu_is_preempted); EXPORT_SYMBOL(arch_vcpu_is_preempted);
void smp_yield_cpu(int cpu) void notrace smp_yield_cpu(int cpu)
{ {
if (!MACHINE_HAS_DIAG9C) if (!MACHINE_HAS_DIAG9C)
return; return;

View File

@ -14,7 +14,7 @@ EXPORT_TRACEPOINT_SYMBOL(s390_diagnose);
static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth); static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth);
void trace_s390_diagnose_norecursion(int diag_nr) void notrace trace_s390_diagnose_norecursion(int diag_nr)
{ {
unsigned long flags; unsigned long flags;
unsigned int *depth; unsigned int *depth;

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