Home Home > GIT Browse > SLE12-SP4-AZURE
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlaf Hering <ohering@suse.de>2019-04-25 10:17:31 +0200
committerOlaf Hering <ohering@suse.de>2019-04-25 10:17:31 +0200
commitae2909fbc634714ccc85d8bd69b02fc62460657f (patch)
tree88d90c55d43d1b3937fe211d745717a88f5b4001
parent8ab970a76cc1088a8a7c598b4f815b07fa8abe7e (diff)
parent3d524cb7308a1dfdd4a6fa267ffa0a241d77b26d (diff)
Merge remote-tracking branch 'kerncvs/SLE12-SP4' into SLE12-SP4-AZURESLE12-SP4-AZURE
-rw-r--r--blacklist.conf28
-rw-r--r--kabi/severities5
-rw-r--r--patches.arch/KVM-PPC-Book3S-HV-Fix-race-between-kvm_unmap_hva_ran.patch103
-rw-r--r--patches.arch/cpu-speculation-add-mitigations-cmdline-option.patch161
-rw-r--r--patches.arch/intel_idle-add-support-for-Jacobsville.patch33
-rw-r--r--patches.arch/kbuild-strip-whitespace-in-cmd_record_mcount-findstr.patch57
-rw-r--r--patches.arch/kvm-call-kvm_arch_memslots_updated-before-updating-memslots186
-rw-r--r--patches.arch/kvm-expose-new-cpu-features-to-guest.patch (renamed from patches.arch/KVM-Expose-new-cpu-features-to-guest.patch)0
-rw-r--r--patches.arch/kvm-nvmx-apply-addr-size-mask-to-effective-address-for-vmx-instructions72
-rw-r--r--patches.arch/kvm-nvmx-ignore-limit-checks-on-vmx-instructions-using-flat-segments55
-rw-r--r--patches.arch/kvm-nvmx-sign-extend-displacements-of-vmx-instr-s-mem-operands71
-rw-r--r--patches.arch/kvm-svm-workaround-errata-1096-insn_len-maybe-zero-on-smap-violation146
-rw-r--r--patches.arch/kvm-vmx-compare-only-a-single-byte-for-vmcs-launched-in-vcpu-run51
-rw-r--r--patches.arch/kvm-x86-emulate-msr_ia32_arch_capabilities-on-amd-hosts.patch112
-rw-r--r--patches.arch/kvm-x86-mmu-detect-mmio-generation-wrap-in-any-address-space60
-rw-r--r--patches.arch/kvm-x86-mmu-do-not-cache-mmio-accesses-while-memslots-are-in-flux64
-rw-r--r--patches.arch/powerpc-64s-Fix-logic-when-handling-unknown-CPU-feat.patch83
-rw-r--r--patches.arch/powerpc-64s-Simple-RFI-macro-conversions.patch29
-rw-r--r--patches.arch/powerpc-Fix-32-bit-KVM-PR-lockup-and-host-crash-with.patch53
-rw-r--r--patches.arch/powerpc-avoid-mno-sched-epilog-on-GCC-4.9-and-newer.patch34
-rw-r--r--patches.arch/powerpc-consolidate-mno-sched-epilog-into-FTRACE-fla.patch111
-rw-r--r--patches.arch/powerpc-kvm-Save-and-restore-host-AMR-IAMR-UAMOR.patch143
-rw-r--r--patches.arch/powerpc-powernv-Don-t-reprogram-SLW-image-on-every-K.patch166
-rw-r--r--patches.arch/powerpc-powernv-Make-opal-log-only-readable-by-root.patch41
-rw-r--r--patches.arch/powerpc-powernv-Remove-never-used-pnv_power9_force_s.patch38
-rw-r--r--patches.arch/powerpc-powernv-cpuidle-Init-all-present-cpus-for-de.patch53
-rw-r--r--patches.arch/powerpc-powernv-ioda-Allocate-indirect-TCE-levels-of.patch46
-rw-r--r--patches.arch/powerpc-powernv-ioda-Fix-locked_vm-counting-for-memo.patch91
-rw-r--r--patches.arch/powerpc-powernv-ioda2-Remove-redundant-free-of-TCE-p.patch49
-rw-r--r--patches.arch/powerpc-speculation-support-mitigations-cmdline-option.patch117
-rw-r--r--patches.arch/powerpc-vdso32-fix-CLOCK_MONOTONIC-on-PPC64.patch39
-rw-r--r--patches.arch/s390-sles15sp1-00-01-01-zcrypt-CEX6S-exploitation.patch (renamed from patches.arch/s390-zcrypt-cex6s-exploitation.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-01-02-zcrypt-Enable-special-header-file-flag-for-AU-C.patch (renamed from patches.arch/s390-zcrypt-enable-special-header-file-flag-for-au-cprp.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-01-03-zcrypt-Introduce-QACT-support-for-AP-bus-device.patch (renamed from patches.arch/s390-zcrypt-introduce-qact-support-for-ap-bus-devices.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-01-04-zcrypt-Fix-wrong-comparison-leading-to-strange-.patch (renamed from patches.arch/s390-zcrypt-fix-wrong-comparison-leading-to-strange-load-balancing.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-02-03-zcrypt-Support-up-to-256-crypto-adapters.patch (renamed from patches.arch/s390-zcrypt-support-up-to-256-crypto-adapters.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-04-18-s390-mm-Check-for-valid-vma-before-zapping-in-gmap_d.patch (renamed from patches.arch/s390-mm-check-for-valid-vma-before-zapping-in-gmap_discard.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-05-01-s390-cpum_cf-add-hardware-counter-support-for-IBM-z1.patch (renamed from patches.arch/s390-cpum_cf-add-hardware-counter-support-for-ibm-z14.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-05-02-s390-cpum_cf-correct-counter-number-of-LAST_HOST_TRA.patch (renamed from patches.arch/s390-cpum_cf-correct-counter-number-of-last_host_translations.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-05-03-s390-add-support-for-IBM-z14-machines.patch (renamed from patches.arch/s390-add-support-for-ibm-z14-machines.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-05-04-s390-add-support-for-IBM-z14-Model-ZR1.patch (renamed from patches.arch/s390-add-support-for-ibm-z14-model-zr1.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-05-05-s390-cpum_cf-rename-IBM-z13-z14-counter-names.patch (renamed from patches.arch/s390-cpum_cf-rename-ibm-z13-z14-counter-names.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-08-33-s390-qeth-remove-outdated-portname-debug-msg.patch (renamed from patches.arch/s390-sles15-17-02-01-s390-qeth-remove-outdated-portname-debug-msg.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-08-51-s390-net-set-HW-port-number-in-netdevice.patch (renamed from patches.drivers/s390-net-set-hw-port-number-in-netdevice.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-001-net-smc-serialize-connection-creation-in-all-cases.patch (renamed from patches.drivers/net-smc-serialize-connection-creation-in-all-cases.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-002-net-smc-shorten-local-bufsize-variables.patch (renamed from patches.drivers/net-smc-shorten-local-bufsize-variables.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-003-net-smc-introduce-sg-logic-for-RMBs.patch (renamed from patches.drivers/net-smc-introduce-sg-logic-for-rmbs.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-004-net-smc-use-separate-memory-regions-for-RMBs.patch (renamed from patches.drivers/net-smc-use-separate-memory-regions-for-rmbs.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-005-net-smc-register-RMB-related-memory-region.patch (renamed from patches.drivers/net-smc-register-rmb-related-memory-region.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-006-net-smc-remove-Kconfig-warning.patch (renamed from patches.drivers/net-smc-remove-kconfig-warning.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-007-net-smc-introduce-sg-logic-for-send-buffers.patch (renamed from patches.drivers/net-smc-introduce-sg-logic-for-send-buffers.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-008-net-smc-common-functions-for-RMBs-and-send-buffers.patch (renamed from patches.drivers/net-smc-common-functions-for-rmbs-and-send-buffers.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-009-net-smc-cleanup-function-__smc_buf_create.patch (renamed from patches.drivers/net-smc-cleanup-function-_smc_buf_create.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-010-net-smc-synchronize-buffer-usage-with-device.patch (renamed from patches.drivers/net-smc-synchronize-buffer-usage-with-device.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-012-net-smc-add-receive-timeout-check.patch (renamed from patches.drivers/net-smc-add-receive-timeout-check.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-013-net-smc-take-RCU-read-lock-for-routing-cache-lookup.patch (renamed from patches.drivers/net-smc-take-rcu-read-lock-for-routing-cache-lookup.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-014-net-smc-adjust-net_device-refcount.patch (renamed from patches.drivers/net-smc-adjust-net_device-refcount.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-015-net-smc-adapt-send-request-completion-notification.patch (renamed from patches.drivers/net-smc-adapt-send-request-completion-notification.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-016-net-smc-longer-delay-for-client-link-group-removal.patch (renamed from patches.drivers/net-smc-longer-delay-for-client-link-group-removal.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-017-net-smc-terminate-link-group-if-out-of-sync-is-recei.patch (renamed from patches.drivers/net-smc-terminate-link-group-if-out-of-sync-is-received.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-018-net-smc-introduce-a-delay.patch (renamed from patches.drivers/net-smc-introduce-a-delay.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-019-net-smc-no-close-wait-in-case-of-process-shut-down.patch (renamed from patches.drivers/net-smc-no-close-wait-in-case-of-process-shut-down.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-020-net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch (renamed from patches.drivers/net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-023-smc-fix-mutex-unlocks-during-link-group-creation.patch (renamed from patches.drivers/smc-fix-mutex-unlocks-during-link-group-creation.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-024-smc-add-SMC-rendezvous-protocol.patch (renamed from patches.drivers/smc-add-smc-rendezvous-protocol.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-025-net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch (renamed from patches.drivers/net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-026-smc-make-smc_close_active_abort-static.patch (renamed from patches.drivers/smc-make-smc_close_active_abort-static.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-027-smc-improve-smc_clc_send_decline-error-handling.patch (renamed from patches.drivers/smc-improve-smc_clc_send_decline-error-handling.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-028-smc-no-update-for-unused-sk_write_pending.patch (renamed from patches.drivers/smc-no-update-for-unused-sk_write_pending.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-029-smc-cleanup-close-checking-during-data-receival.patch (renamed from patches.drivers/smc-cleanup-close-checking-during-data-receival.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-030-smc-no-consumer-update-in-tasklet-context.patch (renamed from patches.drivers/smc-no-consumer-update-in-tasklet-context.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-031-smc-support-variable-CLC-proposal-messages.patch (renamed from patches.drivers/smc-support-variable-clc-proposal-messages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-032-net-smc-use-local-struct-sock-variables-consistently.patch (renamed from patches.drivers/net-smc-use-local-struct-sock-variables-consistently.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-033-net-smc-simplify-function-smc_clcsock_accept.patch (renamed from patches.drivers/net-smc-simplify-function-smc_clcsock_accept.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-034-net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch (renamed from patches.drivers/net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-035-net-smc-make-wait-for-work-request-uninterruptible.patch (renamed from patches.drivers/net-smc-make-wait-for-work-request-uninterruptible.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-036-net-smc-improve-state-change-handling-after-close-wa.patch (renamed from patches.drivers/net-smc-improve-state-change-handling-after-close-wait.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-037-net-smc-continue-waiting-if-peer-signals-write_shutd.patch (renamed from patches.drivers/net-smc-continue-waiting-if-peer-signals-write_shutdown.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-038-net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch (renamed from patches.drivers/net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-039-net-smc-handle-state-SMC_PEERFINCLOSEWAIT-correctly.patch (renamed from patches.drivers/net-smc-handle-state-smc_peerfinclosewait-correctly.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-041-net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch (renamed from patches.drivers/net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-042-net-smc-wake-up-wr_reg_wait-when-terminating-a-link-.patch (renamed from patches.drivers/net-smc-wake-up-wr_reg_wait-when-terminating-a-link-group.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-043-net-smc-check-for-healthy-link-group-resp.-connectio.patch (renamed from patches.drivers/net-smc-check-for-healthy-link-group-resp-connections.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-044-net-smc-handle-device-port-and-QP-error-events.patch (renamed from patches.drivers/net-smc-handle-device-port-and-qp-error-events.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-045-net-smc-smc_poll-improvements.patch (renamed from patches.drivers/net-smc-smc_poll-improvements.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-046-net-smc-replace-sock_put-worker-by-socket-refcountin.patch (renamed from patches.drivers/net-smc-replace-sock_put-worker-by-socket-refcounting.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-047-net-smc-release-clcsock-from-tcp_listen_worker.patch (renamed from patches.drivers/net-smc-release-clcsock-from-tcp_listen_worker.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-049-net-smc-use-a-constant-for-control-message-length.patch (renamed from patches.drivers/net-smc-use-a-constant-for-control-message-length.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-050-net-smc-use-link_id-of-server-in-confirm-link-reply.patch (renamed from patches.drivers/net-smc-use-link_id-of-server-in-confirm-link-reply.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-051-net-smc-cleanup-smc_llc.h-and-smc_clc.h-headers.patch (renamed from patches.drivers/net-smc-cleanup-smc_llc-h-and-smc_clc-h-headers.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-052-net-smc-move-netinfo-function-to-file-smc_clc.c.patch (renamed from patches.drivers/net-smc-move-netinfo-function-to-file-smc_clc-c.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-053-net-smc-remove-unused-fields-from-smc-structures.patch (renamed from patches.drivers/net-smc-remove-unused-fields-from-smc-structures.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-054-net-smc-respond-to-test-link-messages.patch (renamed from patches.drivers/net-smc-respond-to-test-link-messages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-055-net-smc-process-confirm-delete-rkey-messages.patch (renamed from patches.drivers/net-smc-process-confirm-delete-rkey-messages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-056-net-smc-do-not-allow-eyecatchers-in-rmbe.patch (renamed from patches.drivers/net-smc-do-not-allow-eyecatchers-in-rmbe.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-057-net-smc-process-add-delete-link-messages.patch (renamed from patches.drivers/net-smc-process-add-delete-link-messages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-058-net-smc-prevent-new-connections-on-link-group.patch (renamed from patches.drivers/net-smc-prevent-new-connections-on-link-group.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-059-net-smc-pay-attention-to-MAX_ORDER-for-CQ-entries.patch (renamed from patches.drivers/net-smc-pay-attention-to-max_order-for-cq-entries.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-060-net-smc-free-link-group-without-pending-free_work-on.patch (renamed from patches.drivers/net-smc-free-link-group-without-pending-free_work-only.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-061-net-smc-schedule-free_work-when-link-group-is-termin.patch (renamed from patches.drivers/net-smc-schedule-free_work-when-link-group-is-terminated.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-062-net-smc-simplify-wait-when-closing-listen-socket.patch (renamed from patches.drivers/net-smc-simplify-wait-when-closing-listen-socket.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-063-net-smc-restructure-netinfo-for-CLC-proposal-msgs.patch (renamed from patches.drivers/net-smc-restructure-netinfo-for-clc-proposal-msgs.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-064-net-smc-add-ipv6-support-to-CLC-layer.patch (renamed from patches.drivers/net-smc-add-ipv6-support-to-clc-layer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-065-net-smc-enable-ipv6-support-for-smc.patch (renamed from patches.drivers/net-smc-enable-ipv6-support-for-smc.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-066-net-smc-use-announced-length-in-sock_recvmsg.patch (renamed from patches.drivers/net-smc-use-announced-length-in-sock_recvmsg.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-067-net-smc-fix-shutdown-in-state-SMC_LISTEN.patch (renamed from patches.drivers/net-smc-fix-shutdown-in-state-smc_listen.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-068-net-smc-keep-clcsock-reference-in-smc_tcp_listen_wor.patch (renamed from patches.drivers/net-smc-keep-clcsock-reference-in-smc_tcp_listen_work.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-069-net-smc-fix-structure-size.patch (renamed from patches.drivers/net-smc-fix-structure-size.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-070-net-smc-handle-sockopts-forcing-fallback.patch (renamed from patches.drivers/net-smc-handle-sockopts-forcing-fallback.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-071-net-smc-sockopts-TCP_NODELAY-and-TCP_CORK.patch (renamed from patches.drivers/net-smc-sockopts-tcp_nodelay-and-tcp_cork.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-072-net-smc-handle-sockopt-TCP_DEFER_ACCEPT.patch (renamed from patches.drivers/net-smc-handle-sockopt-tcp_defer_accept.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-073-net-smc-restrict-non-blocking-connect-finish.patch (renamed from patches.drivers/net-smc-restrict-non-blocking-connect-finish.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-074-net-smc-periodic-testlink-support.patch (renamed from patches.drivers/net-smc-periodic-testlink-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-075-net-smc-ipv6-support-for-smc_diag.c.patch (renamed from patches.drivers/net-smc-ipv6-support-for-smc_diag-c.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-076-net-smc-handle-ioctls-SIOCINQ-SIOCOUTQ-and-SIOCOUTQN.patch (renamed from patches.drivers/net-smc-handle-ioctls-siocinq-siocoutq-and-siocoutqnsd.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-077-net-smc-determine-vlan_id-of-stacked-net_device.patch (renamed from patches.drivers/net-smc-determine-vlan_id-of-stacked-net_device.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-078-net-smc-call-consolidation.patch (renamed from patches.drivers/net-smc-call-consolidation.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-079-net-smc-handle-unregistered-buffers.patch (renamed from patches.drivers/net-smc-handle-unregistered-buffers.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-080-smc-fix-sendpage-call.patch (renamed from patches.drivers/smc-fix-sendpage-call.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-081-smc-simplify-abort-logic.patch (renamed from patches.drivers/smc-simplify-abort-logic.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-082-smc-make-smc_rx_wait_data-generic.patch (renamed from patches.drivers/smc-make-smc_rx_wait_data-generic.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-083-smc-allocate-RMBs-as-compound-pages.patch (renamed from patches.drivers/smc-allocate-rmbs-as-compound-pages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-084-smc-add-support-for-splice.patch (renamed from patches.drivers/smc-add-support-for-splice.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-085-net-smc-no-tx-work-trigger-for-fallback-sockets.patch (renamed from patches.drivers/net-smc-no-tx-work-trigger-for-fallback-sockets.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-086-net-smc-register-new-rmbs-with-the-peer.patch (renamed from patches.drivers/net-smc-register-new-rmbs-with-the-peer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-087-net-smc-remove-unnecessary-cast.patch (renamed from patches.drivers/net-smc-remove-unnecessary-cast.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-088-net-smc-simplify-test_link-function-usage.patch (renamed from patches.drivers/net-smc-simplify-test_link-function-usage.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-089-net-smc-move-link-llc-initialization-to-llc-layer.patch (renamed from patches.drivers/net-smc-move-link-llc-initialization-to-llc-layer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-090-net-smc-use-a-workqueue-to-defer-llc-send.patch (renamed from patches.drivers/net-smc-use-a-workqueue-to-defer-llc-send.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-091-net-smc-handle-all-error-codes-from-smc_conn_create.patch (renamed from patches.drivers/net-smc-handle-all-error-codes-from-smc_conn_create.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-092-net-smc-set-link-inactive-before-calling-smc_lgr_fre.patch (renamed from patches.drivers/net-smc-set-link-inactive-before-calling-smc_lgr_free.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-093-net-smc-drop-messages-when-link-state-is-inactive.patch (renamed from patches.drivers/net-smc-drop-messages-when-link-state-is-inactive.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-094-net-smc-check-for-pending-termination.patch (renamed from patches.drivers/net-smc-check-for-pending-termination.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-096-net-smc-add-common-buffer-size-in-send-and-receive-b.patch (renamed from patches.drivers/net-smc-add-common-buffer-size-in-send-and-receive-buffer-descriptors.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-097-net-smc-move-link-group-list-to-smc_core.patch (renamed from patches.drivers/net-smc-move-link-group-list-to-smc_core.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-098-net-smc-rename-connection-index-to-RMBE-index.patch (renamed from patches.drivers/net-smc-rename-connection-index-to-rmbe-index.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-099-net-smc-calculate-write-offset-in-RMB-only-once-per-.patch (renamed from patches.drivers/net-smc-calculate-write-offset-in-rmb-only-once-per-connection.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-100-net-smc-move-smc_core-specific-code-from-smc.h-to-sm.patch (renamed from patches.drivers/net-smc-move-smc_core-specific-code-from-smc-h-to-smc_core.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-101-net-smc-restructure-CDC-message-reception.patch (renamed from patches.drivers/net-smc-restructure-cdc-message-reception.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-102-net-smc-do-a-few-smc_core.c-cleanups.patch (renamed from patches.drivers/net-smc-do-a-few-smc_core-c-cleanups.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-103-net-smc-change-smc_buf_free-function-parameters.patch (renamed from patches.drivers/net-smc-change-smc_buf_free-function-parameters.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-104-net-smc-restructure-client-and-server-code-in-af_smc.patch (renamed from patches.drivers/net-smc-restructure-client-and-server-code-in-af_smc.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-105-net-smc-return-0-for-ioctl-calls-in-states-INIT-and-.patch (renamed from patches.drivers/net-smc-return-0-for-ioctl-calls-in-states-init-and-closed.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-106-net-smc-lock-smc_lgr_list-in-port_terminate.patch (renamed from patches.drivers/net-smc-lock-smc_lgr_list-in-port_terminate.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-107-net-smc-urgent-data-support.patch (renamed from patches.drivers/net-smc-urgent-data-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-108-net-smc-longer-delay-when-freeing-client-link-groups.patch (renamed from patches.drivers/net-smc-longer-delay-when-freeing-client-link-groups.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-109-tcp-TCP-experimental-option-for-SMC.patch (renamed from patches.drivers/tcp-tcp-experimental-option-for-smc.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-110-net-ipv4-disable-SMC-TCP-option-with-SYN-Cookies.patch (renamed from patches.drivers/net-ipv4-disable-smc-tcp-option-with-syn-cookies.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-net-smc-Fix-preinitialization-of-buf_desc-in-__smc_b.patch (renamed from patches.drivers/net-smc-fix-preinitialization-of-buf_desc-in-_smc_buf_create.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-net-smc-fix-NULL-pointer-dereference-on-sock_create_.patch (renamed from patches.drivers/net-smc-fix-null-pointer-dereference-on-sock_create_kern-error-path.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-net-smc-init-conn.tx_work-conn.send_lock-sooner.patch (renamed from patches.drivers/net-smc-init-conn-tx_work-conn-send_lock-sooner.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-11-smc-switch-to-sock_recvmsg.patch (renamed from patches.drivers/smc-switch-to-sock_recvmsg.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-01-net-smc-rebuild-nonblocking-connect.patch (renamed from patches.drivers/net-smc-rebuild-nonblocking-connect.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-02-net-smc-determine-port-attributes-independent-from-p.patch (renamed from patches.drivers/net-smc-determine-port-attributes-independent-from-pnet-table.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-03-net-smc-add-pnetid-support.patch (renamed from patches.drivers/net-smc-add-pnetid-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-04-net-smc-optimize-consumer-cursor-updates.patch (renamed from patches.drivers/net-smc-optimize-consumer-cursor-updates.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-05-net-smc-add-base-infrastructure-for-SMC-D-and-ISM.patch (renamed from patches.drivers/net-smc-add-base-infrastructure-for-smc-d-and-ism.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-06-net-smc-add-pnetid-support-for-SMC-D-and-ISM.patch (renamed from patches.drivers/net-smc-add-pnetid-support-for-smc-d-and-ism.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-07-net-smc-add-SMC-D-support-in-CLC-messages.patch (renamed from patches.drivers/net-smc-add-smc-d-support-in-clc-messages.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-08-net-smc-add-SMC-D-support-in-data-transfer.patch (renamed from patches.drivers/net-smc-add-smc-d-support-in-data-transfer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-09-net-smc-add-SMC-D-support-in-af_smc.patch (renamed from patches.drivers/net-smc-add-smc-d-support-in-af_smc.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-10-net-smc-add-SMC-D-diag-support.patch (renamed from patches.drivers/net-smc-add-smc-d-diag-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-11-s390-ism-add-device-driver-for-internal-shared-memory.patch (renamed from patches.drivers/s390-ism-add-device-driver-for-internal-shared-memory.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-12-s390-net-add-pnetid-support.patch (renamed from patches.drivers/s390-net-add-pnetid-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-13-s390-cio-rename-struct-channel_path_desc.patch (renamed from patches.drivers/s390-cio-rename-struct-channel_path_desc.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-14-s390-chsc-query-utility-strings-via-fmt3-channel-path.patch (renamed from patches.drivers/s390-chsc-query-utility-strings-via-fmt3-channel-path-descriptor.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-15-s390-cio-add-util_string-sysfs-attribute.patch (renamed from patches.drivers/s390-cio-add-util_string-sysfs-attribute.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-16-s390-cio-add-helper-to-query-utility-strings-per-give.patch (renamed from patches.drivers/s390-cio-add-helper-to-query-utility-strings-per-given-ccw-device.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-17-s390-cio-add-test-for-ccwgroup-device.patch (renamed from patches.drivers/s390-cio-add-test-for-ccwgroup-device.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-18-net-smc-reduce-sock_put-for-fallback-sockets.patch (renamed from patches.drivers/net-smc-reduce-sock_put-for-fallback-sockets.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-19-net-smc-provide-smc-mode-in-smc_diag-c.patch (renamed from patches.drivers/net-smc-provide-smc-mode-in-smc_diag-c.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-20-net-smc-eliminate-cursor-read-and-write-calls.patch (renamed from patches.drivers/net-smc-eliminate-cursor-read-and-write-calls.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-21-net-smc-add-function-to-get-link-group-from-link.patch (renamed from patches.drivers/net-smc-add-function-to-get-link-group-from-link.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-22-net-smc-use-DECLARE_BITMAP-for-rtokens_used_mask.patch (renamed from patches.drivers/net-smc-use-declare_bitmap-for-rtokens_used_mask.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-23-net-smc-remove-local-variable-page-in-smc_rx_splice.patch (renamed from patches.drivers/net-smc-remove-local-variable-page-in-smc_rx_splice.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-24-net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch (renamed from patches.drivers/net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-25-net-smc-take-sock-lock-in-smc_ioctl.patch (renamed from patches.drivers/net-smc-take-sock-lock-in-smc_ioctl.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-26-net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch (renamed from patches.drivers/net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-27-net-smc-use-correct-vlan-gid-of-RoCE-device.patch (renamed from patches.drivers/net-smc-use-correct-vlan-gid-of-roce-device.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-28-net-smc-provide-fallback-reason-code.patch (renamed from patches.drivers/net-smc-provide-fallback-reason-code.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-29-net-smc-improve-delete-link-processing.patch (renamed from patches.drivers/net-smc-improve-delete-link-processing.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-30-net-smc-send-response-to-test-link-signal.patch (renamed from patches.drivers/net-smc-send-response-to-test-link-signal.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-31-net-smc-no-shutdown-in-state-SMC_LISTEN.patch (renamed from patches.drivers/net-smc-no-shutdown-in-state-smc_listen.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-32-net-smc-add-error-handling-for-get_user.patch (renamed from patches.drivers/net-smc-add-error-handling-for-get_user.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-33-net-smc-move-sock-lock-in-smc_ioctl.patch (renamed from patches.drivers/net-smc-move-sock-lock-in-smc_ioctl.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-34-net-smc-no-cursor-update-send-in-state-SMC_INIT.patch (renamed from patches.drivers/net-smc-no-cursor-update-send-in-state-smc_init.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-35-net-smc-reset-recv-timeout-after-clc-handshake.patch (renamed from patches.drivers/net-smc-reset-recv-timeout-after-clc-handshake.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-36-net-smc-fix-non-blocking-connect-problem.patch (renamed from patches.arch/s390-sles12sp4-03-04-01-net-smc-fix-non-blocking-connect-problem.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-37-net-smc-remove-duplicate-mutex_unlock.patch (renamed from patches.arch/s390-sles12sp4-03-04-02-net-smc-remove-duplicate-mutex_unlock.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-38-net-smc-enable-fallback-for-connection-abort-in-stat.patch (renamed from patches.arch/s390-sles12sp4-03-04-03-net-smc-enable-fallback-for-connection-abort-in-stat.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-39-net-smc-no-urgent-data-check-for-listen-sockets.patch (renamed from patches.arch/s390-sles12sp4-03-04-04-net-smc-no-urgent-data-check-for-listen-sockets.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-40-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch (renamed from patches.arch/s390-sles12sp4-03-04-05-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-41-net-smc-cleanup-tcp_listen_worker-initialization.patch (renamed from patches.arch/s390-sles12sp4-03-04-06-net-smc-cleanup-tcp_listen_worker-initialization.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-42-net-smc-make-smc_lgr_free-static.patch (renamed from patches.arch/s390-sles12sp4-03-04-07-net-smc-make-smc_lgr_free-static.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-43-net-smc-remove-sock_error-detour-in-clc-functions.patch (renamed from patches.arch/s390-sles12sp4-03-04-08-net-smc-remove-sock_error-detour-in-clc-functions.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-44-net-smc-allow-fallback-after-clc-timeouts.patch (renamed from patches.arch/s390-sles12sp4-03-04-09-net-smc-allow-fallback-after-clc-timeouts.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-45-net-smc-no-link-delete-for-a-never-active-link.patch (renamed from patches.arch/s390-sles12sp4-03-04-10-net-smc-no-link-delete-for-a-never-active-link.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-46-net-smc-short-wait-for-late-smc_clc_wait_msg.patch (renamed from patches.arch/s390-sles12sp4-03-04-11-net-smc-short-wait-for-late-smc_clc_wait_msg.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-47-net-smc-cleanup-listen-worker-mutex-unlocking.patch (renamed from patches.arch/s390-sles12sp4-03-04-12-net-smc-cleanup-listen-worker-mutex-unlocking.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-48-net-smc-avoid-a-delay-by-waiting-for-nothing.patch (renamed from patches.arch/s390-sles12sp4-03-04-13-net-smc-avoid-a-delay-by-waiting-for-nothing.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-49-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch (renamed from patches.arch/s390-sles12sp4-03-04-14-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-50-net-smc-unregister-rkeys-of-unused-buffer.patch (renamed from patches.arch/s390-sles12sp4-03-04-15-net-smc-unregister-rkeys-of-unused-buffer.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-51-net-smc-abort-CLC-connection-in-smc_release.patch (renamed from patches.arch/s390-sles12sp4-03-04-16-net-smc-abort-CLC-connection-in-smc_release.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-52-net-smc-use-queue-pair-number-when-matching-link-gro.patch (renamed from patches.arch/s390-sles12sp4-03-04-17-net-smc-use-queue-pair-number-when-matching-link-gro.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-53-net-smc-add-SMC-D-shutdown-signal.patch (renamed from patches.arch/s390-sles12sp4-03-04-18-net-smc-add-SMC-D-shutdown-signal.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-54-net-smc-atomic-SMCD-cursor-handling.patch (renamed from patches.arch/s390-sles12sp4-03-04-19-net-smc-atomic-SMCD-cursor-handling.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-55-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch (renamed from patches.arch/s390-sles12sp4-03-04-20-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-56-mlx4-trigger-IB-events-needed-by-SMC.patch (renamed from patches.arch/s390-sles12sp4-03-04-21-mlx4-trigger-IB-events-needed-by-SMC.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-57-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch (renamed from patches.arch/s390-sles12sp4-03-04-22-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-58-net-smc-fix-sizeof-to-int-comparison.patch (renamed from patches.arch/s390-sles12sp4-03-04-23-net-smc-fix-sizeof-to-int-comparison.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-59-net-smc-check-for-missing-nlattrs-in-smc_pnetid-mess.patch (renamed from patches.drivers/net-smc-check-for-missing-nlattrs-in-SMC_PNETID-mess.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-12-net-smc-fix-error-return-code-in-smc_setsockopt.patch (renamed from patches.drivers/net-smc-fix-error-return-code-in-smc_setsockopt.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-14-01-s390-crypto-add-inline-assembly-for-KMA-instruction-.patch (renamed from patches.arch/s390-crypto-add-inline-assembly-for-kma-instruction-to-cpacf-h.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-14-02-s390-crypto-add-s390-platform-specific-aes-gcm-suppo.patch (renamed from patches.arch/s390-crypto-add-s390-platform-specific-aes-gcm-support.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-14-03-s390-crypto-Fix-kernel-crash-on-aes_s390-module-remo.patch (renamed from patches.arch/s390-crypto-fix-kernel-crash-on-aes_s390-module-remove.patch)0
-rw-r--r--patches.arch/s390-sles15sp1-00-16-12-s390-qeth-invoke-softirqs-after-napi_schedule.patch (renamed from patches.arch/s390-qeth-invoke-softirqs-after-napi_schedule)0
-rw-r--r--patches.arch/s390-speculation-support-mitigations-cmdline-option.patch91
-rw-r--r--patches.arch/svm-avic-fix-invalidate-logical-apic-id-entry42
-rw-r--r--patches.arch/svm-fix-avic-dfr-and-ldr-handling159
-rw-r--r--patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions.patch (renamed from patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions)2
-rw-r--r--patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling (renamed from patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling.patch)0
-rw-r--r--patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument (renamed from patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument.patch)0
-rw-r--r--patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features (renamed from patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features.patch)0
-rw-r--r--patches.arch/x86-kvm-hyper-v-avoid-spurious-pending-stimer-on-vcpu-init70
-rw-r--r--patches.arch/x86-speculation-prevent-deadlock-on-ssb_state-lock.patch69
-rw-r--r--patches.arch/x86-speculation-support-mitigations-cmdline-option.patch148
-rw-r--r--patches.drivers/0001-iommu-iova-Add-flush-queue-data-structures.patch (renamed from patches.drivers/0001-iommu-iova-add-flush-queue-data-structures)0
-rw-r--r--patches.drivers/0002-iommu-iova-Implement-Flush-Queue-ring-buffer.patch (renamed from patches.drivers/0002-iommu-iova-implement-flush-queue-ring-buffer)0
-rw-r--r--patches.drivers/0003-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch (renamed from patches.drivers/0002-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch)0
-rw-r--r--patches.drivers/0003-iommu-iova-Add-flush-counters-to-Flush-Queue-impleme.patch (renamed from patches.drivers/0003-iommu-iova-add-flush-counters-to-flush-queue-implementation)0
-rw-r--r--patches.drivers/0003-rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch (renamed from patches.drivers/rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch)0
-rw-r--r--patches.drivers/0004-iommu-iova-Add-locking-to-Flush-Queues.patch (renamed from patches.drivers/0004-iommu-iova-add-locking-to-flush-queues)0
-rw-r--r--patches.drivers/0005-iommu-iova-Add-flush-timer.patch (renamed from patches.drivers/0005-iommu-iova-add-flush-timer)0
-rw-r--r--patches.drivers/0006-mmc-sdhci-of-esdhc-Fix-timeout-checks.patch (renamed from patches.drivers/mmc-sdhci-of-esdhc-Fix-timeout-checks.patch)0
-rw-r--r--patches.drivers/0007-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch (renamed from patches.drivers/0004-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch)0
-rw-r--r--patches.drivers/0023-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch (renamed from patches.fixes/0001-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch)0
-rw-r--r--patches.drivers/ALSA-core-Fix-card-races-between-register-and-discon.patch79
-rw-r--r--patches.drivers/ALSA-hda-Add-two-more-machines-to-the-power_save_bla.patch48
-rw-r--r--patches.drivers/ALSA-hda-Initialize-power_state-field-properly.patch37
-rw-r--r--patches.drivers/ALSA-hda-realtek-add-two-more-pin-configuration-sets.patch48
-rw-r--r--patches.drivers/ALSA-info-Fix-racy-addition-deletion-of-nodes.patch57
-rw-r--r--patches.drivers/ALSA-seq-Fix-OOB-reads-from-strlcpy.patch55
-rw-r--r--patches.drivers/ASoC-fsl_esai-fix-channel-swap-issue-when-stream-sta.patch135
-rw-r--r--patches.drivers/ASoC-topology-free-created-components-in-tplg-load-e.patch47
-rw-r--r--patches.drivers/Bluetooth-btusb-request-wake-pin-with-NOAUTOEN.patch50
-rw-r--r--patches.drivers/Input-snvs_pwrkey-initialize-necessary-driver-data-b.patch50
-rw-r--r--patches.drivers/NFC-nci-Add-some-bounds-checking-in-nci_hci_cmd_rece.patch57
-rw-r--r--patches.drivers/PCI-Add-function-1-DMA-alias-quirk-for-Marvell-9170-.patch41
-rw-r--r--patches.drivers/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch (renamed from patches.fixes/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch)0
-rw-r--r--patches.drivers/acpi-nfit-fix-address-range-scrub-completion-tracking.patch (renamed from patches.fixes/acpi-nfit-fix-address-range-scrub-completion-tracking.patch)0
-rw-r--r--patches.drivers/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch (renamed from patches.fixes/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch)0
-rw-r--r--patches.drivers/acpi-nfit-prefer-dsm-over-lsr-for-namespace-label-reads.patch (renamed from patches.fixes/acpi-nfit-Prefer-_DSM-over-_LSR-for-namespace-label-.patch)0
-rw-r--r--patches.drivers/ath10k-avoid-possible-string-overflow.patch40
-rw-r--r--patches.drivers/blk-mq-debugfs-Add-kick-operation.patch (renamed from patches.suse/0008-blk-mq-debugfs-Add-kick-operation.patch)0
-rw-r--r--patches.drivers/blk-mq-debugfs-Show-atomic-request-flags.patch (renamed from patches.suse/0005-blk-mq-debugfs-Show-atomic-request-flags.patch)0
-rw-r--r--patches.drivers/blk-mq-debugfs-Show-busy-requests.patch (renamed from patches.suse/0007-blk-mq-debugfs-Show-busy-requests.patch)0
-rw-r--r--patches.drivers/blk-mq-debugfs-Show-requeue-list.patch (renamed from patches.suse/0006-blk-mq-debugfs-Show-requeue-list.patch)0
-rw-r--r--patches.drivers/blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch (renamed from patches.suse/0003-blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch)0
-rw-r--r--patches.drivers/blk-mq-merge-bio-into-sw-queue-before-plugging.patch (renamed from patches.suse/0002-blk-mq-merge-bio-into-sw-queue-before-plugging.patch)0
-rw-r--r--patches.drivers/block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch (renamed from patches.suse/0009-block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch)0
-rw-r--r--patches.drivers/bpf-allow-access-to-skb-len-from-offloads.patch (renamed from patches.fixes/bpf-allow-access-to-skb-len-from-offloads.patch)0
-rw-r--r--patches.drivers/bpf-fix-link-error-without-CONFIG_NET.patch (renamed from patches.fixes/bpf-fix-link-error-without-CONFIG_NET.patch)0
-rw-r--r--patches.drivers/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch (renamed from patches.fixes/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch)0
-rw-r--r--patches.drivers/bpf-move-knowledge-about-post-translation-offsets-ou.patch (renamed from patches.fixes/bpf-move-knowledge-about-post-translation-offsets-ou.patch)0
-rw-r--r--patches.drivers/bpf-remove-the-verifier-ops-from-program-structure.patch (renamed from patches.fixes/bpf-remove-the-verifier-ops-from-program-structure.patch)0
-rw-r--r--patches.drivers/bpf-split-verifier-and-program-ops.patch (renamed from patches.fixes/bpf-split-verifier-and-program-ops.patch)0
-rw-r--r--patches.drivers/bpf-use-per-htab-salt-for-bucket-hash.patch (renamed from patches.fixes/bpf-use-per-htab-salt-for-bucket-hash.patch)0
-rw-r--r--patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch110
-rw-r--r--patches.drivers/brcmfmac-assure-SSID-length-from-firmware-is-limited.patch38
-rw-r--r--patches.drivers/bsg-Check-queue-type-before-attaching-to-a-queue.patch (renamed from patches.suse/0010-bsg-Check-queue-type-before-attaching-to-a-queue.patch)0
-rw-r--r--patches.drivers/cfq-iosched-Delete-unused-function-min_vdisktime.patch (renamed from patches.suse/0004-cfq-iosched-Delete-unused-function-min_vdisktime.patch)0
-rw-r--r--patches.drivers/cxgb4-Support-ethtool-private-flags.patch109
-rw-r--r--patches.drivers/cxgb4-collect-hardware-queue-descriptors.patch503
-rw-r--r--patches.drivers/dax-direct_access-does-not-sleep-anymore.patch (renamed from patches.fixes/dax-direct_access-does-not-sleep-anymore.patch)0
-rw-r--r--patches.drivers/dax-introduce-a-copy_to_iter-dax-operation.patch (renamed from patches.fixes/dax-Introduce-a-copy_to_iter-dax-operation.patch)0
-rw-r--r--patches.drivers/dax-introduce-config_dax_driver.patch (renamed from patches.fixes/dax-introduce-CONFIG_DAX_DRIVER.patch)0
-rw-r--r--patches.drivers/ibmvnic-Enable-GRO.patch34
-rw-r--r--patches.drivers/ibmvnic-Fix-netdev-feature-clobbering-during-a-reset.patch89
-rw-r--r--patches.drivers/iio-ad_sigma_delta-select-channel-when-reading-regis.patch39
-rw-r--r--patches.drivers/iio-core-fix-a-possible-circular-locking-dependency.patch154
-rw-r--r--patches.drivers/iio-cros_ec-Fix-the-maths-for-gyro-scale-calculation.patch63
-rw-r--r--patches.drivers/iommu-amd-add-support-for-higher-64-bit-iommu-control-register (renamed from patches.drivers/0002-iommu-amd-add-support-for-higher-64-bit-iommu-control-register)0
-rw-r--r--patches.drivers/iommu-amd-add-support-for-iommu-xt-mode (renamed from patches.drivers/0003-iommu-amd-add-support-for-iommu-xt-mode)0
-rw-r--r--patches.drivers/iommu-amd-set-exclusion-range-correctly35
-rw-r--r--patches.drivers/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch (renamed from patches.suse/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch)0
-rw-r--r--patches.drivers/jump_label-Split-out-code-under-the-hotplug-lock.patch (renamed from patches.arch/jump_label-split-out-code-under-the-hotplug-lock.patch)0
-rw-r--r--patches.drivers/libnvdimm-badrange-remove-a-warn-for-list_empty.patch (renamed from patches.fixes/libnvdimm-badrange-remove-a-WARN-for-list_empty.patch)0
-rw-r--r--patches.drivers/libnvdimm-introduce-locked-dimm-capacity-support.patch (renamed from patches.fixes/libnvdimm-Introduce-locked-DIMM-capacity-support.patch)0
-rw-r--r--patches.drivers/libnvdimm-move-poison-list-functions-to-a-new-badrange-file.patch (renamed from patches.fixes/libnvdimm-move-poison-list-functions-to-a-new-badran.patch)0
-rw-r--r--patches.drivers/libnvdimm-nfit_test-add-firmware-download-emulation.patch (renamed from patches.fixes/libnvdimm-nfit_test-add-firmware-download-emulation.patch)0
-rw-r--r--patches.drivers/libnvdimm-nfit_test-adding-support-for-unit-testing-enable-lss-status.patch (renamed from patches.fixes/libnvdimm-nfit_test-adding-support-for-unit-testing-.patch)0
-rw-r--r--patches.drivers/libnvdimm-testing-add-emulation-for-smart-injection-commands.patch (renamed from patches.fixes/libnvdimm-testing-Add-emulation-for-smart-injection-.patch)0
-rw-r--r--patches.drivers/libnvdimm-testing-update-the-default-smart-ctrl_temperature.patch (renamed from patches.fixes/libnvdimm-testing-update-the-default-smart-ctrl_temp.patch)0
-rw-r--r--patches.drivers/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch (renamed from patches.suse/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch (renamed from patches.suse/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch (renamed from patches.suse/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch (renamed from patches.suse/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch (renamed from patches.suse/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch (renamed from patches.suse/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch)0
-rw-r--r--patches.drivers/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch (renamed from patches.suse/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch)0
-rw-r--r--patches.drivers/mmc-davinci-remove-extraneous-__init-annotation.patch42
-rw-r--r--patches.drivers/mmc-tmio_mmc_core-don-t-claim-spurious-interrupts.patch72
-rw-r--r--patches.drivers/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch (renamed from patches.suse/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch)0
-rw-r--r--patches.drivers/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch (renamed from patches.suse/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch)0
-rw-r--r--patches.drivers/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch (renamed from patches.suse/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch)0
-rw-r--r--patches.drivers/net-smc-terminate-link-group-for-ib_post_send-proble.patch (renamed from patches.drivers/net-smc-terminate-link-group-for-ib_post_send-problems.patch)0
-rw-r--r--patches.drivers/net-smc-use-_aligned_u64-for-64-bit-smc_diag-fields.patch (renamed from patches.drivers/net-smc-use-__aligned_u64-for-64-bit-smc_diag-fields.patch)0
-rw-r--r--patches.drivers/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch (renamed from patches.suse/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch)0
-rw-r--r--patches.drivers/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch (renamed from patches.suse/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch)0
-rw-r--r--patches.drivers/nfit_test-add-error-injection-dsms.patch (renamed from patches.fixes/nfit_test-add-error-injection-DSMs.patch)0
-rw-r--r--patches.drivers/nfit_test-fix-buffer-overrun-add-sanity-check.patch (renamed from patches.fixes/nfit_test-fix-buffer-overrun-add-sanity-check.patch)0
-rw-r--r--patches.drivers/nfit_test-improve-structure-offset-handling.patch (renamed from patches.fixes/nfit_test-improve-structure-offset-handling.patch)0
-rw-r--r--patches.drivers/nfit_test-prevent-parsing-error-of-nfit_test-0.patch (renamed from patches.fixes/nfit_test-prevent-parsing-error-of-nfit_test.0.patch)0
-rw-r--r--patches.drivers/nfit_test-when-clearing-poison-also-remove-badrange-entries.patch (renamed from patches.fixes/nfit_test-when-clearing-poison-also-remove-badrange-.patch)0
-rw-r--r--patches.drivers/pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch (renamed from patches.suse/0050-pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch)0
-rw-r--r--patches.drivers/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch (renamed from patches.fixes/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch)0
-rw-r--r--patches.drivers/sched-core-Fix-cpu.max-vs.-cpuhotplug-deadlock.patch (renamed from patches.arch/sched-core-fix-cpu-max-vs-cpuhotplug-deadlock.patch)0
-rw-r--r--patches.drivers/scsi-qla2xxx-Timeouts-occur-on-surprise-removal-of-Q.patch (renamed from patches.fixes/scsi-qla2xxx-timeouts-occur-on-surprise-removal-of-qlogic-adapter.patch)0
-rw-r--r--patches.drivers/skd-Avoid-that-module-unloading-triggers-a-use-after.patch (renamed from patches.fixes/0001-skd-Avoid-that-module-unloading-triggers-a-use-after.patch)0
-rw-r--r--patches.drivers/skd-Submit-requests-to-firmware-before-triggering-th.patch (renamed from patches.fixes/0001-skd-Submit-requests-to-firmware-before-triggering-th.patch)0
-rw-r--r--patches.drivers/staging-vt6655-Fix-interrupt-race-condition-on-devic.patch70
-rw-r--r--patches.drivers/staging-vt6655-Remove-vif-check-from-vnt_interrupt.patch39
-rw-r--r--patches.drivers/tools-testing-nvdimm-advertise-a-write-cache-for-nfit_test.patch (renamed from patches.fixes/tools-testing-nvdimm-advertise-a-write-cache-for-nfi.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-allow-custom-error-code-injection.patch (renamed from patches.fixes/tools-testing-nvdimm-allow-custom-error-code-injecti.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-disable-labels-for-nfit_test-1.patch (renamed from patches.fixes/tools-testing-nvdimm-disable-labels-for-nfit_test.1.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-enable-labels-for-nfit_test-1-dimms.patch (renamed from patches.fixes/tools-testing-nvdimm-enable-labels-for-nfit_test.1-d.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-fix-missing-newline-in-nfit_test_dimm-handle-attribute.patch (renamed from patches.fixes/tools-testing-nvdimm-fix-missing-newline-in-nfit_tes.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-fix-support-for-emulating-controller-temperature.patch (renamed from patches.fixes/tools-testing-nvdimm-Fix-support-for-emulating-contr.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-force-nfit_test-to-depend-on-instrumented-modules.patch (renamed from patches.fixes/tools-testing-nvdimm-force-nfit_test-to-depend-on-in.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-improve-emulation-of-smart-injection.patch (renamed from patches.fixes/tools-testing-nvdimm-improve-emulation-of-smart-inje.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-kaddr-and-pfn-can-be-null-to-direct_access.patch (renamed from patches.fixes/tools-testing-nvdimm-kaddr-and-pfn-can-be-NULL-to-di.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-make-dsm-failure-code-injection-an-override.patch (renamed from patches.fixes/tools-testing-nvdimm-Make-DSM-failure-code-injection.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-smart-alarm-threshold-control.patch (renamed from patches.fixes/tools-testing-nvdimm-smart-alarm-threshold-control.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-stricter-bounds-checking-for-error-injection-commands.patch (renamed from patches.fixes/tools-testing-nvdimm-stricter-bounds-checking-for-er.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-support-nfit_test_dimm-attributes-under-nfit_test-1.patch (renamed from patches.fixes/tools-testing-nvdimm-support-nfit_test_dimm-attribut.patch)0
-rw-r--r--patches.drivers/tools-testing-nvdimm-unit-test-clear-error-commands.patch (renamed from patches.fixes/tools-testing-nvdimm-unit-test-clear-error-commands.patch)0
-rw-r--r--patches.drivers/tpm-Fix-the-type-of-the-return-value-in-calc_tpm2_ev.patch42
-rw-r--r--patches.drivers/tun-forbid-iface-creation-with-rtnl-ops.patch (renamed from patches.suse/tun-forbid-iface-creation-with-rtnl-ops.patch)0
-rw-r--r--patches.drivers/usb-xhci-fix-broken_suspend-placement-in-struct-xchi_hcd.patch (renamed from patches.fixes/0001-USB-xhci-fix-broken_suspend-placement-in-struct-xchi.patch)0
-rw-r--r--patches.drivers/vfio-type1-limit-dma-mappings-per-container94
-rw-r--r--patches.drivers/vhost-vsock-fix-use-after-free-in-network-stack-call.patch (renamed from patches.fixes/vhost-vsock-fix-use-after-free-in-network-stack-call.patch)0
-rw-r--r--patches.drivers/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch (renamed from patches.suse/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch)0
-rw-r--r--patches.drivers/virtio-net-keep-vnet-header-zeroed-after-processing-.patch (renamed from patches.suse/virtio-net-keep-vnet-header-zeroed-after-processing-.patch)0
-rw-r--r--patches.drivers/x86-nfit_test-add-unit-test-for-memcpy_mcsafe.patch (renamed from patches.fixes/x86-nfit_test-Add-unit-test-for-memcpy_mcsafe.patch)0
-rw-r--r--patches.drm/0001-drm-ast-Fix-connector-leak-during-driver-unload.patch (renamed from patches.drm/drm-ast-Fix-connector-leak-during-driver-unload.patch)0
-rw-r--r--patches.drm/0001-drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch (renamed from patches.drm/drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch)0
-rw-r--r--patches.drm/0001-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch (renamed from patches.drm/0002-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch)0
-rw-r--r--patches.drm/0001-drm-mediatek-Fix-an-error-code-in-mtk_hdmi_dt_parse_.patch34
-rw-r--r--patches.drm/0002-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch (renamed from patches.drm/0003-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch)0
-rw-r--r--patches.drm/0002-drm-msm-Fix-error-return-checking.patch (renamed from patches.drm/drm-msm-Fix-error-return-checking.patch)0
-rw-r--r--patches.drm/0002-drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch (renamed from patches.drm/drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch)0
-rw-r--r--patches.drm/0003-drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch (renamed from patches.drm/drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch)0
-rw-r--r--patches.drm/0003-drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch (renamed from patches.drm/drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch)0
-rw-r--r--patches.drm/0004-Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch (renamed from patches.drm/Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch)0
-rw-r--r--patches.drm/0004-drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch (renamed from patches.drm/drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch)0
-rw-r--r--patches.drm/0006-drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch (renamed from patches.drm/drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch)0
-rw-r--r--patches.drm/0940-drm-ast-simplify-function-ast_bo_unpin (renamed from patches.drm/drm-ast-Simplify-function-ast_bo_unpin.patch)3
-rw-r--r--patches.drm/0941-drm-ast-free-container-instead-of-member-in-ast_user_framebuffer_destroy (renamed from patches.drm/drm-ast-Free-container-instead-of-member-in-ast_user_framebuffer_destroy.patch)3
-rw-r--r--patches.drm/0942-drm-ast-fix-memleak-in-error-path-in-ast_bo_create (renamed from patches.drm/drm-ast-Fix-memleak-in-error-path-in-ast_bo_create.patch)3
-rw-r--r--patches.drm/0943-drm-ast-add-an-crtc_disable-callback-to-the-crtc-helper-funcs (renamed from patches.drm/drm-ast-Add-an-crtc_disable-callback-to-the-crtc-helper-funcs.patch)3
-rw-r--r--patches.drm/0944-drm-ast-actually-load-dp501-firmware-when-required (renamed from patches.drm/drm-ast-Actually-load-DP501-firmware-when-required.patch)3
-rw-r--r--patches.drm/1070-drm-radeon-set-depth-on-low-mem-to-16-bpp-instead-of-8-bpp (renamed from patches.drm/drm-radeon-limit-bpp-for-low-vram.patch)3
-rw-r--r--patches.drm/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch (renamed from patches.arch/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch)0
-rw-r--r--patches.drm/6515-drm-add-drm-client-cap-for-aspect-ratio (renamed from patches.drm/drm-Add-DRM-client-cap-for-aspect-ratio)0
-rw-r--r--patches.drm/6516-drm-handle-aspect-ratio-info-in-legacy-modeset-path (renamed from patches.drm/drm-Handle-aspect-ratio-info-in-legacy-modeset-path)0
-rw-r--r--patches.drm/6517-drm-expose-modes-with-aspect-ratio-only-if-requested (renamed from patches.drm/drm-Expose-modes-with-aspect-ratio-only-if-requested)0
-rw-r--r--patches.drm/6518-drm-add-aspect-ratio-parsing-in-drm-layer (renamed from patches.drm/drm-Add-aspect-ratio-parsing-in-DRM-layer)0
-rw-r--r--patches.drm/6519-drm-add-and-handle-new-aspect-ratios-in-drm-layer (renamed from patches.drm/drm-Add-and-handle-new-aspect-ratios-in-DRM-layer)0
-rw-r--r--patches.drm/8855-drm-i915-audio-hook-up-component-bindings-even-if-displays-are-disabled (renamed from patches.drm/0001-drm-i915-audio-Hook-up-component-bindings-even-if-di.patch)3
-rw-r--r--patches.drm/ALSA-hda-Drop-useless-WARN_ON (renamed from patches.drivers/ALSA-hda-Drop-useless-WARN_ON)0
-rw-r--r--patches.drm/drm-i915-gvt-Annotate-iomem-usage.patch53
-rw-r--r--patches.drm/drm-nouveau-volt-gf117-fix-speedo-readout-register.patch130
-rw-r--r--patches.drm/x86-early-quirks-export-the-stolen-region-as-a-resou (renamed from patches.drivers/x86-early-quirks-export-the-stolen-region-as-a-resou)0
-rw-r--r--patches.drm/x86-gpu-add-CFL-to-early-quirks (renamed from patches.drivers/x86-gpu-add-CFL-to-early-quirks)0
-rw-r--r--patches.fixes/0001-PCI-pciehp-Convert-to-threaded-IRQ.patch209
-rw-r--r--patches.fixes/0001-PCI-pciehp-Ignore-Link-State-Changes-after-powering-.patch54
-rw-r--r--patches.fixes/0001-RDMA-iw_cxgb4-Drop-__GFP_NOFAIL.patch34
-rw-r--r--patches.fixes/0001-cxgb4-Add-capability-to-get-set-SGE-Doorbell-Queue-T.patch268
-rw-r--r--patches.fixes/0001-cxgb4-Add-flag-tc_flower_initialized.patch76
-rw-r--r--patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-id-0x50ae.patch28
-rw-r--r--patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-ids-0x50af-and-0x50b0.patch29
-rw-r--r--patches.fixes/0001-cxgb4-Add-new-T6-PCI-device-ids-0x608a.patch28
-rw-r--r--patches.fixes/0001-cxgb4-Add-support-for-FW_ETH_TX_PKT_VM_WR.patch483
-rw-r--r--patches.fixes/0001-cxgb4-Add-support-to-read-actual-provisioned-resourc.patch405
-rw-r--r--patches.fixes/0001-cxgb4-Added-missing-break-in-ndo_udp_tunnel_-add-del.patch42
-rw-r--r--patches.fixes/0001-cxgb4-Export-sge_host_page_size-to-ulds.patch38
-rw-r--r--patches.fixes/0001-cxgb4-Remove-SGE_HOST_PAGE_SIZE-dependency-on-page-s.patch51
-rw-r--r--patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch278
-rw-r--r--patches.fixes/0001-cxgb4-assume-flash-part-size-to-be-4MB-if-it-can-t-b.patch106
-rw-r--r--patches.fixes/0001-cxgb4-collect-ASIC-LA-dumps-from-ULP-TX.patch136
-rw-r--r--patches.fixes/0001-cxgb4-collect-number-of-free-PSTRUCT-page-pointers.patch115
-rw-r--r--patches.fixes/0001-cxgb4-convert-flower-table-to-use-rhashtable.patch232
-rw-r--r--patches.fixes/0001-cxgb4-cxgb4vf-Add-support-for-SGE-doorbell-queue-tim.patch874
-rw-r--r--patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch67
-rw-r--r--patches.fixes/0001-cxgb4-cxgb4vf-Link-management-changes.patch229
-rw-r--r--patches.fixes/0001-cxgb4-display-number-of-rx-and-tx-pages-free.patch86
-rw-r--r--patches.fixes/0001-cxgb4-do-not-return-DUPLEX_UNKNOWN-when-link-is-down.patch48
-rw-r--r--patches.fixes/0001-cxgb4-fix-the-error-path-of-cxgb4_uld_register.patch136
-rw-r--r--patches.fixes/0001-cxgb4-move-Tx-Rx-free-pages-collection-to-common-cod.patch88
-rw-r--r--patches.fixes/0001-cxgb4-remove-the-unneeded-locks.patch247
-rw-r--r--patches.fixes/0001-cxgb4-update-supported-DCB-version.patch87
-rw-r--r--patches.fixes/0001-cxgb4-use-FW_PORT_ACTION_L1_CFG32-for-32-bit-capabil.patch49
-rw-r--r--patches.fixes/0001-cxgb4-use-new-fw-interface-to-get-the-VIN-and-smt-in.patch412
-rw-r--r--patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch46
-rw-r--r--patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch37
-rw-r--r--patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch48
-rw-r--r--patches.fixes/0001-futex-Ensure-that-futex-address-is-aligned-in-handle.patch51
-rw-r--r--patches.fixes/0001-futex-Handle-early-deadlock-return-correctly.patch232
-rw-r--r--patches.fixes/0001-gre6-use-log_ecn_error-module-parameter-in-ip6_tnl_r.patch34
-rw-r--r--patches.fixes/0001-iw_cxgb4-cq-qp-mask-depends-on-bar2-pages-in-a-host-.patch56
-rw-r--r--patches.fixes/0001-iwiwifi-fix-bad-monitor-buffer-register-addresses.patch30
-rw-r--r--patches.fixes/0001-iwlwifi-fix-send-hcmd-timeout-recovery-flow.patch128
-rw-r--r--patches.fixes/0001-mwifiex-don-t-advertise-IBSS-features-without-FW-sup.patch65
-rw-r--r--patches.fixes/0001-net-bridge-add-vlan_tunnel-to-bridge-port-policies.patch34
-rw-r--r--patches.fixes/0001-netfilter-ip6t_MASQUERADE-add-dependency-on-conntrac.patch47
-rw-r--r--patches.fixes/0001-rdma-cxgb4-Add-support-for-kernel-mode-SRQ-s.patch1750
-rw-r--r--patches.fixes/0001-rdma-cxgb4-Add-support-for-srq-functions-structs.patch319
-rw-r--r--patches.fixes/0001-rdma-cxgb4-Remove-a-set-but-not-used-variable.patch40
-rw-r--r--patches.fixes/0001-rdma-cxgb4-fix-some-info-leaks.patch66
-rw-r--r--patches.fixes/0001-rxrpc-Don-t-release-call-mutex-on-error-pointer.patch39
-rw-r--r--patches.fixes/0001-xen-Prevent-buffer-overflow-in-privcmd-ioctl.patch38
-rw-r--r--patches.fixes/0009-xfs-rewrite-getbmap-using-the-xfs_iext_-helpers.patch15
-rw-r--r--patches.fixes/9p-do-not-trust-pdu-content-for-stat-item-size.patch77
-rw-r--r--patches.fixes/ACPI-SBS-Fix-GPE-storm-on-recent-MacBookPro-s.patch56
-rw-r--r--patches.fixes/CIFS-fix-POSIX-lock-leak-and-invalid-ptr-deref.patch148
-rw-r--r--patches.fixes/KEYS-always-initialize-keyring_index_key-desc_len.patch104
-rw-r--r--patches.fixes/KEYS-user-Align-the-payload-buffer.patch47
-rw-r--r--patches.fixes/NFS-Fix-dentry-revalidation-on-NFSv4-lookup.patch65
-rw-r--r--patches.fixes/blk-mq-remove-synchronize_rcu-from-blk_mq_del_queue_.patch (renamed from patches.fixes/0001-blk-mq-remove-synchronize_rcu-from-blk_mq_del_queue_.patch)0
-rw-r--r--patches.fixes/blk-mq-switch-queue_rq-return-value-to-blk_status_t.patch (renamed from patches.suse/0022-blk-mq-switch-queue_rq-return-value-to-blk_status_t.patch)0
-rw-r--r--patches.fixes/block-Dedicated-error-code-fixups.patch (renamed from patches.suse/0026-block-Dedicated-error-code-fixups.patch)0
-rw-r--r--patches.fixes/block-blk_init_allocated_queue-set-q-fq-as-NULL-in-t.patch (renamed from patches.fixes/0001-block-blk_init_allocated_queue-set-q-fq-as-NULL-in-t.patch)0
-rw-r--r--patches.fixes/block-introduce-new-block-status-code-type.patch (renamed from patches.suse/0016-block-introduce-new-block-status-code-type.patch)0
-rw-r--r--patches.fixes/block-swim3-make-of_device_ids-const.patch (renamed from patches.suse/0027-block-swim3-make-of_device_ids-const.patch)0
-rw-r--r--patches.fixes/block-switch-bios-to-blk_status_t.patch (renamed from patches.suse/0023-block-switch-bios-to-blk_status_t.patch)0
-rw-r--r--patches.fixes/block_dev-propagate-bio_iov_iter_get_pages-error-in-.patch (renamed from patches.suse/0018-block_dev-propagate-bio_iov_iter_get_pages-error-in-.patch)0
-rw-r--r--patches.fixes/bpf-fix-use-after-free-in-bpf_evict_inode.patch172
-rw-r--r--patches.fixes/cgroup-fix-parsing-empty-mount-option-string.patch45
-rw-r--r--patches.fixes/char_dev-Fix-off-by-one-bugs-in-find_dynamic_major.patch (renamed from patches.drivers/char_dev-Fix-off-by-one-bugs-in-find_dynamic_major.patch)0
-rw-r--r--patches.fixes/char_dev-extend-dynamic-allocation-of-majors-into-a-.patch (renamed from patches.drivers/char_dev-extend-dynamic-allocation-of-majors-into-a-.patch)0
-rw-r--r--patches.fixes/cifs-connect-to-servername-instead-of-IP-for-IPC-sha.patch (renamed from patches.fixes/cifs-connect-to-servername-instead-of-IP-for-IPC-share.patch)0
-rw-r--r--patches.fixes/crypto-pcbc-remove-bogus-memcpy-s-with-src-dest.patch92
-rw-r--r--patches.fixes/crypto-sha256-arm-fix-crash-bug-in-Thumb2-build.patch99
-rw-r--r--patches.fixes/crypto-sha512-arm-fix-crash-bug-in-Thumb2-build.patch99
-rw-r--r--patches.fixes/crypto-x86-poly1305-fix-overflow-during-partial-redu.patch192
-rw-r--r--patches.fixes/dm-allocate-struct-mapped_device-with-kvzalloc.patch (renamed from patches.fixes/0001-dm-allocate-struct-mapped_device-with-kvzalloc.patch)0
-rw-r--r--patches.fixes/dm-change-end_io-calling-convention.patch (renamed from patches.suse/0015-dm-change-end_io-calling-convention.patch)0
-rw-r--r--patches.fixes/dm-don-t-return-errnos-from-map.patch (renamed from patches.suse/0014-dm-don-t-return-errnos-from-map.patch)0
-rw-r--r--patches.fixes/dm-fix-REQ_RAHEAD-handling.patch (renamed from patches.suse/0012-dm-fix-REQ_RAHEAD-handling.patch)0
-rw-r--r--patches.fixes/dm-missing-break-in-process_queued_bios.patch (renamed from patches.suse/0025-dm-missing-break-in-process_queued_bios.patch)0
-rw-r--r--patches.fixes/dm-mpath-merge-do_end_io_bio-into-multipath_end_io_b.patch (renamed from patches.suse/0013-dm-mpath-merge-do_end_io_bio-into-multipath_end_io_b.patch)0
-rw-r--r--patches.fixes/ext4-close-race-between-direct-IO-and-ext4_break_lay.patch (renamed from patches.fixes/ext4-close-race-between-direct-IO-and-ext4_break_layouts.patch)3
-rw-r--r--patches.fixes/fix-cgroup_do_mount-handling-of-failure-exits.patch103
-rw-r--r--patches.fixes/fs-avoid-fdput-after-failed-fdget-in-vfs_dedupe_file.patch49
-rw-r--r--patches.fixes/fs-remove-the-unused-error-argument-to-dio_end_io.patch (renamed from patches.suse/0020-fs-remove-the-unused-error-argument-to-dio_end_io.patch)0
-rw-r--r--patches.fixes/fs-simplify-dio_bio_complete.patch (renamed from patches.suse/0021-fs-simplify-dio_bio_complete.patch)0
-rw-r--r--patches.fixes/fscache-Fix-race-in-fscache_op_complete-due-to-split.patch (renamed from patches.fixes/0001-fscache-Fix-race-in-fscache_op_complete-due-to-split.patch)0
-rw-r--r--patches.fixes/gfs2-remove-the-unused-sd_log_error-field.patch (renamed from patches.suse/0019-gfs2-remove-the-unused-sd_log_error-field.patch)0
-rw-r--r--patches.fixes/md-batch-flush-requests.patch169
-rw-r--r--patches.fixes/nvme-ensure-forward-progress-during-admin-passthru.patch27
-rw-r--r--patches.fixes/nvme-fix-the-dangerous-reference-of-namespaces-list.patch71
-rw-r--r--patches.fixes/nvme-flush-namespace-scanning-work-just-before-remov.patch2
-rw-r--r--patches.fixes/nvme-rdma-fix-merge-error.patch (renamed from patches.suse/0017-nvme-rdma-fix-merge-error.patch)0
-rw-r--r--patches.fixes/ring-buffer-Check-if-memory-is-available-before-allo.patch72
-rw-r--r--patches.fixes/sbitmap-fix-race-in-wait-batch-accounting.patch (renamed from patches.fixes/0001-sbitmap-fix-race-in-wait-batch-accounting.patch)0
-rw-r--r--patches.fixes/tracing-blktrace-Fix-to-allow-setting-same-value.patch (renamed from patches.fixes/0001-tracing-blktrace-Fix-to-allow-setting-same-value.patch)0
-rw-r--r--patches.fixes/tracing-hrtimer-Fix-tracing-bugs-by-taking-all-clock.patch73
-rw-r--r--patches.fixes/vfs-Avoid-softlockups-in-drop_pagecache_sb.patch3
-rw-r--r--patches.fixes/vfs-exit-early-from-zero-length-remap-operations.patch32
-rw-r--r--patches.fixes/vfs-limit-size-of-dedupe.patch33
-rw-r--r--patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch92
-rw-r--r--patches.fixes/xfs-allow-xfs_lock_two_inodes-to-take-different-EXCL.patch193
-rw-r--r--patches.fixes/xfs-call-xfs_qm_dqattach-before-performing-reflink-o.patch36
-rw-r--r--patches.fixes/xfs-cap-the-length-of-deduplication-requests.patch50
-rw-r--r--patches.fixes/xfs-clean-up-xfs_reflink_remap_blocks-call-site.patch109
-rw-r--r--patches.fixes/xfs-fix-data-corruption-w-unaligned-dedupe-ranges.patch70
-rw-r--r--patches.fixes/xfs-fix-data-corruption-w-unaligned-reflink-ranges.patch109
-rw-r--r--patches.fixes/xfs-fix-pagecache-truncation-prior-to-reflink.patch40
-rw-r--r--patches.fixes/xfs-flush-removing-page-cache-in-xfs_reflink_remap_p.patch94
-rw-r--r--patches.fixes/xfs-only-grab-shared-inode-locks-for-source-file-dur.patch122
-rw-r--r--patches.fixes/xfs-refactor-clonerange-preparation-into-a-separate-.patch192
-rw-r--r--patches.fixes/xfs-reflink-find-shared-should-take-a-transaction.patch121
-rw-r--r--patches.fixes/xfs-reflink-should-break-pnfs-leases-before-sharing-.patch91
-rw-r--r--patches.fixes/xfs-remove-dest-file-s-post-eof-preallocations-befor.patch54
-rw-r--r--patches.fixes/xfs-update-ctime-and-remove-suid-before-cloning-file.patch66
-rw-r--r--patches.fixes/xfs-zero-posteof-blocks-when-cloning-above-eof.patch78
-rw-r--r--patches.kabi/KABI-cpu-hotplug-provide-the-old-get-put_online_cpus.patch48
-rw-r--r--patches.kabi/KVM-Fix-kABI-for-AMD-SMAP-Errata-workaround.patch28
-rw-r--r--patches.kabi/fix-kvm-kabi.patch38
-rw-r--r--patches.kabi/kABI-Hide-get_msr_feature-in-kvm_x86_ops.patch4
-rw-r--r--patches.kabi/kabi-cxgb4-MU.patch194
-rw-r--r--patches.kabi/kabi-restore-icmp_send.patch55
-rw-r--r--patches.kabi/kvm-x86-kABI-fix-for-vm_alloc-vm_free-changes.patch8
-rw-r--r--patches.kabi/kvm_x86_ops-l1tf-kabi-fix.patch28
-rw-r--r--patches.kabi/md-batch-flush-requests-kabi.patch39
-rw-r--r--patches.kernel.org/0001-drm-udl-add-a-release-method-and-delay-modeset-teard.patch63
-rw-r--r--patches.suse/0001-RDMA-cxgb4-Make-c4iw_poll_cq_one-easier-to-analyze.patch119
-rw-r--r--patches.suse/0001-rdma-cxgb4-Add-support-for-64Byte-cqes.patch256
-rw-r--r--patches.suse/0001-x86-tsc-Force-inlining-of-cyc2ns-bits.patch61
-rw-r--r--patches.suse/0005-rbd-whitelist-rbd_feature_operations-feature-bit.patch (renamed from patches.fixes/0001-rbd-whitelist-RBD_FEATURE_OPERATIONS-feature-bit.patch)0
-rw-r--r--patches.suse/0041-dax-dm-allow-device-mapper-to-operate-without-dax-su.patch (renamed from patches.fixes/dax-dm-allow-device-mapper-to-operate-without-dax-su.patch)0
-rw-r--r--patches.suse/0080-dm-thin-metadata-remove-needless-work-from-__commit_.patch (renamed from patches.fixes/0001-dm-thin-metadata-remove-needless-work-from-__commit_.patch)0
-rw-r--r--patches.suse/0081-dm-thin-handle-running-out-of-data-space-vs-concurre.patch (renamed from patches.fixes/0001-dm-thin-handle-running-out-of-data-space-vs-concurre.patch)0
-rw-r--r--patches.suse/0083-block-reset-bi_iter.bi_done-after-splitting-bio.patch (renamed from patches.fixes/0001-block-reset-bi_iter.bi_done-after-splitting-bio.patch)0
-rw-r--r--patches.suse/0084-Partially-revert-block-fail-op_is_write-requests-to-.patch (renamed from patches.fixes/Partially-revert-block-fail-op_is_write-requests-to-.patch)0
-rw-r--r--patches.suse/0088-block-allow-max_discard_segments-to-be-stacked.patch (renamed from patches.fixes/0001-block-allow-max_discard_segments-to-be-stacked.patch)0
-rw-r--r--patches.suse/0101-dm-cache-only-allow-a-single-io_mode-cache-feature-t.patch (renamed from patches.fixes/0001-dm-cache-only-allow-a-single-io_mode-cache-feature-t.patch)0
-rw-r--r--patches.suse/0104-dm-integrity-change-suspending-variable-from-bool-to.patch (renamed from patches.fixes/0001-dm-integrity-change-suspending-variable-from-bool-to.patch)0
-rw-r--r--patches.suse/0115-dm-writecache-report-start_sector-in-status-line.patch (renamed from patches.fixes/0001-dm-writecache-report-start_sector-in-status-line.patch)0
-rw-r--r--patches.suse/0118-dm-thin-stop-no_space_timeout-worker-when-switching-.patch (renamed from patches.fixes/0001-dm-thin-stop-no_space_timeout-worker-when-switching-.patch)0
-rw-r--r--patches.suse/0119-dm-cache-metadata-save-in-core-policy_hint_size-to-o.patch (renamed from patches.fixes/0001-dm-cache-metadata-save-in-core-policy_hint_size-to-o.patch)0
-rw-r--r--patches.suse/0123-dm-cache-metadata-set-dirty-on-all-cache-blocks-afte.patch (renamed from patches.fixes/0001-dm-cache-metadata-set-dirty-on-all-cache-blocks-afte.patch)0
-rw-r--r--patches.suse/0124-dm-crypt-don-t-decrease-device-limits.patch (renamed from patches.fixes/0001-dm-crypt-don-t-decrease-device-limits.patch)0
-rw-r--r--patches.suse/0125-dm-writecache-fix-a-crash-due-to-reading-past-end-of.patch (renamed from patches.fixes/0001-dm-writecache-fix-a-crash-due-to-reading-past-end-of.patch)0
-rw-r--r--patches.suse/0159-dm-cache-metadata-ignore-hints-array-being-too-small.patch (renamed from patches.fixes/0001-dm-cache-metadata-ignore-hints-array-being-too-small.patch)0
-rw-r--r--patches.suse/0160-dm-cache-fix-resize-crash-if-user-doesn-t-reload-cac.patch (renamed from patches.fixes/0001-dm-cache-fix-resize-crash-if-user-doesn-t-reload-cac.patch)0
-rw-r--r--patches.suse/0161-dm-cache-destroy-migration_cache-if-cache-target-reg.patch (renamed from patches.fixes/0001-dm-cache-destroy-migration_cache-if-cache-target-reg.patch)0
-rw-r--r--patches.suse/0162-dm-fix-report-zone-remapping-to-account-for-partitio.patch (renamed from patches.fixes/0001-dm-fix-report-zone-remapping-to-account-for-partitio.patch)0
-rw-r--r--patches.suse/0163-dm-linear-eliminate-linear_end_io-call-if-CONFIG_DM_.patch (renamed from patches.fixes/0001-dm-linear-eliminate-linear_end_io-call-if-CONFIG_DM_.patch)0
-rw-r--r--patches.suse/0164-dm-linear-fix-linear_end_io-conditional-definition.patch (renamed from patches.fixes/0001-dm-linear-fix-linear_end_io-conditional-definition.patch)0
-rw-r--r--patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch51
-rw-r--r--patches.suse/bnxt_en-Drop-oversize-TX-packets-to-prevent-errors.patch43
-rw-r--r--patches.suse/bonding-fix-PACKET_ORIGDEV-regression.patch96
-rw-r--r--patches.suse/bridge-do-not-add-port-to-router-list-when-receives-.patch55
-rw-r--r--patches.suse/cifs-Always-resolve-hostname-before-reconnecting.patch (renamed from patches.fixes/cifs-always-resolve-hostname-before-reconnecting.patch)0
-rw-r--r--patches.suse/device-dax-implement-pagesize-for-smaps-to-report-mmupagesize.patch (renamed from patches.drivers/device-dax-implement-pagesize-for-smaps-to-report-MM.patch)0
-rw-r--r--patches.suse/do-not-default-to-ibrs-on-skl.patch54
-rw-r--r--patches.suse/dsa-mv88e6xxx-Ensure-all-pending-interrupts-are-hand.patch89
-rw-r--r--patches.suse/hv_netvsc-Fix-IP-header-checksum-for-coalesced-packe.patch57
-rw-r--r--patches.suse/ipc-shm.c-add-pagesize-function-to-shm_vm_ops.patch (renamed from patches.fixes/ipc-shm-c-add-pagesize-function-to-shm_vm_ops.patch)0
-rw-r--r--patches.suse/ipv4-Return-error-for-RTA_VIA-attribute.patch43
-rw-r--r--patches.suse/ipv6-Return-error-for-RTA_VIA-attribute.patch43
-rw-r--r--patches.suse/ipv6-propagate-genlmsg_reply-return-code.patch35
-rw-r--r--patches.suse/ipvlan-disallow-userns-cap_net_admin-to-change-globa.patch128
-rw-r--r--patches.suse/kcm-switch-order-of-device-registration-to-fix-a-cra.patch88
-rw-r--r--patches.suse/missing-barriers-in-some-of-unix_sock-addr-and-path-.patch231
-rw-r--r--patches.suse/mm-hugetlbfs-introduce-pagesize-to-vm_operations_struct.patch (renamed from patches.drivers/mm-hugetlbfs-introduce-pagesize-to-vm_operations_str.patch)0
-rw-r--r--patches.suse/mm-powerpc-use-vma_kernel_pagesize-in-vma_mmu_pagesize.patch (renamed from patches.drivers/mm-powerpc-use-vma_kernel_pagesize-in-vma_mmu_pagesi.patch)0
-rw-r--r--patches.suse/mm-sysctl-make-numa-stats-configurable.patch (renamed from patches.suse/0001-mm-sysctl-make-NUMA-stats-configurable.patch)0
-rw-r--r--patches.suse/mpls-Return-error-for-RTA_GATEWAY-attribute.patch32
-rw-r--r--patches.suse/msft-hv-1860-scsi-storvsc-Reduce-default-ring-buffer-size-to-128-.patch (renamed from patches.suse/suse-hv-storvsc_ringbuffer_size.patch)3
-rw-r--r--patches.suse/net-Add-__icmp_send-helper.patch73
-rw-r--r--patches.suse/net-Add-header-for-usage-of-fls64.patch25
-rw-r--r--patches.suse/net-Do-not-allocate-page-fragments-that-are-not-skb-.patch43
-rw-r--r--patches.suse/net-Fix-for_each_netdev_feature-on-Big-endian.patch86
-rw-r--r--patches.suse/net-Set-rtm_table-to-RT_TABLE_COMPAT-for-ipv6-for-ta.patch30
-rw-r--r--patches.suse/net-avoid-false-positives-in-untrusted-gso-validatio.patch51
-rw-r--r--patches.suse/net-avoid-use-IPCB-in-cipso_v4_error.patch101
-rw-r--r--patches.suse/net-bridge-remove-ipv6-zero-address-check-in-mcast-q.patch48
-rw-r--r--patches.suse/net-dsa-mv88e6xxx-Fix-u64-statistics.patch31
-rw-r--r--patches.suse/net-fix-IPv6-prefix-route-residue.patch44
-rw-r--r--patches.suse/net-hsr-fix-memory-leak-in-hsr_dev_finalize.patch109
-rw-r--r--patches.suse/net-hsr-fix-possible-crash-in-add_timer.patch133
-rw-r--r--patches.suse/net-mlx5e-Don-t-overwrite-pedit-action-when-multiple.patch97
-rw-r--r--patches.suse/net-nfc-Fix-NULL-dereference-on-nfc_llcp_build_tlv-f.patch154
-rw-r--r--patches.suse/net-packet-Set-__GFP_NOWARN-upon-allocation-in-alloc.patch79
-rw-r--r--patches.suse/net-packet-fix-4gb-buffer-limit-due-to-overflow-chec.patch37
-rw-r--r--patches.suse/net-sit-fix-UBSAN-Undefined-behaviour-in-check_6rd.patch74
-rw-r--r--patches.suse/net-sit-fix-memory-leak-in-sit_init_net.patch51
-rw-r--r--patches.suse/net-socket-set-sock-sk-to-NULL-after-calling-proto_o.patch83
-rw-r--r--patches.suse/net-validate-untrusted-gso-packets-without-csum-offl.patch62
-rw-r--r--patches.suse/net-x25-fix-a-race-in-x25_bind.patch136
-rw-r--r--patches.suse/net-x25-fix-use-after-free-in-x25_device_event.patch148
-rw-r--r--patches.suse/net-x25-reset-state-in-x25_connect.patch84
-rw-r--r--patches.suse/net_sched-fix-two-more-memory-leaks-in-cls_tcindex.patch89
-rw-r--r--patches.suse/netlabel-fix-out-of-bounds-memory-accesses.patch51
-rw-r--r--patches.suse/qmi_wwan-Add-support-for-Quectel-EG12-EM12.patch83
-rw-r--r--patches.suse/ravb-Decrease-TxFIFO-depth-of-Q3-and-Q2-to-one.patch46
-rw-r--r--patches.suse/rds-fix-refcount-bug-in-rds_sock_addref.patch98
-rw-r--r--patches.suse/route-set-the-deleted-fnhe-fnhe_daddr-to-0-in-ip_del.patch59
-rw-r--r--patches.suse/rxrpc-Fix-client-call-queueing-waiting-for-channel.patch47
-rw-r--r--patches.suse/sctp-call-gso_reset_checksum-when-computing-checksum.patch73
-rw-r--r--patches.suse/sit-check-if-IPv6-enabled-before-calling-ip6_err_gen.patch50
-rw-r--r--patches.suse/tcp-tcp_v4_err-should-be-more-careful.patch44
-rw-r--r--patches.suse/tipc-fix-race-condition-causing-hung-sendto.patch83
-rw-r--r--patches.suse/tun-fix-blocking-read.patch40
-rw-r--r--patches.suse/tun-remove-unnecessary-memory-barrier.patch29
-rw-r--r--patches.suse/vxlan-test-dev-flags-IFF_UP-before-calling-netif_rx.patch80
-rw-r--r--patches.suse/xen-netback-don-t-populate-the-hash-cache-on-XenBus-.patch53
-rw-r--r--patches.suse/xen-netback-fix-occasional-leak-of-grant-ref-mapping.patch63
-rw-r--r--rpm/config.sh6
-rw-r--r--series.conf944
-rw-r--r--supported.conf4
583 files changed, 21892 insertions, 571 deletions
diff --git a/blacklist.conf b/blacklist.conf
index 4cfe0400c5..adf268cb42 100644
--- a/blacklist.conf
+++ b/blacklist.conf
@@ -486,12 +486,15 @@ a81d1ab3cad77e20c2df8baef0a35a4980fc511c # nfc: revert: not applicable
ba552399954dde1b388f7749fecad5c349216981 # printk: fixes 719f6a7040f1bdaf96fcc that is needed only when printing trace buffer when panicing in NMI (bsc#1112173)
a338f84dc196f44b63ba0863d2f34fd9b1613572 # printk: fixes 719f6a7040f1bdaf96fcc that is needed only when printing trace buffer when panicing in NMI (bsc#1112173)
03fc7f9c99c1e7ae2925d459e8487f1a6f199f79 # printk: fixes 719f6a7040f1bdaf96fcc that is needed only when printing trace buffer when panicing in NMI (bsc#1112173)
+c3fee60908db4a8594f2e4a2131998384b8fa006 # printk: cosmetic; anyway, it fixes a commit that we do not have in SLE15
+b60706644282af04e4aa57da5af57470d453cd1f # vsprintf: cosmetic
741a76b350897604c48fb12beff1c9b77724dc96 # kthread: fixes rather rare races in CPU hotplug; there are several followup fixes on top of it to get it actually right; does not worth the risk
4950276672fce5c241857540f8561c440663673d # kmemcheck removal; not for released products
d8be75663cec0069b85f80191abd2682ce4a512f # related to kmemcheck removal; not for released products
1f2cac107c591c24b60b115d6050adc213d10fc0 # blktrace: racy init/start-stop/teardown for ages; not worth it
a6da0024ffc19e0d47712bb5ca4fd083f76b07df # blktrace: fix unlocked registration of tracepoints; racy for ages; found by syzcaller; not worth it
6b7e633fe9c24682df550e5311f47fb524701586 # ring_buffer: just an optimization
+23721a755f98ac846897a013c92cccb281c1bcc8 # trace/xdp: compilation warning; we do not have the affected code
7685ab6c58557c6234f3540260195ecbee7fc4b3 # tracing: we do not have support for recording tgid of tasks (bsc#1112221)
90e406f96f630c07d631a021fd4af10aac913e77 # tracing: just a memory optimization
68e76e034b6b1c1ce2eece1ab8ae4008e14be470 # tracing: dependency fix found by randconfig; prevents a huge build
@@ -499,6 +502,11 @@ a6da0024ffc19e0d47712bb5ca4fd083f76b07df # blktrace: fix unlocked registration o
73c8d8945505acdcbae137c2e00a1232e0be709f # tracing: just a small annoyance when switching buffer snapshot
57ea2a34adf40f3a6e88409aafcf803b8945619a # tracing/kprobes: old bug; hard to trigger; rather just annoying
f143641bfef9a4a60c57af30de26c63057e7e695 # tracing: old and not serious bug
+a15f7fc20389a8827d5859907568b201234d4b79 # tracing: nothing serious
+26b68dd2f48fe7699a89f0cfbb9f4a650dc1c837 # tracing: cosmetic
+f8494fa3dd10b52eab47a9666a8bc34719a129aa # tracing: affected code is not in our kernel
+2519c1bbe38d7acacc9aacba303ca6f97482ed53 # tracing: affected code is not in our kernel
+9e7382153f80ba45a0bbcd540fb77d4b15f6e966 # tracing: affected code is not in our kernel
8114865ff82e200b383e46821c25cb0625b842b5 # ftrace: fixes a race when calculating timings in graph_tracer when options/graph-time is set to zero; non-trivial change; let's ignore until anyone complains
07f7175b43827640d1e69c9eded89aa089a234b4 # ftrace: see above 8114865ff82e200b383
f1f5b14afd7cce39e6a9b25c685e1ea34c231096 # ftrace: see above 8114865ff82e200b383
@@ -1053,3 +1061,23 @@ dfa88658fb0583abb92e062c7a9cd5a5b94f2a46 # powerpc/fsl: Update Spectre v2 report
0bbea75c476b77fa7d7811d6be911cc7583e640f # powerpc/traps: fix recoverability of machine check handling on book3s/32
179ab1cbf883575c3a585bcfc0f2160f1d22a149 # powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC - too invasive, we build this anyway
a89e7bcb18081c611eb6cf50edd440fa4983a71a # too invasive, would break kABI in the prerequisites
+47b16820c490149c2923e8474048f2c6e7557cab # Xilinx SystemACE is unsupported
+a592a3b8fc62af25a6e76aebde97a5d5f6f13e0f # No bugfix, just cleanup
+4771450c345dc5e3e3417d82aff62e0d88e7eee6 # No bugfix, just cleanup
+52d5dedc79bdcbac2976159a172069618cf31be5 # No bugfix, just cleanup
+210f494261e1e84ad1f15877baa1c615afe3b342 # No bugfix, just cleanup
+43d2b14b105fb00b8864c7b0ee7043cc1cc4a969 # No bugfix, just cleanup
+42560fb1f3c6c7f730897b7fa7a478bc37e0be50 # No bugfix, just cleanup
+b59c4830ca185ba0e9f9e046fb1cd10a4a92627a # No bugfix, just cleanup
+7390de1e99a70895721165d0ccd4a6e16482960a # No bugfix, just cleanup
+ea145aacf4ae8485cf179a4d0dc502e9f75044f4 # No bugfix, just cleanup
+83cdb56864bcb1466b454f17fff47348ca7925a2 # No bugfix, just cleanup
+bebd024e4815b1a170fcd21ead9c2222b23ce9e6 # SLE kernels already enable this
+23ff6ba8feec5c4bdf993af3fba3937d57883dc8 # applied with rdma/cxgb4: Add support for kernel mode SRQ's
+bbbe211c295ffb309247adb7b871dda60d92d2d5 # there is no do_xdp_generic() function, doesn't apply
+1de7edbb59c8f1b46071f66c5c97b8a59569eb51 # not needed
+62461ac2e5b6520b6d65fc6d7d7b4b8df4b848d8 # ditto
+69a330007091ea8a801dd9fcd897ec52f9529586 # breaks module options
+c7084edc3f6d67750f50d4183134c4fb5712a5c8 # do not disable R3964 in released products
+f76a16adc485699f95bb71fce114f97c832fe664 # don't change layout of kernel or modules
+1cab826b30c6275d479a6ab1dea1067e15dbec62 # pcie-dwc: not buildable, missing helper functions
diff --git a/kabi/severities b/kabi/severities
index 3e0760bb8d..9941ccfea8 100644
--- a/kabi/severities
+++ b/kabi/severities
@@ -63,3 +63,8 @@ fs/ceph PASS
# no out-of-tree users
drivers/crypto/ccp/* PASS
+
+# intermodule syms shared between cxgb4 and cxgb4vf
+drivers/net/ethernet/chelsio/cxgb4/* PASS
+drivers/net/ethernet/chelsio/cxgb4vf/* PASS
+drivers/net/ethernet/chelsio/libcxgb/* PASS
diff --git a/patches.arch/KVM-PPC-Book3S-HV-Fix-race-between-kvm_unmap_hva_ran.patch b/patches.arch/KVM-PPC-Book3S-HV-Fix-race-between-kvm_unmap_hva_ran.patch
new file mode 100644
index 0000000000..841f923bf4
--- /dev/null
+++ b/patches.arch/KVM-PPC-Book3S-HV-Fix-race-between-kvm_unmap_hva_ran.patch
@@ -0,0 +1,103 @@
+From 6432c092b77784a40d88b6ea5e1cdd691899e321 Mon Sep 17 00:00:00 2001
+From: Paul Mackerras <paulus@ozlabs.org>
+Date: Fri, 16 Nov 2018 21:28:18 +1100
+Subject: [PATCH 2/8] KVM: PPC: Book3S HV: Fix race between kvm_unmap_hva_range
+ and MMU mode switch
+
+References: bsc#1061840
+Patch-mainline: v5.0-rc1
+Git-commit: 234ff0b729ad882d20f7996591a964965647addf
+
+Testing has revealed an occasional crash which appears to be caused
+by a race between kvmppc_switch_mmu_to_hpt and kvm_unmap_hva_range_hv.
+The symptom is a NULL pointer dereference in __find_linux_pte() called
+from kvm_unmap_radix() with kvm->arch.pgtable == NULL.
+
+Looking at kvmppc_switch_mmu_to_hpt(), it does indeed clear
+kvm->arch.pgtable (via kvmppc_free_radix()) before setting
+kvm->arch.radix to NULL, and there is nothing to prevent
+kvm_unmap_hva_range_hv() or the other MMU callback functions from
+being called concurrently with kvmppc_switch_mmu_to_hpt() or
+kvmppc_switch_mmu_to_radix().
+
+This patch therefore adds calls to spin_lock/unlock on the kvm->mmu_lock
+around the assignments to kvm->arch.radix, and makes sure that the
+partition-scoped radix tree or HPT is only freed after changing
+kvm->arch.radix.
+
+This also takes the kvm->mmu_lock in kvmppc_rmap_reset() to make sure
+that the clearing of each rmap array (one per memslot) doesn't happen
+concurrently with use of the array in the kvm_unmap_hva_range_hv()
+or the other MMU callbacks.
+
+Fixes: 18c3640cefc7 ("KVM: PPC: Book3S HV: Add infrastructure for running HPT guests on radix host")
+Cc: stable@vger.kernel.org # v4.15+
+Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/kvm/book3s_64_mmu_hv.c | 3 +++
+ arch/powerpc/kvm/book3s_hv.c | 15 ++++++++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
+index 975e56056003..dbfe2f38dc2d 100644
+--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
++++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
+@@ -745,12 +745,15 @@ void kvmppc_rmap_reset(struct kvm *kvm)
+ srcu_idx = srcu_read_lock(&kvm->srcu);
+ slots = kvm_memslots(kvm);
+ kvm_for_each_memslot(memslot, slots) {
++ /* Mutual exclusion with kvm_unmap_hva_range etc. */
++ spin_lock(&kvm->mmu_lock);
+ /*
+ * This assumes it is acceptable to lose reference and
+ * change bits across a reset.
+ */
+ memset(memslot->arch.rmap, 0,
+ memslot->npages * sizeof(*memslot->arch.rmap));
++ spin_unlock(&kvm->mmu_lock);
+ }
+ srcu_read_unlock(&kvm->srcu, srcu_idx);
+ }
+diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
+index 0bd245ef9e8c..11f39607141e 100644
+--- a/arch/powerpc/kvm/book3s_hv.c
++++ b/arch/powerpc/kvm/book3s_hv.c
+@@ -3828,12 +3828,15 @@ static int kvmppc_hv_setup_htab_rma(struct kvm_vcpu *vcpu)
+ /* Must be called with kvm->lock held and mmu_ready = 0 and no vcpus running */
+ int kvmppc_switch_mmu_to_hpt(struct kvm *kvm)
+ {
++ kvmppc_rmap_reset(kvm);
++ kvm->arch.process_table = 0;
++ /* Mutual exclusion with kvm_unmap_hva_range etc. */
++ spin_lock(&kvm->mmu_lock);
++ kvm->arch.radix = 0;
++ spin_unlock(&kvm->mmu_lock);
+ kvmppc_free_radix(kvm);
+ kvmppc_update_lpcr(kvm, LPCR_VPM1,
+ LPCR_VPM1 | LPCR_UPRT | LPCR_GTSE | LPCR_HR);
+- kvmppc_rmap_reset(kvm);
+- kvm->arch.radix = 0;
+- kvm->arch.process_table = 0;
+ return 0;
+ }
+
+@@ -3845,11 +3848,13 @@ int kvmppc_switch_mmu_to_radix(struct kvm *kvm)
+ err = kvmppc_init_vm_radix(kvm);
+ if (err)
+ return err;
+-
++ /* Mutual exclusion with kvm_unmap_hva_range etc. */
++ spin_lock(&kvm->mmu_lock);
++ kvm->arch.radix = 1;
++ spin_unlock(&kvm->mmu_lock);
+ kvmppc_free_hpt(&kvm->arch.hpt);
+ kvmppc_update_lpcr(kvm, LPCR_UPRT | LPCR_GTSE | LPCR_HR,
+ LPCR_VPM1 | LPCR_UPRT | LPCR_GTSE | LPCR_HR);
+- kvm->arch.radix = 1;
+ return 0;
+ }
+
+--
+2.20.1
+
diff --git a/patches.arch/cpu-speculation-add-mitigations-cmdline-option.patch b/patches.arch/cpu-speculation-add-mitigations-cmdline-option.patch
new file mode 100644
index 0000000000..58fd60fc29
--- /dev/null
+++ b/patches.arch/cpu-speculation-add-mitigations-cmdline-option.patch
@@ -0,0 +1,161 @@
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+Date: Fri, 12 Apr 2019 15:39:28 -0500
+Subject: cpu/speculation: Add 'mitigations=' cmdline option
+Git-commit: 98af8452945c55652de68536afdde3b520fec429
+Patch-mainline: queued in subsystem tree
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
+References: bsc#1112178
+
+Keeping track of the number of mitigations for all the CPU speculation
+bugs has become overwhelming for many users. It's getting more and more
+complicated to decide which mitigations are needed for a given
+architecture. Complicating matters is the fact that each arch tends to
+have its own custom way to mitigate the same vulnerability.
+
+Most users fall into a few basic categories:
+
+a) they want all mitigations off;
+
+b) they want all reasonable mitigations on, with SMT enabled even if
+ it's vulnerable; or
+
+c) they want all reasonable mitigations on, with SMT disabled if
+ vulnerable.
+
+Define a set of curated, arch-independent options, each of which is an
+aggregation of existing options:
+
+- mitigations=off: Disable all mitigations.
+
+- mitigations=auto: [default] Enable all the default mitigations, but
+ leave SMT enabled, even if it's vulnerable.
+
+- mitigations=auto,nosmt: Enable all the default mitigations, disabling
+ SMT if needed by a mitigation.
+
+Currently, these options are placeholders which don't actually do
+anything. They will be fleshed out in upcoming patches.
+
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
+Reviewed-by: Jiri Kosina <jkosina@suse.cz>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: "H . Peter Anvin" <hpa@zytor.com>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Waiman Long <longman@redhat.com>
+Cc: Andrea Arcangeli <aarcange@redhat.com>
+Cc: Jon Masters <jcm@redhat.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: linuxppc-dev@lists.ozlabs.org
+Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
+Cc: linux-s390@vger.kernel.org
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-arch@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Tyler Hicks <tyhicks@canonical.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Randy Dunlap <rdunlap@infradead.org>
+Cc: Steven Price <steven.price@arm.com>
+Cc: Phil Auld <pauld@redhat.com>
+Link: https://lkml.kernel.org/r/b07a8ef9b7c5055c3a4637c87d07c296d5016fe0.1555085500.git.jpoimboe@redhat.com
+
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ Documentation/admin-guide/kernel-parameters.txt | 24 ++++++++++++++++++++++++
+ include/linux/cpu.h | 24 ++++++++++++++++++++++++
+ kernel/cpu.c | 15 +++++++++++++++
+ 3 files changed, 63 insertions(+)
+
+--- a/Documentation/admin-guide/kernel-parameters.txt
++++ b/Documentation/admin-guide/kernel-parameters.txt
+@@ -2374,6 +2374,30 @@
+ in the "bleeding edge" mini2440 support kernel at
+ http://repo.or.cz/w/linux-2.6/mini2440.git
+
++ mitigations=
++ Control optional mitigations for CPU vulnerabilities.
++ This is a set of curated, arch-independent options, each
++ of which is an aggregation of existing arch-specific
++ options.
++
++ off
++ Disable all optional CPU mitigations. This
++ improves system performance, but it may also
++ expose users to several CPU vulnerabilities.
++
++ auto (default)
++ Mitigate all CPU vulnerabilities, but leave SMT
++ enabled, even if it's vulnerable. This is for
++ users who don't want to be surprised by SMT
++ getting disabled across kernel upgrades, or who
++ have other ways of avoiding SMT-based attacks.
++ This is the default behavior.
++
++ auto,nosmt
++ Mitigate all CPU vulnerabilities, disabling SMT
++ if needed. This is for users who always want to
++ be fully mitigated, even if it means losing SMT.
++
+ mminit_loglevel=
+ [KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
+ parameter allows control of the logging verbosity for
+--- a/include/linux/cpu.h
++++ b/include/linux/cpu.h
+@@ -196,4 +196,28 @@ static inline void cpu_smt_check_topolog
+ static inline void cpu_smt_check_topology(void) { }
+ #endif
+
++/*
++ * These are used for a global "mitigations=" cmdline option for toggling
++ * optional CPU mitigations.
++ */
++enum cpu_mitigations {
++ CPU_MITIGATIONS_OFF,
++ CPU_MITIGATIONS_AUTO,
++ CPU_MITIGATIONS_AUTO_NOSMT,
++};
++
++extern enum cpu_mitigations cpu_mitigations;
++
++/* mitigations=off */
++static inline bool cpu_mitigations_off(void)
++{
++ return cpu_mitigations == CPU_MITIGATIONS_OFF;
++}
++
++/* mitigations=auto,nosmt */
++static inline bool cpu_mitigations_auto_nosmt(void)
++{
++ return cpu_mitigations == CPU_MITIGATIONS_AUTO_NOSMT;
++}
++
+ #endif /* _LINUX_CPU_H_ */
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -2082,3 +2082,18 @@ void __init boot_cpu_hotplug_init(void)
+ this_cpu_write(cpuhp_state.booted_once, true);
+ this_cpu_write(cpuhp_state.state, CPUHP_ONLINE);
+ }
++
++enum cpu_mitigations cpu_mitigations __ro_after_init = CPU_MITIGATIONS_AUTO;
++
++static int __init mitigations_parse_cmdline(char *arg)
++{
++ if (!strcmp(arg, "off"))
++ cpu_mitigations = CPU_MITIGATIONS_OFF;
++ else if (!strcmp(arg, "auto"))
++ cpu_mitigations = CPU_MITIGATIONS_AUTO;
++ else if (!strcmp(arg, "auto,nosmt"))
++ cpu_mitigations = CPU_MITIGATIONS_AUTO_NOSMT;
++
++ return 0;
++}
++early_param("mitigations", mitigations_parse_cmdline);
diff --git a/patches.arch/intel_idle-add-support-for-Jacobsville.patch b/patches.arch/intel_idle-add-support-for-Jacobsville.patch
new file mode 100644
index 0000000000..81b2bc5dba
--- /dev/null
+++ b/patches.arch/intel_idle-add-support-for-Jacobsville.patch
@@ -0,0 +1,33 @@
+From dba500ed0d3fa3400f7fe657c6d44e66bd4f5c96 Mon Sep 17 00:00:00 2001
+From: Zhang Rui <rui.zhang@intel.com>
+Date: Thu, 14 Feb 2019 21:35:06 +0800
+Subject: [PATCH] intel_idle: add support for Jacobsville
+
+References: jsc#SLE-5394
+Patch-mainline: v5.1-rc1
+Git-commit: 04b1d5d098491244f506c4265cc95b87210eef2f
+
+Jacobsville uses the same C-states as Denverton.
+
+Signed-off-by: Zhang Rui <rui.zhang@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/idle/intel_idle.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
+index 216d7ec88c0c..008eb4d58a86 100644
+--- a/drivers/idle/intel_idle.c
++++ b/drivers/idle/intel_idle.c
+@@ -1099,6 +1099,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
+ ICPU(INTEL_FAM6_ATOM_GOLDMONT, idle_cpu_bxt),
+ ICPU(INTEL_FAM6_ATOM_GEMINI_LAKE, idle_cpu_bxt),
+ ICPU(INTEL_FAM6_ATOM_DENVERTON, idle_cpu_dnv),
++ ICPU(INTEL_FAM6_ATOM_TREMONT_X, idle_cpu_dnv),
+ {}
+ };
+
+--
+2.20.1
+
diff --git a/patches.arch/kbuild-strip-whitespace-in-cmd_record_mcount-findstr.patch b/patches.arch/kbuild-strip-whitespace-in-cmd_record_mcount-findstr.patch
new file mode 100644
index 0000000000..790583e3f8
--- /dev/null
+++ b/patches.arch/kbuild-strip-whitespace-in-cmd_record_mcount-findstr.patch
@@ -0,0 +1,57 @@
+From 1a49b2fd8f58dd397043a17de9b3c421ccf8eda7 Mon Sep 17 00:00:00 2001
+From: Joe Lawrence <joe.lawrence@redhat.com>
+Date: Tue, 26 Mar 2019 10:50:28 -0400
+Subject: [PATCH] kbuild: strip whitespace in cmd_record_mcount findstring
+
+References: bsc#1065729
+Patch-mainline: v5.1-rc3
+Git-commit: 1a49b2fd8f58dd397043a17de9b3c421ccf8eda7
+
+CC_FLAGS_FTRACE may contain trailing whitespace that interferes with
+findstring.
+
+For example, commit 6977f95e63b9 ("powerpc: avoid -mno-sched-epilog on
+GCC 4.9 and newer") introduced a change such that on my ppc64le box,
+CC_FLAGS_FTRACE="-pg -mprofile-kernel ". (Note the trailing space.)
+When cmd_record_mcount is now invoked, findstring fails as the ftrace
+flags were found at very end of _c_flags, without the trailing space.
+
+ _c_flags=" ... -pg -mprofile-kernel"
+ CC_FLAGS_FTRACE="-pg -mprofile-kernel "
+ ^
+ findstring is looking for this extra space
+
+Remove the redundant whitespaces from CC_FLAGS_FTRACE in
+cmd_record_mcount to avoid this problem.
+
+[masahiro.yamada: This issue only happens in the released versions
+of GNU Make. CC_FLAGS_FTRACE will not contain the trailing space if
+you use the latest GNU Make, which contains commit b90fabc8d6f3
+("* NEWS: Do not insert a space during '+=' if the value is empty.") ]
+
+Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com> (refactoring)
+Fixes: 6977f95e63b9 ("powerpc: avoid -mno-sched-epilog on GCC 4.9 and newer").
+Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
+Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ scripts/Makefile.build | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+--- a/scripts/Makefile.build
++++ b/scripts/Makefile.build
+@@ -246,11 +246,8 @@ sub_cmd_record_mcount = set -e ; perl $(
+ "$(if $(part-of-module),1,0)" "$(@)";
+ recordmcount_source := $(srctree)/scripts/recordmcount.pl
+ endif
+-cmd_record_mcount = \
+- if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \
+- "$(CC_FLAGS_FTRACE)" ]; then \
+- $(sub_cmd_record_mcount) \
+- fi;
++cmd_record_mcount = $(if $(findstring $(strip $(CC_FLAGS_FTRACE)),$(_c_flags)), \
++ $(sub_cmd_record_mcount))
+ endif
+
+ ifdef CONFIG_STACK_VALIDATION
diff --git a/patches.arch/kvm-call-kvm_arch_memslots_updated-before-updating-memslots b/patches.arch/kvm-call-kvm_arch_memslots_updated-before-updating-memslots
new file mode 100644
index 0000000000..a2f748e47f
--- /dev/null
+++ b/patches.arch/kvm-call-kvm_arch_memslots_updated-before-updating-memslots
@@ -0,0 +1,186 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Tue, 5 Feb 2019 12:54:17 -0800
+Subject: KVM: Call kvm_arch_memslots_updated() before updating memslots
+Git-commit: 152482580a1b0accb60676063a1ac57b2d12daf6
+Patch-mainline: v5.1-rc1
+References: bsc#1132563
+
+kvm_arch_memslots_updated() is at this point in time an x86-specific
+hook for handling MMIO generation wraparound. x86 stashes 19 bits of
+the memslots generation number in its MMIO sptes in order to avoid
+full page fault walks for repeat faults on emulated MMIO addresses.
+Because only 19 bits are used, wrapping the MMIO generation number is
+possible, if unlikely. kvm_arch_memslots_updated() alerts x86 that
+the generation has changed so that it can invalidate all MMIO sptes in
+case the effective MMIO generation has wrapped so as to avoid using a
+stale spte, e.g. a (very) old spte that was created with generation==0.
+
+Given that the purpose of kvm_arch_memslots_updated() is to prevent
+consuming stale entries, it needs to be called before the new generation
+is propagated to memslots. Invalidating the MMIO sptes after updating
+memslots means that there is a window where a vCPU could dereference
+the new memslots generation, e.g. 0, and incorrectly reuse an old MMIO
+spte that was created with (pre-wrap) generation==0.
+
+Fixes: e59dbe09f8e6 ("KVM: Introduce kvm_arch_memslots_updated()")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/mips/include/asm/kvm_host.h | 2 +-
+ arch/powerpc/include/asm/kvm_host.h | 2 +-
+ arch/s390/include/asm/kvm_host.h | 2 +-
+ arch/x86/include/asm/kvm_host.h | 2 +-
+ arch/x86/kvm/mmu.c | 4 ++--
+ arch/x86/kvm/x86.c | 4 ++--
+ include/linux/kvm_host.h | 2 +-
+ virt/kvm/arm/mmu.c | 2 +-
+ virt/kvm/kvm_main.c | 7 +++++--
+ 9 files changed, 15 insertions(+), 12 deletions(-)
+
+diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
+index d2abd98471e8..41204a49cf95 100644
+--- a/arch/mips/include/asm/kvm_host.h
++++ b/arch/mips/include/asm/kvm_host.h
+@@ -1134,7 +1134,7 @@ static inline void kvm_arch_hardware_unsetup(void) {}
+ static inline void kvm_arch_sync_events(struct kvm *kvm) {}
+ static inline void kvm_arch_free_memslot(struct kvm *kvm,
+ struct kvm_memory_slot *free, struct kvm_memory_slot *dont) {}
+-static inline void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots) {}
++static inline void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen) {}
+ static inline void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) {}
+ static inline void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu) {}
+ static inline void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu) {}
+diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
+index 0f98f00da2ea..19693b8add93 100644
+--- a/arch/powerpc/include/asm/kvm_host.h
++++ b/arch/powerpc/include/asm/kvm_host.h
+@@ -837,7 +837,7 @@ struct kvm_vcpu_arch {
+ static inline void kvm_arch_hardware_disable(void) {}
+ static inline void kvm_arch_hardware_unsetup(void) {}
+ static inline void kvm_arch_sync_events(struct kvm *kvm) {}
+-static inline void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots) {}
++static inline void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen) {}
+ static inline void kvm_arch_flush_shadow_all(struct kvm *kvm) {}
+ static inline void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) {}
+ static inline void kvm_arch_exit(void) {}
+diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
+index d5d24889c3bc..c2b8c8c6c9be 100644
+--- a/arch/s390/include/asm/kvm_host.h
++++ b/arch/s390/include/asm/kvm_host.h
+@@ -878,7 +878,7 @@ static inline void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) {}
+ static inline void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) {}
+ static inline void kvm_arch_free_memslot(struct kvm *kvm,
+ struct kvm_memory_slot *free, struct kvm_memory_slot *dont) {}
+-static inline void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots) {}
++static inline void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen) {}
+ static inline void kvm_arch_flush_shadow_all(struct kvm *kvm) {}
+ static inline void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
+ struct kvm_memory_slot *slot) {}
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index 0e2ef41efb9d..c4758e1a8843 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -1254,7 +1254,7 @@ void kvm_mmu_clear_dirty_pt_masked(struct kvm *kvm,
+ struct kvm_memory_slot *slot,
+ gfn_t gfn_offset, unsigned long mask);
+ void kvm_mmu_zap_all(struct kvm *kvm);
+-void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, struct kvm_memslots *slots);
++void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, u64 gen);
+ unsigned int kvm_mmu_calculate_mmu_pages(struct kvm *kvm);
+ void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages);
+
+diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
+index 415d0e62cb3e..a53a0e7ad9e6 100644
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -5893,13 +5893,13 @@ static bool kvm_has_zapped_obsolete_pages(struct kvm *kvm)
+ return unlikely(!list_empty_careful(&kvm->arch.zapped_obsolete_pages));
+ }
+
+-void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, struct kvm_memslots *slots)
++void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, u64 gen)
+ {
+ /*
+ * The very rare case: if the generation-number is round,
+ * zap all shadow pages.
+ */
+- if (unlikely((slots->generation & MMIO_GEN_MASK) == 0)) {
++ if (unlikely((gen & MMIO_GEN_MASK) == 0)) {
+ kvm_debug_ratelimited("kvm: zapping shadow pages for mmio generation wraparound\n");
+ kvm_mmu_invalidate_zap_all_pages(kvm);
+ }
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 3de586f89730..03d26ffb29cd 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -9357,13 +9357,13 @@ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+ return -ENOMEM;
+ }
+
+-void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots)
++void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen)
+ {
+ /*
+ * memslots->generation has been incremented.
+ * mmio generation may have reached its maximum value.
+ */
+- kvm_mmu_invalidate_mmio_sptes(kvm, slots);
++ kvm_mmu_invalidate_mmio_sptes(kvm, gen);
+ }
+
+ int kvm_arch_prepare_memory_region(struct kvm *kvm,
+diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
+index c38cc5eb7e73..cf761ff58224 100644
+--- a/include/linux/kvm_host.h
++++ b/include/linux/kvm_host.h
+@@ -634,7 +634,7 @@ void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
+ struct kvm_memory_slot *dont);
+ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+ unsigned long npages);
+-void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots);
++void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen);
+ int kvm_arch_prepare_memory_region(struct kvm *kvm,
+ struct kvm_memory_slot *memslot,
+ const struct kvm_userspace_memory_region *mem,
+diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c
+index fbdf3ac2f001..e0355e0f8712 100644
+--- a/virt/kvm/arm/mmu.c
++++ b/virt/kvm/arm/mmu.c
+@@ -2350,7 +2350,7 @@ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+ return 0;
+ }
+
+-void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots)
++void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen)
+ {
+ }
+
+diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
+index 0a0ea8f4bb1b..d54f6578a849 100644
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -874,6 +874,7 @@ static struct kvm_memslots *install_new_memslots(struct kvm *kvm,
+ int as_id, struct kvm_memslots *slots)
+ {
+ struct kvm_memslots *old_memslots = __kvm_memslots(kvm, as_id);
++ u64 gen;
+
+ /*
+ * Set the low bit in the generation, which disables SPTE caching
+@@ -896,9 +897,11 @@ static struct kvm_memslots *install_new_memslots(struct kvm *kvm,
+ * space 0 will use generations 0, 4, 8, ... while * address space 1 will
+ * use generations 2, 6, 10, 14, ...
+ */
+- slots->generation += KVM_ADDRESS_SPACE_NUM * 2 - 1;
++ gen = slots->generation + KVM_ADDRESS_SPACE_NUM * 2 - 1;
+
+- kvm_arch_memslots_updated(kvm, slots);
++ kvm_arch_memslots_updated(kvm, gen);
++
++ slots->generation = gen;
+
+ return old_memslots;
+ }
+
diff --git a/patches.arch/KVM-Expose-new-cpu-features-to-guest.patch b/patches.arch/kvm-expose-new-cpu-features-to-guest.patch
index ef06479d96..ef06479d96 100644
--- a/patches.arch/KVM-Expose-new-cpu-features-to-guest.patch
+++ b/patches.arch/kvm-expose-new-cpu-features-to-guest.patch
diff --git a/patches.arch/kvm-nvmx-apply-addr-size-mask-to-effective-address-for-vmx-instructions b/patches.arch/kvm-nvmx-apply-addr-size-mask-to-effective-address-for-vmx-instructions
new file mode 100644
index 0000000000..d9af3a8389
--- /dev/null
+++ b/patches.arch/kvm-nvmx-apply-addr-size-mask-to-effective-address-for-vmx-instructions
@@ -0,0 +1,72 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Wed, 23 Jan 2019 14:39:24 -0800
+Subject: KVM: nVMX: Apply addr size mask to effective address for VMX
+ instructions
+Git-commit: 8570f9e881e3fde98801bb3a47eef84dd934d405
+Patch-mainline: v5.1-rc1
+References: bsc#1132561
+
+The address size of an instruction affects the effective address, not
+the virtual/linear address. The final address may still be truncated,
+e.g. to 32-bits outside of long mode, but that happens irrespective of
+the address size, e.g. a 32-bit address size can yield a 64-bit virtual
+address when using FS/GS with a non-zero base.
+
+Fixes: 064aea774768 ("KVM: nVMX: Decoding memory operands of VMX instructions")
+Cc: stable@vger.kernel.org
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/vmx/nested.c | 25 +++++++++++++++++++++++--
+ 1 file changed, 23 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
+index d531f4c91a34..34081cc8cdeb 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -4029,20 +4029,41 @@ int get_vmx_mem_address(struct kvm_vcpu *vcpu, unsigned long exit_qualification,
+ if (index_is_valid)
+ off += kvm_register_read(vcpu, index_reg)<<scaling;
+ vmx_get_segment(vcpu, &s, seg_reg);
+- *ret = s.base + off;
+
++ /*
++ * The effective address, i.e. @off, of a memory operand is truncated
++ * based on the address size of the instruction. Note that this is
++ * the *effective address*, i.e. the address prior to accounting for
++ * the segment's base.
++ */
+ if (addr_size == 1) /* 32 bit */
+- *ret &= 0xffffffff;
++ off &= 0xffffffff;
++ else if (addr_size == 0) /* 16 bit */
++ off &= 0xffff;
+
+ /* Checks for #GP/#SS exceptions. */
+ exn = false;
+ if (is_long_mode(vcpu)) {
++ /*
++ * The virtual/linear address is never truncated in 64-bit
++ * mode, e.g. a 32-bit address size can yield a 64-bit virtual
++ * address when using FS/GS with a non-zero base.
++ */
++ *ret = s.base + off;
++
+ /* Long mode: #GP(0)/#SS(0) if the memory address is in a
+ * non-canonical form. This is the only check on the memory
+ * destination for long mode!
+ */
+ exn = is_noncanonical_address(*ret, vcpu);
+ } else if (is_protmode(vcpu)) {
++ /*
++ * When not in long mode, the virtual/linear address is
++ * unconditionally truncated to 32 bits regardless of the
++ * address size.
++ */
++ *ret = (s.base + off) & 0xffffffff;
++
+ /* Protected mode: apply checks for segment validity in the
+ * following order:
+ * - segment type check (#GP(0) may be thrown)
+
diff --git a/patches.arch/kvm-nvmx-ignore-limit-checks-on-vmx-instructions-using-flat-segments b/patches.arch/kvm-nvmx-ignore-limit-checks-on-vmx-instructions-using-flat-segments
new file mode 100644
index 0000000000..3b7df4b016
--- /dev/null
+++ b/patches.arch/kvm-nvmx-ignore-limit-checks-on-vmx-instructions-using-flat-segments
@@ -0,0 +1,55 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Wed, 23 Jan 2019 14:39:25 -0800
+Subject: KVM: nVMX: Ignore limit checks on VMX instructions using flat segments
+Git-commit: 34333cc6c2cb021662fd32e24e618d1b86de95bf
+Patch-mainline: v5.1-rc1
+References: bsc#1132564
+
+Regarding segments with a limit==0xffffffff, the SDM officially states:
+
+ When the effective limit is FFFFFFFFH (4 GBytes), these accesses may
+ or may not cause the indicated exceptions. Behavior is
+ implementation-specific and may vary from one execution to another.
+
+In practice, all CPUs that support VMX ignore limit checks for "flat
+segments", i.e. an expand-up data or code segment with base=0 and
+limit=0xffffffff. This is subtly different than wrapping the effective
+address calculation based on the address size, as the flat segment
+behavior also applies to accesses that would wrap the 4g boundary, e.g.
+a 4-byte access starting at 0xffffffff will access linear addresses
+0xffffffff, 0x0, 0x1 and 0x2.
+
+Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for #GP/#SS exceptions")
+Cc: stable@vger.kernel.org
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/vmx/nested.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
+index 34081cc8cdeb..0050c179c5d3 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -4087,10 +4087,16 @@ int get_vmx_mem_address(struct kvm_vcpu *vcpu, unsigned long exit_qualification,
+ /* Protected mode: #GP(0)/#SS(0) if the segment is unusable.
+ */
+ exn = (s.unusable != 0);
+- /* Protected mode: #GP(0)/#SS(0) if the memory
+- * operand is outside the segment limit.
++
++ /*
++ * Protected mode: #GP(0)/#SS(0) if the memory operand is
++ * outside the segment limit. All CPUs that support VMX ignore
++ * limit checks for flat segments, i.e. segments with base==0,
++ * limit==0xffffffff and of type expand-up data or code.
+ */
+- exn = exn || (off + sizeof(u64) > s.limit);
++ if (!(s.base == 0 && s.limit == 0xffffffff &&
++ ((s.type & 8) || !(s.type & 4))))
++ exn = exn || (off + sizeof(u64) > s.limit);
+ }
+ if (exn) {
+ kvm_queue_exception_e(vcpu,
+
diff --git a/patches.arch/kvm-nvmx-sign-extend-displacements-of-vmx-instr-s-mem-operands b/patches.arch/kvm-nvmx-sign-extend-displacements-of-vmx-instr-s-mem-operands
new file mode 100644
index 0000000000..217ff8d59b
--- /dev/null
+++ b/patches.arch/kvm-nvmx-sign-extend-displacements-of-vmx-instr-s-mem-operands
@@ -0,0 +1,71 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Wed, 23 Jan 2019 14:39:23 -0800
+Subject: KVM: nVMX: Sign extend displacements of VMX instr's mem operands
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Git-commit: 946c522b603f281195af1df91837a1d4d1eb3bc9
+Patch-mainline: v5.1-rc1
+References: bsc#1132562
+
+The VMCS.EXIT_QUALIFCATION field reports the displacements of memory
+operands for various instructions, including VMX instructions, as a
+naturally sized unsigned value, but masks the value by the addr size,
+e.g. given a ModRM encoded as -0x28(%ebp), the -0x28 displacement is
+reported as 0xffffffd8 for a 32-bit address size. Despite some weird
+wording regarding sign extension, the SDM explicitly states that bits
+beyond the instructions address size are undefined:
+
+ In all cases, bits of this field beyond the instruction’s address
+ size are undefined.
+
+Failure to sign extend the displacement results in KVM incorrectly
+treating a negative displacement as a large positive displacement when
+the address size of the VMX instruction is smaller than KVM's native
+size, e.g. a 32-bit address size on a 64-bit KVM.
+
+The very original decoding, added by commit 064aea774768 ("KVM: nVMX:
+Decoding memory operands of VMX instructions"), sort of modeled sign
+extension by truncating the final virtual/linear address for a 32-bit
+address size. I.e. it messed up the effective address but made it work
+by adjusting the final address.
+
+When segmentation checks were added, the truncation logic was kept
+as-is and no sign extension logic was introduced. In other words, it
+kept calculating the wrong effective address while mostly generating
+the correct virtual/linear address. As the effective address is what's
+used in the segment limit checks, this results in KVM incorreclty
+injecting #GP/#SS faults due to non-existent segment violations when
+a nested VMM uses negative displacements with an address size smaller
+than KVM's native address size.
+
+Using the -0x28(%ebp) example, an EBP value of 0x1000 will result in
+KVM using 0x100000fd8 as the effective address when checking for a
+segment limit violation. This causes a 100% failure rate when running
+a 32-bit KVM build as L1 on top of a 64-bit KVM L0.
+
+Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for #GP/#SS exceptions")
+Cc: stable@vger.kernel.org
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/vmx/nested.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
+index 0e67649e39ce..d531f4c91a34 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -4020,6 +4020,10 @@ int get_vmx_mem_address(struct kvm_vcpu *vcpu, unsigned long exit_qualification,
+ /* Addr = segment_base + offset */
+ /* offset = base + [index * scale] + displacement */
+ off = exit_qualification; /* holds the displacement */
++ if (addr_size == 1)
++ off = (gva_t)sign_extend64(off, 31);
++ else if (addr_size == 0)
++ off = (gva_t)sign_extend64(off, 15);
+ if (base_is_valid)
+ off += kvm_register_read(vcpu, base_reg);
+ if (index_is_valid)
+
diff --git a/patches.arch/kvm-svm-workaround-errata-1096-insn_len-maybe-zero-on-smap-violation b/patches.arch/kvm-svm-workaround-errata-1096-insn_len-maybe-zero-on-smap-violation
new file mode 100644
index 0000000000..0c59a8995f
--- /dev/null
+++ b/patches.arch/kvm-svm-workaround-errata-1096-insn_len-maybe-zero-on-smap-violation
@@ -0,0 +1,146 @@
+From: "Singh, Brijesh" <brijesh.singh@amd.com>
+Date: Fri, 15 Feb 2019 17:24:12 +0000
+Subject: KVM: SVM: Workaround errata#1096 (insn_len maybe zero on SMAP
+ violation)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Git-commit: 05d5a48635259e621ea26d01e8316c6feeb34190
+Patch-mainline: v5.1-rc3
+References: bsc#1133149
+
+Errata#1096:
+
+On a nested data page fault when CR.SMAP=1 and the guest data read
+generates a SMAP violation, GuestInstrBytes field of the VMCB on a
+VMEXIT will incorrectly return 0h instead the correct guest
+instruction bytes .
+
+Recommend Workaround:
+
+To determine what instruction the guest was executing the hypervisor
+will have to decode the instruction at the instruction pointer.
+
+The recommended workaround can not be implemented for the SEV
+guest because guest memory is encrypted with the guest specific key,
+and instruction decoder will not be able to decode the instruction
+bytes. If we hit this errata in the SEV guest then log the message
+and request a guest shutdown.
+
+Reported-by: Venkatesh Srinivas <venkateshs@google.com>
+Cc: Jim Mattson <jmattson@google.com>
+Cc: Tom Lendacky <thomas.lendacky@amd.com>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: Joerg Roedel <joro@8bytes.org>
+Cc: "Radim Krčmář" <rkrcmar@redhat.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/include/asm/kvm_host.h | 2 ++
+ arch/x86/kvm/mmu.c | 8 +++++---
+ arch/x86/kvm/svm.c | 32 ++++++++++++++++++++++++++++++++
+ arch/x86/kvm/vmx/vmx.c | 6 ++++++
+ 4 files changed, 45 insertions(+), 3 deletions(-)
+
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -1103,6 +1103,8 @@ struct kvm_x86_ops {
+ int (*mem_enc_unreg_region)(struct kvm *kvm, struct kvm_enc_region *argp);
+
+ int (*get_msr_feature)(struct kvm_msr_entry *entry);
++
++ bool (*need_emulation_on_page_fault)(struct kvm_vcpu *vcpu);
+ };
+
+ struct kvm_arch_async_pf {
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -5020,10 +5020,12 @@ emulate:
+ * This can happen if a guest gets a page-fault on data access but the HW
+ * table walker is not able to read the instruction page (e.g instruction
+ * page is not present in memory). In those cases we simply restart the
+- * guest.
++ * guest, with the exception of AMD Erratum 1096 which is unrecoverable.
+ */
+- if (unlikely(insn && !insn_len))
+- return 1;
++ if (unlikely(insn && !insn_len)) {
++ if (!kvm_x86_ops->need_emulation_on_page_fault(vcpu))
++ return 1;
++ }
+
+ er = x86_emulate_instruction(vcpu, cr2, emulation_type, insn, insn_len);
+
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -6985,6 +6985,36 @@ failed:
+ return ret;
+ }
+
++static bool svm_need_emulation_on_page_fault(struct kvm_vcpu *vcpu)
++{
++ bool is_user, smap;
++
++ is_user = svm_get_cpl(vcpu) == 3;
++ smap = !kvm_read_cr4_bits(vcpu, X86_CR4_SMAP);
++
++ /*
++ * Detect and workaround Errata 1096 Fam_17h_00_0Fh
++ *
++ * In non SEV guest, hypervisor will be able to read the guest
++ * memory to decode the instruction pointer when insn_len is zero
++ * so we return true to indicate that decoding is possible.
++ *
++ * But in the SEV guest, the guest memory is encrypted with the
++ * guest specific key and hypervisor will not be able to decode the
++ * instruction pointer so we will not able to workaround it. Lets
++ * print the error and request to kill the guest.
++ */
++ if (is_user && smap) {
++ if (!sev_guest(vcpu->kvm))
++ return true;
++
++ pr_err_ratelimited("KVM: Guest triggered AMD Erratum 1096\n");
++ kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
++ }
++
++ return false;
++}
++
+ static struct kvm_x86_ops svm_x86_ops __ro_after_init = {
+ .cpu_has_kvm_support = has_svm,
+ .disabled_by_bios = is_disabled,
+@@ -7107,6 +7137,8 @@ static struct kvm_x86_ops svm_x86_ops __
+ .mem_enc_op = svm_mem_enc_op,
+ .mem_enc_reg_region = svm_register_enc_region,
+ .mem_enc_unreg_region = svm_unregister_enc_region,
++
++ .need_emulation_on_page_fault = svm_need_emulation_on_page_fault,
+ };
+
+ static int __init svm_init(void)
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -7097,6 +7097,11 @@ void vmx_enable_tdp(void)
+ kvm_enable_tdp();
+ }
+
++static bool vmx_need_emulation_on_page_fault(struct kvm_vcpu *vcpu)
++{
++ return 0;
++}
++
+ static __init int hardware_setup(void)
+ {
+ int r = -ENOMEM, i;
+@@ -12717,6 +12722,7 @@ static struct kvm_x86_ops vmx_x86_ops __
+ .pre_enter_smm = vmx_pre_enter_smm,
+ .pre_leave_smm = vmx_pre_leave_smm,
+ .enable_smi_window = enable_smi_window,
++ .need_emulation_on_page_fault = vmx_need_emulation_on_page_fault,
+ };
+
+ static void vmx_cleanup_l1d_flush(void)
+
diff --git a/patches.arch/kvm-vmx-compare-only-a-single-byte-for-vmcs-launched-in-vcpu-run b/patches.arch/kvm-vmx-compare-only-a-single-byte-for-vmcs-launched-in-vcpu-run
new file mode 100644
index 0000000000..c0cbcb18f9
--- /dev/null
+++ b/patches.arch/kvm-vmx-compare-only-a-single-byte-for-vmcs-launched-in-vcpu-run
@@ -0,0 +1,51 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Fri, 25 Jan 2019 07:40:48 -0800
+Subject: KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run
+Git-commit: 61c08aa9606d4e48a8a50639c956448a720174c3
+Patch-mainline: v5.1-rc1
+References: bsc#1132555
+
+The vCPU-run asm blob does a manual comparison of a VMCS' launched
+status to execute the correct VM-Enter instruction, i.e. VMLAUNCH vs.
+VMRESUME. The launched flag is a bool, which is a typedef of _Bool.
+C99 does not define an exact size for _Bool, stating only that is must
+be large enough to hold '0' and '1'. Most, if not all, compilers use
+a single byte for _Bool, including gcc[1].
+
+Originally, 'launched' was of type 'int' and so the asm blob used 'cmpl'
+to check the launch status. When 'launched' was moved to be stored on a
+per-VMCS basis, struct vcpu_vmx's "temporary" __launched flag was added
+in order to avoid having to pass the current VMCS into the asm blob.
+The new '__launched' was defined as a 'bool' and not an 'int', but the
+'cmp' instruction was not updated.
+
+This has not caused any known problems, likely due to compilers aligning
+variables to 4-byte or 8-byte boundaries and KVM zeroing out struct
+vcpu_vmx during allocation. I.e. vCPU-run accesses "junk" data, it just
+happens to always be zero and so doesn't affect the result.
+
+[1] https://gcc.gnu.org/ml/gcc-patches/2000-10/msg01127.html
+
+Fixes: d462b8192368 ("KVM: VMX: Keep list of loaded VMCSs, instead of vcpus")
+Cc: <stable@vger.kernel.org>
+Reviewed-by: Jim Mattson <jmattson@google.com>
+Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/vmx/vmx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -9715,7 +9715,7 @@ static void __noclone vmx_vcpu_run(struc
+ "mov %%" _ASM_AX", %%cr2 \n\t"
+ "2: \n\t"
+ /* Check if vmlaunch of vmresume is needed */
+- "cmpl $0, %c[launched](%0) \n\t"
++ "cmpb $0, %c[launched](%0) \n\t"
+ /* Load guest registers. Don't clobber flags. */
+ "mov %c[rax](%0), %%" _ASM_AX " \n\t"
+ "mov %c[rbx](%0), %%" _ASM_BX " \n\t"
+
diff --git a/patches.arch/kvm-x86-emulate-msr_ia32_arch_capabilities-on-amd-hosts.patch b/patches.arch/kvm-x86-emulate-msr_ia32_arch_capabilities-on-amd-hosts.patch
new file mode 100644
index 0000000000..d4acad51de
--- /dev/null
+++ b/patches.arch/kvm-x86-emulate-msr_ia32_arch_capabilities-on-amd-hosts.patch
@@ -0,0 +1,112 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Thu, 7 Mar 2019 15:43:02 -0800
+Subject: KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts
+Git-commit: 0cf9135b773bf32fba9dd8e6699c1b331ee4b749
+Patch-mainline: v5.1-rc3
+References: bsc#1114279
+
+The CPUID flag ARCH_CAPABILITIES is unconditioinally exposed to host
+userspace for all x86 hosts, i.e. KVM advertises ARCH_CAPABILITIES
+regardless of hardware support under the pretense that KVM fully
+emulates MSR_IA32_ARCH_CAPABILITIES. Unfortunately, only VMX hosts
+handle accesses to MSR_IA32_ARCH_CAPABILITIES (despite KVM_GET_MSRS
+also reporting MSR_IA32_ARCH_CAPABILITIES for all hosts).
+
+Move the MSR_IA32_ARCH_CAPABILITIES handling to common x86 code so
+that it's emulated on AMD hosts.
+
+Fixes: 1eaafe91a0df4 ("kvm: x86: IA32_ARCH_CAPABILITIES is always supported")
+Cc: stable@vger.kernel.org
+Reported-by: Xiaoyao Li <xiaoyao.li@linux.intel.com>
+Cc: Jim Mattson <jmattson@google.com>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ arch/x86/include/asm/kvm_host.h | 2 ++
+ arch/x86/kvm/vmx.c | 13 -------------
+ arch/x86/kvm/x86.c | 12 ++++++++++++
+ 3 files changed, 14 insertions(+), 13 deletions(-)
+
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -709,6 +709,8 @@ struct kvm_vcpu_arch {
+
+ /* Flush the L1 Data cache for L1TF mitigation on VMENTER */
+ bool l1tf_flush_l1d;
++
++ u64 arch_capabilities;
+ };
+
+ struct kvm_lpage_info {
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -3473,12 +3473,6 @@ static int vmx_get_msr(struct kvm_vcpu *
+
+ msr_info->data = to_vmx(vcpu)->spec_ctrl;
+ break;
+- case MSR_IA32_ARCH_CAPABILITIES:
+- if (!msr_info->host_initiated &&
+- !guest_cpuid_has(vcpu, X86_FEATURE_ARCH_CAPABILITIES))
+- return 1;
+- msr_info->data = to_vmx(vcpu)->arch_capabilities;
+- break;
+ case MSR_IA32_SYSENTER_CS:
+ msr_info->data = vmcs_read32(GUEST_SYSENTER_CS);
+ break;
+@@ -3643,11 +3637,6 @@ static int vmx_set_msr(struct kvm_vcpu *
+ vmx_disable_intercept_for_msr(vmx->vmcs01.msr_bitmap, MSR_IA32_PRED_CMD,
+ MSR_TYPE_W);
+ break;
+- case MSR_IA32_ARCH_CAPABILITIES:
+- if (!msr_info->host_initiated)
+- return 1;
+- vmx->arch_capabilities = data;
+- break;
+ case MSR_IA32_CR_PAT:
+ if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) {
+ if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data))
+@@ -5912,8 +5901,6 @@ static void vmx_vcpu_setup(struct vcpu_v
+ ++vmx->nmsrs;
+ }
+
+- vmx->arch_capabilities = kvm_get_arch_capabilities();
+-
+ vm_exit_controls_init(vmx, vmcs_config.vmexit_ctrl);
+
+ /* 22.2.1, 20.8.1 */
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -2235,6 +2235,11 @@ int kvm_set_msr_common(struct kvm_vcpu *
+ case MSR_F15H_EX_CFG:
+ break;
+
++ case MSR_IA32_ARCH_CAPABILITIES:
++ if (!msr_info->host_initiated)
++ return 1;
++ vcpu->arch.arch_capabilities = data;
++ break;
+ case MSR_EFER:
+ return set_efer(vcpu, data);
+ case MSR_K7_HWCR:
+@@ -2528,6 +2533,12 @@ int kvm_get_msr_common(struct kvm_vcpu *
+ case MSR_IA32_UCODE_REV:
+ msr_info->data = 0x100000000ULL;
+ break;
++ case MSR_IA32_ARCH_CAPABILITIES:
++ if (!msr_info->host_initiated &&
++ !guest_cpuid_has(vcpu, X86_FEATURE_ARCH_CAPABILITIES))
++ return 1;
++ msr_info->data = vcpu->arch.arch_capabilities;
++ break;
+ case MSR_MTRRcap:
+ case 0x200 ... 0x2ff:
+ return kvm_mtrr_get_msr(vcpu, msr_info->index, &msr_info->data);
+@@ -7980,6 +7991,7 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu
+ {
+ int r;
+
++ vcpu->arch.arch_capabilities = kvm_get_arch_capabilities();
+ kvm_vcpu_mtrr_init(vcpu);
+ r = vcpu_load(vcpu);
+ if (r)
diff --git a/patches.arch/kvm-x86-mmu-detect-mmio-generation-wrap-in-any-address-space b/patches.arch/kvm-x86-mmu-detect-mmio-generation-wrap-in-any-address-space
new file mode 100644
index 0000000000..690011d4bb
--- /dev/null
+++ b/patches.arch/kvm-x86-mmu-detect-mmio-generation-wrap-in-any-address-space
@@ -0,0 +1,60 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Tue, 5 Feb 2019 13:01:12 -0800
+Subject: KVM: x86/mmu: Detect MMIO generation wrap in any address space
+Git-commit: e1359e2beb8b0a1188abc997273acbaedc8ee791
+Patch-mainline: v5.1-rc1
+References: bsc#1132570
+
+The check to detect a wrap of the MMIO generation explicitly looks for a
+generation number of zero. Now that unique memslots generation numbers
+are assigned to each address space, only address space 0 will get a
+generation number of exactly zero when wrapping. E.g. when address
+space 1 goes from 0x7fffe to 0x80002, the MMIO generation number will
+wrap to 0x2. Adjust the MMIO generation to strip the address space
+modifier prior to checking for a wrap.
+
+Fixes: 4bd518f1598d ("KVM: use separate generations for each address space")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/mmu.c | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
+index a53a0e7ad9e6..c2f2c9de63ed 100644
+--- a/arch/x86/kvm/mmu.c
++++ b/arch/x86/kvm/mmu.c
+@@ -5895,11 +5895,28 @@ static bool kvm_has_zapped_obsolete_pages(struct kvm *kvm)
+
+ void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, u64 gen)
+ {
++ gen &= MMIO_GEN_MASK;
++
++ /*
++ * Shift to eliminate the "update in-progress" flag, which isn't
++ * included in the spte's generation number.
++ */
++ gen >>= 1;
++
++ /*
++ * Generation numbers are incremented in multiples of the number of
++ * address spaces in order to provide unique generations across all
++ * address spaces. Strip what is effectively the address space
++ * modifier prior to checking for a wrap of the MMIO generation so
++ * that a wrap in any address space is detected.
++ */
++ gen &= ~((u64)KVM_ADDRESS_SPACE_NUM - 1);
++
+ /*
+- * The very rare case: if the generation-number is round,
++ * The very rare case: if the MMIO generation number has wrapped,
+ * zap all shadow pages.
+ */
+- if (unlikely((gen & MMIO_GEN_MASK) == 0)) {
++ if (unlikely(gen == 0)) {
+ kvm_debug_ratelimited("kvm: zapping shadow pages for mmio generation wraparound\n");
+ kvm_mmu_invalidate_zap_all_pages(kvm);
+ }
+
diff --git a/patches.arch/kvm-x86-mmu-do-not-cache-mmio-accesses-while-memslots-are-in-flux b/patches.arch/kvm-x86-mmu-do-not-cache-mmio-accesses-while-memslots-are-in-flux
new file mode 100644
index 0000000000..b2a7c0888b
--- /dev/null
+++ b/patches.arch/kvm-x86-mmu-do-not-cache-mmio-accesses-while-memslots-are-in-flux
@@ -0,0 +1,64 @@
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Tue, 5 Feb 2019 13:01:13 -0800
+Subject: KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux
+Git-commit: ddfd1730fd829743e41213e32ccc8b4aa6dc8325
+Patch-mainline: v5.1-rc1
+References: bsc#1132571
+
+When installing new memslots, KVM sets bit 0 of the generation number to
+indicate that an update is in-progress. Until the update is complete,
+there are no guarantees as to whether a vCPU will see the old or the new
+memslots. Explicity prevent caching MMIO accesses so as to avoid using
+an access cached from the old memslots after the new memslots have been
+installed.
+
+Note that it is unclear whether or not disabling caching during the
+update window is strictly necessary as there is no definitive
+documentation as to what ordering guarantees KVM provides with respect
+to updating memslots. That being said, the MMIO spte code does not
+allow reusing sptes created while an update is in-progress, and the
+associated documentation explicitly states:
+
+ We do not want to use an MMIO sptes created with an odd generation
+ number, ... If KVM is unlucky and creates an MMIO spte while the
+ low bit is 1, the next access to the spte will always be a cache miss.
+
+At the very least, disabling the per-vCPU MMIO cache during updates will
+make its behavior consistent with the MMIO spte behavior and
+documentation.
+
+Fixes: 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/x86.h | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
+index 224cd0a47568..20ede17202bf 100644
+--- a/arch/x86/kvm/x86.h
++++ b/arch/x86/kvm/x86.h
+@@ -181,6 +181,11 @@ static inline bool emul_is_noncanonical_address(u64 la,
+ static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu,
+ gva_t gva, gfn_t gfn, unsigned access)
+ {
++ u64 gen = kvm_memslots(vcpu->kvm)->generation;
++
++ if (unlikely(gen & 1))
++ return;
++
+ /*
+ * If this is a shadow nested page table, the "GVA" is
+ * actually a nGPA.
+@@ -188,7 +193,7 @@ static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu,
+ vcpu->arch.mmio_gva = mmu_is_nested(vcpu) ? 0 : gva & PAGE_MASK;
+ vcpu->arch.access = access;
+ vcpu->arch.mmio_gfn = gfn;
+- vcpu->arch.mmio_gen = kvm_memslots(vcpu->kvm)->generation;
++ vcpu->arch.mmio_gen = gen;
+ }
+
+ static inline bool vcpu_match_mmio_gen(struct kvm_vcpu *vcpu)
+
diff --git a/patches.arch/powerpc-64s-Fix-logic-when-handling-unknown-CPU-feat.patch b/patches.arch/powerpc-64s-Fix-logic-when-handling-unknown-CPU-feat.patch
new file mode 100644
index 0000000000..e2745eb029
--- /dev/null
+++ b/patches.arch/powerpc-64s-Fix-logic-when-handling-unknown-CPU-feat.patch
@@ -0,0 +1,83 @@
+From 8cfaf106918a8c13abb24c641556172afbb9545c Mon Sep 17 00:00:00 2001
+From: Michael Ellerman <mpe@ellerman.id.au>
+Date: Mon, 11 Feb 2019 11:20:01 +1100
+Subject: [PATCH] powerpc/64s: Fix logic when handling unknown CPU features
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+References: bsc#1055117
+Patch-mainline: v5.1-rc1
+Git-commit: 8cfaf106918a8c13abb24c641556172afbb9545c
+
+In cpufeatures_process_feature(), if a provided CPU feature is unknown and
+enable_unknown is false, we erroneously print that the feature is being
+enabled and return true, even though no feature has been enabled, and
+may also set feature bits based on the last entry in the match table.
+
+Fix this so that we only set feature bits from the match table if we have
+actually enabled a feature from that table, and when failing to enable an
+unknown feature, always print the "not enabling" message and return false.
+
+Coincidentally, some older gccs (<GCC 7), when invoked with
+-fsanitize-coverage=trace-pc, cause a spurious uninitialised variable
+warning in this function:
+
+ arch/powerpc/kernel/dt_cpu_ftrs.c: In function ‘cpufeatures_process_feature’:
+ arch/powerpc/kernel/dt_cpu_ftrs.c:686:7: warning: ‘m’ may be used uninitialized in this function [-Wmaybe-uninitialized]
+ if (m->cpu_ftr_bit_mask)
+
+An upcoming patch will enable support for kcov, which requires this option.
+This patch avoids the warning.
+
+Fixes: 5a61ef74f269 ("powerpc/64s: Support new device tree binding for discovering CPU features")
+Reported-by: Segher Boessenkool <segher@kernel.crashing.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+[ajd: add commit message]
+Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/kernel/dt_cpu_ftrs.c | 17 +++++++----------
+ 1 file changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c
+index 8be3721d9302..e49bd5efcfe6 100644
+--- a/arch/powerpc/kernel/dt_cpu_ftrs.c
++++ b/arch/powerpc/kernel/dt_cpu_ftrs.c
+@@ -666,8 +666,10 @@ static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f)
+ m = &dt_cpu_feature_match_table[i];
+ if (!strcmp(f->name, m->name)) {
+ known = true;
+- if (m->enable(f))
++ if (m->enable(f)) {
++ cur_cpu_spec->cpu_features |= m->cpu_ftr_bit_mask;
+ break;
++ }
+
+ pr_info("not enabling: %s (disabled or unsupported by kernel)\n",
+ f->name);
+@@ -675,17 +677,12 @@ static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f)
+ }
+ }
+
+- if (!known && enable_unknown) {
+- if (!feat_try_enable_unknown(f)) {
+- pr_info("not enabling: %s (unknown and unsupported by kernel)\n",
+- f->name);
+- return false;
+- }
++ if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) {
++ pr_info("not enabling: %s (unknown and unsupported by kernel)\n",
++ f->name);
++ return false;
+ }
+
+- if (m->cpu_ftr_bit_mask)
+- cur_cpu_spec->cpu_features |= m->cpu_ftr_bit_mask;
+-
+ if (known)
+ pr_debug("enabling: %s\n", f->name);
+ else
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-64s-Simple-RFI-macro-conversions.patch b/patches.arch/powerpc-64s-Simple-RFI-macro-conversions.patch
index 9acff1d84d..b850ea239f 100644
--- a/patches.arch/powerpc-64s-Simple-RFI-macro-conversions.patch
+++ b/patches.arch/powerpc-64s-Simple-RFI-macro-conversions.patch
@@ -20,16 +20,16 @@ Acked-by: Michal Suchanek <msuchanek@suse.de>
arch/powerpc/include/asm/exception-64s.h | 4 ++--
arch/powerpc/kernel/entry_64.S | 14 +++++++++-----
arch/powerpc/kernel/exceptions-64s.S | 24 ++++++++++++------------
- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 7 +++----
+ arch/powerpc/kvm/book3s_hv_rmhandlers.S | 9 ++++-----
arch/powerpc/kvm/book3s_rmhandlers.S | 7 +++++--
arch/powerpc/kvm/book3s_segment.S | 4 ++--
- 6 files changed, 33 insertions(+), 27 deletions(-)
+ 6 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
-index 06176c1f95d9..ccad31877857 100644
+index 1af427a3c74f..dfc56daed98b 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
-@@ -224,7 +224,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
+@@ -247,7 +247,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
mtspr SPRN_##h##SRR0,r12; \
mfspr r12,SPRN_##h##SRR1; /* and SRR1 */ \
mtspr SPRN_##h##SRR1,r10; \
@@ -38,7 +38,7 @@ index 06176c1f95d9..ccad31877857 100644
b . /* prevent speculative execution */
#define EXCEPTION_PROLOG_PSERIES_1(label, h) \
__EXCEPTION_PROLOG_PSERIES_1(label, h)
-@@ -238,7 +238,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
+@@ -261,7 +261,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
mtspr SPRN_##h##SRR0,r12; \
mfspr r12,SPRN_##h##SRR1; /* and SRR1 */ \
mtspr SPRN_##h##SRR1,r10; \
@@ -213,10 +213,10 @@ index 17db60294030..812b5bcec962 100644
#endif
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
-index 4ee73008d27b..c5e21c7bab9f 100644
+index 2659844784b8..9c61f736c75b 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
-@@ -77,7 +77,7 @@ _GLOBAL_TOC(kvmppc_hv_entry_trampoline)
+@@ -79,7 +79,7 @@ _GLOBAL_TOC(kvmppc_hv_entry_trampoline)
mtmsrd r0,1 /* clear RI in MSR */
mtsrr0 r5
mtsrr1 r6
@@ -225,7 +225,7 @@ index 4ee73008d27b..c5e21c7bab9f 100644
kvmppc_call_hv_entry:
BEGIN_FTR_SECTION
-@@ -184,7 +184,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
+@@ -199,7 +199,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
mtmsrd r6, 1 /* Clear RI in MSR */
mtsrr0 r8
mtsrr1 r7
@@ -234,7 +234,7 @@ index 4ee73008d27b..c5e21c7bab9f 100644
/* Virtual-mode return */
.Lvirt_return:
-@@ -1090,8 +1090,7 @@ BEGIN_FTR_SECTION
+@@ -1167,8 +1167,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
ld r0, VCPU_GPR(R0)(r4)
ld r4, VCPU_GPR(R4)(r4)
@@ -244,6 +244,15 @@ index 4ee73008d27b..c5e21c7bab9f 100644
b .
secondary_too_late:
+@@ -3320,7 +3319,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_TYPE_RADIX)
+ ld r4, PACAKMSR(r13)
+ mtspr SPRN_SRR0, r3
+ mtspr SPRN_SRR1, r4
+- rfid
++ RFI_TO_KERNEL
+ 9: addi r3, r1, STACK_FRAME_OVERHEAD
+ bl kvmppc_bad_interrupt
+ b 9b
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S
index 42a4b237df5f..34a5adeff084 100644
--- a/arch/powerpc/kvm/book3s_rmhandlers.S
@@ -296,5 +305,5 @@ index 2a2b96d53999..93a180ceefad 100644
+ RFI_TO_KERNEL
kvmppc_handler_trampoline_exit_end:
--
-2.13.6
+2.20.1
diff --git a/patches.arch/powerpc-Fix-32-bit-KVM-PR-lockup-and-host-crash-with.patch b/patches.arch/powerpc-Fix-32-bit-KVM-PR-lockup-and-host-crash-with.patch
new file mode 100644
index 0000000000..f6300b105f
--- /dev/null
+++ b/patches.arch/powerpc-Fix-32-bit-KVM-PR-lockup-and-host-crash-with.patch
@@ -0,0 +1,53 @@
+From fe1ef6bcdb4fca33434256a802a3ed6aacf0bd2f Mon Sep 17 00:00:00 2001
+From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
+Date: Fri, 8 Feb 2019 14:33:19 +0000
+Subject: [PATCH] powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS
+ guest
+
+References: bsc#1061840
+Patch-mainline: v5.1-rc1
+Git-commit: fe1ef6bcdb4fca33434256a802a3ed6aacf0bd2f
+
+Commit 8792468da5e1 "powerpc: Add the ability to save FPU without
+giving it up" unexpectedly removed the MSR_FE0 and MSR_FE1 bits from
+the bitmask used to update the MSR of the previous thread in
+__giveup_fpu() causing a KVM-PR MacOS guest to lockup and panic the
+host kernel.
+
+Leaving FE0/1 enabled means unrelated processes might receive FPEs
+when they're not expecting them and crash. In particular if this
+happens to init the host will then panic.
+
+eg (transcribed):
+ qemu-system-ppc[837]: unhandled signal 8 at 12cc9ce4 nip 12cc9ce4 lr 12cc9ca4 code 0
+ systemd[1]: unhandled signal 8 at 202f02e0 nip 202f02e0 lr 001003d4 code 0
+ Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
+
+Reinstate these bits to the MSR bitmask to enable MacOS guests to run
+under 32-bit KVM-PR once again without issue.
+
+Fixes: 8792468da5e1 ("powerpc: Add the ability to save FPU without giving it up")
+Cc: stable@vger.kernel.org # v4.6+
+Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/kernel/process.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
+index ce393df243aa..71bad4b6f80d 100644
+--- a/arch/powerpc/kernel/process.c
++++ b/arch/powerpc/kernel/process.c
+@@ -176,7 +176,7 @@ static void __giveup_fpu(struct task_struct *tsk)
+
+ save_fpu(tsk);
+ msr = tsk->thread.regs->msr;
+- msr &= ~MSR_FP;
++ msr &= ~(MSR_FP|MSR_FE0|MSR_FE1);
+ #ifdef CONFIG_VSX
+ if (cpu_has_feature(CPU_FTR_VSX))
+ msr &= ~MSR_VSX;
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-avoid-mno-sched-epilog-on-GCC-4.9-and-newer.patch b/patches.arch/powerpc-avoid-mno-sched-epilog-on-GCC-4.9-and-newer.patch
new file mode 100644
index 0000000000..0e649aaad1
--- /dev/null
+++ b/patches.arch/powerpc-avoid-mno-sched-epilog-on-GCC-4.9-and-newer.patch
@@ -0,0 +1,34 @@
+From 6977f95e63b9b3fb4a5973481a800dd9f48a1338 Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Fri, 14 Sep 2018 15:08:54 +1000
+Subject: [PATCH] powerpc: avoid -mno-sched-epilog on GCC 4.9 and newer
+
+References: bsc#1065729
+Patch-mainline: v4.20-rc1
+Git-commit: 6977f95e63b9b3fb4a5973481a800dd9f48a1338
+
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+Reviewed-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/Makefile | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/powerpc/Makefile
++++ b/arch/powerpc/Makefile
+@@ -156,8 +156,12 @@ CC_FLAGS_FTRACE += -mprofile-kernel
+ CC_FLAGS_FTRACE := -mprofile-kernel-not-supported
+ endif
+ endif
+-# Work around a gcc code-gen bug with -fno-omit-frame-pointer.
+-CC_FLAGS_FTRACE += -mno-sched-epilog
++# Work around gcc code-gen bugs with -pg / -fno-omit-frame-pointer in gcc <= 4.8
++# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44199
++# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52828
++ifneq ($(cc-name),clang)
++CC_FLAGS_FTRACE += $(call cc-ifversion, -lt, 0409, -mno-sched-epilog)
++endif
+ endif
+
+ CFLAGS-$(CONFIG_CELL_CPU) += $(call cc-option,-mcpu=cell)
diff --git a/patches.arch/powerpc-consolidate-mno-sched-epilog-into-FTRACE-fla.patch b/patches.arch/powerpc-consolidate-mno-sched-epilog-into-FTRACE-fla.patch
new file mode 100644
index 0000000000..d743b213f6
--- /dev/null
+++ b/patches.arch/powerpc-consolidate-mno-sched-epilog-into-FTRACE-fla.patch
@@ -0,0 +1,111 @@
+From 2a056f58fd33ccc6a0261b552b0f17e7fa4a12f3 Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Fri, 14 Sep 2018 15:08:53 +1000
+Subject: [PATCH] powerpc: consolidate -mno-sched-epilog into FTRACE flags
+
+References: bsc#1065729
+Patch-mainline: v4.20-rc1
+Git-commit: 2a056f58fd33ccc6a0261b552b0f17e7fa4a12f3
+
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+Reviewed-by: Joel Stanley <joel@jms.id.au>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/Makefile | 12 ++++++------
+ arch/powerpc/kernel/Makefile | 8 ++++----
+ arch/powerpc/kernel/trace/Makefile | 2 +-
+ arch/powerpc/platforms/powermac/Makefile | 2 +-
+ arch/powerpc/xmon/Makefile | 2 +-
+ 5 files changed, 13 insertions(+), 13 deletions(-)
+
+--- a/arch/powerpc/Makefile
++++ b/arch/powerpc/Makefile
+@@ -140,9 +140,11 @@ else
+ CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
+ endif
+
++ifdef CONFIG_FUNCTION_TRACER
++CC_FLAGS_FTRACE := -pg
+ ifdef CONFIG_MPROFILE_KERNEL
+ ifeq ($(shell $(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__),OK)
+- CC_FLAGS_FTRACE := -pg -mprofile-kernel
++CC_FLAGS_FTRACE += -mprofile-kernel
+ KBUILD_CPPFLAGS += -DCC_USING_MPROFILE_KERNEL
+ else
+ # If the user asked for mprofile-kernel but the toolchain doesn't
+@@ -154,6 +156,9 @@ ifdef CONFIG_MPROFILE_KERNEL
+ CC_FLAGS_FTRACE := -mprofile-kernel-not-supported
+ endif
+ endif
++# Work around a gcc code-gen bug with -fno-omit-frame-pointer.
++CC_FLAGS_FTRACE += -mno-sched-epilog
++endif
+
+ CFLAGS-$(CONFIG_CELL_CPU) += $(call cc-option,-mcpu=cell)
+ CFLAGS-$(CONFIG_POWER5_CPU) += $(call cc-option,-mcpu=power5)
+@@ -226,11 +231,6 @@ ifeq ($(CONFIG_6xx),y)
+ KBUILD_CFLAGS += -mcpu=powerpc
+ endif
+
+-# Work around a gcc code-gen bug with -fno-omit-frame-pointer.
+-ifeq ($(CONFIG_FUNCTION_TRACER),y)
+-KBUILD_CFLAGS += -mno-sched-epilog
+-endif
+-
+ cpu-as-$(CONFIG_4xx) += -Wa,-m405
+ cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec)
+ cpu-as-$(CONFIG_E200) += -Wa,-me200
+--- a/arch/powerpc/kernel/Makefile
++++ b/arch/powerpc/kernel/Makefile
+@@ -21,12 +21,12 @@ CFLAGS_prom.o += $(DISABLE_LATENT_ENTROP
+
+ ifdef CONFIG_FUNCTION_TRACER
+ # Do not trace early boot code
+-CFLAGS_REMOVE_cputable.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
+-CFLAGS_REMOVE_prom_init.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
+-CFLAGS_REMOVE_btext.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
+-CFLAGS_REMOVE_prom.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_cputable.o = $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_prom_init.o = $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_btext.o = $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_prom.o = $(CC_FLAGS_FTRACE)
+ # timers used by tracing
+-CFLAGS_REMOVE_time.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_time.o = $(CC_FLAGS_FTRACE)
+ endif
+
+ obj-y := cputable.o ptrace.o syscalls.o \
+--- a/arch/powerpc/kernel/trace/Makefile
++++ b/arch/powerpc/kernel/trace/Makefile
+@@ -6,7 +6,7 @@ subdir-ccflags-$(CONFIG_PPC_WERROR) := -
+
+ ifdef CONFIG_FUNCTION_TRACER
+ # do not trace tracer code
+-CFLAGS_REMOVE_ftrace.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE)
+ endif
+
+ obj32-$(CONFIG_FUNCTION_TRACER) += ftrace_32.o
+--- a/arch/powerpc/platforms/powermac/Makefile
++++ b/arch/powerpc/platforms/powermac/Makefile
+@@ -2,7 +2,7 @@ CFLAGS_bootx_init.o += -fPIC
+
+ ifdef CONFIG_FUNCTION_TRACER
+ # Do not trace early boot code
+-CFLAGS_REMOVE_bootx_init.o = -mno-sched-epilog $(CC_FLAGS_FTRACE)
++CFLAGS_REMOVE_bootx_init.o = $(CC_FLAGS_FTRACE)
+ endif
+
+ obj-y += pic.o setup.o time.o feature.o pci.o \
+--- a/arch/powerpc/xmon/Makefile
++++ b/arch/powerpc/xmon/Makefile
+@@ -7,7 +7,7 @@ UBSAN_SANITIZE := n
+
+ # Disable ftrace for the entire directory
+ ORIG_CFLAGS := $(KBUILD_CFLAGS)
+-KBUILD_CFLAGS = $(subst -mno-sched-epilog,,$(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS)))
++KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
+
+ ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC)
+
diff --git a/patches.arch/powerpc-kvm-Save-and-restore-host-AMR-IAMR-UAMOR.patch b/patches.arch/powerpc-kvm-Save-and-restore-host-AMR-IAMR-UAMOR.patch
new file mode 100644
index 0000000000..f9d98f7bf7
--- /dev/null
+++ b/patches.arch/powerpc-kvm-Save-and-restore-host-AMR-IAMR-UAMOR.patch
@@ -0,0 +1,143 @@
+From ec48669615d4e1bd21f9b6ffa75ded06ee2d1d81 Mon Sep 17 00:00:00 2001
+From: Michael Ellerman <mpe@ellerman.id.au>
+Date: Fri, 22 Feb 2019 13:22:08 +1100
+Subject: [PATCH 8/8] powerpc/kvm: Save and restore host AMR/IAMR/UAMOR
+
+References: FATE#322447, bsc#1061840, bsc#1078248
+Patch-mainline: v5.1-rc1
+Git-commit: c3c7470c75566a077c8dc71dcf8f1948b8ddfab4
+
+When the hash MMU is active the AMR, IAMR and UAMOR are used for
+pkeys. The AMR is directly writable by user space, and the UAMOR masks
+those writes, meaning both registers are effectively user register
+state. The IAMR is used to create an execute only key.
+
+Also we must maintain the value of at least the AMR when running in
+process context, so that any memory accesses done by the kernel on
+behalf of the process are correctly controlled by the AMR.
+
+Although we are correctly switching all registers when going into a
+guest, on returning to the host we just write 0 into all regs, except
+on Power9 where we restore the IAMR correctly.
+
+This could be observed by a user process if it writes the AMR, then
+runs a guest and we then return immediately to it without
+rescheduling. Because we have written 0 to the AMR that would have the
+effect of granting read/write permission to pages that the process was
+trying to protect.
+
+In addition, when using the Radix MMU, the AMR can prevent inadvertent
+kernel access to userspace data, writing 0 to the AMR disables that
+protection.
+
+So save and restore AMR, IAMR and UAMOR.
+
+Fixes: cf43d3b26452 ("powerpc: Enable pkey subsystem")
+Cc: stable@vger.kernel.org # v4.16+
+Signed-off-by: Russell Currey <ruscur@russell.cc>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Paul Mackerras <paulus@ozlabs.org>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/kvm/book3s_hv_rmhandlers.S | 28 ++++++++++++++++---------
+ 1 file changed, 18 insertions(+), 10 deletions(-)
+
+diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+index 839d3f885f9f..b2f807a4a292 100644
+--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
++++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+@@ -44,7 +44,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
+ #define NAPPING_NOVCPU 2
+
+ /* Stack frame offsets for kvmppc_hv_entry */
+-#define SFS 160
++#define SFS 176
+ #define STACK_SLOT_TRAP (SFS-4)
+ #define STACK_SLOT_TID (SFS-16)
+ #define STACK_SLOT_PSSCR (SFS-24)
+@@ -54,6 +54,8 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
+ #define STACK_SLOT_DAWR (SFS-56)
+ #define STACK_SLOT_DAWRX (SFS-64)
+ #define STACK_SLOT_HFSCR (SFS-72)
++#define STACK_SLOT_AMR (SFS-80)
++#define STACK_SLOT_UAMOR (SFS-88)
+
+ /*
+ * Call kvmppc_hv_entry in real mode.
+@@ -759,11 +761,9 @@ BEGIN_FTR_SECTION
+ mfspr r5, SPRN_TIDR
+ mfspr r6, SPRN_PSSCR
+ mfspr r7, SPRN_PID
+- mfspr r8, SPRN_IAMR
+ std r5, STACK_SLOT_TID(r1)
+ std r6, STACK_SLOT_PSSCR(r1)
+ std r7, STACK_SLOT_PID(r1)
+- std r8, STACK_SLOT_IAMR(r1)
+ mfspr r5, SPRN_HFSCR
+ std r5, STACK_SLOT_HFSCR(r1)
+ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
+@@ -771,11 +771,18 @@ BEGIN_FTR_SECTION
+ mfspr r5, SPRN_CIABR
+ mfspr r6, SPRN_DAWR
+ mfspr r7, SPRN_DAWRX
++ mfspr r8, SPRN_IAMR
+ std r5, STACK_SLOT_CIABR(r1)
+ std r6, STACK_SLOT_DAWR(r1)
+ std r7, STACK_SLOT_DAWRX(r1)
++ std r8, STACK_SLOT_IAMR(r1)
+ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
+
++ mfspr r5, SPRN_AMR
++ std r5, STACK_SLOT_AMR(r1)
++ mfspr r6, SPRN_UAMOR
++ std r6, STACK_SLOT_UAMOR(r1)
++
+ BEGIN_FTR_SECTION
+ /* Set partition DABR */
+ /* Do this before re-enabling PMU to avoid P7 DABR corruption bug */
+@@ -1715,22 +1722,25 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_300)
+ mtspr SPRN_PSPB, r0
+ mtspr SPRN_WORT, r0
+ BEGIN_FTR_SECTION
+- mtspr SPRN_IAMR, r0
+ mtspr SPRN_TCSCR, r0
+ /* Set MMCRS to 1<<31 to freeze and disable the SPMC counters */
+ li r0, 1
+ sldi r0, r0, 31
+ mtspr SPRN_MMCRS, r0
+ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
+-8:
+
+- /* Save and reset AMR and UAMOR before turning on the MMU */
++ /* Save and restore AMR, IAMR and UAMOR before turning on the MMU */
++ ld r8, STACK_SLOT_IAMR(r1)
++ mtspr SPRN_IAMR, r8
++
++8: /* Power7 jumps back in here */
+ mfspr r5,SPRN_AMR
+ mfspr r6,SPRN_UAMOR
+ std r5,VCPU_AMR(r9)
+ std r6,VCPU_UAMOR(r9)
+- li r6,0
+- mtspr SPRN_AMR,r6
++ ld r5,STACK_SLOT_AMR(r1)
++ ld r6,STACK_SLOT_UAMOR(r1)
++ mtspr SPRN_AMR, r5
+ mtspr SPRN_UAMOR, r6
+
+ /* Switch DSCR back to host value */
+@@ -1899,11 +1909,9 @@ BEGIN_FTR_SECTION
+ ld r5, STACK_SLOT_TID(r1)
+ ld r6, STACK_SLOT_PSSCR(r1)
+ ld r7, STACK_SLOT_PID(r1)
+- ld r8, STACK_SLOT_IAMR(r1)
+ mtspr SPRN_TIDR, r5
+ mtspr SPRN_PSSCR, r6
+ mtspr SPRN_PID, r7
+- mtspr SPRN_IAMR, r8
+ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
+
+ #ifdef CONFIG_PPC_RADIX_MMU
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-Don-t-reprogram-SLW-image-on-every-K.patch b/patches.arch/powerpc-powernv-Don-t-reprogram-SLW-image-on-every-K.patch
new file mode 100644
index 0000000000..b6b1225e18
--- /dev/null
+++ b/patches.arch/powerpc-powernv-Don-t-reprogram-SLW-image-on-every-K.patch
@@ -0,0 +1,166 @@
+From 2eeca632a3fb26fa32e9ded6449a4954ae278ede Mon Sep 17 00:00:00 2001
+From: Paul Mackerras <paulus@ozlabs.org>
+Date: Tue, 12 Feb 2019 11:58:29 +1100
+Subject: [PATCH 6/8] powerpc/powernv: Don't reprogram SLW image on every KVM
+ guest entry/exit
+
+References: bsc#1061840
+Patch-mainline: v5.1-rc1
+Git-commit: 19f8a5b5be2898573a5e1dc1db93e8d40117606a
+
+Commit 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
+only on Hotplug", 2017-07-21) added two calls to opal_slw_set_reg()
+inside pnv_cpu_offline(), with the aim of changing the LPCR value in
+the SLW image to disable wakeups from the decrementer while a CPU is
+offline. However, pnv_cpu_offline() gets called each time a secondary
+CPU thread is woken up to participate in running a KVM guest, that is,
+not just when a CPU is offlined.
+
+Since opal_slw_set_reg() is a very slow operation (with observed
+execution times around 20 milliseconds), this means that an offline
+secondary CPU can often be busy doing the opal_slw_set_reg() call
+when the primary CPU wants to grab all the secondary threads so that
+it can run a KVM guest. This leads to messages like "KVM: couldn't
+grab CPU n" being printed and guest execution failing.
+
+There is no need to reprogram the SLW image on every KVM guest entry
+and exit. So that we do it only when a CPU is really transitioning
+between online and offline, this moves the calls to
+pnv_program_cpu_hotplug_lpcr() into pnv_smp_cpu_kill_self().
+
+Fixes: 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug")
+Cc: stable@vger.kernel.org # v4.14+
+Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/include/asm/powernv.h | 2 ++
+ arch/powerpc/platforms/powernv/idle.c | 27 ++-------------------------
+ arch/powerpc/platforms/powernv/smp.c | 25 +++++++++++++++++++++++++
+ 3 files changed, 29 insertions(+), 25 deletions(-)
+
+diff --git a/arch/powerpc/include/asm/powernv.h b/arch/powerpc/include/asm/powernv.h
+index dc5f6a5d4575..6b3a3d3e07ef 100644
+--- a/arch/powerpc/include/asm/powernv.h
++++ b/arch/powerpc/include/asm/powernv.h
+@@ -23,6 +23,8 @@ extern int pnv_npu2_handle_fault(struct npu_context *context, uintptr_t *ea,
+ unsigned long *flags, unsigned long *status,
+ int count);
+
++void pnv_program_cpu_hotplug_lpcr(unsigned int cpu, u64 lpcr_val);
++
+ void pnv_tm_init(void);
+ #else
+ static inline void powernv_set_nmmu_ptcr(unsigned long ptcr) { }
+diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
+index 528c04a5ede3..5f98df24090d 100644
+--- a/arch/powerpc/platforms/powernv/idle.c
++++ b/arch/powerpc/platforms/powernv/idle.c
+@@ -465,7 +465,8 @@ EXPORT_SYMBOL_GPL(pnv_power9_force_smt4_release);
+ #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */
+
+ #ifdef CONFIG_HOTPLUG_CPU
+-static void pnv_program_cpu_hotplug_lpcr(unsigned int cpu, u64 lpcr_val)
++
++void pnv_program_cpu_hotplug_lpcr(unsigned int cpu, u64 lpcr_val)
+ {
+ u64 pir = get_hard_smp_processor_id(cpu);
+
+@@ -488,20 +489,6 @@ unsigned long pnv_cpu_offline(unsigned int cpu)
+ {
+ unsigned long srr1;
+ u32 idle_states = pnv_get_supported_cpuidle_states();
+- u64 lpcr_val;
+-
+- /*
+- * We don't want to take decrementer interrupts while we are
+- * offline, so clear LPCR:PECE1. We keep PECE2 (and
+- * LPCR_PECE_HVEE on P9) enabled as to let IPIs in.
+- *
+- * If the CPU gets woken up by a special wakeup, ensure that
+- * the SLW engine sets LPCR with decrementer bit cleared, else
+- * the CPU will come back to the kernel due to a spurious
+- * wakeup.
+- */
+- lpcr_val = mfspr(SPRN_LPCR) & ~(u64)LPCR_PECE1;
+- pnv_program_cpu_hotplug_lpcr(cpu, lpcr_val);
+
+ ppc64_runlatch_off();
+
+@@ -533,16 +520,6 @@ unsigned long pnv_cpu_offline(unsigned int cpu)
+
+ ppc64_runlatch_on();
+
+- /*
+- * Re-enable decrementer interrupts in LPCR.
+- *
+- * Further, we want stop states to be woken up by decrementer
+- * for non-hotplug cases. So program the LPCR via stop api as
+- * well.
+- */
+- lpcr_val = mfspr(SPRN_LPCR) | (u64)LPCR_PECE1;
+- pnv_program_cpu_hotplug_lpcr(cpu, lpcr_val);
+-
+ return srr1;
+ }
+ #endif
+diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
+index a057491ab218..ac4ed7e074b8 100644
+--- a/arch/powerpc/platforms/powernv/smp.c
++++ b/arch/powerpc/platforms/powernv/smp.c
+@@ -37,6 +37,7 @@
+ #include <asm/kvm_ppc.h>
+ #include <asm/ppc-opcode.h>
+ #include <asm/cpuidle.h>
++#include <asm/powernv.h>
+
+ #include "powernv.h"
+
+@@ -149,6 +150,7 @@ static void pnv_smp_cpu_kill_self(void)
+ {
+ unsigned int cpu;
+ unsigned long srr1, wmask;
++ u64 lpcr_val;
+
+ /* Standard hot unplug procedure */
+ /*
+@@ -170,6 +172,19 @@ static void pnv_smp_cpu_kill_self(void)
+ if (cpu_has_feature(CPU_FTR_ARCH_207S))
+ wmask = SRR1_WAKEMASK_P8;
+
++ /*
++ * We don't want to take decrementer interrupts while we are
++ * offline, so clear LPCR:PECE1. We keep PECE2 (and
++ * LPCR_PECE_HVEE on P9) enabled so as to let IPIs in.
++ *
++ * If the CPU gets woken up by a special wakeup, ensure that
++ * the SLW engine sets LPCR with decrementer bit cleared, else
++ * the CPU will come back to the kernel due to a spurious
++ * wakeup.
++ */
++ lpcr_val = mfspr(SPRN_LPCR) & ~(u64)LPCR_PECE1;
++ pnv_program_cpu_hotplug_lpcr(cpu, lpcr_val);
++
+ while (!generic_check_cpu_restart(cpu)) {
+ /*
+ * Clear IPI flag, since we don't handle IPIs while
+@@ -219,6 +234,16 @@ static void pnv_smp_cpu_kill_self(void)
+
+ }
+
++ /*
++ * Re-enable decrementer interrupts in LPCR.
++ *
++ * Further, we want stop states to be woken up by decrementer
++ * for non-hotplug cases. So program the LPCR via stop api as
++ * well.
++ */
++ lpcr_val = mfspr(SPRN_LPCR) | (u64)LPCR_PECE1;
++ pnv_program_cpu_hotplug_lpcr(cpu, lpcr_val);
++
+ DBG("CPU%d coming online...\n", cpu);
+ }
+
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-Make-opal-log-only-readable-by-root.patch b/patches.arch/powerpc-powernv-Make-opal-log-only-readable-by-root.patch
new file mode 100644
index 0000000000..a1a30b58c5
--- /dev/null
+++ b/patches.arch/powerpc-powernv-Make-opal-log-only-readable-by-root.patch
@@ -0,0 +1,41 @@
+From 7b62f9bd2246b7d3d086e571397c14ba52645ef1 Mon Sep 17 00:00:00 2001
+From: Jordan Niethe <jniethe5@gmail.com>
+Date: Wed, 27 Feb 2019 14:02:29 +1100
+Subject: [PATCH] powerpc/powernv: Make opal log only readable by root
+
+References: bsc#1065729
+Patch-mainline: v5.1-rc1
+Git-commit: 7b62f9bd2246b7d3d086e571397c14ba52645ef1
+
+Currently the opal log is globally readable. It is kernel policy to
+limit the visibility of physical addresses / kernel pointers to root.
+Given this and the fact the opal log may contain this information it
+would be better to limit the readability to root.
+
+Fixes: bfc36894a48b ("powerpc/powernv: Add OPAL message log interface")
+Cc: stable@vger.kernel.org # v3.15+
+Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
+Reviewed-by: Stewart Smith <stewart@linux.ibm.com>
+Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/powernv/opal-msglog.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/platforms/powernv/opal-msglog.c b/arch/powerpc/platforms/powernv/opal-msglog.c
+index acd3206dfae3..06628c71cef6 100644
+--- a/arch/powerpc/platforms/powernv/opal-msglog.c
++++ b/arch/powerpc/platforms/powernv/opal-msglog.c
+@@ -98,7 +98,7 @@ static ssize_t opal_msglog_read(struct file *file, struct kobject *kobj,
+ }
+
+ static struct bin_attribute opal_msglog_attr = {
+- .attr = {.name = "msglog", .mode = 0444},
++ .attr = {.name = "msglog", .mode = 0400},
+ .read = opal_msglog_read
+ };
+
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-Remove-never-used-pnv_power9_force_s.patch b/patches.arch/powerpc-powernv-Remove-never-used-pnv_power9_force_s.patch
new file mode 100644
index 0000000000..e5a53700f7
--- /dev/null
+++ b/patches.arch/powerpc-powernv-Remove-never-used-pnv_power9_force_s.patch
@@ -0,0 +1,38 @@
+From c35f78d7a422750917029d20d9e57000b1181d75 Mon Sep 17 00:00:00 2001
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+Date: Mon, 14 Jan 2019 11:40:27 +1100
+Subject: [PATCH] powerpc/powernv: Remove never used pnv_power9_force_smt4
+
+References: bsc#1061840
+Patch-mainline: v5.1-rc1
+Git-commit: c35f78d7a422750917029d20d9e57000b1181d75
+
+This removes never used symbol - pnv_power9_force_smt4.
+
+Note that we might still want to add stubs for:
+ void pnv_power9_force_smt4_catch(void);
+ void pnv_power9_force_smt4_release(void);
+
+Fixes: 7672691a08c88 "powerpc/powernv: Provide a way to force a core into SMT4 mode"
+Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/include/asm/powernv.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/arch/powerpc/include/asm/powernv.h b/arch/powerpc/include/asm/powernv.h
+index 2f3ff7a27881..362ea12a4501 100644
+--- a/arch/powerpc/include/asm/powernv.h
++++ b/arch/powerpc/include/asm/powernv.h
+@@ -40,7 +40,6 @@ static inline int pnv_npu2_handle_fault(struct npu_context *context,
+ }
+
+ static inline void pnv_tm_init(void) { }
+-static inline void pnv_power9_force_smt4(void) { }
+ #endif
+
+ #endif /* _ASM_POWERNV_H */
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-cpuidle-Init-all-present-cpus-for-de.patch b/patches.arch/powerpc-powernv-cpuidle-Init-all-present-cpus-for-de.patch
new file mode 100644
index 0000000000..c1237441da
--- /dev/null
+++ b/patches.arch/powerpc-powernv-cpuidle-Init-all-present-cpus-for-de.patch
@@ -0,0 +1,53 @@
+From 55c3e33c51834e10623adc80dc76e5c88d09fcea Mon Sep 17 00:00:00 2001
+From: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
+Date: Wed, 16 May 2018 17:32:14 +0530
+Subject: [PATCH] powerpc/powernv/cpuidle: Init all present cpus for deep
+ states
+
+References: bsc#1055121
+Patch-mainline: v4.18-rc1
+Git-commit: ac9816dcbab53c57bcf1d7b15370b08f1e284318
+
+Init all present cpus for deep states instead of "all possible" cpus.
+Init fails if a possible cpu is guarded. Resulting in making only
+non-deep states available for cpuidle/hotplug.
+
+Stewart says, this means that for single threaded workloads, if you
+guard out a CPU core you'll not get WoF (Workload Optimised
+Frequency), which means that performance goes down when you wouldn't
+expect it to.
+
+Fixes: 77b54e9f213f ("powernv/powerpc: Add winkle support for offline cpus")
+Cc: stable@vger.kernel.org # v3.19+
+Signed-off-by: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/powernv/idle.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
+index 528c04a5ede3..308fbbf814c8 100644
+--- a/arch/powerpc/platforms/powernv/idle.c
++++ b/arch/powerpc/platforms/powernv/idle.c
+@@ -79,7 +79,7 @@ static int pnv_save_sprs_for_deep_states(void)
+ uint64_t msr_val = MSR_IDLE;
+ uint64_t psscr_val = pnv_deepest_stop_psscr_val;
+
+- for_each_possible_cpu(cpu) {
++ for_each_present_cpu(cpu) {
+ uint64_t pir = get_hard_smp_processor_id(cpu);
+ uint64_t hsprg0_val = (uint64_t)&paca[cpu];
+
+@@ -818,7 +818,7 @@ static int __init pnv_init_idle_states(void)
+ int cpu;
+
+ pr_info("powernv: idle: Saving PACA pointers of all CPUs in their thread sibling PACA\n");
+- for_each_possible_cpu(cpu) {
++ for_each_present_cpu(cpu) {
+ int base_cpu = cpu_first_thread_sibling(cpu);
+ int idx = cpu_thread_in_core(cpu);
+ int i;
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-ioda-Allocate-indirect-TCE-levels-of.patch b/patches.arch/powerpc-powernv-ioda-Allocate-indirect-TCE-levels-of.patch
new file mode 100644
index 0000000000..1cf261e22f
--- /dev/null
+++ b/patches.arch/powerpc-powernv-ioda-Allocate-indirect-TCE-levels-of.patch
@@ -0,0 +1,46 @@
+From bdbf649efe21173cae63b4b71db84176420f9039 Mon Sep 17 00:00:00 2001
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+Date: Fri, 28 Sep 2018 16:45:39 +1000
+Subject: [PATCH] powerpc/powernv/ioda: Allocate indirect TCE levels of cached
+ userspace addresses on demand
+
+References: bsc#1061840
+Patch-mainline: v5.0-rc1
+Git-commit: bdbf649efe21173cae63b4b71db84176420f9039
+
+The powernv platform maintains 2 TCE tables for VFIO - a hardware TCE
+table and a table with userspace addresses; the latter is used for
+marking pages dirty when corresponging TCEs are unmapped from
+the hardware table.
+
+a68bd1267b72 ("powerpc/powernv/ioda: Allocate indirect TCE levels
+on demand") enabled on-demand allocation of the hardware table,
+however it missed the other table so it has still been fully allocated
+at the boot time. This fixes the issue by allocating a single level,
+just like we do for the hardware table.
+
+Fixes: a68bd1267b72 ("powerpc/powernv/ioda: Allocate indirect TCE levels on demand")
+Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
+Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/powernv/pci-ioda-tce.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/platforms/powernv/pci-ioda-tce.c b/arch/powerpc/platforms/powernv/pci-ioda-tce.c
+index fe9691040f54..7639b2168755 100644
+--- a/arch/powerpc/platforms/powernv/pci-ioda-tce.c
++++ b/arch/powerpc/platforms/powernv/pci-ioda-tce.c
+@@ -299,7 +299,7 @@ long pnv_pci_ioda2_table_alloc_pages(int nid, __u64 bus_offset,
+ if (alloc_userspace_copy) {
+ offset = 0;
+ uas = pnv_pci_ioda2_table_do_alloc_pages(nid, level_shift,
+- levels, tce_table_size, &offset,
++ tmplevels, tce_table_size, &offset,
+ &total_allocated_uas);
+ if (!uas)
+ goto free_tces_exit;
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-ioda-Fix-locked_vm-counting-for-memo.patch b/patches.arch/powerpc-powernv-ioda-Fix-locked_vm-counting-for-memo.patch
new file mode 100644
index 0000000000..dd444ab5e4
--- /dev/null
+++ b/patches.arch/powerpc-powernv-ioda-Fix-locked_vm-counting-for-memo.patch
@@ -0,0 +1,91 @@
+From 11f5acce2fa43b015a8120fa7620fa4efd0a2952 Mon Sep 17 00:00:00 2001
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+Date: Wed, 13 Feb 2019 14:38:18 +1100
+Subject: [PATCH] powerpc/powernv/ioda: Fix locked_vm counting for memory used
+ by IOMMU tables
+
+References: bsc#1061840
+Patch-mainline: v5.1-rc1
+Git-commit: 11f5acce2fa43b015a8120fa7620fa4efd0a2952
+
+We store 2 multilevel tables in iommu_table - one for the hardware and
+one with the corresponding userspace addresses. Before allocating
+the tables, the iommu_table_group_ops::get_table_size() hook returns
+the combined size of the two and VFIO SPAPR TCE IOMMU driver adjusts
+the locked_vm counter correctly. When the table is actually allocated,
+the amount of allocated memory is stored in iommu_table::it_allocated_size
+and used to decrement the locked_vm counter when we release the memory
+used by the table; .get_table_size() and .create_table() calculate it
+independently but the result is expected to be the same.
+
+However the allocator does not add the userspace table size to
+.it_allocated_size so when we destroy the table because of VFIO PCI
+unplug (i.e. VFIO container is gone but the userspace keeps running),
+we decrement locked_vm by just a half of size of memory we are
+releasing.
+
+To make things worse, since we enabled on-demand allocation of
+indirect levels, it_allocated_size contains only the amount of memory
+actually allocated at the table creation time which can just be a
+fraction. It is not a problem with incrementing locked_vm (as
+get_table_size() value is used) but it is with decrementing.
+
+As the result, we leak locked_vm and may not be able to allocate more
+IOMMU tables after few iterations of hotplug/unplug.
+
+This sets it_allocated_size in the pnv_pci_ioda2_ops::create_table()
+hook to what pnv_pci_ioda2_get_table_size() returns so from now on we
+have a single place which calculates the maximum memory a table can
+occupy. The original meaning of it_allocated_size is somewhat lost now
+though.
+
+We do not ditch it_allocated_size whatsoever here and we do not call
+get_table_size() from vfio_iommu_spapr_tce.c when decrementing
+locked_vm as we may have multiple IOMMU groups per container and even
+though they all are supposed to have the same get_table_size()
+implementation, there is a small chance for failure or confusion.
+
+Fixes: 090bad39b237 ("powerpc/powernv: Add indirect levels to it_userspace")
+Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
+Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/powernv/pci-ioda-tce.c | 1 -
+ arch/powerpc/platforms/powernv/pci-ioda.c | 7 ++++++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/arch/powerpc/platforms/powernv/pci-ioda-tce.c b/arch/powerpc/platforms/powernv/pci-ioda-tce.c
+index 697449afb3f7..e28f03e1eb5e 100644
+--- a/arch/powerpc/platforms/powernv/pci-ioda-tce.c
++++ b/arch/powerpc/platforms/powernv/pci-ioda-tce.c
+@@ -313,7 +313,6 @@ long pnv_pci_ioda2_table_alloc_pages(int nid, __u64 bus_offset,
+ page_shift);
+ tbl->it_level_size = 1ULL << (level_shift - 3);
+ tbl->it_indirect_levels = levels - 1;
+- tbl->it_allocated_size = total_allocated;
+ tbl->it_userspace = uas;
+ tbl->it_nid = nid;
+
+diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
+index e9986c9f779d..f1ce39f64329 100644
+--- a/arch/powerpc/platforms/powernv/pci-ioda.c
++++ b/arch/powerpc/platforms/powernv/pci-ioda.c
+@@ -2524,8 +2524,13 @@ static long pnv_pci_ioda2_create_table_userspace(
+ int num, __u32 page_shift, __u64 window_size, __u32 levels,
+ struct iommu_table **ptbl)
+ {
+- return pnv_pci_ioda2_create_table(table_group,
++ long ret = pnv_pci_ioda2_create_table(table_group,
+ num, page_shift, window_size, levels, true, ptbl);
++
++ if (!ret)
++ (*ptbl)->it_allocated_size = pnv_pci_ioda2_get_table_size(
++ page_shift, window_size, levels);
++ return ret;
+ }
+
+ static void pnv_ioda2_take_ownership(struct iommu_table_group *table_group)
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-powernv-ioda2-Remove-redundant-free-of-TCE-p.patch b/patches.arch/powerpc-powernv-ioda2-Remove-redundant-free-of-TCE-p.patch
new file mode 100644
index 0000000000..1bad2458f9
--- /dev/null
+++ b/patches.arch/powerpc-powernv-ioda2-Remove-redundant-free-of-TCE-p.patch
@@ -0,0 +1,49 @@
+From 98fd72fe82527fd26618062b60cfd329451f2329 Mon Sep 17 00:00:00 2001
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+Date: Wed, 30 May 2018 19:22:50 +1000
+Subject: [PATCH] powerpc/powernv/ioda2: Remove redundant free of TCE pages
+
+References: bsc#1061840
+Patch-mainline: v4.18-rc1
+Git-commit: 98fd72fe82527fd26618062b60cfd329451f2329
+
+When IODA2 creates a PE, it creates an IOMMU table with it_ops::free
+set to pnv_ioda2_table_free() which calls pnv_pci_ioda2_table_free_pages().
+
+Since iommu_tce_table_put() calls it_ops::free when the last reference
+to the table is released, explicit call to pnv_pci_ioda2_table_free_pages()
+is not needed so let's remove it.
+
+This should fix double free in the case of PCI hotuplug as
+pnv_pci_ioda2_table_free_pages() does not reset neither
+iommu_table::it_base nor ::it_size.
+
+This was not exposed by SRIOV as it uses different code path via
+pnv_pcibios_sriov_disable().
+
+IODA1 does not inialize it_ops::free so it does not have this issue.
+
+Fixes: c5f7700bbd2e ("powerpc/powernv: Dynamically release PE")
+Cc: stable@vger.kernel.org # v4.8+
+Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/platforms/powernv/pci-ioda.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
+index 1b02f86dfec1..5bd0eb6681bc 100644
+--- a/arch/powerpc/platforms/powernv/pci-ioda.c
++++ b/arch/powerpc/platforms/powernv/pci-ioda.c
+@@ -3671,7 +3671,6 @@ static void pnv_pci_ioda2_release_pe_dma(struct pnv_ioda_pe *pe)
+ WARN_ON(pe->table_group.group);
+ }
+
+- pnv_pci_ioda2_table_free_pages(tbl);
+ iommu_tce_table_put(tbl);
+ }
+
+--
+2.20.1
+
diff --git a/patches.arch/powerpc-speculation-support-mitigations-cmdline-option.patch b/patches.arch/powerpc-speculation-support-mitigations-cmdline-option.patch
new file mode 100644
index 0000000000..f9072b1237
--- /dev/null
+++ b/patches.arch/powerpc-speculation-support-mitigations-cmdline-option.patch
@@ -0,0 +1,117 @@
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+Date: Fri, 12 Apr 2019 15:39:30 -0500
+Subject: powerpc/speculation: Support 'mitigations=' cmdline option
+Git-commit: 782e69efb3dfed6e8360bc612e8c7827a901a8f9
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
+Patch-mainline: queued in subsystem tree
+References: bsc#1112178
+
+Configure powerpc CPU runtime speculation bug mitigations in accordance
+with the 'mitigations=' cmdline option. This affects Meltdown, Spectre
+v1, Spectre v2, and Speculative Store Bypass.
+
+The default behavior is unchanged.
+
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
+Reviewed-by: Jiri Kosina <jkosina@suse.cz>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: "H . Peter Anvin" <hpa@zytor.com>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Waiman Long <longman@redhat.com>
+Cc: Andrea Arcangeli <aarcange@redhat.com>
+Cc: Jon Masters <jcm@redhat.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: linuxppc-dev@lists.ozlabs.org
+Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
+Cc: linux-s390@vger.kernel.org
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-arch@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Tyler Hicks <tyhicks@canonical.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Randy Dunlap <rdunlap@infradead.org>
+Cc: Steven Price <steven.price@arm.com>
+Cc: Phil Auld <pauld@redhat.com>
+Link: https://lkml.kernel.org/r/245a606e1a42a558a310220312d9b6adb9159df6.1555085500.git.jpoimboe@redhat.com
+
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ Documentation/admin-guide/kernel-parameters.txt | 9 +++++----
+ arch/powerpc/kernel/security.c | 5 +++--
+ arch/powerpc/kernel/setup_64.c | 2 +-
+ 3 files changed, 9 insertions(+), 7 deletions(-)
+
+--- a/arch/powerpc/kernel/security.c
++++ b/arch/powerpc/kernel/security.c
+@@ -7,6 +7,7 @@
+ #include <linux/kernel.h>
+ #include <linux/device.h>
+ #include <linux/seq_buf.h>
++#include <linux/cpu.h>
+
+ #include <asm/asm-prototypes.h>
+ #include <asm/code-patching.h>
+@@ -52,7 +53,7 @@ void setup_barrier_nospec(void)
+ enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) &&
+ security_ftr_enabled(SEC_FTR_BNDS_CHK_SPEC_BAR);
+
+- if (!no_nospec)
++ if (!no_nospec && !cpu_mitigations_off())
+ enable_barrier_nospec(enable);
+ }
+
+@@ -274,7 +275,7 @@ void setup_stf_barrier(void)
+
+ stf_enabled_flush_types = type;
+
+- if (!no_stf_barrier)
++ if (!no_stf_barrier && !cpu_mitigations_off())
+ stf_barrier_enable(enable);
+ }
+
+--- a/arch/powerpc/kernel/setup_64.c
++++ b/arch/powerpc/kernel/setup_64.c
+@@ -893,7 +893,7 @@ void setup_rfi_flush(enum l1d_flush_type
+
+ enabled_flush_types = types;
+
+- if (!no_rfi_flush)
++ if (!no_rfi_flush && !cpu_mitigations_off())
+ rfi_flush_enable(enable);
+ }
+
+--- a/Documentation/admin-guide/kernel-parameters.txt
++++ b/Documentation/admin-guide/kernel-parameters.txt
+@@ -2375,7 +2375,7 @@
+ http://repo.or.cz/w/linux-2.6/mini2440.git
+
+ mitigations=
+- [X86] Control optional mitigations for CPU
++ [X86,PPC] Control optional mitigations for CPU
+ vulnerabilities. This is a set of curated,
+ arch-independent options, each of which is an
+ aggregation of existing arch-specific options.
+@@ -2384,10 +2384,11 @@
+ Disable all optional CPU mitigations. This
+ improves system performance, but it may also
+ expose users to several CPU vulnerabilities.
+- Equivalent to: nopti [X86]
+- nospectre_v2 [X86]
++ Equivalent to: nopti [X86,PPC]
++ nospectre_v1 [PPC]
++ nospectre_v2 [X86,PPC]
+ spectre_v2_user=off [X86]
+- spec_store_bypass_disable=off [X86]
++ spec_store_bypass_disable=off [X86,PPC]
+ l1tf=off [X86]
+
+ auto (default)
diff --git a/patches.arch/powerpc-vdso32-fix-CLOCK_MONOTONIC-on-PPC64.patch b/patches.arch/powerpc-vdso32-fix-CLOCK_MONOTONIC-on-PPC64.patch
new file mode 100644
index 0000000000..c129cb907c
--- /dev/null
+++ b/patches.arch/powerpc-vdso32-fix-CLOCK_MONOTONIC-on-PPC64.patch
@@ -0,0 +1,39 @@
+From dd9a994fc68d196a052b73747e3366c57d14a09e Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Thu, 4 Apr 2019 12:20:05 +0000
+Subject: [PATCH] powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64
+
+References: bsc#1131587
+Patch-mainline: v5.1-rc5
+Git-commit: dd9a994fc68d196a052b73747e3366c57d14a09e
+
+Commit b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC
+inconsistencies across Y2038") changed the type of wtom_clock_sec
+to s64 on PPC64. Therefore, VDSO32 needs to read it with a 4 bytes
+shift in order to retrieve the lower part of it.
+
+Fixes: b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038")
+Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/kernel/vdso32/gettimeofday.S | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S b/arch/powerpc/kernel/vdso32/gettimeofday.S
+index 1e0bc5955a40..afd516b572f8 100644
+--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
++++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
+@@ -98,7 +98,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
+ * can be used, r7 contains NSEC_PER_SEC.
+ */
+
+- lwz r5,WTOM_CLOCK_SEC(r9)
++ lwz r5,(WTOM_CLOCK_SEC+LOPART)(r9)
+ lwz r6,WTOM_CLOCK_NSEC(r9)
+
+ /* We now have our offset in r5,r6. We create a fake dependency
+--
+2.20.1
+
diff --git a/patches.arch/s390-zcrypt-cex6s-exploitation.patch b/patches.arch/s390-sles15sp1-00-01-01-zcrypt-CEX6S-exploitation.patch
index 9a145733b6..9a145733b6 100644
--- a/patches.arch/s390-zcrypt-cex6s-exploitation.patch
+++ b/patches.arch/s390-sles15sp1-00-01-01-zcrypt-CEX6S-exploitation.patch
diff --git a/patches.arch/s390-zcrypt-enable-special-header-file-flag-for-au-cprp.patch b/patches.arch/s390-sles15sp1-00-01-02-zcrypt-Enable-special-header-file-flag-for-AU-C.patch
index b4b7e66653..b4b7e66653 100644
--- a/patches.arch/s390-zcrypt-enable-special-header-file-flag-for-au-cprp.patch
+++ b/patches.arch/s390-sles15sp1-00-01-02-zcrypt-Enable-special-header-file-flag-for-AU-C.patch
diff --git a/patches.arch/s390-zcrypt-introduce-qact-support-for-ap-bus-devices.patch b/patches.arch/s390-sles15sp1-00-01-03-zcrypt-Introduce-QACT-support-for-AP-bus-device.patch
index 5f5594894e..5f5594894e 100644
--- a/patches.arch/s390-zcrypt-introduce-qact-support-for-ap-bus-devices.patch
+++ b/patches.arch/s390-sles15sp1-00-01-03-zcrypt-Introduce-QACT-support-for-AP-bus-device.patch
diff --git a/patches.arch/s390-zcrypt-fix-wrong-comparison-leading-to-strange-load-balancing.patch b/patches.arch/s390-sles15sp1-00-01-04-zcrypt-Fix-wrong-comparison-leading-to-strange-.patch
index e5ef1c879b..e5ef1c879b 100644
--- a/patches.arch/s390-zcrypt-fix-wrong-comparison-leading-to-strange-load-balancing.patch
+++ b/patches.arch/s390-sles15sp1-00-01-04-zcrypt-Fix-wrong-comparison-leading-to-strange-.patch
diff --git a/patches.arch/s390-zcrypt-support-up-to-256-crypto-adapters.patch b/patches.arch/s390-sles15sp1-00-02-03-zcrypt-Support-up-to-256-crypto-adapters.patch
index b2d8f4e18c..b2d8f4e18c 100644
--- a/patches.arch/s390-zcrypt-support-up-to-256-crypto-adapters.patch
+++ b/patches.arch/s390-sles15sp1-00-02-03-zcrypt-Support-up-to-256-crypto-adapters.patch
diff --git a/patches.arch/s390-mm-check-for-valid-vma-before-zapping-in-gmap_discard.patch b/patches.arch/s390-sles15sp1-00-04-18-s390-mm-Check-for-valid-vma-before-zapping-in-gmap_d.patch
index c551beedc0..c551beedc0 100644
--- a/patches.arch/s390-mm-check-for-valid-vma-before-zapping-in-gmap_discard.patch
+++ b/patches.arch/s390-sles15sp1-00-04-18-s390-mm-Check-for-valid-vma-before-zapping-in-gmap_d.patch
diff --git a/patches.arch/s390-cpum_cf-add-hardware-counter-support-for-ibm-z14.patch b/patches.arch/s390-sles15sp1-00-05-01-s390-cpum_cf-add-hardware-counter-support-for-IBM-z1.patch
index 088161adff..088161adff 100644
--- a/patches.arch/s390-cpum_cf-add-hardware-counter-support-for-ibm-z14.patch
+++ b/patches.arch/s390-sles15sp1-00-05-01-s390-cpum_cf-add-hardware-counter-support-for-IBM-z1.patch
diff --git a/patches.arch/s390-cpum_cf-correct-counter-number-of-last_host_translations.patch b/patches.arch/s390-sles15sp1-00-05-02-s390-cpum_cf-correct-counter-number-of-LAST_HOST_TRA.patch
index 6d637be313..6d637be313 100644
--- a/patches.arch/s390-cpum_cf-correct-counter-number-of-last_host_translations.patch
+++ b/patches.arch/s390-sles15sp1-00-05-02-s390-cpum_cf-correct-counter-number-of-LAST_HOST_TRA.patch
diff --git a/patches.arch/s390-add-support-for-ibm-z14-machines.patch b/patches.arch/s390-sles15sp1-00-05-03-s390-add-support-for-IBM-z14-machines.patch
index 753084ab89..753084ab89 100644
--- a/patches.arch/s390-add-support-for-ibm-z14-machines.patch
+++ b/patches.arch/s390-sles15sp1-00-05-03-s390-add-support-for-IBM-z14-machines.patch
diff --git a/patches.arch/s390-add-support-for-ibm-z14-model-zr1.patch b/patches.arch/s390-sles15sp1-00-05-04-s390-add-support-for-IBM-z14-Model-ZR1.patch
index 9e948d8e9c..9e948d8e9c 100644
--- a/patches.arch/s390-add-support-for-ibm-z14-model-zr1.patch
+++ b/patches.arch/s390-sles15sp1-00-05-04-s390-add-support-for-IBM-z14-Model-ZR1.patch
diff --git a/patches.arch/s390-cpum_cf-rename-ibm-z13-z14-counter-names.patch b/patches.arch/s390-sles15sp1-00-05-05-s390-cpum_cf-rename-IBM-z13-z14-counter-names.patch
index 4494f17ba6..4494f17ba6 100644
--- a/patches.arch/s390-cpum_cf-rename-ibm-z13-z14-counter-names.patch
+++ b/patches.arch/s390-sles15sp1-00-05-05-s390-cpum_cf-rename-IBM-z13-z14-counter-names.patch
diff --git a/patches.arch/s390-sles15-17-02-01-s390-qeth-remove-outdated-portname-debug-msg.patch b/patches.arch/s390-sles15sp1-00-08-33-s390-qeth-remove-outdated-portname-debug-msg.patch
index fd377b8737..fd377b8737 100644
--- a/patches.arch/s390-sles15-17-02-01-s390-qeth-remove-outdated-portname-debug-msg.patch
+++ b/patches.arch/s390-sles15sp1-00-08-33-s390-qeth-remove-outdated-portname-debug-msg.patch
diff --git a/patches.drivers/s390-net-set-hw-port-number-in-netdevice.patch b/patches.arch/s390-sles15sp1-00-08-51-s390-net-set-HW-port-number-in-netdevice.patch
index 27e926184a..27e926184a 100644
--- a/patches.drivers/s390-net-set-hw-port-number-in-netdevice.patch
+++ b/patches.arch/s390-sles15sp1-00-08-51-s390-net-set-HW-port-number-in-netdevice.patch
diff --git a/patches.drivers/net-smc-serialize-connection-creation-in-all-cases.patch b/patches.arch/s390-sles15sp1-00-11-001-net-smc-serialize-connection-creation-in-all-cases.patch
index 80dee5c7d0..80dee5c7d0 100644
--- a/patches.drivers/net-smc-serialize-connection-creation-in-all-cases.patch
+++ b/patches.arch/s390-sles15sp1-00-11-001-net-smc-serialize-connection-creation-in-all-cases.patch
diff --git a/patches.drivers/net-smc-shorten-local-bufsize-variables.patch b/patches.arch/s390-sles15sp1-00-11-002-net-smc-shorten-local-bufsize-variables.patch
index 76ca90a923..76ca90a923 100644
--- a/patches.drivers/net-smc-shorten-local-bufsize-variables.patch
+++ b/patches.arch/s390-sles15sp1-00-11-002-net-smc-shorten-local-bufsize-variables.patch
diff --git a/patches.drivers/net-smc-introduce-sg-logic-for-rmbs.patch b/patches.arch/s390-sles15sp1-00-11-003-net-smc-introduce-sg-logic-for-RMBs.patch
index 5e134d9acf..5e134d9acf 100644
--- a/patches.drivers/net-smc-introduce-sg-logic-for-rmbs.patch
+++ b/patches.arch/s390-sles15sp1-00-11-003-net-smc-introduce-sg-logic-for-RMBs.patch
diff --git a/patches.drivers/net-smc-use-separate-memory-regions-for-rmbs.patch b/patches.arch/s390-sles15sp1-00-11-004-net-smc-use-separate-memory-regions-for-RMBs.patch
index b86d21ae46..b86d21ae46 100644
--- a/patches.drivers/net-smc-use-separate-memory-regions-for-rmbs.patch
+++ b/patches.arch/s390-sles15sp1-00-11-004-net-smc-use-separate-memory-regions-for-RMBs.patch
diff --git a/patches.drivers/net-smc-register-rmb-related-memory-region.patch b/patches.arch/s390-sles15sp1-00-11-005-net-smc-register-RMB-related-memory-region.patch
index 4401df2bc7..4401df2bc7 100644
--- a/patches.drivers/net-smc-register-rmb-related-memory-region.patch
+++ b/patches.arch/s390-sles15sp1-00-11-005-net-smc-register-RMB-related-memory-region.patch
diff --git a/patches.drivers/net-smc-remove-kconfig-warning.patch b/patches.arch/s390-sles15sp1-00-11-006-net-smc-remove-Kconfig-warning.patch
index d7e555f2b5..d7e555f2b5 100644
--- a/patches.drivers/net-smc-remove-kconfig-warning.patch
+++ b/patches.arch/s390-sles15sp1-00-11-006-net-smc-remove-Kconfig-warning.patch
diff --git a/patches.drivers/net-smc-introduce-sg-logic-for-send-buffers.patch b/patches.arch/s390-sles15sp1-00-11-007-net-smc-introduce-sg-logic-for-send-buffers.patch
index a218793613..a218793613 100644
--- a/patches.drivers/net-smc-introduce-sg-logic-for-send-buffers.patch
+++ b/patches.arch/s390-sles15sp1-00-11-007-net-smc-introduce-sg-logic-for-send-buffers.patch
diff --git a/patches.drivers/net-smc-common-functions-for-rmbs-and-send-buffers.patch b/patches.arch/s390-sles15sp1-00-11-008-net-smc-common-functions-for-RMBs-and-send-buffers.patch
index 53d883d4d1..53d883d4d1 100644
--- a/patches.drivers/net-smc-common-functions-for-rmbs-and-send-buffers.patch
+++ b/patches.arch/s390-sles15sp1-00-11-008-net-smc-common-functions-for-RMBs-and-send-buffers.patch
diff --git a/patches.drivers/net-smc-cleanup-function-_smc_buf_create.patch b/patches.arch/s390-sles15sp1-00-11-009-net-smc-cleanup-function-__smc_buf_create.patch
index 2c59934344..2c59934344 100644
--- a/patches.drivers/net-smc-cleanup-function-_smc_buf_create.patch
+++ b/patches.arch/s390-sles15sp1-00-11-009-net-smc-cleanup-function-__smc_buf_create.patch
diff --git a/patches.drivers/net-smc-synchronize-buffer-usage-with-device.patch b/patches.arch/s390-sles15sp1-00-11-010-net-smc-synchronize-buffer-usage-with-device.patch
index ea47899965..ea47899965 100644
--- a/patches.drivers/net-smc-synchronize-buffer-usage-with-device.patch
+++ b/patches.arch/s390-sles15sp1-00-11-010-net-smc-synchronize-buffer-usage-with-device.patch
diff --git a/patches.drivers/net-smc-add-receive-timeout-check.patch b/patches.arch/s390-sles15sp1-00-11-012-net-smc-add-receive-timeout-check.patch
index 326523eba0..326523eba0 100644
--- a/patches.drivers/net-smc-add-receive-timeout-check.patch
+++ b/patches.arch/s390-sles15sp1-00-11-012-net-smc-add-receive-timeout-check.patch
diff --git a/patches.drivers/net-smc-take-rcu-read-lock-for-routing-cache-lookup.patch b/patches.arch/s390-sles15sp1-00-11-013-net-smc-take-RCU-read-lock-for-routing-cache-lookup.patch
index 10238438c2..10238438c2 100644
--- a/patches.drivers/net-smc-take-rcu-read-lock-for-routing-cache-lookup.patch
+++ b/patches.arch/s390-sles15sp1-00-11-013-net-smc-take-RCU-read-lock-for-routing-cache-lookup.patch
diff --git a/patches.drivers/net-smc-adjust-net_device-refcount.patch b/patches.arch/s390-sles15sp1-00-11-014-net-smc-adjust-net_device-refcount.patch
index 759a3d75c0..759a3d75c0 100644
--- a/patches.drivers/net-smc-adjust-net_device-refcount.patch
+++ b/patches.arch/s390-sles15sp1-00-11-014-net-smc-adjust-net_device-refcount.patch
diff --git a/patches.drivers/net-smc-adapt-send-request-completion-notification.patch b/patches.arch/s390-sles15sp1-00-11-015-net-smc-adapt-send-request-completion-notification.patch
index 7c00f43202..7c00f43202 100644
--- a/patches.drivers/net-smc-adapt-send-request-completion-notification.patch
+++ b/patches.arch/s390-sles15sp1-00-11-015-net-smc-adapt-send-request-completion-notification.patch
diff --git a/patches.drivers/net-smc-longer-delay-for-client-link-group-removal.patch b/patches.arch/s390-sles15sp1-00-11-016-net-smc-longer-delay-for-client-link-group-removal.patch
index 2f19dd8845..2f19dd8845 100644
--- a/patches.drivers/net-smc-longer-delay-for-client-link-group-removal.patch
+++ b/patches.arch/s390-sles15sp1-00-11-016-net-smc-longer-delay-for-client-link-group-removal.patch
diff --git a/patches.drivers/net-smc-terminate-link-group-if-out-of-sync-is-received.patch b/patches.arch/s390-sles15sp1-00-11-017-net-smc-terminate-link-group-if-out-of-sync-is-recei.patch
index 58cca47a31..58cca47a31 100644
--- a/patches.drivers/net-smc-terminate-link-group-if-out-of-sync-is-received.patch
+++ b/patches.arch/s390-sles15sp1-00-11-017-net-smc-terminate-link-group-if-out-of-sync-is-recei.patch
diff --git a/patches.drivers/net-smc-introduce-a-delay.patch b/patches.arch/s390-sles15sp1-00-11-018-net-smc-introduce-a-delay.patch
index 7f9381937d..7f9381937d 100644
--- a/patches.drivers/net-smc-introduce-a-delay.patch
+++ b/patches.arch/s390-sles15sp1-00-11-018-net-smc-introduce-a-delay.patch
diff --git a/patches.drivers/net-smc-no-close-wait-in-case-of-process-shut-down.patch b/patches.arch/s390-sles15sp1-00-11-019-net-smc-no-close-wait-in-case-of-process-shut-down.patch
index 81437eff5f..81437eff5f 100644
--- a/patches.drivers/net-smc-no-close-wait-in-case-of-process-shut-down.patch
+++ b/patches.arch/s390-sles15sp1-00-11-019-net-smc-no-close-wait-in-case-of-process-shut-down.patch
diff --git a/patches.drivers/net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch b/patches.arch/s390-sles15sp1-00-11-020-net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch
index c6f6e8eef6..c6f6e8eef6 100644
--- a/patches.drivers/net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch
+++ b/patches.arch/s390-sles15sp1-00-11-020-net-smc-parameter-cleanup-in-smc_cdc_get_free_slot.patch
diff --git a/patches.drivers/smc-fix-mutex-unlocks-during-link-group-creation.patch b/patches.arch/s390-sles15sp1-00-11-023-smc-fix-mutex-unlocks-during-link-group-creation.patch
index caa56b5fd4..caa56b5fd4 100644
--- a/patches.drivers/smc-fix-mutex-unlocks-during-link-group-creation.patch
+++ b/patches.arch/s390-sles15sp1-00-11-023-smc-fix-mutex-unlocks-during-link-group-creation.patch
diff --git a/patches.drivers/smc-add-smc-rendezvous-protocol.patch b/patches.arch/s390-sles15sp1-00-11-024-smc-add-SMC-rendezvous-protocol.patch
index 6816839441..6816839441 100644
--- a/patches.drivers/smc-add-smc-rendezvous-protocol.patch
+++ b/patches.arch/s390-sles15sp1-00-11-024-smc-add-SMC-rendezvous-protocol.patch
diff --git a/patches.drivers/net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch b/patches.arch/s390-sles15sp1-00-11-025-net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch
index dff66a5972..dff66a5972 100644
--- a/patches.drivers/net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch
+++ b/patches.arch/s390-sles15sp1-00-11-025-net-smc-use-sk_rcvbuf-as-start-for-rmb-creation.patch
diff --git a/patches.drivers/smc-make-smc_close_active_abort-static.patch b/patches.arch/s390-sles15sp1-00-11-026-smc-make-smc_close_active_abort-static.patch
index 713f849bf6..713f849bf6 100644
--- a/patches.drivers/smc-make-smc_close_active_abort-static.patch
+++ b/patches.arch/s390-sles15sp1-00-11-026-smc-make-smc_close_active_abort-static.patch
diff --git a/patches.drivers/smc-improve-smc_clc_send_decline-error-handling.patch b/patches.arch/s390-sles15sp1-00-11-027-smc-improve-smc_clc_send_decline-error-handling.patch
index 57588b3d51..57588b3d51 100644
--- a/patches.drivers/smc-improve-smc_clc_send_decline-error-handling.patch
+++ b/patches.arch/s390-sles15sp1-00-11-027-smc-improve-smc_clc_send_decline-error-handling.patch
diff --git a/patches.drivers/smc-no-update-for-unused-sk_write_pending.patch b/patches.arch/s390-sles15sp1-00-11-028-smc-no-update-for-unused-sk_write_pending.patch
index 025337eb1d..025337eb1d 100644
--- a/patches.drivers/smc-no-update-for-unused-sk_write_pending.patch
+++ b/patches.arch/s390-sles15sp1-00-11-028-smc-no-update-for-unused-sk_write_pending.patch
diff --git a/patches.drivers/smc-cleanup-close-checking-during-data-receival.patch b/patches.arch/s390-sles15sp1-00-11-029-smc-cleanup-close-checking-during-data-receival.patch
index 7c3cf8aeb1..7c3cf8aeb1 100644
--- a/patches.drivers/smc-cleanup-close-checking-during-data-receival.patch
+++ b/patches.arch/s390-sles15sp1-00-11-029-smc-cleanup-close-checking-during-data-receival.patch
diff --git a/patches.drivers/smc-no-consumer-update-in-tasklet-context.patch b/patches.arch/s390-sles15sp1-00-11-030-smc-no-consumer-update-in-tasklet-context.patch
index a1d342a194..a1d342a194 100644
--- a/patches.drivers/smc-no-consumer-update-in-tasklet-context.patch
+++ b/patches.arch/s390-sles15sp1-00-11-030-smc-no-consumer-update-in-tasklet-context.patch
diff --git a/patches.drivers/smc-support-variable-clc-proposal-messages.patch b/patches.arch/s390-sles15sp1-00-11-031-smc-support-variable-CLC-proposal-messages.patch
index 6088470c25..6088470c25 100644
--- a/patches.drivers/smc-support-variable-clc-proposal-messages.patch
+++ b/patches.arch/s390-sles15sp1-00-11-031-smc-support-variable-CLC-proposal-messages.patch
diff --git a/patches.drivers/net-smc-use-local-struct-sock-variables-consistently.patch b/patches.arch/s390-sles15sp1-00-11-032-net-smc-use-local-struct-sock-variables-consistently.patch
index 74cd457f2f..74cd457f2f 100644
--- a/patches.drivers/net-smc-use-local-struct-sock-variables-consistently.patch
+++ b/patches.arch/s390-sles15sp1-00-11-032-net-smc-use-local-struct-sock-variables-consistently.patch
diff --git a/patches.drivers/net-smc-simplify-function-smc_clcsock_accept.patch b/patches.arch/s390-sles15sp1-00-11-033-net-smc-simplify-function-smc_clcsock_accept.patch
index b6e18d2f90..b6e18d2f90 100644
--- a/patches.drivers/net-smc-simplify-function-smc_clcsock_accept.patch
+++ b/patches.arch/s390-sles15sp1-00-11-033-net-smc-simplify-function-smc_clcsock_accept.patch
diff --git a/patches.drivers/net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch b/patches.arch/s390-sles15sp1-00-11-034-net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch
index 169a1f169c..169a1f169c 100644
--- a/patches.drivers/net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch
+++ b/patches.arch/s390-sles15sp1-00-11-034-net-smc-get-rid-of-tx_pend-waits-in-socket-closing.patch
diff --git a/patches.drivers/net-smc-make-wait-for-work-request-uninterruptible.patch b/patches.arch/s390-sles15sp1-00-11-035-net-smc-make-wait-for-work-request-uninterruptible.patch
index 8443b3edf2..8443b3edf2 100644
--- a/patches.drivers/net-smc-make-wait-for-work-request-uninterruptible.patch
+++ b/patches.arch/s390-sles15sp1-00-11-035-net-smc-make-wait-for-work-request-uninterruptible.patch
diff --git a/patches.drivers/net-smc-improve-state-change-handling-after-close-wait.patch b/patches.arch/s390-sles15sp1-00-11-036-net-smc-improve-state-change-handling-after-close-wa.patch
index a2f1a8c575..a2f1a8c575 100644
--- a/patches.drivers/net-smc-improve-state-change-handling-after-close-wait.patch
+++ b/patches.arch/s390-sles15sp1-00-11-036-net-smc-improve-state-change-handling-after-close-wa.patch
diff --git a/patches.drivers/net-smc-continue-waiting-if-peer-signals-write_shutdown.patch b/patches.arch/s390-sles15sp1-00-11-037-net-smc-continue-waiting-if-peer-signals-write_shutd.patch
index f6fcb0a4b1..f6fcb0a4b1 100644
--- a/patches.drivers/net-smc-continue-waiting-if-peer-signals-write_shutdown.patch
+++ b/patches.arch/s390-sles15sp1-00-11-037-net-smc-continue-waiting-if-peer-signals-write_shutd.patch
diff --git a/patches.drivers/net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch b/patches.arch/s390-sles15sp1-00-11-038-net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch
index f8b6e4678c..f8b6e4678c 100644
--- a/patches.drivers/net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch
+++ b/patches.arch/s390-sles15sp1-00-11-038-net-smc-cancel-tx-worker-in-case-of-socket-aborts.patch
diff --git a/patches.drivers/net-smc-handle-state-smc_peerfinclosewait-correctly.patch b/patches.arch/s390-sles15sp1-00-11-039-net-smc-handle-state-SMC_PEERFINCLOSEWAIT-correctly.patch
index de12a96e5c..de12a96e5c 100644
--- a/patches.drivers/net-smc-handle-state-smc_peerfinclosewait-correctly.patch
+++ b/patches.arch/s390-sles15sp1-00-11-039-net-smc-handle-state-SMC_PEERFINCLOSEWAIT-correctly.patch
diff --git a/patches.drivers/net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch b/patches.arch/s390-sles15sp1-00-11-041-net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch
index 7c8bce6a46..7c8bce6a46 100644
--- a/patches.drivers/net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch
+++ b/patches.arch/s390-sles15sp1-00-11-041-net-smc-do-not-reuse-a-linkgroup-with-setup-problems.patch
diff --git a/patches.drivers/net-smc-wake-up-wr_reg_wait-when-terminating-a-link-group.patch b/patches.arch/s390-sles15sp1-00-11-042-net-smc-wake-up-wr_reg_wait-when-terminating-a-link-.patch
index e55cfbaefa..e55cfbaefa 100644
--- a/patches.drivers/net-smc-wake-up-wr_reg_wait-when-terminating-a-link-group.patch
+++ b/patches.arch/s390-sles15sp1-00-11-042-net-smc-wake-up-wr_reg_wait-when-terminating-a-link-.patch
diff --git a/patches.drivers/net-smc-check-for-healthy-link-group-resp-connections.patch b/patches.arch/s390-sles15sp1-00-11-043-net-smc-check-for-healthy-link-group-resp.-connectio.patch
index e1b03144fe..e1b03144fe 100644
--- a/patches.drivers/net-smc-check-for-healthy-link-group-resp-connections.patch
+++ b/patches.arch/s390-sles15sp1-00-11-043-net-smc-check-for-healthy-link-group-resp.-connectio.patch
diff --git a/patches.drivers/net-smc-handle-device-port-and-qp-error-events.patch b/patches.arch/s390-sles15sp1-00-11-044-net-smc-handle-device-port-and-QP-error-events.patch
index 3d11e36bec..3d11e36bec 100644
--- a/patches.drivers/net-smc-handle-device-port-and-qp-error-events.patch
+++ b/patches.arch/s390-sles15sp1-00-11-044-net-smc-handle-device-port-and-QP-error-events.patch
diff --git a/patches.drivers/net-smc-smc_poll-improvements.patch b/patches.arch/s390-sles15sp1-00-11-045-net-smc-smc_poll-improvements.patch
index 840d874455..840d874455 100644
--- a/patches.drivers/net-smc-smc_poll-improvements.patch
+++ b/patches.arch/s390-sles15sp1-00-11-045-net-smc-smc_poll-improvements.patch
diff --git a/patches.drivers/net-smc-replace-sock_put-worker-by-socket-refcounting.patch b/patches.arch/s390-sles15sp1-00-11-046-net-smc-replace-sock_put-worker-by-socket-refcountin.patch
index 3cb9f43b5d..3cb9f43b5d 100644
--- a/patches.drivers/net-smc-replace-sock_put-worker-by-socket-refcounting.patch
+++ b/patches.arch/s390-sles15sp1-00-11-046-net-smc-replace-sock_put-worker-by-socket-refcountin.patch
diff --git a/patches.drivers/net-smc-release-clcsock-from-tcp_listen_worker.patch b/patches.arch/s390-sles15sp1-00-11-047-net-smc-release-clcsock-from-tcp_listen_worker.patch
index 67aee6e8d5..67aee6e8d5 100644
--- a/patches.drivers/net-smc-release-clcsock-from-tcp_listen_worker.patch
+++ b/patches.arch/s390-sles15sp1-00-11-047-net-smc-release-clcsock-from-tcp_listen_worker.patch
diff --git a/patches.drivers/net-smc-use-a-constant-for-control-message-length.patch b/patches.arch/s390-sles15sp1-00-11-049-net-smc-use-a-constant-for-control-message-length.patch
index 600e83f38e..600e83f38e 100644
--- a/patches.drivers/net-smc-use-a-constant-for-control-message-length.patch
+++ b/patches.arch/s390-sles15sp1-00-11-049-net-smc-use-a-constant-for-control-message-length.patch
diff --git a/patches.drivers/net-smc-use-link_id-of-server-in-confirm-link-reply.patch b/patches.arch/s390-sles15sp1-00-11-050-net-smc-use-link_id-of-server-in-confirm-link-reply.patch
index 5c5578f1bb..5c5578f1bb 100644
--- a/patches.drivers/net-smc-use-link_id-of-server-in-confirm-link-reply.patch
+++ b/patches.arch/s390-sles15sp1-00-11-050-net-smc-use-link_id-of-server-in-confirm-link-reply.patch
diff --git a/patches.drivers/net-smc-cleanup-smc_llc-h-and-smc_clc-h-headers.patch b/patches.arch/s390-sles15sp1-00-11-051-net-smc-cleanup-smc_llc.h-and-smc_clc.h-headers.patch
index 1542ac599b..1542ac599b 100644
--- a/patches.drivers/net-smc-cleanup-smc_llc-h-and-smc_clc-h-headers.patch
+++ b/patches.arch/s390-sles15sp1-00-11-051-net-smc-cleanup-smc_llc.h-and-smc_clc.h-headers.patch
diff --git a/patches.drivers/net-smc-move-netinfo-function-to-file-smc_clc-c.patch b/patches.arch/s390-sles15sp1-00-11-052-net-smc-move-netinfo-function-to-file-smc_clc.c.patch
index 962dd40ddb..962dd40ddb 100644
--- a/patches.drivers/net-smc-move-netinfo-function-to-file-smc_clc-c.patch
+++ b/patches.arch/s390-sles15sp1-00-11-052-net-smc-move-netinfo-function-to-file-smc_clc.c.patch
diff --git a/patches.drivers/net-smc-remove-unused-fields-from-smc-structures.patch b/patches.arch/s390-sles15sp1-00-11-053-net-smc-remove-unused-fields-from-smc-structures.patch
index 8206024921..8206024921 100644
--- a/patches.drivers/net-smc-remove-unused-fields-from-smc-structures.patch
+++ b/patches.arch/s390-sles15sp1-00-11-053-net-smc-remove-unused-fields-from-smc-structures.patch
diff --git a/patches.drivers/net-smc-respond-to-test-link-messages.patch b/patches.arch/s390-sles15sp1-00-11-054-net-smc-respond-to-test-link-messages.patch
index 908816b69b..908816b69b 100644
--- a/patches.drivers/net-smc-respond-to-test-link-messages.patch
+++ b/patches.arch/s390-sles15sp1-00-11-054-net-smc-respond-to-test-link-messages.patch
diff --git a/patches.drivers/net-smc-process-confirm-delete-rkey-messages.patch b/patches.arch/s390-sles15sp1-00-11-055-net-smc-process-confirm-delete-rkey-messages.patch
index 43da536fe7..43da536fe7 100644
--- a/patches.drivers/net-smc-process-confirm-delete-rkey-messages.patch
+++ b/patches.arch/s390-sles15sp1-00-11-055-net-smc-process-confirm-delete-rkey-messages.patch
diff --git a/patches.drivers/net-smc-do-not-allow-eyecatchers-in-rmbe.patch b/patches.arch/s390-sles15sp1-00-11-056-net-smc-do-not-allow-eyecatchers-in-rmbe.patch
index ce0960c063..ce0960c063 100644
--- a/patches.drivers/net-smc-do-not-allow-eyecatchers-in-rmbe.patch
+++ b/patches.arch/s390-sles15sp1-00-11-056-net-smc-do-not-allow-eyecatchers-in-rmbe.patch
diff --git a/patches.drivers/net-smc-process-add-delete-link-messages.patch b/patches.arch/s390-sles15sp1-00-11-057-net-smc-process-add-delete-link-messages.patch
index 5b91b92d58..5b91b92d58 100644
--- a/patches.drivers/net-smc-process-add-delete-link-messages.patch
+++ b/patches.arch/s390-sles15sp1-00-11-057-net-smc-process-add-delete-link-messages.patch
diff --git a/patches.drivers/net-smc-prevent-new-connections-on-link-group.patch b/patches.arch/s390-sles15sp1-00-11-058-net-smc-prevent-new-connections-on-link-group.patch
index 66123eeddf..66123eeddf 100644
--- a/patches.drivers/net-smc-prevent-new-connections-on-link-group.patch
+++ b/patches.arch/s390-sles15sp1-00-11-058-net-smc-prevent-new-connections-on-link-group.patch
diff --git a/patches.drivers/net-smc-pay-attention-to-max_order-for-cq-entries.patch b/patches.arch/s390-sles15sp1-00-11-059-net-smc-pay-attention-to-MAX_ORDER-for-CQ-entries.patch
index 6aa2b3865e..6aa2b3865e 100644
--- a/patches.drivers/net-smc-pay-attention-to-max_order-for-cq-entries.patch
+++ b/patches.arch/s390-sles15sp1-00-11-059-net-smc-pay-attention-to-MAX_ORDER-for-CQ-entries.patch
diff --git a/patches.drivers/net-smc-free-link-group-without-pending-free_work-only.patch b/patches.arch/s390-sles15sp1-00-11-060-net-smc-free-link-group-without-pending-free_work-on.patch
index fe85a8a2a5..fe85a8a2a5 100644
--- a/patches.drivers/net-smc-free-link-group-without-pending-free_work-only.patch
+++ b/patches.arch/s390-sles15sp1-00-11-060-net-smc-free-link-group-without-pending-free_work-on.patch
diff --git a/patches.drivers/net-smc-schedule-free_work-when-link-group-is-terminated.patch b/patches.arch/s390-sles15sp1-00-11-061-net-smc-schedule-free_work-when-link-group-is-termin.patch
index a7ab98679f..a7ab98679f 100644
--- a/patches.drivers/net-smc-schedule-free_work-when-link-group-is-terminated.patch
+++ b/patches.arch/s390-sles15sp1-00-11-061-net-smc-schedule-free_work-when-link-group-is-termin.patch
diff --git a/patches.drivers/net-smc-simplify-wait-when-closing-listen-socket.patch b/patches.arch/s390-sles15sp1-00-11-062-net-smc-simplify-wait-when-closing-listen-socket.patch
index a3fc22d4af..a3fc22d4af 100644
--- a/patches.drivers/net-smc-simplify-wait-when-closing-listen-socket.patch
+++ b/patches.arch/s390-sles15sp1-00-11-062-net-smc-simplify-wait-when-closing-listen-socket.patch
diff --git a/patches.drivers/net-smc-restructure-netinfo-for-clc-proposal-msgs.patch b/patches.arch/s390-sles15sp1-00-11-063-net-smc-restructure-netinfo-for-CLC-proposal-msgs.patch
index 283d267fe5..283d267fe5 100644
--- a/patches.drivers/net-smc-restructure-netinfo-for-clc-proposal-msgs.patch
+++ b/patches.arch/s390-sles15sp1-00-11-063-net-smc-restructure-netinfo-for-CLC-proposal-msgs.patch
diff --git a/patches.drivers/net-smc-add-ipv6-support-to-clc-layer.patch b/patches.arch/s390-sles15sp1-00-11-064-net-smc-add-ipv6-support-to-CLC-layer.patch
index 05bd19f60b..05bd19f60b 100644
--- a/patches.drivers/net-smc-add-ipv6-support-to-clc-layer.patch
+++ b/patches.arch/s390-sles15sp1-00-11-064-net-smc-add-ipv6-support-to-CLC-layer.patch
diff --git a/patches.drivers/net-smc-enable-ipv6-support-for-smc.patch b/patches.arch/s390-sles15sp1-00-11-065-net-smc-enable-ipv6-support-for-smc.patch
index dd088edfa2..dd088edfa2 100644
--- a/patches.drivers/net-smc-enable-ipv6-support-for-smc.patch
+++ b/patches.arch/s390-sles15sp1-00-11-065-net-smc-enable-ipv6-support-for-smc.patch
diff --git a/patches.drivers/net-smc-use-announced-length-in-sock_recvmsg.patch b/patches.arch/s390-sles15sp1-00-11-066-net-smc-use-announced-length-in-sock_recvmsg.patch
index 154b25125f..154b25125f 100644
--- a/patches.drivers/net-smc-use-announced-length-in-sock_recvmsg.patch
+++ b/patches.arch/s390-sles15sp1-00-11-066-net-smc-use-announced-length-in-sock_recvmsg.patch
diff --git a/patches.drivers/net-smc-fix-shutdown-in-state-smc_listen.patch b/patches.arch/s390-sles15sp1-00-11-067-net-smc-fix-shutdown-in-state-SMC_LISTEN.patch
index b690409e8a..b690409e8a 100644
--- a/patches.drivers/net-smc-fix-shutdown-in-state-smc_listen.patch
+++ b/patches.arch/s390-sles15sp1-00-11-067-net-smc-fix-shutdown-in-state-SMC_LISTEN.patch
diff --git a/patches.drivers/net-smc-keep-clcsock-reference-in-smc_tcp_listen_work.patch b/patches.arch/s390-sles15sp1-00-11-068-net-smc-keep-clcsock-reference-in-smc_tcp_listen_wor.patch
index d3d05672c4..d3d05672c4 100644
--- a/patches.drivers/net-smc-keep-clcsock-reference-in-smc_tcp_listen_work.patch
+++ b/patches.arch/s390-sles15sp1-00-11-068-net-smc-keep-clcsock-reference-in-smc_tcp_listen_wor.patch
diff --git a/patches.drivers/net-smc-fix-structure-size.patch b/patches.arch/s390-sles15sp1-00-11-069-net-smc-fix-structure-size.patch
index 7525b5f19a..7525b5f19a 100644
--- a/patches.drivers/net-smc-fix-structure-size.patch
+++ b/patches.arch/s390-sles15sp1-00-11-069-net-smc-fix-structure-size.patch
diff --git a/patches.drivers/net-smc-handle-sockopts-forcing-fallback.patch b/patches.arch/s390-sles15sp1-00-11-070-net-smc-handle-sockopts-forcing-fallback.patch
index a89c00f2bc..a89c00f2bc 100644
--- a/patches.drivers/net-smc-handle-sockopts-forcing-fallback.patch
+++ b/patches.arch/s390-sles15sp1-00-11-070-net-smc-handle-sockopts-forcing-fallback.patch
diff --git a/patches.drivers/net-smc-sockopts-tcp_nodelay-and-tcp_cork.patch b/patches.arch/s390-sles15sp1-00-11-071-net-smc-sockopts-TCP_NODELAY-and-TCP_CORK.patch
index a98906baa8..a98906baa8 100644
--- a/patches.drivers/net-smc-sockopts-tcp_nodelay-and-tcp_cork.patch
+++ b/patches.arch/s390-sles15sp1-00-11-071-net-smc-sockopts-TCP_NODELAY-and-TCP_CORK.patch
diff --git a/patches.drivers/net-smc-handle-sockopt-tcp_defer_accept.patch b/patches.arch/s390-sles15sp1-00-11-072-net-smc-handle-sockopt-TCP_DEFER_ACCEPT.patch
index aee20d57da..aee20d57da 100644
--- a/patches.drivers/net-smc-handle-sockopt-tcp_defer_accept.patch
+++ b/patches.arch/s390-sles15sp1-00-11-072-net-smc-handle-sockopt-TCP_DEFER_ACCEPT.patch
diff --git a/patches.drivers/net-smc-restrict-non-blocking-connect-finish.patch b/patches.arch/s390-sles15sp1-00-11-073-net-smc-restrict-non-blocking-connect-finish.patch
index 8b0a324e17..8b0a324e17 100644
--- a/patches.drivers/net-smc-restrict-non-blocking-connect-finish.patch
+++ b/patches.arch/s390-sles15sp1-00-11-073-net-smc-restrict-non-blocking-connect-finish.patch
diff --git a/patches.drivers/net-smc-periodic-testlink-support.patch b/patches.arch/s390-sles15sp1-00-11-074-net-smc-periodic-testlink-support.patch
index baaee5e5f7..baaee5e5f7 100644
--- a/patches.drivers/net-smc-periodic-testlink-support.patch
+++ b/patches.arch/s390-sles15sp1-00-11-074-net-smc-periodic-testlink-support.patch
diff --git a/patches.drivers/net-smc-ipv6-support-for-smc_diag-c.patch b/patches.arch/s390-sles15sp1-00-11-075-net-smc-ipv6-support-for-smc_diag.c.patch
index 40a1683c0b..40a1683c0b 100644
--- a/patches.drivers/net-smc-ipv6-support-for-smc_diag-c.patch
+++ b/patches.arch/s390-sles15sp1-00-11-075-net-smc-ipv6-support-for-smc_diag.c.patch
diff --git a/patches.drivers/net-smc-handle-ioctls-siocinq-siocoutq-and-siocoutqnsd.patch b/patches.arch/s390-sles15sp1-00-11-076-net-smc-handle-ioctls-SIOCINQ-SIOCOUTQ-and-SIOCOUTQN.patch
index 9b8fb6736d..9b8fb6736d 100644
--- a/patches.drivers/net-smc-handle-ioctls-siocinq-siocoutq-and-siocoutqnsd.patch
+++ b/patches.arch/s390-sles15sp1-00-11-076-net-smc-handle-ioctls-SIOCINQ-SIOCOUTQ-and-SIOCOUTQN.patch
diff --git a/patches.drivers/net-smc-determine-vlan_id-of-stacked-net_device.patch b/patches.arch/s390-sles15sp1-00-11-077-net-smc-determine-vlan_id-of-stacked-net_device.patch
index 301577e1cc..301577e1cc 100644
--- a/patches.drivers/net-smc-determine-vlan_id-of-stacked-net_device.patch
+++ b/patches.arch/s390-sles15sp1-00-11-077-net-smc-determine-vlan_id-of-stacked-net_device.patch
diff --git a/patches.drivers/net-smc-call-consolidation.patch b/patches.arch/s390-sles15sp1-00-11-078-net-smc-call-consolidation.patch
index 34d6d7f3af..34d6d7f3af 100644
--- a/patches.drivers/net-smc-call-consolidation.patch
+++ b/patches.arch/s390-sles15sp1-00-11-078-net-smc-call-consolidation.patch
diff --git a/patches.drivers/net-smc-handle-unregistered-buffers.patch b/patches.arch/s390-sles15sp1-00-11-079-net-smc-handle-unregistered-buffers.patch
index 2d5c13949e..2d5c13949e 100644
--- a/patches.drivers/net-smc-handle-unregistered-buffers.patch
+++ b/patches.arch/s390-sles15sp1-00-11-079-net-smc-handle-unregistered-buffers.patch
diff --git a/patches.drivers/smc-fix-sendpage-call.patch b/patches.arch/s390-sles15sp1-00-11-080-smc-fix-sendpage-call.patch
index 283623f36b..283623f36b 100644
--- a/patches.drivers/smc-fix-sendpage-call.patch
+++ b/patches.arch/s390-sles15sp1-00-11-080-smc-fix-sendpage-call.patch
diff --git a/patches.drivers/smc-simplify-abort-logic.patch b/patches.arch/s390-sles15sp1-00-11-081-smc-simplify-abort-logic.patch
index af133b5aea..af133b5aea 100644
--- a/patches.drivers/smc-simplify-abort-logic.patch
+++ b/patches.arch/s390-sles15sp1-00-11-081-smc-simplify-abort-logic.patch
diff --git a/patches.drivers/smc-make-smc_rx_wait_data-generic.patch b/patches.arch/s390-sles15sp1-00-11-082-smc-make-smc_rx_wait_data-generic.patch
index 8c207d42f6..8c207d42f6 100644
--- a/patches.drivers/smc-make-smc_rx_wait_data-generic.patch
+++ b/patches.arch/s390-sles15sp1-00-11-082-smc-make-smc_rx_wait_data-generic.patch
diff --git a/patches.drivers/smc-allocate-rmbs-as-compound-pages.patch b/patches.arch/s390-sles15sp1-00-11-083-smc-allocate-RMBs-as-compound-pages.patch
index aca74a613e..aca74a613e 100644
--- a/patches.drivers/smc-allocate-rmbs-as-compound-pages.patch
+++ b/patches.arch/s390-sles15sp1-00-11-083-smc-allocate-RMBs-as-compound-pages.patch
diff --git a/patches.drivers/smc-add-support-for-splice.patch b/patches.arch/s390-sles15sp1-00-11-084-smc-add-support-for-splice.patch
index 442777eff2..442777eff2 100644
--- a/patches.drivers/smc-add-support-for-splice.patch
+++ b/patches.arch/s390-sles15sp1-00-11-084-smc-add-support-for-splice.patch
diff --git a/patches.drivers/net-smc-no-tx-work-trigger-for-fallback-sockets.patch b/patches.arch/s390-sles15sp1-00-11-085-net-smc-no-tx-work-trigger-for-fallback-sockets.patch
index 777e190c4c..777e190c4c 100644
--- a/patches.drivers/net-smc-no-tx-work-trigger-for-fallback-sockets.patch
+++ b/patches.arch/s390-sles15sp1-00-11-085-net-smc-no-tx-work-trigger-for-fallback-sockets.patch
diff --git a/patches.drivers/net-smc-register-new-rmbs-with-the-peer.patch b/patches.arch/s390-sles15sp1-00-11-086-net-smc-register-new-rmbs-with-the-peer.patch
index e010af81f3..e010af81f3 100644
--- a/patches.drivers/net-smc-register-new-rmbs-with-the-peer.patch
+++ b/patches.arch/s390-sles15sp1-00-11-086-net-smc-register-new-rmbs-with-the-peer.patch
diff --git a/patches.drivers/net-smc-remove-unnecessary-cast.patch b/patches.arch/s390-sles15sp1-00-11-087-net-smc-remove-unnecessary-cast.patch
index 6fe6e6b3c8..6fe6e6b3c8 100644
--- a/patches.drivers/net-smc-remove-unnecessary-cast.patch
+++ b/patches.arch/s390-sles15sp1-00-11-087-net-smc-remove-unnecessary-cast.patch
diff --git a/patches.drivers/net-smc-simplify-test_link-function-usage.patch b/patches.arch/s390-sles15sp1-00-11-088-net-smc-simplify-test_link-function-usage.patch
index 5cc30e8a9c..5cc30e8a9c 100644
--- a/patches.drivers/net-smc-simplify-test_link-function-usage.patch
+++ b/patches.arch/s390-sles15sp1-00-11-088-net-smc-simplify-test_link-function-usage.patch
diff --git a/patches.drivers/net-smc-move-link-llc-initialization-to-llc-layer.patch b/patches.arch/s390-sles15sp1-00-11-089-net-smc-move-link-llc-initialization-to-llc-layer.patch
index d0a334af39..d0a334af39 100644
--- a/patches.drivers/net-smc-move-link-llc-initialization-to-llc-layer.patch
+++ b/patches.arch/s390-sles15sp1-00-11-089-net-smc-move-link-llc-initialization-to-llc-layer.patch
diff --git a/patches.drivers/net-smc-use-a-workqueue-to-defer-llc-send.patch b/patches.arch/s390-sles15sp1-00-11-090-net-smc-use-a-workqueue-to-defer-llc-send.patch
index 2ba0121130..2ba0121130 100644
--- a/patches.drivers/net-smc-use-a-workqueue-to-defer-llc-send.patch
+++ b/patches.arch/s390-sles15sp1-00-11-090-net-smc-use-a-workqueue-to-defer-llc-send.patch
diff --git a/patches.drivers/net-smc-handle-all-error-codes-from-smc_conn_create.patch b/patches.arch/s390-sles15sp1-00-11-091-net-smc-handle-all-error-codes-from-smc_conn_create.patch
index bf82f0a947..bf82f0a947 100644
--- a/patches.drivers/net-smc-handle-all-error-codes-from-smc_conn_create.patch
+++ b/patches.arch/s390-sles15sp1-00-11-091-net-smc-handle-all-error-codes-from-smc_conn_create.patch
diff --git a/patches.drivers/net-smc-set-link-inactive-before-calling-smc_lgr_free.patch b/patches.arch/s390-sles15sp1-00-11-092-net-smc-set-link-inactive-before-calling-smc_lgr_fre.patch
index 8d6ca16c0a..8d6ca16c0a 100644
--- a/patches.drivers/net-smc-set-link-inactive-before-calling-smc_lgr_free.patch
+++ b/patches.arch/s390-sles15sp1-00-11-092-net-smc-set-link-inactive-before-calling-smc_lgr_fre.patch
diff --git a/patches.drivers/net-smc-drop-messages-when-link-state-is-inactive.patch b/patches.arch/s390-sles15sp1-00-11-093-net-smc-drop-messages-when-link-state-is-inactive.patch
index 11ade3900b..11ade3900b 100644
--- a/patches.drivers/net-smc-drop-messages-when-link-state-is-inactive.patch
+++ b/patches.arch/s390-sles15sp1-00-11-093-net-smc-drop-messages-when-link-state-is-inactive.patch
diff --git a/patches.drivers/net-smc-check-for-pending-termination.patch b/patches.arch/s390-sles15sp1-00-11-094-net-smc-check-for-pending-termination.patch
index 9433555bd4..9433555bd4 100644
--- a/patches.drivers/net-smc-check-for-pending-termination.patch
+++ b/patches.arch/s390-sles15sp1-00-11-094-net-smc-check-for-pending-termination.patch
diff --git a/patches.drivers/net-smc-add-common-buffer-size-in-send-and-receive-buffer-descriptors.patch b/patches.arch/s390-sles15sp1-00-11-096-net-smc-add-common-buffer-size-in-send-and-receive-b.patch
index 4da526c15e..4da526c15e 100644
--- a/patches.drivers/net-smc-add-common-buffer-size-in-send-and-receive-buffer-descriptors.patch
+++ b/patches.arch/s390-sles15sp1-00-11-096-net-smc-add-common-buffer-size-in-send-and-receive-b.patch
diff --git a/patches.drivers/net-smc-move-link-group-list-to-smc_core.patch b/patches.arch/s390-sles15sp1-00-11-097-net-smc-move-link-group-list-to-smc_core.patch
index 4c1b127671..4c1b127671 100644
--- a/patches.drivers/net-smc-move-link-group-list-to-smc_core.patch
+++ b/patches.arch/s390-sles15sp1-00-11-097-net-smc-move-link-group-list-to-smc_core.patch
diff --git a/patches.drivers/net-smc-rename-connection-index-to-rmbe-index.patch b/patches.arch/s390-sles15sp1-00-11-098-net-smc-rename-connection-index-to-RMBE-index.patch
index 0e5fc1ecad..0e5fc1ecad 100644
--- a/patches.drivers/net-smc-rename-connection-index-to-rmbe-index.patch
+++ b/patches.arch/s390-sles15sp1-00-11-098-net-smc-rename-connection-index-to-RMBE-index.patch
diff --git a/patches.drivers/net-smc-calculate-write-offset-in-rmb-only-once-per-connection.patch b/patches.arch/s390-sles15sp1-00-11-099-net-smc-calculate-write-offset-in-RMB-only-once-per-.patch
index a017a78059..a017a78059 100644
--- a/patches.drivers/net-smc-calculate-write-offset-in-rmb-only-once-per-connection.patch
+++ b/patches.arch/s390-sles15sp1-00-11-099-net-smc-calculate-write-offset-in-RMB-only-once-per-.patch
diff --git a/patches.drivers/net-smc-move-smc_core-specific-code-from-smc-h-to-smc_core.patch b/patches.arch/s390-sles15sp1-00-11-100-net-smc-move-smc_core-specific-code-from-smc.h-to-sm.patch
index 1aed913e7d..1aed913e7d 100644
--- a/patches.drivers/net-smc-move-smc_core-specific-code-from-smc-h-to-smc_core.patch
+++ b/patches.arch/s390-sles15sp1-00-11-100-net-smc-move-smc_core-specific-code-from-smc.h-to-sm.patch
diff --git a/patches.drivers/net-smc-restructure-cdc-message-reception.patch b/patches.arch/s390-sles15sp1-00-11-101-net-smc-restructure-CDC-message-reception.patch
index ed54c6dcd9..ed54c6dcd9 100644
--- a/patches.drivers/net-smc-restructure-cdc-message-reception.patch
+++ b/patches.arch/s390-sles15sp1-00-11-101-net-smc-restructure-CDC-message-reception.patch
diff --git a/patches.drivers/net-smc-do-a-few-smc_core-c-cleanups.patch b/patches.arch/s390-sles15sp1-00-11-102-net-smc-do-a-few-smc_core.c-cleanups.patch
index 843e05cd7b..843e05cd7b 100644
--- a/patches.drivers/net-smc-do-a-few-smc_core-c-cleanups.patch
+++ b/patches.arch/s390-sles15sp1-00-11-102-net-smc-do-a-few-smc_core.c-cleanups.patch
diff --git a/patches.drivers/net-smc-change-smc_buf_free-function-parameters.patch b/patches.arch/s390-sles15sp1-00-11-103-net-smc-change-smc_buf_free-function-parameters.patch
index 1d82ee9e2b..1d82ee9e2b 100644
--- a/patches.drivers/net-smc-change-smc_buf_free-function-parameters.patch
+++ b/patches.arch/s390-sles15sp1-00-11-103-net-smc-change-smc_buf_free-function-parameters.patch
diff --git a/patches.drivers/net-smc-restructure-client-and-server-code-in-af_smc.patch b/patches.arch/s390-sles15sp1-00-11-104-net-smc-restructure-client-and-server-code-in-af_smc.patch
index a2d99d3267..a2d99d3267 100644
--- a/patches.drivers/net-smc-restructure-client-and-server-code-in-af_smc.patch
+++ b/patches.arch/s390-sles15sp1-00-11-104-net-smc-restructure-client-and-server-code-in-af_smc.patch
diff --git a/patches.drivers/net-smc-return-0-for-ioctl-calls-in-states-init-and-closed.patch b/patches.arch/s390-sles15sp1-00-11-105-net-smc-return-0-for-ioctl-calls-in-states-INIT-and-.patch
index 186e90008b..186e90008b 100644
--- a/patches.drivers/net-smc-return-0-for-ioctl-calls-in-states-init-and-closed.patch
+++ b/patches.arch/s390-sles15sp1-00-11-105-net-smc-return-0-for-ioctl-calls-in-states-INIT-and-.patch
diff --git a/patches.drivers/net-smc-lock-smc_lgr_list-in-port_terminate.patch b/patches.arch/s390-sles15sp1-00-11-106-net-smc-lock-smc_lgr_list-in-port_terminate.patch
index ead75eddb6..ead75eddb6 100644
--- a/patches.drivers/net-smc-lock-smc_lgr_list-in-port_terminate.patch
+++ b/patches.arch/s390-sles15sp1-00-11-106-net-smc-lock-smc_lgr_list-in-port_terminate.patch
diff --git a/patches.drivers/net-smc-urgent-data-support.patch b/patches.arch/s390-sles15sp1-00-11-107-net-smc-urgent-data-support.patch
index f9bc6b547c..f9bc6b547c 100644
--- a/patches.drivers/net-smc-urgent-data-support.patch
+++ b/patches.arch/s390-sles15sp1-00-11-107-net-smc-urgent-data-support.patch
diff --git a/patches.drivers/net-smc-longer-delay-when-freeing-client-link-groups.patch b/patches.arch/s390-sles15sp1-00-11-108-net-smc-longer-delay-when-freeing-client-link-groups.patch
index 0a8221d205..0a8221d205 100644
--- a/patches.drivers/net-smc-longer-delay-when-freeing-client-link-groups.patch
+++ b/patches.arch/s390-sles15sp1-00-11-108-net-smc-longer-delay-when-freeing-client-link-groups.patch
diff --git a/patches.drivers/tcp-tcp-experimental-option-for-smc.patch b/patches.arch/s390-sles15sp1-00-11-109-tcp-TCP-experimental-option-for-SMC.patch
index ae8be76dc1..ae8be76dc1 100644
--- a/patches.drivers/tcp-tcp-experimental-option-for-smc.patch
+++ b/patches.arch/s390-sles15sp1-00-11-109-tcp-TCP-experimental-option-for-SMC.patch
diff --git a/patches.drivers/net-ipv4-disable-smc-tcp-option-with-syn-cookies.patch b/patches.arch/s390-sles15sp1-00-11-110-net-ipv4-disable-SMC-TCP-option-with-SYN-Cookies.patch
index a759163197..a759163197 100644
--- a/patches.drivers/net-ipv4-disable-smc-tcp-option-with-syn-cookies.patch
+++ b/patches.arch/s390-sles15sp1-00-11-110-net-ipv4-disable-SMC-TCP-option-with-SYN-Cookies.patch
diff --git a/patches.drivers/net-smc-fix-preinitialization-of-buf_desc-in-_smc_buf_create.patch b/patches.arch/s390-sles15sp1-00-11-net-smc-Fix-preinitialization-of-buf_desc-in-__smc_b.patch
index cf9d34fe0f..cf9d34fe0f 100644
--- a/patches.drivers/net-smc-fix-preinitialization-of-buf_desc-in-_smc_buf_create.patch
+++ b/patches.arch/s390-sles15sp1-00-11-net-smc-Fix-preinitialization-of-buf_desc-in-__smc_b.patch
diff --git a/patches.drivers/net-smc-fix-null-pointer-dereference-on-sock_create_kern-error-path.patch b/patches.arch/s390-sles15sp1-00-11-net-smc-fix-NULL-pointer-dereference-on-sock_create_.patch
index f22daf54cc..f22daf54cc 100644
--- a/patches.drivers/net-smc-fix-null-pointer-dereference-on-sock_create_kern-error-path.patch
+++ b/patches.arch/s390-sles15sp1-00-11-net-smc-fix-NULL-pointer-dereference-on-sock_create_.patch
diff --git a/patches.drivers/net-smc-init-conn-tx_work-conn-send_lock-sooner.patch b/patches.arch/s390-sles15sp1-00-11-net-smc-init-conn.tx_work-conn.send_lock-sooner.patch
index 75499a53c1..75499a53c1 100644
--- a/patches.drivers/net-smc-init-conn-tx_work-conn-send_lock-sooner.patch
+++ b/patches.arch/s390-sles15sp1-00-11-net-smc-init-conn.tx_work-conn.send_lock-sooner.patch
diff --git a/patches.drivers/smc-switch-to-sock_recvmsg.patch b/patches.arch/s390-sles15sp1-00-11-smc-switch-to-sock_recvmsg.patch
index a57b30b477..a57b30b477 100644
--- a/patches.drivers/smc-switch-to-sock_recvmsg.patch
+++ b/patches.arch/s390-sles15sp1-00-11-smc-switch-to-sock_recvmsg.patch
diff --git a/patches.drivers/net-smc-rebuild-nonblocking-connect.patch b/patches.arch/s390-sles15sp1-00-12-01-net-smc-rebuild-nonblocking-connect.patch
index 761181f390..761181f390 100644
--- a/patches.drivers/net-smc-rebuild-nonblocking-connect.patch
+++ b/patches.arch/s390-sles15sp1-00-12-01-net-smc-rebuild-nonblocking-connect.patch
diff --git a/patches.drivers/net-smc-determine-port-attributes-independent-from-pnet-table.patch b/patches.arch/s390-sles15sp1-00-12-02-net-smc-determine-port-attributes-independent-from-p.patch
index 99aa986468..99aa986468 100644
--- a/patches.drivers/net-smc-determine-port-attributes-independent-from-pnet-table.patch
+++ b/patches.arch/s390-sles15sp1-00-12-02-net-smc-determine-port-attributes-independent-from-p.patch
diff --git a/patches.drivers/net-smc-add-pnetid-support.patch b/patches.arch/s390-sles15sp1-00-12-03-net-smc-add-pnetid-support.patch
index 0dc6148ed2..0dc6148ed2 100644
--- a/patches.drivers/net-smc-add-pnetid-support.patch
+++ b/patches.arch/s390-sles15sp1-00-12-03-net-smc-add-pnetid-support.patch
diff --git a/patches.drivers/net-smc-optimize-consumer-cursor-updates.patch b/patches.arch/s390-sles15sp1-00-12-04-net-smc-optimize-consumer-cursor-updates.patch
index d6109bcc9a..d6109bcc9a 100644
--- a/patches.drivers/net-smc-optimize-consumer-cursor-updates.patch
+++ b/patches.arch/s390-sles15sp1-00-12-04-net-smc-optimize-consumer-cursor-updates.patch
diff --git a/patches.drivers/net-smc-add-base-infrastructure-for-smc-d-and-ism.patch b/patches.arch/s390-sles15sp1-00-12-05-net-smc-add-base-infrastructure-for-SMC-D-and-ISM.patch
index e0ee2fe936..e0ee2fe936 100644
--- a/patches.drivers/net-smc-add-base-infrastructure-for-smc-d-and-ism.patch
+++ b/patches.arch/s390-sles15sp1-00-12-05-net-smc-add-base-infrastructure-for-SMC-D-and-ISM.patch
diff --git a/patches.drivers/net-smc-add-pnetid-support-for-smc-d-and-ism.patch b/patches.arch/s390-sles15sp1-00-12-06-net-smc-add-pnetid-support-for-SMC-D-and-ISM.patch
index 8d479c392e..8d479c392e 100644
--- a/patches.drivers/net-smc-add-pnetid-support-for-smc-d-and-ism.patch
+++ b/patches.arch/s390-sles15sp1-00-12-06-net-smc-add-pnetid-support-for-SMC-D-and-ISM.patch
diff --git a/patches.drivers/net-smc-add-smc-d-support-in-clc-messages.patch b/patches.arch/s390-sles15sp1-00-12-07-net-smc-add-SMC-D-support-in-CLC-messages.patch
index 5dcb0f5363..5dcb0f5363 100644
--- a/patches.drivers/net-smc-add-smc-d-support-in-clc-messages.patch
+++ b/patches.arch/s390-sles15sp1-00-12-07-net-smc-add-SMC-D-support-in-CLC-messages.patch
diff --git a/patches.drivers/net-smc-add-smc-d-support-in-data-transfer.patch b/patches.arch/s390-sles15sp1-00-12-08-net-smc-add-SMC-D-support-in-data-transfer.patch
index b986df5cb7..b986df5cb7 100644
--- a/patches.drivers/net-smc-add-smc-d-support-in-data-transfer.patch
+++ b/patches.arch/s390-sles15sp1-00-12-08-net-smc-add-SMC-D-support-in-data-transfer.patch
diff --git a/patches.drivers/net-smc-add-smc-d-support-in-af_smc.patch b/patches.arch/s390-sles15sp1-00-12-09-net-smc-add-SMC-D-support-in-af_smc.patch
index 3f189dc083..3f189dc083 100644
--- a/patches.drivers/net-smc-add-smc-d-support-in-af_smc.patch
+++ b/patches.arch/s390-sles15sp1-00-12-09-net-smc-add-SMC-D-support-in-af_smc.patch
diff --git a/patches.drivers/net-smc-add-smc-d-diag-support.patch b/patches.arch/s390-sles15sp1-00-12-10-net-smc-add-SMC-D-diag-support.patch
index 16c4976af6..16c4976af6 100644
--- a/patches.drivers/net-smc-add-smc-d-diag-support.patch
+++ b/patches.arch/s390-sles15sp1-00-12-10-net-smc-add-SMC-D-diag-support.patch
diff --git a/patches.drivers/s390-ism-add-device-driver-for-internal-shared-memory.patch b/patches.arch/s390-sles15sp1-00-12-11-s390-ism-add-device-driver-for-internal-shared-memory.patch
index 259722cbc3..259722cbc3 100644
--- a/patches.drivers/s390-ism-add-device-driver-for-internal-shared-memory.patch
+++ b/patches.arch/s390-sles15sp1-00-12-11-s390-ism-add-device-driver-for-internal-shared-memory.patch
diff --git a/patches.drivers/s390-net-add-pnetid-support.patch b/patches.arch/s390-sles15sp1-00-12-12-s390-net-add-pnetid-support.patch
index 8c139d1a1d..8c139d1a1d 100644
--- a/patches.drivers/s390-net-add-pnetid-support.patch
+++ b/patches.arch/s390-sles15sp1-00-12-12-s390-net-add-pnetid-support.patch
diff --git a/patches.drivers/s390-cio-rename-struct-channel_path_desc.patch b/patches.arch/s390-sles15sp1-00-12-13-s390-cio-rename-struct-channel_path_desc.patch
index f527c4f812..f527c4f812 100644
--- a/patches.drivers/s390-cio-rename-struct-channel_path_desc.patch
+++ b/patches.arch/s390-sles15sp1-00-12-13-s390-cio-rename-struct-channel_path_desc.patch
diff --git a/patches.drivers/s390-chsc-query-utility-strings-via-fmt3-channel-path-descriptor.patch b/patches.arch/s390-sles15sp1-00-12-14-s390-chsc-query-utility-strings-via-fmt3-channel-path.patch
index 94e89dd70c..94e89dd70c 100644
--- a/patches.drivers/s390-chsc-query-utility-strings-via-fmt3-channel-path-descriptor.patch
+++ b/patches.arch/s390-sles15sp1-00-12-14-s390-chsc-query-utility-strings-via-fmt3-channel-path.patch
diff --git a/patches.drivers/s390-cio-add-util_string-sysfs-attribute.patch b/patches.arch/s390-sles15sp1-00-12-15-s390-cio-add-util_string-sysfs-attribute.patch
index 6a3ccbcf69..6a3ccbcf69 100644
--- a/patches.drivers/s390-cio-add-util_string-sysfs-attribute.patch
+++ b/patches.arch/s390-sles15sp1-00-12-15-s390-cio-add-util_string-sysfs-attribute.patch
diff --git a/patches.drivers/s390-cio-add-helper-to-query-utility-strings-per-given-ccw-device.patch b/patches.arch/s390-sles15sp1-00-12-16-s390-cio-add-helper-to-query-utility-strings-per-give.patch
index 76a0b28b3c..76a0b28b3c 100644
--- a/patches.drivers/s390-cio-add-helper-to-query-utility-strings-per-given-ccw-device.patch
+++ b/patches.arch/s390-sles15sp1-00-12-16-s390-cio-add-helper-to-query-utility-strings-per-give.patch
diff --git a/patches.drivers/s390-cio-add-test-for-ccwgroup-device.patch b/patches.arch/s390-sles15sp1-00-12-17-s390-cio-add-test-for-ccwgroup-device.patch
index 7a0a663fa5..7a0a663fa5 100644
--- a/patches.drivers/s390-cio-add-test-for-ccwgroup-device.patch
+++ b/patches.arch/s390-sles15sp1-00-12-17-s390-cio-add-test-for-ccwgroup-device.patch
diff --git a/patches.drivers/net-smc-reduce-sock_put-for-fallback-sockets.patch b/patches.arch/s390-sles15sp1-00-12-18-net-smc-reduce-sock_put-for-fallback-sockets.patch
index 534ad2a6b4..534ad2a6b4 100644
--- a/patches.drivers/net-smc-reduce-sock_put-for-fallback-sockets.patch
+++ b/patches.arch/s390-sles15sp1-00-12-18-net-smc-reduce-sock_put-for-fallback-sockets.patch
diff --git a/patches.drivers/net-smc-provide-smc-mode-in-smc_diag-c.patch b/patches.arch/s390-sles15sp1-00-12-19-net-smc-provide-smc-mode-in-smc_diag-c.patch
index 57702a82d1..57702a82d1 100644
--- a/patches.drivers/net-smc-provide-smc-mode-in-smc_diag-c.patch
+++ b/patches.arch/s390-sles15sp1-00-12-19-net-smc-provide-smc-mode-in-smc_diag-c.patch
diff --git a/patches.drivers/net-smc-eliminate-cursor-read-and-write-calls.patch b/patches.arch/s390-sles15sp1-00-12-20-net-smc-eliminate-cursor-read-and-write-calls.patch
index 30f420998f..30f420998f 100644
--- a/patches.drivers/net-smc-eliminate-cursor-read-and-write-calls.patch
+++ b/patches.arch/s390-sles15sp1-00-12-20-net-smc-eliminate-cursor-read-and-write-calls.patch
diff --git a/patches.drivers/net-smc-add-function-to-get-link-group-from-link.patch b/patches.arch/s390-sles15sp1-00-12-21-net-smc-add-function-to-get-link-group-from-link.patch
index fcbd1d5dd5..fcbd1d5dd5 100644
--- a/patches.drivers/net-smc-add-function-to-get-link-group-from-link.patch
+++ b/patches.arch/s390-sles15sp1-00-12-21-net-smc-add-function-to-get-link-group-from-link.patch
diff --git a/patches.drivers/net-smc-use-declare_bitmap-for-rtokens_used_mask.patch b/patches.arch/s390-sles15sp1-00-12-22-net-smc-use-DECLARE_BITMAP-for-rtokens_used_mask.patch
index 78ea428146..78ea428146 100644
--- a/patches.drivers/net-smc-use-declare_bitmap-for-rtokens_used_mask.patch
+++ b/patches.arch/s390-sles15sp1-00-12-22-net-smc-use-DECLARE_BITMAP-for-rtokens_used_mask.patch
diff --git a/patches.drivers/net-smc-remove-local-variable-page-in-smc_rx_splice.patch b/patches.arch/s390-sles15sp1-00-12-23-net-smc-remove-local-variable-page-in-smc_rx_splice.patch
index bf7a1032d1..bf7a1032d1 100644
--- a/patches.drivers/net-smc-remove-local-variable-page-in-smc_rx_splice.patch
+++ b/patches.arch/s390-sles15sp1-00-12-23-net-smc-remove-local-variable-page-in-smc_rx_splice.patch
diff --git a/patches.drivers/net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch b/patches.arch/s390-sles15sp1-00-12-24-net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch
index 38fcc9b248..38fcc9b248 100644
--- a/patches.drivers/net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch
+++ b/patches.arch/s390-sles15sp1-00-12-24-net-smc-allow-sysctl-rmem-and-wmem-defaults-for-servers.patch
diff --git a/patches.drivers/net-smc-take-sock-lock-in-smc_ioctl.patch b/patches.arch/s390-sles15sp1-00-12-25-net-smc-take-sock-lock-in-smc_ioctl.patch
index a2f7a1724b..a2f7a1724b 100644
--- a/patches.drivers/net-smc-take-sock-lock-in-smc_ioctl.patch
+++ b/patches.arch/s390-sles15sp1-00-12-25-net-smc-take-sock-lock-in-smc_ioctl.patch
diff --git a/patches.drivers/net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch b/patches.arch/s390-sles15sp1-00-12-26-net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch
index 4fc89cadbb..4fc89cadbb 100644
--- a/patches.drivers/net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch
+++ b/patches.arch/s390-sles15sp1-00-12-26-net-smc-fewer-parameters-for-smc_llc_send_confirm_link.patch
diff --git a/patches.drivers/net-smc-use-correct-vlan-gid-of-roce-device.patch b/patches.arch/s390-sles15sp1-00-12-27-net-smc-use-correct-vlan-gid-of-RoCE-device.patch
index 16c62aeebb..16c62aeebb 100644
--- a/patches.drivers/net-smc-use-correct-vlan-gid-of-roce-device.patch
+++ b/patches.arch/s390-sles15sp1-00-12-27-net-smc-use-correct-vlan-gid-of-RoCE-device.patch
diff --git a/patches.drivers/net-smc-provide-fallback-reason-code.patch b/patches.arch/s390-sles15sp1-00-12-28-net-smc-provide-fallback-reason-code.patch
index f5d45e5f6e..f5d45e5f6e 100644
--- a/patches.drivers/net-smc-provide-fallback-reason-code.patch
+++ b/patches.arch/s390-sles15sp1-00-12-28-net-smc-provide-fallback-reason-code.patch
diff --git a/patches.drivers/net-smc-improve-delete-link-processing.patch b/patches.arch/s390-sles15sp1-00-12-29-net-smc-improve-delete-link-processing.patch
index c4f1f83753..c4f1f83753 100644
--- a/patches.drivers/net-smc-improve-delete-link-processing.patch
+++ b/patches.arch/s390-sles15sp1-00-12-29-net-smc-improve-delete-link-processing.patch
diff --git a/patches.drivers/net-smc-send-response-to-test-link-signal.patch b/patches.arch/s390-sles15sp1-00-12-30-net-smc-send-response-to-test-link-signal.patch
index 796ccd990d..796ccd990d 100644
--- a/patches.drivers/net-smc-send-response-to-test-link-signal.patch
+++ b/patches.arch/s390-sles15sp1-00-12-30-net-smc-send-response-to-test-link-signal.patch
diff --git a/patches.drivers/net-smc-no-shutdown-in-state-smc_listen.patch b/patches.arch/s390-sles15sp1-00-12-31-net-smc-no-shutdown-in-state-SMC_LISTEN.patch
index 9a8edebffb..9a8edebffb 100644
--- a/patches.drivers/net-smc-no-shutdown-in-state-smc_listen.patch
+++ b/patches.arch/s390-sles15sp1-00-12-31-net-smc-no-shutdown-in-state-SMC_LISTEN.patch
diff --git a/patches.drivers/net-smc-add-error-handling-for-get_user.patch b/patches.arch/s390-sles15sp1-00-12-32-net-smc-add-error-handling-for-get_user.patch
index ab2f43a618..ab2f43a618 100644
--- a/patches.drivers/net-smc-add-error-handling-for-get_user.patch
+++ b/patches.arch/s390-sles15sp1-00-12-32-net-smc-add-error-handling-for-get_user.patch
diff --git a/patches.drivers/net-smc-move-sock-lock-in-smc_ioctl.patch b/patches.arch/s390-sles15sp1-00-12-33-net-smc-move-sock-lock-in-smc_ioctl.patch
index f473fd402f..f473fd402f 100644
--- a/patches.drivers/net-smc-move-sock-lock-in-smc_ioctl.patch
+++ b/patches.arch/s390-sles15sp1-00-12-33-net-smc-move-sock-lock-in-smc_ioctl.patch
diff --git a/patches.drivers/net-smc-no-cursor-update-send-in-state-smc_init.patch b/patches.arch/s390-sles15sp1-00-12-34-net-smc-no-cursor-update-send-in-state-SMC_INIT.patch
index 2a7da48ece..2a7da48ece 100644
--- a/patches.drivers/net-smc-no-cursor-update-send-in-state-smc_init.patch
+++ b/patches.arch/s390-sles15sp1-00-12-34-net-smc-no-cursor-update-send-in-state-SMC_INIT.patch
diff --git a/patches.drivers/net-smc-reset-recv-timeout-after-clc-handshake.patch b/patches.arch/s390-sles15sp1-00-12-35-net-smc-reset-recv-timeout-after-clc-handshake.patch
index aaeacc1009..aaeacc1009 100644
--- a/patches.drivers/net-smc-reset-recv-timeout-after-clc-handshake.patch
+++ b/patches.arch/s390-sles15sp1-00-12-35-net-smc-reset-recv-timeout-after-clc-handshake.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-01-net-smc-fix-non-blocking-connect-problem.patch b/patches.arch/s390-sles15sp1-00-12-36-net-smc-fix-non-blocking-connect-problem.patch
index 78f6ffa168..78f6ffa168 100644
--- a/patches.arch/s390-sles12sp4-03-04-01-net-smc-fix-non-blocking-connect-problem.patch
+++ b/patches.arch/s390-sles15sp1-00-12-36-net-smc-fix-non-blocking-connect-problem.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-02-net-smc-remove-duplicate-mutex_unlock.patch b/patches.arch/s390-sles15sp1-00-12-37-net-smc-remove-duplicate-mutex_unlock.patch
index 2f51d0f083..2f51d0f083 100644
--- a/patches.arch/s390-sles12sp4-03-04-02-net-smc-remove-duplicate-mutex_unlock.patch
+++ b/patches.arch/s390-sles15sp1-00-12-37-net-smc-remove-duplicate-mutex_unlock.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-03-net-smc-enable-fallback-for-connection-abort-in-stat.patch b/patches.arch/s390-sles15sp1-00-12-38-net-smc-enable-fallback-for-connection-abort-in-stat.patch
index 216c30425b..216c30425b 100644
--- a/patches.arch/s390-sles12sp4-03-04-03-net-smc-enable-fallback-for-connection-abort-in-stat.patch
+++ b/patches.arch/s390-sles15sp1-00-12-38-net-smc-enable-fallback-for-connection-abort-in-stat.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-04-net-smc-no-urgent-data-check-for-listen-sockets.patch b/patches.arch/s390-sles15sp1-00-12-39-net-smc-no-urgent-data-check-for-listen-sockets.patch
index 87b7ea5501..87b7ea5501 100644
--- a/patches.arch/s390-sles12sp4-03-04-04-net-smc-no-urgent-data-check-for-listen-sockets.patch
+++ b/patches.arch/s390-sles15sp1-00-12-39-net-smc-no-urgent-data-check-for-listen-sockets.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-05-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch b/patches.arch/s390-sles15sp1-00-12-40-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch
index 614197ac39..614197ac39 100644
--- a/patches.arch/s390-sles12sp4-03-04-05-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch
+++ b/patches.arch/s390-sles15sp1-00-12-40-net-smc-fix-smc_buf_unuse-to-use-the-lgr-pointer.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-06-net-smc-cleanup-tcp_listen_worker-initialization.patch b/patches.arch/s390-sles15sp1-00-12-41-net-smc-cleanup-tcp_listen_worker-initialization.patch
index 25d32f0a76..25d32f0a76 100644
--- a/patches.arch/s390-sles12sp4-03-04-06-net-smc-cleanup-tcp_listen_worker-initialization.patch
+++ b/patches.arch/s390-sles15sp1-00-12-41-net-smc-cleanup-tcp_listen_worker-initialization.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-07-net-smc-make-smc_lgr_free-static.patch b/patches.arch/s390-sles15sp1-00-12-42-net-smc-make-smc_lgr_free-static.patch
index 2610848bd2..2610848bd2 100644
--- a/patches.arch/s390-sles12sp4-03-04-07-net-smc-make-smc_lgr_free-static.patch
+++ b/patches.arch/s390-sles15sp1-00-12-42-net-smc-make-smc_lgr_free-static.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-08-net-smc-remove-sock_error-detour-in-clc-functions.patch b/patches.arch/s390-sles15sp1-00-12-43-net-smc-remove-sock_error-detour-in-clc-functions.patch
index 5a0cb65d2a..5a0cb65d2a 100644
--- a/patches.arch/s390-sles12sp4-03-04-08-net-smc-remove-sock_error-detour-in-clc-functions.patch
+++ b/patches.arch/s390-sles15sp1-00-12-43-net-smc-remove-sock_error-detour-in-clc-functions.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-09-net-smc-allow-fallback-after-clc-timeouts.patch b/patches.arch/s390-sles15sp1-00-12-44-net-smc-allow-fallback-after-clc-timeouts.patch
index 5b355dddc9..5b355dddc9 100644
--- a/patches.arch/s390-sles12sp4-03-04-09-net-smc-allow-fallback-after-clc-timeouts.patch
+++ b/patches.arch/s390-sles15sp1-00-12-44-net-smc-allow-fallback-after-clc-timeouts.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-10-net-smc-no-link-delete-for-a-never-active-link.patch b/patches.arch/s390-sles15sp1-00-12-45-net-smc-no-link-delete-for-a-never-active-link.patch
index 530ae5268e..530ae5268e 100644
--- a/patches.arch/s390-sles12sp4-03-04-10-net-smc-no-link-delete-for-a-never-active-link.patch
+++ b/patches.arch/s390-sles15sp1-00-12-45-net-smc-no-link-delete-for-a-never-active-link.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-11-net-smc-short-wait-for-late-smc_clc_wait_msg.patch b/patches.arch/s390-sles15sp1-00-12-46-net-smc-short-wait-for-late-smc_clc_wait_msg.patch
index e8821bdd61..e8821bdd61 100644
--- a/patches.arch/s390-sles12sp4-03-04-11-net-smc-short-wait-for-late-smc_clc_wait_msg.patch
+++ b/patches.arch/s390-sles15sp1-00-12-46-net-smc-short-wait-for-late-smc_clc_wait_msg.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-12-net-smc-cleanup-listen-worker-mutex-unlocking.patch b/patches.arch/s390-sles15sp1-00-12-47-net-smc-cleanup-listen-worker-mutex-unlocking.patch
index 57ad53657b..57ad53657b 100644
--- a/patches.arch/s390-sles12sp4-03-04-12-net-smc-cleanup-listen-worker-mutex-unlocking.patch
+++ b/patches.arch/s390-sles15sp1-00-12-47-net-smc-cleanup-listen-worker-mutex-unlocking.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-13-net-smc-avoid-a-delay-by-waiting-for-nothing.patch b/patches.arch/s390-sles15sp1-00-12-48-net-smc-avoid-a-delay-by-waiting-for-nothing.patch
index c48d702027..c48d702027 100644
--- a/patches.arch/s390-sles12sp4-03-04-13-net-smc-avoid-a-delay-by-waiting-for-nothing.patch
+++ b/patches.arch/s390-sles15sp1-00-12-48-net-smc-avoid-a-delay-by-waiting-for-nothing.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-14-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch b/patches.arch/s390-sles15sp1-00-12-49-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch
index 9c27c07947..9c27c07947 100644
--- a/patches.arch/s390-sles12sp4-03-04-14-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch
+++ b/patches.arch/s390-sles15sp1-00-12-49-net-smc-add-infrastructure-to-send-delete-rkey-messa.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-15-net-smc-unregister-rkeys-of-unused-buffer.patch b/patches.arch/s390-sles15sp1-00-12-50-net-smc-unregister-rkeys-of-unused-buffer.patch
index 5dc08c9e44..5dc08c9e44 100644
--- a/patches.arch/s390-sles12sp4-03-04-15-net-smc-unregister-rkeys-of-unused-buffer.patch
+++ b/patches.arch/s390-sles15sp1-00-12-50-net-smc-unregister-rkeys-of-unused-buffer.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-16-net-smc-abort-CLC-connection-in-smc_release.patch b/patches.arch/s390-sles15sp1-00-12-51-net-smc-abort-CLC-connection-in-smc_release.patch
index b70b4d109c..b70b4d109c 100644
--- a/patches.arch/s390-sles12sp4-03-04-16-net-smc-abort-CLC-connection-in-smc_release.patch
+++ b/patches.arch/s390-sles15sp1-00-12-51-net-smc-abort-CLC-connection-in-smc_release.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-17-net-smc-use-queue-pair-number-when-matching-link-gro.patch b/patches.arch/s390-sles15sp1-00-12-52-net-smc-use-queue-pair-number-when-matching-link-gro.patch
index 003d27f109..003d27f109 100644
--- a/patches.arch/s390-sles12sp4-03-04-17-net-smc-use-queue-pair-number-when-matching-link-gro.patch
+++ b/patches.arch/s390-sles15sp1-00-12-52-net-smc-use-queue-pair-number-when-matching-link-gro.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-18-net-smc-add-SMC-D-shutdown-signal.patch b/patches.arch/s390-sles15sp1-00-12-53-net-smc-add-SMC-D-shutdown-signal.patch
index c626fa6149..c626fa6149 100644
--- a/patches.arch/s390-sles12sp4-03-04-18-net-smc-add-SMC-D-shutdown-signal.patch
+++ b/patches.arch/s390-sles15sp1-00-12-53-net-smc-add-SMC-D-shutdown-signal.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-19-net-smc-atomic-SMCD-cursor-handling.patch b/patches.arch/s390-sles15sp1-00-12-54-net-smc-atomic-SMCD-cursor-handling.patch
index f7ea571554..f7ea571554 100644
--- a/patches.arch/s390-sles12sp4-03-04-19-net-smc-atomic-SMCD-cursor-handling.patch
+++ b/patches.arch/s390-sles15sp1-00-12-54-net-smc-atomic-SMCD-cursor-handling.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-20-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch b/patches.arch/s390-sles15sp1-00-12-55-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch
index 46cf554b9e..46cf554b9e 100644
--- a/patches.arch/s390-sles12sp4-03-04-20-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch
+++ b/patches.arch/s390-sles15sp1-00-12-55-net-smc-use-after-free-fix-in-smc_wr_tx_put_slot.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-21-mlx4-trigger-IB-events-needed-by-SMC.patch b/patches.arch/s390-sles15sp1-00-12-56-mlx4-trigger-IB-events-needed-by-SMC.patch
index 6d9f48ec53..6d9f48ec53 100644
--- a/patches.arch/s390-sles12sp4-03-04-21-mlx4-trigger-IB-events-needed-by-SMC.patch
+++ b/patches.arch/s390-sles15sp1-00-12-56-mlx4-trigger-IB-events-needed-by-SMC.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-22-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch b/patches.arch/s390-sles15sp1-00-12-57-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch
index cadcbda7a3..cadcbda7a3 100644
--- a/patches.arch/s390-sles12sp4-03-04-22-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch
+++ b/patches.arch/s390-sles15sp1-00-12-57-s390-ism-clear-dmbe_mask-bit-before-SMC-IRQ-handling.patch
diff --git a/patches.arch/s390-sles12sp4-03-04-23-net-smc-fix-sizeof-to-int-comparison.patch b/patches.arch/s390-sles15sp1-00-12-58-net-smc-fix-sizeof-to-int-comparison.patch
index f23075db35..f23075db35 100644
--- a/patches.arch/s390-sles12sp4-03-04-23-net-smc-fix-sizeof-to-int-comparison.patch
+++ b/patches.arch/s390-sles15sp1-00-12-58-net-smc-fix-sizeof-to-int-comparison.patch
diff --git a/patches.drivers/net-smc-check-for-missing-nlattrs-in-SMC_PNETID-mess.patch b/patches.arch/s390-sles15sp1-00-12-59-net-smc-check-for-missing-nlattrs-in-smc_pnetid-mess.patch
index e5238ef632..e5238ef632 100644
--- a/patches.drivers/net-smc-check-for-missing-nlattrs-in-SMC_PNETID-mess.patch
+++ b/patches.arch/s390-sles15sp1-00-12-59-net-smc-check-for-missing-nlattrs-in-smc_pnetid-mess.patch
diff --git a/patches.drivers/net-smc-fix-error-return-code-in-smc_setsockopt.patch b/patches.arch/s390-sles15sp1-00-12-net-smc-fix-error-return-code-in-smc_setsockopt.patch
index 97ce3a756b..97ce3a756b 100644
--- a/patches.drivers/net-smc-fix-error-return-code-in-smc_setsockopt.patch
+++ b/patches.arch/s390-sles15sp1-00-12-net-smc-fix-error-return-code-in-smc_setsockopt.patch
diff --git a/patches.arch/s390-crypto-add-inline-assembly-for-kma-instruction-to-cpacf-h.patch b/patches.arch/s390-sles15sp1-00-14-01-s390-crypto-add-inline-assembly-for-KMA-instruction-.patch
index 7cb62da3bf..7cb62da3bf 100644
--- a/patches.arch/s390-crypto-add-inline-assembly-for-kma-instruction-to-cpacf-h.patch
+++ b/patches.arch/s390-sles15sp1-00-14-01-s390-crypto-add-inline-assembly-for-KMA-instruction-.patch
diff --git a/patches.arch/s390-crypto-add-s390-platform-specific-aes-gcm-support.patch b/patches.arch/s390-sles15sp1-00-14-02-s390-crypto-add-s390-platform-specific-aes-gcm-suppo.patch
index 1447a554a3..1447a554a3 100644
--- a/patches.arch/s390-crypto-add-s390-platform-specific-aes-gcm-support.patch
+++ b/patches.arch/s390-sles15sp1-00-14-02-s390-crypto-add-s390-platform-specific-aes-gcm-suppo.patch
diff --git a/patches.arch/s390-crypto-fix-kernel-crash-on-aes_s390-module-remove.patch b/patches.arch/s390-sles15sp1-00-14-03-s390-crypto-Fix-kernel-crash-on-aes_s390-module-remo.patch
index 8bb53a3bac..8bb53a3bac 100644
--- a/patches.arch/s390-crypto-fix-kernel-crash-on-aes_s390-module-remove.patch
+++ b/patches.arch/s390-sles15sp1-00-14-03-s390-crypto-Fix-kernel-crash-on-aes_s390-module-remo.patch
diff --git a/patches.arch/s390-qeth-invoke-softirqs-after-napi_schedule b/patches.arch/s390-sles15sp1-00-16-12-s390-qeth-invoke-softirqs-after-napi_schedule.patch
index 87b8bede4b..87b8bede4b 100644
--- a/patches.arch/s390-qeth-invoke-softirqs-after-napi_schedule
+++ b/patches.arch/s390-sles15sp1-00-16-12-s390-qeth-invoke-softirqs-after-napi_schedule.patch
diff --git a/patches.arch/s390-speculation-support-mitigations-cmdline-option.patch b/patches.arch/s390-speculation-support-mitigations-cmdline-option.patch
new file mode 100644
index 0000000000..232c182f03
--- /dev/null
+++ b/patches.arch/s390-speculation-support-mitigations-cmdline-option.patch
@@ -0,0 +1,91 @@
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+Date: Fri, 12 Apr 2019 15:39:31 -0500
+Subject: s390/speculation: Support 'mitigations=' cmdline option
+Git-commit: 0336e04a6520bdaefdb0769d2a70084fa52e81ed
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
+Patch-mainline: queued in subsystem tree
+References: bsc#1112178
+
+Configure s390 runtime CPU speculation bug mitigations in accordance
+with the 'mitigations=' cmdline option. This affects Spectre v1 and
+Spectre v2.
+
+The default behavior is unchanged.
+
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
+Reviewed-by: Jiri Kosina <jkosina@suse.cz>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: "H . Peter Anvin" <hpa@zytor.com>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Waiman Long <longman@redhat.com>
+Cc: Andrea Arcangeli <aarcange@redhat.com>
+Cc: Jon Masters <jcm@redhat.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: linuxppc-dev@lists.ozlabs.org
+Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
+Cc: linux-s390@vger.kernel.org
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-arch@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Tyler Hicks <tyhicks@canonical.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Randy Dunlap <rdunlap@infradead.org>
+Cc: Steven Price <steven.price@arm.com>
+Cc: Phil Auld <pauld@redhat.com>
+Link: https://lkml.kernel.org/r/e4a161805458a5ec88812aac0307ae3908a030fc.1555085500.git.jpoimboe@redhat.com
+
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ Documentation/admin-guide/kernel-parameters.txt | 5 +++--
+ arch/s390/kernel/nospec-branch.c | 3 ++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+--- a/arch/s390/kernel/nospec-branch.c
++++ b/arch/s390/kernel/nospec-branch.c
+@@ -2,6 +2,7 @@
+ #include <linux/module.h>
+ #include <linux/device.h>
+ #include <asm/facility.h>
++#include <linux/cpu.h>
+ #include <asm/nospec-branch.h>
+
+ static int __init nobp_setup_early(char *str)
+@@ -59,7 +60,7 @@ early_param("nospectre_v2", nospectre_v2
+
+ void __init nospec_auto_detect(void)
+ {
+- if (test_facility(156)) {
++ if (test_facility(156) || cpu_mitigations_off()) {
+ /*
+ * The machine supports etokens.
+ * Disable expolines and disable nobp.
+--- a/Documentation/admin-guide/kernel-parameters.txt
++++ b/Documentation/admin-guide/kernel-parameters.txt
+@@ -2375,7 +2375,7 @@
+ http://repo.or.cz/w/linux-2.6/mini2440.git
+
+ mitigations=
+- [X86,PPC] Control optional mitigations for CPU
++ [X86,PPC,S390] Control optional mitigations for CPU
+ vulnerabilities. This is a set of curated,
+ arch-independent options, each of which is an
+ aggregation of existing arch-specific options.
+@@ -2386,7 +2386,8 @@
+ expose users to several CPU vulnerabilities.
+ Equivalent to: nopti [X86,PPC]
+ nospectre_v1 [PPC]
+- nospectre_v2 [X86,PPC]
++ nobp=0 [S390]
++ nospectre_v2 [X86,PPC,S390]
+ spectre_v2_user=off [X86]
+ spec_store_bypass_disable=off [X86,PPC]
+ l1tf=off [X86]
diff --git a/patches.arch/svm-avic-fix-invalidate-logical-apic-id-entry b/patches.arch/svm-avic-fix-invalidate-logical-apic-id-entry
new file mode 100644
index 0000000000..990d8d671e
--- /dev/null
+++ b/patches.arch/svm-avic-fix-invalidate-logical-apic-id-entry
@@ -0,0 +1,42 @@
+From: "Suthikulpanit, Suravee" <Suravee.Suthikulpanit@amd.com>
+Date: Tue, 26 Mar 2019 03:57:37 +0000
+Subject: svm/avic: Fix invalidate logical APIC id entry
+Git-commit: e44e3eacccfd2294a1ce279f68452b1635d7fa82
+Patch-mainline: v5.1-rc6
+References: bsc#1132726
+
+Only clear the valid bit when invalidate logical APIC id entry.
+The current logic clear the valid bit, but also set the rest of
+the bits (including reserved bits) to 1.
+
+Fixes: 98d90582be2e ('svm: Fix AVIC DFR and LDR handling')
+Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/svm.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
+index d7b14c902052..933f19d840fe 100644
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -262,6 +262,7 @@ struct amd_svm_iommu_ir {
+ };
+
+ #define AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK (0xFF)
++#define AVIC_LOGICAL_ID_ENTRY_VALID_BIT 31
+ #define AVIC_LOGICAL_ID_ENTRY_VALID_MASK (1 << 31)
+
+ #define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK (0xFFULL)
+@@ -4607,7 +4608,7 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu)
+ u32 *entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat);
+
+ if (entry)
+- WRITE_ONCE(*entry, (u32) ~AVIC_LOGICAL_ID_ENTRY_VALID_MASK);
++ clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, (unsigned long *)entry);
+ }
+
+ static int avic_handle_ldr_update(struct kvm_vcpu *vcpu)
+
diff --git a/patches.arch/svm-fix-avic-dfr-and-ldr-handling b/patches.arch/svm-fix-avic-dfr-and-ldr-handling
new file mode 100644
index 0000000000..ee855a311e
--- /dev/null
+++ b/patches.arch/svm-fix-avic-dfr-and-ldr-handling
@@ -0,0 +1,159 @@
+From: "Suthikulpanit, Suravee" <Suravee.Suthikulpanit@amd.com>
+Date: Tue, 29 Jan 2019 08:08:42 +0000
+Subject: svm: Fix AVIC DFR and LDR handling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Git-commit: 98d90582be2e08246a70af31e09950ecb8876252
+Patch-mainline: v5.1-rc1
+References: bsc#1132558
+
+Current SVM AVIC driver makes two incorrect assumptions:
+ 1. APIC LDR register cannot be zero
+ 2. APIC DFR for all vCPUs must be the same
+
+LDR=0 means the local APIC does not support logical destination mode.
+Therefore, the driver should mark any previously assigned logical APIC ID
+table entry as invalid, and return success. Also, DFR is specific to
+a particular local APIC, and can be different among all vCPUs
+(as observed on Windows 10).
+
+These incorrect assumptions cause Windows 10 and FreeBSD VMs to fail
+to boot with AVIC enabled. So, instead of flush the whole logical APIC ID
+table, handle DFR and LDR for each vCPU independently.
+
+Fixes: 18f40c53e10f ('svm: Add VMEXIT handlers for AVIC')
+Cc: Radim Krčmář <rkrcmar@redhat.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Reported-by: Julian Stecklina <jsteckli@amazon.de>
+Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/svm.c | 64 +++++++++++++++++++++++++-----------------------------
+ 1 file changed, 30 insertions(+), 34 deletions(-)
+
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -215,6 +215,7 @@ struct vcpu_svm {
+ bool nrips_enabled : 1;
+
+ u32 ldr_reg;
++ u32 dfr_reg;
+ struct page *avic_backing_page;
+ u64 *avic_physical_id_cache;
+ bool avic_is_running;
+@@ -2051,6 +2052,7 @@ static int avic_init_vcpu(struct vcpu_sv
+
+ INIT_LIST_HEAD(&svm->ir_list);
+ spin_lock_init(&svm->ir_list_lock);
++ svm->dfr_reg = APIC_DFR_FLAT;
+
+ return ret;
+ }
+@@ -4492,8 +4494,7 @@ static u32 *avic_get_logical_id_entry(st
+ return &logical_apic_id_table[index];
+ }
+
+-static int avic_ldr_write(struct kvm_vcpu *vcpu, u8 g_physical_id, u32 ldr,
+- bool valid)
++static int avic_ldr_write(struct kvm_vcpu *vcpu, u8 g_physical_id, u32 ldr)
+ {
+ bool flat;
+ u32 *entry, new_entry;
+@@ -4506,31 +4507,39 @@ static int avic_ldr_write(struct kvm_vcp
+ new_entry = READ_ONCE(*entry);
+ new_entry &= ~AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK;
+ new_entry |= (g_physical_id & AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK);
+- if (valid)
+- new_entry |= AVIC_LOGICAL_ID_ENTRY_VALID_MASK;
+- else
+- new_entry &= ~AVIC_LOGICAL_ID_ENTRY_VALID_MASK;
++ new_entry |= AVIC_LOGICAL_ID_ENTRY_VALID_MASK;
+ WRITE_ONCE(*entry, new_entry);
+
+ return 0;
+ }
+
++static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu)
++{
++ struct vcpu_svm *svm = to_svm(vcpu);
++ bool flat = svm->dfr_reg == APIC_DFR_FLAT;
++ u32 *entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat);
++
++ if (entry)
++ WRITE_ONCE(*entry, (u32) ~AVIC_LOGICAL_ID_ENTRY_VALID_MASK);
++}
++
+ static int avic_handle_ldr_update(struct kvm_vcpu *vcpu)
+ {
+- int ret;
++ int ret = 0;
+ struct vcpu_svm *svm = to_svm(vcpu);
+ u32 ldr = kvm_lapic_get_reg(vcpu->arch.apic, APIC_LDR);
+
+- if (!ldr)
+- return 1;
++ if (ldr == svm->ldr_reg)
++ return 0;
+
+- ret = avic_ldr_write(vcpu, vcpu->vcpu_id, ldr, true);
+- if (ret && svm->ldr_reg) {
+- avic_ldr_write(vcpu, 0, svm->ldr_reg, false);
+- svm->ldr_reg = 0;
+- } else {
++ avic_invalidate_logical_id_entry(vcpu);
++
++ if (ldr)
++ ret = avic_ldr_write(vcpu, vcpu->vcpu_id, ldr);
++
++ if (!ret)
+ svm->ldr_reg = ldr;
+- }
++
+ return ret;
+ }
+
+@@ -4564,27 +4573,16 @@ static int avic_handle_apic_id_update(st
+ return 0;
+ }
+
+-static int avic_handle_dfr_update(struct kvm_vcpu *vcpu)
++static void avic_handle_dfr_update(struct kvm_vcpu *vcpu)
+ {
+ struct vcpu_svm *svm = to_svm(vcpu);
+- struct kvm_arch *vm_data = &vcpu->kvm->arch;
+ u32 dfr = kvm_lapic_get_reg(vcpu->arch.apic, APIC_DFR);
+- u32 mod = (dfr >> 28) & 0xf;
+-
+- /*
+- * We assume that all local APICs are using the same type.
+- * If this changes, we need to flush the AVIC logical
+- * APID id table.
+- */
+- if (vm_data->ldr_mode == mod)
+- return 0;
+
+- clear_page(page_address(vm_data->avic_logical_id_table_page));
+- vm_data->ldr_mode = mod;
++ if (svm->dfr_reg == dfr)
++ return;
+
+- if (svm->ldr_reg)
+- avic_handle_ldr_update(vcpu);
+- return 0;
++ avic_invalidate_logical_id_entry(vcpu);
++ svm->dfr_reg = dfr;
+ }
+
+ static int avic_unaccel_trap_write(struct vcpu_svm *svm)
+@@ -6068,8 +6066,7 @@ static inline void avic_post_state_resto
+ {
+ if (avic_handle_apic_id_update(vcpu) != 0)
+ return;
+- if (avic_handle_dfr_update(vcpu) != 0)
+- return;
++ avic_handle_dfr_update(vcpu);
+ avic_handle_ldr_update(vcpu);
+ }
+
diff --git a/patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions b/patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions.patch
index 585cd3949b..cc11db844c 100644
--- a/patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions
+++ b/patches.arch/x86-cpufeature-add-user-mode-instruction-prevention-definitions.patch
@@ -1,7 +1,7 @@
From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Date: Sun, 5 Nov 2017 18:27:51 -0800
Subject: x86/cpufeature: Add User-Mode Instruction Prevention definitions
-Git-commit: a8b4db562e7283a1520f9e9730297ecaab7622ea
+Git-commit: 3522c2a6a4f341058b8291326a945e2a2d2aaf55
Patch-mainline: v4.15-rc4
References: bsc#1110006
diff --git a/patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling.patch b/patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling
index 5cbbd772d9..5cbbd772d9 100644
--- a/patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling.patch
+++ b/patches.arch/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling
diff --git a/patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument.patch b/patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument
index f544d1bf77..f544d1bf77 100644
--- a/patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument.patch
+++ b/patches.arch/x86-fpu-parse-clearcpuid-as-early-xsave-argument
diff --git a/patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features.patch b/patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features
index 04953897ce..04953897ce 100644
--- a/patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features.patch
+++ b/patches.arch/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features
diff --git a/patches.arch/x86-kvm-hyper-v-avoid-spurious-pending-stimer-on-vcpu-init b/patches.arch/x86-kvm-hyper-v-avoid-spurious-pending-stimer-on-vcpu-init
new file mode 100644
index 0000000000..a0294d6154
--- /dev/null
+++ b/patches.arch/x86-kvm-hyper-v-avoid-spurious-pending-stimer-on-vcpu-init
@@ -0,0 +1,70 @@
+From: Vitaly Kuznetsov <vkuznets@redhat.com>
+Date: Wed, 13 Mar 2019 18:13:42 +0100
+Subject: x86/kvm/hyper-v: avoid spurious pending stimer on vCPU init
+Git-commit: 013cc6ebbf41496ce4badedd71ea6d4a6d198c14
+Patch-mainline: v5.1-rc3
+References: bsc#1132572
+
+When userspace initializes guest vCPUs it may want to zero all supported
+MSRs including Hyper-V related ones including HV_X64_MSR_STIMERn_CONFIG/
+HV_X64_MSR_STIMERn_COUNT. With commit f3b138c5d89a ("kvm/x86: Update SynIC
+timers on guest entry only") we began doing stimer_mark_pending()
+unconditionally on every config change.
+
+The issue I'm observing manifests itself as following:
+- Qemu writes 0 to STIMERn_{CONFIG,COUNT} MSRs and marks all stimers as
+ pending in stimer_pending_bitmap, arms KVM_REQ_HV_STIMER;
+- kvm_hv_has_stimer_pending() starts returning true;
+- kvm_vcpu_has_events() starts returning true;
+- kvm_arch_vcpu_runnable() starts returning true;
+- when kvm_arch_vcpu_ioctl_run() gets into
+ (vcpu->arch.mp_state == KVM_MP_STATE_UNINITIALIZED) case:
+ - kvm_vcpu_block() gets in 'kvm_vcpu_check_block(vcpu) < 0' and returns
+ immediately, avoiding normal wait path;
+ - -EAGAIN is returned from kvm_arch_vcpu_ioctl_run() immediately forcing
+ userspace to retry.
+
+So instead of normal wait path we get a busy loop on all secondary vCPUs
+before they get INIT signal. This seems to be undesirable, especially given
+that this happens even when Hyper-V extensions are not used.
+
+Generally, it seems to be pointless to mark an stimer as pending in
+stimer_pending_bitmap and arm KVM_REQ_HV_STIMER as the only thing
+kvm_hv_process_stimers() will do is clear the corresponding bit. We may
+just not mark disabled timers as pending instead.
+
+Fixes: f3b138c5d89a ("kvm/x86: Update SynIC timers on guest entry only")
+Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ arch/x86/kvm/hyperv.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kvm/hyperv.c
++++ b/arch/x86/kvm/hyperv.c
+@@ -527,7 +527,10 @@ static int stimer_set_config(struct kvm_
+ if ((stimer->config & HV_STIMER_ENABLE) && HV_STIMER_SINT(config) == 0)
+ config &= ~HV_STIMER_ENABLE;
+ stimer->config = config;
+- stimer_mark_pending(stimer, false);
++
++ if (stimer->config & HV_STIMER_ENABLE)
++ stimer_mark_pending(stimer, false);
++
+ return 0;
+ }
+
+@@ -543,7 +546,10 @@ static int stimer_set_count(struct kvm_v
+ stimer->config &= ~HV_STIMER_ENABLE;
+ else if (stimer->config & HV_STIMER_AUTOENABLE)
+ stimer->config |= HV_STIMER_ENABLE;
+- stimer_mark_pending(stimer, false);
++
++ if (stimer->config & HV_STIMER_ENABLE)
++ stimer_mark_pending(stimer, false);
++
+ return 0;
+ }
+
+
diff --git a/patches.arch/x86-speculation-prevent-deadlock-on-ssb_state-lock.patch b/patches.arch/x86-speculation-prevent-deadlock-on-ssb_state-lock.patch
new file mode 100644
index 0000000000..72b3ad5190
--- /dev/null
+++ b/patches.arch/x86-speculation-prevent-deadlock-on-ssb_state-lock.patch
@@ -0,0 +1,69 @@
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sun, 14 Apr 2019 19:51:06 +0200
+Subject: x86/speculation: Prevent deadlock on ssb_state::lock
+Git-commit: 2f5fb19341883bb6e37da351bc3700489d8506a7
+Patch-mainline: v5.1-rc6
+References: bsc#1114279
+
+Mikhail reported a lockdep splat related to the AMD specific ssb_state
+lock:
+
+ CPU0 CPU1
+ lock(&st->lock);
+ local_irq_disable();
+ lock(&(&sighand->siglock)->rlock);
+ lock(&st->lock);
+ <Interrupt>
+ lock(&(&sighand->siglock)->rlock);
+
+ *** DEADLOCK ***
+
+The connection between sighand->siglock and st->lock comes through seccomp,
+which takes st->lock while holding sighand->siglock.
+
+Make sure interrupts are disabled when __speculation_ctrl_update() is
+invoked via prctl() -> speculation_ctrl_update(). Add a lockdep assert to
+catch future offenders.
+
+Fixes: 1f50ddb4f418 ("x86/speculation: Handle HT correctly on AMD")
+Reported-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
+Cc: Thomas Lendacky <thomas.lendacky@amd.com>
+Cc: stable@vger.kernel.org
+Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1904141948200.4917@nanos.tec.linutronix.de
+
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ arch/x86/kernel/process.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
+index 58ac7be52c7a..957eae13b370 100644
+--- a/arch/x86/kernel/process.c
++++ b/arch/x86/kernel/process.c
+@@ -426,6 +426,8 @@ static __always_inline void __speculation_ctrl_update(unsigned long tifp,
+ u64 msr = x86_spec_ctrl_base;
+ bool updmsr = false;
+
++ lockdep_assert_irqs_disabled();
++
+ /*
+ * If TIF_SSBD is different, select the proper mitigation
+ * method. Note that if SSBD mitigation is disabled or permanentely
+@@ -477,10 +479,12 @@ static unsigned long speculation_ctrl_update_tif(struct task_struct *tsk)
+
+ void speculation_ctrl_update(unsigned long tif)
+ {
++ unsigned long flags;
++
+ /* Forced update. Make sure all relevant TIF flags are different */
+- preempt_disable();
++ local_irq_save(flags);
+ __speculation_ctrl_update(~tif, tif);
+- preempt_enable();
++ local_irq_restore(flags);
+ }
+
+ /* Called from seccomp/prctl update */
+
diff --git a/patches.arch/x86-speculation-support-mitigations-cmdline-option.patch b/patches.arch/x86-speculation-support-mitigations-cmdline-option.patch
new file mode 100644
index 0000000000..8fda421f64
--- /dev/null
+++ b/patches.arch/x86-speculation-support-mitigations-cmdline-option.patch
@@ -0,0 +1,148 @@
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+Date: Fri, 12 Apr 2019 15:39:29 -0500
+Subject: x86/speculation: Support 'mitigations=' cmdline option
+Git-commit: d68be4c4d31295ff6ae34a8ddfaa4c1a8ff42812
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
+Patch-mainline: queued in subsystem tree
+References: bsc#1112178
+
+Configure x86 runtime CPU speculation bug mitigations in accordance with
+the 'mitigations=' cmdline option. This affects Meltdown, Spectre v2,
+Speculative Store Bypass, and L1TF.
+
+The default behavior is unchanged.
+
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
+Reviewed-by: Jiri Kosina <jkosina@suse.cz>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: "H . Peter Anvin" <hpa@zytor.com>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Waiman Long <longman@redhat.com>
+Cc: Andrea Arcangeli <aarcange@redhat.com>
+Cc: Jon Masters <jcm@redhat.com>
+Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Cc: Paul Mackerras <paulus@samba.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: linuxppc-dev@lists.ozlabs.org
+Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
+Cc: linux-s390@vger.kernel.org
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-arch@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Tyler Hicks <tyhicks@canonical.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Randy Dunlap <rdunlap@infradead.org>
+Cc: Steven Price <steven.price@arm.com>
+Cc: Phil Auld <pauld@redhat.com>
+Link: https://lkml.kernel.org/r/6616d0ae169308516cfdf5216bedd169f8a8291b.1555085500.git.jpoimboe@redhat.com
+
+Acked-by: Borislav Petkov <bp@suse.de>
+---
+ Documentation/admin-guide/kernel-parameters.txt | 16 +++++++++++-----
+ arch/x86/kernel/cpu/bugs.c | 11 +++++++++--
+ arch/x86/mm/pti.c | 4 +++-
+ 3 files changed, 23 insertions(+), 8 deletions(-)
+
+--- a/arch/x86/kernel/cpu/bugs.c
++++ b/arch/x86/kernel/cpu/bugs.c
+@@ -260,6 +260,11 @@ static void __init l1tf_select_mitigatio
+ if (!boot_cpu_has_bug(X86_BUG_L1TF))
+ return;
+
++ if (cpu_mitigations_off())
++ l1tf_mitigation = L1TF_MITIGATION_OFF;
++ else if (cpu_mitigations_auto_nosmt())
++ l1tf_mitigation = L1TF_MITIGATION_FLUSH_NOSMT;
++
+ override_cache_bits(&boot_cpu_data);
+
+ switch (l1tf_mitigation) {
+@@ -546,7 +551,8 @@ static enum spectre_v2_mitigation_cmd __
+ char arg[20];
+ int ret, i;
+
+- if (cmdline_find_option_bool(boot_command_line, "nospectre_v2"))
++ if (cmdline_find_option_bool(boot_command_line, "nospectre_v2") ||
++ cpu_mitigations_off())
+ return SPECTRE_V2_CMD_NONE;
+
+ ret = cmdline_find_option(boot_command_line, "spectre_v2", arg, sizeof(arg));
+@@ -792,7 +798,8 @@ static enum ssb_mitigation_cmd __init ss
+ char arg[20];
+ int ret, i;
+
+- if (cmdline_find_option_bool(boot_command_line, "nospec_store_bypass_disable")) {
++ if (cmdline_find_option_bool(boot_command_line, "nospec_store_bypass_disable") ||
++ cpu_mitigations_off()) {
+ return SPEC_STORE_BYPASS_CMD_NONE;
+ } else {
+ ret = cmdline_find_option(boot_command_line, "spec_store_bypass_disable",
+--- a/arch/x86/mm/pti.c
++++ b/arch/x86/mm/pti.c
+@@ -35,6 +35,7 @@
+ #include <linux/spinlock.h>
+ #include <linux/mm.h>
+ #include <linux/uaccess.h>
++#include <linux/cpu.h>
+
+ #include <asm/cpufeature.h>
+ #include <asm/hypervisor.h>
+@@ -90,7 +91,8 @@ void __init pti_check_boottime_disable(v
+ goto autosel;
+ }
+
+- if (cmdline_find_option_bool(boot_command_line, "nopti")) {
++ if (cmdline_find_option_bool(boot_command_line, "nopti") ||
++ cpu_mitigations_off()) {
+ pti_print_if_insecure("disabled on command line.");
+ return;
+ }
+--- a/Documentation/admin-guide/kernel-parameters.txt
++++ b/Documentation/admin-guide/kernel-parameters.txt
+@@ -2375,15 +2375,20 @@
+ http://repo.or.cz/w/linux-2.6/mini2440.git
+
+ mitigations=
+- Control optional mitigations for CPU vulnerabilities.
+- This is a set of curated, arch-independent options, each
+- of which is an aggregation of existing arch-specific
+- options.
++ [X86] Control optional mitigations for CPU
++ vulnerabilities. This is a set of curated,
++ arch-independent options, each of which is an
++ aggregation of existing arch-specific options.
+
+ off
+ Disable all optional CPU mitigations. This
+ improves system performance, but it may also
+ expose users to several CPU vulnerabilities.
++ Equivalent to: nopti [X86]
++ nospectre_v2 [X86]
++ spectre_v2_user=off [X86]
++ spec_store_bypass_disable=off [X86]
++ l1tf=off [X86]
+
+ auto (default)
+ Mitigate all CPU vulnerabilities, but leave SMT
+@@ -2391,12 +2396,13 @@
+ users who don't want to be surprised by SMT
+ getting disabled across kernel upgrades, or who
+ have other ways of avoiding SMT-based attacks.
+- This is the default behavior.
++ Equivalent to: (default behavior)
+
+ auto,nosmt
+ Mitigate all CPU vulnerabilities, disabling SMT
+ if needed. This is for users who always want to
+ be fully mitigated, even if it means losing SMT.
++ Equivalent to: l1tf=flush,nosmt [X86]
+
+ mminit_loglevel=
+ [KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
diff --git a/patches.drivers/0001-iommu-iova-add-flush-queue-data-structures b/patches.drivers/0001-iommu-iova-Add-flush-queue-data-structures.patch
index e600d48075..e600d48075 100644
--- a/patches.drivers/0001-iommu-iova-add-flush-queue-data-structures
+++ b/patches.drivers/0001-iommu-iova-Add-flush-queue-data-structures.patch
diff --git a/patches.drivers/0002-iommu-iova-implement-flush-queue-ring-buffer b/patches.drivers/0002-iommu-iova-Implement-Flush-Queue-ring-buffer.patch
index 66eed3dd36..66eed3dd36 100644
--- a/patches.drivers/0002-iommu-iova-implement-flush-queue-ring-buffer
+++ b/patches.drivers/0002-iommu-iova-Implement-Flush-Queue-ring-buffer.patch
diff --git a/patches.drivers/0002-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch b/patches.drivers/0003-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch
index 7a3ce90a25..7a3ce90a25 100644
--- a/patches.drivers/0002-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch
+++ b/patches.drivers/0003-ACPI-CPPC-Check-for-valid-PCC-subspace-only-if-PCC-i.patch
diff --git a/patches.drivers/0003-iommu-iova-add-flush-counters-to-flush-queue-implementation b/patches.drivers/0003-iommu-iova-Add-flush-counters-to-Flush-Queue-impleme.patch
index 1b54a4e108..1b54a4e108 100644
--- a/patches.drivers/0003-iommu-iova-add-flush-counters-to-flush-queue-implementation
+++ b/patches.drivers/0003-iommu-iova-Add-flush-counters-to-Flush-Queue-impleme.patch
diff --git a/patches.drivers/rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch b/patches.drivers/0003-rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch
index f113186801..f113186801 100644
--- a/patches.drivers/rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch
+++ b/patches.drivers/0003-rtc-pcf2127-fix-a-kmemleak-caused-in-pcf2127_i2c_gat.patch
diff --git a/patches.drivers/0004-iommu-iova-add-locking-to-flush-queues b/patches.drivers/0004-iommu-iova-Add-locking-to-Flush-Queues.patch
index e4cac40914..e4cac40914 100644
--- a/patches.drivers/0004-iommu-iova-add-locking-to-flush-queues
+++ b/patches.drivers/0004-iommu-iova-Add-locking-to-Flush-Queues.patch
diff --git a/patches.drivers/0005-iommu-iova-add-flush-timer b/patches.drivers/0005-iommu-iova-Add-flush-timer.patch
index 9854c4cfdf..9854c4cfdf 100644
--- a/patches.drivers/0005-iommu-iova-add-flush-timer
+++ b/patches.drivers/0005-iommu-iova-Add-flush-timer.patch
diff --git a/patches.drivers/mmc-sdhci-of-esdhc-Fix-timeout-checks.patch b/patches.drivers/0006-mmc-sdhci-of-esdhc-Fix-timeout-checks.patch
index 2a19fbf9f6..2a19fbf9f6 100644
--- a/patches.drivers/mmc-sdhci-of-esdhc-Fix-timeout-checks.patch
+++ b/patches.drivers/0006-mmc-sdhci-of-esdhc-Fix-timeout-checks.patch
diff --git a/patches.drivers/0004-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch b/patches.drivers/0007-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch
index e1483a4be1..e1483a4be1 100644
--- a/patches.drivers/0004-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch
+++ b/patches.drivers/0007-cpufreq-CPPC-Add-cpuinfo_cur_freq-support-for-CPPC.patch
diff --git a/patches.fixes/0001-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch b/patches.drivers/0023-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch
index b9cb8b9acd..b9cb8b9acd 100644
--- a/patches.fixes/0001-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch
+++ b/patches.drivers/0023-arm64-Add-work-around-for-Arm-Cortex-A55-Erratum-102.patch
diff --git a/patches.drivers/ALSA-core-Fix-card-races-between-register-and-discon.patch b/patches.drivers/ALSA-core-Fix-card-races-between-register-and-discon.patch
new file mode 100644
index 0000000000..b7b3a9fb0f
--- /dev/null
+++ b/patches.drivers/ALSA-core-Fix-card-races-between-register-and-discon.patch
@@ -0,0 +1,79 @@
+From 2a3f7221acddfe1caa9ff09b3a8158c39b2fdeac Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 16 Apr 2019 17:06:33 +0200
+Subject: [PATCH] ALSA: core: Fix card races between register and disconnect
+Git-commit: 2a3f7221acddfe1caa9ff09b3a8158c39b2fdeac
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+There is a small race window in the card disconnection code that
+allows the registration of another card with the very same card id.
+This leads to a warning in procfs creation as caught by syzkaller.
+
+The problem is that we delete snd_cards and snd_cards_lock entries at
+the very beginning of the disconnection procedure. This makes the
+slot available to be assigned for another card object while the
+disconnection procedure is being processed. Then it becomes possible
+to issue a procfs registration with the existing file name although we
+check the conflict beforehand.
+
+The fix is simply to move the snd_cards and snd_cards_lock clearances
+at the end of the disconnection procedure. The references to these
+entries are merely either from the global proc files like
+/proc/asound/cards or from the card registration / disconnection, so
+it should be fine to shift at the very end.
+
+Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/core/init.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/sound/core/init.c b/sound/core/init.c
+index 0c4dc40376a7..079c12d64b0e 100644
+--- a/sound/core/init.c
++++ b/sound/core/init.c
+@@ -382,14 +382,7 @@ int snd_card_disconnect(struct snd_card *card)
+ card->shutdown = 1;
+ spin_unlock(&card->files_lock);
+
+- /* phase 1: disable fops (user space) operations for ALSA API */
+- mutex_lock(&snd_card_mutex);
+- snd_cards[card->number] = NULL;
+- clear_bit(card->number, snd_cards_lock);
+- mutex_unlock(&snd_card_mutex);
+-
+- /* phase 2: replace file->f_op with special dummy operations */
+-
++ /* replace file->f_op with special dummy operations */
+ spin_lock(&card->files_lock);
+ list_for_each_entry(mfile, &card->files_list, list) {
+ /* it's critical part, use endless loop */
+@@ -405,7 +398,7 @@ int snd_card_disconnect(struct snd_card *card)
+ }
+ spin_unlock(&card->files_lock);
+
+- /* phase 3: notify all connected devices about disconnection */
++ /* notify all connected devices about disconnection */
+ /* at this point, they cannot respond to any calls except release() */
+
+ #if IS_ENABLED(CONFIG_SND_MIXER_OSS)
+@@ -421,6 +414,13 @@ int snd_card_disconnect(struct snd_card *card)
+ device_del(&card->card_dev);
+ card->registered = false;
+ }
++
++ /* disable fops (user space) operations for ALSA API */
++ mutex_lock(&snd_card_mutex);
++ snd_cards[card->number] = NULL;
++ clear_bit(card->number, snd_cards_lock);
++ mutex_unlock(&snd_card_mutex);
++
+ #ifdef CONFIG_PM
+ wake_up(&card->power_sleep);
+ #endif
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-hda-Add-two-more-machines-to-the-power_save_bla.patch b/patches.drivers/ALSA-hda-Add-two-more-machines-to-the-power_save_bla.patch
new file mode 100644
index 0000000000..acf13b6946
--- /dev/null
+++ b/patches.drivers/ALSA-hda-Add-two-more-machines-to-the-power_save_bla.patch
@@ -0,0 +1,48 @@
+From cae30527901d9590db0e12ace994c1d58bea87fd Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Mon, 8 Apr 2019 15:58:11 +0800
+Subject: [PATCH] ALSA: hda - Add two more machines to the power_save_blacklist
+Git-commit: cae30527901d9590db0e12ace994c1d58bea87fd
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+Recently we set CONFIG_SND_HDA_POWER_SAVE_DEFAULT to 1 when
+configuring the kernel, then two machines were reported to have noise
+after installing the new kernel. Put them in the blacklist, the
+noise disappears.
+
+https://bugs.launchpad.net/bugs/1821663
+
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/pci/hda/hda_intel.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
+index ece256a3b48f..2ec91085fa3e 100644
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -2142,6 +2142,8 @@ static struct snd_pci_quirk power_save_blacklist[] = {
+ SND_PCI_QUIRK(0x8086, 0x2040, "Intel DZ77BH-55K", 0),
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=199607 */
+ SND_PCI_QUIRK(0x8086, 0x2057, "Intel NUC5i7RYB", 0),
++ /* https://bugs.launchpad.net/bugs/1821663 */
++ SND_PCI_QUIRK(0x8086, 0x2064, "Intel SDP 8086:2064", 0),
+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1520902 */
+ SND_PCI_QUIRK(0x8086, 0x2068, "Intel NUC7i3BNB", 0),
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=198611 */
+@@ -2150,6 +2152,8 @@ static struct snd_pci_quirk power_save_blacklist[] = {
+ SND_PCI_QUIRK(0x17aa, 0x367b, "Lenovo IdeaCentre B550", 0),
+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1572975 */
+ SND_PCI_QUIRK(0x17aa, 0x36a7, "Lenovo C50 All in one", 0),
++ /* https://bugs.launchpad.net/bugs/1821663 */
++ SND_PCI_QUIRK(0x1631, 0xe017, "Packard Bell NEC IMEDIA 5204", 0),
+ {}
+ };
+ #endif /* CONFIG_PM */
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-hda-Initialize-power_state-field-properly.patch b/patches.drivers/ALSA-hda-Initialize-power_state-field-properly.patch
new file mode 100644
index 0000000000..f5f455d41e
--- /dev/null
+++ b/patches.drivers/ALSA-hda-Initialize-power_state-field-properly.patch
@@ -0,0 +1,37 @@
+From 183ab39eb0ea9879bb68422a83e65f750f3192f0 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Sat, 13 Apr 2019 10:04:49 +0200
+Subject: [PATCH] ALSA: hda: Initialize power_state field properly
+Git-commit: 183ab39eb0ea9879bb68422a83e65f750f3192f0
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+The recent commit 98081ca62cba ("ALSA: hda - Record the current power
+state before suspend/resume calls") made the HD-audio driver to store
+the PM state in power_state field. This forgot, however, the
+initialization at power up. Although the codec drivers usually don't
+need to refer to this field in the normal operation, let's initialize
+it properly for consistency.
+
+Fixes: 98081ca62cba ("ALSA: hda - Record the current power state before suspend/resume calls")
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/pci/hda/hda_codec.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
+index ec0b8595eb4d..701a69d856f5 100644
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -969,6 +969,7 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
+
+ /* power-up all before initialization */
+ hda_set_power_state(codec, AC_PWRST_D0);
++ codec->core.dev.power.power_state = PMSG_ON;
+
+ snd_hda_codec_proc_new(codec);
+
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-hda-realtek-add-two-more-pin-configuration-sets.patch b/patches.drivers/ALSA-hda-realtek-add-two-more-pin-configuration-sets.patch
new file mode 100644
index 0000000000..b524a35feb
--- /dev/null
+++ b/patches.drivers/ALSA-hda-realtek-add-two-more-pin-configuration-sets.patch
@@ -0,0 +1,48 @@
+From b26e36b7ef36a8a3a147b1609b2505f8a4ecf511 Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Wed, 17 Apr 2019 16:10:32 +0800
+Subject: [PATCH] ALSA: hda/realtek - add two more pin configuration sets to quirk table
+Git-commit: b26e36b7ef36a8a3a147b1609b2505f8a4ecf511
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+We have two Dell laptops which have the codec 10ec0236 and 10ec0256
+respectively, the headset mic on them can't work, need to apply the
+quirk of ALC255_FIXUP_DELL1_MIC_NO_PRESENCE. So adding their pin
+configurations in the pin quirk table.
+
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 810479766090..f5b510f119ed 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -7266,6 +7266,8 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
+ {0x12, 0x90a60140},
+ {0x14, 0x90170150},
+ {0x21, 0x02211020}),
++ SND_HDA_PIN_QUIRK(0x10ec0236, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
++ {0x21, 0x02211020}),
+ SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL2_MIC_NO_PRESENCE,
+ {0x14, 0x90170110},
+ {0x21, 0x02211020}),
+@@ -7376,6 +7378,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
+ {0x21, 0x0221101f}),
+ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
+ ALC256_STANDARD_PINS),
++ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
++ {0x14, 0x90170110},
++ {0x1b, 0x01011020},
++ {0x21, 0x0221101f}),
+ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1043, "ASUS", ALC256_FIXUP_ASUS_MIC,
+ {0x14, 0x90170110},
+ {0x1b, 0x90a70130},
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-info-Fix-racy-addition-deletion-of-nodes.patch b/patches.drivers/ALSA-info-Fix-racy-addition-deletion-of-nodes.patch
new file mode 100644
index 0000000000..49e6da1cc3
--- /dev/null
+++ b/patches.drivers/ALSA-info-Fix-racy-addition-deletion-of-nodes.patch
@@ -0,0 +1,57 @@
+From 8c2f870890fd28e023b0fcf49dcee333f2c8bad7 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 16 Apr 2019 15:25:00 +0200
+Subject: [PATCH] ALSA: info: Fix racy addition/deletion of nodes
+Git-commit: 8c2f870890fd28e023b0fcf49dcee333f2c8bad7
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+The ALSA proc helper manages the child nodes in a linked list, but its
+addition and deletion is done without any lock. This leads to a
+corruption if they are operated concurrently. Usually this isn't a
+problem because the proc entries are added sequentially in the driver
+probe procedure itself. But the card registrations are done often
+asynchronously, and the crash could be actually reproduced with
+syzkaller.
+
+This patch papers over it by protecting the link addition and deletion
+with the parent's mutex. There is "access" mutex that is used for the
+file access, and this can be reused for this purpose as well.
+
+Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/core/info.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+--- a/sound/core/info.c
++++ b/sound/core/info.c
+@@ -724,8 +724,11 @@ snd_info_create_entry(const char *name,
+ INIT_LIST_HEAD(&entry->children);
+ INIT_LIST_HEAD(&entry->list);
+ entry->parent = parent;
+- if (parent)
++ if (parent) {
++ mutex_lock(&parent->access);
+ list_add_tail(&entry->list, &parent->children);
++ mutex_unlock(&parent->access);
++ }
+ return entry;
+ }
+
+@@ -809,7 +812,12 @@ void snd_info_free_entry(struct snd_info
+ list_for_each_entry_safe(p, n, &entry->children, list)
+ snd_info_free_entry(p);
+
+- list_del(&entry->list);
++ p = entry->parent;
++ if (p) {
++ mutex_lock(&p->access);
++ list_del(&entry->list);
++ mutex_unlock(&p->access);
++ }
+ kfree(entry->name);
+ if (entry->private_free)
+ entry->private_free(entry);
diff --git a/patches.drivers/ALSA-seq-Fix-OOB-reads-from-strlcpy.patch b/patches.drivers/ALSA-seq-Fix-OOB-reads-from-strlcpy.patch
new file mode 100644
index 0000000000..d9c1789ed2
--- /dev/null
+++ b/patches.drivers/ALSA-seq-Fix-OOB-reads-from-strlcpy.patch
@@ -0,0 +1,55 @@
+From 212ac181c158c09038c474ba68068be49caecebb Mon Sep 17 00:00:00 2001
+From: Zubin Mithra <zsm@chromium.org>
+Date: Thu, 4 Apr 2019 14:33:55 -0700
+Subject: [PATCH] ALSA: seq: Fix OOB-reads from strlcpy
+Git-commit: 212ac181c158c09038c474ba68068be49caecebb
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+When ioctl calls are made with non-null-terminated userspace strings,
+strlcpy causes an OOB-read from within strlen. Fix by changing to use
+strscpy instead.
+
+Signed-off-by: Zubin Mithra <zsm@chromium.org>
+Reviewed-by: Guenter Roeck <groeck@chromium.org>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/core/seq/seq_clientmgr.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
+index 7d4640d1fe9f..38e7deab6384 100644
+--- a/sound/core/seq/seq_clientmgr.c
++++ b/sound/core/seq/seq_clientmgr.c
+@@ -1252,7 +1252,7 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,
+
+ /* fill the info fields */
+ if (client_info->name[0])
+- strlcpy(client->name, client_info->name, sizeof(client->name));
++ strscpy(client->name, client_info->name, sizeof(client->name));
+
+ client->filter = client_info->filter;
+ client->event_lost = client_info->event_lost;
+@@ -1530,7 +1530,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
+ /* set queue name */
+ if (!info->name[0])
+ snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue);
+- strlcpy(q->name, info->name, sizeof(q->name));
++ strscpy(q->name, info->name, sizeof(q->name));
+ snd_use_lock_free(&q->use_lock);
+
+ return 0;
+@@ -1592,7 +1592,7 @@ static int snd_seq_ioctl_set_queue_info(struct snd_seq_client *client,
+ queuefree(q);
+ return -EPERM;
+ }
+- strlcpy(q->name, info->name, sizeof(q->name));
++ strscpy(q->name, info->name, sizeof(q->name));
+ queuefree(q);
+
+ return 0;
+--
+2.16.4
+
diff --git a/patches.drivers/ASoC-fsl_esai-fix-channel-swap-issue-when-stream-sta.patch b/patches.drivers/ASoC-fsl_esai-fix-channel-swap-issue-when-stream-sta.patch
new file mode 100644
index 0000000000..11e8aed196
--- /dev/null
+++ b/patches.drivers/ASoC-fsl_esai-fix-channel-swap-issue-when-stream-sta.patch
@@ -0,0 +1,135 @@
+From 0ff4e8c61b794a4bf6c854ab071a1abaaa80f358 Mon Sep 17 00:00:00 2001
+From: "S.j. Wang" <shengjiu.wang@nxp.com>
+Date: Wed, 27 Feb 2019 06:31:12 +0000
+Subject: [PATCH] ASoC: fsl_esai: fix channel swap issue when stream starts
+Git-commit: 0ff4e8c61b794a4bf6c854ab071a1abaaa80f358
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+There is very low possibility ( < 0.1% ) that channel swap happened
+in beginning when multi output/input pin is enabled. The issue is
+that hardware can't send data to correct pin in the beginning with
+the normal enable flow.
+
+This is hardware issue, but there is no errata, the workaround flow
+is that: Each time playback/recording, firstly clear the xSMA/xSMB,
+then enable TE/RE, then enable xSMB and xSMA (xSMB must be enabled
+before xSMA). Which is to use the xSMA as the trigger start register,
+previously the xCR_TE or xCR_RE is the bit for starting.
+
+Fixes commit 43d24e76b698 ("ASoC: fsl_esai: Add ESAI CPU DAI driver")
+
+Cc: <stable@vger.kernel.org>
+Reviewed-by: Fabio Estevam <festevam@gmail.com>
+Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
+Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/soc/fsl/fsl_esai.c | 47 +++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 37 insertions(+), 10 deletions(-)
+
+diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c
+index afe67c865330..3623aa9a6f2e 100644
+--- a/sound/soc/fsl/fsl_esai.c
++++ b/sound/soc/fsl/fsl_esai.c
+@@ -54,6 +54,8 @@ struct fsl_esai {
+ u32 fifo_depth;
+ u32 slot_width;
+ u32 slots;
++ u32 tx_mask;
++ u32 rx_mask;
+ u32 hck_rate[2];
+ u32 sck_rate[2];
+ bool hck_dir[2];
+@@ -361,21 +363,13 @@ static int fsl_esai_set_dai_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask,
+ regmap_update_bits(esai_priv->regmap, REG_ESAI_TCCR,
+ ESAI_xCCR_xDC_MASK, ESAI_xCCR_xDC(slots));
+
+- regmap_update_bits(esai_priv->regmap, REG_ESAI_TSMA,
+- ESAI_xSMA_xS_MASK, ESAI_xSMA_xS(tx_mask));
+- regmap_update_bits(esai_priv->regmap, REG_ESAI_TSMB,
+- ESAI_xSMB_xS_MASK, ESAI_xSMB_xS(tx_mask));
+-
+ regmap_update_bits(esai_priv->regmap, REG_ESAI_RCCR,
+ ESAI_xCCR_xDC_MASK, ESAI_xCCR_xDC(slots));
+
+- regmap_update_bits(esai_priv->regmap, REG_ESAI_RSMA,
+- ESAI_xSMA_xS_MASK, ESAI_xSMA_xS(rx_mask));
+- regmap_update_bits(esai_priv->regmap, REG_ESAI_RSMB,
+- ESAI_xSMB_xS_MASK, ESAI_xSMB_xS(rx_mask));
+-
+ esai_priv->slot_width = slot_width;
+ esai_priv->slots = slots;
++ esai_priv->tx_mask = tx_mask;
++ esai_priv->rx_mask = rx_mask;
+
+ return 0;
+ }
+@@ -596,6 +590,7 @@ static int fsl_esai_trigger(struct snd_pcm_substream *substream, int cmd,
+ bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
+ u8 i, channels = substream->runtime->channels;
+ u32 pins = DIV_ROUND_UP(channels, esai_priv->slots);
++ u32 mask;
+
+ switch (cmd) {
+ case SNDRV_PCM_TRIGGER_START:
+@@ -608,15 +603,38 @@ static int fsl_esai_trigger(struct snd_pcm_substream *substream, int cmd,
+ for (i = 0; tx && i < channels; i++)
+ regmap_write(esai_priv->regmap, REG_ESAI_ETDR, 0x0);
+
++ /*
++ * When set the TE/RE in the end of enablement flow, there
++ * will be channel swap issue for multi data line case.
++ * In order to workaround this issue, we switch the bit
++ * enablement sequence to below sequence
++ * 1) clear the xSMB & xSMA: which is done in probe and
++ * stop state.
++ * 2) set TE/RE
++ * 3) set xSMB
++ * 4) set xSMA: xSMA is the last one in this flow, which
++ * will trigger esai to start.
++ */
+ regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx),
+ tx ? ESAI_xCR_TE_MASK : ESAI_xCR_RE_MASK,
+ tx ? ESAI_xCR_TE(pins) : ESAI_xCR_RE(pins));
++ mask = tx ? esai_priv->tx_mask : esai_priv->rx_mask;
++
++ regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMB(tx),
++ ESAI_xSMB_xS_MASK, ESAI_xSMB_xS(mask));
++ regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMA(tx),
++ ESAI_xSMA_xS_MASK, ESAI_xSMA_xS(mask));
++
+ break;
+ case SNDRV_PCM_TRIGGER_SUSPEND:
+ case SNDRV_PCM_TRIGGER_STOP:
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+ regmap_update_bits(esai_priv->regmap, REG_ESAI_xCR(tx),
+ tx ? ESAI_xCR_TE_MASK : ESAI_xCR_RE_MASK, 0);
++ regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMA(tx),
++ ESAI_xSMA_xS_MASK, 0);
++ regmap_update_bits(esai_priv->regmap, REG_ESAI_xSMB(tx),
++ ESAI_xSMB_xS_MASK, 0);
+
+ /* Disable and reset FIFO */
+ regmap_update_bits(esai_priv->regmap, REG_ESAI_xFCR(tx),
+@@ -906,6 +924,15 @@ static int fsl_esai_probe(struct platform_device *pdev)
+ return ret;
+ }
+
++ esai_priv->tx_mask = 0xFFFFFFFF;
++ esai_priv->rx_mask = 0xFFFFFFFF;
++
++ /* Clear the TSMA, TSMB, RSMA, RSMB */
++ regmap_write(esai_priv->regmap, REG_ESAI_TSMA, 0);
++ regmap_write(esai_priv->regmap, REG_ESAI_TSMB, 0);
++ regmap_write(esai_priv->regmap, REG_ESAI_RSMA, 0);
++ regmap_write(esai_priv->regmap, REG_ESAI_RSMB, 0);
++
+ ret = devm_snd_soc_register_component(&pdev->dev, &fsl_esai_component,
+ &fsl_esai_dai, 1);
+ if (ret) {
+--
+2.16.4
+
diff --git a/patches.drivers/ASoC-topology-free-created-components-in-tplg-load-e.patch b/patches.drivers/ASoC-topology-free-created-components-in-tplg-load-e.patch
new file mode 100644
index 0000000000..954291ac19
--- /dev/null
+++ b/patches.drivers/ASoC-topology-free-created-components-in-tplg-load-e.patch
@@ -0,0 +1,47 @@
+From 304017d31df36fb61eb2ed3ebf65fb6870b3c731 Mon Sep 17 00:00:00 2001
+From: Bard liao <yung-chuan.liao@linux.intel.com>
+Date: Sun, 17 Feb 2019 21:23:47 +0800
+Subject: [PATCH] ASoC: topology: free created components in tplg load error
+Git-commit: 304017d31df36fb61eb2ed3ebf65fb6870b3c731
+Patch-mainline: v5.0-rc8
+References: bsc#1051510
+
+Topology resources are no longer needed if any element failed to load.
+
+Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/soc/soc-topology.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
+index fc79ec6927e3..731b963b6995 100644
+--- a/sound/soc/soc-topology.c
++++ b/sound/soc/soc-topology.c
+@@ -2487,6 +2487,7 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
+ struct snd_soc_tplg_ops *ops, const struct firmware *fw, u32 id)
+ {
+ struct soc_tplg tplg;
++ int ret;
+
+ /* setup parsing context */
+ memset(&tplg, 0, sizeof(tplg));
+@@ -2500,7 +2501,12 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
+ tplg.bytes_ext_ops = ops->bytes_ext_ops;
+ tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;
+
+- return soc_tplg_load(&tplg);
++ ret = soc_tplg_load(&tplg);
++ /* free the created components if fail to load topology */
++ if (ret)
++ snd_soc_tplg_component_remove(comp, SND_SOC_TPLG_INDEX_ALL);
++
++ return ret;
+ }
+ EXPORT_SYMBOL_GPL(snd_soc_tplg_component_load);
+
+--
+2.16.4
+
diff --git a/patches.drivers/Bluetooth-btusb-request-wake-pin-with-NOAUTOEN.patch b/patches.drivers/Bluetooth-btusb-request-wake-pin-with-NOAUTOEN.patch
new file mode 100644
index 0000000000..1e12e7f1c0
--- /dev/null
+++ b/patches.drivers/Bluetooth-btusb-request-wake-pin-with-NOAUTOEN.patch
@@ -0,0 +1,50 @@
+From 771acc7e4a6e5dba779cb1a7fd851a164bc81033 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 9 Apr 2019 11:49:17 -0700
+Subject: [PATCH] Bluetooth: btusb: request wake pin with NOAUTOEN
+Git-commit: 771acc7e4a6e5dba779cb1a7fd851a164bc81033
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+Badly-designed systems might have (for example) active-high wake pins
+that default to high (e.g., because of external pull ups) until they
+have an active firmware which starts driving it low. This can cause an
+interrupt storm in the time between request_irq() and disable_irq().
+
+We don't support shared interrupts here, so let's just pre-configure the
+interrupt to avoid auto-enabling it.
+
+Fixes: fd913ef7ce61 ("Bluetooth: btusb: Add out-of-band wakeup support")
+Fixes: 5364a0b4f4be ("arm64: dts: rockchip: move QCA6174A wakeup pin into its USB node")
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/bluetooth/btusb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
+index ded198328f21..7db48ae65cd2 100644
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -2942,6 +2942,7 @@ static int btusb_config_oob_wake(struct hci_dev *hdev)
+ return 0;
+ }
+
++ irq_set_status_flags(irq, IRQ_NOAUTOEN);
+ ret = devm_request_irq(&hdev->dev, irq, btusb_oob_wake_handler,
+ 0, "OOB Wake-on-BT", data);
+ if (ret) {
+@@ -2956,7 +2957,6 @@ static int btusb_config_oob_wake(struct hci_dev *hdev)
+ }
+
+ data->oob_wake_irq = irq;
+- disable_irq(irq);
+ bt_dev_info(hdev, "OOB Wake-on-BT configured at IRQ %u", irq);
+ return 0;
+ }
+--
+2.16.4
+
diff --git a/patches.drivers/Input-snvs_pwrkey-initialize-necessary-driver-data-b.patch b/patches.drivers/Input-snvs_pwrkey-initialize-necessary-driver-data-b.patch
new file mode 100644
index 0000000000..8fe8fdd705
--- /dev/null
+++ b/patches.drivers/Input-snvs_pwrkey-initialize-necessary-driver-data-b.patch
@@ -0,0 +1,50 @@
+From bf2a7ca39fd3ab47ef71c621a7ee69d1813b1f97 Mon Sep 17 00:00:00 2001
+From: Anson Huang <anson.huang@nxp.com>
+Date: Wed, 3 Apr 2019 15:14:44 -0700
+Subject: [PATCH] Input: snvs_pwrkey - initialize necessary driver data before enabling IRQ
+Git-commit: bf2a7ca39fd3ab47ef71c621a7ee69d1813b1f97
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+SNVS IRQ is requested before necessary driver data initialized,
+if there is a pending IRQ during driver probe phase, kernel
+NULL pointer panic will occur in IRQ handler. To avoid such
+scenario, just initialize necessary driver data before enabling
+IRQ. This patch is inspired by NXP's internal kernel tree.
+
+Fixes: d3dc6e232215 ("input: keyboard: imx: add snvs power key driver")
+Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/input/keyboard/snvs_pwrkey.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/input/keyboard/snvs_pwrkey.c b/drivers/input/keyboard/snvs_pwrkey.c
+index effb63205d3d..4c67cf30a5d9 100644
+--- a/drivers/input/keyboard/snvs_pwrkey.c
++++ b/drivers/input/keyboard/snvs_pwrkey.c
+@@ -148,6 +148,9 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
+ return error;
+ }
+
++ pdata->input = input;
++ platform_set_drvdata(pdev, pdata);
++
+ error = devm_request_irq(&pdev->dev, pdata->irq,
+ imx_snvs_pwrkey_interrupt,
+ 0, pdev->name, pdev);
+@@ -163,9 +166,6 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
+ return error;
+ }
+
+- pdata->input = input;
+- platform_set_drvdata(pdev, pdata);
+-
+ device_init_wakeup(&pdev->dev, pdata->wakeup);
+
+ return 0;
+--
+2.16.4
+
diff --git a/patches.drivers/NFC-nci-Add-some-bounds-checking-in-nci_hci_cmd_rece.patch b/patches.drivers/NFC-nci-Add-some-bounds-checking-in-nci_hci_cmd_rece.patch
new file mode 100644
index 0000000000..5635f986fa
--- /dev/null
+++ b/patches.drivers/NFC-nci-Add-some-bounds-checking-in-nci_hci_cmd_rece.patch
@@ -0,0 +1,57 @@
+From d7ee81ad09f072eab1681877fc71ec05f9c1ae92 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Wed, 3 Apr 2019 10:12:48 +0300
+Subject: [PATCH] NFC: nci: Add some bounds checking in nci_hci_cmd_received()
+Git-commit: d7ee81ad09f072eab1681877fc71ec05f9c1ae92
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+This is similar to commit 674d9de02aa7 ("NFC: Fix possible memory
+corruption when handling SHDLC I-Frame commands").
+
+I'm not totally sure, but I think that commit description may have
+overstated the danger. I was under the impression that this data came
+from the firmware? If you can't trust your networking firmware, then
+you're already in trouble.
+
+Anyway, these days we add bounds checking where ever we can and we call
+it kernel hardening. Better safe than sorry.
+
+Fixes: 11f54f228643 ("NFC: nci: Add HCI over NCI protocol support")
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ net/nfc/nci/hci.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/net/nfc/nci/hci.c b/net/nfc/nci/hci.c
+index ddfc52ac1f9b..c0d323b58e73 100644
+--- a/net/nfc/nci/hci.c
++++ b/net/nfc/nci/hci.c
+@@ -312,6 +312,10 @@ static void nci_hci_cmd_received(struct nci_dev *ndev, u8 pipe,
+ create_info = (struct nci_hci_create_pipe_resp *)skb->data;
+ dest_gate = create_info->dest_gate;
+ new_pipe = create_info->pipe;
++ if (new_pipe >= NCI_HCI_MAX_PIPES) {
++ status = NCI_HCI_ANY_E_NOK;
++ goto exit;
++ }
+
+ /* Save the new created pipe and bind with local gate,
+ * the description for skb->data[3] is destination gate id
+@@ -336,6 +340,10 @@ static void nci_hci_cmd_received(struct nci_dev *ndev, u8 pipe,
+ goto exit;
+ }
+ delete_info = (struct nci_hci_delete_pipe_noti *)skb->data;
++ if (delete_info->pipe >= NCI_HCI_MAX_PIPES) {
++ status = NCI_HCI_ANY_E_NOK;
++ goto exit;
++ }
+
+ ndev->hci_dev->pipes[delete_info->pipe].gate =
+ NCI_HCI_INVALID_GATE;
+--
+2.16.4
+
diff --git a/patches.drivers/PCI-Add-function-1-DMA-alias-quirk-for-Marvell-9170-.patch b/patches.drivers/PCI-Add-function-1-DMA-alias-quirk-for-Marvell-9170-.patch
new file mode 100644
index 0000000000..0e84e27fa3
--- /dev/null
+++ b/patches.drivers/PCI-Add-function-1-DMA-alias-quirk-for-Marvell-9170-.patch
@@ -0,0 +1,41 @@
+From 9cde402a59770a0669d895399c13407f63d7d209 Mon Sep 17 00:00:00 2001
+From: Andre Przywara <andre.przywara@arm.com>
+Date: Fri, 5 Apr 2019 16:20:47 +0100
+Subject: [PATCH] PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller
+Git-commit: 9cde402a59770a0669d895399c13407f63d7d209
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+There is a Marvell 88SE9170 PCIe SATA controller I found on a board here.
+Some quick testing with the ARM SMMU enabled reveals that it suffers from
+the same requester ID mixup problems as the other Marvell chips listed
+already.
+
+Add the PCI vendor/device ID to the list of chips which need the
+workaround.
+
+Signed-off-by: Andre Przywara <andre.przywara@arm.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Cc: stable@vger.kernel.org
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/pci/quirks.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index a59ad09ce911..a077f67fe1da 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -3877,6 +3877,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9128,
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c14 */
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9130,
+ quirk_dma_func1_alias);
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9170,
++ quirk_dma_func1_alias);
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c47 + c57 */
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9172,
+ quirk_dma_func1_alias);
+--
+2.16.4
+
diff --git a/patches.fixes/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch b/patches.drivers/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch
index 9dd43ca6cc..9dd43ca6cc 100644
--- a/patches.fixes/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch
+++ b/patches.drivers/Revert-scsi-qla2xxx-Fix-NVMe-Target-discovery.patch
diff --git a/patches.fixes/acpi-nfit-fix-address-range-scrub-completion-tracking.patch b/patches.drivers/acpi-nfit-fix-address-range-scrub-completion-tracking.patch
index 77325578d8..77325578d8 100644
--- a/patches.fixes/acpi-nfit-fix-address-range-scrub-completion-tracking.patch
+++ b/patches.drivers/acpi-nfit-fix-address-range-scrub-completion-tracking.patch
diff --git a/patches.fixes/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch b/patches.drivers/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch
index 0109b0472c..0109b0472c 100644
--- a/patches.fixes/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch
+++ b/patches.drivers/acpi-nfit-fix-user-initiated-ars-to-be-ars-long-rather-than-ars-short.patch
diff --git a/patches.fixes/acpi-nfit-Prefer-_DSM-over-_LSR-for-namespace-label-.patch b/patches.drivers/acpi-nfit-prefer-dsm-over-lsr-for-namespace-label-reads.patch
index 721939a3e4..721939a3e4 100644
--- a/patches.fixes/acpi-nfit-Prefer-_DSM-over-_LSR-for-namespace-label-.patch
+++ b/patches.drivers/acpi-nfit-prefer-dsm-over-lsr-for-namespace-label-reads.patch
diff --git a/patches.drivers/ath10k-avoid-possible-string-overflow.patch b/patches.drivers/ath10k-avoid-possible-string-overflow.patch
new file mode 100644
index 0000000000..477a0f80c8
--- /dev/null
+++ b/patches.drivers/ath10k-avoid-possible-string-overflow.patch
@@ -0,0 +1,40 @@
+From 6707ba0105a2d350710bc0a537a98f49eb4b895d Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 29 Mar 2018 00:06:10 +0200
+Subject: [PATCH] ath10k: avoid possible string overflow
+Git-commit: 6707ba0105a2d350710bc0a537a98f49eb4b895d
+Patch-mainline: v4.18-rc1
+References: bsc#1051510
+
+[ backport note: only the first chunk was applied -- tiwai ]
+
+The way that 'strncat' is used here raised a warning in gcc-8:
+
+Drivers/net/wireless/ath/ath10k/wmi.c: In function 'ath10k_wmi_tpc_stats_final_disp_tables':
+drivers/net/wireless/ath/ath10k/wmi.c:4649:4: error: 'strncat' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
+
+Effectively, this is simply a strcat() but the use of strncat() suggests
+some form of overflow check. Regardless of whether this might actually
+overflow, using strlcat() instead of strncat() avoids the warning and
+makes the code more robust.
+
+Fixes: bc64d05220f3 ("ath10k: debugfs support to get final TPC stats for 10.4 variants")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wireless/ath/ath10k/wmi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath10k/wmi.c
++++ b/drivers/net/wireless/ath/ath10k/wmi.c
+@@ -4284,7 +4284,7 @@ static void ath10k_tpc_config_disp_table
+ rate_code[i],
+ type);
+ snprintf(buff, sizeof(buff), "%8d ", tpc[j]);
+- strncat(tpc_value, buff, strlen(buff));
++ strlcat(tpc_value, buff, sizeof(tpc_value));
+ }
+ tpc_stats->tpc_table[type].pream_idx[i] = pream_idx;
+ tpc_stats->tpc_table[type].rate_code[i] = rate_code[i];
diff --git a/patches.suse/0008-blk-mq-debugfs-Add-kick-operation.patch b/patches.drivers/blk-mq-debugfs-Add-kick-operation.patch
index ea68ebc478..ea68ebc478 100644
--- a/patches.suse/0008-blk-mq-debugfs-Add-kick-operation.patch
+++ b/patches.drivers/blk-mq-debugfs-Add-kick-operation.patch
diff --git a/patches.suse/0005-blk-mq-debugfs-Show-atomic-request-flags.patch b/patches.drivers/blk-mq-debugfs-Show-atomic-request-flags.patch
index da4e18c6ae..da4e18c6ae 100644
--- a/patches.suse/0005-blk-mq-debugfs-Show-atomic-request-flags.patch
+++ b/patches.drivers/blk-mq-debugfs-Show-atomic-request-flags.patch
diff --git a/patches.suse/0007-blk-mq-debugfs-Show-busy-requests.patch b/patches.drivers/blk-mq-debugfs-Show-busy-requests.patch
index c75e59bdb7..c75e59bdb7 100644
--- a/patches.suse/0007-blk-mq-debugfs-Show-busy-requests.patch
+++ b/patches.drivers/blk-mq-debugfs-Show-busy-requests.patch
diff --git a/patches.suse/0006-blk-mq-debugfs-Show-requeue-list.patch b/patches.drivers/blk-mq-debugfs-Show-requeue-list.patch
index 9c74318f05..9c74318f05 100644
--- a/patches.suse/0006-blk-mq-debugfs-Show-requeue-list.patch
+++ b/patches.drivers/blk-mq-debugfs-Show-requeue-list.patch
diff --git a/patches.suse/0003-blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch b/patches.drivers/blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch
index 99db1120c7..99db1120c7 100644
--- a/patches.suse/0003-blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch
+++ b/patches.drivers/blk-mq-make-per-sw-queue-bio-merge-as-default-.bio_m.patch
diff --git a/patches.suse/0002-blk-mq-merge-bio-into-sw-queue-before-plugging.patch b/patches.drivers/blk-mq-merge-bio-into-sw-queue-before-plugging.patch
index 89cd7aff86..89cd7aff86 100644
--- a/patches.suse/0002-blk-mq-merge-bio-into-sw-queue-before-plugging.patch
+++ b/patches.drivers/blk-mq-merge-bio-into-sw-queue-before-plugging.patch
diff --git a/patches.suse/0009-block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch b/patches.drivers/block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch
index 4ad8772687..4ad8772687 100644
--- a/patches.suse/0009-block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch
+++ b/patches.drivers/block-Introduce-queue-flag-QUEUE_FLAG_SCSI_PASSTHROU.patch
diff --git a/patches.fixes/bpf-allow-access-to-skb-len-from-offloads.patch b/patches.drivers/bpf-allow-access-to-skb-len-from-offloads.patch
index 58394c6c26..58394c6c26 100644
--- a/patches.fixes/bpf-allow-access-to-skb-len-from-offloads.patch
+++ b/patches.drivers/bpf-allow-access-to-skb-len-from-offloads.patch
diff --git a/patches.fixes/bpf-fix-link-error-without-CONFIG_NET.patch b/patches.drivers/bpf-fix-link-error-without-CONFIG_NET.patch
index 0402a359d0..0402a359d0 100644
--- a/patches.fixes/bpf-fix-link-error-without-CONFIG_NET.patch
+++ b/patches.drivers/bpf-fix-link-error-without-CONFIG_NET.patch
diff --git a/patches.fixes/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch b/patches.drivers/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch
index 45b52c1585..45b52c1585 100644
--- a/patches.fixes/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch
+++ b/patches.drivers/bpf-fix-out-of-bounds-access-warning-in-bpf_check.patch
diff --git a/patches.fixes/bpf-move-knowledge-about-post-translation-offsets-ou.patch b/patches.drivers/bpf-move-knowledge-about-post-translation-offsets-ou.patch
index 2dd742ef75..2dd742ef75 100644
--- a/patches.fixes/bpf-move-knowledge-about-post-translation-offsets-ou.patch
+++ b/patches.drivers/bpf-move-knowledge-about-post-translation-offsets-ou.patch
diff --git a/patches.fixes/bpf-remove-the-verifier-ops-from-program-structure.patch b/patches.drivers/bpf-remove-the-verifier-ops-from-program-structure.patch
index e18cf7a7ca..e18cf7a7ca 100644
--- a/patches.fixes/bpf-remove-the-verifier-ops-from-program-structure.patch
+++ b/patches.drivers/bpf-remove-the-verifier-ops-from-program-structure.patch
diff --git a/patches.fixes/bpf-split-verifier-and-program-ops.patch b/patches.drivers/bpf-split-verifier-and-program-ops.patch
index 9d206cf147..9d206cf147 100644
--- a/patches.fixes/bpf-split-verifier-and-program-ops.patch
+++ b/patches.drivers/bpf-split-verifier-and-program-ops.patch
diff --git a/patches.fixes/bpf-use-per-htab-salt-for-bucket-hash.patch b/patches.drivers/bpf-use-per-htab-salt-for-bucket-hash.patch
index 97a2d775ec..97a2d775ec 100644
--- a/patches.fixes/bpf-use-per-htab-salt-for-bucket-hash.patch
+++ b/patches.drivers/bpf-use-per-htab-salt-for-bucket-hash.patch
diff --git a/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch b/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch
new file mode 100644
index 0000000000..515b2f00a9
--- /dev/null
+++ b/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch
@@ -0,0 +1,110 @@
+From a4176ec356c73a46c07c181c6d04039fafa34a9f Mon Sep 17 00:00:00 2001
+From: Arend van Spriel <arend.vanspriel@broadcom.com>
+Date: Thu, 14 Feb 2019 13:43:48 +0100
+Subject: [PATCH] brcmfmac: add subtype check for event handling in data path
+Git-commit: a4176ec356c73a46c07c181c6d04039fafa34a9f
+Patch-mainline: v5.1-rc1
+References: CVE-2019-9503,bsc#1132828
+
+For USB there is no separate channel being used to pass events
+from firmware to the host driver and as such are passed over the
+data path. In order to detect mock event messages an additional
+check is needed on event subtype. This check is added conditionally
+using unlikely() keyword.
+
+Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
+Reviewed-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 5 +++--
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h | 16 ++++++++++++----
+ .../net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 2 +-
+ 3 files changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+index e772c0845638..a368ba6e7344 100644
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -519,7 +519,8 @@ void brcmf_rx_frame(struct device *dev, struct sk_buff *skb, bool handle_event)
+ } else {
+ /* Process special event packets */
+ if (handle_event)
+- brcmf_fweh_process_skb(ifp->drvr, skb);
++ brcmf_fweh_process_skb(ifp->drvr, skb,
++ BCMILCP_SUBTYPE_VENDOR_LONG);
+
+ brcmf_netif_rx(ifp, skb);
+ }
+@@ -536,7 +537,7 @@ void brcmf_rx_event(struct device *dev, struct sk_buff *skb)
+ if (brcmf_rx_hdrpull(drvr, skb, &ifp))
+ return;
+
+- brcmf_fweh_process_skb(ifp->drvr, skb);
++ brcmf_fweh_process_skb(ifp->drvr, skb, 0);
+ brcmu_pkt_buf_free_skb(skb);
+ }
+
+diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
+index 31f3e8e83a21..7027243db17e 100644
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
+@@ -211,7 +211,7 @@ enum brcmf_fweh_event_code {
+ */
+ #define BRCM_OUI "\x00\x10\x18"
+ #define BCMILCP_BCM_SUBTYPE_EVENT 1
+-
++#define BCMILCP_SUBTYPE_VENDOR_LONG 32769
+
+ /**
+ * struct brcm_ethhdr - broadcom specific ether header.
+@@ -334,10 +334,10 @@ void brcmf_fweh_process_event(struct brcmf_pub *drvr,
+ void brcmf_fweh_p2pdev_setup(struct brcmf_if *ifp, bool ongoing);
+
+ static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr,
+- struct sk_buff *skb)
++ struct sk_buff *skb, u16 stype)
+ {
+ struct brcmf_event *event_packet;
+- u16 usr_stype;
++ u16 subtype, usr_stype;
+
+ /* only process events when protocol matches */
+ if (skb->protocol != cpu_to_be16(ETH_P_LINK_CTL))
+@@ -346,8 +346,16 @@ static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr,
+ if ((skb->len + ETH_HLEN) < sizeof(*event_packet))
+ return;
+
+- /* check for BRCM oui match */
+ event_packet = (struct brcmf_event *)skb_mac_header(skb);
++
++ /* check subtype if needed */
++ if (unlikely(stype)) {
++ subtype = get_unaligned_be16(&event_packet->hdr.subtype);
++ if (subtype != stype)
++ return;
++ }
++
++ /* check for BRCM oui match */
+ if (memcmp(BRCM_OUI, &event_packet->hdr.oui[0],
+ sizeof(event_packet->hdr.oui)))
+ return;
+diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+index 4e8397a0cbc8..ee922b052561 100644
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+@@ -1116,7 +1116,7 @@ static void brcmf_msgbuf_process_event(struct brcmf_msgbuf *msgbuf, void *buf)
+
+ skb->protocol = eth_type_trans(skb, ifp->ndev);
+
+- brcmf_fweh_process_skb(ifp->drvr, skb);
++ brcmf_fweh_process_skb(ifp->drvr, skb, 0);
+
+ exit:
+ brcmu_pkt_buf_free_skb(skb);
+--
+2.16.4
+
diff --git a/patches.drivers/brcmfmac-assure-SSID-length-from-firmware-is-limited.patch b/patches.drivers/brcmfmac-assure-SSID-length-from-firmware-is-limited.patch
new file mode 100644
index 0000000000..c650b40b54
--- /dev/null
+++ b/patches.drivers/brcmfmac-assure-SSID-length-from-firmware-is-limited.patch
@@ -0,0 +1,38 @@
+From 1b5e2423164b3670e8bc9174e4762d297990deff Mon Sep 17 00:00:00 2001
+From: Arend van Spriel <arend.vanspriel@broadcom.com>
+Date: Thu, 14 Feb 2019 13:43:47 +0100
+Subject: [PATCH] brcmfmac: assure SSID length from firmware is limited
+Git-commit: 1b5e2423164b3670e8bc9174e4762d297990deff
+Patch-mainline: v5.1-rc1
+References: CVE-2019-9500,bsc#1132681
+
+The SSID length as received from firmware should not exceed
+IEEE80211_MAX_SSID_LEN as that would result in heap overflow.
+
+Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
+Reviewed-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+index b5e291ed9496..012275fc3bf7 100644
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+@@ -3507,6 +3507,8 @@ brcmf_wowl_nd_results(struct brcmf_if *ifp, const struct brcmf_event_msg *e,
+ }
+
+ netinfo = brcmf_get_netinfo_array(pfn_result);
++ if (netinfo->SSID_len > IEEE80211_MAX_SSID_LEN)
++ netinfo->SSID_len = IEEE80211_MAX_SSID_LEN;
+ memcpy(cfg->wowl.nd->ssid.ssid, netinfo->SSID, netinfo->SSID_len);
+ cfg->wowl.nd->ssid.ssid_len = netinfo->SSID_len;
+ cfg->wowl.nd->n_channels = 1;
+--
+2.16.4
+
diff --git a/patches.suse/0010-bsg-Check-queue-type-before-attaching-to-a-queue.patch b/patches.drivers/bsg-Check-queue-type-before-attaching-to-a-queue.patch
index b457de285a..b457de285a 100644
--- a/patches.suse/0010-bsg-Check-queue-type-before-attaching-to-a-queue.patch
+++ b/patches.drivers/bsg-Check-queue-type-before-attaching-to-a-queue.patch
diff --git a/patches.suse/0004-cfq-iosched-Delete-unused-function-min_vdisktime.patch b/patches.drivers/cfq-iosched-Delete-unused-function-min_vdisktime.patch
index 50f1c1cedf..50f1c1cedf 100644
--- a/patches.suse/0004-cfq-iosched-Delete-unused-function-min_vdisktime.patch
+++ b/patches.drivers/cfq-iosched-Delete-unused-function-min_vdisktime.patch
diff --git a/patches.drivers/cxgb4-Support-ethtool-private-flags.patch b/patches.drivers/cxgb4-Support-ethtool-private-flags.patch
new file mode 100644
index 0000000000..140266745e
--- /dev/null
+++ b/patches.drivers/cxgb4-Support-ethtool-private-flags.patch
@@ -0,0 +1,109 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4: Support ethtool private flags
+Patch-mainline: v4.19-rc1
+Git-commit: c90d160487c4f82ba128730bcbaf7da760c5bdf1
+References: bsc#1127371
+
+This is used to change TX workrequests, which helps in
+host->vf communication.
+
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 42 ++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
+index f7eef93ffc87..ddb8b9eba6bf 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
+@@ -177,6 +177,10 @@ static char loopback_stats_strings[][ETH_GSTRING_LEN] = {
+ "bg3_frames_trunc ",
+ };
+
++static const char cxgb4_priv_flags_strings[][ETH_GSTRING_LEN] = {
++ [PRIV_FLAG_PORT_TX_VM_BIT] = "port_tx_vm_wr",
++};
++
+ static int get_sset_count(struct net_device *dev, int sset)
+ {
+ switch (sset) {
+@@ -185,6 +189,8 @@ static int get_sset_count(struct net_device *dev, int sset)
+ ARRAY_SIZE(adapter_stats_strings) +
+ ARRAY_SIZE(channel_stats_strings) +
+ ARRAY_SIZE(loopback_stats_strings);
++ case ETH_SS_PRIV_FLAGS:
++ return ARRAY_SIZE(cxgb4_priv_flags_strings);
+ default:
+ return -EOPNOTSUPP;
+ }
+@@ -235,6 +241,7 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
+ FW_HDR_FW_VER_MINOR_G(exprom_vers),
+ FW_HDR_FW_VER_MICRO_G(exprom_vers),
+ FW_HDR_FW_VER_BUILD_G(exprom_vers));
++ info->n_priv_flags = ARRAY_SIZE(cxgb4_priv_flags_strings);
+ }
+
+ static void get_strings(struct net_device *dev, u32 stringset, u8 *data)
+@@ -250,6 +257,9 @@ static void get_strings(struct net_device *dev, u32 stringset, u8 *data)
+ data += sizeof(channel_stats_strings);
+ memcpy(data, loopback_stats_strings,
+ sizeof(loopback_stats_strings));
++ } else if (stringset == ETH_SS_PRIV_FLAGS) {
++ memcpy(data, cxgb4_priv_flags_strings,
++ sizeof(cxgb4_priv_flags_strings));
+ }
+ }
+
+@@ -1499,6 +1509,36 @@ static int cxgb4_get_module_eeprom(struct net_device *dev,
+ offset, len, &data[eprom->len - len]);
+ }
+
++static u32 cxgb4_get_priv_flags(struct net_device *netdev)
++{
++ struct port_info *pi = netdev_priv(netdev);
++ struct adapter *adapter = pi->adapter;
++
++ return (adapter->eth_flags | pi->eth_flags);
++}
++
++/**
++ * set_flags - set/unset specified flags if passed in new_flags
++ * @cur_flags: pointer to current flags
++ * @new_flags: new incoming flags
++ * @flags: set of flags to set/unset
++ */
++static inline void set_flags(u32 *cur_flags, u32 new_flags, u32 flags)
++{
++ *cur_flags = (*cur_flags & ~flags) | (new_flags & flags);
++}
++
++static int cxgb4_set_priv_flags(struct net_device *netdev, u32 flags)
++{
++ struct port_info *pi = netdev_priv(netdev);
++ struct adapter *adapter = pi->adapter;
++
++ set_flags(&adapter->eth_flags, flags, PRIV_FLAGS_ADAP);
++ set_flags(&pi->eth_flags, flags, PRIV_FLAGS_PORT);
++
++ return 0;
++}
++
+ static const struct ethtool_ops cxgb_ethtool_ops = {
+ .get_link_ksettings = get_link_ksettings,
+ .set_link_ksettings = set_link_ksettings,
+@@ -1535,6 +1575,8 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
+ .get_dump_data = get_dump_data,
+ .get_module_info = cxgb4_get_module_info,
+ .get_module_eeprom = cxgb4_get_module_eeprom,
++ .get_priv_flags = cxgb4_get_priv_flags,
++ .set_priv_flags = cxgb4_set_priv_flags,
+ };
+
+ void cxgb4_set_ethtool_ops(struct net_device *netdev)
+--
+2.12.3
+
diff --git a/patches.drivers/cxgb4-collect-hardware-queue-descriptors.patch b/patches.drivers/cxgb4-collect-hardware-queue-descriptors.patch
new file mode 100644
index 0000000000..13631d9389
--- /dev/null
+++ b/patches.drivers/cxgb4-collect-hardware-queue-descriptors.patch
@@ -0,0 +1,503 @@
+From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
+Subject: cxgb4: collect hardware queue descriptors
+Patch-mainline: v4.20-rc1
+Git-commit: 68ddc82aff0c772364757028c2319f386464d512
+References: bsc#1127371
+
+Collect descriptors of all ULD and LLD hardware queues managed
+by LLD.
+
+Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h | 42 ++++
+ drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h | 3 +-
+ drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c | 238 ++++++++++++++++++++++
+ drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h | 102 ++++++++++
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 7 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c | 4 +
+ 6 files changed, 395 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h b/drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h
+index 3c5057868ab3..594ab2f9a299 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cudbg_entity.h
+@@ -304,6 +304,48 @@ struct cudbg_pbt_tables {
+ u32 pbt_data[CUDBG_PBT_DATA_ENTRIES];
+ };
+
++enum cudbg_qdesc_qtype {
++ CUDBG_QTYPE_UNKNOWN = 0,
++ CUDBG_QTYPE_NIC_TXQ,
++ CUDBG_QTYPE_NIC_RXQ,
++ CUDBG_QTYPE_NIC_FLQ,
++ CUDBG_QTYPE_CTRLQ,
++ CUDBG_QTYPE_FWEVTQ,
++ CUDBG_QTYPE_INTRQ,
++ CUDBG_QTYPE_PTP_TXQ,
++ CUDBG_QTYPE_OFLD_TXQ,
++ CUDBG_QTYPE_RDMA_RXQ,
++ CUDBG_QTYPE_RDMA_FLQ,
++ CUDBG_QTYPE_RDMA_CIQ,
++ CUDBG_QTYPE_ISCSI_RXQ,
++ CUDBG_QTYPE_ISCSI_FLQ,
++ CUDBG_QTYPE_ISCSIT_RXQ,
++ CUDBG_QTYPE_ISCSIT_FLQ,
++ CUDBG_QTYPE_CRYPTO_TXQ,
++ CUDBG_QTYPE_CRYPTO_RXQ,
++ CUDBG_QTYPE_CRYPTO_FLQ,
++ CUDBG_QTYPE_TLS_RXQ,
++ CUDBG_QTYPE_TLS_FLQ,
++ CUDBG_QTYPE_MAX,
++};
++
++#define CUDBG_QDESC_REV 1
++
++struct cudbg_qdesc_entry {
++ u32 data_size;
++ u32 qtype;
++ u32 qid;
++ u32 desc_size;
++ u32 num_desc;
++ u8 data[0]; /* Must be last */
++};
++
++struct cudbg_qdesc_info {
++ u32 qdesc_entry_size;
++ u32 num_queues;
++ u8 data[0]; /* Must be last */
++};
++
+ #define IREG_NUM_ELEM 4
+
+ static const u32 t6_tp_pio_array[][IREG_NUM_ELEM] = {
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h b/drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h
+index 215fe6260fd7..dec63c15c0ba 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cudbg_if.h
+@@ -81,7 +81,8 @@ enum cudbg_dbg_entity_type {
+ CUDBG_MBOX_LOG = 66,
+ CUDBG_HMA_INDIRECT = 67,
+ CUDBG_HMA = 68,
+- CUDBG_MAX_ENTITY = 70,
++ CUDBG_QDESC = 70,
++ CUDBG_MAX_ENTITY = 71,
+ };
+
+ struct cudbg_init {
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c b/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c
+index 9ae8d48bc4d7..9b63db5ae626 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c
+@@ -19,6 +19,7 @@
+
+ #include "t4_regs.h"
+ #include "cxgb4.h"
++#include "cxgb4_cudbg.h"
+ #include "cudbg_if.h"
+ #include "cudbg_lib_common.h"
+ #include "cudbg_entity.h"
+@@ -2797,3 +2798,240 @@ int cudbg_collect_hma_indirect(struct cudbg_init *pdbg_init,
+ }
+ return cudbg_write_and_release_buff(pdbg_init, &temp_buff, dbg_buff);
+ }
++
++void cudbg_fill_qdesc_num_and_size(const struct adapter *padap,
++ u32 *num, u32 *size)
++{
++ u32 tot_entries = 0, tot_size = 0;
++
++ /* NIC TXQ, RXQ, FLQ, and CTRLQ */
++ tot_entries += MAX_ETH_QSETS * 3;
++ tot_entries += MAX_CTRL_QUEUES;
++
++ tot_size += MAX_ETH_QSETS * MAX_TXQ_ENTRIES * MAX_TXQ_DESC_SIZE;
++ tot_size += MAX_ETH_QSETS * MAX_RSPQ_ENTRIES * MAX_RXQ_DESC_SIZE;
++ tot_size += MAX_ETH_QSETS * MAX_RX_BUFFERS * MAX_FL_DESC_SIZE;
++ tot_size += MAX_CTRL_QUEUES * MAX_CTRL_TXQ_ENTRIES *
++ MAX_CTRL_TXQ_DESC_SIZE;
++
++ /* FW_EVTQ and INTRQ */
++ tot_entries += INGQ_EXTRAS;
++ tot_size += INGQ_EXTRAS * MAX_RSPQ_ENTRIES * MAX_RXQ_DESC_SIZE;
++
++ /* PTP_TXQ */
++ tot_entries += 1;
++ tot_size += MAX_TXQ_ENTRIES * MAX_TXQ_DESC_SIZE;
++
++ /* ULD TXQ, RXQ, and FLQ */
++ tot_entries += CXGB4_TX_MAX * MAX_OFLD_QSETS;
++ tot_entries += CXGB4_ULD_MAX * MAX_ULD_QSETS * 2;
++
++ tot_size += CXGB4_TX_MAX * MAX_OFLD_QSETS * MAX_TXQ_ENTRIES *
++ MAX_TXQ_DESC_SIZE;
++ tot_size += CXGB4_ULD_MAX * MAX_ULD_QSETS * MAX_RSPQ_ENTRIES *
++ MAX_RXQ_DESC_SIZE;
++ tot_size += CXGB4_ULD_MAX * MAX_ULD_QSETS * MAX_RX_BUFFERS *
++ MAX_FL_DESC_SIZE;
++
++ /* ULD CIQ */
++ tot_entries += CXGB4_ULD_MAX * MAX_ULD_QSETS;
++ tot_size += CXGB4_ULD_MAX * MAX_ULD_QSETS * SGE_MAX_IQ_SIZE *
++ MAX_RXQ_DESC_SIZE;
++
++ tot_size += sizeof(struct cudbg_ver_hdr) +
++ sizeof(struct cudbg_qdesc_info) +
++ sizeof(struct cudbg_qdesc_entry) * tot_entries;
++
++ if (num)
++ *num = tot_entries;
++
++ if (size)
++ *size = tot_size;
++}
++
++int cudbg_collect_qdesc(struct cudbg_init *pdbg_init,
++ struct cudbg_buffer *dbg_buff,
++ struct cudbg_error *cudbg_err)
++{
++ u32 num_queues = 0, tot_entries = 0, size = 0;
++ struct adapter *padap = pdbg_init->adap;
++ struct cudbg_buffer temp_buff = { 0 };
++ struct cudbg_qdesc_entry *qdesc_entry;
++ struct cudbg_qdesc_info *qdesc_info;
++ struct cudbg_ver_hdr *ver_hdr;
++ struct sge *s = &padap->sge;
++ u32 i, j, cur_off, tot_len;
++ u8 *data;
++ int rc;
++
++ cudbg_fill_qdesc_num_and_size(padap, &tot_entries, &size);
++ size = min_t(u32, size, CUDBG_DUMP_BUFF_SIZE);
++ tot_len = size;
++ data = kvzalloc(size, GFP_KERNEL);
++ if (!data)
++ return -ENOMEM;
++
++ ver_hdr = (struct cudbg_ver_hdr *)data;
++ ver_hdr->signature = CUDBG_ENTITY_SIGNATURE;
++ ver_hdr->revision = CUDBG_QDESC_REV;
++ ver_hdr->size = sizeof(struct cudbg_qdesc_info);
++ size -= sizeof(*ver_hdr);
++
++ qdesc_info = (struct cudbg_qdesc_info *)(data +
++ sizeof(*ver_hdr));
++ size -= sizeof(*qdesc_info);
++ qdesc_entry = (struct cudbg_qdesc_entry *)qdesc_info->data;
++
++#define QDESC_GET(q, desc, type, label) do { \
++ if (size <= 0) { \
++ goto label; \
++ } \
++ if (desc) { \
++ cudbg_fill_qdesc_##q(q, type, qdesc_entry); \
++ size -= sizeof(*qdesc_entry) + qdesc_entry->data_size; \
++ num_queues++; \
++ qdesc_entry = cudbg_next_qdesc(qdesc_entry); \
++ } \
++} while (0)
++
++#define QDESC_GET_TXQ(q, type, label) do { \
++ struct sge_txq *txq = (struct sge_txq *)q; \
++ QDESC_GET(txq, txq->desc, type, label); \
++} while (0)
++
++#define QDESC_GET_RXQ(q, type, label) do { \
++ struct sge_rspq *rxq = (struct sge_rspq *)q; \
++ QDESC_GET(rxq, rxq->desc, type, label); \
++} while (0)
++
++#define QDESC_GET_FLQ(q, type, label) do { \
++ struct sge_fl *flq = (struct sge_fl *)q; \
++ QDESC_GET(flq, flq->desc, type, label); \
++} while (0)
++
++ /* NIC TXQ */
++ for (i = 0; i < s->ethqsets; i++)
++ QDESC_GET_TXQ(&s->ethtxq[i].q, CUDBG_QTYPE_NIC_TXQ, out);
++
++ /* NIC RXQ */
++ for (i = 0; i < s->ethqsets; i++)
++ QDESC_GET_RXQ(&s->ethrxq[i].rspq, CUDBG_QTYPE_NIC_RXQ, out);
++
++ /* NIC FLQ */
++ for (i = 0; i < s->ethqsets; i++)
++ QDESC_GET_FLQ(&s->ethrxq[i].fl, CUDBG_QTYPE_NIC_FLQ, out);
++
++ /* NIC CTRLQ */
++ for (i = 0; i < padap->params.nports; i++)
++ QDESC_GET_TXQ(&s->ctrlq[i].q, CUDBG_QTYPE_CTRLQ, out);
++
++ /* FW_EVTQ */
++ QDESC_GET_RXQ(&s->fw_evtq, CUDBG_QTYPE_FWEVTQ, out);
++
++ /* INTRQ */
++ QDESC_GET_RXQ(&s->intrq, CUDBG_QTYPE_INTRQ, out);
++
++ /* PTP_TXQ */
++ QDESC_GET_TXQ(&s->ptptxq.q, CUDBG_QTYPE_PTP_TXQ, out);
++
++ /* ULD Queues */
++ mutex_lock(&uld_mutex);
++
++ if (s->uld_txq_info) {
++ struct sge_uld_txq_info *utxq;
++
++ /* ULD TXQ */
++ for (j = 0; j < CXGB4_TX_MAX; j++) {
++ if (!s->uld_txq_info[j])
++ continue;
++
++ utxq = s->uld_txq_info[j];
++ for (i = 0; i < utxq->ntxq; i++)
++ QDESC_GET_TXQ(&utxq->uldtxq[i].q,
++ cudbg_uld_txq_to_qtype(j),
++ out_unlock);
++ }
++ }
++
++ if (s->uld_rxq_info) {
++ struct sge_uld_rxq_info *urxq;
++ u32 base;
++
++ /* ULD RXQ */
++ for (j = 0; j < CXGB4_ULD_MAX; j++) {
++ if (!s->uld_rxq_info[j])
++ continue;
++
++ urxq = s->uld_rxq_info[j];
++ for (i = 0; i < urxq->nrxq; i++)
++ QDESC_GET_RXQ(&urxq->uldrxq[i].rspq,
++ cudbg_uld_rxq_to_qtype(j),
++ out_unlock);
++ }
++
++ /* ULD FLQ */
++ for (j = 0; j < CXGB4_ULD_MAX; j++) {
++ if (!s->uld_rxq_info[j])
++ continue;
++
++ urxq = s->uld_rxq_info[j];
++ for (i = 0; i < urxq->nrxq; i++)
++ QDESC_GET_FLQ(&urxq->uldrxq[i].fl,
++ cudbg_uld_flq_to_qtype(j),
++ out_unlock);
++ }
++
++ /* ULD CIQ */
++ for (j = 0; j < CXGB4_ULD_MAX; j++) {
++ if (!s->uld_rxq_info[j])
++ continue;
++
++ urxq = s->uld_rxq_info[j];
++ base = urxq->nrxq;
++ for (i = 0; i < urxq->nciq; i++)
++ QDESC_GET_RXQ(&urxq->uldrxq[base + i].rspq,
++ cudbg_uld_ciq_to_qtype(j),
++ out_unlock);
++ }
++ }
++
++out_unlock:
++ mutex_unlock(&uld_mutex);
++
++out:
++ qdesc_info->qdesc_entry_size = sizeof(*qdesc_entry);
++ qdesc_info->num_queues = num_queues;
++ cur_off = 0;
++ while (tot_len) {
++ u32 chunk_size = min_t(u32, tot_len, CUDBG_CHUNK_SIZE);
++
++ rc = cudbg_get_buff(pdbg_init, dbg_buff, chunk_size,
++ &temp_buff);
++ if (rc) {
++ cudbg_err->sys_warn = CUDBG_STATUS_PARTIAL_DATA;
++ goto out_free;
++ }
++
++ memcpy(temp_buff.data, data + cur_off, chunk_size);
++ tot_len -= chunk_size;
++ cur_off += chunk_size;
++ rc = cudbg_write_and_release_buff(pdbg_init, &temp_buff,
++ dbg_buff);
++ if (rc) {
++ cudbg_put_buff(pdbg_init, &temp_buff);
++ cudbg_err->sys_warn = CUDBG_STATUS_PARTIAL_DATA;
++ goto out_free;
++ }
++ }
++
++out_free:
++ if (data)
++ kvfree(data);
++
++#undef QDESC_GET_FLQ
++#undef QDESC_GET_RXQ
++#undef QDESC_GET_TXQ
++#undef QDESC_GET
++
++ return rc;
++}
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h b/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h
+index eebefe7cd18e..ecbe203bb57e 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h
+@@ -171,6 +171,9 @@ int cudbg_collect_hma_indirect(struct cudbg_init *pdbg_init,
+ int cudbg_collect_hma_meminfo(struct cudbg_init *pdbg_init,
+ struct cudbg_buffer *dbg_buff,
+ struct cudbg_error *cudbg_err);
++int cudbg_collect_qdesc(struct cudbg_init *pdbg_init,
++ struct cudbg_buffer *dbg_buff,
++ struct cudbg_error *cudbg_err);
+
+ struct cudbg_entity_hdr *cudbg_get_entity_hdr(void *outbuf, int i);
+ void cudbg_align_debug_buffer(struct cudbg_buffer *dbg_buff,
+@@ -182,4 +185,103 @@ int cudbg_fill_meminfo(struct adapter *padap,
+ struct cudbg_meminfo *meminfo_buff);
+ void cudbg_fill_le_tcam_info(struct adapter *padap,
+ struct cudbg_tcam *tcam_region);
++void cudbg_fill_qdesc_num_and_size(const struct adapter *padap,
++ u32 *num, u32 *size);
++
++static inline u32 cudbg_uld_txq_to_qtype(u32 uld)
++{
++ switch (uld) {
++ case CXGB4_TX_OFLD:
++ return CUDBG_QTYPE_OFLD_TXQ;
++ case CXGB4_TX_CRYPTO:
++ return CUDBG_QTYPE_CRYPTO_TXQ;
++ }
++
++ return CUDBG_QTYPE_UNKNOWN;
++}
++
++static inline u32 cudbg_uld_rxq_to_qtype(u32 uld)
++{
++ switch (uld) {
++ case CXGB4_ULD_RDMA:
++ return CUDBG_QTYPE_RDMA_RXQ;
++ case CXGB4_ULD_ISCSI:
++ return CUDBG_QTYPE_ISCSI_RXQ;
++ case CXGB4_ULD_ISCSIT:
++ return CUDBG_QTYPE_ISCSIT_RXQ;
++ case CXGB4_ULD_CRYPTO:
++ return CUDBG_QTYPE_CRYPTO_RXQ;
++ }
++
++ return CUDBG_QTYPE_UNKNOWN;
++}
++
++static inline u32 cudbg_uld_flq_to_qtype(u32 uld)
++{
++ switch (uld) {
++ case CXGB4_ULD_RDMA:
++ return CUDBG_QTYPE_RDMA_FLQ;
++ case CXGB4_ULD_ISCSI:
++ return CUDBG_QTYPE_ISCSI_FLQ;
++ case CXGB4_ULD_ISCSIT:
++ return CUDBG_QTYPE_ISCSIT_FLQ;
++ case CXGB4_ULD_CRYPTO:
++ return CUDBG_QTYPE_CRYPTO_FLQ;
++ }
++
++ return CUDBG_QTYPE_UNKNOWN;
++}
++
++static inline u32 cudbg_uld_ciq_to_qtype(u32 uld)
++{
++ switch (uld) {
++ case CXGB4_ULD_RDMA:
++ return CUDBG_QTYPE_RDMA_CIQ;
++ }
++
++ return CUDBG_QTYPE_UNKNOWN;
++}
++
++static inline void cudbg_fill_qdesc_txq(const struct sge_txq *txq,
++ enum cudbg_qdesc_qtype type,
++ struct cudbg_qdesc_entry *entry)
++{
++ entry->qtype = type;
++ entry->qid = txq->cntxt_id;
++ entry->desc_size = sizeof(struct tx_desc);
++ entry->num_desc = txq->size;
++ entry->data_size = txq->size * sizeof(struct tx_desc);
++ memcpy(entry->data, txq->desc, entry->data_size);
++}
++
++static inline void cudbg_fill_qdesc_rxq(const struct sge_rspq *rxq,
++ enum cudbg_qdesc_qtype type,
++ struct cudbg_qdesc_entry *entry)
++{
++ entry->qtype = type;
++ entry->qid = rxq->cntxt_id;
++ entry->desc_size = rxq->iqe_len;
++ entry->num_desc = rxq->size;
++ entry->data_size = rxq->size * rxq->iqe_len;
++ memcpy(entry->data, rxq->desc, entry->data_size);
++}
++
++static inline void cudbg_fill_qdesc_flq(const struct sge_fl *flq,
++ enum cudbg_qdesc_qtype type,
++ struct cudbg_qdesc_entry *entry)
++{
++ entry->qtype = type;
++ entry->qid = flq->cntxt_id;
++ entry->desc_size = sizeof(__be64);
++ entry->num_desc = flq->size;
++ entry->data_size = flq->size * sizeof(__be64);
++ memcpy(entry->data, flq->desc, entry->data_size);
++}
++
++static inline
++struct cudbg_qdesc_entry *cudbg_next_qdesc(struct cudbg_qdesc_entry *e)
++{
++ return (struct cudbg_qdesc_entry *)
++ ((u8 *)e + sizeof(*e) + e->data_size);
++}
+ #endif /* __CUDBG_LIB_H__ */
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index e9eb4003b813..525bdd4b4564 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -526,6 +526,13 @@ enum {
+ };
+
+ enum {
++ MAX_TXQ_DESC_SIZE = 64,
++ MAX_RXQ_DESC_SIZE = 128,
++ MAX_FL_DESC_SIZE = 8,
++ MAX_CTRL_TXQ_DESC_SIZE = 64,
++};
++
++enum {
+ INGQ_EXTRAS = 2, /* firmware event queue and */
+ /* forwarded interrupts */
+ MAX_INGQ = MAX_ETH_QSETS + INGQ_EXTRAS,
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c
+index 8d751efcb90e..540cefe33400 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_cudbg.c
+@@ -30,6 +30,7 @@ static const struct cxgb4_collect_entity cxgb4_collect_mem_dump[] = {
+
+ static const struct cxgb4_collect_entity cxgb4_collect_hw_dump[] = {
+ { CUDBG_MBOX_LOG, cudbg_collect_mbox_log },
++ { CUDBG_QDESC, cudbg_collect_qdesc },
+ { CUDBG_DEV_LOG, cudbg_collect_fw_devlog },
+ { CUDBG_REG_DUMP, cudbg_collect_reg_dump },
+ { CUDBG_CIM_LA, cudbg_collect_cim_la },
+@@ -309,6 +310,9 @@ static u32 cxgb4_get_entity_length(struct adapter *adap, u32 entity)
+ }
+ len = cudbg_mbytes_to_bytes(len);
+ break;
++ case CUDBG_QDESC:
++ cudbg_fill_qdesc_num_and_size(adap, NULL, &len);
++ break;
+ default:
+ break;
+ }
+--
+2.12.3
+
diff --git a/patches.fixes/dax-direct_access-does-not-sleep-anymore.patch b/patches.drivers/dax-direct_access-does-not-sleep-anymore.patch
index 58a3f46330..58a3f46330 100644
--- a/patches.fixes/dax-direct_access-does-not-sleep-anymore.patch
+++ b/patches.drivers/dax-direct_access-does-not-sleep-anymore.patch
diff --git a/patches.fixes/dax-Introduce-a-copy_to_iter-dax-operation.patch b/patches.drivers/dax-introduce-a-copy_to_iter-dax-operation.patch
index c5551782a3..c5551782a3 100644
--- a/patches.fixes/dax-Introduce-a-copy_to_iter-dax-operation.patch
+++ b/patches.drivers/dax-introduce-a-copy_to_iter-dax-operation.patch
diff --git a/patches.fixes/dax-introduce-CONFIG_DAX_DRIVER.patch b/patches.drivers/dax-introduce-config_dax_driver.patch
index 3ec0415a9d..3ec0415a9d 100644
--- a/patches.fixes/dax-introduce-CONFIG_DAX_DRIVER.patch
+++ b/patches.drivers/dax-introduce-config_dax_driver.patch
diff --git a/patches.drivers/ibmvnic-Enable-GRO.patch b/patches.drivers/ibmvnic-Enable-GRO.patch
new file mode 100644
index 0000000000..f4be4562a3
--- /dev/null
+++ b/patches.drivers/ibmvnic-Enable-GRO.patch
@@ -0,0 +1,34 @@
+From b66b7bd2bdc1a74c46a0a470f9ac19629320d212 Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Wed, 10 Apr 2019 11:06:59 -0500
+Subject: [PATCH] ibmvnic: Enable GRO
+
+References: bsc#1132227
+Patch-mainline: v5.1-rc6
+Git-commit: b66b7bd2bdc1a74c46a0a470f9ac19629320d212
+
+Enable Generic Receive Offload in the ibmvnic driver.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index 51cfe95f3e24..cc22c5351513 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -3837,7 +3837,7 @@ static void handle_query_ip_offload_rsp(struct ibmvnic_adapter *adapter)
+ adapter->ip_offload_ctrl.large_rx_ipv4 = 0;
+ adapter->ip_offload_ctrl.large_rx_ipv6 = 0;
+
+- adapter->netdev->features = NETIF_F_SG | NETIF_F_GSO;
++ adapter->netdev->hw_features = NETIF_F_SG | NETIF_F_GSO | NETIF_F_GRO;
+
+ if (buf->tcp_ipv4_chksum || buf->udp_ipv4_chksum)
+ adapter->netdev->features |= NETIF_F_IP_CSUM;
+--
+2.20.1
+
diff --git a/patches.drivers/ibmvnic-Fix-netdev-feature-clobbering-during-a-reset.patch b/patches.drivers/ibmvnic-Fix-netdev-feature-clobbering-during-a-reset.patch
new file mode 100644
index 0000000000..378be225ee
--- /dev/null
+++ b/patches.drivers/ibmvnic-Fix-netdev-feature-clobbering-during-a-reset.patch
@@ -0,0 +1,89 @@
+From dde746a35f8b7da4b9515dd3dc4708a9926fbd65 Mon Sep 17 00:00:00 2001
+From: Thomas Falcon <tlfalcon@linux.ibm.com>
+Date: Wed, 10 Apr 2019 11:07:00 -0500
+Subject: [PATCH] ibmvnic: Fix netdev feature clobbering during a reset
+
+References: bsc#1132227
+Patch-mainline: v5.1-rc6
+Git-commit: dde746a35f8b7da4b9515dd3dc4708a9926fbd65
+
+While determining offload capabilities of backing hardware during
+a device reset, the driver is clobbering current feature settings.
+Update hw_features on reset instead of features unless a feature
+is enabled that is no longer supported on the current backing device.
+Also enable features that were not supported prior to the reset but
+were previously enabled or requested by the user.
+
+This can occur if the reset is the result of a carrier change, such
+as a device failover or partition migration.
+
+Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/net/ethernet/ibm/ibmvnic.c | 30 ++++++++++++++++++++++++------
+ 1 file changed, 24 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
+index cc22c5351513..3dfb2d131eb7 100644
+--- a/drivers/net/ethernet/ibm/ibmvnic.c
++++ b/drivers/net/ethernet/ibm/ibmvnic.c
+@@ -3762,6 +3762,7 @@ static void handle_query_ip_offload_rsp(struct ibmvnic_adapter *adapter)
+ {
+ struct device *dev = &adapter->vdev->dev;
+ struct ibmvnic_query_ip_offload_buffer *buf = &adapter->ip_offload_buf;
++ netdev_features_t old_hw_features = 0;
+ union ibmvnic_crq crq;
+ int i;
+
+@@ -3837,24 +3838,41 @@ static void handle_query_ip_offload_rsp(struct ibmvnic_adapter *adapter)
+ adapter->ip_offload_ctrl.large_rx_ipv4 = 0;
+ adapter->ip_offload_ctrl.large_rx_ipv6 = 0;
+
++ if (adapter->state != VNIC_PROBING) {
++ old_hw_features = adapter->netdev->hw_features;
++ adapter->netdev->hw_features = 0;
++ }
++
+ adapter->netdev->hw_features = NETIF_F_SG | NETIF_F_GSO | NETIF_F_GRO;
+
+ if (buf->tcp_ipv4_chksum || buf->udp_ipv4_chksum)
+- adapter->netdev->features |= NETIF_F_IP_CSUM;
++ adapter->netdev->hw_features |= NETIF_F_IP_CSUM;
+
+ if (buf->tcp_ipv6_chksum || buf->udp_ipv6_chksum)
+- adapter->netdev->features |= NETIF_F_IPV6_CSUM;
++ adapter->netdev->hw_features |= NETIF_F_IPV6_CSUM;
+
+ if ((adapter->netdev->features &
+ (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)))
+- adapter->netdev->features |= NETIF_F_RXCSUM;
++ adapter->netdev->hw_features |= NETIF_F_RXCSUM;
+
+ if (buf->large_tx_ipv4)
+- adapter->netdev->features |= NETIF_F_TSO;
++ adapter->netdev->hw_features |= NETIF_F_TSO;
+ if (buf->large_tx_ipv6)
+- adapter->netdev->features |= NETIF_F_TSO6;
++ adapter->netdev->hw_features |= NETIF_F_TSO6;
+
+- adapter->netdev->hw_features |= adapter->netdev->features;
++ if (adapter->state == VNIC_PROBING) {
++ adapter->netdev->features |= adapter->netdev->hw_features;
++ } else if (old_hw_features != adapter->netdev->hw_features) {
++ netdev_features_t tmp = 0;
++
++ /* disable features no longer supported */
++ adapter->netdev->features &= adapter->netdev->hw_features;
++ /* turn on features now supported if previously enabled */
++ tmp = (old_hw_features ^ adapter->netdev->hw_features) &
++ adapter->netdev->hw_features;
++ adapter->netdev->features |=
++ tmp & adapter->netdev->wanted_features;
++ }
+
+ memset(&crq, 0, sizeof(crq));
+ crq.control_ip_offload.first = IBMVNIC_CRQ_CMD;
+--
+2.20.1
+
diff --git a/patches.drivers/iio-ad_sigma_delta-select-channel-when-reading-regis.patch b/patches.drivers/iio-ad_sigma_delta-select-channel-when-reading-regis.patch
new file mode 100644
index 0000000000..1ffb03c9e7
--- /dev/null
+++ b/patches.drivers/iio-ad_sigma_delta-select-channel-when-reading-regis.patch
@@ -0,0 +1,39 @@
+From fccfb9ce70ed4ea7a145f77b86de62e38178517f Mon Sep 17 00:00:00 2001
+From: Dragos Bogdan <dragos.bogdan@analog.com>
+Date: Tue, 19 Mar 2019 12:47:00 +0200
+Subject: [PATCH] iio: ad_sigma_delta: select channel when reading register
+Git-commit: fccfb9ce70ed4ea7a145f77b86de62e38178517f
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+The desired channel has to be selected in order to correctly fill the
+buffer with the corresponding data.
+The `ad_sd_write_reg()` already does this, but for the
+`ad_sd_read_reg_raw()` this was omitted.
+
+Fixes: af3008485ea03 ("iio:adc: Add common code for ADI Sigma Delta devices")
+Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
+Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/iio/adc/ad_sigma_delta.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
+index ff5f2da2e1b1..54d9978b2740 100644
+--- a/drivers/iio/adc/ad_sigma_delta.c
++++ b/drivers/iio/adc/ad_sigma_delta.c
+@@ -121,6 +121,7 @@ static int ad_sd_read_reg_raw(struct ad_sigma_delta *sigma_delta,
+ if (sigma_delta->info->has_registers) {
+ data[0] = reg << sigma_delta->info->addr_shift;
+ data[0] |= sigma_delta->info->read_mask;
++ data[0] |= sigma_delta->comm;
+ spi_message_add_tail(&t[0], &m);
+ }
+ spi_message_add_tail(&t[1], &m);
+--
+2.16.4
+
diff --git a/patches.drivers/iio-core-fix-a-possible-circular-locking-dependency.patch b/patches.drivers/iio-core-fix-a-possible-circular-locking-dependency.patch
new file mode 100644
index 0000000000..8219c16533
--- /dev/null
+++ b/patches.drivers/iio-core-fix-a-possible-circular-locking-dependency.patch
@@ -0,0 +1,154 @@
+From 7f75591fc5a123929a29636834d1bcb8b5c9fee3 Mon Sep 17 00:00:00 2001
+From: Fabrice Gasnier <fabrice.gasnier@st.com>
+Date: Mon, 25 Mar 2019 14:01:23 +0100
+Subject: [PATCH] iio: core: fix a possible circular locking dependency
+Git-commit: 7f75591fc5a123929a29636834d1bcb8b5c9fee3
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+This fixes a possible circular locking dependency detected warning seen
+With:
+- CONFIG_PROVE_LOCKING=y
+- consumer/provider IIO devices (ex: "voltage-divider" consumer of "adc")
+
+When using the IIO consumer interface, e.g. iio_channel_get(), the consumer
+device will likely call iio_read_channel_raw() or similar that rely on
+'info_exist_lock' mutex.
+
+Typically:
+...
+ mutex_lock(&chan->indio_dev->info_exist_lock);
+ if (chan->indio_dev->info == NULL) {
+ ret = -ENODEV;
+ goto err_unlock;
+ }
+ ret = do_some_ops()
+Err_unlock: mutex_unlock(&chan->indio_dev->info_exist_lock); return ret;
+...
+
+Same mutex is also hold in iio_device_unregister().
+
+The following deadlock warning happens when:
+- the consumer device has called an API like iio_read_channel_raw()
+ at least once.
+- the consumer driver is unregistered, removed (unbind from sysfs)
+
+======================================================
+Warning: possible circular locking dependency detected
+4.19.24 #577 Not tainted
+
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+------------------------------------------------------
+sh/372 is trying to acquire lock:
+(kn->count#30){++++}, at: kernfs_remove_by_name_ns+0x3c/0x84
+
+but task is already holding lock:
+(&dev->info_exist_lock){+.+.}, at: iio_device_unregister+0x18/0x60
+
+which lock already depends on the new lock.
+
+the existing dependency chain (in reverse order) is:
+
+-> #1 (&dev->info_exist_lock){+.+.}:
+ __mutex_lock+0x70/0xa3c
+ mutex_lock_nested+0x1c/0x24
+ iio_read_channel_raw+0x1c/0x60
+ iio_read_channel_info+0xa8/0xb0
+ dev_attr_show+0x1c/0x48
+ sysfs_kf_seq_show+0x84/0xec
+ seq_read+0x154/0x528
+ __vfs_read+0x2c/0x15c
+ vfs_read+0x8c/0x110
+ ksys_read+0x4c/0xac
+ ret_fast_syscall+0x0/0x28
+ 0xbedefb60
+
+-> #0 (kn->count#30){++++}:
+ lock_acquire+0xd8/0x268
+ __kernfs_remove+0x288/0x374
+ kernfs_remove_by_name_ns+0x3c/0x84
+ remove_files+0x34/0x78
+ sysfs_remove_group+0x40/0x9c
+ sysfs_remove_groups+0x24/0x34
+ device_remove_attrs+0x38/0x64
+ device_del+0x11c/0x360
+ cdev_device_del+0x14/0x2c
+ iio_device_unregister+0x24/0x60
+ release_nodes+0x1bc/0x200
+ device_release_driver_internal+0x1a0/0x230
+ unbind_store+0x80/0x130
+ kernfs_fop_write+0x100/0x1e4
+ __vfs_write+0x2c/0x160
+ vfs_write+0xa4/0x17c
+ ksys_write+0x4c/0xac
+ ret_fast_syscall+0x0/0x28
+ 0xbe906840
+
+other info that might help us debug this:
+
+ Possible unsafe locking scenario:
+
+ CPU0 CPU1
+ ---- ----
+ lock(&dev->info_exist_lock);
+ lock(kn->count#30);
+ lock(&dev->info_exist_lock);
+ lock(kn->count#30);
+
+ *** DEADLOCK ***
+...
+
+cdev_device_del() can be called without holding the lock. It should be safe
+as info_exist_lock prevents kernelspace consumers to use the exported
+routines during/after provider removal. cdev_device_del() is for userspace.
+
+Help to reproduce:
+See example: Documentation/devicetree/bindings/iio/afe/voltage-divider.txt
+sysv {
+ compatible = "voltage-divider";
+ io-channels = <&adc 0>;
+ output-ohms = <22>;
+ full-ohms = <222>;
+};
+
+First, go to iio:deviceX for the "voltage-divider", do one read:
+$ cd /sys/bus/iio/devices/iio:deviceX
+$ cat in_voltage0_raw
+
+Then, unbind the consumer driver. It triggers above deadlock warning.
+$ cd /sys/bus/platform/drivers/iio-rescale/
+$ echo sysv > unbind
+
+Note I don't actually expect stable will pick this up all the
+way back into IIO being in staging, but if's probably valid that
+far back.
+
+Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
+Fixes: ac917a81117c ("staging:iio:core set the iio_dev.info pointer to null on unregister")
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+---
+ drivers/iio/industrialio-core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
+index 4700fd5d8c90..9c4d92115504 100644
+--- a/drivers/iio/industrialio-core.c
++++ b/drivers/iio/industrialio-core.c
+@@ -1743,10 +1743,10 @@ EXPORT_SYMBOL(__iio_device_register);
+ **/
+ void iio_device_unregister(struct iio_dev *indio_dev)
+ {
+- mutex_lock(&indio_dev->info_exist_lock);
+-
+ cdev_device_del(&indio_dev->chrdev, &indio_dev->dev);
+
++ mutex_lock(&indio_dev->info_exist_lock);
++
+ iio_device_unregister_debugfs(indio_dev);
+
+ iio_disable_all_buffers(indio_dev);
+--
+2.16.4
+
diff --git a/patches.drivers/iio-cros_ec-Fix-the-maths-for-gyro-scale-calculation.patch b/patches.drivers/iio-cros_ec-Fix-the-maths-for-gyro-scale-calculation.patch
new file mode 100644
index 0000000000..0a6f5b7c4c
--- /dev/null
+++ b/patches.drivers/iio-cros_ec-Fix-the-maths-for-gyro-scale-calculation.patch
@@ -0,0 +1,63 @@
+From 3d02d7082e5823598090530c3988a35f69689943 Mon Sep 17 00:00:00 2001
+From: Gwendal Grignou <gwendal@chromium.org>
+Date: Wed, 13 Mar 2019 12:40:02 +0100
+Subject: [PATCH] iio: cros_ec: Fix the maths for gyro scale calculation
+Git-commit: 3d02d7082e5823598090530c3988a35f69689943
+Patch-mainline: v5.1-rc6
+References: bsc#1051510
+
+Calculation did not use IIO_DEGREE_TO_RAD and implemented a variant to
+avoid precision loss as we aim a nano value. The offset added to avoid
+rounding error, though, doesn't give us a close result to the expected
+value. E.g.
+
+For 1000dps, the result should be:
+
+ (1000 * pi ) / 180 >> 15 ~= 0.000532632218
+
+But with current calculation we get
+
+ $ cat scale
+ 0.000547890
+
+Fix the calculation by just doing the maths involved for a nano value
+
+ val * pi * 10e12 / (180 * 2^15)
+
+so we get a closer result.
+
+ $ cat scale
+ 0.000532632
+
+Fixes: c14dca07a31d ("iio: cros_ec_sensors: add ChromeOS EC Contiguous Sensors driver")
+Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
+Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
+index 89cb0066a6e0..8d76afb87d87 100644
+--- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
++++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c
+@@ -103,9 +103,10 @@ static int cros_ec_sensors_read(struct iio_dev *indio_dev,
+ * Do not use IIO_DEGREE_TO_RAD to avoid precision
+ * loss. Round to the nearest integer.
+ */
+- *val = div_s64(val64 * 314159 + 9000000ULL, 1000);
+- *val2 = 18000 << (CROS_EC_SENSOR_BITS - 1);
+- ret = IIO_VAL_FRACTIONAL;
++ *val = 0;
++ *val2 = div_s64(val64 * 3141592653ULL,
++ 180 << (CROS_EC_SENSOR_BITS - 1));
++ ret = IIO_VAL_INT_PLUS_NANO;
+ break;
+ case MOTIONSENSE_TYPE_MAG:
+ /*
+--
+2.16.4
+
diff --git a/patches.drivers/0002-iommu-amd-add-support-for-higher-64-bit-iommu-control-register b/patches.drivers/iommu-amd-add-support-for-higher-64-bit-iommu-control-register
index 4a8d646cc0..4a8d646cc0 100644
--- a/patches.drivers/0002-iommu-amd-add-support-for-higher-64-bit-iommu-control-register
+++ b/patches.drivers/iommu-amd-add-support-for-higher-64-bit-iommu-control-register
diff --git a/patches.drivers/0003-iommu-amd-add-support-for-iommu-xt-mode b/patches.drivers/iommu-amd-add-support-for-iommu-xt-mode
index 041a74dad5..041a74dad5 100644
--- a/patches.drivers/0003-iommu-amd-add-support-for-iommu-xt-mode
+++ b/patches.drivers/iommu-amd-add-support-for-iommu-xt-mode
diff --git a/patches.drivers/iommu-amd-set-exclusion-range-correctly b/patches.drivers/iommu-amd-set-exclusion-range-correctly
new file mode 100644
index 0000000000..0044bbb6d3
--- /dev/null
+++ b/patches.drivers/iommu-amd-set-exclusion-range-correctly
@@ -0,0 +1,35 @@
+From: Joerg Roedel <jroedel@suse.de>
+Date: Fri, 12 Apr 2019 12:50:31 +0200
+Subject: iommu/amd: Set exclusion range correctly
+Git-commit: 3c677d206210f53a4be972211066c0f1cd47fe12
+Patch-mainline: v5.1-rc5
+References: bsc#1130425
+
+The exlcusion range limit register needs to contain the
+base-address of the last page that is part of the range, as
+bits 0-11 of this register are treated as 0xfff by the
+hardware for comparisons.
+
+So correctly set the exclusion range in the hardware to the
+last page which is _in_ the range.
+
+Fixes: b2026aa2dce44 ('x86, AMD IOMMU: add functions for programming IOMMU MMIO space')
+Signed-off-by: Joerg Roedel <jroedel@suse.de>
+---
+ drivers/iommu/amd_iommu_init.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
+index 1b1378619fc9..ff40ba758cf3 100644
+--- a/drivers/iommu/amd_iommu_init.c
++++ b/drivers/iommu/amd_iommu_init.c
+@@ -359,7 +359,7 @@ static void iommu_write_l2(struct amd_iommu *iommu, u8 address, u32 val)
+ static void iommu_set_exclusion_range(struct amd_iommu *iommu)
+ {
+ u64 start = iommu->exclusion_start & PAGE_MASK;
+- u64 limit = (start + iommu->exclusion_length) & PAGE_MASK;
++ u64 limit = (start + iommu->exclusion_length - 1) & PAGE_MASK;
+ u64 entry;
+
+ if (!iommu->exclusion_start)
+
diff --git a/patches.suse/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch b/patches.drivers/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch
index 4540898357..4540898357 100644
--- a/patches.suse/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch
+++ b/patches.drivers/ipmi-pci-Blacklist-a-Realtek-IPMI-device.patch
diff --git a/patches.arch/jump_label-split-out-code-under-the-hotplug-lock.patch b/patches.drivers/jump_label-Split-out-code-under-the-hotplug-lock.patch
index a1d084e4d1..a1d084e4d1 100644
--- a/patches.arch/jump_label-split-out-code-under-the-hotplug-lock.patch
+++ b/patches.drivers/jump_label-Split-out-code-under-the-hotplug-lock.patch
diff --git a/patches.fixes/libnvdimm-badrange-remove-a-WARN-for-list_empty.patch b/patches.drivers/libnvdimm-badrange-remove-a-warn-for-list_empty.patch
index 29f9efaa5f..29f9efaa5f 100644
--- a/patches.fixes/libnvdimm-badrange-remove-a-WARN-for-list_empty.patch
+++ b/patches.drivers/libnvdimm-badrange-remove-a-warn-for-list_empty.patch
diff --git a/patches.fixes/libnvdimm-Introduce-locked-DIMM-capacity-support.patch b/patches.drivers/libnvdimm-introduce-locked-dimm-capacity-support.patch
index b66ab7611d..b66ab7611d 100644
--- a/patches.fixes/libnvdimm-Introduce-locked-DIMM-capacity-support.patch
+++ b/patches.drivers/libnvdimm-introduce-locked-dimm-capacity-support.patch
diff --git a/patches.fixes/libnvdimm-move-poison-list-functions-to-a-new-badran.patch b/patches.drivers/libnvdimm-move-poison-list-functions-to-a-new-badrange-file.patch
index ad1cc7cfd8..ad1cc7cfd8 100644
--- a/patches.fixes/libnvdimm-move-poison-list-functions-to-a-new-badran.patch
+++ b/patches.drivers/libnvdimm-move-poison-list-functions-to-a-new-badrange-file.patch
diff --git a/patches.fixes/libnvdimm-nfit_test-add-firmware-download-emulation.patch b/patches.drivers/libnvdimm-nfit_test-add-firmware-download-emulation.patch
index b2dfd6d244..b2dfd6d244 100644
--- a/patches.fixes/libnvdimm-nfit_test-add-firmware-download-emulation.patch
+++ b/patches.drivers/libnvdimm-nfit_test-add-firmware-download-emulation.patch
diff --git a/patches.fixes/libnvdimm-nfit_test-adding-support-for-unit-testing-.patch b/patches.drivers/libnvdimm-nfit_test-adding-support-for-unit-testing-enable-lss-status.patch
index d3056d5893..d3056d5893 100644
--- a/patches.fixes/libnvdimm-nfit_test-adding-support-for-unit-testing-.patch
+++ b/patches.drivers/libnvdimm-nfit_test-adding-support-for-unit-testing-enable-lss-status.patch
diff --git a/patches.fixes/libnvdimm-testing-Add-emulation-for-smart-injection-.patch b/patches.drivers/libnvdimm-testing-add-emulation-for-smart-injection-commands.patch
index b919de9b59..b919de9b59 100644
--- a/patches.fixes/libnvdimm-testing-Add-emulation-for-smart-injection-.patch
+++ b/patches.drivers/libnvdimm-testing-add-emulation-for-smart-injection-commands.patch
diff --git a/patches.fixes/libnvdimm-testing-update-the-default-smart-ctrl_temp.patch b/patches.drivers/libnvdimm-testing-update-the-default-smart-ctrl_temperature.patch
index a9e5ebfa0f..a9e5ebfa0f 100644
--- a/patches.fixes/libnvdimm-testing-update-the-default-smart-ctrl_temp.patch
+++ b/patches.drivers/libnvdimm-testing-update-the-default-smart-ctrl_temperature.patch
diff --git a/patches.suse/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch b/patches.drivers/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch
index 2ac5385a94..2ac5385a94 100644
--- a/patches.suse/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch
+++ b/patches.drivers/mlxsw-core_acl_flex_actions-Return-error-for-conflic.patch
diff --git a/patches.suse/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch b/patches.drivers/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch
index 0f7ffe86a9..0f7ffe86a9 100644
--- a/patches.suse/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch
+++ b/patches.drivers/mlxsw-spectrum-Disable-MAC-learning-for-ovs-port.patch
diff --git a/patches.suse/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch b/patches.drivers/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch
index b7a1dd07d2..b7a1dd07d2 100644
--- a/patches.suse/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch
+++ b/patches.drivers/mlxsw-spectrum-Forbid-creation-of-VLAN-1-over-port-L.patch
diff --git a/patches.suse/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch b/patches.drivers/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch
index 6ab6e4f5e3..6ab6e4f5e3 100644
--- a/patches.suse/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch
+++ b/patches.drivers/mlxsw-spectrum-Relax-sanity-checks-during-enslavemen.patch
diff --git a/patches.suse/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch b/patches.drivers/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch
index c92db2782e..c92db2782e 100644
--- a/patches.suse/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch
+++ b/patches.drivers/mlxsw-spectrum_router-Don-t-log-an-error-on-missing-.patch
diff --git a/patches.suse/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch b/patches.drivers/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch
index 3eddc1eb5d..3eddc1eb5d 100644
--- a/patches.suse/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch
+++ b/patches.drivers/mlxsw-spectrum_router-Fix-error-path-in-mlxsw_sp_vr_.patch
diff --git a/patches.suse/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch b/patches.drivers/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch
index a4885ff875..a4885ff875 100644
--- a/patches.suse/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch
+++ b/patches.drivers/mlxsw-spectrum_switchdev-Check-success-of-FDB-add-op.patch
diff --git a/patches.drivers/mmc-davinci-remove-extraneous-__init-annotation.patch b/patches.drivers/mmc-davinci-remove-extraneous-__init-annotation.patch
new file mode 100644
index 0000000000..8016b508b6
--- /dev/null
+++ b/patches.drivers/mmc-davinci-remove-extraneous-__init-annotation.patch
@@ -0,0 +1,42 @@
+From 9ce58dd7d9da3ca0d7cb8c9568f1c6f4746da65a Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 7 Mar 2019 11:10:11 +0100
+Subject: [PATCH] mmc: davinci: remove extraneous __init annotation
+Git-commit: 9ce58dd7d9da3ca0d7cb8c9568f1c6f4746da65a
+Patch-mainline: v5.1-rc2
+References: bsc#1051510
+
+Building with clang finds a mistaken __init tag:
+
+Warning: vmlinux.o(.text+0x5e4250): Section mismatch in reference from the function davinci_mmcsd_probe() to the function .init.text:init_mmcsd_host()
+The function davinci_mmcsd_probe() references
+the function __init init_mmcsd_host().
+This is often because davinci_mmcsd_probe lacks a __init
+annotation or the annotation of init_mmcsd_host is wrong.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Wolfram Sang <wsa@the-dreams.de>
+Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/mmc/host/davinci_mmc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
+index 49e0daf2ef5e..f37003df1e01 100644
+--- a/drivers/mmc/host/davinci_mmc.c
++++ b/drivers/mmc/host/davinci_mmc.c
+@@ -1117,7 +1117,7 @@ static inline void mmc_davinci_cpufreq_deregister(struct mmc_davinci_host *host)
+ {
+ }
+ #endif
+-static void __init init_mmcsd_host(struct mmc_davinci_host *host)
++static void init_mmcsd_host(struct mmc_davinci_host *host)
+ {
+
+ mmc_davinci_reset_ctrl(host, 1);
+--
+2.16.4
+
diff --git a/patches.drivers/mmc-tmio_mmc_core-don-t-claim-spurious-interrupts.patch b/patches.drivers/mmc-tmio_mmc_core-don-t-claim-spurious-interrupts.patch
new file mode 100644
index 0000000000..e3dff5b934
--- /dev/null
+++ b/patches.drivers/mmc-tmio_mmc_core-don-t-claim-spurious-interrupts.patch
@@ -0,0 +1,72 @@
+From 5c27ff5db1491a947264d6d4e4cbe43ae6535bae Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+Date: Mon, 18 Feb 2019 20:45:40 +0300
+Subject: [PATCH] mmc: tmio_mmc_core: don't claim spurious interrupts
+Git-commit: 5c27ff5db1491a947264d6d4e4cbe43ae6535bae
+Patch-mainline: v5.0
+References: bsc#1051510
+
+I have encountered an interrupt storm during the eMMC chip probing (and
+the chip finally didn't get detected). It turned out that U-Boot left
+the DMAC interrupts enabled while the Linux driver didn't use those.
+The SDHI driver's interrupt handler somehow assumes that, even if an
+SDIO interrupt didn't happen, it should return IRQ_HANDLED. I think
+that if none of the enabled interrupts happened and got handled, we
+should return IRQ_NONE -- that way the kernel IRQ code recoginizes
+a spurious interrupt and masks it off pretty quickly...
+
+Fixes: 7729c7a232a9 ("mmc: tmio: Provide separate interrupt handlers")
+Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
+Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
+Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
+Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
+Cc: stable@vger.kernel.org
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/mmc/host/tmio_mmc_pio.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+--- a/drivers/mmc/host/tmio_mmc_pio.c
++++ b/drivers/mmc/host/tmio_mmc_pio.c
+@@ -720,7 +720,7 @@ static bool __tmio_mmc_sdcard_irq(struct
+ return false;
+ }
+
+-static void __tmio_mmc_sdio_irq(struct tmio_mmc_host *host)
++static bool __tmio_mmc_sdio_irq(struct tmio_mmc_host *host)
+ {
+ struct mmc_host *mmc = host->mmc;
+ struct tmio_mmc_data *pdata = host->pdata;
+@@ -728,7 +728,7 @@ static void __tmio_mmc_sdio_irq(struct t
+ unsigned int sdio_status;
+
+ if (!(pdata->flags & TMIO_MMC_SDIO_IRQ))
+- return;
++ return false;
+
+ status = sd_ctrl_read16(host, CTL_SDIO_STATUS);
+ ireg = status & TMIO_SDIO_MASK_ALL & ~host->sdio_irq_mask;
+@@ -741,6 +741,8 @@ static void __tmio_mmc_sdio_irq(struct t
+
+ if (mmc->caps & MMC_CAP_SDIO_IRQ && ireg & TMIO_SDIO_STAT_IOIRQ)
+ mmc_signal_sdio_irq(mmc);
++
++ return ireg;
+ }
+
+ irqreturn_t tmio_mmc_irq(int irq, void *devid)
+@@ -762,9 +764,10 @@ irqreturn_t tmio_mmc_irq(int irq, void *
+ if (__tmio_mmc_sdcard_irq(host, ireg, status))
+ return IRQ_HANDLED;
+
+- __tmio_mmc_sdio_irq(host);
++ if (__tmio_mmc_sdio_irq(host))
++ return IRQ_HANDLED;
+
+- return IRQ_HANDLED;
++ return IRQ_NONE;
+ }
+ EXPORT_SYMBOL(tmio_mmc_irq);
+
diff --git a/patches.suse/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch b/patches.drivers/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch
index b67ab0a279..b67ab0a279 100644
--- a/patches.suse/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch
+++ b/patches.drivers/net-mlx4_en-Change-min-MTU-size-to-ETH_MIN_MTU.patch
diff --git a/patches.suse/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch b/patches.drivers/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch
index f69361754b..f69361754b 100644
--- a/patches.suse/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch
+++ b/patches.drivers/net-phy-don-t-allow-__set_phy_supported-to-add-unsup.patch
diff --git a/patches.suse/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch b/patches.drivers/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch
index e04d8bc044..e04d8bc044 100644
--- a/patches.suse/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch
+++ b/patches.drivers/net-skb_scrub_packet-Scrub-offload_fwd_mark.patch
diff --git a/patches.drivers/net-smc-terminate-link-group-for-ib_post_send-problems.patch b/patches.drivers/net-smc-terminate-link-group-for-ib_post_send-proble.patch
index a6bf8b000e..a6bf8b000e 100644
--- a/patches.drivers/net-smc-terminate-link-group-for-ib_post_send-problems.patch
+++ b/patches.drivers/net-smc-terminate-link-group-for-ib_post_send-proble.patch
diff --git a/patches.drivers/net-smc-use-__aligned_u64-for-64-bit-smc_diag-fields.patch b/patches.drivers/net-smc-use-_aligned_u64-for-64-bit-smc_diag-fields.patch
index 7cbb898ae8..7cbb898ae8 100644
--- a/patches.drivers/net-smc-use-__aligned_u64-for-64-bit-smc_diag-fields.patch
+++ b/patches.drivers/net-smc-use-_aligned_u64-for-64-bit-smc_diag-fields.patch
diff --git a/patches.suse/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch b/patches.drivers/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch
index 37f7928e56..37f7928e56 100644
--- a/patches.suse/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch
+++ b/patches.drivers/net-thunderx-set-tso_hdrs-pointer-to-NULL-in-nicvf_f.patch
diff --git a/patches.suse/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch b/patches.drivers/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch
index cc90e14e91..cc90e14e91 100644
--- a/patches.suse/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch
+++ b/patches.drivers/net-thunderx-set-xdp_prog-to-NULL-if-bpf_prog_add-fa.patch
diff --git a/patches.fixes/nfit_test-add-error-injection-DSMs.patch b/patches.drivers/nfit_test-add-error-injection-dsms.patch
index 44fd97016a..44fd97016a 100644
--- a/patches.fixes/nfit_test-add-error-injection-DSMs.patch
+++ b/patches.drivers/nfit_test-add-error-injection-dsms.patch
diff --git a/patches.fixes/nfit_test-fix-buffer-overrun-add-sanity-check.patch b/patches.drivers/nfit_test-fix-buffer-overrun-add-sanity-check.patch
index d0f356d740..d0f356d740 100644
--- a/patches.fixes/nfit_test-fix-buffer-overrun-add-sanity-check.patch
+++ b/patches.drivers/nfit_test-fix-buffer-overrun-add-sanity-check.patch
diff --git a/patches.fixes/nfit_test-improve-structure-offset-handling.patch b/patches.drivers/nfit_test-improve-structure-offset-handling.patch
index 9a8d214031..9a8d214031 100644
--- a/patches.fixes/nfit_test-improve-structure-offset-handling.patch
+++ b/patches.drivers/nfit_test-improve-structure-offset-handling.patch
diff --git a/patches.fixes/nfit_test-prevent-parsing-error-of-nfit_test.0.patch b/patches.drivers/nfit_test-prevent-parsing-error-of-nfit_test-0.patch
index 9ee973d86a..9ee973d86a 100644
--- a/patches.fixes/nfit_test-prevent-parsing-error-of-nfit_test.0.patch
+++ b/patches.drivers/nfit_test-prevent-parsing-error-of-nfit_test-0.patch
diff --git a/patches.fixes/nfit_test-when-clearing-poison-also-remove-badrange-.patch b/patches.drivers/nfit_test-when-clearing-poison-also-remove-badrange-entries.patch
index 7e2fb896ac..7e2fb896ac 100644
--- a/patches.fixes/nfit_test-when-clearing-poison-also-remove-badrange-.patch
+++ b/patches.drivers/nfit_test-when-clearing-poison-also-remove-badrange-entries.patch
diff --git a/patches.suse/0050-pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch b/patches.drivers/pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch
index 67ac9d8f16..67ac9d8f16 100644
--- a/patches.suse/0050-pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch
+++ b/patches.drivers/pktcdvd-Check-queue-type-before-attaching-to-a-queue.patch
diff --git a/patches.fixes/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch b/patches.drivers/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch
index c3be67abfb..c3be67abfb 100644
--- a/patches.fixes/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch
+++ b/patches.drivers/rdma_rxe-make-rxe-work-over-802.1q-VLAN-devices.patch
diff --git a/patches.arch/sched-core-fix-cpu-max-vs-cpuhotplug-deadlock.patch b/patches.drivers/sched-core-Fix-cpu.max-vs.-cpuhotplug-deadlock.patch
index 3edcb512b5..3edcb512b5 100644
--- a/patches.arch/sched-core-fix-cpu-max-vs-cpuhotplug-deadlock.patch
+++ b/patches.drivers/sched-core-Fix-cpu.max-vs.-cpuhotplug-deadlock.patch
diff --git a/patches.fixes/scsi-qla2xxx-timeouts-occur-on-surprise-removal-of-qlogic-adapter.patch b/patches.drivers/scsi-qla2xxx-Timeouts-occur-on-surprise-removal-of-Q.patch
index 0a3aca96bd..0a3aca96bd 100644
--- a/patches.fixes/scsi-qla2xxx-timeouts-occur-on-surprise-removal-of-qlogic-adapter.patch
+++ b/patches.drivers/scsi-qla2xxx-Timeouts-occur-on-surprise-removal-of-Q.patch
diff --git a/patches.fixes/0001-skd-Avoid-that-module-unloading-triggers-a-use-after.patch b/patches.drivers/skd-Avoid-that-module-unloading-triggers-a-use-after.patch
index 1560df4aa2..1560df4aa2 100644
--- a/patches.fixes/0001-skd-Avoid-that-module-unloading-triggers-a-use-after.patch
+++ b/patches.drivers/skd-Avoid-that-module-unloading-triggers-a-use-after.patch
diff --git a/patches.fixes/0001-skd-Submit-requests-to-firmware-before-triggering-th.patch b/patches.drivers/skd-Submit-requests-to-firmware-before-triggering-th.patch
index b76b6c40e7..b76b6c40e7 100644
--- a/patches.fixes/0001-skd-Submit-requests-to-firmware-before-triggering-th.patch
+++ b/patches.drivers/skd-Submit-requests-to-firmware-before-triggering-th.patch
diff --git a/patches.drivers/staging-vt6655-Fix-interrupt-race-condition-on-devic.patch b/patches.drivers/staging-vt6655-Fix-interrupt-race-condition-on-devic.patch
new file mode 100644
index 0000000000..4a33e22452
--- /dev/null
+++ b/patches.drivers/staging-vt6655-Fix-interrupt-race-condition-on-devic.patch
@@ -0,0 +1,70 @@
+From 3b9c2f2e0e99bb67c96abcb659b3465efe3bee1f Mon Sep 17 00:00:00 2001
+From: Malcolm Priestley <tvboxspy@gmail.com>
+Date: Sun, 24 Mar 2019 18:53:49 +0000
+Subject: [PATCH] staging: vt6655: Fix interrupt race condition on device start up.
+Git-commit: 3b9c2f2e0e99bb67c96abcb659b3465efe3bee1f
+Patch-mainline: v5.1-rc3
+References: bsc#1051510
+
+It appears on some slower systems that the driver can find its way
+out of the workqueue while the interrupt is disabled by continuous polling
+by it.
+
+Move MACvIntEnable to vnt_interrupt_work so that it is always enabled
+on all routes out of vnt_interrupt_process.
+
+Move MACvIntDisable so that the device doesn't keep polling the system
+while the workqueue is being processed.
+
+Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
+Cc: stable@vger.kernel.org # v4.2+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/staging/vt6655/device_main.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c
+index b370985b58a1..83f1a1cf9182 100644
+--- a/drivers/staging/vt6655/device_main.c
++++ b/drivers/staging/vt6655/device_main.c
+@@ -1033,8 +1033,6 @@ static void vnt_interrupt_process(struct vnt_private *priv)
+ return;
+ }
+
+- MACvIntDisable(priv->PortOffset);
+-
+ spin_lock_irqsave(&priv->lock, flags);
+
+ /* Read low level stats */
+@@ -1122,8 +1120,6 @@ static void vnt_interrupt_process(struct vnt_private *priv)
+ }
+
+ spin_unlock_irqrestore(&priv->lock, flags);
+-
+- MACvIntEnable(priv->PortOffset, IMR_MASK_VALUE);
+ }
+
+ static void vnt_interrupt_work(struct work_struct *work)
+@@ -1133,6 +1129,8 @@ static void vnt_interrupt_work(struct work_struct *work)
+
+ if (priv->vif)
+ vnt_interrupt_process(priv);
++
++ MACvIntEnable(priv->PortOffset, IMR_MASK_VALUE);
+ }
+
+ static irqreturn_t vnt_interrupt(int irq, void *arg)
+@@ -1142,6 +1140,8 @@ static irqreturn_t vnt_interrupt(int irq, void *arg)
+ if (priv->vif)
+ schedule_work(&priv->interrupt_work);
+
++ MACvIntDisable(priv->PortOffset);
++
+ return IRQ_HANDLED;
+ }
+
+--
+2.16.4
+
diff --git a/patches.drivers/staging-vt6655-Remove-vif-check-from-vnt_interrupt.patch b/patches.drivers/staging-vt6655-Remove-vif-check-from-vnt_interrupt.patch
new file mode 100644
index 0000000000..dec7250735
--- /dev/null
+++ b/patches.drivers/staging-vt6655-Remove-vif-check-from-vnt_interrupt.patch
@@ -0,0 +1,39 @@
+From cc26358f89c3e493b54766b1ca56cfc6b14db78a Mon Sep 17 00:00:00 2001
+From: Malcolm Priestley <tvboxspy@gmail.com>
+Date: Wed, 27 Mar 2019 18:45:26 +0000
+Subject: [PATCH] staging: vt6655: Remove vif check from vnt_interrupt
+Git-commit: cc26358f89c3e493b54766b1ca56cfc6b14db78a
+Patch-mainline: v5.1-rc3
+References: bsc#1051510
+
+A check for vif is made in vnt_interrupt_work.
+
+There is a small chance of leaving interrupt disabled while vif
+is NULL and the work hasn't been scheduled.
+
+Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
+Cc: stable@vger.kernel.org # v4.2+
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/staging/vt6655/device_main.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c
+index 83f1a1cf9182..c6bb4aaf9bd0 100644
+--- a/drivers/staging/vt6655/device_main.c
++++ b/drivers/staging/vt6655/device_main.c
+@@ -1137,8 +1137,7 @@ static irqreturn_t vnt_interrupt(int irq, void *arg)
+ {
+ struct vnt_private *priv = arg;
+
+- if (priv->vif)
+- schedule_work(&priv->interrupt_work);
++ schedule_work(&priv->interrupt_work);
+
+ MACvIntDisable(priv->PortOffset);
+
+--
+2.16.4
+
diff --git a/patches.fixes/tools-testing-nvdimm-advertise-a-write-cache-for-nfi.patch b/patches.drivers/tools-testing-nvdimm-advertise-a-write-cache-for-nfit_test.patch
index 711403b4c4..711403b4c4 100644
--- a/patches.fixes/tools-testing-nvdimm-advertise-a-write-cache-for-nfi.patch
+++ b/patches.drivers/tools-testing-nvdimm-advertise-a-write-cache-for-nfit_test.patch
diff --git a/patches.fixes/tools-testing-nvdimm-allow-custom-error-code-injecti.patch b/patches.drivers/tools-testing-nvdimm-allow-custom-error-code-injection.patch
index 466f8d472c..466f8d472c 100644
--- a/patches.fixes/tools-testing-nvdimm-allow-custom-error-code-injecti.patch
+++ b/patches.drivers/tools-testing-nvdimm-allow-custom-error-code-injection.patch
diff --git a/patches.fixes/tools-testing-nvdimm-disable-labels-for-nfit_test.1.patch b/patches.drivers/tools-testing-nvdimm-disable-labels-for-nfit_test-1.patch
index 1b9b29d024..1b9b29d024 100644
--- a/patches.fixes/tools-testing-nvdimm-disable-labels-for-nfit_test.1.patch
+++ b/patches.drivers/tools-testing-nvdimm-disable-labels-for-nfit_test-1.patch
diff --git a/patches.fixes/tools-testing-nvdimm-enable-labels-for-nfit_test.1-d.patch b/patches.drivers/tools-testing-nvdimm-enable-labels-for-nfit_test-1-dimms.patch
index 52bc3773a1..52bc3773a1 100644
--- a/patches.fixes/tools-testing-nvdimm-enable-labels-for-nfit_test.1-d.patch
+++ b/patches.drivers/tools-testing-nvdimm-enable-labels-for-nfit_test-1-dimms.patch
diff --git a/patches.fixes/tools-testing-nvdimm-fix-missing-newline-in-nfit_tes.patch b/patches.drivers/tools-testing-nvdimm-fix-missing-newline-in-nfit_test_dimm-handle-attribute.patch
index 5fa1c0ca20..5fa1c0ca20 100644
--- a/patches.fixes/tools-testing-nvdimm-fix-missing-newline-in-nfit_tes.patch
+++ b/patches.drivers/tools-testing-nvdimm-fix-missing-newline-in-nfit_test_dimm-handle-attribute.patch
diff --git a/patches.fixes/tools-testing-nvdimm-Fix-support-for-emulating-contr.patch b/patches.drivers/tools-testing-nvdimm-fix-support-for-emulating-controller-temperature.patch
index 787357089d..787357089d 100644
--- a/patches.fixes/tools-testing-nvdimm-Fix-support-for-emulating-contr.patch
+++ b/patches.drivers/tools-testing-nvdimm-fix-support-for-emulating-controller-temperature.patch
diff --git a/patches.fixes/tools-testing-nvdimm-force-nfit_test-to-depend-on-in.patch b/patches.drivers/tools-testing-nvdimm-force-nfit_test-to-depend-on-instrumented-modules.patch
index e3d02ee15b..e3d02ee15b 100644
--- a/patches.fixes/tools-testing-nvdimm-force-nfit_test-to-depend-on-in.patch
+++ b/patches.drivers/tools-testing-nvdimm-force-nfit_test-to-depend-on-instrumented-modules.patch
diff --git a/patches.fixes/tools-testing-nvdimm-improve-emulation-of-smart-inje.patch b/patches.drivers/tools-testing-nvdimm-improve-emulation-of-smart-injection.patch
index 7e217a88c3..7e217a88c3 100644
--- a/patches.fixes/tools-testing-nvdimm-improve-emulation-of-smart-inje.patch
+++ b/patches.drivers/tools-testing-nvdimm-improve-emulation-of-smart-injection.patch
diff --git a/patches.fixes/tools-testing-nvdimm-kaddr-and-pfn-can-be-NULL-to-di.patch b/patches.drivers/tools-testing-nvdimm-kaddr-and-pfn-can-be-null-to-direct_access.patch
index cbbbc6ffbc..cbbbc6ffbc 100644
--- a/patches.fixes/tools-testing-nvdimm-kaddr-and-pfn-can-be-NULL-to-di.patch
+++ b/patches.drivers/tools-testing-nvdimm-kaddr-and-pfn-can-be-null-to-direct_access.patch
diff --git a/patches.fixes/tools-testing-nvdimm-Make-DSM-failure-code-injection.patch b/patches.drivers/tools-testing-nvdimm-make-dsm-failure-code-injection-an-override.patch
index 7fcac7a3a5..7fcac7a3a5 100644
--- a/patches.fixes/tools-testing-nvdimm-Make-DSM-failure-code-injection.patch
+++ b/patches.drivers/tools-testing-nvdimm-make-dsm-failure-code-injection-an-override.patch
diff --git a/patches.fixes/tools-testing-nvdimm-smart-alarm-threshold-control.patch b/patches.drivers/tools-testing-nvdimm-smart-alarm-threshold-control.patch
index 6d53b86d49..6d53b86d49 100644
--- a/patches.fixes/tools-testing-nvdimm-smart-alarm-threshold-control.patch
+++ b/patches.drivers/tools-testing-nvdimm-smart-alarm-threshold-control.patch
diff --git a/patches.fixes/tools-testing-nvdimm-stricter-bounds-checking-for-er.patch b/patches.drivers/tools-testing-nvdimm-stricter-bounds-checking-for-error-injection-commands.patch
index b48432cb9d..b48432cb9d 100644
--- a/patches.fixes/tools-testing-nvdimm-stricter-bounds-checking-for-er.patch
+++ b/patches.drivers/tools-testing-nvdimm-stricter-bounds-checking-for-error-injection-commands.patch
diff --git a/patches.fixes/tools-testing-nvdimm-support-nfit_test_dimm-attribut.patch b/patches.drivers/tools-testing-nvdimm-support-nfit_test_dimm-attributes-under-nfit_test-1.patch
index 336f8a57b3..336f8a57b3 100644
--- a/patches.fixes/tools-testing-nvdimm-support-nfit_test_dimm-attribut.patch
+++ b/patches.drivers/tools-testing-nvdimm-support-nfit_test_dimm-attributes-under-nfit_test-1.patch
diff --git a/patches.fixes/tools-testing-nvdimm-unit-test-clear-error-commands.patch b/patches.drivers/tools-testing-nvdimm-unit-test-clear-error-commands.patch
index ef2c97c7ef..ef2c97c7ef 100644
--- a/patches.fixes/tools-testing-nvdimm-unit-test-clear-error-commands.patch
+++ b/patches.drivers/tools-testing-nvdimm-unit-test-clear-error-commands.patch
diff --git a/patches.drivers/tpm-Fix-the-type-of-the-return-value-in-calc_tpm2_ev.patch b/patches.drivers/tpm-Fix-the-type-of-the-return-value-in-calc_tpm2_ev.patch
new file mode 100644
index 0000000000..8e4eafc3ef
--- /dev/null
+++ b/patches.drivers/tpm-Fix-the-type-of-the-return-value-in-calc_tpm2_ev.patch
@@ -0,0 +1,42 @@
+From 89aaea1e4928a69f47102ea228f7f4357d0c8f15 Mon Sep 17 00:00:00 2001
+From: Yue Haibing <yuehaibing@huawei.com>
+Date: Wed, 20 Feb 2019 16:25:38 +0800
+Subject: [PATCH] tpm: Fix the type of the return value in
+ calc_tpm2_event_size()
+
+References: bsc#1082555
+Patch-mainline: v5.1-rc5
+Git-commit: b9d0a85d6b2e76630cfd4c475ee3af4109bfd87a
+
+calc_tpm2_event_size() has an invalid signature because
+it returns a 'size_t' where as its signature says that
+it returns 'int'.
+
+Cc: <stable@vger.kernel.org>
+Fixes: 4d23cc323cdb ("tpm: add securityfs support for TPM 2.0 firmware event log")
+Suggested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
+Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: James Morris <james.morris@microsoft.com>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ drivers/char/tpm/tpm2_eventlog.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/char/tpm/tpm2_eventlog.c b/drivers/char/tpm/tpm2_eventlog.c
+index 34a8afa69138..191abe17cf31 100644
+--- a/drivers/char/tpm/tpm2_eventlog.c
++++ b/drivers/char/tpm/tpm2_eventlog.c
+@@ -36,7 +36,7 @@
+ *
+ * Returns size of the event. If it is an invalid event, returns 0.
+ */
+-static int calc_tpm2_event_size(struct tcg_pcr_event2 *event,
++static size_t calc_tpm2_event_size(struct tcg_pcr_event2 *event,
+ struct tcg_pcr_event *event_header)
+ {
+ struct tcg_efi_specid_event *efispecid;
+--
+2.20.1
+
diff --git a/patches.suse/tun-forbid-iface-creation-with-rtnl-ops.patch b/patches.drivers/tun-forbid-iface-creation-with-rtnl-ops.patch
index 4af01939c3..4af01939c3 100644
--- a/patches.suse/tun-forbid-iface-creation-with-rtnl-ops.patch
+++ b/patches.drivers/tun-forbid-iface-creation-with-rtnl-ops.patch
diff --git a/patches.fixes/0001-USB-xhci-fix-broken_suspend-placement-in-struct-xchi.patch b/patches.drivers/usb-xhci-fix-broken_suspend-placement-in-struct-xchi_hcd.patch
index f24444c528..f24444c528 100644
--- a/patches.fixes/0001-USB-xhci-fix-broken_suspend-placement-in-struct-xchi.patch
+++ b/patches.drivers/usb-xhci-fix-broken_suspend-placement-in-struct-xchi_hcd.patch
diff --git a/patches.drivers/vfio-type1-limit-dma-mappings-per-container b/patches.drivers/vfio-type1-limit-dma-mappings-per-container
new file mode 100644
index 0000000000..5f4d67ede6
--- /dev/null
+++ b/patches.drivers/vfio-type1-limit-dma-mappings-per-container
@@ -0,0 +1,94 @@
+From: Alex Williamson <alex.williamson@redhat.com>
+Date: Wed, 3 Apr 2019 12:36:21 -0600
+Subject: vfio/type1: Limit DMA mappings per container
+Git-commit: 492855939bdb59c6f947b0b5b44af9ad82b7e38c
+Patch-mainline: v5.1-rc4
+References: CVE-2019-3882 bsc#1131427
+
+Memory backed DMA mappings are accounted against a user's locked
+memory limit, including multiple mappings of the same memory. This
+accounting bounds the number of such mappings that a user can create.
+However, DMA mappings that are not backed by memory, such as DMA
+mappings of device MMIO via mmaps, do not make use of page pinning
+and therefore do not count against the user's locked memory limit.
+These mappings still consume memory, but the memory is not well
+associated to the process for the purpose of oom killing a task.
+
+To add bounding on this use case, we introduce a limit to the total
+number of concurrent DMA mappings that a user is allowed to create.
+This limit is exposed as a tunable module option where the default
+value of 64K is expected to be well in excess of any reasonable use
+case (a large virtual machine configuration would typically only make
+use of tens of concurrent mappings).
+
+This fixes CVE-2019-3882.
+
+Reviewed-by: Eric Auger <eric.auger@redhat.com>
+Tested-by: Eric Auger <eric.auger@redhat.com>
+Reviewed-by: Peter Xu <peterx@redhat.com>
+Reviewed-by: Cornelia Huck <cohuck@redhat.com>
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Acked-by: Joerg Roedel <jroedel@suse.de>
+---
+ drivers/vfio/vfio_iommu_type1.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
+index 73652e21efec..d0f731c9920a 100644
+--- a/drivers/vfio/vfio_iommu_type1.c
++++ b/drivers/vfio/vfio_iommu_type1.c
+@@ -58,12 +58,18 @@ module_param_named(disable_hugepages,
+ MODULE_PARM_DESC(disable_hugepages,
+ "Disable VFIO IOMMU support for IOMMU hugepages.");
+
++static unsigned int dma_entry_limit __read_mostly = U16_MAX;
++module_param_named(dma_entry_limit, dma_entry_limit, uint, 0644);
++MODULE_PARM_DESC(dma_entry_limit,
++ "Maximum number of user DMA mappings per container (65535).");
++
+ struct vfio_iommu {
+ struct list_head domain_list;
+ struct vfio_domain *external_domain; /* domain for external user */
+ struct mutex lock;
+ struct rb_root dma_list;
+ struct blocking_notifier_head notifier;
++ unsigned int dma_avail;
+ bool v2;
+ bool nesting;
+ };
+@@ -836,6 +842,7 @@ static void vfio_remove_dma(struct vfio_iommu *iommu, struct vfio_dma *dma)
+ vfio_unlink_dma(iommu, dma);
+ put_task_struct(dma->task);
+ kfree(dma);
++ iommu->dma_avail++;
+ }
+
+ static unsigned long vfio_pgsize_bitmap(struct vfio_iommu *iommu)
+@@ -1081,12 +1088,18 @@ static int vfio_dma_do_map(struct vfio_iommu *iommu,
+ goto out_unlock;
+ }
+
++ if (!iommu->dma_avail) {
++ ret = -ENOSPC;
++ goto out_unlock;
++ }
++
+ dma = kzalloc(sizeof(*dma), GFP_KERNEL);
+ if (!dma) {
+ ret = -ENOMEM;
+ goto out_unlock;
+ }
+
++ iommu->dma_avail--;
+ dma->iova = iova;
+ dma->vaddr = vaddr;
+ dma->prot = prot;
+@@ -1583,6 +1596,7 @@ static void *vfio_iommu_type1_open(unsigned long arg)
+
+ INIT_LIST_HEAD(&iommu->domain_list);
+ iommu->dma_list = RB_ROOT;
++ iommu->dma_avail = dma_entry_limit;
+ mutex_init(&iommu->lock);
+ BLOCKING_INIT_NOTIFIER_HEAD(&iommu->notifier);
+
+
diff --git a/patches.fixes/vhost-vsock-fix-use-after-free-in-network-stack-call.patch b/patches.drivers/vhost-vsock-fix-use-after-free-in-network-stack-call.patch
index 2762e608f8..2762e608f8 100644
--- a/patches.fixes/vhost-vsock-fix-use-after-free-in-network-stack-call.patch
+++ b/patches.drivers/vhost-vsock-fix-use-after-free-in-network-stack-call.patch
diff --git a/patches.suse/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch b/patches.drivers/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch
index bbc4411255..bbc4411255 100644
--- a/patches.suse/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch
+++ b/patches.drivers/virtio-net-fail-XDP-set-if-guest-csum-is-negotiated.patch
diff --git a/patches.suse/virtio-net-keep-vnet-header-zeroed-after-processing-.patch b/patches.drivers/virtio-net-keep-vnet-header-zeroed-after-processing-.patch
index f14a90010c..f14a90010c 100644
--- a/patches.suse/virtio-net-keep-vnet-header-zeroed-after-processing-.patch
+++ b/patches.drivers/virtio-net-keep-vnet-header-zeroed-after-processing-.patch
diff --git a/patches.fixes/x86-nfit_test-Add-unit-test-for-memcpy_mcsafe.patch b/patches.drivers/x86-nfit_test-add-unit-test-for-memcpy_mcsafe.patch
index 5981f62cde..5981f62cde 100644
--- a/patches.fixes/x86-nfit_test-Add-unit-test-for-memcpy_mcsafe.patch
+++ b/patches.drivers/x86-nfit_test-add-unit-test-for-memcpy_mcsafe.patch
diff --git a/patches.drm/drm-ast-Fix-connector-leak-during-driver-unload.patch b/patches.drm/0001-drm-ast-Fix-connector-leak-during-driver-unload.patch
index a265c18ed2..a265c18ed2 100644
--- a/patches.drm/drm-ast-Fix-connector-leak-during-driver-unload.patch
+++ b/patches.drm/0001-drm-ast-Fix-connector-leak-during-driver-unload.patch
diff --git a/patches.drm/drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch b/patches.drm/0001-drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch
index 1dc2d2d195..1dc2d2d195 100644
--- a/patches.drm/drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch
+++ b/patches.drm/0001-drm-ast-fixed-reading-monitor-EDID-not-stable-issue.patch
diff --git a/patches.drm/0002-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch b/patches.drm/0001-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch
index ff51538e07..ff51538e07 100644
--- a/patches.drm/0002-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch
+++ b/patches.drm/0001-drm-i915-gvt-Add-in-context-mmio-0x20D8-to-gen9-mmio.patch
diff --git a/patches.drm/0001-drm-mediatek-Fix-an-error-code-in-mtk_hdmi_dt_parse_.patch b/patches.drm/0001-drm-mediatek-Fix-an-error-code-in-mtk_hdmi_dt_parse_.patch
new file mode 100644
index 0000000000..4008e583b4
--- /dev/null
+++ b/patches.drm/0001-drm-mediatek-Fix-an-error-code-in-mtk_hdmi_dt_parse_.patch
@@ -0,0 +1,34 @@
+From 2d85978341e6a32e7443d9f28639da254d53f400 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Thu, 28 Mar 2019 17:31:30 +0300
+Subject: drm/mediatek: Fix an error code in mtk_hdmi_dt_parse_pdata()
+Git-commit: 2d85978341e6a32e7443d9f28639da254d53f400
+Patch-mainline: v5.1-rc5
+References: bsc#1113722
+
+We don't want to overwrite "ret", it already holds the correct error
+code. The "regmap" variable might be a valid pointer as this point.
+
+Fixes: 8f83f26891e1 ("drm/mediatek: Add HDMI support")
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: CK Hu <ck.hu@mediatek.com>
+Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
+---
+ drivers/gpu/drm/mediatek/mtk_hdmi.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
+index 915cc84621ae..543a25e5765e 100644
+--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
++++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
+@@ -1480,7 +1480,6 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
+ if (IS_ERR(regmap))
+ ret = PTR_ERR(regmap);
+ if (ret) {
+- ret = PTR_ERR(regmap);
+ dev_err(dev,
+ "Failed to get system configuration registers: %d\n",
+ ret);
+--
+2.21.0
+
diff --git a/patches.drm/0003-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch b/patches.drm/0002-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch
index 47970c8e4d..47970c8e4d 100644
--- a/patches.drm/0003-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch
+++ b/patches.drm/0002-drm-i915-gvt-do-not-let-pin-count-of-shadow-mm-go-ne.patch
diff --git a/patches.drm/drm-msm-Fix-error-return-checking.patch b/patches.drm/0002-drm-msm-Fix-error-return-checking.patch
index 01999bb65b..01999bb65b 100644
--- a/patches.drm/drm-msm-Fix-error-return-checking.patch
+++ b/patches.drm/0002-drm-msm-Fix-error-return-checking.patch
diff --git a/patches.drm/drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch b/patches.drm/0002-drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch
index ffda7d7402..ffda7d7402 100644
--- a/patches.drm/drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch
+++ b/patches.drm/0002-drm-msm-Grab-a-vblank-reference-when-waiting-for-com.patch
diff --git a/patches.drm/drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch b/patches.drm/0003-drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch
index 07d3833043..07d3833043 100644
--- a/patches.drm/drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch
+++ b/patches.drm/0003-drm-amdgpu-Add-delay-after-enable-RLC-ucode.patch
diff --git a/patches.drm/drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch b/patches.drm/0003-drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch
index 3a3214f018..3a3214f018 100644
--- a/patches.drm/drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch
+++ b/patches.drm/0003-drm-i915-Redefine-some-Whiskey-Lake-SKUs.patch
diff --git a/patches.drm/Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch b/patches.drm/0004-Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch
index 564c4b4e9c..564c4b4e9c 100644
--- a/patches.drm/Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch
+++ b/patches.drm/0004-Revert-drm-rockchip-Allow-driver-to-be-shutdown-on-r.patch
diff --git a/patches.drm/drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch b/patches.drm/0004-drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch
index 10b5f48e6e..10b5f48e6e 100644
--- a/patches.drm/drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch
+++ b/patches.drm/0004-drm-atomic-helper-Complete-fake_commit-flip_done-pot.patch
diff --git a/patches.drm/drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch b/patches.drm/0006-drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch
index 7ebafeaa99..7ebafeaa99 100644
--- a/patches.drm/drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch
+++ b/patches.drm/0006-drm-i915-gvt-release-shadow-batch-buffer-and-wa_ctx-.patch
diff --git a/patches.drm/drm-ast-Simplify-function-ast_bo_unpin.patch b/patches.drm/0940-drm-ast-simplify-function-ast_bo_unpin
index d3f2a2ebea..abe2c3e561 100644
--- a/patches.drm/drm-ast-Simplify-function-ast_bo_unpin.patch
+++ b/patches.drm/0940-drm-ast-simplify-function-ast_bo_unpin
@@ -3,7 +3,8 @@ From: Egbert Eich <eich@suse.de>
Date: Tue, 18 Jul 2017 16:47:36 +0200
Message-Id: <20170718144740.9048-2-tiwai@suse.de>
Subject: [PATCH 1/5] drm/ast: Simplify function ast_bo_unpin()
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: 587b9b1a2a068c01fdf51003a7b6951761041d01
+Patch-mainline: v4.14-rc1
References: bnc#895608 bnc#871134
Just a code refactoring, no functional change.
diff --git a/patches.drm/drm-ast-Free-container-instead-of-member-in-ast_user_framebuffer_destroy.patch b/patches.drm/0941-drm-ast-free-container-instead-of-member-in-ast_user_framebuffer_destroy
index e851832e39..fe9a347637 100644
--- a/patches.drm/drm-ast-Free-container-instead-of-member-in-ast_user_framebuffer_destroy.patch
+++ b/patches.drm/0941-drm-ast-free-container-instead-of-member-in-ast_user_framebuffer_destroy
@@ -4,7 +4,8 @@ Date: Tue, 18 Jul 2017 16:47:37 +0200
Message-Id: <20170718144740.9048-3-tiwai@suse.de>
Subject: [PATCH 2/5] drm/ast: Free container instead of member in
ast_user_framebuffer_destroy()
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: f3b91060b5e4ae89fb7132b9e8e1958b829ddc22
+Patch-mainline: v4.14-rc1
References: bnc#895608 bnc#871134
Technically freeing ast_fb->base is the same as freeing ast_fb as 'base'
diff --git a/patches.drm/drm-ast-Fix-memleak-in-error-path-in-ast_bo_create.patch b/patches.drm/0942-drm-ast-fix-memleak-in-error-path-in-ast_bo_create
index d45eeb6d20..5814b497d5 100644
--- a/patches.drm/drm-ast-Fix-memleak-in-error-path-in-ast_bo_create.patch
+++ b/patches.drm/0942-drm-ast-fix-memleak-in-error-path-in-ast_bo_create
@@ -3,7 +3,8 @@ From: Egbert Eich <eich@suse.de>
Date: Tue, 18 Jul 2017 16:47:38 +0200
Message-Id: <20170718144740.9048-4-tiwai@suse.de>
Subject: [PATCH 3/5] drm/ast: Fix memleak in error path in ast_bo_create()
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: b2d44e23818a72ded7b8e9a08d46d532f0148465
+Patch-mainline: v4.14-rc1
References: bnc#895608 bnc#871134
The allocated struct ast_bo was not freed in all error paths.
diff --git a/patches.drm/drm-ast-Add-an-crtc_disable-callback-to-the-crtc-helper-funcs.patch b/patches.drm/0943-drm-ast-add-an-crtc_disable-callback-to-the-crtc-helper-funcs
index 141cd78ffa..4dae863398 100644
--- a/patches.drm/drm-ast-Add-an-crtc_disable-callback-to-the-crtc-helper-funcs.patch
+++ b/patches.drm/0943-drm-ast-add-an-crtc_disable-callback-to-the-crtc-helper-funcs
@@ -4,7 +4,8 @@ Date: Tue, 18 Jul 2017 16:47:39 +0200
Message-Id: <20170718144740.9048-5-tiwai@suse.de>
Subject: [PATCH 4/5] drm/ast: Add an crtc_disable callback to the crtc helper
funcs
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: ab209c32f5df862d7255640ad61d1d293299f2d7
+Patch-mainline: v4.14-rc1
References: bnc#895608 bnc#871134
Implement the proper CRTC disablement, just like done in mgag200
diff --git a/patches.drm/drm-ast-Actually-load-DP501-firmware-when-required.patch b/patches.drm/0944-drm-ast-actually-load-dp501-firmware-when-required
index aee786820f..5716037c91 100644
--- a/patches.drm/drm-ast-Actually-load-DP501-firmware-when-required.patch
+++ b/patches.drm/0944-drm-ast-actually-load-dp501-firmware-when-required
@@ -3,7 +3,8 @@ From: Egbert Eich <eich@suse.de>
Date: Tue, 18 Jul 2017 16:47:40 +0200
Message-Id: <20170718144740.9048-6-tiwai@suse.de>
Subject: [PATCH 5/5] drm/ast: Actually load DP501 firmware when required
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: 12f8030e05c6c24b89b38838fe22257a9b5331f9
+Patch-mainline: v4.14-rc1
References: bnc#895608 bnc#871134
The ast driver has a code to load the DP501 firmware, but it's never
diff --git a/patches.drm/drm-radeon-limit-bpp-for-low-vram.patch b/patches.drm/1070-drm-radeon-set-depth-on-low-mem-to-16-bpp-instead-of-8-bpp
index 31cf98ef6b..03c724a40f 100644
--- a/patches.drm/drm-radeon-limit-bpp-for-low-vram.patch
+++ b/patches.drm/1070-drm-radeon-set-depth-on-low-mem-to-16-bpp-instead-of-8-bpp
@@ -3,7 +3,8 @@ From: Egbert Eich <eich@suse.de>
Date: Tue, 18 Jul 2017 17:20:53 +0200
Message-Id: <20170718152053.15050-1-tiwai@suse.de>
Subject: [PATCH] drm/radeon: Set depth on low mem to 16 bpp instead of 8 bpp
-Patch-mainline: Submitted, dri-devel ML
+Git-commit: 7b8bd6bb4298ac7c9aeb7ecab9e4864da3272b64
+Patch-mainline: v4.14-rc1
References: bnc#746883
The radeon driver reduces the framebuffer resolution to 8bpp if a
diff --git a/patches.arch/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch b/patches.drm/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch
index 5fc86b4d55..5fc86b4d55 100644
--- a/patches.arch/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch
+++ b/patches.drm/29-x86-drm-fbdev-do-not-specify-encrypted-memory-for-video-mappings.patch
diff --git a/patches.drm/drm-Add-DRM-client-cap-for-aspect-ratio b/patches.drm/6515-drm-add-drm-client-cap-for-aspect-ratio
index 35d0ead57d..35d0ead57d 100644
--- a/patches.drm/drm-Add-DRM-client-cap-for-aspect-ratio
+++ b/patches.drm/6515-drm-add-drm-client-cap-for-aspect-ratio
diff --git a/patches.drm/drm-Handle-aspect-ratio-info-in-legacy-modeset-path b/patches.drm/6516-drm-handle-aspect-ratio-info-in-legacy-modeset-path
index 498466b657..498466b657 100644
--- a/patches.drm/drm-Handle-aspect-ratio-info-in-legacy-modeset-path
+++ b/patches.drm/6516-drm-handle-aspect-ratio-info-in-legacy-modeset-path
diff --git a/patches.drm/drm-Expose-modes-with-aspect-ratio-only-if-requested b/patches.drm/6517-drm-expose-modes-with-aspect-ratio-only-if-requested
index 6bb3e7cfef..6bb3e7cfef 100644
--- a/patches.drm/drm-Expose-modes-with-aspect-ratio-only-if-requested
+++ b/patches.drm/6517-drm-expose-modes-with-aspect-ratio-only-if-requested
diff --git a/patches.drm/drm-Add-aspect-ratio-parsing-in-DRM-layer b/patches.drm/6518-drm-add-aspect-ratio-parsing-in-drm-layer
index a47ec817df..a47ec817df 100644
--- a/patches.drm/drm-Add-aspect-ratio-parsing-in-DRM-layer
+++ b/patches.drm/6518-drm-add-aspect-ratio-parsing-in-drm-layer
diff --git a/patches.drm/drm-Add-and-handle-new-aspect-ratios-in-DRM-layer b/patches.drm/6519-drm-add-and-handle-new-aspect-ratios-in-drm-layer
index a14cfaa671..a14cfaa671 100644
--- a/patches.drm/drm-Add-and-handle-new-aspect-ratios-in-DRM-layer
+++ b/patches.drm/6519-drm-add-and-handle-new-aspect-ratios-in-drm-layer
diff --git a/patches.drm/0001-drm-i915-audio-Hook-up-component-bindings-even-if-di.patch b/patches.drm/8855-drm-i915-audio-hook-up-component-bindings-even-if-displays-are-disabled
index 986008824a..694b03d06e 100644
--- a/patches.drm/0001-drm-i915-audio-Hook-up-component-bindings-even-if-di.patch
+++ b/patches.drm/8855-drm-i915-audio-hook-up-component-bindings-even-if-displays-are-disabled
@@ -3,9 +3,10 @@ From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 17 Aug 2018 11:02:41 +0100
Subject: drm/i915/audio: Hook up component bindings even if displays are
disabled
-Git-commit: 35a5fd9ebfa93758ca579e30f337b6c9126d995b
+Git-commit: 80ab316901bc4ae6dd0b5903dbe22766307eac9b
Patch-mainline: v4.20-rc1
References: bsc#1113722
+No-fix: 35a5fd9ebfa93758ca579e30f337b6c9126d995b
If the display has been disabled by modparam, we still want to connect
together the HW bits and bobs with the associated drivers so that we can
diff --git a/patches.drivers/ALSA-hda-Drop-useless-WARN_ON b/patches.drm/ALSA-hda-Drop-useless-WARN_ON
index 1ed7f4a254..1ed7f4a254 100644
--- a/patches.drivers/ALSA-hda-Drop-useless-WARN_ON
+++ b/patches.drm/ALSA-hda-Drop-useless-WARN_ON
diff --git a/patches.drm/drm-i915-gvt-Annotate-iomem-usage.patch b/patches.drm/drm-i915-gvt-Annotate-iomem-usage.patch
new file mode 100644
index 0000000000..77d589b48d
--- /dev/null
+++ b/patches.drm/drm-i915-gvt-Annotate-iomem-usage.patch
@@ -0,0 +1,53 @@
+From 196a66275520ffc27513c56ecc06a2d9450fd12f Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 4 Apr 2019 08:14:25 +0100
+Subject: [PATCH] drm/i915/gvt: Annotate iomem usage
+Git-commit: 196a66275520ffc27513c56ecc06a2d9450fd12f
+Patch-mainline: v5.1-rc5
+References: bsc#1051510
+
+Fix the sparse warning for blithely using iomem with normal memcpy:
+
+drivers/gpu/drm/i915/gvt/kvmgt.c:916:21: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/i915/gvt/kvmgt.c:916:21: expected void *aperture_va
+drivers/gpu/drm/i915/gvt/kvmgt.c:916:21: got void [noderef] <asn:2> *
+drivers/gpu/drm/i915/gvt/kvmgt.c:927:26: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/gvt/kvmgt.c:927:26: expected void [noderef] <asn:2> *vaddr
+drivers/gpu/drm/i915/gvt/kvmgt.c:927:26: got void *aperture_va
+
+Fixes: d480b28a41a6 ("drm/i915/gvt: Fix aperture read/write emulation when enable x-no-mmap=on")
+Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
+Cc: Changbin Du <changbin.du@intel.com>
+Cc: Zhi Wang <zhi.a.wang@intel.com>
+Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/i915/gvt/kvmgt.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
++++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
+@@ -641,7 +641,7 @@ static inline bool intel_vgpu_in_apertur
+ static int intel_vgpu_aperture_rw(struct intel_vgpu *vgpu, uint64_t off,
+ void *buf, unsigned long count, bool is_write)
+ {
+- void *aperture_va;
++ void __iomem *aperture_va;
+
+ if (!intel_vgpu_in_aperture(vgpu, off) ||
+ !intel_vgpu_in_aperture(vgpu, off + count)) {
+@@ -656,9 +656,9 @@ static int intel_vgpu_aperture_rw(struct
+ return -EIO;
+
+ if (is_write)
+- memcpy(aperture_va + offset_in_page(off), buf, count);
++ memcpy_toio(aperture_va + offset_in_page(off), buf, count);
+ else
+- memcpy(buf, aperture_va + offset_in_page(off), count);
++ memcpy_fromio(buf, aperture_va + offset_in_page(off), count);
+
+ io_mapping_unmap(aperture_va);
+
diff --git a/patches.drm/drm-nouveau-volt-gf117-fix-speedo-readout-register.patch b/patches.drm/drm-nouveau-volt-gf117-fix-speedo-readout-register.patch
new file mode 100644
index 0000000000..02161258b6
--- /dev/null
+++ b/patches.drm/drm-nouveau-volt-gf117-fix-speedo-readout-register.patch
@@ -0,0 +1,130 @@
+From fc782242749fa4235592854fafe1a1297583c1fb Mon Sep 17 00:00:00 2001
+From: Ilia Mirkin <imirkin@alum.mit.edu>
+Date: Sun, 13 Jan 2019 17:50:10 -0500
+Subject: [PATCH] drm/nouveau/volt/gf117: fix speedo readout register
+Git-commit: fc782242749fa4235592854fafe1a1297583c1fb
+Patch-mainline: v5.1-rc1
+References: bsc#1051510
+
+GF117 appears to use the same register as GK104 (but still with the
+general Fermi readout mechanism).
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108980
+Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 2 +-
+ drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild | 1 +
+ drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c | 60 ++++++++++++++++++++++
+ 4 files changed, 63 insertions(+), 1 deletion(-)
+ create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c
+
+diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
+index 8a0f85f5fc1a..6a765682fbfa 100644
+--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
++++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h
+@@ -38,6 +38,7 @@ int nvkm_volt_set_id(struct nvkm_volt *, u8 id, u8 min_id, u8 temp,
+
+ int nv40_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
+ int gf100_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
++int gf117_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
+ int gk104_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
+ int gk20a_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
+ int gm20b_volt_new(struct nvkm_device *, int, struct nvkm_volt **);
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
+index d9edb5785813..d75fa7678483 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
+@@ -1613,7 +1613,7 @@ nvd7_chipset = {
+ .pci = gf106_pci_new,
+ .therm = gf119_therm_new,
+ .timer = nv41_timer_new,
+- .volt = gf100_volt_new,
++ .volt = gf117_volt_new,
+ .ce[0] = gf100_ce_new,
+ .disp = gf119_disp_new,
+ .dma = gf119_dma_new,
+diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild
+index bcd179ba11d0..146adcdd316a 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild
+@@ -2,6 +2,7 @@ nvkm-y += nvkm/subdev/volt/base.o
+ nvkm-y += nvkm/subdev/volt/gpio.o
+ nvkm-y += nvkm/subdev/volt/nv40.o
+ nvkm-y += nvkm/subdev/volt/gf100.o
++nvkm-y += nvkm/subdev/volt/gf117.o
+ nvkm-y += nvkm/subdev/volt/gk104.o
+ nvkm-y += nvkm/subdev/volt/gk20a.o
+ nvkm-y += nvkm/subdev/volt/gm20b.o
+diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c
+new file mode 100644
+index 000000000000..547a58f0aeac
+--- /dev/null
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c
+@@ -0,0 +1,60 @@
++/*
++ * Copyright 2019 Ilia Mirkin
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Authors: Ilia Mirkin
++ */
++#include "priv.h"
++
++#include <subdev/fuse.h>
++
++static int
++gf117_volt_speedo_read(struct nvkm_volt *volt)
++{
++ struct nvkm_device *device = volt->subdev.device;
++ struct nvkm_fuse *fuse = device->fuse;
++
++ if (!fuse)
++ return -EINVAL;
++
++ return nvkm_fuse_read(fuse, 0x3a8);
++}
++
++static const struct nvkm_volt_func
++gf117_volt = {
++ .oneinit = gf100_volt_oneinit,
++ .vid_get = nvkm_voltgpio_get,
++ .vid_set = nvkm_voltgpio_set,
++ .speedo_read = gf117_volt_speedo_read,
++};
++
++int
++gf117_volt_new(struct nvkm_device *device, int index, struct nvkm_volt **pvolt)
++{
++ struct nvkm_volt *volt;
++ int ret;
++
++ ret = nvkm_volt_new_(&gf117_volt, device, index, &volt);
++ *pvolt = volt;
++ if (ret)
++ return ret;
++
++ return nvkm_voltgpio_init(volt);
++}
+--
+2.16.4
+
diff --git a/patches.drivers/x86-early-quirks-export-the-stolen-region-as-a-resou b/patches.drm/x86-early-quirks-export-the-stolen-region-as-a-resou
index 3052c62785..3052c62785 100644
--- a/patches.drivers/x86-early-quirks-export-the-stolen-region-as-a-resou
+++ b/patches.drm/x86-early-quirks-export-the-stolen-region-as-a-resou
diff --git a/patches.drivers/x86-gpu-add-CFL-to-early-quirks b/patches.drm/x86-gpu-add-CFL-to-early-quirks
index e70b4468ad..e70b4468ad 100644
--- a/patches.drivers/x86-gpu-add-CFL-to-early-quirks
+++ b/patches.drm/x86-gpu-add-CFL-to-early-quirks
diff --git a/patches.fixes/0001-PCI-pciehp-Convert-to-threaded-IRQ.patch b/patches.fixes/0001-PCI-pciehp-Convert-to-threaded-IRQ.patch
new file mode 100644
index 0000000000..73d3b0c6c8
--- /dev/null
+++ b/patches.fixes/0001-PCI-pciehp-Convert-to-threaded-IRQ.patch
@@ -0,0 +1,209 @@
+From 7b4ce26bcf697e3a4aa9ba2a5b456562e0fb7af4 Mon Sep 17 00:00:00 2001
+From: Lukas Wunner <lukas@wunner.de>
+Date: Thu, 19 Jul 2018 17:27:38 -0500
+Subject: [PATCH] PCI: pciehp: Convert to threaded IRQ
+Git-commit: 7b4ce26bcf697e3a4aa9ba2a5b456562e0fb7af4
+Patch-mainline: v4.19
+References: bsc#1133005
+
+pciehp's IRQ handler queues up a work item for each event signaled by
+the hardware. A more modern alternative is to let a long running
+kthread service the events. The IRQ handler's sole job is then to check
+whether the IRQ originated from the device in question, acknowledge its
+receipt to the hardware to quiesce the interrupt and wake up the kthread.
+
+One benefit is reduced latency to handle the IRQ, which is a necessity
+for realtime environments. Another benefit is that we can make pciehp
+simpler and more robust by handling events synchronously in process
+context, rather than asynchronously by queueing up work items. pciehp's
+usage of work items is a historic artifact, it predates the introduction
+of threaded IRQ handlers by two years. (The former was introduced in
+2007 with commit 5d386e1ac402 ("pciehp: Event handling rework"), the
+latter in 2009 with commit 3aa551c9b4c4 ("genirq: add threaded interrupt
+handler support").)
+
+Convert pciehp to threaded IRQ handling by retrieving the pending events
+in pciehp_isr(), saving them for later consumption by the thread handler
+pciehp_ist() and clearing them in the Slot Status register.
+
+By clearing the Slot Status (and thereby acknowledging the events) in
+pciehp_isr(), we can avoid requesting the IRQ with IRQF_ONESHOT, which
+would have the unpleasant side effect of starving devices sharing the
+IRQ until pciehp_ist() has finished.
+
+pciehp_isr() does not count how many times each event occurred, but
+merely records the fact *that* an event occurred. If the same event
+occurs a second time before pciehp_ist() is woken, that second event
+will not be recorded separately, which is problematic according to
+commit fad214b0aa72 ("PCI: pciehp: Process all hotplug events before
+looking for new ones") because we may miss removal of a card in-between
+two back-to-back insertions. We're about to make pciehp_ist() resilient
+to missed events. The present commit regresses the driver's behavior
+temporarily in order to separate the changes into reviewable chunks.
+This doesn't affect regular slow-motion hotplug, only plug-unplug-plug
+operations that happen in a timespan shorter than wakeup of the IRQ
+thread.
+
+Signed-off-by: Lukas Wunner <lukas@wunner.de>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Mayurkumar Patel <mayurkumar.patel@intel.com>
+Cc: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
+Signed-off-by: Oliver Neukum <oneukum@suse.com>
+---
+ drivers/pci/hotplug/pciehp.h | 1
+ drivers/pci/hotplug/pciehp_hpc.c | 70 +++++++++++++++++++++------------------
+ 2 files changed, 39 insertions(+), 32 deletions(-)
+
+--- a/drivers/pci/hotplug/pciehp.h
++++ b/drivers/pci/hotplug/pciehp.h
+@@ -99,6 +99,7 @@ struct controller {
+ unsigned int link_active_reporting:1;
+ unsigned int notification_enabled:1;
+ unsigned int power_fault_detected;
++ atomic_t pending_events;
+ };
+
+ #define INT_PRESENCE_ON 1
+--- a/drivers/pci/hotplug/pciehp_hpc.c
++++ b/drivers/pci/hotplug/pciehp_hpc.c
+@@ -46,7 +46,8 @@ static inline struct pci_dev *ctrl_dev(s
+ return ctrl->pcie->port;
+ }
+
+-static irqreturn_t pcie_isr(int irq, void *dev_id);
++static irqreturn_t pciehp_isr(int irq, void *dev_id);
++static irqreturn_t pciehp_ist(int irq, void *dev_id);
+ static void start_int_poll_timer(struct controller *ctrl, int sec);
+
+ /* This is the interrupt polling timeout function. */
+@@ -55,7 +56,8 @@ static void int_poll_timeout(unsigned lo
+ struct controller *ctrl = (struct controller *)data;
+
+ /* Poll for interrupt events. regs == NULL => polling */
+- pcie_isr(0, ctrl);
++ while (pciehp_isr(IRQ_NOTCONNECTED, ctrl) == IRQ_WAKE_THREAD)
++ pciehp_ist(IRQ_NOTCONNECTED, ctrl);
+
+ init_timer(&ctrl->poll_timer);
+ if (!pciehp_poll_time)
+@@ -89,7 +91,8 @@ static inline int pciehp_request_irq(str
+ }
+
+ /* Installs the interrupt handler */
+- retval = request_irq(irq, pcie_isr, IRQF_SHARED, MY_NAME, ctrl);
++ retval = request_threaded_irq(irq, pciehp_isr, pciehp_ist,
++ IRQF_SHARED, MY_NAME, ctrl);
+ if (retval)
+ ctrl_err(ctrl, "Cannot get irq %d for the hotplug controller\n",
+ irq);
+@@ -562,12 +565,11 @@ static irqreturn_t pciehp_isr(int irq, v
+ {
+ struct controller *ctrl = (struct controller *)dev_id;
+ struct pci_dev *pdev = ctrl_dev(ctrl);
+- struct slot *slot = ctrl->slot;
+ u16 status, events;
+- u8 present;
+- bool link;
+
+- /* Interrupts cannot originate from a controller that's asleep */
++ /*
++ * Interrupts only occur in D3hot or shallower (PCIe r4.0, sec 6.7.3.4).
++ */
+ if (pdev->current_state == PCI_D3cold)
+ return IRQ_NONE;
+
+@@ -595,18 +597,22 @@ static irqreturn_t pciehp_isr(int irq, v
+ if (!events)
+ return IRQ_NONE;
+
+- /* Capture link status before clearing interrupts */
+- if (events & PCI_EXP_SLTSTA_DLLSC)
+- link = pciehp_check_link_active(ctrl);
+-
+ pcie_capability_write_word(pdev, PCI_EXP_SLTSTA, events);
+ ctrl_dbg(ctrl, "pending interrupts %#06x from Slot Status\n", events);
+
+- /* Check Command Complete Interrupt Pending */
++ /*
++ * Command Completed notifications are not deferred to the
++ * IRQ thread because it may be waiting for their arrival.
++ */
+ if (events & PCI_EXP_SLTSTA_CC) {
+ ctrl->cmd_busy = 0;
+ smp_mb();
+ wake_up(&ctrl->queue);
++
++ if (events == PCI_EXP_SLTSTA_CC)
++ return IRQ_HANDLED;
++
++ events &= ~PCI_EXP_SLTSTA_CC;
+ }
+
+ if (pdev->ignore_hotplug) {
+@@ -614,6 +620,24 @@ static irqreturn_t pciehp_isr(int irq, v
+ return IRQ_HANDLED;
+ }
+
++ /* Save pending events for consumption by IRQ thread. */
++ atomic_or(events, &ctrl->pending_events);
++ return IRQ_WAKE_THREAD;
++}
++
++static irqreturn_t pciehp_ist(int irq, void *dev_id)
++{
++ struct controller *ctrl = (struct controller *)dev_id;
++ struct slot *slot = ctrl->slot;
++ u32 events;
++ u8 present;
++ bool link;
++
++ synchronize_hardirq(irq);
++ events = atomic_xchg(&ctrl->pending_events, 0);
++ if (!events)
++ return IRQ_NONE;
++
+ /* Check Attention Button Pressed */
+ if (events & PCI_EXP_SLTSTA_ABP) {
+ ctrl_info(ctrl, "Slot(%s): Attention button pressed\n",
+@@ -628,12 +652,13 @@ static irqreturn_t pciehp_isr(int irq, v
+ * and cause the wrong event to queue.
+ */
+ if (events & PCI_EXP_SLTSTA_DLLSC) {
++ link = pciehp_check_link_active(ctrl);
+ ctrl_info(ctrl, "Slot(%s): Link %s\n", slot_name(slot),
+ link ? "Up" : "Down");
+ pciehp_queue_interrupt_event(slot, link ? INT_LINK_UP :
+ INT_LINK_DOWN);
+ } else if (events & PCI_EXP_SLTSTA_PDC) {
+- present = !!(status & PCI_EXP_SLTSTA_PDS);
++ pciehp_get_adapter_status(slot, &present);
+ ctrl_info(ctrl, "Slot(%s): Card %spresent\n", slot_name(slot),
+ present ? "" : "not ");
+ pciehp_queue_interrupt_event(slot, present ? INT_PRESENCE_ON :
+@@ -650,25 +675,6 @@ static irqreturn_t pciehp_isr(int irq, v
+ return IRQ_HANDLED;
+ }
+
+-static irqreturn_t pcie_isr(int irq, void *dev_id)
+-{
+- irqreturn_t rc, handled = IRQ_NONE;
+-
+- /*
+- * To guarantee that all interrupt events are serviced, we need to
+- * re-inspect Slot Status register after clearing what is presumed
+- * to be the last pending interrupt.
+- */
+- do {
+- rc = pciehp_isr(irq, dev_id);
+- if (rc == IRQ_HANDLED)
+- handled = IRQ_HANDLED;
+- } while (rc == IRQ_HANDLED);
+-
+- /* Return IRQ_HANDLED if we handled one or more events */
+- return handled;
+-}
+-
+ static void pcie_enable_notification(struct controller *ctrl)
+ {
+ u16 cmd, mask;
diff --git a/patches.fixes/0001-PCI-pciehp-Ignore-Link-State-Changes-after-powering-.patch b/patches.fixes/0001-PCI-pciehp-Ignore-Link-State-Changes-after-powering-.patch
new file mode 100644
index 0000000000..597efd504a
--- /dev/null
+++ b/patches.fixes/0001-PCI-pciehp-Ignore-Link-State-Changes-after-powering-.patch
@@ -0,0 +1,54 @@
+From 3943af9d01e94330d0cfac6fccdbc829aad50c92 Mon Sep 17 00:00:00 2001
+From: Sergey Miroshnichenko <s.miroshnichenko@yadro.com>
+Date: Tue, 12 Mar 2019 15:05:48 +0300
+Subject: [PATCH] PCI: pciehp: Ignore Link State Changes after powering off a
+ slot
+Git-commit: 3943af9d01e94330d0cfac6fccdbc829aad50c92
+Patch-mainline: v5.1-rc5
+References: bsc#1133005
+
+During a safe hot remove, the OS powers off the slot, which may cause a
+Data Link Layer State Changed event. The slot has already been set to
+OFF_STATE, so that event results in re-enabling the device, making it
+impossible to safely remove it.
+
+Clear out the Presence Detect Changed and Data Link Layer State Changed
+events when the disabled slot has settled down.
+
+It is still possible to re-enable the device if it remains in the slot
+after pressing the Attention Button by pressing it again.
+
+Fixes the problem that Micah reported below: an NVMe drive power button may
+not actually turn off the drive.
+
+Link: https://bugzilla.kernel.org/show_bug.cgi?id=203237
+Reported-by: Micah Parrish <micah.parrish@hpe.com>
+Tested-by: Micah Parrish <micah.parrish@hpe.com>
+Signed-off-by: Sergey Miroshnichenko <s.miroshnichenko@yadro.com>
+[bhelgaas: changelog, add bugzilla URL]
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: Lukas Wunner <lukas@wunner.de>
+Cc: stable@vger.kernel.org # v4.19+
+Signed-off-by: Oliver Neukum <oneukum@suse.com>
+---
+ drivers/pci/hotplug/pciehp_ctrl.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
+index 3f3df4c29f6e..905282a8ddaa 100644
+--- a/drivers/pci/hotplug/pciehp_ctrl.c
++++ b/drivers/pci/hotplug/pciehp_ctrl.c
+@@ -115,6 +115,10 @@ static void remove_board(struct controller *ctrl, bool safe_removal)
+ * removed from the slot/adapter.
+ */
+ msleep(1000);
++
++ /* Ignore link or presence changes caused by power off */
++ atomic_and(~(PCI_EXP_SLTSTA_DLLSC | PCI_EXP_SLTSTA_PDC),
++ &ctrl->pending_events);
+ }
+
+ /* turn off Green LED */
+--
+2.16.4
+
diff --git a/patches.fixes/0001-RDMA-iw_cxgb4-Drop-__GFP_NOFAIL.patch b/patches.fixes/0001-RDMA-iw_cxgb4-Drop-__GFP_NOFAIL.patch
new file mode 100644
index 0000000000..12e0cbd62b
--- /dev/null
+++ b/patches.fixes/0001-RDMA-iw_cxgb4-Drop-__GFP_NOFAIL.patch
@@ -0,0 +1,34 @@
+From: Jason Gunthorpe <jgg@mellanox.com>
+Subject: RDMA/iw_cxgb4: Drop __GFP_NOFAIL
+Patch-mainline: v5.1-rc1
+Git-commit: 8ba0ddd09406e35782259f2ac18187ec77d8c093
+References: bsc#1127371
+
+There is no reason for this __GFP_NOFAIL, none of the other routines in
+this file use it, and there is an error unwind here. NOFAIL should be
+reserved for special cases, not used by network drivers.
+
+Fixes: 6a0b6174d35a ("rdma/cxgb4: Add support for kernel mode SRQ's")
+Reported-by: Nicholas Mc Guire <hofrat@osadl.org>
+Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/infiniband/hw/cxgb4/qp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
+index 03f4c66c2659..c00a41144126 100644
+--- a/drivers/infiniband/hw/cxgb4/qp.c
++++ b/drivers/infiniband/hw/cxgb4/qp.c
+@@ -2597,7 +2597,7 @@ static int alloc_srq_queue(struct c4iw_srq *srq, struct c4iw_dev_ucontext *uctx,
+ /* build fw_ri_res_wr */
+ wr_len = sizeof(*res_wr) + sizeof(*res);
+
+- skb = alloc_skb(wr_len, GFP_KERNEL | __GFP_NOFAIL);
++ skb = alloc_skb(wr_len, GFP_KERNEL);
+ if (!skb)
+ goto err_free_queue;
+ set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-capability-to-get-set-SGE-Doorbell-Queue-T.patch b/patches.fixes/0001-cxgb4-Add-capability-to-get-set-SGE-Doorbell-Queue-T.patch
new file mode 100644
index 0000000000..bed21b6b92
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-capability-to-get-set-SGE-Doorbell-Queue-T.patch
@@ -0,0 +1,268 @@
+From: Vishal Kulkarni <vishal@chelsio.com>
+Subject: cxgb4: Add capability to get/set SGE Doorbell Queue Timer
+ Tick
+Patch-mainline: v5.1-rc1
+Git-commit: 543a1b85e734d2ec62e5df61641e8ea7349de4a8
+References: bsc#1127371
+
+This patch gets/sets SGE Doorbell Queue timer ticks via ethtool
+
+Original work by: Casey Leedom <leedom@chelsio.com>
+
+Signed-off-by: Vishal Kulkarni <vishal@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 189 ++++++++++++++++++++-
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 14 +-
+ 3 files changed, 198 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 2e68b6d0376b..240f5c7ad170 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -810,6 +810,7 @@ struct sge {
+ u32 fl_align; /* response queue message alignment */
+ u32 fl_starve_thres; /* Free List starvation threshold */
+
++ u16 dbqtimer_tick;
+ struct sge_idma_monitor_state idma_monitor;
+ unsigned int egr_start;
+ unsigned int egr_sz;
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
+index 20083b4f72c4..16f018d85eae 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
+@@ -1044,11 +1044,190 @@ static int get_adaptive_rx_setting(struct net_device *dev)
+ return q->rspq.adaptive_rx;
+ }
+
+-static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
++/* Return the current global Adapter SGE Doorbell Queue Timer Tick for all
++ * Ethernet TX Queues.
++ */
++static int get_dbqtimer_tick(struct net_device *dev)
++{
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adap = pi->adapter;
++
++ if (!(adap->flags & SGE_DBQ_TIMER))
++ return 0;
++
++ return adap->sge.dbqtimer_tick;
++}
++
++/* Return the SGE Doorbell Queue Timer Value for the Ethernet TX Queues
++ * associated with a Network Device.
++ */
++static int get_dbqtimer(struct net_device *dev)
++{
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adap = pi->adapter;
++ struct sge_eth_txq *txq;
++
++ txq = &adap->sge.ethtxq[pi->first_qset];
++
++ if (!(adap->flags & SGE_DBQ_TIMER))
++ return 0;
++
++ /* all of the TX Queues use the same Timer Index */
++ return adap->sge.dbqtimer_val[txq->dbqtimerix];
++}
++
++/* Set the global Adapter SGE Doorbell Queue Timer Tick for all Ethernet TX
++ * Queues. This is the fundamental "Tick" that sets the scale of values which
++ * can be used. Individual Ethernet TX Queues index into a relatively small
++ * array of Tick Multipliers. Changing the base Tick will thus change all of
++ * the resulting Timer Values associated with those multipliers for all
++ * Ethernet TX Queues.
++ */
++static int set_dbqtimer_tick(struct net_device *dev, int usecs)
++{
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adap = pi->adapter;
++ struct sge *s = &adap->sge;
++ u32 param, val;
++ int ret;
++
++ if (!(adap->flags & SGE_DBQ_TIMER))
++ return 0;
++
++ /* return early if it's the same Timer Tick we're already using */
++ if (s->dbqtimer_tick == usecs)
++ return 0;
++
++ /* attempt to set the new Timer Tick value */
++ param = (FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DEV) |
++ FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DEV_DBQ_TIMERTICK));
++ val = usecs;
++ ret = t4_set_params(adap, adap->mbox, adap->pf, 0, 1, &param, &val);
++ if (ret)
++ return ret;
++ s->dbqtimer_tick = usecs;
++
++ /* if successful, reread resulting dependent Timer values */
++ ret = t4_read_sge_dbqtimers(adap, ARRAY_SIZE(s->dbqtimer_val),
++ s->dbqtimer_val);
++ return ret;
++}
++
++/* Set the SGE Doorbell Queue Timer Value for the Ethernet TX Queues
++ * associated with a Network Device. There is a relatively small array of
++ * possible Timer Values so we need to pick the closest value available.
++ */
++static int set_dbqtimer(struct net_device *dev, int usecs)
++{
++ int qix, timerix, min_timerix, delta, min_delta;
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adap = pi->adapter;
++ struct sge *s = &adap->sge;
++ struct sge_eth_txq *txq;
++ u32 param, val;
++ int ret;
++
++ if (!(adap->flags & SGE_DBQ_TIMER))
++ return 0;
++
++ /* Find the SGE Doorbell Timer Value that's closest to the requested
++ * value.
++ */
++ min_delta = INT_MAX;
++ min_timerix = 0;
++ for (timerix = 0; timerix < ARRAY_SIZE(s->dbqtimer_val); timerix++) {
++ delta = s->dbqtimer_val[timerix] - usecs;
++ if (delta < 0)
++ delta = -delta;
++ if (delta < min_delta) {
++ min_delta = delta;
++ min_timerix = timerix;
++ }
++ }
++
++ /* Return early if it's the same Timer Index we're already using.
++ * We use the same Timer Index for all of the TX Queues for an
++ * interface so it's only necessary to check the first one.
++ */
++ txq = &s->ethtxq[pi->first_qset];
++ if (txq->dbqtimerix == min_timerix)
++ return 0;
++
++ for (qix = 0; qix < pi->nqsets; qix++, txq++) {
++ if (adap->flags & FULL_INIT_DONE) {
++ param =
++ (FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DMAQ) |
++ FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DMAQ_EQ_TIMERIX) |
++ FW_PARAMS_PARAM_YZ_V(txq->q.cntxt_id));
++ val = min_timerix;
++ ret = t4_set_params(adap, adap->mbox, adap->pf, 0,
++ 1, &param, &val);
++ if (ret)
++ return ret;
++ }
++ txq->dbqtimerix = min_timerix;
++ }
++ return 0;
++}
++
++/* Set the global Adapter SGE Doorbell Queue Timer Tick for all Ethernet TX
++ * Queues and the Timer Value for the Ethernet TX Queues associated with a
++ * Network Device. Since changing the global Tick changes all of the
++ * available Timer Values, we need to do this first before selecting the
++ * resulting closest Timer Value. Moreover, since the Tick is global,
++ * changing it affects the Timer Values for all Network Devices on the
++ * adapter. So, before changing the Tick, we grab all of the current Timer
++ * Values for other Network Devices on this Adapter and then attempt to select
++ * new Timer Values which are close to the old values ...
++ */
++static int set_dbqtimer_tickval(struct net_device *dev,
++ int tick_usecs, int timer_usecs)
++{
++ struct port_info *pi = netdev_priv(dev);
++ struct adapter *adap = pi->adapter;
++ int timer[MAX_NPORTS];
++ unsigned int port;
++ int ret;
++
++ /* Grab the other adapter Network Interface current timers and fill in
++ * the new one for this Network Interface.
++ */
++ for_each_port(adap, port)
++ if (port == pi->port_id)
++ timer[port] = timer_usecs;
++ else
++ timer[port] = get_dbqtimer(adap->port[port]);
++
++ /* Change the global Tick first ... */
++ ret = set_dbqtimer_tick(dev, tick_usecs);
++ if (ret)
++ return ret;
++
++ /* ... and then set all of the Network Interface Timer Values ... */
++ for_each_port(adap, port) {
++ ret = set_dbqtimer(adap->port[port], timer[port]);
++ if (ret)
++ return ret;
++ }
++
++ return 0;
++}
++
++static int set_coalesce(struct net_device *dev,
++ struct ethtool_coalesce *coalesce)
+ {
+- set_adaptive_rx_setting(dev, c->use_adaptive_rx_coalesce);
+- return set_rx_intr_params(dev, c->rx_coalesce_usecs,
+- c->rx_max_coalesced_frames);
++ int ret;
++
++ set_adaptive_rx_setting(dev, coalesce->use_adaptive_rx_coalesce);
++
++ ret = set_rx_intr_params(dev, coalesce->rx_coalesce_usecs,
++ coalesce->rx_max_coalesced_frames);
++ if (ret)
++ return ret;
++
++ return set_dbqtimer_tickval(dev,
++ coalesce->tx_coalesce_usecs_irq,
++ coalesce->tx_coalesce_usecs);
+ }
+
+ static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
+@@ -1061,6 +1240,8 @@ static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
+ c->rx_max_coalesced_frames = (rq->intr_params & QINTR_CNT_EN_F) ?
+ adap->sge.counter_val[rq->pktcnt_idx] : 0;
+ c->use_adaptive_rx_coalesce = get_adaptive_rx_setting(dev);
++ c->tx_coalesce_usecs_irq = get_dbqtimer_tick(dev);
++ c->tx_coalesce_usecs = get_dbqtimer(dev);
+ return 0;
+ }
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index 942bff1380c8..57fddf6c8881 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -4257,8 +4257,18 @@ static int adap_init0(struct adapter *adap)
+ /* Grab the SGE Doorbell Queue Timer values. If successful, that
+ * indicates that the Firmware and Hardware support this.
+ */
+- ret = t4_read_sge_dbqtimers(adap, ARRAY_SIZE(adap->sge.dbqtimer_val),
+- adap->sge.dbqtimer_val);
++ params[0] = (FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DEV) |
++ FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DEV_DBQ_TIMERTICK));
++ ret = t4_query_params(adap, adap->mbox, adap->pf, 0,
++ 1, params, val);
++
++ if (!ret) {
++ adap->sge.dbqtimer_tick = val[0];
++ ret = t4_read_sge_dbqtimers(adap,
++ ARRAY_SIZE(adap->sge.dbqtimer_val),
++ adap->sge.dbqtimer_val);
++ }
++
+ if (!ret)
+ adap->flags |= SGE_DBQ_TIMER;
+
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-flag-tc_flower_initialized.patch b/patches.fixes/0001-cxgb4-Add-flag-tc_flower_initialized.patch
new file mode 100644
index 0000000000..914d8067e1
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-flag-tc_flower_initialized.patch
@@ -0,0 +1,76 @@
+From: Casey Leedom <leedom@chelsio.com>
+Subject: cxgb4: Add flag tc_flower_initialized
+Patch-mainline: v4.19-rc1
+Git-commit: a081e11536a716da3fd2b09061e75c09e691b2f8
+References: bsc#1127371
+
+Add flag tc_flower_initialized to indicate the
+completion if tc flower initialization.
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 5 +++++
+ drivers/net/ethernet/chelsio/cxgb4/sched.c | 3 +++
+ 3 files changed, 9 insertions(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 534b4ecf02b5..779ff7b8d4e4 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -1001,6 +1001,7 @@ struct adapter {
+ struct chcr_stats_debug chcr_stats;
+
+ /* TC flower offload */
++ bool tc_flower_initialized;
+ struct rhashtable flower_tbl;
+ struct rhashtable_params flower_ht_params;
+ struct timer_list flower_stats_timer;
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
+index 3c0304f18acd..3cc39f83b722 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
+@@ -848,6 +848,9 @@ int cxgb4_init_tc_flower(struct adapter *adap)
+ {
+ int ret;
+
++ if (adap->tc_flower_initialized)
++ return -EEXIST;
++
+ adap->flower_ht_params = cxgb4_tc_flower_ht_params;
+ ret = rhashtable_init(&adap->flower_tbl, &adap->flower_ht_params);
+ if (ret)
+@@ -856,6 +859,7 @@ int cxgb4_init_tc_flower(struct adapter *adap)
+ setup_timer(&adap->flower_stats_timer, ch_flower_stats_cb,
+ (unsigned long)adap);
+ mod_timer(&adap->flower_stats_timer, jiffies + STATS_CHECK_PERIOD);
++ adap->tc_flower_initialized = true;
+ return 0;
+ }
+
+@@ -864,4 +868,5 @@ void cxgb4_cleanup_tc_flower(struct adapter *adap)
+ if (adap->flower_stats_timer.function)
+ del_timer_sync(&adap->flower_stats_timer);
+ rhashtable_destroy(&adap->flower_tbl);
++ adap->tc_flower_initialized = false;
+ }
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/sched.c b/drivers/net/ethernet/chelsio/cxgb4/sched.c
+index 9148abb7994c..7fc656680299 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/sched.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/sched.c
+@@ -539,6 +539,9 @@ void t4_cleanup_sched(struct adapter *adap)
+ struct port_info *pi = netdev2pinfo(adap->port[j]);
+
+ s = pi->sched_tbl;
++ if (!s)
++ continue;
++
+ for (i = 0; i < s->sched_size; i++) {
+ struct sched_class *e;
+
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-id-0x50ae.patch b/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-id-0x50ae.patch
new file mode 100644
index 0000000000..c8b0e7fc5b
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-id-0x50ae.patch
@@ -0,0 +1,28 @@
+From: Ganesh Goudar <ganeshgr@chelsio.com>
+Subject: cxgb4: Add new T5 PCI device id 0x50ae
+Patch-mainline: v4.19-rc1
+Git-commit: 964fc35c0910c7970120f893fa866e6b3468dcf0
+References: bsc#1127371
+
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+index c7f8d0441278..e3adf435913e 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+@@ -188,6 +188,7 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN
+ CH_PCI_ID_TABLE_FENTRY(0x50ab), /* Custom T520-CR */
+ CH_PCI_ID_TABLE_FENTRY(0x50ac), /* Custom T540-BT */
+ CH_PCI_ID_TABLE_FENTRY(0x50ad), /* Custom T520-CR */
++ CH_PCI_ID_TABLE_FENTRY(0x50ae), /* Custom T540-XL-SO */
+
+ /* T6 adapters:
+ */
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-ids-0x50af-and-0x50b0.patch b/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-ids-0x50af-and-0x50b0.patch
new file mode 100644
index 0000000000..9db68cc76a
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-new-T5-PCI-device-ids-0x50af-and-0x50b0.patch
@@ -0,0 +1,29 @@
+From: Ganesh Goudar <ganeshgr@chelsio.com>
+Subject: cxgb4: Add new T5 PCI device ids 0x50af and 0x50b0
+Patch-mainline: v4.19-rc1
+Git-commit: 6e24dcad021f82636709108a7f4c53f06ddf9ba0
+References: bsc#1127371
+
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+index e3adf435913e..60df66f4d21c 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+@@ -189,6 +189,8 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN
+ CH_PCI_ID_TABLE_FENTRY(0x50ac), /* Custom T540-BT */
+ CH_PCI_ID_TABLE_FENTRY(0x50ad), /* Custom T520-CR */
+ CH_PCI_ID_TABLE_FENTRY(0x50ae), /* Custom T540-XL-SO */
++ CH_PCI_ID_TABLE_FENTRY(0x50af), /* Custom T580-KR-SO */
++ CH_PCI_ID_TABLE_FENTRY(0x50b0), /* Custom T520-CR-LOM */
+
+ /* T6 adapters:
+ */
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-new-T6-PCI-device-ids-0x608a.patch b/patches.fixes/0001-cxgb4-Add-new-T6-PCI-device-ids-0x608a.patch
new file mode 100644
index 0000000000..517722cde8
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-new-T6-PCI-device-ids-0x608a.patch
@@ -0,0 +1,28 @@
+From: Ganesh Goudar <ganeshgr@chelsio.com>
+Subject: cxgb4: Add new T6 PCI device ids 0x608a
+Patch-mainline: v5.0-rc1
+Git-commit: 6d444c4efcdeca8b36f6059aa5a1a93f6ca3be6a
+References: bsc#1127371
+
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+index 60df66f4d21c..bf7325f6d553 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+@@ -217,6 +217,7 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN
+ CH_PCI_ID_TABLE_FENTRY(0x6087), /* Custom T6225-CR */
+ CH_PCI_ID_TABLE_FENTRY(0x6088), /* Custom T62100-CR */
+ CH_PCI_ID_TABLE_FENTRY(0x6089), /* Custom T62100-KR */
++ CH_PCI_ID_TABLE_FENTRY(0x608a), /* Custom T62100-CR */
+ CH_PCI_DEVICE_ID_TABLE_DEFINE_END;
+
+ #endif /* __T4_PCI_ID_TBL_H__ */
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-support-for-FW_ETH_TX_PKT_VM_WR.patch b/patches.fixes/0001-cxgb4-Add-support-for-FW_ETH_TX_PKT_VM_WR.patch
new file mode 100644
index 0000000000..06603a0a43
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-support-for-FW_ETH_TX_PKT_VM_WR.patch
@@ -0,0 +1,483 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Patch-mainline: v4.19-rc1
+Git-commit: d5fbda61ac923e0adb89fd59fdf4a1d99406b86e
+Subject: cxgb4: Add support for FW_ETH_TX_PKT_VM_WR
+References: bsc#1127371
+
+The present TX workrequest(FW_ETH_TX_PKT_WR) cant be used for
+host->vf communication, since it doesn't loopback the outgoing
+packets to virtual interfaces on the same port. This can be done
+using FW_ETH_TX_PKT_VM_WR.
+This fix depends on ethtool_flags to determine what WR to use for
+TX path. Support for setting this flags by user is added in next
+commit.
+
+Based on the original work by : Casey Leedom <leedom@chelsio.com>
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 13 +-
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 +-
+ drivers/net/ethernet/chelsio/cxgb4/sge.c | 372 +++++++++++++++++++++++-
+ 3 files changed, 383 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 56244acf7ce6..ff093ffe4a67 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -520,6 +520,15 @@ enum {
+ MAX_INGQ = MAX_ETH_QSETS + INGQ_EXTRAS,
+ };
+
++enum {
++ PRIV_FLAG_PORT_TX_VM_BIT,
++};
++
++#define PRIV_FLAG_PORT_TX_VM BIT(PRIV_FLAG_PORT_TX_VM_BIT)
++
++#define PRIV_FLAGS_ADAP 0
++#define PRIV_FLAGS_PORT PRIV_FLAG_PORT_TX_VM
++
+ struct adapter;
+ struct sge_rspq;
+
+@@ -556,6 +565,7 @@ struct port_info {
+ struct hwtstamp_config tstamp_config;
+ bool ptp_enable;
+ struct sched_table *sched_tbl;
++ u32 eth_flags;
+ };
+
+ struct dentry;
+@@ -870,6 +880,7 @@ struct adapter {
+ unsigned int flags;
+ unsigned int adap_idx;
+ enum chip_type chip;
++ u32 eth_flags;
+
+ int msg_enable;
+ __be16 vxlan_port;
+@@ -1329,7 +1340,7 @@ void t4_os_link_changed(struct adapter *adap, int port_id, int link_stat);
+ void t4_free_sge_resources(struct adapter *adap);
+ void t4_free_ofld_rxqs(struct adapter *adap, int n, struct sge_ofld_rxq *q);
+ irq_handler_t t4_intr_handler(struct adapter *adap);
+-netdev_tx_t t4_eth_xmit(struct sk_buff *skb, struct net_device *dev);
++netdev_tx_t t4_start_xmit(struct sk_buff *skb, struct net_device *dev);
+ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp,
+ const struct pkt_gl *gl);
+ int t4_mgmt_tx(struct adapter *adap, struct sk_buff *skb);
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index 2ebc9b281616..23d5e3424a08 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -3190,7 +3190,7 @@ static netdev_features_t cxgb_fix_features(struct net_device *dev,
+ static const struct net_device_ops cxgb4_netdev_ops = {
+ .ndo_open = cxgb_open,
+ .ndo_stop = cxgb_close,
+- .ndo_start_xmit = t4_eth_xmit,
++ .ndo_start_xmit = t4_start_xmit,
+ .ndo_select_queue = cxgb_select_queue,
+ .ndo_get_stats64 = cxgb_get_stats,
+ .ndo_set_rx_mode = cxgb_set_rxmode,
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
+index a8025e5f8842..eb4322488190 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
+@@ -1295,13 +1295,13 @@ static inline void t6_fill_tnl_lso(struct sk_buff *skb,
+ }
+
+ /**
+- * t4_eth_xmit - add a packet to an Ethernet Tx queue
++ * cxgb4_eth_xmit - add a packet to an Ethernet Tx queue
+ * @skb: the packet
+ * @dev: the egress net device
+ *
+ * Add a packet to an SGE Ethernet Tx queue. Runs with softirqs disabled.
+ */
+-netdev_tx_t t4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
++static netdev_tx_t cxgb4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
+ {
+ u32 wr_mid, ctrl0, op;
+ u64 cntrl, *end, *sgl;
+@@ -1549,6 +1549,374 @@ out_free: dev_kfree_skb_any(skb);
+ return NETDEV_TX_OK;
+ }
+
++/* Constants ... */
++enum {
++ /* Egress Queue sizes, producer and consumer indices are all in units
++ * of Egress Context Units bytes. Note that as far as the hardware is
++ * concerned, the free list is an Egress Queue (the host produces free
++ * buffers which the hardware consumes) and free list entries are
++ * 64-bit PCI DMA addresses.
++ */
++ EQ_UNIT = SGE_EQ_IDXSIZE,
++ FL_PER_EQ_UNIT = EQ_UNIT / sizeof(__be64),
++ TXD_PER_EQ_UNIT = EQ_UNIT / sizeof(__be64),
++
++ T4VF_ETHTXQ_MAX_HDR = (sizeof(struct fw_eth_tx_pkt_vm_wr) +
++ sizeof(struct cpl_tx_pkt_lso_core) +
++ sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64),
++};
++
++/**
++ * t4vf_is_eth_imm - can an Ethernet packet be sent as immediate data?
++ * @skb: the packet
++ *
++ * Returns whether an Ethernet packet is small enough to fit completely as
++ * immediate data.
++ */
++static inline int t4vf_is_eth_imm(const struct sk_buff *skb)
++{
++ /* The VF Driver uses the FW_ETH_TX_PKT_VM_WR firmware Work Request
++ * which does not accommodate immediate data. We could dike out all
++ * of the support code for immediate data but that would tie our hands
++ * too much if we ever want to enhace the firmware. It would also
++ * create more differences between the PF and VF Drivers.
++ */
++ return false;
++}
++
++/**
++ * t4vf_calc_tx_flits - calculate the number of flits for a packet TX WR
++ * @skb: the packet
++ *
++ * Returns the number of flits needed for a TX Work Request for the
++ * given Ethernet packet, including the needed WR and CPL headers.
++ */
++static inline unsigned int t4vf_calc_tx_flits(const struct sk_buff *skb)
++{
++ unsigned int flits;
++
++ /* If the skb is small enough, we can pump it out as a work request
++ * with only immediate data. In that case we just have to have the
++ * TX Packet header plus the skb data in the Work Request.
++ */
++ if (t4vf_is_eth_imm(skb))
++ return DIV_ROUND_UP(skb->len + sizeof(struct cpl_tx_pkt),
++ sizeof(__be64));
++
++ /* Otherwise, we're going to have to construct a Scatter gather list
++ * of the skb body and fragments. We also include the flits necessary
++ * for the TX Packet Work Request and CPL. We always have a firmware
++ * Write Header (incorporated as part of the cpl_tx_pkt_lso and
++ * cpl_tx_pkt structures), followed by either a TX Packet Write CPL
++ * message or, if we're doing a Large Send Offload, an LSO CPL message
++ * with an embedded TX Packet Write CPL message.
++ */
++ flits = sgl_len(skb_shinfo(skb)->nr_frags + 1);
++ if (skb_shinfo(skb)->gso_size)
++ flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +
++ sizeof(struct cpl_tx_pkt_lso_core) +
++ sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);
++ else
++ flits += (sizeof(struct fw_eth_tx_pkt_vm_wr) +
++ sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64);
++ return flits;
++}
++
++/**
++ * cxgb4_vf_eth_xmit - add a packet to an Ethernet TX queue
++ * @skb: the packet
++ * @dev: the egress net device
++ *
++ * Add a packet to an SGE Ethernet TX queue. Runs with softirqs disabled.
++ */
++static netdev_tx_t cxgb4_vf_eth_xmit(struct sk_buff *skb,
++ struct net_device *dev)
++{
++ dma_addr_t addr[MAX_SKB_FRAGS + 1];
++ const struct skb_shared_info *ssi;
++ struct fw_eth_tx_pkt_vm_wr *wr;
++ int qidx, credits, max_pkt_len;
++ struct cpl_tx_pkt_core *cpl;
++ const struct port_info *pi;
++ unsigned int flits, ndesc;
++ struct sge_eth_txq *txq;
++ struct adapter *adapter;
++ u64 cntrl, *end;
++ u32 wr_mid;
++ const size_t fw_hdr_copy_len = sizeof(wr->ethmacdst) +
++ sizeof(wr->ethmacsrc) +
++ sizeof(wr->ethtype) +
++ sizeof(wr->vlantci);
++
++ /* The chip minimum packet length is 10 octets but the firmware
++ * command that we are using requires that we copy the Ethernet header
++ * (including the VLAN tag) into the header so we reject anything
++ * smaller than that ...
++ */
++ if (unlikely(skb->len < fw_hdr_copy_len))
++ goto out_free;
++
++ /* Discard the packet if the length is greater than mtu */
++ max_pkt_len = ETH_HLEN + dev->mtu;
++ if (skb_vlan_tag_present(skb))
++ max_pkt_len += VLAN_HLEN;
++ if (!skb_shinfo(skb)->gso_size && (unlikely(skb->len > max_pkt_len)))
++ goto out_free;
++
++ /* Figure out which TX Queue we're going to use. */
++ pi = netdev_priv(dev);
++ adapter = pi->adapter;
++ qidx = skb_get_queue_mapping(skb);
++ WARN_ON(qidx >= pi->nqsets);
++ txq = &adapter->sge.ethtxq[pi->first_qset + qidx];
++
++ /* Take this opportunity to reclaim any TX Descriptors whose DMA
++ * transfers have completed.
++ */
++ reclaim_completed_tx(adapter, &txq->q, true);
++
++ /* Calculate the number of flits and TX Descriptors we're going to
++ * need along with how many TX Descriptors will be left over after
++ * we inject our Work Request.
++ */
++ flits = t4vf_calc_tx_flits(skb);
++ ndesc = flits_to_desc(flits);
++ credits = txq_avail(&txq->q) - ndesc;
++
++ if (unlikely(credits < 0)) {
++ /* Not enough room for this packet's Work Request. Stop the
++ * TX Queue and return a "busy" condition. The queue will get
++ * started later on when the firmware informs us that space
++ * has opened up.
++ */
++ eth_txq_stop(txq);
++ dev_err(adapter->pdev_dev,
++ "%s: TX ring %u full while queue awake!\n",
++ dev->name, qidx);
++ return NETDEV_TX_BUSY;
++ }
++
++ if (!t4vf_is_eth_imm(skb) &&
++ unlikely(map_skb(adapter->pdev_dev, skb, addr) < 0)) {
++ /* We need to map the skb into PCI DMA space (because it can't
++ * be in-lined directly into the Work Request) and the mapping
++ * operation failed. Record the error and drop the packet.
++ */
++ txq->mapping_err++;
++ goto out_free;
++ }
++
++ wr_mid = FW_WR_LEN16_V(DIV_ROUND_UP(flits, 2));
++ if (unlikely(credits < ETHTXQ_STOP_THRES)) {
++ /* After we're done injecting the Work Request for this
++ * packet, we'll be below our "stop threshold" so stop the TX
++ * Queue now and schedule a request for an SGE Egress Queue
++ * Update message. The queue will get started later on when
++ * the firmware processes this Work Request and sends us an
++ * Egress Queue Status Update message indicating that space
++ * has opened up.
++ */
++ eth_txq_stop(txq);
++ wr_mid |= FW_WR_EQUEQ_F | FW_WR_EQUIQ_F;
++ }
++
++ /* Start filling in our Work Request. Note that we do _not_ handle
++ * the WR Header wrapping around the TX Descriptor Ring. If our
++ * maximum header size ever exceeds one TX Descriptor, we'll need to
++ * do something else here.
++ */
++ WARN_ON(DIV_ROUND_UP(T4VF_ETHTXQ_MAX_HDR, TXD_PER_EQ_UNIT) > 1);
++ wr = (void *)&txq->q.desc[txq->q.pidx];
++ wr->equiq_to_len16 = cpu_to_be32(wr_mid);
++ wr->r3[0] = cpu_to_be32(0);
++ wr->r3[1] = cpu_to_be32(0);
++ skb_copy_from_linear_data(skb, (void *)wr->ethmacdst, fw_hdr_copy_len);
++ end = (u64 *)wr + flits;
++
++ /* If this is a Large Send Offload packet we'll put in an LSO CPL
++ * message with an encapsulated TX Packet CPL message. Otherwise we
++ * just use a TX Packet CPL message.
++ */
++ ssi = skb_shinfo(skb);
++ if (ssi->gso_size) {
++ struct cpl_tx_pkt_lso_core *lso = (void *)(wr + 1);
++ bool v6 = (ssi->gso_type & SKB_GSO_TCPV6) != 0;
++ int l3hdr_len = skb_network_header_len(skb);
++ int eth_xtra_len = skb_network_offset(skb) - ETH_HLEN;
++
++ wr->op_immdlen =
++ cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |
++ FW_WR_IMMDLEN_V(sizeof(*lso) +
++ sizeof(*cpl)));
++ /* Fill in the LSO CPL message. */
++ lso->lso_ctrl =
++ cpu_to_be32(LSO_OPCODE_V(CPL_TX_PKT_LSO) |
++ LSO_FIRST_SLICE_F |
++ LSO_LAST_SLICE_F |
++ LSO_IPV6_V(v6) |
++ LSO_ETHHDR_LEN_V(eth_xtra_len / 4) |
++ LSO_IPHDR_LEN_V(l3hdr_len / 4) |
++ LSO_TCPHDR_LEN_V(tcp_hdr(skb)->doff));
++ lso->ipid_ofst = cpu_to_be16(0);
++ lso->mss = cpu_to_be16(ssi->gso_size);
++ lso->seqno_offset = cpu_to_be32(0);
++ if (is_t4(adapter->params.chip))
++ lso->len = cpu_to_be32(skb->len);
++ else
++ lso->len = cpu_to_be32(LSO_T5_XFER_SIZE_V(skb->len));
++
++ /* Set up TX Packet CPL pointer, control word and perform
++ * accounting.
++ */
++ cpl = (void *)(lso + 1);
++
++ if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5)
++ cntrl = TXPKT_ETHHDR_LEN_V(eth_xtra_len);
++ else
++ cntrl = T6_TXPKT_ETHHDR_LEN_V(eth_xtra_len);
++
++ cntrl |= TXPKT_CSUM_TYPE_V(v6 ?
++ TX_CSUM_TCPIP6 : TX_CSUM_TCPIP) |
++ TXPKT_IPHDR_LEN_V(l3hdr_len);
++ txq->tso++;
++ txq->tx_cso += ssi->gso_segs;
++ } else {
++ int len;
++
++ len = (t4vf_is_eth_imm(skb)
++ ? skb->len + sizeof(*cpl)
++ : sizeof(*cpl));
++ wr->op_immdlen =
++ cpu_to_be32(FW_WR_OP_V(FW_ETH_TX_PKT_VM_WR) |
++ FW_WR_IMMDLEN_V(len));
++
++ /* Set up TX Packet CPL pointer, control word and perform
++ * accounting.
++ */
++ cpl = (void *)(wr + 1);
++ if (skb->ip_summed == CHECKSUM_PARTIAL) {
++ cntrl = hwcsum(adapter->params.chip, skb) |
++ TXPKT_IPCSUM_DIS_F;
++ txq->tx_cso++;
++ } else {
++ cntrl = TXPKT_L4CSUM_DIS_F | TXPKT_IPCSUM_DIS_F;
++ }
++ }
++
++ /* If there's a VLAN tag present, add that to the list of things to
++ * do in this Work Request.
++ */
++ if (skb_vlan_tag_present(skb)) {
++ txq->vlan_ins++;
++ cntrl |= TXPKT_VLAN_VLD_F | TXPKT_VLAN_V(skb_vlan_tag_get(skb));
++ }
++
++ /* Fill in the TX Packet CPL message header. */
++ cpl->ctrl0 = cpu_to_be32(TXPKT_OPCODE_V(CPL_TX_PKT_XT) |
++ TXPKT_INTF_V(pi->port_id) |
++ TXPKT_PF_V(0));
++ cpl->pack = cpu_to_be16(0);
++ cpl->len = cpu_to_be16(skb->len);
++ cpl->ctrl1 = cpu_to_be64(cntrl);
++
++ /* Fill in the body of the TX Packet CPL message with either in-lined
++ * data or a Scatter/Gather List.
++ */
++ if (t4vf_is_eth_imm(skb)) {
++ /* In-line the packet's data and free the skb since we don't
++ * need it any longer.
++ */
++ inline_tx_skb(skb, &txq->q, cpl + 1);
++ dev_consume_skb_any(skb);
++ } else {
++ /* Write the skb's Scatter/Gather list into the TX Packet CPL
++ * message and retain a pointer to the skb so we can free it
++ * later when its DMA completes. (We store the skb pointer
++ * in the Software Descriptor corresponding to the last TX
++ * Descriptor used by the Work Request.)
++ *
++ * The retained skb will be freed when the corresponding TX
++ * Descriptors are reclaimed after their DMAs complete.
++ * However, this could take quite a while since, in general,
++ * the hardware is set up to be lazy about sending DMA
++ * completion notifications to us and we mostly perform TX
++ * reclaims in the transmit routine.
++ *
++ * This is good for performamce but means that we rely on new
++ * TX packets arriving to run the destructors of completed
++ * packets, which open up space in their sockets' send queues.
++ * Sometimes we do not get such new packets causing TX to
++ * stall. A single UDP transmitter is a good example of this
++ * situation. We have a clean up timer that periodically
++ * reclaims completed packets but it doesn't run often enough
++ * (nor do we want it to) to prevent lengthy stalls. A
++ * solution to this problem is to run the destructor early,
++ * after the packet is queued but before it's DMAd. A con is
++ * that we lie to socket memory accounting, but the amount of
++ * extra memory is reasonable (limited by the number of TX
++ * descriptors), the packets do actually get freed quickly by
++ * new packets almost always, and for protocols like TCP that
++ * wait for acks to really free up the data the extra memory
++ * is even less. On the positive side we run the destructors
++ * on the sending CPU rather than on a potentially different
++ * completing CPU, usually a good thing.
++ *
++ * Run the destructor before telling the DMA engine about the
++ * packet to make sure it doesn't complete and get freed
++ * prematurely.
++ */
++ struct ulptx_sgl *sgl = (struct ulptx_sgl *)(cpl + 1);
++ struct sge_txq *tq = &txq->q;
++ int last_desc;
++
++ /* If the Work Request header was an exact multiple of our TX
++ * Descriptor length, then it's possible that the starting SGL
++ * pointer lines up exactly with the end of our TX Descriptor
++ * ring. If that's the case, wrap around to the beginning
++ * here ...
++ */
++ if (unlikely((void *)sgl == (void *)tq->stat)) {
++ sgl = (void *)tq->desc;
++ end = (void *)((void *)tq->desc +
++ ((void *)end - (void *)tq->stat));
++ }
++
++ write_sgl(skb, tq, sgl, end, 0, addr);
++ skb_orphan(skb);
++
++ last_desc = tq->pidx + ndesc - 1;
++ if (last_desc >= tq->size)
++ last_desc -= tq->size;
++ tq->sdesc[last_desc].skb = skb;
++ tq->sdesc[last_desc].sgl = sgl;
++ }
++
++ /* Advance our internal TX Queue state, tell the hardware about
++ * the new TX descriptors and return success.
++ */
++ txq_advance(&txq->q, ndesc);
++
++ ring_tx_db(adapter, &txq->q, ndesc);
++ return NETDEV_TX_OK;
++
++out_free:
++ /* An error of some sort happened. Free the TX skb and tell the
++ * OS that we've "dealt" with the packet ...
++ */
++ dev_kfree_skb_any(skb);
++ return NETDEV_TX_OK;
++}
++
++netdev_tx_t t4_start_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++ struct port_info *pi = netdev_priv(dev);
++
++ if (unlikely(pi->eth_flags & PRIV_FLAG_PORT_TX_VM))
++ return cxgb4_vf_eth_xmit(skb, dev);
++
++ return cxgb4_eth_xmit(skb, dev);
++}
++
+ /**
+ * reclaim_completed_tx_imm - reclaim completed control-queue Tx descs
+ * @q: the SGE control Tx queue
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Add-support-to-read-actual-provisioned-resourc.patch b/patches.fixes/0001-cxgb4-Add-support-to-read-actual-provisioned-resourc.patch
new file mode 100644
index 0000000000..42dd283f10
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Add-support-to-read-actual-provisioned-resourc.patch
@@ -0,0 +1,405 @@
+From: Casey Leedom <leedom@chelsio.com>
+Patch-mainline: v4.19-rc1
+Git-commit: 0eaec62a91ed9d5694b7e2bff30a1b1ad7107be7
+Subject: cxgb4: Add support to read actual provisioned resources
+References: bsc#1127371
+
+In highly constrained resources environments (like the 124VF
+T5 and 248VF T6 configurations), PF4 may not have very many
+resources at all and we need to adapt to whatever we've been
+allocated, this patch adds support to get the provisioned
+resources.
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 17 +++
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 39 ++++++
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 134 +++++++++++++++------
+ drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 51 ++++++++
+ 4 files changed, 206 insertions(+), 35 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 4a8cbd864ef7..3da9299cd786 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -320,6 +320,21 @@ struct vpd_params {
+ u8 na[MACADDR_LEN + 1];
+ };
+
++/* Maximum resources provisioned for a PCI PF.
++ */
++struct pf_resources {
++ unsigned int nvi; /* N virtual interfaces */
++ unsigned int neq; /* N egress Qs */
++ unsigned int nethctrl; /* N egress ETH or CTRL Qs */
++ unsigned int niqflint; /* N ingress Qs/w free list(s) & intr */
++ unsigned int niq; /* N ingress Qs */
++ unsigned int tc; /* PCI-E traffic class */
++ unsigned int pmask; /* port access rights mask */
++ unsigned int nexactf; /* N exact MPS filters */
++ unsigned int r_caps; /* read capabilities */
++ unsigned int wx_caps; /* write/execute capabilities */
++};
++
+ struct pci_params {
+ unsigned int vpd_cap_addr;
+ unsigned char speed;
+@@ -347,6 +362,7 @@ struct adapter_params {
+ struct sge_params sge;
+ struct tp_params tp;
+ struct vpd_params vpd;
++ struct pf_resources pfres;
+ struct pci_params pci;
+ struct devlog_params devlog;
+ enum pcie_memwin drv_memwin;
+@@ -1568,6 +1584,7 @@ int t4_eeprom_ptov(unsigned int phys_addr, unsigned int fn, unsigned int sz);
+ int t4_seeprom_wp(struct adapter *adapter, bool enable);
+ int t4_get_raw_vpd_params(struct adapter *adapter, struct vpd_params *p);
+ int t4_get_vpd_params(struct adapter *adapter, struct vpd_params *p);
++int t4_get_pfres(struct adapter *adapter);
+ int t4_read_flash(struct adapter *adapter, unsigned int addr,
+ unsigned int nwords, u32 *data, int byte_oriented);
+ int t4_load_fw(struct adapter *adapter, const u8 *fw_data, unsigned int size);
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+index c301aaf79d64..516c883e1613 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+@@ -2414,6 +2414,44 @@ static const struct file_operations rss_vf_config_debugfs_fops = {
+ .release = seq_release_private
+ };
+
++static int resources_show(struct seq_file *seq, void *v)
++{
++ struct adapter *adapter = seq->private;
++ struct pf_resources *pfres = &adapter->params.pfres;
++
++ #define S(desc, fmt, var) \
++ seq_printf(seq, "%-60s " fmt "\n", \
++ desc " (" #var "):", pfres->var)
++
++ S("Virtual Interfaces", "%d", nvi);
++ S("Egress Queues", "%d", neq);
++ S("Ethernet Control", "%d", nethctrl);
++ S("Ingress Queues/w Free Lists/Interrupts", "%d", niqflint);
++ S("Ingress Queues", "%d", niq);
++ S("Traffic Class", "%d", tc);
++ S("Port Access Rights Mask", "%#x", pmask);
++ S("MAC Address Filters", "%d", nexactf);
++ S("Firmware Command Read Capabilities", "%#x", r_caps);
++ S("Firmware Command Write/Execute Capabilities", "%#x", wx_caps);
++
++ #undef S
++
++ return 0;
++}
++
++static int resources_open(struct inode *inode, struct file *file)
++{
++ return single_open(file, resources_show, inode->i_private);
++}
++
++static const struct file_operations resources_debugfs_fops = {
++ .owner = THIS_MODULE,
++ .open = resources_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = seq_release,
++};
++
+ /**
+ * ethqset2pinfo - return port_info of an Ethernet Queue Set
+ * @adap: the adapter
+@@ -2973,6 +3011,7 @@ int t4_setup_debugfs(struct adapter *adap)
+ { "rss_key", &rss_key_debugfs_fops, 0400, 0 },
+ { "rss_pf_config", &rss_pf_config_debugfs_fops, 0400, 0 },
+ { "rss_vf_config", &rss_vf_config_debugfs_fops, 0400, 0 },
++ { "resources", &resources_debugfs_fops, 0400, 0 },
+ { "sge_qinfo", &sge_qinfo_debugfs_fops, 0400, 0 },
+ { "ibq_tp0", &cim_ibq_fops, 0400, 0 },
+ { "ibq_tp1", &cim_ibq_fops, 0400, 1 },
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index 1c0374cbb890..96fcbd1c33a3 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -924,6 +924,7 @@ static int setup_sge_queues(struct adapter *adap)
+ QUEUENUMBER_V(s->ethrxq[0].rspq.abs_id));
+ return 0;
+ freeout:
++ dev_err(adap->pdev_dev, "Can't allocate queues, err=%d\n", -err);
+ t4_free_sge_resources(adap);
+ return err;
+ }
+@@ -3536,6 +3537,16 @@ static int adap_init1(struct adapter *adap, struct fw_caps_config_cmd *c)
+ u32 v;
+ int ret;
+
++ /* Now that we've successfully configured and initialized the adapter
++ * can ask the Firmware what resources it has provisioned for us.
++ */
++ ret = t4_get_pfres(adap);
++ if (ret) {
++ dev_err(adap->pdev_dev,
++ "Unable to retrieve resource provisioning information\n");
++ return ret;
++ }
++
+ /* get device capabilities */
+ memset(c, 0, sizeof(*c));
+ c->op_to_write = htonl(FW_CMD_OP_V(FW_CAPS_CONFIG_CMD) |
+@@ -4170,32 +4181,6 @@ static int adap_init0(struct adapter *adap)
+ goto bye;
+ }
+
+- /*
+- * Grab VPD parameters. This should be done after we establish a
+- * connection to the firmware since some of the VPD parameters
+- * (notably the Core Clock frequency) are retrieved via requests to
+- * the firmware. On the other hand, we need these fairly early on
+- * so we do this right after getting ahold of the firmware.
+- */
+- ret = t4_get_vpd_params(adap, &adap->params.vpd);
+- if (ret < 0)
+- goto bye;
+-
+- /*
+- * Find out what ports are available to us. Note that we need to do
+- * this before calling adap_init0_no_config() since it needs nports
+- * and portvec ...
+- */
+- v =
+- FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DEV) |
+- FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DEV_PORTVEC);
+- ret = t4_query_params(adap, adap->mbox, adap->pf, 0, 1, &v, &port_vec);
+- if (ret < 0)
+- goto bye;
+-
+- adap->params.nports = hweight32(port_vec);
+- adap->params.portvec = port_vec;
+-
+ /* If the firmware is initialized already, emit a simply note to that
+ * effect. Otherwise, it's time to try initializing the adapter.
+ */
+@@ -4246,6 +4231,45 @@ static int adap_init0(struct adapter *adap)
+ }
+ }
+
++ /* Now that we've successfully configured and initialized the adapter
++ * (or found it already initialized), we can ask the Firmware what
++ * resources it has provisioned for us.
++ */
++ ret = t4_get_pfres(adap);
++ if (ret) {
++ dev_err(adap->pdev_dev,
++ "Unable to retrieve resource provisioning information\n");
++ goto bye;
++ }
++
++ /* Grab VPD parameters. This should be done after we establish a
++ * connection to the firmware since some of the VPD parameters
++ * (notably the Core Clock frequency) are retrieved via requests to
++ * the firmware. On the other hand, we need these fairly early on
++ * so we do this right after getting ahold of the firmware.
++ *
++ * We need to do this after initializing the adapter because someone
++ * could have FLASHed a new VPD which won't be read by the firmware
++ * until we do the RESET ...
++ */
++ ret = t4_get_vpd_params(adap, &adap->params.vpd);
++ if (ret < 0)
++ goto bye;
++
++ /* Find out what ports are available to us. Note that we need to do
++ * this before calling adap_init0_no_config() since it needs nports
++ * and portvec ...
++ */
++ v =
++ FW_PARAMS_MNEM_V(FW_PARAMS_MNEM_DEV) |
++ FW_PARAMS_PARAM_X_V(FW_PARAMS_PARAM_DEV_PORTVEC);
++ ret = t4_query_params(adap, adap->mbox, adap->pf, 0, 1, &v, &port_vec);
++ if (ret < 0)
++ goto bye;
++
++ adap->params.nports = hweight32(port_vec);
++ adap->params.portvec = port_vec;
++
+ /* Give the SGE code a chance to pull in anything that it needs ...
+ * Note that this must be called after we retrieve our VPD parameters
+ * in order to know how to convert core ticks to seconds, etc.
+@@ -4797,10 +4821,12 @@ static inline bool is_x_10g_port(const struct link_config *lc)
+ * of ports we found and the number of available CPUs. Most settings can be
+ * modified by the admin prior to actual use.
+ */
+-static void cfg_queues(struct adapter *adap)
++static int cfg_queues(struct adapter *adap)
+ {
+ struct sge *s = &adap->sge;
+- int i = 0, n10g = 0, qidx = 0;
++ int i, n10g = 0, qidx = 0;
++ int niqflint, neq, avail_eth_qsets;
++ int max_eth_qsets = 32;
+ #ifndef CONFIG_CHELSIO_T4_DCB
+ int q10g = 0;
+ #endif
+@@ -4812,16 +4838,46 @@ static void cfg_queues(struct adapter *adap)
+ adap->params.crypto = 0;
+ }
+
+- n10g += is_x_10g_port(&adap2pinfo(adap, i)->link_cfg);
++ /* Calculate the number of Ethernet Queue Sets available based on
++ * resources provisioned for us. We always have an Asynchronous
++ * Firmware Event Ingress Queue. If we're operating in MSI or Legacy
++ * IRQ Pin Interrupt mode, then we'll also have a Forwarded Interrupt
++ * Ingress Queue. Meanwhile, we need two Egress Queues for each
++ * Queue Set: one for the Free List and one for the Ethernet TX Queue.
++ *
++ * Note that we should also take into account all of the various
++ * Offload Queues. But, in any situation where we're operating in
++ * a Resource Constrained Provisioning environment, doing any Offload
++ * at all is problematic ...
++ */
++ niqflint = adap->params.pfres.niqflint - 1;
++ if (!(adap->flags & USING_MSIX))
++ niqflint--;
++ neq = adap->params.pfres.neq / 2;
++ avail_eth_qsets = min(niqflint, neq);
++
++ if (avail_eth_qsets > max_eth_qsets)
++ avail_eth_qsets = max_eth_qsets;
++
++ if (avail_eth_qsets < adap->params.nports) {
++ dev_err(adap->pdev_dev, "avail_eth_qsets=%d < nports=%d\n",
++ avail_eth_qsets, adap->params.nports);
++ return -ENOMEM;
++ }
++
++ /* Count the number of 10Gb/s or better ports */
++ for_each_port(adap, i)
++ n10g += is_x_10g_port(&adap2pinfo(adap, i)->link_cfg);
++
+ #ifdef CONFIG_CHELSIO_T4_DCB
+ /* For Data Center Bridging support we need to be able to support up
+ * to 8 Traffic Priorities; each of which will be assigned to its
+ * own TX Queue in order to prevent Head-Of-Line Blocking.
+ */
+- if (adap->params.nports * 8 > MAX_ETH_QSETS) {
+- dev_err(adap->pdev_dev, "MAX_ETH_QSETS=%d < %d!\n",
+- MAX_ETH_QSETS, adap->params.nports * 8);
+- BUG_ON(1);
++ if (adap->params.nports * 8 > avail_eth_qsets) {
++ dev_err(adap->pdev_dev, "DCB avail_eth_qsets=%d < %d!\n",
++ avail_eth_qsets, adap->params.nports * 8);
++ return -ENOMEM;
+ }
+
+ for_each_port(adap, i) {
+@@ -4837,7 +4893,7 @@ static void cfg_queues(struct adapter *adap)
+ * per 10G port.
+ */
+ if (n10g)
+- q10g = (MAX_ETH_QSETS - (adap->params.nports - n10g)) / n10g;
++ q10g = (avail_eth_qsets - (adap->params.nports - n10g)) / n10g;
+ if (q10g > netif_get_num_default_rss_queues())
+ q10g = netif_get_num_default_rss_queues();
+
+@@ -4888,6 +4944,8 @@ static void cfg_queues(struct adapter *adap)
+
+ init_rspq(adap, &s->fw_evtq, 0, 1, 1024, 64);
+ init_rspq(adap, &s->intrq, 0, 1, 512, 64);
++
++ return 0;
+ }
+
+ /*
+@@ -5628,10 +5686,15 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
+ }
+ }
+
++ if (!(adapter->flags & FW_OK))
++ goto fw_attach_fail;
++
+ /* Configure queues and allocate tables now, they can be needed as
+ * soon as the first register_netdev completes.
+ */
+- cfg_queues(adapter);
++ err = cfg_queues(adapter);
++ if (err)
++ goto out_free_dev;
+
+ adapter->smt = t4_init_smt();
+ if (!adapter->smt) {
+@@ -5738,6 +5801,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
+ goto out_free_dev;
+ }
+
++fw_attach_fail:
+ /*
+ * The card is now ready to go. If any errors occur during device
+ * registration we do not fail the whole card but rather proceed only
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+index 974a868a4824..d266177aeef5 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+@@ -2882,6 +2882,57 @@ int t4_get_vpd_params(struct adapter *adapter, struct vpd_params *p)
+ return 0;
+ }
+
++/**
++ * t4_get_pfres - retrieve VF resource limits
++ * @adapter: the adapter
++ *
++ * Retrieves configured resource limits and capabilities for a physical
++ * function. The results are stored in @adapter->pfres.
++ */
++int t4_get_pfres(struct adapter *adapter)
++{
++ struct pf_resources *pfres = &adapter->params.pfres;
++ struct fw_pfvf_cmd cmd, rpl;
++ int v;
++ u32 word;
++
++ /* Execute PFVF Read command to get VF resource limits; bail out early
++ * with error on command failure.
++ */
++ memset(&cmd, 0, sizeof(cmd));
++ cmd.op_to_vfn = cpu_to_be32(FW_CMD_OP_V(FW_PFVF_CMD) |
++ FW_CMD_REQUEST_F |
++ FW_CMD_READ_F |
++ FW_PFVF_CMD_PFN_V(adapter->pf) |
++ FW_PFVF_CMD_VFN_V(0));
++ cmd.retval_len16 = cpu_to_be32(FW_LEN16(cmd));
++ v = t4_wr_mbox(adapter, adapter->mbox, &cmd, sizeof(cmd), &rpl);
++ if (v != FW_SUCCESS)
++ return v;
++
++ /* Extract PF resource limits and return success.
++ */
++ word = be32_to_cpu(rpl.niqflint_niq);
++ pfres->niqflint = FW_PFVF_CMD_NIQFLINT_G(word);
++ pfres->niq = FW_PFVF_CMD_NIQ_G(word);
++
++ word = be32_to_cpu(rpl.type_to_neq);
++ pfres->neq = FW_PFVF_CMD_NEQ_G(word);
++ pfres->pmask = FW_PFVF_CMD_PMASK_G(word);
++
++ word = be32_to_cpu(rpl.tc_to_nexactf);
++ pfres->tc = FW_PFVF_CMD_TC_G(word);
++ pfres->nvi = FW_PFVF_CMD_NVI_G(word);
++ pfres->nexactf = FW_PFVF_CMD_NEXACTF_G(word);
++
++ word = be32_to_cpu(rpl.r_caps_to_nethctrl);
++ pfres->r_caps = FW_PFVF_CMD_R_CAPS_G(word);
++ pfres->wx_caps = FW_PFVF_CMD_WX_CAPS_G(word);
++ pfres->nethctrl = FW_PFVF_CMD_NETHCTRL_G(word);
++
++ return 0;
++}
++
+ /* serial flash and firmware constants */
+ enum {
+ SF_ATTEMPTS = 10, /* max retries for SF operations */
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Added-missing-break-in-ndo_udp_tunnel_-add-del.patch b/patches.fixes/0001-cxgb4-Added-missing-break-in-ndo_udp_tunnel_-add-del.patch
new file mode 100644
index 0000000000..9fb48cc3d3
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Added-missing-break-in-ndo_udp_tunnel_-add-del.patch
@@ -0,0 +1,42 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4: Added missing break in ndo_udp_tunnel_{add/del}
+Patch-mainline: v4.18-rc8
+Git-commit: 942a656f1f228f06a37adad0e6c347773cfe7bd6
+References: bsc#1127371
+
+Break statements were missing for Geneve case in
+ndo_udp_tunnel_{add/del}, thereby raw mac matchall
+entries were not getting added.
+
+Fixes: c746fc0e8b2d("cxgb4: add geneve offload support for T6")
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index bc03c175a3cd..a8926e97935e 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -3072,6 +3072,7 @@ static void cxgb_del_udp_tunnel(struct net_device *netdev,
+
+ adapter->geneve_port = 0;
+ t4_write_reg(adapter, MPS_RX_GENEVE_TYPE_A, 0);
++ break;
+ default:
+ return;
+ }
+@@ -3157,6 +3158,7 @@ static void cxgb_add_udp_tunnel(struct net_device *netdev,
+
+ t4_write_reg(adapter, MPS_RX_GENEVE_TYPE_A,
+ GENEVE_V(be16_to_cpu(ti->port)) | GENEVE_EN_F);
++ break;
+ default:
+ return;
+ }
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-Export-sge_host_page_size-to-ulds.patch b/patches.fixes/0001-cxgb4-Export-sge_host_page_size-to-ulds.patch
new file mode 100644
index 0000000000..4974583d25
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Export-sge_host_page_size-to-ulds.patch
@@ -0,0 +1,38 @@
+From: Raju Rangoju <rajur@chelsio.com>
+Subject: cxgb4: Export sge_host_page_size to ulds
+Patch-mainline: v5.0-rc8
+Git-commit: fc4144e7815b7747b6aba140d7a91da45ee9dd8c
+References: bsc#1127371
+
+Export the sge_host_page_size field to ULDs via cxgb4_lld_info, so that
+iw_cxgb4 can make use of this in calculating the correct qp/cq mask.
+
+Fixes: 2391b0030e24 ("cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on page size")
+Signed-off-by: Raju Rangoju <rajur@chelsio.com>
+Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
+Signed-off-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c | 1 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
+@@ -647,6 +647,7 @@ static void uld_init(struct adapter *ada
+ lld->cclk_ps = 1000000000 / adap->params.vpd.cclk;
+ lld->udb_density = 1 << adap->params.sge.eq_qpp;
+ lld->ucq_density = 1 << adap->params.sge.iq_qpp;
++ lld->sge_host_page_size = 1 << (adap->params.sge.hps + 10);
+ lld->filt_mode = adap->params.tp.vlan_pri_map;
+ /* MODQ_REQ_MAP sets queues 0-3 to chan 0-3 */
+ for (i = 0; i < NCHAN; i++)
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h
+@@ -329,6 +329,7 @@ struct cxgb4_lld_info {
+ unsigned int cclk_ps; /* Core clock period in psec */
+ unsigned short udb_density; /* # of user DB/page */
+ unsigned short ucq_density; /* # of user CQs/page */
++ unsigned int sge_host_page_size; /* SGE host page size */
+ unsigned short filt_mode; /* filter optional components */
+ unsigned short tx_modq[NCHAN]; /* maps each tx channel to a */
+ /* scheduler queue */
diff --git a/patches.fixes/0001-cxgb4-Remove-SGE_HOST_PAGE_SIZE-dependency-on-page-s.patch b/patches.fixes/0001-cxgb4-Remove-SGE_HOST_PAGE_SIZE-dependency-on-page-s.patch
new file mode 100644
index 0000000000..798c3d567f
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-Remove-SGE_HOST_PAGE_SIZE-dependency-on-page-s.patch
@@ -0,0 +1,51 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on page size
+Patch-mainline: v5.0-rc1
+Git-commit: 2391b0030e241386d710df10e53e2cfc3c5d4fc1
+References: bsc#1127371
+
+The SGE Host Page Size has nothing to do with the actual
+Host Page Size. It's the SGE's BAR2 Doorbell/GTS Page Size
+for interpreting the SGE Ingress/Egress Queue per Page values.
+Firmware reads all of these things and makes all the
+subsequent changes necessary. The Host Driver uses the SGE
+Host Page Size in order to properly calculate BAR2 Offsets.
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+index cb523949c812..fc6a08789835 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+@@ -7141,21 +7141,10 @@ int t4_fixup_host_params(struct adapter *adap, unsigned int page_size,
+ unsigned int cache_line_size)
+ {
+ unsigned int page_shift = fls(page_size) - 1;
+- unsigned int sge_hps = page_shift - 10;
+ unsigned int stat_len = cache_line_size > 64 ? 128 : 64;
+ unsigned int fl_align = cache_line_size < 32 ? 32 : cache_line_size;
+ unsigned int fl_align_log = fls(fl_align) - 1;
+
+- t4_write_reg(adap, SGE_HOST_PAGE_SIZE_A,
+- HOSTPAGESIZEPF0_V(sge_hps) |
+- HOSTPAGESIZEPF1_V(sge_hps) |
+- HOSTPAGESIZEPF2_V(sge_hps) |
+- HOSTPAGESIZEPF3_V(sge_hps) |
+- HOSTPAGESIZEPF4_V(sge_hps) |
+- HOSTPAGESIZEPF5_V(sge_hps) |
+- HOSTPAGESIZEPF6_V(sge_hps) |
+- HOSTPAGESIZEPF7_V(sge_hps));
+-
+ if (is_t4(adap->params.chip)) {
+ t4_set_reg_field(adap, SGE_CONTROL_A,
+ INGPADBOUNDARY_V(INGPADBOUNDARY_M) |
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch b/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch
new file mode 100644
index 0000000000..d7b8723a8e
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch
@@ -0,0 +1,278 @@
+From: Ganesh Goudar <ganeshgr@chelsio.com>
+Subject: cxgb4: add support to display DCB info
+Patch-mainline: v4.19-rc1
+Git-commit: ebddd97afb89cb1e88cc037aef2913ad4723a59f
+References: bsc#1127371
+
+display Data Center bridging information in debug
+fs.
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 2 +-
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 193 +++++++++++++++++++++
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 3 +-
+ 4 files changed, 197 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 76e957ebb09c..ab1f7b4544e0 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -1852,4 +1852,5 @@ void free_tx_desc(struct adapter *adap, struct sge_txq *q,
+ void free_txq(struct adapter *adap, struct sge_txq *q);
+ int t4_set_vlan_acl(struct adapter *adap, unsigned int mbox, unsigned int vf,
+ u16 vlan);
++int cxgb4_dcb_enabled(const struct net_device *dev);
+ #endif /* __CXGB4_H__ */
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+index 4e7f72b17e82..b34f0f077a31 100644