1. 14 6月, 2022 1 次提交
  2. 12 6月, 2022 3 次提交
  3. 11 6月, 2022 8 次提交
  4. 10 6月, 2022 12 次提交
    • S
      gpio: dwapb: Don't print error on -EPROBE_DEFER · 77006f6e
      Serge Semin 提交于
      Currently if the APB or Debounce clocks aren't yet ready to be requested
      the DW GPIO driver will correctly handle that by deferring the probe
      procedure, but the error is still printed to the system log. It needlessly
      pollutes the log since there was no real error but a request to postpone
      the clock request procedure since the clocks subsystem hasn't been fully
      initialized yet. Let's fix that by using the dev_err_probe method to print
      the APB/clock request error status. It will correctly handle the deferred
      probe situation and print the error if it actually happens.
      Signed-off-by: NSerge Semin <Sergey.Semin@baikalelectronics.ru>
      Reviewed-by: NAndy Shevchenko <andy.shevchenko@gmail.com>
      Signed-off-by: NBartosz Golaszewski <brgl@bgdev.pl>
      77006f6e
    • J
      random: remove rng_has_arch_random() · e052a478
      Jason A. Donenfeld 提交于
      With arch randomness being used by every distro and enabled in
      defconfigs, the distinction between rng_has_arch_random() and
      rng_is_initialized() is now rather small. In fact, the places where they
      differ are now places where paranoid users and system builders really
      don't want arch randomness to be used, in which case we should respect
      that choice, or places where arch randomness is known to be broken, in
      which case that choice is all the more important. So this commit just
      removes the function and its one user.
      
      Reviewed-by: Petr Mladek <pmladek@suse.com> # for vsprintf.c
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      e052a478
    • J
      random: credit cpu and bootloader seeds by default · 846bb97e
      Jason A. Donenfeld 提交于
      This commit changes the default Kconfig values of RANDOM_TRUST_CPU and
      RANDOM_TRUST_BOOTLOADER to be Y by default. It does not change any
      existing configs or change any kernel behavior. The reason for this is
      several fold.
      
      As background, I recently had an email thread with the kernel
      maintainers of Fedora/RHEL, Debian, Ubuntu, Gentoo, Arch, NixOS, Alpine,
      SUSE, and Void as recipients. I noted that some distros trust RDRAND,
      some trust EFI, and some trust both, and I asked why or why not. There
      wasn't really much of a "debate" but rather an interesting discussion of
      what the historical reasons have been for this, and it came up that some
      distros just missed the introduction of the bootloader Kconfig knob,
      while another didn't want to enable it until there was a boot time
      switch to turn it off for more concerned users (which has since been
      added). The result of the rather uneventful discussion is that every
      major Linux distro enables these two options by default.
      
      While I didn't have really too strong of an opinion going into this
      thread -- and I mostly wanted to learn what the distros' thinking was
      one way or another -- ultimately I think their choice was a decent
      enough one for a default option (which can be disabled at boot time).
      I'll try to summarize the pros and cons:
      
      Pros:
      
      - The RNG machinery gets initialized super quickly, and there's no
        messing around with subsequent blocking behavior.
      
      - The bootloader mechanism is used by kexec in order for the prior
        kernel to initialize the RNG of the next kernel, which increases
        the entropy available to early boot daemons of the next kernel.
      
      - Previous objections related to backdoors centered around
        Dual_EC_DRBG-like kleptographic systems, in which observing some
        amount of the output stream enables an adversary holding the right key
        to determine the entire output stream.
      
        This used to be a partially justified concern, because RDRAND output
        was mixed into the output stream in varying ways, some of which may
        have lacked pre-image resistance (e.g. XOR or an LFSR).
      
        But this is no longer the case. Now, all usage of RDRAND and
        bootloader seeds go through a cryptographic hash function. This means
        that the CPU would have to compute a hash pre-image, which is not
        considered to be feasible (otherwise the hash function would be
        terribly broken).
      
      - More generally, if the CPU is backdoored, the RNG is probably not the
        realistic vector of choice for an attacker.
      
      - These CPU or bootloader seeds are far from being the only source of
        entropy. Rather, there is generally a pretty huge amount of entropy,
        not all of which is credited, especially on CPUs that support
        instructions like RDRAND. In other words, assuming RDRAND outputs all
        zeros, an attacker would *still* have to accurately model every single
        other entropy source also in use.
      
      - The RNG now reseeds itself quite rapidly during boot, starting at 2
        seconds, then 4, then 8, then 16, and so forth, so that other sources
        of entropy get used without much delay.
      
      - Paranoid users can set random.trust_{cpu,bootloader}=no in the kernel
        command line, and paranoid system builders can set the Kconfig options
        to N, so there's no reduction or restriction of optionality.
      
      - It's a practical default.
      
      - All the distros have it set this way. Microsoft and Apple trust it
        too. Bandwagon.
      
      Cons:
      
      - RDRAND *could* still be backdoored with something like a fixed key or
        limited space serial number seed or another indexable scheme like
        that. (However, it's hard to imagine threat models where the CPU is
        backdoored like this, yet people are still okay making *any*
        computations with it or connecting it to networks, etc.)
      
      - RDRAND *could* be defective, rather than backdoored, and produce
        garbage that is in one way or another insufficient for crypto.
      
      - Suggesting a *reduction* in paranoia, as this commit effectively does,
        may cause some to question my personal integrity as a "security
        person".
      
      - Bootloader seeds and RDRAND are generally very difficult if not all
        together impossible to audit.
      
      Keep in mind that this doesn't actually change any behavior. This
      is just a change in the default Kconfig value. The distros already are
      shipping kernels that set things this way.
      
      Ard made an additional argument in [1]:
      
          We're at the mercy of firmware and micro-architecture anyway, given
          that we are also relying on it to ensure that every instruction in
          the kernel's executable image has been faithfully copied to memory,
          and that the CPU implements those instructions as documented. So I
          don't think firmware or ISA bugs related to RNGs deserve special
          treatment - if they are broken, we should quirk around them like we
          usually do. So enabling these by default is a step in the right
          direction IMHO.
      
      In [2], Phil pointed out that having this disabled masked a bug that CI
      otherwise would have caught:
      
          A clean 5.15.45 boots cleanly, whereas a downstream kernel shows the
          static key warning (but it does go on to boot). The significant
          difference is that our defconfigs set CONFIG_RANDOM_TRUST_BOOTLOADER=y
          defining that on top of multi_v7_defconfig demonstrates the issue on
          a clean 5.15.45. Conversely, not setting that option in a
          downstream kernel build avoids the warning
      
      [1] https://lore.kernel.org/lkml/CAMj1kXGi+ieviFjXv9zQBSaGyyzeGW_VpMpTLJK8PJb2QHEQ-w@mail.gmail.com/
      [2] https://lore.kernel.org/lkml/c47c42e3-1d56-5859-a6ad-976a1a3381c6@raspberrypi.com/
      
      Cc: Theodore Ts'o <tytso@mit.edu>
      Reviewed-by: NArd Biesheuvel <ardb@kernel.org>
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      846bb97e
    • J
      random: do not use jump labels before they are initialized · 60e5b288
      Jason A. Donenfeld 提交于
      Stephen reported that a static key warning splat appears during early
      boot on systems that credit randomness from device trees that contain an
      "rng-seed" property, because because setup_machine_fdt() is called
      before jump_label_init() during setup_arch():
      
       static_key_enable_cpuslocked(): static key '0xffffffe51c6fcfc0' used before call to jump_label_init()
       WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:166 static_key_enable_cpuslocked+0xb0/0xb8
       Modules linked in:
       CPU: 0 PID: 0 Comm: swapper Not tainted 5.18.0+ #224 44b43e377bfc84bc99bb5ab885ff694984ee09ff
       pstate: 600001c9 (nZCv dAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : static_key_enable_cpuslocked+0xb0/0xb8
       lr : static_key_enable_cpuslocked+0xb0/0xb8
       sp : ffffffe51c393cf0
       x29: ffffffe51c393cf0 x28: 000000008185054c x27: 00000000f1042f10
       x26: 0000000000000000 x25: 00000000f10302b2 x24: 0000002513200000
       x23: 0000002513200000 x22: ffffffe51c1c9000 x21: fffffffdfdc00000
       x20: ffffffe51c2f0831 x19: ffffffe51c6fcfc0 x18: 00000000ffff1020
       x17: 00000000e1e2ac90 x16: 00000000000000e0 x15: ffffffe51b710708
       x14: 0000000000000066 x13: 0000000000000018 x12: 0000000000000000
       x11: 0000000000000000 x10: 00000000ffffffff x9 : 0000000000000000
       x8 : 0000000000000000 x7 : 61632065726f6665 x6 : 6220646573752027
       x5 : ffffffe51c641d25 x4 : ffffffe51c13142c x3 : ffff0a00ffffff05
       x2 : 40000000ffffe003 x1 : 00000000000001c0 x0 : 0000000000000065
       Call trace:
        static_key_enable_cpuslocked+0xb0/0xb8
        static_key_enable+0x2c/0x40
        crng_set_ready+0x24/0x30
        execute_in_process_context+0x80/0x90
        _credit_init_bits+0x100/0x154
        add_bootloader_randomness+0x64/0x78
        early_init_dt_scan_chosen+0x140/0x184
        early_init_dt_scan_nodes+0x28/0x4c
        early_init_dt_scan+0x40/0x44
        setup_machine_fdt+0x7c/0x120
        setup_arch+0x74/0x1d8
        start_kernel+0x84/0x44c
        __primary_switched+0xc0/0xc8
       ---[ end trace 0000000000000000 ]---
       random: crng init done
       Machine model: Google Lazor (rev1 - 2) with LTE
      
      A trivial fix went in to address this on arm64, 73e2d827 ("arm64:
      Initialize jump labels before setup_machine_fdt()"). I wrote patches as
      well for arm32 and risc-v. But still patches are needed on xtensa,
      powerpc, arc, and mips. So that's 7 platforms where things aren't quite
      right. This sort of points to larger issues that might need a larger
      solution.
      
      Instead, this commit just defers setting the static branch until later
      in the boot process. random_init() is called after jump_label_init() has
      been called, and so is always a safe place from which to adjust the
      static branch.
      
      Fixes: f5bda35f ("random: use static branch for crng_ready()")
      Reported-by: NStephen Boyd <swboyd@chromium.org>
      Reported-by: NPhil Elwell <phil@raspberrypi.com>
      Tested-by: NPhil Elwell <phil@raspberrypi.com>
      Reviewed-by: NArd Biesheuvel <ardb@kernel.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      60e5b288
    • J
      random: account for arch randomness in bits · 77fc95f8
      Jason A. Donenfeld 提交于
      Rather than accounting in bytes and multiplying (shifting), we can just
      account in bits and avoid the shift. The main motivation for this is
      there are other patches in flux that expand this code a bit, and
      avoiding the duplication of "* 8" everywhere makes things a bit clearer.
      
      Cc: stable@vger.kernel.org
      Fixes: 12e45a2a ("random: credit architectural init the exact amount")
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      77fc95f8
    • J
      random: mark bootloader randomness code as __init · 39e0f991
      Jason A. Donenfeld 提交于
      add_bootloader_randomness() and the variables it touches are only used
      during __init and not after, so mark these as __init. At the same time,
      unexport this, since it's only called by other __init code that's
      built-in.
      
      Cc: stable@vger.kernel.org
      Fixes: 428826f5 ("fdt: add support for rng-seed")
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      39e0f991
    • J
      random: avoid checking crng_ready() twice in random_init() · 9b29b6b2
      Jason A. Donenfeld 提交于
      The current flow expands to:
      
          if (crng_ready())
             ...
          else if (...)
              if (!crng_ready())
                  ...
      
      The second crng_ready() call is redundant, but can't so easily be
      optimized out by the compiler.
      
      This commit simplifies that to:
      
          if (crng_ready()
              ...
          else if (...)
              ...
      
      Fixes: 560181c2 ("random: move initialization functions out of hot pages")
      Cc: stable@vger.kernel.org
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      9b29b6b2
    • E
      nfp: flower: restructure flow-key for gre+vlan combination · a0b84334
      Etienne van der Linde 提交于
      Swap around the GRE and VLAN parts in the flow-key offloaded by
      the driver to fit in with other tunnel types and the firmware.
      Without this change used cases with GRE+VLAN on the outer header
      does not get offloaded as the flow-key mismatches what the
      firmware expect.
      
      Fixes: 0d630f58 ("nfp: flower: add support to offload QinQ match")
      Fixes: 5a2b9304 ("nfp: flower-ct: compile match sections of flow_payload")
      Signed-off-by: NEtienne van der Linde <etienne.vanderlinde@corigine.com>
      Signed-off-by: NLouis Peens <louis.peens@corigine.com>
      Signed-off-by: NYinjun Zhang <yinjun.zhang@corigine.com>
      Signed-off-by: NSimon Horman <simon.horman@corigine.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      a0b84334
    • F
      nfp: avoid unnecessary check warnings in nfp_app_get_vf_config · 03d5005f
      Fei Qin 提交于
      nfp_net_sriov_check is added in nfp_app_get_vf_config which intends
      to ensure ivi->vlan_proto and ivi->max_tx_rate/min_tx_rate can be
      read from VF config table only when firmware supports corresponding
      capability.
      
      However, "nfp_app_get_vf_config" can be called by commands like
      "ip a", "ip link set $DEV up" and "ip link set $DEV vf $NUM vlan
      $param" (with VF). When using commands above, many warnings
      "ndo_set_vf_<cap_x> not supported" would appear if firmware doesn't
      support VF rate limit and 802.1ad VLAN assingment. If more VFs are
      created, things could get worse.
      
      Thus, this patch add an extra bool parameter for nfp_net_sriov_check
      to enable/disable the cap check warning report. Unnecessary warnings
      in nfp_app_get_vf_config can be avoided. Valid warnings in kinds of
      vf setting function can be reserved.
      
      Fixes: e0d0e1fd ("nfp: VF rate limit support")
      Fixes: 59359597 ("nfp: support 802.1ad VLAN assingment to VF")
      Signed-off-by: NFei Qin <fei.qin@corigine.com>
      Signed-off-by: NYinjun Zhang <yinjun.zhang@corigine.com>
      Signed-off-by: NLouis Peens <louis.peens@corigine.com>
      Signed-off-by: NSimon Horman <simon.horman@corigine.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      03d5005f
    • Y
      MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error. · 41e45640
      Yupeng Li 提交于
        set cpu_hwmon as a module build with loongson_sysconf, loongson_chiptemp
        undefined error,fix cpu_hwmon compile options to be bool.Some kernel
        compilation error information is as follows:
      
        Checking missing-syscalls for N32
        CALL    scripts/checksyscalls.sh
        Checking missing-syscalls for O32
        CALL    scripts/checksyscalls.sh
        CALL    scripts/checksyscalls.sh
        CHK     include/generated/compile.h
        CC [M]  drivers/platform/mips/cpu_hwmon.o
        Building modules, stage 2.
        MODPOST 200 modules
      ERROR: "loongson_sysconf" [drivers/platform/mips/cpu_hwmon.ko] undefined!
      ERROR: "loongson_chiptemp" [drivers/platform/mips/cpu_hwmon.ko] undefined!
      make[1]: *** [scripts/Makefile.modpost:92:__modpost] 错误 1
      make: *** [Makefile:1261:modules] 错误 2
      Signed-off-by: NYupeng Li <liyupeng@zbhlos.com>
      Reviewed-by: NGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: NHuacai Chen <chenhuacai@kernel.org>
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      41e45640
    • L
      mellanox: mlx5: avoid uninitialized variable warning with gcc-12 · 842c3b3d
      Linus Torvalds 提交于
      gcc-12 started warning about 'tracker' being used uninitialized:
      
        drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c: In function ‘mlx5_do_bond’:
        drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c:786:28: warning: ‘tracker’ is used uninitialized [-Wuninitialized]
          786 |         struct lag_tracker tracker;
              |                            ^~~~~~~
      
      which seems to be because it doesn't track how the use (and
      initialization) is bound by the 'do_bond' flag.
      
      But admittedly that 'do_bond' usage is fairly complicated, and involves
      passing it around as an argument to helper functions, so it's somewhat
      understandable that gcc doesn't see how that all works.
      
      This function could be rewritten to make the use of that tracker
      variable more obviously safe, but for now I'm just adding the forced
      initialization of it.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      842c3b3d
    • L
      drm: imx: fix compiler warning with gcc-12 · 7aefd8b5
      Linus Torvalds 提交于
      Gcc-12 correctly warned about this code using a non-NULL pointer as a
      truth value:
      
        drivers/gpu/drm/imx/ipuv3-crtc.c: In function ‘ipu_crtc_disable_planes’:
        drivers/gpu/drm/imx/ipuv3-crtc.c:72:21: error: the comparison will always evaluate as ‘true’ for the address of ‘plane’ will never be NULL [-Werror=address]
           72 |                 if (&ipu_crtc->plane[1] && plane == &ipu_crtc->plane[1]->base)
              |                     ^
      
      due to the extraneous '&' address-of operator.
      
      Philipp Zabel points out that The mistake had no adverse effect since
      the following condition doesn't actually dereference the NULL pointer,
      but the intent of the code was obviously to check for it, not to take
      the address of the member.
      
      Fixes: eb8c8880 ("drm/imx: add deferred plane disabling")
      Acked-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7aefd8b5
  5. 09 6月, 2022 16 次提交
    • T
      drm/ast: Support multiple outputs · 477277c7
      Thomas Zimmermann 提交于
      Systems with AST graphics can have multiple output; typically VGA
      plus some other port. Record detected output chips in a bitmask and
      initialize each output on its own.
      
      Assume a VGA output by default and use SIL164 and DP501 if available.
      For ASTDP assume that it can run in parallel with VGA.
      
      Tested on AST2100.
      
      v3:
      	* define a macro for each BIT(ast_tx_chip) (Patrik)
      v2:
      	* make VGA/SIL164/DP501 mutually exclusive
      Signed-off-by: NThomas Zimmermann <tzimmermann@suse.de>
      Reviewed-by: NPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Fixes: a59b0264 ("drm/ast: Initialize encoder and connector for VGA in helper function")
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: Javier Martinez Canillas <javierm@redhat.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: dri-devel@lists.freedesktop.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20220607092008.22123-2-tzimmermann@suse.de
      (cherry picked from commit 7f35680a)
      Signed-off-by: NThomas Zimmermann <tzimmermann@suse.de>
      477277c7
    • J
      vdpa: make get_vq_group and set_group_asid optional · 00d1f546
      Jason Wang 提交于
      This patch makes get_vq_group and set_group_asid optional. This is
      needed to unbreak the vDPA parent that doesn't support multiple
      address spaces.
      
      Cc: Gautam Dawar <gautam.dawar@xilinx.com>
      Fixes: aaca8373 ("vhost-vdpa: support ASID based IOTLB API")
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Message-Id: <20220609041901.2029-1-jasowang@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      00d1f546
    • B
      virtio: Fix all occurences of the "the the" typo · acb0055e
      Bo Liu 提交于
      There are double "the" in message in file virtio_mmio.c
      and virtio_pci_modern_dev.c, fix it.
      Signed-off-by: NBo Liu <liubo03@inspur.com>
      Message-Id: <20220609031106.2161-1-liubo03@inspur.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      acb0055e
    • J
      net: amd-xgbe: fix clang -Wformat warning · 647df0d4
      Justin Stitt 提交于
      see warning:
      | drivers/net/ethernet/amd/xgbe/xgbe-drv.c:2787:43: warning: format specifies
      | type 'unsigned short' but the argument has type 'int' [-Wformat]
      |        netdev_dbg(netdev, "Protocol: %#06hx\n", ntohs(eth->h_proto));
      |                                      ~~~~~~     ^~~~~~~~~~~~~~~~~~~
      
      Variadic functions (printf-like) undergo default argument promotion.
      Documentation/core-api/printk-formats.rst specifically recommends
      using the promoted-to-type's format flag.
      
      Also, as per C11 6.3.1.1:
      (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf)
      `If an int can represent all values of the original type ..., the
      value is converted to an int; otherwise, it is converted to an
      unsigned int. These are called the integer promotions.`
      
      Since the argument is a u16 it will get promoted to an int and thus it is
      most accurate to use the %x format specifier here. It should be noted that the
      `#06` formatting sugar does not alter the promotion rules.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/378Signed-off-by: NJustin Stitt <jstitt007@gmail.com>
      Reviewed-by: NNick Desaulniers <ndesaulniers@google.com>
      Link: https://lore.kernel.org/r/20220607191119.20686-1-jstitt007@gmail.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
      647df0d4
    • A
      net: dsa: realtek: rtl8365mb: fix GMII caps for ports with internal PHY · 487994ff
      Alvin Šipraga 提交于
      Since commit a18e6521 ("net: phylink: handle NA interface mode in
      phylink_fwnode_phy_connect()"), phylib defaults to GMII when no phy-mode
      or phy-connection-type property is specified in a DSA port node of the
      device tree. The same commit caused a regression in rtl8365mb whereby
      phylink would fail to connect, because the driver did not advertise
      support for GMII for ports with internal PHY.
      
      It should be noted that the aforementioned regression is not because the
      blamed commit was incorrect: on the contrary, the blamed commit is
      correcting the previous behaviour whereby unspecified phy-mode would
      cause the internal interface mode to be PHY_INTERFACE_MODE_NA. The
      rtl8365mb driver only worked by accident before because it _did_
      advertise support for PHY_INTERFACE_MODE_NA, despite NA being reserved
      for internal use by phylink. With one mistake fixed, the other was
      exposed.
      
      Commit a5dba0f2 ("net: dsa: rtl8365mb: add GMII as user port mode")
      then introduced implicit support for GMII mode on ports with internal
      PHY to allow a PHY connection for device trees where the phy-mode is not
      explicitly set to "internal". At this point everything was working OK
      again.
      
      Subsequently, commit 6ff60646 ("net: dsa: realtek: convert to
      phylink_generic_validate()") broke this behaviour again by discarding
      the usage of rtl8365mb_phy_mode_supported() - where this GMII support
      was indicated - while switching to the new .phylink_get_caps API.
      
      With the new API, rtl8365mb_phy_mode_supported() is no longer needed.
      Remove it altogether and add back the GMII capability - this time to
      rtl8365mb_phylink_get_caps() - so that the above default behaviour works
      for ports with internal PHY again.
      
      Fixes: 6ff60646 ("net: dsa: realtek: convert to phylink_generic_validate()")
      Signed-off-by: NAlvin Šipraga <alsi@bang-olufsen.dk>
      Reviewed-by: NRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Link: https://lore.kernel.org/r/20220607184624.417641-1-alvin@pqrs.dkSigned-off-by: NJakub Kicinski <kuba@kernel.org>
      487994ff
    • R
      net: dsa: mv88e6xxx: correctly report serdes link failure · b4d78731
      Russell King (Oracle) 提交于
      Phylink wants to know if the link has dropped since the last time state
      was retrieved, and the BMSR gives us that. Read the BMSR and use it when
      deciding the link state. Fill in the an_complete member as well for the
      emulated PHY state.
      Signed-off-by: NRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      b4d78731
    • R
      net: dsa: mv88e6xxx: fix BMSR error to be consistent with others · 2b4bb9cd
      Russell King (Oracle) 提交于
      Other errors accessing the registers in mv88e6352_serdes_pcs_get_state()
      print "PHY " before the register name, except for the BMSR. Make this
      consistent with the other error messages.
      Signed-off-by: NRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      2b4bb9cd
    • M
      net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete · 47e96930
      Marek Behún 提交于
      Commit ede359d8 ("net: dsa: mv88e6xxx: Link in pcs_get_state() if AN
      is bypassed") added the ability to link if AN was bypassed, and added
      filling of state->an_complete field, but set it to true if AN was
      enabled in BMCR, not when AN was reported complete in BMSR.
      
      This was done because for some reason, when I wanted to use BMSR value
      to infer an_complete, I was looking at BMSR_ANEGCAPABLE bit (which was
      always 1), instead of BMSR_ANEGCOMPLETE bit.
      
      Use BMSR_ANEGCOMPLETE for filling state->an_complete.
      
      Fixes: ede359d8 ("net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed")
      Signed-off-by: NMarek Behún <kabel@kernel.org>
      Signed-off-by: NRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      47e96930
    • M
      net: altera: Fix refcount leak in altera_tse_mdio_create · 11ec18b1
      Miaoqian Lin 提交于
      Every iteration of for_each_child_of_node() decrements
      the reference count of the previous node.
      When break from a for_each_child_of_node() loop,
      we need to explicitly call of_node_put() on the child node when
      not need anymore.
      Add missing of_node_put() to avoid refcount leak.
      
      Fixes: bbd2190c ("Altera TSE: Add main and header file for Altera Ethernet Driver")
      Signed-off-by: NMiaoqian Lin <linmq006@gmail.com>
      Link: https://lore.kernel.org/r/20220607041144.7553-1-linmq006@gmail.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
      11ec18b1
    • C
      net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag · 2f2c0d29
      Chen Lin 提交于
      When rx_flag == MTK_RX_FLAGS_HWLRO,
      rx_data_len = MTK_MAX_LRO_RX_LENGTH(4096 * 3) > PAGE_SIZE.
      netdev_alloc_frag is for alloction of page fragment only.
      Reference to other drivers and Documentation/vm/page_frags.rst
      
      Branch to use __get_free_pages when ring->frag_size > PAGE_SIZE.
      Signed-off-by: NChen Lin <chen45464546@163.com>
      Link: https://lore.kernel.org/r/1654692413-2598-1-git-send-email-chen45464546@163.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
      2f2c0d29
    • S
      ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files · 72aad489
      Sergey Shtylyov 提交于
      The {dma|pio}_mode sysfs files are incorrectly documented as having a
      list of the supported DMA/PIO transfer modes, while the corresponding
      fields of the *struct* ata_device hold the transfer mode IDs, not masks.
      
      To match these docs, the {dma|pio}_mode (and even xfer_mode!) sysfs
      files are handled by the ata_bitfield_name_match() macro which leads to
      reading such kind of nonsense from them:
      
      $ cat /sys/class/ata_device/dev3.0/pio_mode
      XFER_UDMA_7, XFER_UDMA_6, XFER_UDMA_5, XFER_UDMA_4, XFER_MW_DMA_4,
      XFER_PIO_6, XFER_PIO_5, XFER_PIO_4, XFER_PIO_3, XFER_PIO_2, XFER_PIO_1,
      XFER_PIO_0
      
      Using the correct ata_bitfield_name_search() macro fixes that:
      
      $ cat /sys/class/ata_device/dev3.0/pio_mode
      XFER_PIO_4
      
      While fixing the file documentation, somewhat reword the {dma|pio}_mode
      file doc and add a note about being mostly useful for PATA devices to
      the xfer_mode file doc...
      
      Fixes: d9027470 ("[libata] Add ATA transport class")
      Signed-off-by: NSergey Shtylyov <s.shtylyov@omp.ru>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDamien Le Moal <damien.lemoal@opensource.wdc.com>
      72aad489
    • Y
      drm/amdgpu/mes: only invalid/prime icache when finish loading both pipe MES FWs. · 431d0712
      Yifan Zhang 提交于
      invalid/prime icahce operation takes effect both pipes cuconrrently,
      therefore CP_MES_IC_BASE_LO/HI and CP_MES_MDBASE_LO/HI both have to be
      set before prime icache. Otherwise MES hardware gets garbage data in
      above regsters and causes page fault
      
      [  470.873200] amdgpu 0000:33:00.0: amdgpu: [gfxhub] page fault (src_id:0 ring:217 vmid:0 pasid:0, for process  pid 0 thread  pid 0)
      [  470.873222] amdgpu 0000:33:00.0: amdgpu:   in page starting at address 0x000092cb89b00000 from client 10
      [  470.873234] amdgpu 0000:33:00.0: amdgpu: GCVM_L2_PROTECTION_FAULT_STATUS:0x00000BB3
      [  470.873242] amdgpu 0000:33:00.0: amdgpu:      Faulty UTCL2 client ID: CPC (0x5)
      [  470.873247] amdgpu 0000:33:00.0: amdgpu:      MORE_FAULTS: 0x1
      [  470.873251] amdgpu 0000:33:00.0: amdgpu:      WALKER_ERROR: 0x1
      [  470.873256] amdgpu 0000:33:00.0: amdgpu:      PERMISSION_FAULTS: 0xb
      [  470.873260] amdgpu 0000:33:00.0: amdgpu:      MAPPING_ERROR: 0x1
      [  470.873264] amdgpu 0000:33:00.0: amdgpu:      RW: 0x0
      Signed-off-by: NYifan Zhang <yifan1.zhang@amd.com>
      Acked-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NTim Huang <Tim.Huang@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      431d0712
    • M
      net/mlx5: fs, fail conflicting actions · 8fa5e7b2
      Mark Bloch 提交于
      When combining two steering rules into one check
      not only do they share the same actions but those
      actions are also the same. This resolves an issue where
      when creating two different rules with the same match
      the actions are overwritten and one of the rules is deleted
      a FW syndrome can be seen in dmesg.
      
      mlx5_core 0000:03:00.0: mlx5_cmd_check:819:(pid 2105): DEALLOC_MODIFY_HEADER_CONTEXT(0x941) op_mod(0x0) failed, status bad resource state(0x9), syndrome (0x1ab444)
      
      Fixes: 0d235c3f ("net/mlx5: Add hash table to search FTEs in a flow-group")
      Signed-off-by: NMark Bloch <mbloch@nvidia.com>
      Reviewed-by: NMaor Gottlieb <maorg@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      8fa5e7b2
    • F
      net/mlx5: Rearm the FW tracer after each tracer event · 8bf94e64
      Feras Daoud 提交于
      The current design does not arm the tracer if traces are available before
      the tracer string database is fully loaded, leading to an unfunctional tracer.
      This fix will rearm the tracer every time the FW triggers tracer event
      regardless of the tracer strings database status.
      
      Fixes: c71ad41c ("net/mlx5: FW tracer, events handling")
      Signed-off-by: NFeras Daoud <ferasda@nvidia.com>
      Signed-off-by: NRoy Novich <royno@nvidia.com>
      Reviewed-by: NMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      8bf94e64
    • M
      net/mlx5: E-Switch, pair only capable devices · 3008e6a0
      Mark Bloch 提交于
      OFFLOADS paring using devcom is possible only on devices
      that support LAG. Filter based on lag capabilities.
      
      This fixes an issue where mlx5_get_next_phys_dev() was
      called without holding the interface lock.
      
      This issue was found when commit
      bc4c2f2e ("net/mlx5: Lag, filter non compatible devices")
      added an assert that verifies the interface lock is held.
      
      WARNING: CPU: 9 PID: 1706 at drivers/net/ethernet/mellanox/mlx5/core/dev.c:642 mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
      Modules linked in: mlx5_vdpa vringh vhost_iotlb vdpa mlx5_ib mlx5_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi rdma_cm iw_cm ib_umad ib_ipoib ib_cm ib_uverbs ib_core overlay fuse [last unloaded: mlx5_core]
      CPU: 9 PID: 1706 Comm: devlink Not tainted 5.18.0-rc7+ #11
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
      Code: 02 00 75 48 48 8b 85 80 04 00 00 5d c3 31 c0 5d c3 be ff ff ff ff 48 c7 c7 08 41 5b a0 e8 36 87 28 e3 85 c0 0f 85 6f ff ff ff <0f> 0b e9 68 ff ff ff 48 c7 c7 0c 91 cc 84 e8 cb 36 6f e1 e9 4d ff
      RSP: 0018:ffff88811bf47458 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff88811b398000 RCX: 0000000000000001
      RDX: 0000000080000000 RSI: ffffffffa05b4108 RDI: ffff88812daaaa78
      RBP: ffff88812d050380 R08: 0000000000000001 R09: ffff88811d6b3437
      R10: 0000000000000001 R11: 00000000fddd3581 R12: ffff88815238c000
      R13: ffff88812d050380 R14: ffff8881018aa7e0 R15: ffff88811d6b3428
      FS:  00007fc82e18ae80(0000) GS:ffff88842e080000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f9630d1b421 CR3: 0000000149802004 CR4: 0000000000370ea0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       mlx5_esw_offloads_devcom_event+0x99/0x3b0 [mlx5_core]
       mlx5_devcom_send_event+0x167/0x1d0 [mlx5_core]
       esw_offloads_enable+0x1153/0x1500 [mlx5_core]
       ? mlx5_esw_offloads_controller_valid+0x170/0x170 [mlx5_core]
       ? wait_for_completion_io_timeout+0x20/0x20
       ? mlx5_rescan_drivers_locked+0x318/0x810 [mlx5_core]
       mlx5_eswitch_enable_locked+0x586/0xc50 [mlx5_core]
       ? mlx5_eswitch_disable_pf_vf_vports+0x1d0/0x1d0 [mlx5_core]
       ? mlx5_esw_try_lock+0x1b/0xb0 [mlx5_core]
       ? mlx5_eswitch_enable+0x270/0x270 [mlx5_core]
       ? __debugfs_create_file+0x260/0x3e0
       mlx5_devlink_eswitch_mode_set+0x27e/0x870 [mlx5_core]
       ? mutex_lock_io_nested+0x12c0/0x12c0
       ? esw_offloads_disable+0x250/0x250 [mlx5_core]
       ? devlink_nl_cmd_trap_get_dumpit+0x470/0x470
       ? rcu_read_lock_sched_held+0x3f/0x70
       devlink_nl_cmd_eswitch_set_doit+0x217/0x620
      
      Fixes: dd3fddb8 ("net/mlx5: E-Switch, handle devcom events only for ports on the same device")
      Signed-off-by: NMark Bloch <mbloch@nvidia.com>
      Reviewed-by: NRoi Dayan <roid@nvidia.com>
      Reviewed-by: NMoshe Shemesh <moshe@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      3008e6a0
    • P
      net/mlx5e: CT: Fix cleanup of CT before cleanup of TC ct rules · 15ef9efa
      Paul Blakey 提交于
      CT cleanup assumes that all tc rules were deleted first, and so
      is free to delete the CT shared resources (e.g the dr_action
      fwd_action which is shared for all tuples). But currently for
      uplink, this is happens in reverse, causing the below trace.
      
      CT cleanup is called from:
      mlx5e_cleanup_rep_tx()->mlx5e_cleanup_uplink_rep_tx()->
      mlx5e_rep_tc_cleanup()->mlx5e_tc_esw_cleanup()->
      mlx5_tc_ct_clean()
      
      Only afterwards, tc cleanup is called from:
      mlx5e_cleanup_rep_tx()->mlx5e_tc_ht_cleanup()
      which would have deleted all the tc ct rules, and so delete
      all the offloaded tuples.
      
      Fix this reversing the order of init and on cleanup, which
      will result in tc cleanup then ct cleanup.
      
      [ 9443.593347] WARNING: CPU: 2 PID: 206774 at drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c:1882 mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593349] Modules linked in: act_ct nf_flow_table rdma_ucm(O) rdma_cm(O) iw_cm(O) ib_ipoib(O) ib_cm(O) ib_umad(O) mlx5_core(O-) mlxfw(O) mlxdevm(O) auxiliary(O) ib_uverbs(O) psample ib_core(O) mlx_compat(O) ip_gre gre ip_tunnel act_vlan bonding geneve esp6_offload esp6 esp4_offload esp4 act_tunnel_key vxlan ip6_udp_tunnel udp_tunnel act_mirred act_skbedit act_gact cls_flower sch_ingress nfnetlink_cttimeout nfnetlink xfrm_user xfrm_algo 8021q garp stp ipmi_devintf mrp ipmi_msghandler llc openvswitch nsh nf_conncount nf_nat mst_pciconf(O) dm_multipath sbsa_gwdt uio_pdrv_genirq uio mlxbf_pmc mlxbf_pka mlx_trio mlx_bootctl(O) bluefield_edac sch_fq_codel ip_tables ipv6 crc_ccitt btrfs zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor xor_neon raid6_pq raid1 raid0 crct10dif_ce i2c_mlxbf gpio_mlxbf2 mlxbf_gige aes_neon_bs aes_neon_blk [last unloaded: mlx5_ib]
      [ 9443.593419] CPU: 2 PID: 206774 Comm: modprobe Tainted: G           O      5.4.0-1023.24.gc14613d-bluefield #1
      [ 9443.593422] Hardware name: https://www.mellanox.com BlueField SoC/BlueField SoC, BIOS BlueField:143ebaf Jan 11 2022
      [ 9443.593424] pstate: 20000005 (nzCv daif -PAN -UAO)
      [ 9443.593489] pc : mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593545] lr : mlx5_ct_fs_smfs_destroy+0x24/0x30 [mlx5_core]
      [ 9443.593546] sp : ffff8000135dbab0
      [ 9443.593548] x29: ffff8000135dbab0 x28: ffff0003a6ab8e80
      [ 9443.593550] x27: 0000000000000000 x26: ffff0003e07d7000
      [ 9443.593552] x25: ffff800009609de0 x24: ffff000397fb2120
      [ 9443.593554] x23: ffff0003975c0000 x22: 0000000000000000
      [ 9443.593556] x21: ffff0003975f08c0 x20: ffff800009609de0
      [ 9443.593558] x19: ffff0003c8a13380 x18: 0000000000000014
      [ 9443.593560] x17: 0000000067f5f125 x16: 000000006529c620
      [ 9443.593561] x15: 000000000000000b x14: 0000000000000000
      [ 9443.593563] x13: 0000000000000002 x12: 0000000000000001
      [ 9443.593565] x11: ffff800011108868 x10: 0000000000000000
      [ 9443.593567] x9 : 0000000000000000 x8 : ffff8000117fb270
      [ 9443.593569] x7 : ffff0003ebc01288 x6 : 0000000000000000
      [ 9443.593571] x5 : ffff800009591ab8 x4 : fffffe000f6d9a20
      [ 9443.593572] x3 : 0000000080040001 x2 : fffffe000f6d9a20
      [ 9443.593574] x1 : ffff8000095901d8 x0 : 0000000000000025
      [ 9443.593577] Call trace:
      [ 9443.593634]  mlx5dr_action_destroy+0x188/0x1a0 [mlx5_core]
      [ 9443.593688]  mlx5_ct_fs_smfs_destroy+0x24/0x30 [mlx5_core]
      [ 9443.593743]  mlx5_tc_ct_clean+0x34/0xa8 [mlx5_core]
      [ 9443.593797]  mlx5e_tc_esw_cleanup+0x58/0x88 [mlx5_core]
      [ 9443.593851]  mlx5e_rep_tc_cleanup+0x24/0x30 [mlx5_core]
      [ 9443.593905]  mlx5e_cleanup_rep_tx+0x6c/0x78 [mlx5_core]
      [ 9443.593959]  mlx5e_detach_netdev+0x74/0x98 [mlx5_core]
      [ 9443.594013]  mlx5e_netdev_change_profile+0x70/0x180 [mlx5_core]
      [ 9443.594067]  mlx5e_netdev_attach_nic_profile+0x34/0x40 [mlx5_core]
      [ 9443.594122]  mlx5e_vport_rep_unload+0x15c/0x1a8 [mlx5_core]
      [ 9443.594177]  mlx5_eswitch_unregister_vport_reps+0x228/0x298 [mlx5_core]
      [ 9443.594231]  mlx5e_rep_remove+0x2c/0x38 [mlx5_core]
      [ 9443.594236]  auxiliary_bus_remove+0x30/0x50 [auxiliary]
      [ 9443.594246]  device_release_driver_internal+0x108/0x1d0
      [ 9443.594248]  driver_detach+0x5c/0xe8
      [ 9443.594250]  bus_remove_driver+0x64/0xd8
      [ 9443.594253]  driver_unregister+0x38/0x60
      [ 9443.594255]  auxiliary_driver_unregister+0x24/0x38 [auxiliary]
      [ 9443.594311]  mlx5e_rep_cleanup+0x20/0x38 [mlx5_core]
      [ 9443.594365]  mlx5e_cleanup+0x18/0x30 [mlx5_core]
      [ 9443.594419]  cleanup+0xc/0x20cc [mlx5_core]
      [ 9443.594424]  __arm64_sys_delete_module+0x154/0x2b0
      [ 9443.594429]  el0_svc_common.constprop.0+0xf4/0x200
      [ 9443.594432]  el0_svc_handler+0x38/0xa8
      [ 9443.594435]  el0_svc+0x10/0x26c
      
      Fixes: d1a3138f ("net/mlx5e: TC, Move flow hashtable to be per rep")
      Signed-off-by: NPaul Blakey <paulb@nvidia.com>
      Reviewed-by: NOz Shlomo <ozsh@nvidia.com>
      Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
      15ef9efa