mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 02:04:05 +08:00
Merge tag 'noinstr-x86-kvm-2020-05-16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into HEAD
This commit is contained in:
commit
9d5272f5e3
@ -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
|
||||||
|
@ -182,12 +182,15 @@ fix_padding
|
|||||||
space-efficient. If this option is not present, large padding is
|
space-efficient. If this option is not present, large padding is
|
||||||
used - that is for compatibility with older kernels.
|
used - that is for compatibility with older kernels.
|
||||||
|
|
||||||
|
allow_discards
|
||||||
|
Allow block discard requests (a.k.a. TRIM) for the integrity device.
|
||||||
|
Discards are only allowed to devices using internal hash.
|
||||||
|
|
||||||
The journal mode (D/J), buffer_sectors, journal_watermark, commit_time can
|
The journal mode (D/J), buffer_sectors, journal_watermark, commit_time and
|
||||||
be changed when reloading the target (load an inactive table and swap the
|
allow_discards can be changed when reloading the target (load an inactive
|
||||||
tables with suspend and resume). The other arguments should not be changed
|
table and swap the tables with suspend and resume). The other arguments
|
||||||
when reloading the target because the layout of disk data depend on them
|
should not be changed when reloading the target because the layout of disk
|
||||||
and the reloaded target would be non-functional.
|
data depend on them and the reloaded target would be non-functional.
|
||||||
|
|
||||||
|
|
||||||
The layout of the formatted block device:
|
The layout of the formatted block device:
|
||||||
|
@ -5187,8 +5187,7 @@
|
|||||||
|
|
||||||
usbcore.old_scheme_first=
|
usbcore.old_scheme_first=
|
||||||
[USB] Start with the old device initialization
|
[USB] Start with the old device initialization
|
||||||
scheme, applies only to low and full-speed devices
|
scheme (default 0 = off).
|
||||||
(default 0 = off).
|
|
||||||
|
|
||||||
usbcore.usbfs_memory_mb=
|
usbcore.usbfs_memory_mb=
|
||||||
[USB] Memory limit (in MB) for buffers allocated by
|
[USB] Memory limit (in MB) for buffers allocated by
|
||||||
|
@ -23,12 +23,13 @@ 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.
|
||||||
|
- Constant counter: increments at the fixed frequency of the system
|
||||||
clock.
|
clock.
|
||||||
- Instructions retired: increments with every architecturally executed
|
- Instructions retired: increments with every architecturally executed
|
||||||
instruction.
|
instruction.
|
||||||
- Memory stall cycles: counts instruction dispatch stall cycles caused by
|
- Memory stall cycles: counts instruction dispatch stall cycles caused by
|
||||||
misses in the last level cache within the clock domain.
|
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,10 +58,11 @@ counters, only the presence of the extension.
|
|||||||
|
|
||||||
Firmware (code running at higher exception levels, e.g. arm-tf) support is
|
Firmware (code running at higher exception levels, e.g. arm-tf) support is
|
||||||
needed to:
|
needed to:
|
||||||
- Enable access for lower exception levels (EL2 and EL1) to the AMU
|
|
||||||
|
- Enable access for lower exception levels (EL2 and EL1) to the AMU
|
||||||
registers.
|
registers.
|
||||||
- Enable the counters. If not enabled these will read as 0.
|
- Enable the counters. If not enabled these will read as 0.
|
||||||
- Save/restore the counters before/after the CPU is being put/brought up
|
- Save/restore the counters before/after the CPU is being put/brought up
|
||||||
from the 'off' power state.
|
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
|
||||||
@ -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
|
|
||||||
|
- Security reasons: they might expose information about code executed in
|
||||||
secure mode.
|
secure mode.
|
||||||
- Purpose: AMU counters are intended for system management use.
|
- Purpose: AMU counters are intended for system management use.
|
||||||
|
|
||||||
Also, the presence of the feature is not visible to userspace.
|
Also, the presence of the feature is not visible to userspace.
|
||||||
|
|
||||||
@ -105,7 +109,8 @@ Virtualization
|
|||||||
|
|
||||||
Currently, access from userspace (EL0) and kernelspace (EL1) on the KVM
|
Currently, access from userspace (EL0) and kernelspace (EL1) on the KVM
|
||||||
guest side is disabled due to:
|
guest side is disabled due to:
|
||||||
- Security reasons: they might expose information about code executed
|
|
||||||
|
- Security reasons: they might expose information about code executed
|
||||||
by other guests or the host.
|
by other guests or the host.
|
||||||
|
|
||||||
Any attempt to access the AMU registers will result in an UNDEFINED
|
Any attempt to access the AMU registers will result in an UNDEFINED
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
DT_DOC_CHECKER ?= dt-doc-validate
|
DT_DOC_CHECKER ?= dt-doc-validate
|
||||||
DT_EXTRACT_EX ?= dt-extract-example
|
DT_EXTRACT_EX ?= dt-extract-example
|
||||||
DT_MK_SCHEMA ?= dt-mk-schema
|
DT_MK_SCHEMA ?= dt-mk-schema
|
||||||
|
DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
|
||||||
|
|
||||||
quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
|
quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
|
||||||
cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
|
cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
|
||||||
@ -13,16 +14,18 @@ $(obj)/%.example.dts: $(src)/%.yaml FORCE
|
|||||||
# Use full schemas when checking %.example.dts
|
# Use full schemas when checking %.example.dts
|
||||||
DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
|
DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
|
||||||
|
|
||||||
quiet_cmd_mk_schema = SCHEMA $@
|
find_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \
|
||||||
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
|
|
||||||
|
|
||||||
DT_DOCS = $(addprefix $(src)/, \
|
|
||||||
$(shell \
|
|
||||||
cd $(srctree)/$(src) && \
|
|
||||||
find * \( -name '*.yaml' ! \
|
|
||||||
-name 'processed-schema*' ! \
|
-name 'processed-schema*' ! \
|
||||||
-name '*.example.dt.yaml' \) \
|
-name '*.example.dt.yaml' \)
|
||||||
))
|
|
||||||
|
quiet_cmd_mk_schema = SCHEMA $@
|
||||||
|
cmd_mk_schema = rm -f $@ ; \
|
||||||
|
$(if $(DT_MK_SCHEMA_FLAGS), \
|
||||||
|
echo $(real-prereqs), \
|
||||||
|
$(find_cmd)) | \
|
||||||
|
xargs $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) >> $@
|
||||||
|
|
||||||
|
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
|
||||||
|
|
||||||
DT_SCHEMA_FILES ?= $(DT_DOCS)
|
DT_SCHEMA_FILES ?= $(DT_DOCS)
|
||||||
|
|
||||||
@ -37,7 +40,7 @@ override DTC_FLAGS := \
|
|||||||
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
|
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
|
||||||
$(call if_changed,mk_schema)
|
$(call if_changed,mk_schema)
|
||||||
|
|
||||||
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
|
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG)
|
||||||
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
|
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
|
||||||
$(call if_changed,mk_schema)
|
$(call if_changed,mk_schema)
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
@ -96,12 +96,20 @@ properties:
|
|||||||
If set, reverse the bit order described in the data mappings below on all
|
If set, reverse the bit order described in the data mappings below on all
|
||||||
data lanes, transmitting bits for slots 6 to 0 instead of 0 to 6.
|
data lanes, transmitting bits for slots 6 to 0 instead of 0 to 6.
|
||||||
|
|
||||||
|
port: true
|
||||||
|
ports: true
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- data-mapping
|
- data-mapping
|
||||||
- width-mm
|
- width-mm
|
||||||
- height-mm
|
- height-mm
|
||||||
- panel-timing
|
- panel-timing
|
||||||
|
|
||||||
|
oneOf:
|
||||||
|
- required:
|
||||||
- port
|
- port
|
||||||
|
- required:
|
||||||
|
- ports
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -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";
|
||||||
|
@ -22,9 +22,7 @@ properties:
|
|||||||
const: socionext,uniphier-xdmac
|
const: socionext,uniphier-xdmac
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
items:
|
maxItems: 1
|
||||||
- description: XDMAC base register region (offset and length)
|
|
||||||
- description: XDMAC extension register region (offset and length)
|
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
@ -49,12 +47,13 @@ required:
|
|||||||
- reg
|
- reg
|
||||||
- interrupts
|
- interrupts
|
||||||
- "#dma-cells"
|
- "#dma-cells"
|
||||||
|
- dma-channels
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
xdmac: dma-controller@5fc10000 {
|
xdmac: dma-controller@5fc10000 {
|
||||||
compatible = "socionext,uniphier-xdmac";
|
compatible = "socionext,uniphier-xdmac";
|
||||||
reg = <0x5fc10000 0x1000>, <0x5fc20000 0x800>;
|
reg = <0x5fc10000 0x5300>;
|
||||||
interrupts = <0 188 4>;
|
interrupts = <0 188 4>;
|
||||||
#dma-cells = <2>;
|
#dma-cells = <2>;
|
||||||
dma-channels = <16>;
|
dma-channels = <16>;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
$id: "http://devicetree.org/schemas/bindings/iio/adc/st,stm32-adc.yaml#"
|
$id: "http://devicetree.org/schemas/iio/adc/st,stm32-adc.yaml#"
|
||||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
title: STMicroelectronics STM32 ADC bindings
|
title: STMicroelectronics STM32 ADC bindings
|
||||||
|
@ -259,8 +259,6 @@ properties:
|
|||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
additionalProperties: false
|
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
@ -97,7 +97,7 @@ then:
|
|||||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
- minimum: 0
|
- minimum: 0
|
||||||
maximum: 63
|
maximum: 63
|
||||||
default: 0
|
default: 32
|
||||||
|
|
||||||
qcom,charge-ctrl-value:
|
qcom,charge-ctrl-value:
|
||||||
description:
|
description:
|
||||||
@ -130,7 +130,7 @@ then:
|
|||||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
- minimum: 0
|
- minimum: 0
|
||||||
maximum: 3
|
maximum: 3
|
||||||
default: 2
|
default: 0
|
||||||
|
|
||||||
qcom,preemphasis-width:
|
qcom,preemphasis-width:
|
||||||
description:
|
description:
|
||||||
@ -152,7 +152,7 @@ then:
|
|||||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
- minimum: 0
|
- minimum: 0
|
||||||
maximum: 3
|
maximum: 3
|
||||||
default: 0
|
default: 1
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
@ -37,7 +37,6 @@ properties:
|
|||||||
type: object
|
type: object
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
additionalProperties: false
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
@ -75,7 +75,8 @@ properties:
|
|||||||
description: |
|
description: |
|
||||||
disables over voltage protection of this buck
|
disables over voltage protection of this buck
|
||||||
|
|
||||||
additionalProperties: false
|
unevaluatedProperties: false
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
@ -35,6 +35,8 @@ patternProperties:
|
|||||||
description:
|
description:
|
||||||
should be "ldo1", ..., "ldo7"
|
should be "ldo1", ..., "ldo7"
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
"^BUCK[1-7]$":
|
"^BUCK[1-7]$":
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
@ -103,5 +105,7 @@ patternProperties:
|
|||||||
|
|
||||||
required:
|
required:
|
||||||
- regulator-name
|
- regulator-name
|
||||||
additionalProperties: false
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
@ -41,6 +41,8 @@ patternProperties:
|
|||||||
description:
|
description:
|
||||||
should be "ldo1", ..., "ldo7"
|
should be "ldo1", ..., "ldo7"
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
"^BUCK[1-8]$":
|
"^BUCK[1-8]$":
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
@ -99,5 +101,7 @@ patternProperties:
|
|||||||
|
|
||||||
required:
|
required:
|
||||||
- regulator-name
|
- regulator-name
|
||||||
additionalProperties: false
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
@ -40,6 +40,8 @@ patternProperties:
|
|||||||
description:
|
description:
|
||||||
should be "ldo1", ..., "ldo6"
|
should be "ldo1", ..., "ldo6"
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
"^BUCK[1-6]$":
|
"^BUCK[1-6]$":
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
@ -93,5 +95,7 @@ patternProperties:
|
|||||||
|
|
||||||
required:
|
required:
|
||||||
- regulator-name
|
- regulator-name
|
||||||
additionalProperties: false
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
@ -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
|
||||||
|
@ -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>;
|
|
||||||
};
|
|
101
Documentation/devicetree/bindings/sound/rockchip-spdif.yaml
Normal file
101
Documentation/devicetree/bindings/sound/rockchip-spdif.yaml
Normal 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>;
|
||||||
|
};
|
@ -18,6 +18,7 @@ properties:
|
|||||||
- renesas,r8a774c0-usb3-peri # RZ/G2E
|
- renesas,r8a774c0-usb3-peri # RZ/G2E
|
||||||
- renesas,r8a7795-usb3-peri # R-Car H3
|
- renesas,r8a7795-usb3-peri # R-Car H3
|
||||||
- renesas,r8a7796-usb3-peri # R-Car M3-W
|
- renesas,r8a7796-usb3-peri # R-Car M3-W
|
||||||
|
- renesas,r8a77961-usb3-peri # R-Car M3-W+
|
||||||
- renesas,r8a77965-usb3-peri # R-Car M3-N
|
- renesas,r8a77965-usb3-peri # R-Car M3-N
|
||||||
- renesas,r8a77990-usb3-peri # R-Car E3
|
- renesas,r8a77990-usb3-peri # R-Car E3
|
||||||
- const: renesas,rcar-gen3-usb3-peri
|
- const: renesas,rcar-gen3-usb3-peri
|
||||||
|
@ -40,6 +40,7 @@ properties:
|
|||||||
- renesas,usbhs-r8a774c0 # RZ/G2E
|
- renesas,usbhs-r8a774c0 # RZ/G2E
|
||||||
- renesas,usbhs-r8a7795 # R-Car H3
|
- renesas,usbhs-r8a7795 # R-Car H3
|
||||||
- renesas,usbhs-r8a7796 # R-Car M3-W
|
- renesas,usbhs-r8a7796 # R-Car M3-W
|
||||||
|
- renesas,usbhs-r8a77961 # R-Car M3-W+
|
||||||
- renesas,usbhs-r8a77965 # R-Car M3-N
|
- renesas,usbhs-r8a77965 # R-Car M3-N
|
||||||
- renesas,usbhs-r8a77990 # R-Car E3
|
- renesas,usbhs-r8a77990 # R-Car E3
|
||||||
- renesas,usbhs-r8a77995 # R-Car D3
|
- renesas,usbhs-r8a77995 # R-Car D3
|
||||||
|
@ -16,7 +16,8 @@ Required properties:
|
|||||||
- "renesas,xhci-r8a7791" for r8a7791 SoC
|
- "renesas,xhci-r8a7791" for r8a7791 SoC
|
||||||
- "renesas,xhci-r8a7793" for r8a7793 SoC
|
- "renesas,xhci-r8a7793" for r8a7793 SoC
|
||||||
- "renesas,xhci-r8a7795" for r8a7795 SoC
|
- "renesas,xhci-r8a7795" for r8a7795 SoC
|
||||||
- "renesas,xhci-r8a7796" for r8a7796 SoC
|
- "renesas,xhci-r8a7796" for r8a77960 SoC
|
||||||
|
- "renesas,xhci-r8a77961" for r8a77961 SoC
|
||||||
- "renesas,xhci-r8a77965" for r8a77965 SoC
|
- "renesas,xhci-r8a77965" for r8a77965 SoC
|
||||||
- "renesas,xhci-r8a77990" for r8a77990 SoC
|
- "renesas,xhci-r8a77990" for r8a77990 SoC
|
||||||
- "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 or RZ/G1 compatible
|
- "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 or RZ/G1 compatible
|
||||||
|
@ -79,7 +79,7 @@ created with any of::
|
|||||||
struct dentry *parent, u8 *value);
|
struct dentry *parent, u8 *value);
|
||||||
void debugfs_create_u16(const char *name, umode_t mode,
|
void debugfs_create_u16(const char *name, umode_t mode,
|
||||||
struct dentry *parent, u16 *value);
|
struct dentry *parent, u16 *value);
|
||||||
struct dentry *debugfs_create_u32(const char *name, umode_t mode,
|
void debugfs_create_u32(const char *name, umode_t mode,
|
||||||
struct dentry *parent, u32 *value);
|
struct dentry *parent, u32 *value);
|
||||||
void debugfs_create_u64(const char *name, umode_t mode,
|
void debugfs_create_u64(const char *name, umode_t mode,
|
||||||
struct dentry *parent, u64 *value);
|
struct dentry *parent, u64 *value);
|
||||||
|
@ -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.
|
||||||
|
@ -61,8 +61,8 @@ The ``ice`` driver reports the following versions
|
|||||||
- running
|
- running
|
||||||
- ICE OS Default Package
|
- ICE OS Default Package
|
||||||
- The name of the DDP package that is active in the device. The DDP
|
- The name of the DDP package that is active in the device. The DDP
|
||||||
package is loaded by the driver during initialization. Each varation
|
package is loaded by the driver during initialization. Each
|
||||||
of DDP package shall have a unique name.
|
variation of the DDP package has a unique name.
|
||||||
* - ``fw.app``
|
* - ``fw.app``
|
||||||
- running
|
- running
|
||||||
- 1.3.1.0
|
- 1.3.1.0
|
||||||
|
@ -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
|
||||||
|
87
MAINTAINERS
87
MAINTAINERS
@ -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
|
||||||
@ -570,7 +570,7 @@ F: Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml
|
|||||||
F: drivers/input/misc/adxl34x.c
|
F: drivers/input/misc/adxl34x.c
|
||||||
|
|
||||||
ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER
|
ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <michael.hennerich@analog.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml
|
F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml
|
||||||
@ -922,7 +922,7 @@ F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
|
|||||||
F: drivers/net/ethernet/amd/xgbe/
|
F: drivers/net/ethernet/amd/xgbe/
|
||||||
|
|
||||||
ANALOG DEVICES INC AD5686 DRIVER
|
ANALOG DEVICES INC AD5686 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -930,7 +930,7 @@ F: drivers/iio/dac/ad5686*
|
|||||||
F: drivers/iio/dac/ad5696*
|
F: drivers/iio/dac/ad5696*
|
||||||
|
|
||||||
ANALOG DEVICES INC AD5758 DRIVER
|
ANALOG DEVICES INC AD5758 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -946,7 +946,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml
|
|||||||
F: drivers/iio/adc/ad7091r5.c
|
F: drivers/iio/adc/ad7091r5.c
|
||||||
|
|
||||||
ANALOG DEVICES INC AD7124 DRIVER
|
ANALOG DEVICES INC AD7124 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -970,7 +970,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
|
|||||||
F: drivers/iio/adc/ad7292.c
|
F: drivers/iio/adc/ad7292.c
|
||||||
|
|
||||||
ANALOG DEVICES INC AD7606 DRIVER
|
ANALOG DEVICES INC AD7606 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
M: Beniamin Bia <beniamin.bia@analog.com>
|
M: Beniamin Bia <beniamin.bia@analog.com>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -979,7 +979,7 @@ F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
|
|||||||
F: drivers/iio/adc/ad7606.c
|
F: drivers/iio/adc/ad7606.c
|
||||||
|
|
||||||
ANALOG DEVICES INC AD7768-1 DRIVER
|
ANALOG DEVICES INC AD7768-1 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -1040,7 +1040,7 @@ F: Documentation/devicetree/bindings/hwmon/adi,adm1177.yaml
|
|||||||
F: drivers/hwmon/adm1177.c
|
F: drivers/hwmon/adm1177.c
|
||||||
|
|
||||||
ANALOG DEVICES INC ADP5061 DRIVER
|
ANALOG DEVICES INC ADP5061 DRIVER
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -1109,7 +1109,6 @@ F: drivers/iio/amplifiers/hmc425a.c
|
|||||||
ANALOG DEVICES INC IIO DRIVERS
|
ANALOG DEVICES INC IIO DRIVERS
|
||||||
M: Lars-Peter Clausen <lars@metafoo.de>
|
M: Lars-Peter Clausen <lars@metafoo.de>
|
||||||
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||||
M: Stefan Popa <stefan.popa@analog.com>
|
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://wiki.analog.com/
|
W: http://wiki.analog.com/
|
||||||
W: http://ez.analog.com/community/linux-device-drivers
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
@ -2850,14 +2849,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/
|
||||||
|
|
||||||
@ -3020,7 +3019,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
|
||||||
@ -3028,7 +3027,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
|
||||||
@ -3658,7 +3657,7 @@ L: linux-btrfs@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
W: http://btrfs.wiki.kernel.org/
|
W: http://btrfs.wiki.kernel.org/
|
||||||
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git
|
||||||
F: Documentation/filesystems/btrfs.rst
|
F: Documentation/filesystems/btrfs.rst
|
||||||
F: fs/btrfs/
|
F: fs/btrfs/
|
||||||
F: include/linux/btrfs*
|
F: include/linux/btrfs*
|
||||||
@ -3843,7 +3842,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
|
||||||
@ -3937,11 +3936,9 @@ F: arch/powerpc/platforms/cell/
|
|||||||
CEPH COMMON CODE (LIBCEPH)
|
CEPH COMMON CODE (LIBCEPH)
|
||||||
M: Ilya Dryomov <idryomov@gmail.com>
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
M: Jeff Layton <jlayton@kernel.org>
|
M: Jeff Layton <jlayton@kernel.org>
|
||||||
M: Sage Weil <sage@redhat.com>
|
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
F: include/linux/ceph/
|
F: include/linux/ceph/
|
||||||
F: include/linux/crush/
|
F: include/linux/crush/
|
||||||
@ -3949,12 +3946,10 @@ F: net/ceph/
|
|||||||
|
|
||||||
CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
|
CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
|
||||||
M: Jeff Layton <jlayton@kernel.org>
|
M: Jeff Layton <jlayton@kernel.org>
|
||||||
M: Sage Weil <sage@redhat.com>
|
|
||||||
M: Ilya Dryomov <idryomov@gmail.com>
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
F: Documentation/filesystems/ceph.rst
|
F: Documentation/filesystems/ceph.rst
|
||||||
F: fs/ceph/
|
F: fs/ceph/
|
||||||
@ -5176,6 +5171,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
|
||||||
@ -5935,9 +5931,9 @@ F: lib/dynamic_debug.c
|
|||||||
DYNAMIC INTERRUPT MODERATION
|
DYNAMIC INTERRUPT MODERATION
|
||||||
M: Tal Gilboa <talgi@mellanox.com>
|
M: Tal Gilboa <talgi@mellanox.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/networking/net_dim.rst
|
||||||
F: include/linux/dim.h
|
F: include/linux/dim.h
|
||||||
F: lib/dim/
|
F: lib/dim/
|
||||||
F: Documentation/networking/net_dim.rst
|
|
||||||
|
|
||||||
DZ DECSTATION DZ11 SERIAL DRIVER
|
DZ DECSTATION DZ11 SERIAL DRIVER
|
||||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||||
@ -7119,9 +7115,10 @@ F: include/uapi/asm-generic/
|
|||||||
|
|
||||||
GENERIC PHY FRAMEWORK
|
GENERIC PHY FRAMEWORK
|
||||||
M: Kishon Vijay Abraham I <kishon@ti.com>
|
M: Kishon Vijay Abraham I <kishon@ti.com>
|
||||||
|
M: Vinod Koul <vkoul@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git
|
||||||
F: Documentation/devicetree/bindings/phy/
|
F: Documentation/devicetree/bindings/phy/
|
||||||
F: drivers/phy/
|
F: drivers/phy/
|
||||||
F: include/linux/phy/
|
F: include/linux/phy/
|
||||||
@ -7746,11 +7743,6 @@ L: platform-driver-x86@vger.kernel.org
|
|||||||
S: Orphan
|
S: Orphan
|
||||||
F: drivers/platform/x86/tc1100-wmi.c
|
F: drivers/platform/x86/tc1100-wmi.c
|
||||||
|
|
||||||
HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
|
|
||||||
M: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
S: Obsolete
|
|
||||||
F: drivers/staging/hp/hp100.*
|
|
||||||
|
|
||||||
HPET: High Precision Event Timers driver
|
HPET: High Precision Event Timers driver
|
||||||
M: Clemens Ladisch <clemens@ladisch.de>
|
M: Clemens Ladisch <clemens@ladisch.de>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -9417,6 +9409,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>
|
||||||
@ -10068,7 +10067,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
|
||||||
@ -10698,7 +10697,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/
|
||||||
@ -12649,7 +12647,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/
|
||||||
|
|
||||||
@ -12675,7 +12673,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
|
||||||
@ -13043,7 +13041,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/
|
||||||
@ -13596,7 +13594,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
|
||||||
@ -13937,7 +13935,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/
|
||||||
|
|
||||||
@ -13952,7 +13950,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
|
||||||
@ -14049,13 +14047,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
|
||||||
@ -14097,12 +14094,10 @@ F: drivers/media/radio/radio-tea5777.c
|
|||||||
|
|
||||||
RADOS BLOCK DEVICE (RBD)
|
RADOS BLOCK DEVICE (RBD)
|
||||||
M: Ilya Dryomov <idryomov@gmail.com>
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
M: Sage Weil <sage@redhat.com>
|
|
||||||
R: Dongsheng Yang <dongsheng.yang@easystack.cn>
|
R: Dongsheng Yang <dongsheng.yang@easystack.cn>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
F: Documentation/ABI/testing/sysfs-bus-rbd
|
F: Documentation/ABI/testing/sysfs-bus-rbd
|
||||||
F: drivers/block/rbd.c
|
F: drivers/block/rbd.c
|
||||||
@ -14277,7 +14272,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/
|
||||||
|
|
||||||
@ -14412,7 +14407,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
|
||||||
@ -14561,7 +14556,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/
|
||||||
|
|
||||||
@ -14571,7 +14566,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/
|
||||||
|
|
||||||
@ -16926,8 +16921,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
|
||||||
@ -18209,7 +18204,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
|
||||||
|
17
Makefile
17
Makefile
@ -2,7 +2,7 @@
|
|||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 7
|
PATCHLEVEL = 7
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc5
|
||||||
NAME = Kleptomaniac Octopus
|
NAME = Kleptomaniac Octopus
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@ -729,10 +729,6 @@ else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
|||||||
KBUILD_CFLAGS += -Os
|
KBUILD_CFLAGS += -Os
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED
|
|
||||||
KBUILD_CFLAGS += -Wno-maybe-uninitialized
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Tell gcc to never replace conditional load with a non-conditional one
|
# Tell gcc to never replace conditional load with a non-conditional one
|
||||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races)
|
KBUILD_CFLAGS += $(call cc-option,-fno-allow-store-data-races)
|
||||||
@ -881,6 +877,17 @@ KBUILD_CFLAGS += -Wno-pointer-sign
|
|||||||
# disable stringop warnings in gcc 8+
|
# disable stringop warnings in gcc 8+
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
|
KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
|
||||||
|
|
||||||
|
# We'll want to enable this eventually, but it's not going away for 5.7 at least
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, zero-length-bounds)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, stringop-overflow)
|
||||||
|
|
||||||
|
# Another good warning that we'll want to enable eventually
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, restrict)
|
||||||
|
|
||||||
|
# Enabled with W=2, disabled by default as noisy
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized)
|
||||||
|
|
||||||
# disable invalid "can't wrap" optimizations for signed / pointers
|
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
|
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
8
arch/arc/include/asm/vermagic.h
Normal file
8
arch/arc/include/asm/vermagic.h
Normal 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 */
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -372,6 +372,7 @@
|
|||||||
"dsi0_ddr2",
|
"dsi0_ddr2",
|
||||||
"dsi0_ddr";
|
"dsi0_ddr";
|
||||||
|
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
aux: aux@7e215000 {
|
aux: aux@7e215000 {
|
||||||
|
@ -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>;
|
||||||
|
@ -91,9 +91,17 @@ void chacha_crypt_arch(u32 *state, u8 *dst, const u8 *src, unsigned int bytes,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
unsigned int todo = min_t(unsigned int, bytes, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
chacha_doneon(state, dst, src, bytes, nrounds);
|
chacha_doneon(state, dst, src, todo, nrounds);
|
||||||
kernel_neon_end();
|
kernel_neon_end();
|
||||||
|
|
||||||
|
bytes -= todo;
|
||||||
|
src += todo;
|
||||||
|
dst += todo;
|
||||||
|
} while (bytes);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(chacha_crypt_arch);
|
EXPORT_SYMBOL(chacha_crypt_arch);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ static int nhpoly1305_neon_update(struct shash_desc *desc,
|
|||||||
return crypto_nhpoly1305_update(desc, src, srclen);
|
return crypto_nhpoly1305_update(desc, src, srclen);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int n = min_t(unsigned int, srclen, PAGE_SIZE);
|
unsigned int n = min_t(unsigned int, srclen, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
crypto_nhpoly1305_update_helper(desc, src, n, _nh_neon);
|
crypto_nhpoly1305_update_helper(desc, src, n, _nh_neon);
|
||||||
|
@ -160,13 +160,20 @@ void poly1305_update_arch(struct poly1305_desc_ctx *dctx, const u8 *src,
|
|||||||
unsigned int len = round_down(nbytes, POLY1305_BLOCK_SIZE);
|
unsigned int len = round_down(nbytes, POLY1305_BLOCK_SIZE);
|
||||||
|
|
||||||
if (static_branch_likely(&have_neon) && do_neon) {
|
if (static_branch_likely(&have_neon) && do_neon) {
|
||||||
|
do {
|
||||||
|
unsigned int todo = min_t(unsigned int, len, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
poly1305_blocks_neon(&dctx->h, src, len, 1);
|
poly1305_blocks_neon(&dctx->h, src, todo, 1);
|
||||||
kernel_neon_end();
|
kernel_neon_end();
|
||||||
|
|
||||||
|
len -= todo;
|
||||||
|
src += todo;
|
||||||
|
} while (len);
|
||||||
} else {
|
} else {
|
||||||
poly1305_blocks_arm(&dctx->h, src, len, 1);
|
poly1305_blocks_arm(&dctx->h, src, len, 1);
|
||||||
}
|
|
||||||
src += len;
|
src += len;
|
||||||
|
}
|
||||||
nbytes %= POLY1305_BLOCK_SIZE;
|
nbytes %= POLY1305_BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,7 +165,12 @@ arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
|
|||||||
preempt_enable();
|
preempt_enable();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!ret)
|
/*
|
||||||
|
* Store unconditionally. If ret != 0 the extra store is the least
|
||||||
|
* of the worries but GCC cannot figure out that __futex_atomic_op()
|
||||||
|
* is either setting ret to -EFAULT or storing the old value in
|
||||||
|
* oldval which results in a uninitialized warning at the call site.
|
||||||
|
*/
|
||||||
*oval = oldval;
|
*oval = oldval;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -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)
|
||||||
|
31
arch/arm/include/asm/vermagic.h
Normal file
31
arch/arm/include/asm/vermagic.h
Normal 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 */
|
@ -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
|
||||||
|
@ -87,9 +87,17 @@ void chacha_crypt_arch(u32 *state, u8 *dst, const u8 *src, unsigned int bytes,
|
|||||||
!crypto_simd_usable())
|
!crypto_simd_usable())
|
||||||
return chacha_crypt_generic(state, dst, src, bytes, nrounds);
|
return chacha_crypt_generic(state, dst, src, bytes, nrounds);
|
||||||
|
|
||||||
|
do {
|
||||||
|
unsigned int todo = min_t(unsigned int, bytes, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
chacha_doneon(state, dst, src, bytes, nrounds);
|
chacha_doneon(state, dst, src, todo, nrounds);
|
||||||
kernel_neon_end();
|
kernel_neon_end();
|
||||||
|
|
||||||
|
bytes -= todo;
|
||||||
|
src += todo;
|
||||||
|
dst += todo;
|
||||||
|
} while (bytes);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(chacha_crypt_arch);
|
EXPORT_SYMBOL(chacha_crypt_arch);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ static int nhpoly1305_neon_update(struct shash_desc *desc,
|
|||||||
return crypto_nhpoly1305_update(desc, src, srclen);
|
return crypto_nhpoly1305_update(desc, src, srclen);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int n = min_t(unsigned int, srclen, PAGE_SIZE);
|
unsigned int n = min_t(unsigned int, srclen, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
crypto_nhpoly1305_update_helper(desc, src, n, _nh_neon);
|
crypto_nhpoly1305_update_helper(desc, src, n, _nh_neon);
|
||||||
|
@ -143,13 +143,20 @@ void poly1305_update_arch(struct poly1305_desc_ctx *dctx, const u8 *src,
|
|||||||
unsigned int len = round_down(nbytes, POLY1305_BLOCK_SIZE);
|
unsigned int len = round_down(nbytes, POLY1305_BLOCK_SIZE);
|
||||||
|
|
||||||
if (static_branch_likely(&have_neon) && crypto_simd_usable()) {
|
if (static_branch_likely(&have_neon) && crypto_simd_usable()) {
|
||||||
|
do {
|
||||||
|
unsigned int todo = min_t(unsigned int, len, SZ_4K);
|
||||||
|
|
||||||
kernel_neon_begin();
|
kernel_neon_begin();
|
||||||
poly1305_blocks_neon(&dctx->h, src, len, 1);
|
poly1305_blocks_neon(&dctx->h, src, todo, 1);
|
||||||
kernel_neon_end();
|
kernel_neon_end();
|
||||||
|
|
||||||
|
len -= todo;
|
||||||
|
src += todo;
|
||||||
|
} while (len);
|
||||||
} else {
|
} else {
|
||||||
poly1305_blocks(&dctx->h, src, len, 1);
|
poly1305_blocks(&dctx->h, src, len, 1);
|
||||||
}
|
|
||||||
src += len;
|
src += len;
|
||||||
|
}
|
||||||
nbytes %= POLY1305_BLOCK_SIZE;
|
nbytes %= POLY1305_BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
10
arch/arm64/include/asm/vermagic.h
Normal file
10
arch/arm64/include/asm/vermagic.h
Normal 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 */
|
@ -32,7 +32,7 @@ UBSAN_SANITIZE := n
|
|||||||
OBJECT_FILES_NON_STANDARD := y
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
KCOV_INSTRUMENT := n
|
KCOV_INSTRUMENT := n
|
||||||
|
|
||||||
CFLAGS_vgettimeofday.o = -O2 -mcmodel=tiny
|
CFLAGS_vgettimeofday.o = -O2 -mcmodel=tiny -fasynchronous-unwind-tables
|
||||||
|
|
||||||
ifneq ($(c-gettimeofday-y),)
|
ifneq ($(c-gettimeofday-y),)
|
||||||
CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y)
|
CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y)
|
||||||
|
@ -230,6 +230,8 @@ pte_t *huge_pte_alloc(struct mm_struct *mm,
|
|||||||
ptep = (pte_t *)pudp;
|
ptep = (pte_t *)pudp;
|
||||||
} else if (sz == (CONT_PTE_SIZE)) {
|
} else if (sz == (CONT_PTE_SIZE)) {
|
||||||
pmdp = pmd_alloc(mm, pudp, addr);
|
pmdp = pmd_alloc(mm, pudp, addr);
|
||||||
|
if (!pmdp)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
WARN_ON(addr & (sz - 1));
|
WARN_ON(addr & (sz - 1));
|
||||||
/*
|
/*
|
||||||
|
2
arch/h8300/kernel/.gitignore
vendored
Normal file
2
arch/h8300/kernel/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
vmlinux.lds
|
@ -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 */
|
@ -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 */
|
||||||
|
15
arch/ia64/include/asm/vermagic.h
Normal file
15
arch/ia64/include/asm/vermagic.h
Normal 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 */
|
@ -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 */
|
||||||
|
66
arch/mips/include/asm/vermagic.h
Normal file
66
arch/mips/include/asm/vermagic.h
Normal 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 */
|
@ -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 */
|
@ -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.
|
||||||
|
20
arch/powerpc/include/asm/vermagic.h
Normal file
20
arch/powerpc/include/asm/vermagic.h
Normal 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 */
|
@ -732,7 +732,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_SPE)
|
|||||||
stw r10,_CCR(r1)
|
stw r10,_CCR(r1)
|
||||||
stw r1,KSP(r3) /* Set old stack pointer */
|
stw r1,KSP(r3) /* Set old stack pointer */
|
||||||
|
|
||||||
kuap_check r2, r4
|
kuap_check r2, r0
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
/* We need a sync somewhere here to make sure that if the
|
/* We need a sync somewhere here to make sure that if the
|
||||||
* previous task gets rescheduled on another CPU, it sees all
|
* previous task gets rescheduled on another CPU, it sees all
|
||||||
|
@ -534,6 +534,8 @@ static bool __init parse_cache_info(struct device_node *np,
|
|||||||
lsizep = of_get_property(np, propnames[3], NULL);
|
lsizep = of_get_property(np, propnames[3], NULL);
|
||||||
if (bsizep == NULL)
|
if (bsizep == NULL)
|
||||||
bsizep = lsizep;
|
bsizep = lsizep;
|
||||||
|
if (lsizep == NULL)
|
||||||
|
lsizep = bsizep;
|
||||||
if (lsizep != NULL)
|
if (lsizep != NULL)
|
||||||
lsize = be32_to_cpu(*lsizep);
|
lsize = be32_to_cpu(*lsizep);
|
||||||
if (bsizep != NULL)
|
if (bsizep != NULL)
|
||||||
|
@ -90,6 +90,7 @@ SECTIONS
|
|||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
*(.tramp.ftrace.text);
|
*(.tramp.ftrace.text);
|
||||||
#endif
|
#endif
|
||||||
|
NOINSTR_TEXT
|
||||||
SCHED_TEXT
|
SCHED_TEXT
|
||||||
CPUIDLE_TEXT
|
CPUIDLE_TEXT
|
||||||
LOCK_TEXT
|
LOCK_TEXT
|
||||||
|
@ -185,6 +185,7 @@ void mmu_mark_initmem_nx(void)
|
|||||||
mmu_mapin_ram_chunk(etext8, einittext8, PAGE_KERNEL);
|
mmu_mapin_ram_chunk(etext8, einittext8, PAGE_KERNEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_tlbil_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_STRICT_KERNEL_RWX
|
#ifdef CONFIG_STRICT_KERNEL_RWX
|
||||||
@ -199,6 +200,8 @@ void mmu_mark_rodata_ro(void)
|
|||||||
~(LARGE_PAGE_SIZE_8M - 1)));
|
~(LARGE_PAGE_SIZE_8M - 1)));
|
||||||
mmu_patch_addis(&patch__dtlbmiss_romem_top, -__pa(_sinittext));
|
mmu_patch_addis(&patch__dtlbmiss_romem_top, -__pa(_sinittext));
|
||||||
|
|
||||||
|
_tlbil_all();
|
||||||
|
|
||||||
/* Update page tables for PTDUMP and BDI */
|
/* Update page tables for PTDUMP and BDI */
|
||||||
mmu_mapin_ram_chunk(0, sinittext, __pgprot(0));
|
mmu_mapin_ram_chunk(0, sinittext, __pgprot(0));
|
||||||
mmu_mapin_ram_chunk(0, etext, PAGE_KERNEL_ROX);
|
mmu_mapin_ram_chunk(0, etext, PAGE_KERNEL_ROX);
|
||||||
|
@ -397,7 +397,7 @@ config PPC_KUAP
|
|||||||
|
|
||||||
config PPC_KUAP_DEBUG
|
config PPC_KUAP_DEBUG
|
||||||
bool "Extra debugging for Kernel Userspace Access Protection"
|
bool "Extra debugging for Kernel Userspace Access Protection"
|
||||||
depends on PPC_KUAP && (PPC_RADIX_MMU || PPC_32)
|
depends on PPC_KUAP && (PPC_RADIX_MMU || PPC32)
|
||||||
help
|
help
|
||||||
Add extra debugging for Kernel Userspace Access Protection (KUAP)
|
Add extra debugging for Kernel Userspace Access Protection (KUAP)
|
||||||
If you're unsure, say N.
|
If you're unsure, say N.
|
||||||
|
@ -60,7 +60,7 @@ config RISCV
|
|||||||
select ARCH_HAS_GIGANTIC_PAGE
|
select ARCH_HAS_GIGANTIC_PAGE
|
||||||
select ARCH_HAS_SET_DIRECT_MAP
|
select ARCH_HAS_SET_DIRECT_MAP
|
||||||
select ARCH_HAS_SET_MEMORY
|
select ARCH_HAS_SET_MEMORY
|
||||||
select ARCH_HAS_STRICT_KERNEL_RWX
|
select ARCH_HAS_STRICT_KERNEL_RWX if MMU
|
||||||
select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
|
select ARCH_WANT_HUGE_PMD_SHARE if 64BIT
|
||||||
select SPARSEMEM_STATIC if 32BIT
|
select SPARSEMEM_STATIC if 32BIT
|
||||||
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
|
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
|
||||||
|
@ -51,13 +51,10 @@
|
|||||||
#define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1))
|
#define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1))
|
||||||
|
|
||||||
/* Interrupt causes (minus the high bit) */
|
/* Interrupt causes (minus the high bit) */
|
||||||
#define IRQ_U_SOFT 0
|
|
||||||
#define IRQ_S_SOFT 1
|
#define IRQ_S_SOFT 1
|
||||||
#define IRQ_M_SOFT 3
|
#define IRQ_M_SOFT 3
|
||||||
#define IRQ_U_TIMER 4
|
|
||||||
#define IRQ_S_TIMER 5
|
#define IRQ_S_TIMER 5
|
||||||
#define IRQ_M_TIMER 7
|
#define IRQ_M_TIMER 7
|
||||||
#define IRQ_U_EXT 8
|
|
||||||
#define IRQ_S_EXT 9
|
#define IRQ_S_EXT 9
|
||||||
#define IRQ_M_EXT 11
|
#define IRQ_M_EXT 11
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#ifndef _ASM_RISCV_HWCAP_H
|
#ifndef _ASM_RISCV_HWCAP_H
|
||||||
#define _ASM_RISCV_HWCAP_H
|
#define _ASM_RISCV_HWCAP_H
|
||||||
|
|
||||||
|
#include <linux/bits.h>
|
||||||
#include <uapi/asm/hwcap.h>
|
#include <uapi/asm/hwcap.h>
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
@ -22,6 +23,27 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern unsigned long elf_hwcap;
|
extern unsigned long elf_hwcap;
|
||||||
|
|
||||||
|
#define RISCV_ISA_EXT_a ('a' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_c ('c' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_d ('d' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_f ('f' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_h ('h' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_i ('i' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_m ('m' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_s ('s' - 'a')
|
||||||
|
#define RISCV_ISA_EXT_u ('u' - 'a')
|
||||||
|
|
||||||
|
#define RISCV_ISA_EXT_MAX 64
|
||||||
|
|
||||||
|
unsigned long riscv_isa_extension_base(const unsigned long *isa_bitmap);
|
||||||
|
|
||||||
|
#define riscv_isa_extension_mask(ext) BIT_MASK(RISCV_ISA_EXT_##ext)
|
||||||
|
|
||||||
|
bool __riscv_isa_extension_available(const unsigned long *isa_bitmap, int bit);
|
||||||
|
#define riscv_isa_extension_available(isa_bitmap, ext) \
|
||||||
|
__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_##ext)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _ASM_RISCV_HWCAP_H */
|
#endif /* _ASM_RISCV_HWCAP_H */
|
||||||
|
@ -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);
|
||||||
|
@ -22,14 +22,6 @@ static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
|
|||||||
static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
|
static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_STRICT_KERNEL_RWX
|
|
||||||
void set_kernel_text_ro(void);
|
|
||||||
void set_kernel_text_rw(void);
|
|
||||||
#else
|
|
||||||
static inline void set_kernel_text_ro(void) { }
|
|
||||||
static inline void set_kernel_text_rw(void) { }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int set_direct_map_invalid_noflush(struct page *page);
|
int set_direct_map_invalid_noflush(struct page *page);
|
||||||
int set_direct_map_default_noflush(struct page *page);
|
int set_direct_map_default_noflush(struct page *page);
|
||||||
|
|
||||||
|
9
arch/riscv/include/asm/vermagic.h
Normal file
9
arch/riscv/include/asm/vermagic.h
Normal 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 */
|
@ -15,8 +15,8 @@
|
|||||||
|
|
||||||
const struct cpu_operations *cpu_ops[NR_CPUS] __ro_after_init;
|
const struct cpu_operations *cpu_ops[NR_CPUS] __ro_after_init;
|
||||||
|
|
||||||
void *__cpu_up_stack_pointer[NR_CPUS];
|
void *__cpu_up_stack_pointer[NR_CPUS] __section(.data);
|
||||||
void *__cpu_up_task_pointer[NR_CPUS];
|
void *__cpu_up_task_pointer[NR_CPUS] __section(.data);
|
||||||
|
|
||||||
extern const struct cpu_operations cpu_ops_sbi;
|
extern const struct cpu_operations cpu_ops_sbi;
|
||||||
extern const struct cpu_operations cpu_ops_spinwait;
|
extern const struct cpu_operations cpu_ops_spinwait;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* Copyright (C) 2017 SiFive
|
* Copyright (C) 2017 SiFive
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/bitmap.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/hwcap.h>
|
#include <asm/hwcap.h>
|
||||||
@ -13,15 +14,57 @@
|
|||||||
#include <asm/switch_to.h>
|
#include <asm/switch_to.h>
|
||||||
|
|
||||||
unsigned long elf_hwcap __read_mostly;
|
unsigned long elf_hwcap __read_mostly;
|
||||||
|
|
||||||
|
/* Host ISA bitmap */
|
||||||
|
static DECLARE_BITMAP(riscv_isa, RISCV_ISA_EXT_MAX) __read_mostly;
|
||||||
|
|
||||||
#ifdef CONFIG_FPU
|
#ifdef CONFIG_FPU
|
||||||
bool has_fpu __read_mostly;
|
bool has_fpu __read_mostly;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* riscv_isa_extension_base() - Get base extension word
|
||||||
|
*
|
||||||
|
* @isa_bitmap: ISA bitmap to use
|
||||||
|
* Return: base extension word as unsigned long value
|
||||||
|
*
|
||||||
|
* NOTE: If isa_bitmap is NULL then Host ISA bitmap will be used.
|
||||||
|
*/
|
||||||
|
unsigned long riscv_isa_extension_base(const unsigned long *isa_bitmap)
|
||||||
|
{
|
||||||
|
if (!isa_bitmap)
|
||||||
|
return riscv_isa[0];
|
||||||
|
return isa_bitmap[0];
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(riscv_isa_extension_base);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __riscv_isa_extension_available() - Check whether given extension
|
||||||
|
* is available or not
|
||||||
|
*
|
||||||
|
* @isa_bitmap: ISA bitmap to use
|
||||||
|
* @bit: bit position of the desired extension
|
||||||
|
* Return: true or false
|
||||||
|
*
|
||||||
|
* NOTE: If isa_bitmap is NULL then Host ISA bitmap will be used.
|
||||||
|
*/
|
||||||
|
bool __riscv_isa_extension_available(const unsigned long *isa_bitmap, int bit)
|
||||||
|
{
|
||||||
|
const unsigned long *bmap = (isa_bitmap) ? isa_bitmap : riscv_isa;
|
||||||
|
|
||||||
|
if (bit >= RISCV_ISA_EXT_MAX)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return test_bit(bit, bmap) ? true : false;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(__riscv_isa_extension_available);
|
||||||
|
|
||||||
void riscv_fill_hwcap(void)
|
void riscv_fill_hwcap(void)
|
||||||
{
|
{
|
||||||
struct device_node *node;
|
struct device_node *node;
|
||||||
const char *isa;
|
const char *isa;
|
||||||
size_t i;
|
char print_str[BITS_PER_LONG + 1];
|
||||||
|
size_t i, j, isa_len;
|
||||||
static unsigned long isa2hwcap[256] = {0};
|
static unsigned long isa2hwcap[256] = {0};
|
||||||
|
|
||||||
isa2hwcap['i'] = isa2hwcap['I'] = COMPAT_HWCAP_ISA_I;
|
isa2hwcap['i'] = isa2hwcap['I'] = COMPAT_HWCAP_ISA_I;
|
||||||
@ -33,8 +76,11 @@ void riscv_fill_hwcap(void)
|
|||||||
|
|
||||||
elf_hwcap = 0;
|
elf_hwcap = 0;
|
||||||
|
|
||||||
|
bitmap_zero(riscv_isa, RISCV_ISA_EXT_MAX);
|
||||||
|
|
||||||
for_each_of_cpu_node(node) {
|
for_each_of_cpu_node(node) {
|
||||||
unsigned long this_hwcap = 0;
|
unsigned long this_hwcap = 0;
|
||||||
|
unsigned long this_isa = 0;
|
||||||
|
|
||||||
if (riscv_of_processor_hartid(node) < 0)
|
if (riscv_of_processor_hartid(node) < 0)
|
||||||
continue;
|
continue;
|
||||||
@ -44,8 +90,24 @@ void riscv_fill_hwcap(void)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < strlen(isa); ++i)
|
i = 0;
|
||||||
|
isa_len = strlen(isa);
|
||||||
|
#if IS_ENABLED(CONFIG_32BIT)
|
||||||
|
if (!strncmp(isa, "rv32", 4))
|
||||||
|
i += 4;
|
||||||
|
#elif IS_ENABLED(CONFIG_64BIT)
|
||||||
|
if (!strncmp(isa, "rv64", 4))
|
||||||
|
i += 4;
|
||||||
|
#endif
|
||||||
|
for (; i < isa_len; ++i) {
|
||||||
this_hwcap |= isa2hwcap[(unsigned char)(isa[i])];
|
this_hwcap |= isa2hwcap[(unsigned char)(isa[i])];
|
||||||
|
/*
|
||||||
|
* TODO: X, Y and Z extension parsing for Host ISA
|
||||||
|
* bitmap will be added in-future.
|
||||||
|
*/
|
||||||
|
if ('a' <= isa[i] && isa[i] < 'x')
|
||||||
|
this_isa |= (1UL << (isa[i] - 'a'));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All "okay" hart should have same isa. Set HWCAP based on
|
* All "okay" hart should have same isa. Set HWCAP based on
|
||||||
@ -56,6 +118,11 @@ void riscv_fill_hwcap(void)
|
|||||||
elf_hwcap &= this_hwcap;
|
elf_hwcap &= this_hwcap;
|
||||||
else
|
else
|
||||||
elf_hwcap = this_hwcap;
|
elf_hwcap = this_hwcap;
|
||||||
|
|
||||||
|
if (riscv_isa[0])
|
||||||
|
riscv_isa[0] &= this_isa;
|
||||||
|
else
|
||||||
|
riscv_isa[0] = this_isa;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't support systems with F but without D, so mask those out
|
/* We don't support systems with F but without D, so mask those out
|
||||||
@ -65,7 +132,17 @@ void riscv_fill_hwcap(void)
|
|||||||
elf_hwcap &= ~COMPAT_HWCAP_ISA_F;
|
elf_hwcap &= ~COMPAT_HWCAP_ISA_F;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_info("elf_hwcap is 0x%lx\n", elf_hwcap);
|
memset(print_str, 0, sizeof(print_str));
|
||||||
|
for (i = 0, j = 0; i < BITS_PER_LONG; i++)
|
||||||
|
if (riscv_isa[0] & BIT_MASK(i))
|
||||||
|
print_str[j++] = (char)('a' + i);
|
||||||
|
pr_info("riscv: ISA extensions %s\n", print_str);
|
||||||
|
|
||||||
|
memset(print_str, 0, sizeof(print_str));
|
||||||
|
for (i = 0, j = 0; i < BITS_PER_LONG; i++)
|
||||||
|
if (elf_hwcap & BIT_MASK(i))
|
||||||
|
print_str[j++] = (char)('a' + i);
|
||||||
|
pr_info("riscv: ELF capabilities %s\n", print_str);
|
||||||
|
|
||||||
#ifdef CONFIG_FPU
|
#ifdef CONFIG_FPU
|
||||||
if (elf_hwcap & (COMPAT_HWCAP_ISA_F | COMPAT_HWCAP_ISA_D))
|
if (elf_hwcap & (COMPAT_HWCAP_ISA_F | COMPAT_HWCAP_ISA_D))
|
||||||
|
@ -102,7 +102,7 @@ void sbi_shutdown(void)
|
|||||||
{
|
{
|
||||||
sbi_ecall(SBI_EXT_0_1_SHUTDOWN, 0, 0, 0, 0, 0, 0, 0);
|
sbi_ecall(SBI_EXT_0_1_SHUTDOWN, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(sbi_set_timer);
|
EXPORT_SYMBOL(sbi_shutdown);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sbi_clear_ipi() - Clear any pending IPIs for the calling hart.
|
* sbi_clear_ipi() - Clear any pending IPIs for the calling hart.
|
||||||
@ -113,7 +113,7 @@ void sbi_clear_ipi(void)
|
|||||||
{
|
{
|
||||||
sbi_ecall(SBI_EXT_0_1_CLEAR_IPI, 0, 0, 0, 0, 0, 0, 0);
|
sbi_ecall(SBI_EXT_0_1_CLEAR_IPI, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(sbi_shutdown);
|
EXPORT_SYMBOL(sbi_clear_ipi);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sbi_set_timer_v01() - Program the timer for next timer event.
|
* sbi_set_timer_v01() - Program the timer for next timer event.
|
||||||
@ -167,6 +167,11 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sbi_set_power_off(void)
|
||||||
|
{
|
||||||
|
pm_power_off = sbi_shutdown;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static void __sbi_set_timer_v01(uint64_t stime_value)
|
static void __sbi_set_timer_v01(uint64_t stime_value)
|
||||||
{
|
{
|
||||||
@ -191,6 +196,8 @@ static int __sbi_rfence_v01(int fid, const unsigned long *hart_mask,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sbi_set_power_off(void) {}
|
||||||
#endif /* CONFIG_RISCV_SBI_V01 */
|
#endif /* CONFIG_RISCV_SBI_V01 */
|
||||||
|
|
||||||
static void __sbi_set_timer_v02(uint64_t stime_value)
|
static void __sbi_set_timer_v02(uint64_t stime_value)
|
||||||
@ -540,16 +547,12 @@ static inline long sbi_get_firmware_version(void)
|
|||||||
return __sbi_base_ecall(SBI_EXT_BASE_GET_IMP_VERSION);
|
return __sbi_base_ecall(SBI_EXT_BASE_GET_IMP_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sbi_power_off(void)
|
|
||||||
{
|
|
||||||
sbi_shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init sbi_init(void)
|
int __init sbi_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
pm_power_off = sbi_power_off;
|
sbi_set_power_off();
|
||||||
ret = sbi_get_spec_version();
|
ret = sbi_get_spec_version();
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
sbi_spec_version = ret;
|
sbi_spec_version = ret;
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/profile.h>
|
#include <linux/profile.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
@ -63,6 +64,7 @@ void riscv_cpuid_to_hartid_mask(const struct cpumask *in, struct cpumask *out)
|
|||||||
for_each_cpu(cpu, in)
|
for_each_cpu(cpu, in)
|
||||||
cpumask_set_cpu(cpuid_to_hartid_map(cpu), out);
|
cpumask_set_cpu(cpuid_to_hartid_map(cpu), out);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(riscv_cpuid_to_hartid_mask);
|
||||||
|
|
||||||
bool arch_match_cpu_phys_id(int cpu, u64 phys_id)
|
bool arch_match_cpu_phys_id(int cpu, u64 phys_id)
|
||||||
{
|
{
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <linux/stacktrace.h>
|
#include <linux/stacktrace.h>
|
||||||
#include <linux/ftrace.h>
|
#include <linux/ftrace.h>
|
||||||
|
|
||||||
|
register unsigned long sp_in_global __asm__("sp");
|
||||||
|
|
||||||
#ifdef CONFIG_FRAME_POINTER
|
#ifdef CONFIG_FRAME_POINTER
|
||||||
|
|
||||||
struct stackframe {
|
struct stackframe {
|
||||||
@ -19,8 +21,6 @@ struct stackframe {
|
|||||||
unsigned long ra;
|
unsigned long ra;
|
||||||
};
|
};
|
||||||
|
|
||||||
register unsigned long sp_in_global __asm__("sp");
|
|
||||||
|
|
||||||
void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
|
void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
|
||||||
bool (*fn)(unsigned long, void *), void *arg)
|
bool (*fn)(unsigned long, void *), void *arg)
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ vdso-syms += getcpu
|
|||||||
vdso-syms += flush_icache
|
vdso-syms += flush_icache
|
||||||
|
|
||||||
# Files to link into the vdso
|
# Files to link into the vdso
|
||||||
obj-vdso = $(patsubst %, %.o, $(vdso-syms))
|
obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o
|
||||||
|
|
||||||
# Build rules
|
# Build rules
|
||||||
targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-dummy.o
|
targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-dummy.o
|
||||||
@ -33,15 +33,15 @@ $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE
|
|||||||
$(call if_changed,vdsold)
|
$(call if_changed,vdsold)
|
||||||
|
|
||||||
# We also create a special relocatable object that should mirror the symbol
|
# We also create a special relocatable object that should mirror the symbol
|
||||||
# table and layout of the linked DSO. With ld -R we can then refer to
|
# table and layout of the linked DSO. With ld --just-symbols we can then
|
||||||
# these symbols in the kernel code rather than hand-coded addresses.
|
# refer to these symbols in the kernel code rather than hand-coded addresses.
|
||||||
|
|
||||||
SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
|
SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
|
||||||
-Wl,--build-id -Wl,--hash-style=both
|
-Wl,--build-id -Wl,--hash-style=both
|
||||||
$(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE
|
$(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE
|
||||||
$(call if_changed,vdsold)
|
$(call if_changed,vdsold)
|
||||||
|
|
||||||
LDFLAGS_vdso-syms.o := -r -R
|
LDFLAGS_vdso-syms.o := -r --just-symbols
|
||||||
$(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE
|
$(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE
|
||||||
$(call if_changed,ld)
|
$(call if_changed,ld)
|
||||||
|
|
||||||
|
12
arch/riscv/kernel/vdso/note.S
Normal file
12
arch/riscv/kernel/vdso/note.S
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* This supplies .note.* sections to go into the PT_NOTE inside the vDSO text.
|
||||||
|
* Here we can supply some information useful to userland.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/elfnote.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
|
||||||
|
ELFNOTE_START(Linux, 0, "a")
|
||||||
|
.long LINUX_VERSION_CODE
|
||||||
|
ELFNOTE_END
|
@ -150,7 +150,8 @@ void __init setup_bootmem(void)
|
|||||||
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
||||||
|
|
||||||
set_max_mapnr(PFN_DOWN(mem_size));
|
set_max_mapnr(PFN_DOWN(mem_size));
|
||||||
max_low_pfn = PFN_DOWN(memblock_end_of_DRAM());
|
max_pfn = PFN_DOWN(memblock_end_of_DRAM());
|
||||||
|
max_low_pfn = max_pfn;
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_DEV_INITRD
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
setup_initrd();
|
setup_initrd();
|
||||||
@ -501,22 +502,6 @@ static inline void setup_vm_final(void)
|
|||||||
#endif /* CONFIG_MMU */
|
#endif /* CONFIG_MMU */
|
||||||
|
|
||||||
#ifdef CONFIG_STRICT_KERNEL_RWX
|
#ifdef CONFIG_STRICT_KERNEL_RWX
|
||||||
void set_kernel_text_rw(void)
|
|
||||||
{
|
|
||||||
unsigned long text_start = (unsigned long)_text;
|
|
||||||
unsigned long text_end = (unsigned long)_etext;
|
|
||||||
|
|
||||||
set_memory_rw(text_start, (text_end - text_start) >> PAGE_SHIFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_kernel_text_ro(void)
|
|
||||||
{
|
|
||||||
unsigned long text_start = (unsigned long)_text;
|
|
||||||
unsigned long text_end = (unsigned long)_etext;
|
|
||||||
|
|
||||||
set_memory_ro(text_start, (text_end - text_start) >> PAGE_SHIFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mark_rodata_ro(void)
|
void mark_rodata_ro(void)
|
||||||
{
|
{
|
||||||
unsigned long text_start = (unsigned long)_text;
|
unsigned long text_start = (unsigned long)_text;
|
||||||
|
@ -7,9 +7,7 @@
|
|||||||
#ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST
|
#ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST
|
||||||
int __bootdata_preserved(prot_virt_guest);
|
int __bootdata_preserved(prot_virt_guest);
|
||||||
#endif
|
#endif
|
||||||
#if IS_ENABLED(CONFIG_KVM)
|
|
||||||
struct uv_info __bootdata_preserved(uv_info);
|
struct uv_info __bootdata_preserved(uv_info);
|
||||||
#endif
|
|
||||||
|
|
||||||
void uv_query_info(void)
|
void uv_query_info(void)
|
||||||
{
|
{
|
||||||
|
@ -133,7 +133,7 @@ void diag_stat_inc(enum diag_stat_enum nr)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(diag_stat_inc);
|
EXPORT_SYMBOL(diag_stat_inc);
|
||||||
|
|
||||||
void diag_stat_inc_norecursion(enum diag_stat_enum nr)
|
void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr)
|
||||||
{
|
{
|
||||||
this_cpu_inc(diag_stat.counter[nr]);
|
this_cpu_inc(diag_stat.counter[nr]);
|
||||||
trace_s390_diagnose_norecursion(diag_map[nr].code);
|
trace_s390_diagnose_norecursion(diag_map[nr].code);
|
||||||
|
@ -403,7 +403,7 @@ int smp_find_processor_id(u16 address)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool arch_vcpu_is_preempted(int cpu)
|
bool notrace arch_vcpu_is_preempted(int cpu)
|
||||||
{
|
{
|
||||||
if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu))
|
if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu))
|
||||||
return false;
|
return false;
|
||||||
@ -413,7 +413,7 @@ bool arch_vcpu_is_preempted(int cpu)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(arch_vcpu_is_preempted);
|
EXPORT_SYMBOL(arch_vcpu_is_preempted);
|
||||||
|
|
||||||
void smp_yield_cpu(int cpu)
|
void notrace smp_yield_cpu(int cpu)
|
||||||
{
|
{
|
||||||
if (!MACHINE_HAS_DIAG9C)
|
if (!MACHINE_HAS_DIAG9C)
|
||||||
return;
|
return;
|
||||||
|
@ -14,7 +14,7 @@ EXPORT_TRACEPOINT_SYMBOL(s390_diagnose);
|
|||||||
|
|
||||||
static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth);
|
static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth);
|
||||||
|
|
||||||
void trace_s390_diagnose_norecursion(int diag_nr)
|
void notrace trace_s390_diagnose_norecursion(int diag_nr)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int *depth;
|
unsigned int *depth;
|
||||||
|
@ -23,10 +23,11 @@
|
|||||||
int __bootdata_preserved(prot_virt_guest);
|
int __bootdata_preserved(prot_virt_guest);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct uv_info __bootdata_preserved(uv_info);
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_KVM)
|
#if IS_ENABLED(CONFIG_KVM)
|
||||||
int prot_virt_host;
|
int prot_virt_host;
|
||||||
EXPORT_SYMBOL(prot_virt_host);
|
EXPORT_SYMBOL(prot_virt_host);
|
||||||
struct uv_info __bootdata_preserved(uv_info);
|
|
||||||
EXPORT_SYMBOL(uv_info);
|
EXPORT_SYMBOL(uv_info);
|
||||||
|
|
||||||
static int __init prot_virt_setup(char *val)
|
static int __init prot_virt_setup(char *val)
|
||||||
|
@ -626,10 +626,12 @@ static int handle_pqap(struct kvm_vcpu *vcpu)
|
|||||||
* available for the guest are AQIC and TAPQ with the t bit set
|
* available for the guest are AQIC and TAPQ with the t bit set
|
||||||
* since we do not set IC.3 (FIII) we currently will only intercept
|
* since we do not set IC.3 (FIII) we currently will only intercept
|
||||||
* the AQIC function code.
|
* the AQIC function code.
|
||||||
|
* Note: running nested under z/VM can result in intercepts for other
|
||||||
|
* function codes, e.g. PQAP(QCI). We do not support this and bail out.
|
||||||
*/
|
*/
|
||||||
reg0 = vcpu->run->s.regs.gprs[0];
|
reg0 = vcpu->run->s.regs.gprs[0];
|
||||||
fc = (reg0 >> 24) & 0xff;
|
fc = (reg0 >> 24) & 0xff;
|
||||||
if (WARN_ON_ONCE(fc != 0x03))
|
if (fc != 0x03)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
/* PQAP instruction is allowed for guest kernel only */
|
/* PQAP instruction is allowed for guest kernel only */
|
||||||
|
@ -64,10 +64,13 @@ mm_segment_t enable_sacf_uaccess(void)
|
|||||||
{
|
{
|
||||||
mm_segment_t old_fs;
|
mm_segment_t old_fs;
|
||||||
unsigned long asce, cr;
|
unsigned long asce, cr;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
old_fs = current->thread.mm_segment;
|
old_fs = current->thread.mm_segment;
|
||||||
if (old_fs & 1)
|
if (old_fs & 1)
|
||||||
return old_fs;
|
return old_fs;
|
||||||
|
/* protect against a concurrent page table upgrade */
|
||||||
|
local_irq_save(flags);
|
||||||
current->thread.mm_segment |= 1;
|
current->thread.mm_segment |= 1;
|
||||||
asce = S390_lowcore.kernel_asce;
|
asce = S390_lowcore.kernel_asce;
|
||||||
if (likely(old_fs == USER_DS)) {
|
if (likely(old_fs == USER_DS)) {
|
||||||
@ -83,6 +86,7 @@ mm_segment_t enable_sacf_uaccess(void)
|
|||||||
__ctl_load(asce, 7, 7);
|
__ctl_load(asce, 7, 7);
|
||||||
set_cpu_flag(CIF_ASCE_SECONDARY);
|
set_cpu_flag(CIF_ASCE_SECONDARY);
|
||||||
}
|
}
|
||||||
|
local_irq_restore(flags);
|
||||||
return old_fs;
|
return old_fs;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(enable_sacf_uaccess);
|
EXPORT_SYMBOL(enable_sacf_uaccess);
|
||||||
|
@ -70,8 +70,20 @@ static void __crst_table_upgrade(void *arg)
|
|||||||
{
|
{
|
||||||
struct mm_struct *mm = arg;
|
struct mm_struct *mm = arg;
|
||||||
|
|
||||||
if (current->active_mm == mm)
|
/* we must change all active ASCEs to avoid the creation of new TLBs */
|
||||||
set_user_asce(mm);
|
if (current->active_mm == mm) {
|
||||||
|
S390_lowcore.user_asce = mm->context.asce;
|
||||||
|
if (current->thread.mm_segment == USER_DS) {
|
||||||
|
__ctl_load(S390_lowcore.user_asce, 1, 1);
|
||||||
|
/* Mark user-ASCE present in CR1 */
|
||||||
|
clear_cpu_flag(CIF_ASCE_PRIMARY);
|
||||||
|
}
|
||||||
|
if (current->thread.mm_segment == USER_DS_SACF) {
|
||||||
|
__ctl_load(S390_lowcore.user_asce, 7, 7);
|
||||||
|
/* enable_sacf_uaccess does all or nothing */
|
||||||
|
WARN_ON(!test_cpu_flag(CIF_ASCE_SECONDARY));
|
||||||
|
}
|
||||||
|
}
|
||||||
__tlb_flush_local();
|
__tlb_flush_local();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,6 @@ static struct irq_chip zpci_irq_chip = {
|
|||||||
.name = "PCI-MSI",
|
.name = "PCI-MSI",
|
||||||
.irq_unmask = pci_msi_unmask_irq,
|
.irq_unmask = pci_msi_unmask_irq,
|
||||||
.irq_mask = pci_msi_mask_irq,
|
.irq_mask = pci_msi_mask_irq,
|
||||||
.irq_set_affinity = zpci_set_irq_affinity,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void zpci_handle_cpu_local_irq(bool rescan)
|
static void zpci_handle_cpu_local_irq(bool rescan)
|
||||||
@ -276,7 +275,9 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
|
|||||||
rc = -EIO;
|
rc = -EIO;
|
||||||
if (hwirq - bit >= msi_vecs)
|
if (hwirq - bit >= msi_vecs)
|
||||||
break;
|
break;
|
||||||
irq = __irq_alloc_descs(-1, 0, 1, 0, THIS_MODULE, msi->affinity);
|
irq = __irq_alloc_descs(-1, 0, 1, 0, THIS_MODULE,
|
||||||
|
(irq_delivery == DIRECTED) ?
|
||||||
|
msi->affinity : NULL);
|
||||||
if (irq < 0)
|
if (irq < 0)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
rc = irq_set_msi_desc(irq, msi);
|
rc = irq_set_msi_desc(irq, msi);
|
||||||
|
@ -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 */
|
||||||
|
34
arch/sh/include/asm/vermagic.h
Normal file
34
arch/sh/include/asm/vermagic.h
Normal 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 */
|
@ -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.. */
|
||||||
|
@ -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' \
|
||||||
|
@ -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
|
||||||
|
@ -32,16 +32,16 @@ void blake2s_compress_arch(struct blake2s_state *state,
|
|||||||
const u32 inc)
|
const u32 inc)
|
||||||
{
|
{
|
||||||
/* SIMD disables preemption, so relax after processing each page. */
|
/* SIMD disables preemption, so relax after processing each page. */
|
||||||
BUILD_BUG_ON(PAGE_SIZE / BLAKE2S_BLOCK_SIZE < 8);
|
BUILD_BUG_ON(SZ_4K / BLAKE2S_BLOCK_SIZE < 8);
|
||||||
|
|
||||||
if (!static_branch_likely(&blake2s_use_ssse3) || !crypto_simd_usable()) {
|
if (!static_branch_likely(&blake2s_use_ssse3) || !crypto_simd_usable()) {
|
||||||
blake2s_compress_generic(state, block, nblocks, inc);
|
blake2s_compress_generic(state, block, nblocks, inc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;;) {
|
do {
|
||||||
const size_t blocks = min_t(size_t, nblocks,
|
const size_t blocks = min_t(size_t, nblocks,
|
||||||
PAGE_SIZE / BLAKE2S_BLOCK_SIZE);
|
SZ_4K / BLAKE2S_BLOCK_SIZE);
|
||||||
|
|
||||||
kernel_fpu_begin();
|
kernel_fpu_begin();
|
||||||
if (IS_ENABLED(CONFIG_AS_AVX512) &&
|
if (IS_ENABLED(CONFIG_AS_AVX512) &&
|
||||||
@ -52,10 +52,8 @@ void blake2s_compress_arch(struct blake2s_state *state,
|
|||||||
kernel_fpu_end();
|
kernel_fpu_end();
|
||||||
|
|
||||||
nblocks -= blocks;
|
nblocks -= blocks;
|
||||||
if (!nblocks)
|
|
||||||
break;
|
|
||||||
block += blocks * BLAKE2S_BLOCK_SIZE;
|
block += blocks * BLAKE2S_BLOCK_SIZE;
|
||||||
}
|
} while (nblocks);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blake2s_compress_arch);
|
EXPORT_SYMBOL(blake2s_compress_arch);
|
||||||
|
|
||||||
|
@ -153,9 +153,17 @@ void chacha_crypt_arch(u32 *state, u8 *dst, const u8 *src, unsigned int bytes,
|
|||||||
bytes <= CHACHA_BLOCK_SIZE)
|
bytes <= CHACHA_BLOCK_SIZE)
|
||||||
return chacha_crypt_generic(state, dst, src, bytes, nrounds);
|
return chacha_crypt_generic(state, dst, src, bytes, nrounds);
|
||||||
|
|
||||||
|
do {
|
||||||
|
unsigned int todo = min_t(unsigned int, bytes, SZ_4K);
|
||||||
|
|
||||||
kernel_fpu_begin();
|
kernel_fpu_begin();
|
||||||
chacha_dosimd(state, dst, src, bytes, nrounds);
|
chacha_dosimd(state, dst, src, todo, nrounds);
|
||||||
kernel_fpu_end();
|
kernel_fpu_end();
|
||||||
|
|
||||||
|
bytes -= todo;
|
||||||
|
src += todo;
|
||||||
|
dst += todo;
|
||||||
|
} while (bytes);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(chacha_crypt_arch);
|
EXPORT_SYMBOL(chacha_crypt_arch);
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ static int nhpoly1305_avx2_update(struct shash_desc *desc,
|
|||||||
return crypto_nhpoly1305_update(desc, src, srclen);
|
return crypto_nhpoly1305_update(desc, src, srclen);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int n = min_t(unsigned int, srclen, PAGE_SIZE);
|
unsigned int n = min_t(unsigned int, srclen, SZ_4K);
|
||||||
|
|
||||||
kernel_fpu_begin();
|
kernel_fpu_begin();
|
||||||
crypto_nhpoly1305_update_helper(desc, src, n, _nh_avx2);
|
crypto_nhpoly1305_update_helper(desc, src, n, _nh_avx2);
|
||||||
|
@ -29,7 +29,7 @@ static int nhpoly1305_sse2_update(struct shash_desc *desc,
|
|||||||
return crypto_nhpoly1305_update(desc, src, srclen);
|
return crypto_nhpoly1305_update(desc, src, srclen);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int n = min_t(unsigned int, srclen, PAGE_SIZE);
|
unsigned int n = min_t(unsigned int, srclen, SZ_4K);
|
||||||
|
|
||||||
kernel_fpu_begin();
|
kernel_fpu_begin();
|
||||||
crypto_nhpoly1305_update_helper(desc, src, n, _nh_sse2);
|
crypto_nhpoly1305_update_helper(desc, src, n, _nh_sse2);
|
||||||
|
@ -91,8 +91,8 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len,
|
|||||||
struct poly1305_arch_internal *state = ctx;
|
struct poly1305_arch_internal *state = ctx;
|
||||||
|
|
||||||
/* SIMD disables preemption, so relax after processing each page. */
|
/* SIMD disables preemption, so relax after processing each page. */
|
||||||
BUILD_BUG_ON(PAGE_SIZE < POLY1305_BLOCK_SIZE ||
|
BUILD_BUG_ON(SZ_4K < POLY1305_BLOCK_SIZE ||
|
||||||
PAGE_SIZE % POLY1305_BLOCK_SIZE);
|
SZ_4K % POLY1305_BLOCK_SIZE);
|
||||||
|
|
||||||
if (!static_branch_likely(&poly1305_use_avx) ||
|
if (!static_branch_likely(&poly1305_use_avx) ||
|
||||||
(len < (POLY1305_BLOCK_SIZE * 18) && !state->is_base2_26) ||
|
(len < (POLY1305_BLOCK_SIZE * 18) && !state->is_base2_26) ||
|
||||||
@ -102,8 +102,8 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;;) {
|
do {
|
||||||
const size_t bytes = min_t(size_t, len, PAGE_SIZE);
|
const size_t bytes = min_t(size_t, len, SZ_4K);
|
||||||
|
|
||||||
kernel_fpu_begin();
|
kernel_fpu_begin();
|
||||||
if (IS_ENABLED(CONFIG_AS_AVX512) && static_branch_likely(&poly1305_use_avx512))
|
if (IS_ENABLED(CONFIG_AS_AVX512) && static_branch_likely(&poly1305_use_avx512))
|
||||||
@ -113,11 +113,10 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len,
|
|||||||
else
|
else
|
||||||
poly1305_blocks_avx(ctx, inp, bytes, padbit);
|
poly1305_blocks_avx(ctx, inp, bytes, padbit);
|
||||||
kernel_fpu_end();
|
kernel_fpu_end();
|
||||||
|
|
||||||
len -= bytes;
|
len -= bytes;
|
||||||
if (!len)
|
|
||||||
break;
|
|
||||||
inp += bytes;
|
inp += bytes;
|
||||||
}
|
} while (len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void poly1305_simd_emit(void *ctx, u8 mac[POLY1305_DIGEST_SIZE],
|
static void poly1305_simd_emit(void *ctx, u8 mac[POLY1305_DIGEST_SIZE],
|
||||||
|
@ -98,13 +98,6 @@ For 32-bit we have the following conventions - kernel is built with
|
|||||||
#define SIZEOF_PTREGS 21*8
|
#define SIZEOF_PTREGS 21*8
|
||||||
|
|
||||||
.macro PUSH_AND_CLEAR_REGS rdx=%rdx rax=%rax save_ret=0
|
.macro PUSH_AND_CLEAR_REGS rdx=%rdx rax=%rax save_ret=0
|
||||||
/*
|
|
||||||
* Push registers and sanitize registers of values that a
|
|
||||||
* speculation attack might otherwise want to exploit. The
|
|
||||||
* lower registers are likely clobbered well before they
|
|
||||||
* could be put to use in a speculative execution gadget.
|
|
||||||
* Interleave XOR with PUSH for better uop scheduling:
|
|
||||||
*/
|
|
||||||
.if \save_ret
|
.if \save_ret
|
||||||
pushq %rsi /* pt_regs->si */
|
pushq %rsi /* pt_regs->si */
|
||||||
movq 8(%rsp), %rsi /* temporarily store the return address in %rsi */
|
movq 8(%rsp), %rsi /* temporarily store the return address in %rsi */
|
||||||
@ -114,34 +107,43 @@ For 32-bit we have the following conventions - kernel is built with
|
|||||||
pushq %rsi /* pt_regs->si */
|
pushq %rsi /* pt_regs->si */
|
||||||
.endif
|
.endif
|
||||||
pushq \rdx /* pt_regs->dx */
|
pushq \rdx /* pt_regs->dx */
|
||||||
xorl %edx, %edx /* nospec dx */
|
|
||||||
pushq %rcx /* pt_regs->cx */
|
pushq %rcx /* pt_regs->cx */
|
||||||
xorl %ecx, %ecx /* nospec cx */
|
|
||||||
pushq \rax /* pt_regs->ax */
|
pushq \rax /* pt_regs->ax */
|
||||||
pushq %r8 /* pt_regs->r8 */
|
pushq %r8 /* pt_regs->r8 */
|
||||||
xorl %r8d, %r8d /* nospec r8 */
|
|
||||||
pushq %r9 /* pt_regs->r9 */
|
pushq %r9 /* pt_regs->r9 */
|
||||||
xorl %r9d, %r9d /* nospec r9 */
|
|
||||||
pushq %r10 /* pt_regs->r10 */
|
pushq %r10 /* pt_regs->r10 */
|
||||||
xorl %r10d, %r10d /* nospec r10 */
|
|
||||||
pushq %r11 /* pt_regs->r11 */
|
pushq %r11 /* pt_regs->r11 */
|
||||||
xorl %r11d, %r11d /* nospec r11*/
|
|
||||||
pushq %rbx /* pt_regs->rbx */
|
pushq %rbx /* pt_regs->rbx */
|
||||||
xorl %ebx, %ebx /* nospec rbx*/
|
|
||||||
pushq %rbp /* pt_regs->rbp */
|
pushq %rbp /* pt_regs->rbp */
|
||||||
xorl %ebp, %ebp /* nospec rbp*/
|
|
||||||
pushq %r12 /* pt_regs->r12 */
|
pushq %r12 /* pt_regs->r12 */
|
||||||
xorl %r12d, %r12d /* nospec r12*/
|
|
||||||
pushq %r13 /* pt_regs->r13 */
|
pushq %r13 /* pt_regs->r13 */
|
||||||
xorl %r13d, %r13d /* nospec r13*/
|
|
||||||
pushq %r14 /* pt_regs->r14 */
|
pushq %r14 /* pt_regs->r14 */
|
||||||
xorl %r14d, %r14d /* nospec r14*/
|
|
||||||
pushq %r15 /* pt_regs->r15 */
|
pushq %r15 /* pt_regs->r15 */
|
||||||
xorl %r15d, %r15d /* nospec r15*/
|
|
||||||
UNWIND_HINT_REGS
|
UNWIND_HINT_REGS
|
||||||
|
|
||||||
.if \save_ret
|
.if \save_ret
|
||||||
pushq %rsi /* return address on top of stack */
|
pushq %rsi /* return address on top of stack */
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sanitize registers of values that a speculation attack might
|
||||||
|
* otherwise want to exploit. The lower registers are likely clobbered
|
||||||
|
* well before they could be put to use in a speculative execution
|
||||||
|
* gadget.
|
||||||
|
*/
|
||||||
|
xorl %edx, %edx /* nospec dx */
|
||||||
|
xorl %ecx, %ecx /* nospec cx */
|
||||||
|
xorl %r8d, %r8d /* nospec r8 */
|
||||||
|
xorl %r9d, %r9d /* nospec r9 */
|
||||||
|
xorl %r10d, %r10d /* nospec r10 */
|
||||||
|
xorl %r11d, %r11d /* nospec r11 */
|
||||||
|
xorl %ebx, %ebx /* nospec rbx */
|
||||||
|
xorl %ebp, %ebp /* nospec rbp */
|
||||||
|
xorl %r12d, %r12d /* nospec r12 */
|
||||||
|
xorl %r13d, %r13d /* nospec r13 */
|
||||||
|
xorl %r14d, %r14d /* nospec r14 */
|
||||||
|
xorl %r15d, %r15d /* nospec r15 */
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro POP_REGS pop_rdi=1 skip_r11rcx=0
|
.macro POP_REGS pop_rdi=1 skip_r11rcx=0
|
||||||
|
@ -1693,14 +1693,6 @@ SYM_CODE_START(general_protection)
|
|||||||
jmp common_exception
|
jmp common_exception
|
||||||
SYM_CODE_END(general_protection)
|
SYM_CODE_END(general_protection)
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_GUEST
|
|
||||||
SYM_CODE_START(async_page_fault)
|
|
||||||
ASM_CLAC
|
|
||||||
pushl $do_async_page_fault
|
|
||||||
jmp common_exception_read_cr2
|
|
||||||
SYM_CODE_END(async_page_fault)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
SYM_CODE_START(rewind_stack_do_exit)
|
SYM_CODE_START(rewind_stack_do_exit)
|
||||||
/* Prevent any naive code from trying to unwind to our caller. */
|
/* Prevent any naive code from trying to unwind to our caller. */
|
||||||
xorl %ebp, %ebp
|
xorl %ebp, %ebp
|
||||||
|
@ -249,7 +249,6 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL)
|
|||||||
*/
|
*/
|
||||||
syscall_return_via_sysret:
|
syscall_return_via_sysret:
|
||||||
/* rcx and r11 are already restored (see code above) */
|
/* rcx and r11 are already restored (see code above) */
|
||||||
UNWIND_HINT_EMPTY
|
|
||||||
POP_REGS pop_rdi=0 skip_r11rcx=1
|
POP_REGS pop_rdi=0 skip_r11rcx=1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -258,6 +257,7 @@ syscall_return_via_sysret:
|
|||||||
*/
|
*/
|
||||||
movq %rsp, %rdi
|
movq %rsp, %rdi
|
||||||
movq PER_CPU_VAR(cpu_tss_rw + TSS_sp0), %rsp
|
movq PER_CPU_VAR(cpu_tss_rw + TSS_sp0), %rsp
|
||||||
|
UNWIND_HINT_EMPTY
|
||||||
|
|
||||||
pushq RSP-RDI(%rdi) /* RSP */
|
pushq RSP-RDI(%rdi) /* RSP */
|
||||||
pushq (%rdi) /* RDI */
|
pushq (%rdi) /* RDI */
|
||||||
@ -279,8 +279,7 @@ SYM_CODE_END(entry_SYSCALL_64)
|
|||||||
* %rdi: prev task
|
* %rdi: prev task
|
||||||
* %rsi: next task
|
* %rsi: next task
|
||||||
*/
|
*/
|
||||||
SYM_CODE_START(__switch_to_asm)
|
SYM_FUNC_START(__switch_to_asm)
|
||||||
UNWIND_HINT_FUNC
|
|
||||||
/*
|
/*
|
||||||
* Save callee-saved registers
|
* Save callee-saved registers
|
||||||
* This must match the order in inactive_task_frame
|
* This must match the order in inactive_task_frame
|
||||||
@ -321,7 +320,7 @@ SYM_CODE_START(__switch_to_asm)
|
|||||||
popq %rbp
|
popq %rbp
|
||||||
|
|
||||||
jmp __switch_to
|
jmp __switch_to
|
||||||
SYM_CODE_END(__switch_to_asm)
|
SYM_FUNC_END(__switch_to_asm)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A newly forked process directly context switches into this address.
|
* A newly forked process directly context switches into this address.
|
||||||
@ -512,7 +511,7 @@ SYM_CODE_END(spurious_entries_start)
|
|||||||
* +----------------------------------------------------+
|
* +----------------------------------------------------+
|
||||||
*/
|
*/
|
||||||
SYM_CODE_START(interrupt_entry)
|
SYM_CODE_START(interrupt_entry)
|
||||||
UNWIND_HINT_FUNC
|
UNWIND_HINT_IRET_REGS offset=16
|
||||||
ASM_CLAC
|
ASM_CLAC
|
||||||
cld
|
cld
|
||||||
|
|
||||||
@ -544,9 +543,9 @@ SYM_CODE_START(interrupt_entry)
|
|||||||
pushq 5*8(%rdi) /* regs->eflags */
|
pushq 5*8(%rdi) /* regs->eflags */
|
||||||
pushq 4*8(%rdi) /* regs->cs */
|
pushq 4*8(%rdi) /* regs->cs */
|
||||||
pushq 3*8(%rdi) /* regs->ip */
|
pushq 3*8(%rdi) /* regs->ip */
|
||||||
|
UNWIND_HINT_IRET_REGS
|
||||||
pushq 2*8(%rdi) /* regs->orig_ax */
|
pushq 2*8(%rdi) /* regs->orig_ax */
|
||||||
pushq 8(%rdi) /* return address */
|
pushq 8(%rdi) /* return address */
|
||||||
UNWIND_HINT_FUNC
|
|
||||||
|
|
||||||
movq (%rdi), %rdi
|
movq (%rdi), %rdi
|
||||||
jmp 2f
|
jmp 2f
|
||||||
@ -637,6 +636,7 @@ SYM_INNER_LABEL(swapgs_restore_regs_and_return_to_usermode, SYM_L_GLOBAL)
|
|||||||
*/
|
*/
|
||||||
movq %rsp, %rdi
|
movq %rsp, %rdi
|
||||||
movq PER_CPU_VAR(cpu_tss_rw + TSS_sp0), %rsp
|
movq PER_CPU_VAR(cpu_tss_rw + TSS_sp0), %rsp
|
||||||
|
UNWIND_HINT_EMPTY
|
||||||
|
|
||||||
/* Copy the IRET frame to the trampoline stack. */
|
/* Copy the IRET frame to the trampoline stack. */
|
||||||
pushq 6*8(%rdi) /* SS */
|
pushq 6*8(%rdi) /* SS */
|
||||||
@ -1202,10 +1202,6 @@ idtentry xendebug do_debug has_error_code=0
|
|||||||
idtentry general_protection do_general_protection has_error_code=1
|
idtentry general_protection do_general_protection has_error_code=1
|
||||||
idtentry page_fault do_page_fault has_error_code=1 read_cr2=1
|
idtentry page_fault do_page_fault has_error_code=1 read_cr2=1
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_GUEST
|
|
||||||
idtentry async_page_fault do_async_page_fault has_error_code=1 read_cr2=1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_MCE
|
#ifdef CONFIG_X86_MCE
|
||||||
idtentry machine_check do_mce has_error_code=0 paranoid=1
|
idtentry machine_check do_mce has_error_code=0 paranoid=1
|
||||||
#endif
|
#endif
|
||||||
@ -1739,7 +1735,7 @@ SYM_CODE_START(rewind_stack_do_exit)
|
|||||||
|
|
||||||
movq PER_CPU_VAR(cpu_current_top_of_stack), %rax
|
movq PER_CPU_VAR(cpu_current_top_of_stack), %rax
|
||||||
leaq -PTREGS_SIZE(%rax), %rsp
|
leaq -PTREGS_SIZE(%rax), %rsp
|
||||||
UNWIND_HINT_FUNC sp_offset=PTREGS_SIZE
|
UNWIND_HINT_REGS
|
||||||
|
|
||||||
call do_exit
|
call do_exit
|
||||||
SYM_CODE_END(rewind_stack_do_exit)
|
SYM_CODE_END(rewind_stack_do_exit)
|
||||||
|
@ -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),
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user