This is a note to let you know that I've just added the patch titled Revert "mtip32xx: use runtime tag to initialize command header" to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: revert-mtip32xx-use-runtime-tag-to-initialize-command-header.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Fri Apr 6 10:27:52 CEST 2018 From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Date: Fri, 6 Apr 2018 09:28:46 +0200 Subject: Revert "mtip32xx: use runtime tag to initialize command header" From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> This reverts commit db54facd56a40e7766bf7f7cda1ae138e72a691c which was commit a4e84aae8139aca9fbfbced1f45c51ca81b57488 upstream. Ben writes: MQ IO schedulers were introduced in 4.11, so this shouldn't be needed in older branches. It also causes a performance regression (fixed upstream). Please revert this for 4.4 and 4.9. So let's revert it! Reported-by: Ben Hutchings <ben.hutchings@xxxxxxxxxxxxxxx> Cc: Ming Lei <ming.lei@xxxxxxxxxx> Cc: Jens Axboe <axboe@xxxxxx> Cc: Sasha Levin <alexander.levin@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/block/mtip32xx/mtip32xx.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) --- a/drivers/block/mtip32xx/mtip32xx.c +++ b/drivers/block/mtip32xx/mtip32xx.c @@ -169,25 +169,6 @@ static bool mtip_check_surprise_removal( return false; /* device present */ } -/* we have to use runtime tag to setup command header */ -static void mtip_init_cmd_header(struct request *rq) -{ - struct driver_data *dd = rq->q->queuedata; - struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq); - u32 host_cap_64 = readl(dd->mmio + HOST_CAP) & HOST_CAP_64; - - /* Point the command headers at the command tables. */ - cmd->command_header = dd->port->command_list + - (sizeof(struct mtip_cmd_hdr) * rq->tag); - cmd->command_header_dma = dd->port->command_list_dma + - (sizeof(struct mtip_cmd_hdr) * rq->tag); - - if (host_cap_64) - cmd->command_header->ctbau = __force_bit2int cpu_to_le32((cmd->command_dma >> 16) >> 16); - - cmd->command_header->ctba = __force_bit2int cpu_to_le32(cmd->command_dma & 0xFFFFFFFF); -} - static struct mtip_cmd *mtip_get_int_command(struct driver_data *dd) { struct request *rq; @@ -199,9 +180,6 @@ static struct mtip_cmd *mtip_get_int_com if (IS_ERR(rq)) return NULL; - /* Internal cmd isn't submitted via .queue_rq */ - mtip_init_cmd_header(rq); - return blk_mq_rq_to_pdu(rq); } @@ -3833,8 +3811,6 @@ static int mtip_queue_rq(struct blk_mq_h struct request *rq = bd->rq; int ret; - mtip_init_cmd_header(rq); - if (unlikely(mtip_check_unal_depth(hctx, rq))) return BLK_MQ_RQ_QUEUE_BUSY; @@ -3866,6 +3842,7 @@ static int mtip_init_cmd(void *data, str { struct driver_data *dd = data; struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq); + u32 host_cap_64 = readl(dd->mmio + HOST_CAP) & HOST_CAP_64; /* * For flush requests, request_idx starts at the end of the @@ -3882,6 +3859,17 @@ static int mtip_init_cmd(void *data, str memset(cmd->command, 0, CMD_DMA_ALLOC_SZ); + /* Point the command headers at the command tables. */ + cmd->command_header = dd->port->command_list + + (sizeof(struct mtip_cmd_hdr) * request_idx); + cmd->command_header_dma = dd->port->command_list_dma + + (sizeof(struct mtip_cmd_hdr) * request_idx); + + if (host_cap_64) + cmd->command_header->ctbau = __force_bit2int cpu_to_le32((cmd->command_dma >> 16) >> 16); + + cmd->command_header->ctba = __force_bit2int cpu_to_le32(cmd->command_dma & 0xFFFFFFFF); + sg_init_table(cmd->sg, MTIP_MAX_SG); return 0; } Patches currently in stable-queue which might be from gregkh@xxxxxxxxxxxxxxxxxxx are queue-4.9/rdma-ucma-check-af-family-prior-resolving-address.patch queue-4.9/documentation-pinctrl-palmas-add-ti-palmas-powerhold-override-property-definition.patch queue-4.9/netfilter-x_tables-add-and-use-xt_check_proc_name.patch queue-4.9/powerpc-64s-fix-lost-pending-interrupt-due-to-race-causing-lost-update-to-irq_happened.patch queue-4.9/usb-serial-ftdi_sio-add-support-for-harman-firmwarehubemulator.patch queue-4.9/dm-ioctl-remove-double-parentheses.patch queue-4.9/arm64-avoid-overflow-in-va_start-and-page_offset.patch queue-4.9/btrfs-remove-extra-parentheses-from-condition-in-copy_items.patch queue-4.9/arm-dts-am57xx-idk-common-add-overide-powerhold-property.patch queue-4.9/revert-mtip32xx-use-runtime-tag-to-initialize-command-header.patch queue-4.9/vt-change-sgr-21-to-follow-the-standards.patch queue-4.9/revert-spi-bcm-qspi-shut-up-warning-about-cfi-header-inclusion.patch queue-4.9/arm64-mm-add-arm64_kernel_unmapped_at_el0-helper.patch queue-4.9/genirq-use-cpumask_available-for-check-of-cpumask-variable.patch queue-4.9/arm64-entry-reword-comment-about-post_ttbr_update_workaround.patch queue-4.9/fix-slab-name-biovec-1-21-12.patch queue-4.9/arm64-kaslr-put-kernel-vectors-address-in-separate-data-page.patch queue-4.9/nl80211-fix-enum-type-of-variable-in-nl80211_put_sta_rate.patch queue-4.9/xfrm_user-uncoditionally-validate-esn-replay-attribute-struct.patch queue-4.9/selinux-remove-redundant-check-for-unknown-labeling-behavior.patch queue-4.9/fs-compat-remove-warning-from-compatible_ioctl.patch queue-4.9/mm-vmscan.c-fix-unsequenced-modification-and-access-warning.patch queue-4.9/arm64-turn-on-kpti-only-on-cpus-that-need-it.patch queue-4.9/usb-dwc2-improve-gadget-state-disconnection-handling.patch queue-4.9/crypto-x86-cast5-avx-fix-ecb-encryption-when-long-sg-follows-short-one.patch queue-4.9/arm64-force-kpti-to-be-disabled-on-cavium-thunderx.patch queue-4.9/bluetooth-fix-missing-encryption-refresh-on-security-request.patch queue-4.9/revert-arm-dts-omap3-n900-fix-the-audio-codec-s-reset-pin.patch queue-4.9/hid-sony-use-led_core_suspendresume.patch queue-4.9/arm64-mm-allocate-asids-in-pairs.patch queue-4.9/mtd-jedec_probe-fix-crash-in-jedec_read_mfr.patch queue-4.9/input-i8042-add-lenovo-thinkpad-l460-to-i8042-reset-list.patch queue-4.9/perf-hwbp-simplify-the-perf-hwbp-code-fix-documentation.patch queue-4.9/xgene_enet-remove-bogus-forward-declarations.patch queue-4.9/arm64-tls-avoid-unconditional-zeroing-of-tpidrro_el0-for-native-tasks.patch queue-4.9/input-alps-fix-trackstick-detection-on-thinkpad-l570-and-latitude-7370.patch queue-4.9/arm64-use-ret-instruction-for-exiting-the-trampoline.patch queue-4.9/arm64-entry-explicitly-pass-exception-level-to-kernel_ventry-macro.patch queue-4.9/rdma-ucma-check-that-device-is-connected-prior-to-access-it.patch queue-4.9/scsi-virtio_scsi-always-read-vpd-pages-for-multiqueue-too.patch queue-4.9/usb-gadget-remove-redundant-self-assignment.patch queue-4.9/media-usbtv-prevent-double-free-in-error-case.patch queue-4.9/arm64-kpti-make-use-of-ng-dependent-on-arm64_kernel_unmapped_at_el0.patch queue-4.9/ipc-shm.c-add-split-function-to-shm_vm_ops.patch queue-4.9/revert-arm-dts-am335x-pepper-fix-the-audio-codec-s-reset-pin.patch queue-4.9/staging-comedi-ni_mio_common-ack-ai-fifo-error-interrupts.patch queue-4.9/alsa-usb-audio-add-native-dsd-support-for-teac-ud-301.patch queue-4.9/arm64-mm-use-non-global-mappings-for-kernel-space.patch queue-4.9/alsa-pcm-potential-uninitialized-return-values.patch queue-4.9/jiffies.h-declare-jiffies-and-jiffies_64-with-____cacheline_aligned_in_smp.patch queue-4.9/rdma-ucma-fix-use-after-free-access-in-ucma_close.patch queue-4.9/arm64-capabilities-handle-duplicate-entries-for-a-capability.patch queue-4.9/arm64-entry-hook-up-entry-trampoline-to-exception-vectors.patch queue-4.9/selinux-remove-unnecessary-check-of-array-base-in-selinux_set_mapping.patch queue-4.9/arm-8746-1-vfp-go-back-to-clearing-vfp_current_hw_state.patch queue-4.9/xfrm-refuse-to-insert-32-bit-userspace-socket-policies-on-64-bit-systems.patch queue-4.9/pci-make-pci_rom_address_mask-a-32-bit-constant.patch queue-4.9/ceph-only-dirty-iter_iovec-pages-for-direct-read.patch queue-4.9/netfilter-bridge-ebt_among-add-more-missing-match-size-checks.patch queue-4.9/arm64-mm-invalidate-both-kernel-and-user-asids-when-performing-tlbi.patch queue-4.9/arm64-mm-map-entry-trampoline-into-trampoline-and-kernel-page-tables.patch queue-4.9/md-raid10-reset-the-first-at-the-end-of-loop.patch queue-4.9/module-extend-rodata-off-boot-cmdline-parameter-to-module-mappings.patch queue-4.9/arm64-kconfig-reword-unmap_kernel_at_el0-kconfig-entry.patch queue-4.9/kprobes-x86-fix-to-set-rwx-bits-correctly-before-releasing-trampoline.patch queue-4.9/arm64-mm-move-asid-from-ttbr0-to-ttbr1.patch queue-4.9/rdma-ucma-ensure-that-cm_id-exists-prior-to-access-it.patch queue-4.9/llist-clang-introduce-member_address_is_nonnull.patch queue-4.9/frv-declare-jiffies-to-be-located-in-the-.data-section.patch queue-4.9/arm64-allow-checking-of-a-cpu-local-erratum.patch queue-4.9/arm64-take-into-account-id_aa64pfr0_el1.csv3.patch queue-4.9/mac80211-ibss-fix-channel-type-enum-in-ieee80211_sta_join_ibss.patch queue-4.9/arm-dts-am57xx-beagle-x15-common-add-overide-powerhold-property.patch queue-4.9/powerpc-64s-fix-i-side-slb-miss-bad-address-handler-saving-nonvolatile-gprs.patch queue-4.9/rdma-ucma-introduce-safer-rdma_addr_size-variants.patch queue-4.9/netfilter-nf_nat_h323-fix-logical-not-parentheses-warning.patch queue-4.9/mei-remove-dev_err-message-on-an-unsupported-ioctl.patch queue-4.9/net-hns-fix-ethtool-private-flags.patch queue-4.9/arm64-kconfig-add-config_unmap_kernel_at_el0.patch queue-4.9/rdma-ucma-check-that-device-exists-prior-to-accessing-it.patch queue-4.9/arm64-idmap-use-awx-flags-for-.idmap.text-.pushsection-directives.patch queue-4.9/spi-davinci-fix-up-dma_mapping_error-incorrect-patch.patch queue-4.9/net-xfrm-use-preempt-safe-this_cpu_read-in-ipcomp_alloc_tfms.patch queue-4.9/cfg80211-fix-array-bounds-warning-in-fragment-copy.patch queue-4.9/arm-dts-dra7-add-power-hold-and-power-controller-properties-to-palmas.patch queue-4.9/arm64-factor-out-entry-stack-manipulation.patch queue-4.9/input-mousedev-fix-implicit-conversion-warning.patch queue-4.9/input-i8042-enable-mux-on-sony-vaio-vgn-cs-series-to-fix-touchpad.patch queue-4.9/arm64-entry-add-exception-trampoline-page-for-exceptions-from-el0.patch queue-4.9/netfilter-ctnetlink-make-some-parameters-integer-to-avoid-enum-mismatch.patch queue-4.9/arm64-kpti-add-enable-callback-to-remap-swapper-using-ng-mappings.patch queue-4.9/alsa-pcm-use-dma_bytes-as-size-parameter-in-dma_mmap_coherent.patch queue-4.9/revert-ip6_vti-adjust-vti-mtu-according-to-mtu-of-lower-device.patch queue-4.9/parport_pc-add-support-for-wch-ch382l-pci-e-single-parallel-port-card.patch queue-4.9/mac80211-fix-clang-warning-about-constant-operand-in-logical-operation.patch queue-4.9/cpumask-add-helper-cpumask_available.patch queue-4.9/usb-serial-ftdi_sio-add-rt-systems-vx-8-cable.patch queue-4.9/arm64-entry-add-fake-cpu-feature-for-unmapping-the-kernel-at-el0.patch queue-4.9/usb-serial-cp210x-add-eldat-easywave-rx09-id.patch queue-4.9/arm64-cputype-add-midr-values-for-cavium-thunderx2-cpus.patch queue-4.9/crypto-ahash-fix-early-termination-in-hash-walk.patch queue-4.9/partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch