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

Simple overlapping changes to linux/vermagic.h

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2020-04-25 19:24:42 -07:00
commit d483389678
548 changed files with 5611 additions and 3212 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

@ -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,13 +23,14 @@ 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.
- Constant counter: increments at the fixed frequency of the system - CPU cycle counter: increments at the frequency of the CPU.
clock. - Constant counter: increments at the fixed frequency of the system
- Instructions retired: increments with every architecturally executed clock.
instruction. - Instructions retired: increments with every architecturally executed
- Memory stall cycles: counts instruction dispatch stall cycles caused by instruction.
misses in the last level cache within the clock domain. - Memory stall cycles: counts instruction dispatch stall cycles caused by
misses in the last level cache within the clock domain.
When in WFI or WFE these counters do not increment. When in WFI or WFE these counters do not increment.
@ -57,11 +58,12 @@ 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
registers. - Enable access for lower exception levels (EL2 and EL1) to the AMU
- Enable the counters. If not enabled these will read as 0. registers.
- Save/restore the counters before/after the CPU is being put/brought up - Enable the counters. If not enabled these will read as 0.
from the 'off' power state. - Save/restore the counters before/after the CPU is being put/brought up
from the 'off' power state.
When using kernels that have this feature enabled but boot with broken When using kernels that have this feature enabled but boot with broken
firmware the user may experience panics or lockups when accessing the firmware the user may experience panics or lockups when accessing the
@ -78,10 +80,11 @@ 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_CONST_EL0 - SYS_AMEVCNTR0_CORE_EL0
- SYS_AMEVCNTR0_INST_RET_EL0 - SYS_AMEVCNTR0_CONST_EL0
- SYS_AMEVCNTR0_MEM_STALL_EL0 - SYS_AMEVCNTR0_INST_RET_EL0
- SYS_AMEVCNTR0_MEM_STALL_EL0
Auxiliary platform specific counters can be accessed using Auxiliary platform specific counters can be accessed using
SYS_AMEVCNTR1_EL0(n), where n is a value between 0 and 15. SYS_AMEVCNTR1_EL0(n), where n is a value between 0 and 15.
@ -93,9 +96,10 @@ 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
secure mode. - Security reasons: they might expose information about code executed in
- Purpose: AMU counters are intended for system management use. secure mode.
- Purpose: AMU counters are intended for system management use.
Also, the presence of the feature is not visible to userspace. Also, the presence of the feature is not visible to userspace.
@ -105,8 +109,9 @@ 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
by other guests or the host. - Security reasons: they might expose information about code executed
by other guests or the host.
Any attempt to access the AMU registers will result in an UNDEFINED Any attempt to access the AMU registers will result in an UNDEFINED
exception being injected into the guest. exception being injected into the guest.

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

@ -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
- port
oneOf:
- required:
- 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,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,9 +56,8 @@ 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
required: required:

View File

@ -97,30 +97,35 @@ 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>
memory-controller@2c00000 { bus {
compatible = "nvidia,tegra186-mc";
reg = <0x0 0x02c00000 0x0 0xb0000>;
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>; memory-controller@2c00000 {
compatible = "nvidia,tegra186-mc";
reg = <0x0 0x02c00000 0x0 0xb0000>;
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
/* #address-cells = <2>;
* Memory clients have access to all 40 bits that the memory #size-cells = <2>;
* controller can address.
*/
dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
external-memory-controller@2c60000 { ranges = <0x0 0x02c00000 0x0 0x02c00000 0x0 0xb0000>;
compatible = "nvidia,tegra186-emc";
reg = <0x0 0x02c60000 0x0 0x50000>;
interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_EMC>;
clock-names = "emc";
nvidia,bpmp = <&bpmp>; /*
* Memory clients have access to all 40 bits that the memory
* controller can address.
*/
dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
external-memory-controller@2c60000 {
compatible = "nvidia,tegra186-emc";
reg = <0x0 0x02c60000 0x0 0x50000>;
interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_EMC>;
clock-names = "emc";
nvidia,bpmp = <&bpmp>;
};
}; };
}; };

View File

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

View File

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

View File

@ -274,7 +274,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

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

View File

@ -30,7 +30,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

@ -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:
- | - |
cros-ec@0 { spi {
compatible = "google,cros-ec-spi"; #address-cells = <1>;
cros_ec_pwm: ec-pwm { #size-cells = <0>;
compatible = "google,cros-ec-pwm";
#pwm-cells = <1>; cros-ec@0 {
compatible = "google,cros-ec-spi";
reg = <0>;
cros_ec_pwm: ec-pwm {
compatible = "google,cros-ec-pwm";
#pwm-cells = <1>;
};
}; };
}; };

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

@ -52,8 +52,8 @@ A child node must exist to represent the core DWC3 IP block. The name of
the node is not important. The content of the node is defined in dwc3.txt. 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

@ -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,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

@ -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

@ -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
@ -505,7 +505,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
@ -1323,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
@ -2847,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/
@ -3017,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
@ -3025,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
@ -3840,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
@ -5173,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
@ -5552,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
@ -9326,6 +9330,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/
@ -9413,6 +9418,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>
@ -10064,7 +10076,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
@ -10694,7 +10706,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/
@ -12645,7 +12656,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/
@ -12671,7 +12682,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
@ -13039,7 +13050,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/
@ -13592,7 +13603,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
@ -13854,7 +13865,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
@ -13932,7 +13944,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/
@ -13947,7 +13959,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
@ -14044,13 +14056,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
@ -14272,7 +14283,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/
@ -14407,7 +14418,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
@ -14556,7 +14567,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/
@ -14566,7 +14577,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/
@ -16921,8 +16932,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
@ -18204,7 +18215,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 = -rc2
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

@ -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

@ -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

@ -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,7 +49,9 @@
#ifndef CONFIG_BROKEN_GAS_INST #ifndef CONFIG_BROKEN_GAS_INST
#ifdef __ASSEMBLY__ #ifdef __ASSEMBLY__
#define __emit_inst(x) .inst (x) // 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)
#else #else
#define __emit_inst(x) ".inst " __stringify((x)) "\n\t" #define __emit_inst(x) ".inst " __stringify((x)) "\n\t"
#endif #endif

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

@ -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

@ -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

@ -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

@ -393,7 +393,7 @@ static unsigned long deliverable_irqs(struct kvm_vcpu *vcpu)
if (psw_mchk_disabled(vcpu)) if (psw_mchk_disabled(vcpu))
active_mask &= ~IRQ_PEND_MCHK_MASK; active_mask &= ~IRQ_PEND_MCHK_MASK;
/* PV guest cpus can have a single interruption injected at a time. */ /* PV guest cpus can have a single interruption injected at a time. */
if (kvm_s390_pv_cpu_is_protected(vcpu) && if (kvm_s390_pv_cpu_get_handle(vcpu) &&
vcpu->arch.sie_block->iictl != IICTL_CODE_NONE) vcpu->arch.sie_block->iictl != IICTL_CODE_NONE)
active_mask &= ~(IRQ_PEND_EXT_II_MASK | active_mask &= ~(IRQ_PEND_EXT_II_MASK |
IRQ_PEND_IO_MASK | IRQ_PEND_IO_MASK |

View File

@ -1939,6 +1939,9 @@ static int gfn_to_memslot_approx(struct kvm_memslots *slots, gfn_t gfn)
start = slot + 1; start = slot + 1;
} }
if (start >= slots->used_slots)
return slots->used_slots - 1;
if (gfn >= memslots[start].base_gfn && if (gfn >= memslots[start].base_gfn &&
gfn < memslots[start].base_gfn + memslots[start].npages) { gfn < memslots[start].base_gfn + memslots[start].npages) {
atomic_set(&slots->lru_slot, start); atomic_set(&slots->lru_slot, start);

View File

@ -11,32 +11,4 @@ struct mod_arch_specific {
}; };
#endif #endif
#ifdef CONFIG_CPU_LITTLE_ENDIAN
# ifdef CONFIG_CPU_SH2
# define MODULE_PROC_FAMILY "SH2LE "
# elif defined CONFIG_CPU_SH3
# define MODULE_PROC_FAMILY "SH3LE "
# elif defined CONFIG_CPU_SH4
# define MODULE_PROC_FAMILY "SH4LE "
# elif defined CONFIG_CPU_SH5
# define MODULE_PROC_FAMILY "SH5LE "
# else
# error unknown processor family
# endif
#else
# ifdef CONFIG_CPU_SH2
# define MODULE_PROC_FAMILY "SH2BE "
# elif defined CONFIG_CPU_SH3
# define MODULE_PROC_FAMILY "SH3BE "
# elif defined CONFIG_CPU_SH4
# define MODULE_PROC_FAMILY "SH4BE "
# elif defined CONFIG_CPU_SH5
# define MODULE_PROC_FAMILY "SH5BE "
# else
# error unknown processor family
# endif
#endif
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
#endif /* _ASM_SH_MODULE_H */ #endif /* _ASM_SH_MODULE_H */

View File

@ -0,0 +1,34 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#ifdef CONFIG_CPU_LITTLE_ENDIAN
# ifdef CONFIG_CPU_SH2
# define MODULE_PROC_FAMILY "SH2LE "
# elif defined CONFIG_CPU_SH3
# define MODULE_PROC_FAMILY "SH3LE "
# elif defined CONFIG_CPU_SH4
# define MODULE_PROC_FAMILY "SH4LE "
# elif defined CONFIG_CPU_SH5
# define MODULE_PROC_FAMILY "SH5LE "
# else
# error unknown processor family
# endif
#else
# ifdef CONFIG_CPU_SH2
# define MODULE_PROC_FAMILY "SH2BE "
# elif defined CONFIG_CPU_SH3
# define MODULE_PROC_FAMILY "SH3BE "
# elif defined CONFIG_CPU_SH4
# define MODULE_PROC_FAMILY "SH4BE "
# elif defined CONFIG_CPU_SH5
# define MODULE_PROC_FAMILY "SH5BE "
# else
# error unknown processor family
# endif
#endif
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
#endif /* _ASM_VERMAGIC_H */

View File

@ -412,7 +412,7 @@ int arch_add_memory(int nid, u64 start, u64 size,
unsigned long nr_pages = size >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT;
int ret; int ret;
if (WARN_ON_ONCE(params->pgprot.pgprot != PAGE_KERNEL.pgprot) if (WARN_ON_ONCE(params->pgprot.pgprot != PAGE_KERNEL.pgprot))
return -EINVAL; return -EINVAL;
/* We only have ZONE_NORMAL, so this is easy.. */ /* We only have ZONE_NORMAL, so this is easy.. */

View File

@ -140,6 +140,7 @@ export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE)
# When cleaning we don't include .config, so we don't include # When cleaning we don't include .config, so we don't include
# TT or skas makefiles and don't clean skas_ptregs.h. # TT or skas makefiles and don't clean skas_ptregs.h.
CLEAN_FILES += linux x.i gmon.out CLEAN_FILES += linux x.i gmon.out
MRPROPER_DIRS += arch/$(SUBARCH)/include/generated
archclean: archclean:
@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \

View File

@ -149,7 +149,7 @@ config X86
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
select HAVE_ARCH_TRANSPARENT_HUGEPAGE select HAVE_ARCH_TRANSPARENT_HUGEPAGE
select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64 select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
select HAVE_ARCH_USERFAULTFD_WP if USERFAULTFD select HAVE_ARCH_USERFAULTFD_WP if X86_64 && USERFAULTFD
select HAVE_ARCH_VMAP_STACK if X86_64 select HAVE_ARCH_VMAP_STACK if X86_64
select HAVE_ARCH_WITHIN_STACK_FRAMES select HAVE_ARCH_WITHIN_STACK_FRAMES
select HAVE_ASM_MODVERSIONS select HAVE_ASM_MODVERSIONS

View File

@ -643,6 +643,7 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &glm_cstates), X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &glm_cstates),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &glm_cstates), X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &glm_cstates),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT, &glm_cstates), X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT, &glm_cstates),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_L, &glm_cstates),
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_cstates), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_cstates),
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_cstates), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_cstates),

View File

@ -41,7 +41,7 @@ struct microcode_amd {
unsigned int mpb[0]; unsigned int mpb[0];
}; };
#define PATCH_MAX_SIZE PAGE_SIZE #define PATCH_MAX_SIZE (3 * PAGE_SIZE)
#ifdef CONFIG_MICROCODE_AMD #ifdef CONFIG_MICROCODE_AMD
extern void __init load_ucode_amd_bsp(unsigned int family); extern void __init load_ucode_amd_bsp(unsigned int family);

View File

@ -13,64 +13,4 @@ struct mod_arch_specific {
#endif #endif
}; };
#ifdef CONFIG_X86_64
/* X86_64 does not define MODULE_PROC_FAMILY */
#elif defined CONFIG_M486SX
#define MODULE_PROC_FAMILY "486SX "
#elif defined CONFIG_M486
#define MODULE_PROC_FAMILY "486 "
#elif defined CONFIG_M586
#define MODULE_PROC_FAMILY "586 "
#elif defined CONFIG_M586TSC
#define MODULE_PROC_FAMILY "586TSC "
#elif defined CONFIG_M586MMX
#define MODULE_PROC_FAMILY "586MMX "
#elif defined CONFIG_MCORE2
#define MODULE_PROC_FAMILY "CORE2 "
#elif defined CONFIG_MATOM
#define MODULE_PROC_FAMILY "ATOM "
#elif defined CONFIG_M686
#define MODULE_PROC_FAMILY "686 "
#elif defined CONFIG_MPENTIUMII
#define MODULE_PROC_FAMILY "PENTIUMII "
#elif defined CONFIG_MPENTIUMIII
#define MODULE_PROC_FAMILY "PENTIUMIII "
#elif defined CONFIG_MPENTIUMM
#define MODULE_PROC_FAMILY "PENTIUMM "
#elif defined CONFIG_MPENTIUM4
#define MODULE_PROC_FAMILY "PENTIUM4 "
#elif defined CONFIG_MK6
#define MODULE_PROC_FAMILY "K6 "
#elif defined CONFIG_MK7
#define MODULE_PROC_FAMILY "K7 "
#elif defined CONFIG_MK8
#define MODULE_PROC_FAMILY "K8 "
#elif defined CONFIG_MELAN
#define MODULE_PROC_FAMILY "ELAN "
#elif defined CONFIG_MCRUSOE
#define MODULE_PROC_FAMILY "CRUSOE "
#elif defined CONFIG_MEFFICEON
#define MODULE_PROC_FAMILY "EFFICEON "
#elif defined CONFIG_MWINCHIPC6
#define MODULE_PROC_FAMILY "WINCHIPC6 "
#elif defined CONFIG_MWINCHIP3D
#define MODULE_PROC_FAMILY "WINCHIP3D "
#elif defined CONFIG_MCYRIXIII
#define MODULE_PROC_FAMILY "CYRIXIII "
#elif defined CONFIG_MVIAC3_2
#define MODULE_PROC_FAMILY "VIAC3-2 "
#elif defined CONFIG_MVIAC7
#define MODULE_PROC_FAMILY "VIAC7 "
#elif defined CONFIG_MGEODEGX1
#define MODULE_PROC_FAMILY "GEODEGX1 "
#elif defined CONFIG_MGEODE_LX
#define MODULE_PROC_FAMILY "GEODE "
#else
#error unknown processor family
#endif
#ifdef CONFIG_X86_32
# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
#endif
#endif /* _ASM_X86_MODULE_H */ #endif /* _ASM_X86_MODULE_H */

View File

@ -237,27 +237,6 @@ enum ssb_mitigation {
extern char __indirect_thunk_start[]; extern char __indirect_thunk_start[];
extern char __indirect_thunk_end[]; extern char __indirect_thunk_end[];
/*
* On VMEXIT we must ensure that no RSB predictions learned in the guest
* can be followed in the host, by overwriting the RSB completely. Both
* retpoline and IBRS mitigations for Spectre v2 need this; only on future
* CPUs with IBRS_ALL *might* it be avoided.
*/
static inline void vmexit_fill_RSB(void)
{
#ifdef CONFIG_RETPOLINE
unsigned long loops;
asm volatile (ANNOTATE_NOSPEC_ALTERNATIVE
ALTERNATIVE("jmp 910f",
__stringify(__FILL_RETURN_BUFFER(%0, RSB_CLEAR_LOOPS, %1)),
X86_FEATURE_RETPOLINE)
"910:"
: "=r" (loops), ASM_CALL_CONSTRAINT
: : "memory" );
#endif
}
static __always_inline static __always_inline
void alternative_msr_write(unsigned int msr, u64 val, unsigned int feature) void alternative_msr_write(unsigned int msr, u64 val, unsigned int feature)
{ {

View File

@ -0,0 +1,68 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_VERMAGIC_H
#define _ASM_VERMAGIC_H
#ifdef CONFIG_X86_64
/* X86_64 does not define MODULE_PROC_FAMILY */
#elif defined CONFIG_M486SX
#define MODULE_PROC_FAMILY "486SX "
#elif defined CONFIG_M486
#define MODULE_PROC_FAMILY "486 "
#elif defined CONFIG_M586
#define MODULE_PROC_FAMILY "586 "
#elif defined CONFIG_M586TSC
#define MODULE_PROC_FAMILY "586TSC "
#elif defined CONFIG_M586MMX
#define MODULE_PROC_FAMILY "586MMX "
#elif defined CONFIG_MCORE2
#define MODULE_PROC_FAMILY "CORE2 "
#elif defined CONFIG_MATOM
#define MODULE_PROC_FAMILY "ATOM "
#elif defined CONFIG_M686
#define MODULE_PROC_FAMILY "686 "
#elif defined CONFIG_MPENTIUMII
#define MODULE_PROC_FAMILY "PENTIUMII "
#elif defined CONFIG_MPENTIUMIII
#define MODULE_PROC_FAMILY "PENTIUMIII "
#elif defined CONFIG_MPENTIUMM
#define MODULE_PROC_FAMILY "PENTIUMM "
#elif defined CONFIG_MPENTIUM4
#define MODULE_PROC_FAMILY "PENTIUM4 "
#elif defined CONFIG_MK6
#define MODULE_PROC_FAMILY "K6 "
#elif defined CONFIG_MK7
#define MODULE_PROC_FAMILY "K7 "
#elif defined CONFIG_MK8
#define MODULE_PROC_FAMILY "K8 "
#elif defined CONFIG_MELAN
#define MODULE_PROC_FAMILY "ELAN "
#elif defined CONFIG_MCRUSOE
#define MODULE_PROC_FAMILY "CRUSOE "
#elif defined CONFIG_MEFFICEON
#define MODULE_PROC_FAMILY "EFFICEON "
#elif defined CONFIG_MWINCHIPC6
#define MODULE_PROC_FAMILY "WINCHIPC6 "
#elif defined CONFIG_MWINCHIP3D
#define MODULE_PROC_FAMILY "WINCHIP3D "
#elif defined CONFIG_MCYRIXIII
#define MODULE_PROC_FAMILY "CYRIXIII "
#elif defined CONFIG_MVIAC3_2
#define MODULE_PROC_FAMILY "VIAC3-2 "
#elif defined CONFIG_MVIAC7
#define MODULE_PROC_FAMILY "VIAC7 "
#elif defined CONFIG_MGEODEGX1
#define MODULE_PROC_FAMILY "GEODEGX1 "
#elif defined CONFIG_MGEODE_LX
#define MODULE_PROC_FAMILY "GEODE "
#else
#error unknown processor family
#endif
#ifdef CONFIG_X86_32
# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
#else
# define MODULE_ARCH_VERMAGIC ""
#endif
#endif /* _ASM_VERMAGIC_H */

View File

@ -1119,35 +1119,53 @@ void switch_to_sld(unsigned long tifn)
sld_update_msr(!(tifn & _TIF_SLD)); sld_update_msr(!(tifn & _TIF_SLD));
} }
#define SPLIT_LOCK_CPU(model) {X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY}
/* /*
* The following processors have the split lock detection feature. But * Bits in the IA32_CORE_CAPABILITIES are not architectural, so they should
* since they don't have the IA32_CORE_CAPABILITIES MSR, the feature cannot * only be trusted if it is confirmed that a CPU model implements a
* be enumerated. Enable it by family and model matching on these * specific feature at a particular bit position.
* processors. *
* The possible driver data field values:
*
* - 0: CPU models that are known to have the per-core split-lock detection
* feature even though they do not enumerate IA32_CORE_CAPABILITIES.
*
* - 1: CPU models which may enumerate IA32_CORE_CAPABILITIES and if so use
* bit 5 to enumerate the per-core split-lock detection feature.
*/ */
static const struct x86_cpu_id split_lock_cpu_ids[] __initconst = { static const struct x86_cpu_id split_lock_cpu_ids[] __initconst = {
SPLIT_LOCK_CPU(INTEL_FAM6_ICELAKE_X), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, 0),
SPLIT_LOCK_CPU(INTEL_FAM6_ICELAKE_L), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, 0),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT, 1),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, 1),
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_L, 1),
{} {}
}; };
void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c) void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c)
{ {
u64 ia32_core_caps = 0; const struct x86_cpu_id *m;
u64 ia32_core_caps;
if (c->x86_vendor != X86_VENDOR_INTEL) if (boot_cpu_has(X86_FEATURE_HYPERVISOR))
return; return;
if (cpu_has(c, X86_FEATURE_CORE_CAPABILITIES)) {
/* Enumerate features reported in IA32_CORE_CAPABILITIES MSR. */ m = x86_match_cpu(split_lock_cpu_ids);
if (!m)
return;
switch (m->driver_data) {
case 0:
break;
case 1:
if (!cpu_has(c, X86_FEATURE_CORE_CAPABILITIES))
return;
rdmsrl(MSR_IA32_CORE_CAPS, ia32_core_caps); rdmsrl(MSR_IA32_CORE_CAPS, ia32_core_caps);
} else if (!boot_cpu_has(X86_FEATURE_HYPERVISOR)) { if (!(ia32_core_caps & MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT))
/* Enumerate split lock detection by family and model. */ return;
if (x86_match_cpu(split_lock_cpu_ids)) break;
ia32_core_caps |= MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT; default:
return;
} }
if (ia32_core_caps & MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT) split_lock_setup();
split_lock_setup();
} }

View File

@ -578,6 +578,8 @@ static void domain_add_cpu(int cpu, struct rdt_resource *r)
d->id = id; d->id = id;
cpumask_set_cpu(cpu, &d->cpu_mask); cpumask_set_cpu(cpu, &d->cpu_mask);
rdt_domain_reconfigure_cdp(r);
if (r->alloc_capable && domain_setup_ctrlval(r, d)) { if (r->alloc_capable && domain_setup_ctrlval(r, d)) {
kfree(d); kfree(d);
return; return;

View File

@ -601,5 +601,6 @@ bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d);
void __check_limbo(struct rdt_domain *d, bool force_free); void __check_limbo(struct rdt_domain *d, bool force_free);
bool cbm_validate_intel(char *buf, u32 *data, struct rdt_resource *r); bool cbm_validate_intel(char *buf, u32 *data, struct rdt_resource *r);
bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r); bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r);
void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
#endif /* _ASM_X86_RESCTRL_INTERNAL_H */ #endif /* _ASM_X86_RESCTRL_INTERNAL_H */

View File

@ -1859,6 +1859,19 @@ static int set_cache_qos_cfg(int level, bool enable)
return 0; return 0;
} }
/* Restore the qos cfg state when a domain comes online */
void rdt_domain_reconfigure_cdp(struct rdt_resource *r)
{
if (!r->alloc_capable)
return;
if (r == &rdt_resources_all[RDT_RESOURCE_L2DATA])
l2_qos_cfg_update(&r->alloc_enabled);
if (r == &rdt_resources_all[RDT_RESOURCE_L3DATA])
l3_qos_cfg_update(&r->alloc_enabled);
}
/* /*
* Enable or disable the MBA software controller * Enable or disable the MBA software controller
* which helps user specify bandwidth in MBps. * which helps user specify bandwidth in MBps.
@ -3072,7 +3085,8 @@ static int rdtgroup_rmdir(struct kernfs_node *kn)
* If the rdtgroup is a mon group and parent directory * If the rdtgroup is a mon group and parent directory
* is a valid "mon_groups" directory, remove the mon group. * is a valid "mon_groups" directory, remove the mon group.
*/ */
if (rdtgrp->type == RDTCTRL_GROUP && parent_kn == rdtgroup_default.kn) { if (rdtgrp->type == RDTCTRL_GROUP && parent_kn == rdtgroup_default.kn &&
rdtgrp != &rdtgroup_default) {
if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP || if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP ||
rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) { rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) {
ret = rdtgroup_ctrl_remove(kn, rdtgrp); ret = rdtgroup_ctrl_remove(kn, rdtgrp);

View File

@ -147,7 +147,7 @@ static inline void smpboot_restore_warm_reset_vector(void)
*((volatile u32 *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = 0; *((volatile u32 *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = 0;
} }
static void init_freq_invariance(void); static void init_freq_invariance(bool secondary);
/* /*
* Report back to the Boot Processor during boot time or to the caller processor * Report back to the Boot Processor during boot time or to the caller processor
@ -185,7 +185,7 @@ static void smp_callin(void)
*/ */
set_cpu_sibling_map(raw_smp_processor_id()); set_cpu_sibling_map(raw_smp_processor_id());
init_freq_invariance(); init_freq_invariance(true);
/* /*
* Get our bogomips. * Get our bogomips.
@ -1341,7 +1341,7 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
set_sched_topology(x86_topology); set_sched_topology(x86_topology);
set_cpu_sibling_map(0); set_cpu_sibling_map(0);
init_freq_invariance(); init_freq_invariance(false);
smp_sanity_check(); smp_sanity_check();
switch (apic_intr_mode) { switch (apic_intr_mode) {
@ -1877,9 +1877,6 @@ static bool knl_set_max_freq_ratio(u64 *base_freq, u64 *turbo_freq,
int err, i; int err, i;
u64 msr; u64 msr;
if (!x86_match_cpu(has_knl_turbo_ratio_limits))
return false;
err = rdmsrl_safe(MSR_PLATFORM_INFO, base_freq); err = rdmsrl_safe(MSR_PLATFORM_INFO, base_freq);
if (err) if (err)
return false; return false;
@ -1945,18 +1942,23 @@ static bool skx_set_max_freq_ratio(u64 *base_freq, u64 *turbo_freq, int size)
static bool core_set_max_freq_ratio(u64 *base_freq, u64 *turbo_freq) static bool core_set_max_freq_ratio(u64 *base_freq, u64 *turbo_freq)
{ {
u64 msr;
int err; int err;
err = rdmsrl_safe(MSR_PLATFORM_INFO, base_freq); err = rdmsrl_safe(MSR_PLATFORM_INFO, base_freq);
if (err) if (err)
return false; return false;
err = rdmsrl_safe(MSR_TURBO_RATIO_LIMIT, turbo_freq); err = rdmsrl_safe(MSR_TURBO_RATIO_LIMIT, &msr);
if (err) if (err)
return false; return false;
*base_freq = (*base_freq >> 8) & 0xFF; /* max P state */ *base_freq = (*base_freq >> 8) & 0xFF; /* max P state */
*turbo_freq = (*turbo_freq >> 24) & 0xFF; /* 4C turbo */ *turbo_freq = (msr >> 24) & 0xFF; /* 4C turbo */
/* The CPU may have less than 4 cores */
if (!*turbo_freq)
*turbo_freq = msr & 0xFF; /* 1C turbo */
return true; return true;
} }
@ -1972,7 +1974,8 @@ static bool intel_set_max_freq_ratio(void)
skx_set_max_freq_ratio(&base_freq, &turbo_freq, 1)) skx_set_max_freq_ratio(&base_freq, &turbo_freq, 1))
goto out; goto out;
if (knl_set_max_freq_ratio(&base_freq, &turbo_freq, 1)) if (x86_match_cpu(has_knl_turbo_ratio_limits) &&
knl_set_max_freq_ratio(&base_freq, &turbo_freq, 1))
goto out; goto out;
if (x86_match_cpu(has_skx_turbo_ratio_limits) && if (x86_match_cpu(has_skx_turbo_ratio_limits) &&
@ -1985,13 +1988,22 @@ static bool intel_set_max_freq_ratio(void)
return false; return false;
out: out:
/*
* Some hypervisors advertise X86_FEATURE_APERFMPERF
* but then fill all MSR's with zeroes.
*/
if (!base_freq) {
pr_debug("Couldn't determine cpu base frequency, necessary for scale-invariant accounting.\n");
return false;
}
arch_turbo_freq_ratio = div_u64(turbo_freq * SCHED_CAPACITY_SCALE, arch_turbo_freq_ratio = div_u64(turbo_freq * SCHED_CAPACITY_SCALE,
base_freq); base_freq);
arch_set_max_freq_ratio(turbo_disabled()); arch_set_max_freq_ratio(turbo_disabled());
return true; return true;
} }
static void init_counter_refs(void *arg) static void init_counter_refs(void)
{ {
u64 aperf, mperf; u64 aperf, mperf;
@ -2002,18 +2014,25 @@ static void init_counter_refs(void *arg)
this_cpu_write(arch_prev_mperf, mperf); this_cpu_write(arch_prev_mperf, mperf);
} }
static void init_freq_invariance(void) static void init_freq_invariance(bool secondary)
{ {
bool ret = false; bool ret = false;
if (smp_processor_id() != 0 || !boot_cpu_has(X86_FEATURE_APERFMPERF)) if (!boot_cpu_has(X86_FEATURE_APERFMPERF))
return; return;
if (secondary) {
if (static_branch_likely(&arch_scale_freq_key)) {
init_counter_refs();
}
return;
}
if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
ret = intel_set_max_freq_ratio(); ret = intel_set_max_freq_ratio();
if (ret) { if (ret) {
on_each_cpu(init_counter_refs, NULL, 1); init_counter_refs();
static_branch_enable(&arch_scale_freq_key); static_branch_enable(&arch_scale_freq_key);
} else { } else {
pr_debug("Couldn't determine max cpu frequency, necessary for scale-invariant accounting.\n"); pr_debug("Couldn't determine max cpu frequency, necessary for scale-invariant accounting.\n");

View File

@ -81,7 +81,7 @@
#define UMIP_INST_SLDT 3 /* 0F 00 /0 */ #define UMIP_INST_SLDT 3 /* 0F 00 /0 */
#define UMIP_INST_STR 4 /* 0F 00 /1 */ #define UMIP_INST_STR 4 /* 0F 00 /1 */
const char * const umip_insns[5] = { static const char * const umip_insns[5] = {
[UMIP_INST_SGDT] = "SGDT", [UMIP_INST_SGDT] = "SGDT",
[UMIP_INST_SIDT] = "SIDT", [UMIP_INST_SIDT] = "SIDT",
[UMIP_INST_SMSW] = "SMSW", [UMIP_INST_SMSW] = "SMSW",

View File

@ -3,6 +3,10 @@
ccflags-y += -Iarch/x86/kvm ccflags-y += -Iarch/x86/kvm
ccflags-$(CONFIG_KVM_WERROR) += -Werror ccflags-$(CONFIG_KVM_WERROR) += -Werror
ifeq ($(CONFIG_FRAME_POINTER),y)
OBJECT_FILES_NON_STANDARD_vmenter.o := y
endif
KVM := ../../../virt/kvm KVM := ../../../virt/kvm
kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \ kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \

View File

@ -12,6 +12,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/psp-sev.h> #include <linux/psp-sev.h>
#include <linux/pagemap.h>
#include <linux/swap.h> #include <linux/swap.h>
#include "x86.h" #include "x86.h"
@ -1117,7 +1118,7 @@ int __init sev_hardware_setup(void)
/* Maximum number of encrypted guests supported simultaneously */ /* Maximum number of encrypted guests supported simultaneously */
max_sev_asid = cpuid_ecx(0x8000001F); max_sev_asid = cpuid_ecx(0x8000001F);
if (!max_sev_asid) if (!svm_sev_enabled())
return 1; return 1;
/* Minimum ASID value that should be used for SEV guest */ /* Minimum ASID value that should be used for SEV guest */
@ -1156,6 +1157,9 @@ err:
void sev_hardware_teardown(void) void sev_hardware_teardown(void)
{ {
if (!svm_sev_enabled())
return;
bitmap_free(sev_asid_bitmap); bitmap_free(sev_asid_bitmap);
bitmap_free(sev_reclaim_asid_bitmap); bitmap_free(sev_reclaim_asid_bitmap);

View File

@ -3276,7 +3276,7 @@ static void svm_cancel_injection(struct kvm_vcpu *vcpu)
svm_complete_interrupts(svm); svm_complete_interrupts(svm);
} }
bool __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs); void __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs);
static void svm_vcpu_run(struct kvm_vcpu *vcpu) static void svm_vcpu_run(struct kvm_vcpu *vcpu)
{ {
@ -3330,13 +3330,8 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
*/ */
x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl); x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl);
local_irq_enable();
__svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&svm->vcpu.arch.regs); __svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&svm->vcpu.arch.regs);
/* Eliminate branch target predictions from guest mode */
vmexit_fill_RSB();
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
wrmsrl(MSR_GS_BASE, svm->host.gs_base); wrmsrl(MSR_GS_BASE, svm->host.gs_base);
#else #else
@ -3366,8 +3361,6 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
reload_tss(vcpu); reload_tss(vcpu);
local_irq_disable();
x86_spec_ctrl_restore_host(svm->spec_ctrl, svm->virt_spec_ctrl); x86_spec_ctrl_restore_host(svm->spec_ctrl, svm->virt_spec_ctrl);
vcpu->arch.cr2 = svm->vmcb->save.cr2; vcpu->arch.cr2 = svm->vmcb->save.cr2;
@ -3411,7 +3404,6 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
mark_all_clean(svm->vmcb); mark_all_clean(svm->vmcb);
} }
STACK_FRAME_NON_STANDARD(svm_vcpu_run);
static void svm_load_mmu_pgd(struct kvm_vcpu *vcpu, unsigned long root) static void svm_load_mmu_pgd(struct kvm_vcpu *vcpu, unsigned long root)
{ {

View File

@ -3,6 +3,7 @@
#include <asm/asm.h> #include <asm/asm.h>
#include <asm/bitsperlong.h> #include <asm/bitsperlong.h>
#include <asm/kvm_vcpu_regs.h> #include <asm/kvm_vcpu_regs.h>
#include <asm/nospec-branch.h>
#define WORD_SIZE (BITS_PER_LONG / 8) #define WORD_SIZE (BITS_PER_LONG / 8)
@ -35,7 +36,6 @@
*/ */
SYM_FUNC_START(__svm_vcpu_run) SYM_FUNC_START(__svm_vcpu_run)
push %_ASM_BP push %_ASM_BP
mov %_ASM_SP, %_ASM_BP
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
push %r15 push %r15
push %r14 push %r14
@ -78,6 +78,7 @@ SYM_FUNC_START(__svm_vcpu_run)
pop %_ASM_AX pop %_ASM_AX
/* Enter guest mode */ /* Enter guest mode */
sti
1: vmload %_ASM_AX 1: vmload %_ASM_AX
jmp 3f jmp 3f
2: cmpb $0, kvm_rebooting 2: cmpb $0, kvm_rebooting
@ -99,6 +100,13 @@ SYM_FUNC_START(__svm_vcpu_run)
ud2 ud2
_ASM_EXTABLE(5b, 6b) _ASM_EXTABLE(5b, 6b)
7: 7:
cli
#ifdef CONFIG_RETPOLINE
/* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE
#endif
/* "POP" @regs to RAX. */ /* "POP" @regs to RAX. */
pop %_ASM_AX pop %_ASM_AX

View File

@ -5533,8 +5533,25 @@ static bool nested_vmx_exit_handled_vmcs_access(struct kvm_vcpu *vcpu,
return 1 & (b >> (field & 7)); return 1 & (b >> (field & 7));
} }
static bool nested_vmx_exit_handled_mtf(struct vmcs12 *vmcs12)
{
u32 entry_intr_info = vmcs12->vm_entry_intr_info_field;
if (nested_cpu_has_mtf(vmcs12))
return true;
/*
* An MTF VM-exit may be injected into the guest by setting the
* interruption-type to 7 (other event) and the vector field to 0. Such
* is the case regardless of the 'monitor trap flag' VM-execution
* control.
*/
return entry_intr_info == (INTR_INFO_VALID_MASK
| INTR_TYPE_OTHER_EVENT);
}
/* /*
* Return 1 if we should exit from L2 to L1 to handle an exit, or 0 if we * Return true if we should exit from L2 to L1 to handle an exit, or false if we
* should handle it ourselves in L0 (and then continue L2). Only call this * should handle it ourselves in L0 (and then continue L2). Only call this
* when in is_guest_mode (L2). * when in is_guest_mode (L2).
*/ */
@ -5633,7 +5650,7 @@ bool nested_vmx_exit_reflected(struct kvm_vcpu *vcpu, u32 exit_reason)
case EXIT_REASON_MWAIT_INSTRUCTION: case EXIT_REASON_MWAIT_INSTRUCTION:
return nested_cpu_has(vmcs12, CPU_BASED_MWAIT_EXITING); return nested_cpu_has(vmcs12, CPU_BASED_MWAIT_EXITING);
case EXIT_REASON_MONITOR_TRAP_FLAG: case EXIT_REASON_MONITOR_TRAP_FLAG:
return nested_cpu_has_mtf(vmcs12); return nested_vmx_exit_handled_mtf(vmcs12);
case EXIT_REASON_MONITOR_INSTRUCTION: case EXIT_REASON_MONITOR_INSTRUCTION:
return nested_cpu_has(vmcs12, CPU_BASED_MONITOR_EXITING); return nested_cpu_has(vmcs12, CPU_BASED_MONITOR_EXITING);
case EXIT_REASON_PAUSE_INSTRUCTION: case EXIT_REASON_PAUSE_INSTRUCTION:

View File

@ -4572,7 +4572,7 @@ static int handle_rmode_exception(struct kvm_vcpu *vcpu,
*/ */
static void kvm_machine_check(void) static void kvm_machine_check(void)
{ {
#if defined(CONFIG_X86_MCE) && defined(CONFIG_X86_64) #if defined(CONFIG_X86_MCE)
struct pt_regs regs = { struct pt_regs regs = {
.cs = 3, /* Fake ring 3 no matter what the guest ran on */ .cs = 3, /* Fake ring 3 no matter what the guest ran on */
.flags = X86_EFLAGS_IF, .flags = X86_EFLAGS_IF,

View File

@ -3060,6 +3060,17 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_IA32_PERF_CTL: case MSR_IA32_PERF_CTL:
case MSR_AMD64_DC_CFG: case MSR_AMD64_DC_CFG:
case MSR_F15H_EX_CFG: case MSR_F15H_EX_CFG:
/*
* Intel Sandy Bridge CPUs must support the RAPL (running average power
* limit) MSRs. Just return 0, as we do not want to expose the host
* data here. Do not conditionalize this on CPUID, as KVM does not do
* so for existing CPU-specific MSRs.
*/
case MSR_RAPL_POWER_UNIT:
case MSR_PP0_ENERGY_STATUS: /* Power plane 0 (core) */
case MSR_PP1_ENERGY_STATUS: /* Power plane 1 (graphics uncore) */
case MSR_PKG_ENERGY_STATUS: /* Total package */
case MSR_DRAM_ENERGY_STATUS: /* DRAM controller */
msr_info->data = 0; msr_info->data = 0;
break; break;
case MSR_F15H_PERF_CTL0 ... MSR_F15H_PERF_CTR5: case MSR_F15H_PERF_CTL0 ... MSR_F15H_PERF_CTR5:
@ -5049,10 +5060,13 @@ set_identity_unlock:
r = -EFAULT; r = -EFAULT;
if (copy_from_user(&u.ps, argp, sizeof(u.ps))) if (copy_from_user(&u.ps, argp, sizeof(u.ps)))
goto out; goto out;
mutex_lock(&kvm->lock);
r = -ENXIO; r = -ENXIO;
if (!kvm->arch.vpit) if (!kvm->arch.vpit)
goto out; goto set_pit_out;
r = kvm_vm_ioctl_set_pit(kvm, &u.ps); r = kvm_vm_ioctl_set_pit(kvm, &u.ps);
set_pit_out:
mutex_unlock(&kvm->lock);
break; break;
} }
case KVM_GET_PIT2: { case KVM_GET_PIT2: {
@ -5072,10 +5086,13 @@ set_identity_unlock:
r = -EFAULT; r = -EFAULT;
if (copy_from_user(&u.ps2, argp, sizeof(u.ps2))) if (copy_from_user(&u.ps2, argp, sizeof(u.ps2)))
goto out; goto out;
mutex_lock(&kvm->lock);
r = -ENXIO; r = -ENXIO;
if (!kvm->arch.vpit) if (!kvm->arch.vpit)
goto out; goto set_pit2_out;
r = kvm_vm_ioctl_set_pit2(kvm, &u.ps2); r = kvm_vm_ioctl_set_pit2(kvm, &u.ps2);
set_pit2_out:
mutex_unlock(&kvm->lock);
break; break;
} }
case KVM_REINJECT_CONTROL: { case KVM_REINJECT_CONTROL: {

View File

@ -158,6 +158,19 @@ static bool is_ereg(u32 reg)
BIT(BPF_REG_AX)); BIT(BPF_REG_AX));
} }
/*
* is_ereg_8l() == true if BPF register 'reg' is mapped to access x86-64
* lower 8-bit registers dil,sil,bpl,spl,r8b..r15b, which need extra byte
* of encoding. al,cl,dl,bl have simpler encoding.
*/
static bool is_ereg_8l(u32 reg)
{
return is_ereg(reg) ||
(1 << reg) & (BIT(BPF_REG_1) |
BIT(BPF_REG_2) |
BIT(BPF_REG_FP));
}
static bool is_axreg(u32 reg) static bool is_axreg(u32 reg)
{ {
return reg == BPF_REG_0; return reg == BPF_REG_0;
@ -598,9 +611,8 @@ static void emit_stx(u8 **pprog, u32 size, u32 dst_reg, u32 src_reg, int off)
switch (size) { switch (size) {
case BPF_B: case BPF_B:
/* Emit 'mov byte ptr [rax + off], al' */ /* Emit 'mov byte ptr [rax + off], al' */
if (is_ereg(dst_reg) || is_ereg(src_reg) || if (is_ereg(dst_reg) || is_ereg_8l(src_reg))
/* We have to add extra byte for x86 SIL, DIL regs */ /* Add extra byte for eregs or SIL,DIL,BPL in src_reg */
src_reg == BPF_REG_1 || src_reg == BPF_REG_2)
EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x88); EMIT2(add_2mod(0x40, dst_reg, src_reg), 0x88);
else else
EMIT1(0x88); EMIT1(0x88);

View File

@ -1847,14 +1847,16 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image,
case BPF_B: case BPF_B:
case BPF_H: case BPF_H:
case BPF_W: case BPF_W:
if (!bpf_prog->aux->verifier_zext) if (bpf_prog->aux->verifier_zext)
break; break;
if (dstk) { if (dstk) {
EMIT3(0xC7, add_1reg(0x40, IA32_EBP), EMIT3(0xC7, add_1reg(0x40, IA32_EBP),
STACK_VAR(dst_hi)); STACK_VAR(dst_hi));
EMIT(0x0, 4); EMIT(0x0, 4);
} else { } else {
EMIT3(0xC7, add_1reg(0xC0, dst_hi), 0); /* xor dst_hi,dst_hi */
EMIT2(0x33,
add_2reg(0xC0, dst_hi, dst_hi));
} }
break; break;
case BPF_DW: case BPF_DW:
@ -2013,8 +2015,8 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image,
case BPF_JMP | BPF_JSET | BPF_X: case BPF_JMP | BPF_JSET | BPF_X:
case BPF_JMP32 | BPF_JSET | BPF_X: { case BPF_JMP32 | BPF_JSET | BPF_X: {
bool is_jmp64 = BPF_CLASS(insn->code) == BPF_JMP; bool is_jmp64 = BPF_CLASS(insn->code) == BPF_JMP;
u8 dreg_lo = dstk ? IA32_EAX : dst_lo; u8 dreg_lo = IA32_EAX;
u8 dreg_hi = dstk ? IA32_EDX : dst_hi; u8 dreg_hi = IA32_EDX;
u8 sreg_lo = sstk ? IA32_ECX : src_lo; u8 sreg_lo = sstk ? IA32_ECX : src_lo;
u8 sreg_hi = sstk ? IA32_EBX : src_hi; u8 sreg_hi = sstk ? IA32_EBX : src_hi;
@ -2026,6 +2028,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image,
add_2reg(0x40, IA32_EBP, add_2reg(0x40, IA32_EBP,
IA32_EDX), IA32_EDX),
STACK_VAR(dst_hi)); STACK_VAR(dst_hi));
} else {
/* mov dreg_lo,dst_lo */
EMIT2(0x89, add_2reg(0xC0, dreg_lo, dst_lo));
if (is_jmp64)
/* mov dreg_hi,dst_hi */
EMIT2(0x89,
add_2reg(0xC0, dreg_hi, dst_hi));
} }
if (sstk) { if (sstk) {
@ -2050,8 +2059,8 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image,
case BPF_JMP | BPF_JSET | BPF_K: case BPF_JMP | BPF_JSET | BPF_K:
case BPF_JMP32 | BPF_JSET | BPF_K: { case BPF_JMP32 | BPF_JSET | BPF_K: {
bool is_jmp64 = BPF_CLASS(insn->code) == BPF_JMP; bool is_jmp64 = BPF_CLASS(insn->code) == BPF_JMP;
u8 dreg_lo = dstk ? IA32_EAX : dst_lo; u8 dreg_lo = IA32_EAX;
u8 dreg_hi = dstk ? IA32_EDX : dst_hi; u8 dreg_hi = IA32_EDX;
u8 sreg_lo = IA32_ECX; u8 sreg_lo = IA32_ECX;
u8 sreg_hi = IA32_EBX; u8 sreg_hi = IA32_EBX;
u32 hi; u32 hi;
@ -2064,6 +2073,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image,
add_2reg(0x40, IA32_EBP, add_2reg(0x40, IA32_EBP,
IA32_EDX), IA32_EDX),
STACK_VAR(dst_hi)); STACK_VAR(dst_hi));
} else {
/* mov dreg_lo,dst_lo */
EMIT2(0x89, add_2reg(0xC0, dreg_lo, dst_lo));
if (is_jmp64)
/* mov dreg_hi,dst_hi */
EMIT2(0x89,
add_2reg(0xC0, dreg_hi, dst_hi));
} }
/* mov ecx,imm32 */ /* mov ecx,imm32 */

View File

@ -1,8 +1,4 @@
/* /*
* include/asm-xtensa/module.h
*
* This file contains the module code specific to the Xtensa architecture.
*
* This file is subject to the terms and conditions of the GNU General Public * This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
@ -10,11 +6,12 @@
* Copyright (C) 2001 - 2005 Tensilica Inc. * Copyright (C) 2001 - 2005 Tensilica Inc.
*/ */
#ifndef _XTENSA_MODULE_H #ifndef _ASM_VERMAGIC_H
#define _XTENSA_MODULE_H #define _ASM_VERMAGIC_H
#include <linux/stringify.h>
#include <variant/core.h>
#define MODULE_ARCH_VERMAGIC "xtensa-" __stringify(XCHAL_CORE_ID) " " #define MODULE_ARCH_VERMAGIC "xtensa-" __stringify(XCHAL_CORE_ID) " "
#include <asm-generic/module.h> #endif /* _ASM_VERMAGIC_H */
#endif /* _XTENSA_MODULE_H */

View File

@ -1591,7 +1591,7 @@ skip_surplus_transfers:
vrate_min, vrate_max); vrate_min, vrate_max);
} }
trace_iocost_ioc_vrate_adj(ioc, vrate, &missed_ppm, rq_wait_pct, trace_iocost_ioc_vrate_adj(ioc, vrate, missed_ppm, rq_wait_pct,
nr_lagging, nr_shortages, nr_lagging, nr_shortages,
nr_surpluses); nr_surpluses);
@ -1600,7 +1600,7 @@ skip_surplus_transfers:
ioc->period_us * vrate * INUSE_MARGIN_PCT, 100); ioc->period_us * vrate * INUSE_MARGIN_PCT, 100);
} else if (ioc->busy_level != prev_busy_level || nr_lagging) { } else if (ioc->busy_level != prev_busy_level || nr_lagging) {
trace_iocost_ioc_vrate_adj(ioc, atomic64_read(&ioc->vtime_rate), trace_iocost_ioc_vrate_adj(ioc, atomic64_read(&ioc->vtime_rate),
&missed_ppm, rq_wait_pct, nr_lagging, missed_ppm, rq_wait_pct, nr_lagging,
nr_shortages, nr_surpluses); nr_shortages, nr_surpluses);
} }

View File

@ -1222,8 +1222,10 @@ bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list,
rq = list_first_entry(list, struct request, queuelist); rq = list_first_entry(list, struct request, queuelist);
hctx = rq->mq_hctx; hctx = rq->mq_hctx;
if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) {
blk_mq_put_driver_tag(rq);
break; break;
}
if (!blk_mq_get_driver_tag(rq)) { if (!blk_mq_get_driver_tag(rq)) {
/* /*

View File

@ -313,7 +313,7 @@ static void scale_up(struct rq_wb *rwb)
calc_wb_limits(rwb); calc_wb_limits(rwb);
rwb->unknown_cnt = 0; rwb->unknown_cnt = 0;
rwb_wake_all(rwb); rwb_wake_all(rwb);
rwb_trace_step(rwb, "scale up"); rwb_trace_step(rwb, tracepoint_string("scale up"));
} }
static void scale_down(struct rq_wb *rwb, bool hard_throttle) static void scale_down(struct rq_wb *rwb, bool hard_throttle)
@ -322,7 +322,7 @@ static void scale_down(struct rq_wb *rwb, bool hard_throttle)
return; return;
calc_wb_limits(rwb); calc_wb_limits(rwb);
rwb->unknown_cnt = 0; rwb->unknown_cnt = 0;
rwb_trace_step(rwb, "scale down"); rwb_trace_step(rwb, tracepoint_string("scale down"));
} }
static void rwb_arm_timer(struct rq_wb *rwb) static void rwb_arm_timer(struct rq_wb *rwb)

View File

@ -87,18 +87,6 @@ static const struct dmi_system_id dmi_lid_quirks[] = {
}, },
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_DISABLED, .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_DISABLED,
}, },
{
/*
* Asus T200TA, _LID keeps reporting closed after every second
* openening of the lid. Causing immediate re-suspend after
* opening every other open. Using LID_INIT_OPEN fixes this.
*/
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_PRODUCT_NAME, "T200TA"),
},
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
},
{ {
/* GP-electronic T701, _LID method points to a floating GPIO */ /* GP-electronic T701, _LID method points to a floating GPIO */
.matches = { .matches = {

View File

@ -322,10 +322,10 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
resource->res.data.extended_irq.polarity = resource->res.data.extended_irq.polarity =
link->irq.polarity; link->irq.polarity;
if (link->irq.triggering == ACPI_EDGE_SENSITIVE) if (link->irq.triggering == ACPI_EDGE_SENSITIVE)
resource->res.data.irq.shareable = resource->res.data.extended_irq.shareable =
ACPI_EXCLUSIVE; ACPI_EXCLUSIVE;
else else
resource->res.data.irq.shareable = ACPI_SHARED; resource->res.data.extended_irq.shareable = ACPI_SHARED;
resource->res.data.extended_irq.interrupt_count = 1; resource->res.data.extended_irq.interrupt_count = 1;
resource->res.data.extended_irq.interrupts[0] = irq; resource->res.data.extended_irq.interrupts[0] = irq;
/* ignore resource_source, it's optional */ /* ignore resource_source, it's optional */

View File

@ -410,6 +410,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
{ PCI_VDEVICE(INTEL, 0x22a3), board_ahci_mobile }, /* Cherry Tr. AHCI */ { PCI_VDEVICE(INTEL, 0x22a3), board_ahci_mobile }, /* Cherry Tr. AHCI */
{ PCI_VDEVICE(INTEL, 0x5ae3), board_ahci_mobile }, /* ApolloLake AHCI */ { PCI_VDEVICE(INTEL, 0x5ae3), board_ahci_mobile }, /* ApolloLake AHCI */
{ PCI_VDEVICE(INTEL, 0x34d3), board_ahci_mobile }, /* Ice Lake LP AHCI */ { PCI_VDEVICE(INTEL, 0x34d3), board_ahci_mobile }, /* Ice Lake LP AHCI */
{ PCI_VDEVICE(INTEL, 0x02d3), board_ahci_mobile }, /* Comet Lake PCH-U AHCI */
{ PCI_VDEVICE(INTEL, 0x02d7), board_ahci_mobile }, /* Comet Lake PCH RAID */ { PCI_VDEVICE(INTEL, 0x02d7), board_ahci_mobile }, /* Comet Lake PCH RAID */
/* JMicron 360/1/3/5/6, match class to avoid IDE function */ /* JMicron 360/1/3/5/6, match class to avoid IDE function */

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