1. 18 May, 2019 4 commits
    • David S. Miller's avatar
      Merge branch 'mlxsw-Two-port-module-fixes' · ee8a2b95
      David S. Miller authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Two port module fixes
      
      Patch #1 fixes driver initialization failure on old ASICs due to
      unsupported register access. This is fixed by first testing if the
      register is supported.
      
      Patch #2 fixes reading of certain modules' EEPROM. The problem and
      solution are explained in detail in the commit message.
      
      Please consider both patches for stable.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ee8a2b95
    • Vadim Pasternak's avatar
      mlxsw: core: Prevent reading unsupported slave address from SFP EEPROM · f1436c80
      Vadim Pasternak authored
      Prevent reading unsupported slave address from SFP EEPROM by testing
      Diagnostic Monitoring Type byte in EEPROM. Read only page zero of
      EEPROM, in case this byte is zero.
      
      If some SFP transceiver does not support Digital Optical Monitoring
      (DOM), reading SFP EEPROM slave address 0x51 could return an error.
      Availability of DOM support is verified by reading from zero page
      Diagnostic Monitoring Type byte describing how diagnostic monitoring is
      implemented by transceiver. If bit 6 of this byte is set, it indicates
      that digital diagnostic monitoring has been implemented. Otherwise it is
      not and transceiver could fail to reply to transaction for slave address
      0x51 [1010001X (A2h)], which is used to access measurements page.
      
      Such issue has been observed when reading cable MCP2M00-xxxx,
      MCP7F00-xxxx, and few others.
      
      Fixes: 2ea10903 ("mlxsw: spectrum: Add support for access cable info via ethtool")
      Fixes: 4400081b ("mlxsw: spectrum: Fix EEPROM access in case of SFP/SFP+")
      Signed-off-by: default avatarVadim Pasternak <vadimp@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1436c80
    • Vadim Pasternak's avatar
      mlxsw: core: Prevent QSFP module initialization for old hardware · c52ecff7
      Vadim Pasternak authored
      Old Mellanox silicons, like switchx-2, switch-ib do not support reading
      QSFP modules temperature through MTMP register. Attempt to access this
      register on systems equipped with the this kind of silicon will cause
      initialization flow failure.
      Test for hardware resource capability is added in order to distinct
      between old and new silicon - old silicons do not have such capability.
      
      Fixes: 6a79507c ("mlxsw: core: Extend thermal module with per QSFP module thermal zones")
      Fixes: 5c42eaa0 ("mlxsw: core: Extend hwmon interface with QSFP module temperature attributes")
      Reported-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarVadim Pasternak <vadimp@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c52ecff7
    • Jorge E. Moreira's avatar
      vsock/virtio: Initialize core virtio vsock before registering the driver · ba95e5df
      Jorge E. Moreira authored
      Avoid a race in which static variables in net/vmw_vsock/af_vsock.c are
      accessed (while handling interrupts) before they are initialized.
      
      [    4.201410] BUG: unable to handle kernel paging request at ffffffffffffffe8
      [    4.207829] IP: vsock_addr_equals_addr+0x3/0x20
      [    4.211379] PGD 28210067 P4D 28210067 PUD 28212067 PMD 0
      [    4.211379] Oops: 0000 [#1] PREEMPT SMP PTI
      [    4.211379] Modules linked in:
      [    4.211379] CPU: 1 PID: 30 Comm: kworker/1:1 Not tainted 4.14.106-419297-gd7e28cc1f241 #1
      [    4.211379] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
      [    4.211379] Workqueue: virtio_vsock virtio_transport_rx_work
      [    4.211379] task: ffffa3273d175280 task.stack: ffffaea1800e8000
      [    4.211379] RIP: 0010:vsock_addr_equals_addr+0x3/0x20
      [    4.211379] RSP: 0000:ffffaea1800ebd28 EFLAGS: 00010286
      [    4.211379] RAX: 0000000000000002 RBX: 0000000000000000 RCX: ffffffffb94e42f0
      [    4.211379] RDX: 0000000000000400 RSI: ffffffffffffffe0 RDI: ffffaea1800ebdd0
      [    4.211379] RBP: ffffaea1800ebd58 R08: 0000000000000001 R09: 0000000000000001
      [    4.211379] R10: 0000000000000000 R11: ffffffffb89d5d60 R12: ffffaea1800ebdd0
      [    4.211379] R13: 00000000828cbfbf R14: 0000000000000000 R15: ffffaea1800ebdc0
      [    4.211379] FS:  0000000000000000(0000) GS:ffffa3273fd00000(0000) knlGS:0000000000000000
      [    4.211379] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [    4.211379] CR2: ffffffffffffffe8 CR3: 000000002820e001 CR4: 00000000001606e0
      [    4.211379] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [    4.211379] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [    4.211379] Call Trace:
      [    4.211379]  ? vsock_find_connected_socket+0x6c/0xe0
      [    4.211379]  virtio_transport_recv_pkt+0x15f/0x740
      [    4.211379]  ? detach_buf+0x1b5/0x210
      [    4.211379]  virtio_transport_rx_work+0xb7/0x140
      [    4.211379]  process_one_work+0x1ef/0x480
      [    4.211379]  worker_thread+0x312/0x460
      [    4.211379]  kthread+0x132/0x140
      [    4.211379]  ? process_one_work+0x480/0x480
      [    4.211379]  ? kthread_destroy_worker+0xd0/0xd0
      [    4.211379]  ret_from_fork+0x35/0x40
      [    4.211379] Code: c7 47 08 00 00 00 00 66 c7 07 28 00 c7 47 08 ff ff ff ff c7 47 04 ff ff ff ff c3 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 8b 47 08 <3b> 46 08 75 0a 8b 47 04 3b 46 04 0f 94 c0 c3 31 c0 c3 90 66 2e
      [    4.211379] RIP: vsock_addr_equals_addr+0x3/0x20 RSP: ffffaea1800ebd28
      [    4.211379] CR2: ffffffffffffffe8
      [    4.211379] ---[ end trace f31cc4a2e6df3689 ]---
      [    4.211379] Kernel panic - not syncing: Fatal exception in interrupt
      [    4.211379] Kernel Offset: 0x37000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      [    4.211379] Rebooting in 5 seconds..
      
      Fixes: 22b5c0b6 ("vsock/virtio: fix kernel panic after device hot-unplug")
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Cc: Stefano Garzarella <sgarzare@redhat.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: kvm@vger.kernel.org
      Cc: virtualization@lists.linux-foundation.org
      Cc: netdev@vger.kernel.org
      Cc: kernel-team@android.com
      Cc: stable@vger.kernel.org [4.9+]
      Signed-off-by: default avatarJorge E. Moreira <jemoreira@google.com>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Acked-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ba95e5df
  2. 17 May, 2019 20 commits
  3. 16 May, 2019 16 commits