1. 23 Nov, 2021 4 commits
    • Jeremy Kerr's avatar
      mctp: Add MCTP-over-serial transport binding · a0c2ccd9
      Jeremy Kerr authored
      This change adds a MCTP Serial transport binding, as defined by DMTF
      specificiation DSP0253 - "MCTP Serial Transport Binding". This is
      implemented as a new serial line discipline, and can be attached to
      arbitrary tty devices.
      
      From the Kconfig description:
      
        This driver provides an MCTP-over-serial interface, through a
        serial line-discipline, as defined by DMTF specification "DSP0253 -
        MCTP Serial Transport Binding". By attaching the ldisc to a serial
        device, we get a new net device to transport MCTP packets.
      
        This allows communication with external MCTP endpoints which use
        serial as their transport. It can also be used as an easy way to
        provide MCTP connectivity between virtual machines, by forwarding
        data between simple virtual serial devices.
      
        Say y here if you need to connect to MCTP endpoints over serial. To
        compile as a module, use m; the module will be called mctp-serial.
      
      Once the N_MCTP line discipline is set [using ioctl(TCIOSETD)], we get a
      new netdev suitable for MCTP communication.
      
      The 'mctp' utility[1] provides a simple wrapper for this ioctl, using
      'link serial <device>':
      
        # mctp link serial /dev/ttyS0 &
        # mctp link
        dev lo index 1 address 0x00:00:00:00:00:00 net 1 mtu 65536 up
        dev mctpserial0 index 5 address 0x(no-addr) net 1 mtu 68 down
      
      [1]: https://github.com/CodeConstruct/mctpSigned-off-by: default avatarJeremy Kerr <jk@codeconstruct.com.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0c2ccd9
    • David S. Miller's avatar
      Merge branch 'mlxsw-updates' · 25e2735d
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Various updates
      
      Patch #1 removes deadcode reported by Coverity.
      
      Patch #2 adds a shutdown method in the PCI driver to ensure the kexeced
      kernel starts working with a device that is in a sane state.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25e2735d
    • Danielle Ratson's avatar
      mlxsw: pci: Add shutdown method in PCI driver · c1020d3c
      Danielle Ratson authored
      On an arm64 platform with the Spectrum ASIC, after loading and executing
      a new kernel via kexec, the following trace [1] is observed. This seems
      to be caused by the fact that the device is not properly shutdown before
      executing the new kernel.
      
      Fix this by implementing a shutdown method which mirrors the remove
      method, as recommended by the kexec maintainer [2][3].
      
      [1]
      BUG: Bad page state in process devlink pfn:22f73d
      page:fffffe00089dcf40 refcount:-1 mapcount:0 mapping:0000000000000000 index:0x0
      flags: 0x2ffff00000000000()
      raw: 2ffff00000000000 0000000000000000 ffffffff089d0201 0000000000000000
      raw: 0000000000000000 0000000000000000 ffffffffffffffff 0000000000000000
      page dumped because: nonzero _refcount
      Modules linked in:
      CPU: 1 PID: 16346 Comm: devlink Tainted: G B 5.8.0-rc6-custom-273020-gac6b365b1bf5 #44
      Hardware name: Marvell Armada 7040 TX4810M (DT)
      Call trace:
       dump_backtrace+0x0/0x1d0
       show_stack+0x1c/0x28
       dump_stack+0xbc/0x118
       bad_page+0xcc/0xf8
       check_free_page_bad+0x80/0x88
       __free_pages_ok+0x3f8/0x418
       __free_pages+0x38/0x60
       kmem_freepages+0x200/0x2a8
       slab_destroy+0x28/0x68
       slabs_destroy+0x60/0x90
       ___cache_free+0x1b4/0x358
       kfree+0xc0/0x1d0
       skb_free_head+0x2c/0x38
       skb_release_data+0x110/0x1a0
       skb_release_all+0x2c/0x38
       consume_skb+0x38/0x130
       __dev_kfree_skb_any+0x44/0x50
       mlxsw_pci_rdq_fini+0x8c/0xb0
       mlxsw_pci_queue_fini.isra.0+0x28/0x58
       mlxsw_pci_queue_group_fini+0x58/0x88
       mlxsw_pci_aqs_fini+0x2c/0x60
       mlxsw_pci_fini+0x34/0x50
       mlxsw_core_bus_device_unregister+0x104/0x1d0
       mlxsw_devlink_core_bus_device_reload_down+0x2c/0x48
       devlink_reload+0x44/0x158
       devlink_nl_cmd_reload+0x270/0x290
       genl_rcv_msg+0x188/0x2f0
       netlink_rcv_skb+0x5c/0x118
       genl_rcv+0x3c/0x50
       netlink_unicast+0x1bc/0x278
       netlink_sendmsg+0x194/0x390
       __sys_sendto+0xe0/0x158
       __arm64_sys_sendto+0x2c/0x38
       el0_svc_common.constprop.0+0x70/0x168
       do_el0_svc+0x28/0x88
       el0_sync_handler+0x88/0x190
       el0_sync+0x140/0x180
      
      [2]
      https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1195432.html
      
      [3]
      https://patchwork.kernel.org/project/linux-scsi/patch/20170212214920.28866-1-anton@ozlabs.org/#20116693
      
      Cc: Eric Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1020d3c
    • Danielle Ratson's avatar
      mlxsw: spectrum_router: Remove deadcode in mlxsw_sp_rif_mac_profile_find · ed1607e2
      Danielle Ratson authored
      The function idr_for_each_entry() already checks that the next entry in
      the IDR is not NULL.
      
      Therefore, checking that again in every iteration leads to deadcode.
      
      Remove the unnecessary check in order to avoid that.
      
      Addresses-Coverity: ("Logically dead code")
      Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ed1607e2
  2. 22 Nov, 2021 36 commits