Oops, nope, I've dropped this one now, thanks. greg k-h On Mon, Apr 10, 2017 at 06:06:40PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > This is a note to let you know that I've just added the patch titled > > scsi: ufs: refactor device descriptor reading > > 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: > scsi-ufs-refactor-device-descriptor-reading.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 Mon Apr 10 17:43:56 CEST 2017 > From: alexander.levin@xxxxxxxxxxx > Date: Tue, 4 Apr 2017 19:32:21 +0000 > Subject: scsi: ufs: refactor device descriptor reading > To: "gregkh@xxxxxxxxxxxxxxxxxxx" <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: "stable@xxxxxxxxxxxxxxx" <stable@xxxxxxxxxxxxxxx> > Message-ID: <20170404193158.19041-52-alexander.levin@xxxxxxxxxxx> > > From: Tomas Winkler <tomas.winkler@xxxxxxxxx> > > [ Upstream commit 93fdd5ac64bbe80dac6416f048405362d7ef0945 ] > > Pull device descriptor reading out of ufs quirk so it can be used also > for other purposes. > > Revamp the fixup setup: > > 1. Rename ufs_device_info to ufs_dev_desc as very similar name > ufs_dev_info is already in use. > > 2. Make the handlers static as they are not used out of the ufshdc.c > file. > > [mkp: applied by hand] > > Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx> > Reviewed-by: Subhash Jadavani <subhashj@xxxxxxxxxxxxxx> > Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> > Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/scsi/ufs/ufs.h | 12 ++++++++++++ > drivers/scsi/ufs/ufs_quirks.h | 28 ++++++---------------------- > drivers/scsi/ufs/ufshcd.c | 40 +++++++++++++++++++--------------------- > 3 files changed, 37 insertions(+), 43 deletions(-) > > --- a/drivers/scsi/ufs/ufs.h > +++ b/drivers/scsi/ufs/ufs.h > @@ -522,4 +522,16 @@ struct ufs_dev_info { > bool is_lu_power_on_wp; > }; > > +#define MAX_MODEL_LEN 16 > +/** > + * ufs_dev_desc - ufs device details from the device descriptor > + * > + * @wmanufacturerid: card details > + * @model: card model > + */ > +struct ufs_dev_desc { > + u16 wmanufacturerid; > + char model[MAX_MODEL_LEN + 1]; > +}; > + > #endif /* End of Header */ > --- a/drivers/scsi/ufs/ufs_quirks.h > +++ b/drivers/scsi/ufs/ufs_quirks.h > @@ -21,41 +21,28 @@ > #define UFS_ANY_VENDOR 0xFFFF > #define UFS_ANY_MODEL "ANY_MODEL" > > -#define MAX_MODEL_LEN 16 > - > #define UFS_VENDOR_TOSHIBA 0x198 > #define UFS_VENDOR_SAMSUNG 0x1CE > #define UFS_VENDOR_SKHYNIX 0x1AD > > /** > - * ufs_device_info - ufs device details > - * @wmanufacturerid: card details > - * @model: card model > - */ > -struct ufs_device_info { > - u16 wmanufacturerid; > - char model[MAX_MODEL_LEN + 1]; > -}; > - > -/** > * ufs_dev_fix - ufs device quirk info > * @card: ufs card details > * @quirk: device quirk > */ > struct ufs_dev_fix { > - struct ufs_device_info card; > + struct ufs_dev_desc card; > unsigned int quirk; > }; > > #define END_FIX { { 0 }, 0 } > > /* add specific device quirk */ > -#define UFS_FIX(_vendor, _model, _quirk) \ > - { \ > - .card.wmanufacturerid = (_vendor),\ > - .card.model = (_model), \ > - .quirk = (_quirk), \ > - } > +#define UFS_FIX(_vendor, _model, _quirk) { \ > + .card.wmanufacturerid = (_vendor),\ > + .card.model = (_model), \ > + .quirk = (_quirk), \ > +} > > /* > * If UFS device is having issue in processing LCC (Line Control > @@ -144,7 +131,4 @@ struct ufs_dev_fix { > */ > #define UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME (1 << 8) > > -struct ufs_hba; > -void ufs_advertise_fixup_device(struct ufs_hba *hba); > - > #endif /* UFS_QUIRKS_H_ */ > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -4874,8 +4874,8 @@ out: > return ret; > } > > -static int ufs_get_device_info(struct ufs_hba *hba, > - struct ufs_device_info *card_data) > +static int ufs_get_device_desc(struct ufs_hba *hba, > + struct ufs_dev_desc *dev_desc) > { > int err; > u8 model_index; > @@ -4894,7 +4894,7 @@ static int ufs_get_device_info(struct uf > * getting vendor (manufacturerID) and Bank Index in big endian > * format > */ > - card_data->wmanufacturerid = desc_buf[DEVICE_DESC_PARAM_MANF_ID] << 8 | > + dev_desc->wmanufacturerid = desc_buf[DEVICE_DESC_PARAM_MANF_ID] << 8 | > desc_buf[DEVICE_DESC_PARAM_MANF_ID + 1]; > > model_index = desc_buf[DEVICE_DESC_PARAM_PRDCT_NAME]; > @@ -4908,36 +4908,26 @@ static int ufs_get_device_info(struct uf > } > > str_desc_buf[QUERY_DESC_STRING_MAX_SIZE] = '\0'; > - strlcpy(card_data->model, (str_desc_buf + QUERY_DESC_HDR_SIZE), > + strlcpy(dev_desc->model, (str_desc_buf + QUERY_DESC_HDR_SIZE), > min_t(u8, str_desc_buf[QUERY_DESC_LENGTH_OFFSET], > MAX_MODEL_LEN)); > > /* Null terminate the model string */ > - card_data->model[MAX_MODEL_LEN] = '\0'; > + dev_desc->model[MAX_MODEL_LEN] = '\0'; > > out: > return err; > } > > -void ufs_advertise_fixup_device(struct ufs_hba *hba) > +static void ufs_fixup_device_setup(struct ufs_hba *hba, > + struct ufs_dev_desc *dev_desc) > { > - int err; > struct ufs_dev_fix *f; > - struct ufs_device_info card_data; > - > - card_data.wmanufacturerid = 0; > - > - err = ufs_get_device_info(hba, &card_data); > - if (err) { > - dev_err(hba->dev, "%s: Failed getting device info. err = %d\n", > - __func__, err); > - return; > - } > > for (f = ufs_fixups; f->quirk; f++) { > - if (((f->card.wmanufacturerid == card_data.wmanufacturerid) || > - (f->card.wmanufacturerid == UFS_ANY_VENDOR)) && > - (STR_PRFX_EQUAL(f->card.model, card_data.model) || > + if ((f->card.wmanufacturerid == dev_desc->wmanufacturerid || > + f->card.wmanufacturerid == UFS_ANY_VENDOR) && > + (STR_PRFX_EQUAL(f->card.model, dev_desc->model) || > !strcmp(f->card.model, UFS_ANY_MODEL))) > hba->dev_quirks |= f->quirk; > } > @@ -5115,6 +5105,7 @@ static void ufshcd_tune_unipro_params(st > */ > static int ufshcd_probe_hba(struct ufs_hba *hba) > { > + struct ufs_dev_desc card = {0}; > int ret; > > ret = ufshcd_link_startup(hba); > @@ -5138,7 +5129,14 @@ static int ufshcd_probe_hba(struct ufs_h > if (ret) > goto out; > > - ufs_advertise_fixup_device(hba); > + ret = ufs_get_device_desc(hba, &card); > + if (ret) { > + dev_err(hba->dev, "%s: Failed getting device info. err = %d\n", > + __func__, ret); > + goto out; > + } > + > + ufs_fixup_device_setup(hba, &card); > ufshcd_tune_unipro_params(hba); > > ret = ufshcd_set_vccq_rail_unused(hba, > > > Patches currently in stable-queue which might be from gregkh@xxxxxxxxxxxxxxxxxxx are > > queue-4.9/staging-android-ashmem-lseek-failed-due-to-no-fmode_lseek.patch > queue-4.9/arm64-dts-hisi-fix-hip06-sas-am-max-trans-quirk.patch > queue-4.9/scsi-ufs-introduce-ufshcd_quirk_prdt_byte_gran-quirk.patch > queue-4.9/acpi-button-change-default-behavior-to-lid_init_state-open.patch > queue-4.9/usb-musb-da8xx-fix-host-mode-suspend.patch > queue-4.9/drm-i915-fix-intel_bdw_ids-definition.patch > queue-4.9/sysfs-be-careful-of-error-returns-from-ops-show.patch > queue-4.9/mips-flush-wrong-invalid-ftlb-entry-for-huge-page.patch > queue-4.9/mips-end-spinlocks-with-.insn.patch > queue-4.9/mmc-sdhci-of-esdhc-remove-default-broken-cd-for-arm.patch > queue-4.9/kvm-arm-arm64-fix-locking-for-kvm_free_stage2_pgd.patch > queue-4.9/powerpc-disable-hfscr-if-tm-is-not-supported.patch > queue-4.9/metag-usercopy-add-missing-fixups.patch > queue-4.9/nios2-reserve-boot-memory-for-device-tree.patch > queue-4.9/alsa-usb-audio-add-implicit-fb-quirk-for-axe-fx-ii.patch > queue-4.9/svcauth_gss-close-connection-when-dropping-an-incoming-message.patch > queue-4.9/platform-x86-asus-wmi-detect-quirk_no_rfkill-from-the-dsdt.patch > queue-4.9/ring-buffer-fix-return-value-check-in-test_ringbuffer.patch > queue-4.9/ppdev-check-before-attaching-port.patch > queue-4.9/firmware-qcom-scm-fix-interrupted-scm-calls.patch > queue-4.9/pci-add-broadcom-northstar2-paxc-quirk-for-device-class-and-mpss.patch > queue-4.9/powerpc-64-fix-flush_-d-i-cache_range-called-from-modules.patch > queue-4.9/drm-sun4i-tcon-move-soc-specific-quirks-to-a-dt-matched-data-structure.patch > queue-4.9/acpi-gpio-do-not-fall-back-to-parsing-_crs-when-we-get-a-deferral.patch > queue-4.9/pci-explain-arm64-acpi-mcfg-quirk-kconfig-and-build-strategy.patch > queue-4.9/metag-usercopy-add-early-abort-to-copy_to_user.patch > queue-4.9/powerpc-crypto-crc32c-vpmsum-fix-missing-preempt_disable.patch > queue-4.9/hid-multitouch-do-not-retrieve-all-reports-for-all-devices.patch > queue-4.9/arm-arm64-kvm-take-mmap_sem-in-kvm_arch_prepare_memory_region.patch > queue-4.9/arm-dts-stih407-family-set-snps-dis_u3_susphy_quirk.patch > queue-4.9/rx51-broken-build.patch > queue-4.9/mips-ralink-fix-typos-in-rt3883-pinctrl.patch > queue-4.9/cfg80211-check-rdev-resume-callback-only-for-registered-wiphy.patch > queue-4.9/metag-usercopy-set-flags-before-addz.patch > queue-4.9/asoc-intel-bytct_rt5640-change-default-capture-settings.patch > queue-4.9/metag-usercopy-fix-src-fixup-in-from-user-rapf-loops.patch > queue-4.9/hid-asus-fix-keyboard-support.patch > queue-4.9/drm-sun4i-add-compatible-string-for-a31-a31s-tcon-timing-controller.patch > queue-4.9/arm64-pci-manage-controller-specific-data-on-per-controller-basis.patch > queue-4.9/platform-x86-acer-wmi-only-supports-amw0_guid1-on-acer-family.patch > queue-4.9/xtensa-make-__pa-work-with-uncached-kseg-addresses.patch > queue-4.9/asoc-codecs-rt5670-add-quirk-for-lenovo-thinkpad-10.patch > queue-4.9/clk-lpc32xx-add-a-quirk-for-pwm-and-ms-clock-dividers.patch > queue-4.9/powerpc-mm-add-missing-global-tlb-invalidate-if-cxl-is-active.patch > queue-4.9/tools-power-turbostat-dump-atom-p-states-correctly.patch > queue-4.9/clocksource-drivers-arm_arch_timer-don-t-assume-clock-runs-in-suspend.patch > queue-4.9/asoc-intel-cht_bsw_rt5645-add-baytrail-mclk-support.patch > queue-4.9/watchdog-s3c2410-fix-infinite-interrupt-in-soft-mode.patch > queue-4.9/arm64-pci-search-acpi-namespace-to-ensure-ecam-space-is-reserved.patch > queue-4.9/pci-add-mcfg-quirks-for-cavium-thunderx-pass1.x-host-controller.patch > queue-4.9/drm-i915-actually-drive-the-bdw-reserved-ids.patch > queue-4.9/net-mlx4_core-use-device-id-defines.patch > queue-4.9/scsi-ufs-introduce-a-new-ufshcd_statea-ufshcd_state_eh_scheduled.patch > queue-4.9/hid-sensor-hub-add-quirk-for-microsoft-surface-3.patch > queue-4.9/serial-8250_omap-add-omap_dma_tx_kick-quirk-for-am437x.patch > queue-4.9/brcmfmac-use-local-iftype-avoiding-use-after-free-of-virtual-interface.patch > queue-4.9/pci-acpi-check-for-platform-specific-mcfg-quirks.patch > queue-4.9/drm-vmwgfx-remove-getparam-error-message.patch > queue-4.9/mac80211-unconditionally-start-new-netdev-queues-with-itxq-support.patch > queue-4.9/dm-verity-fec-fix-bufio-leaks.patch > queue-4.9/x86-intel_idle-add-cpu-model-0x4a-atom-z34xx-series.patch > queue-4.9/hid-wacom-don-t-apply-generic-settings-to-old-devices.patch > queue-4.9/hid-sensor-hub-add-quirk-for-microchip-mm7150.patch > queue-4.9/arm-kernel-add-smc-structure-parameter.patch > queue-4.9/usb-storage-add-ignore-residue-quirk-for-initio-inic-3619.patch > queue-4.9/drm-vmwgfx-type-check-lookups-of-fence-objects.patch > queue-4.9/hid-asus-add-i2c-touchpad-support.patch > queue-4.9/nvme-simplify-stripe-quirk.patch > queue-4.9/drm-sun4i-add-compatible-strings-for-a31-a31s-display-pipelines.patch > queue-4.9/dm-verity-fec-limit-error-correction-recursion.patch > queue-4.9/drm-edid-constify-edid-quirk-list.patch > queue-4.9/s390-uaccess-get_user-should-zero-on-failure-again.patch > queue-4.9/dm-raid-fix-null-pointer-dereference-for-raid1-without-bitmap.patch > queue-4.9/random-use-chacha20-for-get_random_int-long.patch > queue-4.9/ptrace-fix-ptrace_listen-race-corrupting-task-state.patch > queue-4.9/drm-vmwgfx-fix-integer-overflow-in-vmw_surface_define_ioctl.patch > queue-4.9/pci-sort-the-list-of-devices-with-d3-delay-quirk-by-id.patch > queue-4.9/pci-add-mcfg-quirks-for-x-gene-host-controller.patch > queue-4.9/hid-i2c-hid-add-a-simple-quirk-to-fix-device-defects.patch > queue-4.9/drm-msm-adreno-move-function-declarations-to-header-file.patch > queue-4.9/s390-decompressor-fix-initrd-corruption-caused-by-bss-clear.patch > queue-4.9/pci-disable-msi-for-hisilicon-hip06-hip07-root-ports.patch > queue-4.9/mips-check-tlb-before-handle_ri_rdhwr-for-loongson-3.patch > queue-4.9/pci-add-acs-quirk-for-intel-union-point.patch > queue-4.9/asoc-intel-baytrail-add-quirk-for-lenovo-thinkpad-10.patch > queue-4.9/can-flexcan-add-quirk-flexcan_quirk_enable_eacen_rrs.patch > queue-4.9/metag-usercopy-drop-unused-macros.patch > queue-4.9/pci-expand-vpd-access-disabled-quirk-message.patch > queue-4.9/drm-i915-more-.is_mobile-cleanups-for-bdw.patch > queue-4.9/hid-multitouch-enable-the-surface-4-type-cover-pro-jp-to-report-multitouch-data.patch > queue-4.9/iio-bmg160-reset-chip-when-probing.patch > queue-4.9/orangefs-move-features-validation-to-fix-filesystem-hang.patch > queue-4.9/arm64-mm-unaligned-access-by-user-land-should-be-received-as-sigbus.patch > queue-4.9/powerpc-don-t-try-to-fix-up-misaligned-load-with-reservation-instructions.patch > queue-4.9/usb-chipidea-msm-rely-on-core-to-override-ahbburst.patch > queue-4.9/scsi-ufs-refactor-device-descriptor-reading.patch > queue-4.9/asoc-intel-bytcr_rt5640-quirks-for-insyde-devices.patch > queue-4.9/mips-lantiq-fix-missing-xbar-kernel-panic.patch > queue-4.9/metag-usercopy-zero-rest-of-buffer-from-copy_from_user.patch > queue-4.9/xfs-honor-falloc_fl_keep_size-when-punching-ends-of-files.patch > queue-4.9/hid-multitouch-enable-the-surface-3-type-cover-to-report-multitouch-data.patch > queue-4.9/scsi-ufs-issue-link-starup-2-times-if-device-isn-t-active.patch > queue-4.9/asoc-rt5670-add-missing-10ec5072-acpi-id.patch > queue-4.9/metag-usercopy-fix-alignment-error-checking.patch > queue-4.9/x86-reboot-quirks-add-asus-eeebook-x205ta-reboot-quirk.patch > queue-4.9/input-gpio_keys-add-support-for-gpio-descriptors.patch > queue-4.9/pci-xgene-fix-double-free-on-init-error.patch > queue-4.9/acpi-save-nvs-memory-for-lenovo-g50-45.patch > queue-4.9/asoc-intel-cht_bsw_rt5645-harden-acpi-device-detection.patch > queue-4.9/sata-ahci-da850-implement-a-workaround-for-the-softreset-quirk.patch > queue-4.9/reset-treeid-to-zero-on-smb2-tree_connect.patch > queue-4.9/pci-add-acs-quirk-for-qualcomm-qdf2400-and-qdf2432.patch > queue-4.9/tools-power-turbostat-decode-baytrail-cc6-and-mc6-demotion-configuration.patch > queue-4.9/arm-davinci-pm-support-da8xx-dt-platforms.patch > queue-4.9/documentation-stable-kernel-rules-fix-stable-tag-format.patch > queue-4.9/drm-mga-remove-device_is_agp-callback.patch > queue-4.9/usb-host-xhci-plat-enable-broken_ped-quirk-if-platform-requested.patch > queue-4.9/mm-mempolicy.c-fix-error-handling-in-set_mempolicy-and-mbind.patch > queue-4.9/pci-add-mcfg-quirks-for-qualcomm-qdf2432-host-controller.patch > queue-4.9/amd-xgbe-prepare-for-working-with-more-than-one-type-of-phy.patch > queue-4.9/arm-arm64-kvm-take-mmap_sem-in-stage2_unmap_vm.patch > queue-4.9/mm-page_alloc.c-fix-print-order-in-show_free_areas.patch > queue-4.9/usb-dwc3-host-pass-quirk-broken-port-ped-property-for-known-broken-revisions.patch > queue-4.9/hid-usbhid-add-quirk-for-the-futaba-tosd-5711bb-vfd.patch > queue-4.9/mmc-sdhci-msm-enable-few-quirks.patch > queue-4.9/hid-usbhid-add-quirk-for-mayflash-dragonrise-dolphinbar.patch > queue-4.9/arm-smccc-update-hvc-comment-to-describe-new-quirk-parameter.patch > queue-4.9/hid-usbhid-add-quirks-for-mayflash-dragonrise-gamecube-and-ps3-adapters.patch > queue-4.9/pci-thunder-pem-factor-out-resource-lookup.patch > queue-4.9/pci-acpi-extend-pci_mcfg_lookup-to-return-ecam-config-accessors.patch > queue-4.9/mips-c-r4k-fix-loongson-3-s-vcache-scache-waysize-calculation.patch > queue-4.9/platform-x86-asus-wmi-set-specified-xusb2pr-value-for-x550lb.patch > queue-4.9/drm-vmwgfx-avoid-calling-vzalloc-with-a-0-size-in-vmw_get_cap_3d_ioctl.patch > queue-4.9/usb-xhci-add-quirk-flag-for-broken-ped-bits.patch > queue-4.9/scsi-ufs-ensure-that-host-pa_tactivate-is-higher-than-device.patch > queue-4.9/mips-force-o32-fp64-support-on-32bit-mips64r6-kernels.patch > queue-4.9/arm-davinci-add-skeleton-for-pdata-quirks.patch > queue-4.9/usb-dwc3-gadget-delay-unmap-of-bounced-requests.patch > queue-4.9/x86-reboot-quirks-fix-typo-in-asus-eeebook-x205ta-reboot-quirk.patch > queue-4.9/mips-add-mips_cpu_ftlb-for-loongson-3a-r2.patch > queue-4.9/alsa-usb-audio-add-native-dsd-support-for-teac-501-503-dac.patch > queue-4.9/kbuild-use-cc-disable-warning-consistently-for-maybe-uninitialized.patch > queue-4.9/arm-omap2-fix-init-for-multiple-quirks-for-the-same-soc.patch > queue-4.9/pci-add-mcfg-quirks-for-hisilicon-hip05-06-07-host-controllers.patch > queue-4.9/hid-microsoft-add-surface-4-type-cover-pro-4-not-jp-versions.patch > queue-4.9/ppdev-fix-registering-same-device-name.patch > queue-4.9/pci-add-mcfg-quirks-for-cavium-thunderx-pass2.x-host-controller.patch > queue-4.9/x86-reboot-quirks-add-asus-eeebook-x205ta-w-reboot-quirk.patch > queue-4.9/acpi-sysfs-provide-quirk-mechanism-to-prevent-gpe-flooding.patch > queue-4.9/scsi-ufs-add-quirk-to-increase-host-pa_saveconfigtime.patch > queue-4.9/drm-ttm-drm-vmwgfx-relax-permission-checking-when-opening-surfaces.patch > queue-4.9/arm64-pci-add-local-struct-device-pointers.patch > queue-4.9/drm-vmwgfx-null-pointer-dereference-in-vmw_surface_define_ioctl.patch > queue-4.9/asoc-sun4i-i2s-add-quirks-to-handle-a31-compatible.patch