Список изменений в Linux 5.4.203

 
ARM: 8929/1: use APSR_nzcv instead of r15 as mrc operand [+ + +]
Author: Stefan Agner <stefan@agner.ch>
Date:   Wed Jun 29 11:02:23 2022 -0700

    ARM: 8929/1: use APSR_nzcv instead of r15 as mrc operand
    
    commit 9f1984c6ae30e2a379751339ce3375a21099b5d4 upstream
    
    LLVM's integrated assembler does not accept r15 as mrc operand.
      arch/arm/boot/compressed/head.S:1267:16: error: operand must be a register in range [r0, r14] or apsr_nzcv
      1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache
                     ^
    
    Use APSR_nzcv instead of r15. The GNU assembler supports this
    syntax since binutils 2.21 [0].
    
    [0] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=db472d6ff0f438a21b357249a9b48e4b74498076
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: 8933/1: replace Sun/Solaris style flag on section directive [+ + +]
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Wed Jun 29 11:02:22 2022 -0700

    ARM: 8933/1: replace Sun/Solaris style flag on section directive
    
    commit 790756c7e0229dedc83bf058ac69633045b1000e upstream
    
    It looks like a section directive was using "Solaris style" to declare
    the section flags. Replace this with the GNU style so that Clang's
    integrated assembler can assemble this directive.
    
    The modified instances were identified via:
    $ ag \.section | grep #
    
    Link: https://ftp.gnu.org/old-gnu/Manuals/gas-2.9.1/html_chapter/as_7.html#SEC119
    Link: https://github.com/ClangBuiltLinux/linux/issues/744
    Link: https://bugs.llvm.org/show_bug.cgi?id=43759
    Link: https://reviews.llvm.org/D69296
    
    Acked-by: Nicolas Pitre <nico@fluxnic.net>
    Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Fangrui Song <maskray@google.com>
    Suggested-by: Jian Cai <jiancai@google.com>
    Suggested-by: Peter Smith <peter.smith@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: 8971/1: replace the sole use of a symbol with its definition [+ + +]
Author: Jian Cai <caij2003@gmail.com>
Date:   Wed Jun 29 11:02:19 2022 -0700

    ARM: 8971/1: replace the sole use of a symbol with its definition
    
    commit a780e485b5768e78aef087502499714901b68cc4 upstream
    
    ALT_UP_B macro sets symbol up_b_offset via .equ to an expression
    involving another symbol. The macro gets expanded twice when
    arch/arm/kernel/sleep.S is assembled, creating a scenario where
    up_b_offset is set to another expression involving symbols while its
    current value is based on symbols. LLVM integrated assembler does not
    allow such cases, and based on the documentation of binutils, "Values
    that are based on expressions involving other symbols are allowed, but
    some targets may restrict this to only being done once per assembly", so
    it may be better to avoid such cases as it is not clearly stated which
    targets should support or disallow them. The fix in this case is simple,
    as up_b_offset has only one use, so we can replace the use with the
    definition and get rid of up_b_offset.
    
     Link:https://github.com/ClangBuiltLinux/linux/issues/920
    
     Reviewed-by: Stefan Agner <stefan@agner.ch>
    
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Jian Cai <caij2003@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: 8989/1: use .fpu assembler directives instead of assembler arguments [+ + +]
Author: Stefan Agner <stefan@agner.ch>
Date:   Wed Jun 29 11:02:17 2022 -0700

    ARM: 8989/1: use .fpu assembler directives instead of assembler arguments
    
    commit a6c30873ee4a5cc0549c1973668156381ab2c1c4 upstream
    
    Explicit FPU selection has been introduced in commit 1a6be26d5b1a
    ("[ARM] Enable VFP to be built when non-VFP capable CPUs are selected")
    to make use of assembler mnemonics for VFP instructions.
    
    However, clang currently does not support passing assembler flags
    like this and errors out with:
    clang-10: error: the clang compiler does not support '-Wa,-mfpu=softvfp+vfp'
    
    Make use of the .fpu assembler directives to select the floating point
    hardware selectively. Also use the new unified assembler language
    mnemonics. This allows to build these procedures with Clang.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/762
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: 8990/1: use VFP assembler mnemonics in register load/store macros [+ + +]
Author: Stefan Agner <stefan@agner.ch>
Date:   Wed Jun 29 11:02:18 2022 -0700

    ARM: 8990/1: use VFP assembler mnemonics in register load/store macros
    
    commit ee440336e5ef977c397afdb72cbf9c6b8effc8ea upstream
    
    The integrated assembler of Clang 10 and earlier do not allow to access
    the VFP registers through the coprocessor load/store instructions:
    <instantiation>:4:6: error: invalid operand for instruction
     LDC p11, cr0, [r10],#32*4 @ FLDMIAD r10!, {d0-d15}
         ^
    
    This has been addressed with Clang 11 [0]. However, to support earlier
    versions of Clang and for better readability use of VFP assembler
    mnemonics still is preferred.
    
    Replace the coprocessor load/store instructions with explicit assembler
    mnemonics to accessing the floating point coprocessor registers. Use
    assembler directives to select the appropriate FPU version.
    
    This allows to build these macros with GNU assembler as well as with
    Clang's built-in assembler.
    
    [0] https://reviews.llvm.org/D59733
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/905
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler [+ + +]
Author: Jian Cai <jiancai@google.com>
Date:   Wed Jun 29 11:02:25 2022 -0700

    ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler
    
    commit 3c9f5708b7aed6a963e2aefccbd1854802de163e upstream
    
    This patch replaces 6 IWMMXT instructions Clang's integrated assembler
    does not support in iwmmxt.S using macros, while making sure GNU
    assembler still emit the same instructions. This should be easier than
    providing full IWMMXT support in Clang.  This is one of the last bits of
    kernel code that could be compiled but not assembled with clang. Once
    all of it works with IAS, we no longer need to special-case 32-bit Arm
    in Kbuild, or turn off CONFIG_IWMMXT when build-testing.
    
    "Intel Wireless MMX Technology - Developer Guide - August, 2002" should
    be referenced for the encoding schemes of these extensions.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/975
    
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Ard Biesheuvel <ardb@kernel.org>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Jian Cai <jiancai@google.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ARM: OMAP2+: drop unnecessary adrl [+ + +]
Author: Stefan Agner <stefan@agner.ch>
Date:   Wed Jun 29 11:02:24 2022 -0700

    ARM: OMAP2+: drop unnecessary adrl
    
    commit d85d5247885ef2e8192287b895c2e381fa931b0b upstream
    
    The adrl instruction has been introduced with commit dd31394779aa ("ARM:
    omap3: Thumb-2 compatibility for sleep34xx.S"), back when this assembly
    file was considerably longer. Today adr seems to have enough reach, even
    when inserting about 60 instructions between the use site and the label.
    Replace adrl with conventional adr instruction.
    
    This allows to build this file using Clang's integrated assembler (which
    does not support the adrl pseudo instruction).
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/430
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
crypto: arm - use Kconfig based compiler checks for crypto opcodes [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Wed Jun 29 11:02:26 2022 -0700

    crypto: arm - use Kconfig based compiler checks for crypto opcodes
    
    commit b4d0c0aad57ac3bd1b5141bac5ab1ab1d5e442b3 upstream
    
    Instead of allowing the Crypto Extensions algorithms to be selected when
    using a toolchain that does not support them, and complain about it at
    build time, use the information we have about the compiler to prevent
    them from being selected in the first place. Users that are stuck with
    a GCC version <4.8 are unlikely to care about these routines anyway, and
    it cleans up the Makefile considerably.
    
    While at it, add explicit 'armv8-a' CPU specifiers to the code that uses
    the 'crypto-neon-fp-armv8' FPU specifier so we don't regress Clang, which
    will complain about this in version 10 and later.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: arm/ghash-ce - define fpu before fpu registers are referenced [+ + +]
Author: Stefan Agner <stefan@agner.ch>
Date:   Wed Jun 29 11:02:27 2022 -0700

    crypto: arm/ghash-ce - define fpu before fpu registers are referenced
    
    commit 7548bf8c17d84607c106bd45d81834afd95a2edb upstream
    
    Building ARMv7 with Clang's integrated assembler leads to errors such
    as:
    arch/arm/crypto/ghash-ce-core.S:34:11: error: register name expected
     t3l .req d16
              ^
    
    Since no FPU has selected yet Clang considers d16 not a valid register.
    Moving the FPU directive on-top allows Clang to parse the registers and
    allows to successfully build this file with Clang's integrated assembler.
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: arm/sha256-neon - avoid ADRL pseudo instruction [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Wed Jun 29 11:02:20 2022 -0700

    crypto: arm/sha256-neon - avoid ADRL pseudo instruction
    
    commit 54781938ec342cadbe2d76669ef8d3294d909974 upstream
    
    The ADRL pseudo instruction is not an architectural construct, but a
    convenience macro that was supported by the ARM proprietary assembler
    and adopted by binutils GAS as well, but only when assembling in 32-bit
    ARM mode. Therefore, it can only be used in assembler code that is known
    to assemble in ARM mode only, but as it turns out, the Clang assembler
    does not implement ADRL at all, and so it is better to get rid of it
    entirely.
    
    So replace the ADRL instruction with a ADR instruction that refers to
    a nearer symbol, and apply the delta explicitly using an additional
    instruction.
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

crypto: arm/sha512-neon - avoid ADRL pseudo instruction [+ + +]
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Wed Jun 29 11:02:21 2022 -0700

    crypto: arm/sha512-neon - avoid ADRL pseudo instruction
    
    commit 0f5e8323777bfc1c1d2cba71242db6a361de03b6 upstream
    
    The ADRL pseudo instruction is not an architectural construct, but a
    convenience macro that was supported by the ARM proprietary assembler
    and adopted by binutils GAS as well, but only when assembling in 32-bit
    ARM mode. Therefore, it can only be used in assembler code that is known
    to assemble in ARM mode only, but as it turns out, the Clang assembler
    does not implement ADRL at all, and so it is better to get rid of it
    entirely.
    
    So replace the ADRL instruction with a ADR instruction that refers to
    a nearer symbol, and apply the delta explicitly using an additional
    instruction.
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm: remove drm_fb_helper_modinit [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Feb 2 13:13:23 2021 +0100

    drm: remove drm_fb_helper_modinit
    
    commit bf22c9ec39da90ce866d5f625d616f28bc733dc1 upstream.
    
    drm_fb_helper_modinit has a lot of boilerplate for what is not very
    simple functionality.  Just open code it in the only caller using
    IS_ENABLED and IS_MODULE, and skip the find_module check as a
    request_module is harmless if the module is already loaded (and not
    other caller has this find_module check either).
    
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add] [+ + +]
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu May 19 14:42:37 2022 +0530

    kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
    
    commit 3e35142ef99fe6b4fe5d834ad43ee13cca10a2dc upstream.
    
    Since commit d1bcae833b32f1 ("ELF: Don't generate unused section
    symbols") [1], binutils (v2.36+) started dropping section symbols that
    it thought were unused.  This isn't an issue in general, but with
    kexec_file.c, gcc is placing kexec_arch_apply_relocations[_add] into a
    separate .text.unlikely section and the section symbol ".text.unlikely"
    is being dropped. Due to this, recordmcount is unable to find a non-weak
    symbol in .text.unlikely to generate a relocation record against.
    
    Address this by dropping the weak attribute from these functions.
    Instead, follow the existing pattern of having architectures #define the
    name of the function they want to override in their headers.
    
    [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d1bcae833b32f1
    
    [akpm@linux-foundation.org: arch/s390/include/asm/kexec.h needs linux/module.h]
    Link: https://lkml.kernel.org/r/20220519091237.676736-1-naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 5.4.203 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jul 2 16:28:53 2022 +0200

    Linux 5.4.203
    
    Link: https://lore.kernel.org/r/20220630133230.936488203@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: mscc: ocelot: allow unregistered IP multicast flooding [+ + +]
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Tue Jun 28 20:20:16 2022 +0300

    net: mscc: ocelot: allow unregistered IP multicast flooding
    
    Flooding of unregistered IP multicast has been broken (both to other
    switch ports and to the CPU) since the ocelot driver introduction, and
    up until commit 4cf35a2b627a ("net: mscc: ocelot: fix broken IP
    multicast flooding"), a bug fix for commit 421741ea5672 ("net: mscc:
    ocelot: offload bridge port flags to device") from v5.12.
    
    The driver used to set PGID_MCIPV4 and PGID_MCIPV6 to the empty port
    mask (0), which made unregistered IPv4/IPv6 multicast go nowhere, and
    without ever modifying that port mask at runtime.
    
    The expectation is that such packets are treated as broadcast, and
    flooded according to the forwarding domain (to the CPU if the port is
    standalone, or to the CPU and other bridged ports, if under a bridge).
    
    Since the aforementioned commit, the limitation has been lifted by
    responding to SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS events emitted by the
    bridge. As for host flooding, DSA synthesizes another call to
    ocelot_port_bridge_flags() on the NPI port which ensures that the CPU
    gets the unregistered multicast traffic it might need, for example for
    smcroute to work between standalone ports.
    
    But between v4.18 and v5.12, IP multicast flooding has remained unfixed.
    
    Delete the inexplicable premature optimization of clearing PGID_MCIPV4
    and PGID_MCIPV6 as part of the init sequence, and allow unregistered IP
    multicast to be flooded freely according to the forwarding domain
    established by PGID_SRC, by explicitly programming PGID_MCIPV4 and
    PGID_MCIPV6 towards all physical ports plus the CPU port module.
    
    Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support")
    Cc: stable@kernel.org
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
powerpc/ftrace: Remove ftrace init tramp once kernel init is complete [+ + +]
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Mon May 16 12:44:22 2022 +0530

    powerpc/ftrace: Remove ftrace init tramp once kernel init is complete
    
    commit 84ade0a6655bee803d176525ef457175cbf4df22 upstream.
    
    Stop using the ftrace trampoline for init section once kernel init is
    complete.
    
    Fixes: 67361cf8071286 ("powerpc/ftrace: Handle large kernel configs")
    Cc: stable@vger.kernel.org # v4.20+
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220516071422.463738-1-naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>