summaryrefslogtreecommitdiff
path: root/drivers/scsi
AgeCommit message (Collapse)Author
2016-03-23scsi: ufs: increase the scsi query response timeoutSubhash Jadavani
It is found thats UFS device may take longer than 100ms to respond to query requests and in this case we might run into following scenario: 1. UFS host SW sends a query request to UFS device to read an attribute value. SW uses tag #31 for this purpose. 2. UFS host SW waits for 100ms to get the query response (and doorbell to be cleared by UFS host HW). 3. UFS device doesn't respond back within 100ms hence UFS host SW times out waiting for the query response. 4. UFS host SW clears the tag#31 from UTRLCLR register. 5. UFS host SW waits until UFS host HW to clear tag#31 from the doorbell register. 6. UFS host SW retries the same query request on same tag#31 (sends a query request to device to read an attribute value). 7. UFS host HW gets the query response from the device but this was intended as a query response for the 1st query request sent (step-1). 8. Now UFS device sends another query response to host (for query request sent @step-6). Now there are 2 issues that could happen with above scenario: 1. UFS device should have actually responded back with only one query response but it is found that device may respond back with 2 query responses. 2. If UFS device responds back with 2 resposes on same tag, host HW/SW behaviour isn't predictable. To avoid running into above scenario, we would basically allow device to take longer (upto 1.5 seconds) for query response. CRs-Fixed: 966573 Change-Id: I9885cac614eff011b617064edcd31d0e8daddd45 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-23ufs: qcom: add dts property to disable LPM modesGilad Broner
Since msmcobalt RUMI uses QRBTC-V2 UFS PHY, there are a few limitations that must be applied in order to be able to initialize UFS: 1. UFS should remain in PWM-G1 1-Lane and never change its gear, as other gears are not stable 2. hibern8 enter/exit should be bypassed 3. we should avoid any power change (as in runtime suspend/resume) Add "qcom,disable-lpm" property to facilitate disabling of these. Change-Id: I3f1801da1e2bf1ce8ce98f5ab08211683106ae8c Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org> Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
2016-03-23scsi: ufs-qcom-ice: add support to print UFS ICE debug registersSubhash Jadavani
We dump out the register information in case of UFS errors and ICE debug registers are also generally needed to debug these errors. This change calls into ICE driver's debug ops to print out the ICE register dump in error scenarios. CRs-Fixed: 960214 Change-Id: Ifed25208fab588985603bf418b4e77d90d13c440 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-23scsi: ufs: issue link starup 2 times if device isn't activeSubhash Jadavani
If we issue the link startup to the device while its UniPro state is LinkDown (and device state is sleep/power-down) then link startup will not move the device state to Active. Device will only move to active state if the link starup is issued when its UniPro state is LinkUp. So in this case, we would have to issue the link startup 2 times to make sure that device moves to active state. CRs-Fixed: 967639 Change-Id: I140560308262b9d5c184b9cac8d530fb384816d4 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-23scsi: ufs: fix deadlock between clock scaling and clock ungating workSubhash Jadavani
There's a deadlock between clock scaling and clock ungating work if hibern8 exit fails while ungating clocks. ufshcd_exec_dev_cmd() in clock ungating work blocks at taking "clk_scaling_lock" unless clock scaling work completes which had taken "clock_scaling_lock" and it will never be released hence this is a deadlock. Clock ungating context: ---------------------- -000|__switch_to() -001|context_switch(inline) -001|__schedule() -002|schedule() -003|rwsem_down_read_failed() -004|down_read() -005|ufshcd_get_dev_cmd_tag(inline) -005|ufshcd_exec_dev_cmd() -006|ufshcd_verify_dev_init() -007|ufshcd_probe_hba() -008|ufshcd_host_reset_and_restore() -009|ufshcd_link_recovery() -010|ufshcd_uic_hibern8_exit() -011|ufshcd_ungate_work() -012|static_key_count(inline) -012|static_key_false(inline) -012|trace_workqueue_execute_end(inline) -012|process_one_work() -013|process_scheduled_works(inline) -013|worker_thread() -014|kthread() -015|ret_from_fork(asm) -->|exception -016|NSX:0xF0440E59300(asm) ---|end of frame Clock scaling context: ---------------------- -000|__switch_to() -001|context_switch(inline) -001|__schedule() -002|schedule() -003|schedule_timeout() -004|do_wait_for_common(inline) -004|__wait_for_common(inline) -004|wait_for_common() -005|wait_for_completion() -006|flush_work() -007|ufshcd_hold() -008|ufshcd_hold_all() -009|ufshcd_wait_for_doorbell_clr() -010|ufshcd_clock_scaling_prepare(inline) -010|ufshcd_devfreq_scale() -011|ufshcd_devfreq_target() -012|update_devfreq() -013|devfreq_monitor() -014|static_key_count(inline) -014|static_key_false(inline) -014|trace_workqueue_execute_end(inline) -014|process_one_work() -015|worker_thread() -016|kthread() -017|ret_from_fork(asm) -->|exception -018|NSR:0x2A714C(asm) ---|end of frame This change is fixing this by moving ufshcd_hold_all() in ufshcd_devfreq_scale() to the beginning of the function so that clk_scaling_lock is acquired only after clock ungating completes. CRs-Fixed: 963407 Change-Id: I83788c3212baeab31cf1bf877ca0aaf9005ca661 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-23Merge remote-tracking branch 'lsk-44/linux-linaro-lsk-v4.4' into 44rc2David Keitel
* lsk-44/linux-linaro-lsk-v4.4: Linux 4.4.3 modules: fix modparam async_probe request module: wrapper for symbol name. itimers: Handle relative timers with CONFIG_TIME_LOW_RES proper posix-timers: Handle relative timers with CONFIG_TIME_LOW_RES proper timerfd: Handle relative timers with CONFIG_TIME_LOW_RES proper prctl: take mmap sem for writing to protect against others xfs: log mount failures don't wait for buffers to be released Revert "xfs: clear PF_NOFREEZE for xfsaild kthread" xfs: inode recovery readahead can race with inode buffer creation libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct ovl: setattr: check permissions before copy-up ovl: root: copy attr ovl: check dentry positiveness in ovl_cleanup_whiteouts() ovl: use a minimal buffer in ovl_copy_xattr ovl: allow zero size xattr futex: Drop refcount if requeue_pi() acquired the rtmutex devm_memremap_release(): fix memremap'd addr handling ipc/shm: handle removed segments gracefully in shm_mmap() intel_scu_ipcutil: underflow in scu_reg_access() mm,thp: khugepaged: call pte flush at the time of collapse dump_stack: avoid potential deadlocks radix-tree: fix oops after radix_tree_iter_retry drivers/hwspinlock: fix race between radix tree insertion and lookup radix-tree: fix race in gang lookup MAINTAINERS: return arch/sh to maintained state, with new maintainers memcg: only free spare array when readers are done numa: fix /proc/<pid>/numa_maps for hugetlbfs on s390 fs/hugetlbfs/inode.c: fix bugs in hugetlb_vmtruncate_list() scripts/bloat-o-meter: fix python3 syntax error dma-debug: switch check from _text to _stext m32r: fix m32104ut_defconfig build fail xhci: Fix list corruption in urb dequeue at host removal Revert "xhci: don't finish a TD if we get a short-transfer event mid TD" iommu/vt-d: Clear PPR bit to ensure we get more page request interrupts iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG iommu/vt-d: Fix mm refcounting to hold mm_count not mm_users iommu/amd: Correct the wrong setting of alias DTE in do_attach iommu/vt-d: Don't skip PCI devices when disabling IOTLB Input: vmmouse - fix absolute device registration string_helpers: fix precision loss for some inputs Input: i8042 - add Fujitsu Lifebook U745 to the nomux list Input: elantech - mark protocols v2 and v3 as semi-mt mm: fix regression in remap_file_pages() emulation mm: replace vma_lock_anon_vma with anon_vma_lock_read/write mm: fix mlock accouting libnvdimm: fix namespace object confusion in is_uuid_busy() mm: soft-offline: check return value in second __get_any_page() call perf kvm record/report: 'unprocessable sample' error while recording/reporting guest data KVM: PPC: Fix ONE_REG AltiVec support KVM: PPC: Fix emulation of H_SET_DABR/X on POWER8 KVM: arm/arm64: Fix reference to uninitialised VGIC arm64: dma-mapping: fix handling of devices registered before arch_initcall ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata ARM: OMAP2+: Fix save_secure_ram_context for rodata ARM: OMAP2+: Fix l2dis_3630 for rodata ARM: OMAP2+: Fix l2_inv_api_params for rodata ARM: OMAP2+: Fix wait_dll_lock_timed for rodata ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type ARM: dts: at91: sama5d4: fix instance id of DBGU ARM: dts: at91: sama5d4 xplained: properly mux phy interrupt ARM: dts: omap5-board-common: enable rtc and charging of backup battery ARM: dts: Fix omap5 PMIC control lines for RTC writes ARM: dts: Fix wl12xx missing clocks that cause hangs ARM: nomadik: fix up SD/MMC DT settings ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() ARM: 8519/1: ICST: try other dividends than 1 arm64: mm: avoid calling apply_to_page_range on empty range ARM: mvebu: remove duplicated regulator definition in Armada 388 GP powerpc/ioda: Set "read" permission when "write" is set powerpc/powernv: Fix stale PE primary bus powerpc/eeh: Fix stale cached primary bus powerpc/eeh: Fix PE location code SUNRPC: Fixup socket wait for memory udf: Check output buffer length when converting name to CS0 udf: Prevent buffer overrun with multi-byte characters udf: limit the maximum number of indirect extents in a row pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn nfs: Fix race in __update_open_stateid() pNFS/flexfiles: Fix an Oopsable typo in ff_mirror_match_fh() NFS: Fix attribute cache revalidation cifs: fix erroneous return value cifs_dbg() outputs an uninitialized buffer in cifs_readdir() cifs: fix race between call_async() and reconnect() cifs: Ratelimit kernel log messages iio: inkern: fix a NULL dereference on error iio: pressure: mpl115: fix temperature offset sign iio: light: acpi-als: Report data as processed iio: dac: mcp4725: set iio name property in sysfs iio: add IIO_TRIGGER dependency to STK8BA50 iio: add HAS_IOMEM dependency to VF610_ADC iio-light: Use a signed return type for ltr501_match_samp_freq() iio:adc:ti_am335x_adc Fix buffered mode by identifying as software buffer. iio: adis_buffer: Fix out-of-bounds memory access scsi: fix soft lockup in scsi_remove_target() on module removal SCSI: Add Marvell Console to VPD blacklist scsi_dh_rdac: always retry MODE SELECT on command lock violation drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration SCSI: fix crashes in sd and sr runtime PM iscsi-target: Fix potential dead-lock during node acl delete scsi: add Synology to 1024 sector blacklist klist: fix starting point removed bug in klist iterators tracepoints: Do not trace when cpu is offline tracing: Fix freak link error caused by branch tracer perf tools: tracepoint_error() can receive e=NULL, robustify it tools lib traceevent: Fix output of %llu for 64 bit values read on 32 bit machines ptrace: use fsuid, fsgid, effective creds for fs access checks Btrfs: fix direct IO requests not reporting IO error to user space Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl Btrfs: fix page reading in extent_same ioctl leading to csum errors Btrfs: fix invalid page accesses in extent_same (dedup) ioctl btrfs: properly set the termination value of ctx->pos in readdir Revert "btrfs: clear PF_NOFREEZE in cleaner_kthread()" Btrfs: fix fitrim discarding device area reserved for boot loader's use btrfs: handle invalid num_stripes in sys_array ext4: don't read blocks from disk after extents being swapped ext4: fix potential integer overflow ext4: fix scheduling in atomic on group checksum failure serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) serial: 8250_pci: Add Intel Broadwell ports tty: Add support for PCIe WCH382 2S multi-IO card pty: make sure super_block is still valid in final /dev/tty close pty: fix possible use after free of tty->driver_data staging/speakup: Use tty_ldisc_ref() for paste kworker phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload phy: twl4030-usb: Relase usb phy on unload ALSA: seq: Fix double port list deletion ALSA: seq: Fix leak of pool buffer at concurrent writes ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream ALSA: hda - Cancel probe work instead of flush at remove x86/mm: Fix vmalloc_fault() to handle large pages properly x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in __copy_user_nocache() x86/uaccess/64: Make the __copy_user_nocache() assembly code more readable x86/mm/pat: Avoid truncation when converting cpa->numpages to address x86/mm: Fix types used in pgprot cacheability flags translations Linux 4.4.2 HID: multitouch: fix input mode switching on some Elan panels mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any progress zsmalloc: fix migrate_zspage-zs_free race condition zram: don't call idr_remove() from zram_remove() zram: try vmalloc() after kmalloc() zram/zcomp: use GFP_NOIO to allocate streams rtlwifi: rtl8821ae: Fix 5G failure when EEPROM is incorrectly encoded rtlwifi: rtl8821ae: Fix errors in parameter initialization crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init() crypto: atmel-sha - remove calls of clk_prepare() from atomic contexts crypto: atmel-sha - fix atmel_sha_remove() crypto: algif_skcipher - Do not set MAY_BACKLOG on the async path crypto: algif_skcipher - Do not dereference ctx without socket lock crypto: algif_skcipher - Do not assume that req is unchanged crypto: user - lock crypto_alg_list on alg dump EVM: Use crypto_memneq() for digest comparisons crypto: algif_hash - wait for crypto_ahash_init() to complete crypto: shash - Fix has_key setting crypto: chacha20-ssse3 - Align stack pointer to 64 bytes crypto: caam - make write transactions bufferable on PPC platforms crypto: algif_skcipher - sendmsg SG marking is off by one crypto: algif_skcipher - Load TX SG list after waiting crypto: crc32c - Fix crc32c soft dependency crypto: algif_skcipher - Fix race condition in skcipher_check_key crypto: algif_hash - Fix race condition in hash_check_key crypto: af_alg - Forbid bind(2) when nokey child sockets are present crypto: algif_skcipher - Remove custom release parent function crypto: algif_hash - Remove custom release parent function crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey path ahci: Intel DNV device IDs SATA libata: disable forced PORTS_IMPL for >= AHCI 1.3 crypto: algif_skcipher - Add key check exception for cipher_null crypto: skcipher - Add crypto_skcipher_has_setkey crypto: algif_hash - Require setkey before accept(2) crypto: hash - Add crypto_ahash_has_setkey crypto: algif_skcipher - Add nokey compatibility path crypto: af_alg - Add nokey compatibility path crypto: af_alg - Fix socket double-free when accept fails crypto: af_alg - Disallow bind/setkey/... after accept(2) crypto: algif_skcipher - Require setkey before accept(2) sched: Fix crash in sched_init_numa() ext4 crypto: add missing locking for keyring_key access iommu/io-pgtable-arm: Ensure we free the final level on teardown tty: Fix unsafe ldisc reference via ioctl(TIOCGETD) tty: Retry failed reopen if tty teardown in-progress tty: Wait interruptibly for tty lock on reopen n_tty: Fix unsafe reference to "other" ldisc usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms usb: xhci: handle both SSIC ports in PME stuck quirk usb: phy: msm: fix error handling in probe. usb: cdc-acm: send zero packet for intel 7260 modem usb: cdc-acm: handle unlinked urb in acm read callback USB: option: fix Cinterion AHxx enumeration USB: serial: option: Adding support for Telit LE922 USB: cp210x: add ID for IAI USB to RS485 adaptor USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable usb: hub: do not clear BOS field during reset device USB: visor: fix null-deref at probe USB: serial: visor: fix crash on detecting device without write_urbs ASoC: rt5645: fix the shift bit of IN1 boost saa7134-alsa: Only frees registered sound cards ALSA: dummy: Implement timer backend switching more safely ALSA: hda - Fix bad dereference of jack object ALSA: hda - Fix speaker output from VAIO AiO machines Revert "ALSA: hda - Fix noise on Gigabyte Z170X mobo" ALSA: hda - Fix static checker warning in patch_hdmi.c ALSA: hda - Add fixup for Mac Mini 7,1 model ALSA: timer: Fix race between stop and interrupt ALSA: timer: Fix wrong instance passed to slave callbacks ALSA: timer: Fix race at concurrent reads ALSA: timer: Fix link corruption due to double start or stop ALSA: timer: Fix leftover link at closing ALSA: timer: Code cleanup ALSA: seq: Fix lockdep warnings due to double mutex locks ALSA: seq: Fix race at closing in virmidi driver ALSA: seq: Fix yet another races among ALSA timer accesses ASoC: dpcm: fix the BE state on hw_free ALSA: pcm: Fix potential deadlock in OSS emulation ALSA: hda/realtek - Support Dell headset mode for ALC225 ALSA: hda/realtek - Support headset mode for ALC225 ALSA: hda/realtek - New codec support of ALC225 ALSA: rawmidi: Fix race at copying & updating the position ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check ALSA: rawmidi: Make snd_rawmidi_transmit() race-free ALSA: seq: Degrade the error message for too many opens ALSA: seq: Fix incorrect sanity check at snd_seq_oss_synth_cleanup() ALSA: dummy: Disable switching timer backend via sysfs ALSA: compress: Disable GET_CODEC_CAPS ioctl for some architectures ALSA: hda - disable dynamic clock gating on Broxton before reset ALSA: Add missing dependency on CONFIG_SND_TIMER ALSA: bebob: Use a signed return type for get_formation_index ALSA: usb-audio: avoid freeing umidi object twice ALSA: usb-audio: Add native DSD support for PS Audio NuWave DAC ALSA: usb-audio: Fix OPPO HA-1 vendor ID ALSA: usb-audio: Add quirk for Microsoft LifeCam HD-6000 ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay hrtimer: Handle remaining time proper for TIME_LOW_RES md/raid: only permit hot-add of compatible integrity profiles media: i2c: Don't export ir-kbd-i2c module alias parisc: Fix __ARCH_SI_PREAMBLE_SIZE parisc: Protect huge page pte changes with spinlocks printk: do cond_resched() between lines while outputting to consoles tracing/stacktrace: Show entire trace if passed in function not found tracing: Fix stacktrace skip depth in trace_buffer_unlock_commit_regs() PCI: Fix minimum allocation address overwrite PCI: host: Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD mtd: nand: assign reasonable default name for NAND drivers wlcore/wl12xx: spi: fix NULL pointer dereference (Oops) wlcore/wl12xx: spi: fix oops on firmware load ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery cleanup ocfs2/dlm: ignore cleaning the migration mle that is inuse ALSA: hda - Implement loopback control switch for Realtek and other codecs block: fix bio splitting on max sectors base/platform: Fix platform drivers with no probe callback HID: usbhid: fix recursive deadlock ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with ocfs2_unblock_lock block: split bios to max possible length NFSv4.1/pnfs: Fixup an lo->plh_block_lgets imbalance in layoutreturn crypto: sun4i-ss - add missing statesize Linux 4.4.1 arm64: kernel: fix architected PMU registers unconditional access arm64: kernel: enforce pmuserenr_el0 initialization and restore arm64: mm: ensure that the zero page is visible to the page table walker arm64: Clear out any singlestep state on a ptrace detach operation powerpc/module: Handle R_PPC64_ENTRY relocations scripts/recordmcount.pl: support data in text section on powerpc powerpc: Make {cmp}xchg* and their atomic_ versions fully ordered powerpc: Make value-returning atomics fully ordered powerpc/tm: Check for already reclaimed tasks batman-adv: Drop immediate orig_node free function batman-adv: Drop immediate batadv_hard_iface free function batman-adv: Drop immediate neigh_ifinfo free function batman-adv: Drop immediate batadv_neigh_node free function batman-adv: Drop immediate batadv_orig_ifinfo free function batman-adv: Avoid recursive call_rcu for batadv_nc_node batman-adv: Avoid recursive call_rcu for batadv_bla_claim team: Replace rcu_read_lock with a mutex in team_vlan_rx_kill_vid net/mlx5_core: Fix trimming down IRQ number bridge: fix lockdep addr_list_lock false positive splat ipv6: update skb->csum when CE mark is propagated net: bpf: reject invalid shifts phonet: properly unshare skbs in phonet_rcv() dwc_eth_qos: Fix dma address for multi-fragment skbs bonding: Prevent IPv6 link local address on enslaved devices net: preserve IP control block during GSO segmentation udp: disallow UFO for sockets with SO_NO_CHECK option net: pktgen: fix null ptr deref in skb allocation sched,cls_flower: set key address type when present tcp_yeah: don't set ssthresh below 2 ipv6: tcp: add rcu locking in tcp_v6_send_synack() net: sctp: prevent writes to cookie_hmac_alg from accessing invalid memory vxlan: fix test which detect duplicate vxlan iface unix: properly account for FDs passed over unix sockets xhci: refuse loading if nousb is used usb: core: lpm: fix usb3_hardware_lpm sysfs node USB: cp210x: add ID for ELV Marble Sound Board 1 rtlwifi: fix memory leak for USB device ASoC: compress: Fix compress device direction check ASoC: wm5110: Fix PGA clear when disabling DRE ALSA: timer: Handle disconnection more safely ALSA: hda - Flush the pending probe work at remove ALSA: hda - Fix missing module loading with model=generic option ALSA: hda - Fix bass pin fixup for ASUS N550JX ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0 ALSA: hrtimer: Fix stall by hrtimer_cancel() ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode ALSA: hda - Add fixup for Dell Latitidue E6540 ALSA: timer: Fix double unlink of active_list ALSA: timer: Fix race among timer ioctls ALSA: hda - fix the headset mic detection problem for a Dell laptop ALSA: timer: Harden slave timer list handling ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices ALSA: hda - Fix white noise on Dell Latitude E5550 ALSA: seq: Fix race at timer setup and close ALSA: usb-audio: Avoid calling usb_autopm_put_interface() at disconnect ALSA: seq: Fix missing NULL check at remove_events ioctl ALSA: hda - Fixup inverted internal mic for Lenovo E50-80 ALSA: usb: Add native DSD support for Oppo HA-1 x86/mm: Improve switch_mm() barrier comments x86/mm: Add barriers and document switch_mm()-vs-flush synchronization x86/boot: Double BOOT_HEAP_SIZE to 64KB x86/reboot/quirks: Add iMac10,1 to pci_reboot_dmi_table[] kvm: x86: Fix vmwrite to SECONDARY_VM_EXEC_CONTROL KVM: x86: correctly print #AC in traces KVM: x86: expose MSR_TSC_AUX to userspace x86/xen: don't reset vcpu_info on a cancelled suspend KEYS: Fix keyring ref leak in join_session_keyring() Conflicts: arch/arm64/kernel/perf_event.c drivers/scsi/sd.c sound/core/compress_offload.c Change-Id: I9f77fe42aaae249c24cd6e170202110ab1426878 Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
2016-03-22scsi: ufs-qcom: fix uninitialized use warningVenkat Gopalakrishnan
Initialize flags before using. Change-Id: Id59be40b89eeac4a560a76590cbaed5055d73d70 Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs-qcom: ifdef msm bus scaling code appropriatelyVenkat Gopalakrishnan
ifdef msm-bus include and api's with CONFIG_MSM_BUS_SCALING. This makes compiling UFS driver clean when MSM_BUS_SCALING is not enabled. Change-Id: I50a3f43c7c1deb1033d4ece1493e0f205d8ed553 Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs-qcom: ifdef qcom ufs crypto code appropriatelyVenkat Gopalakrishnan
ifdef qcom ufs crypto related code based on CONFIG_SCSI_UFS_QCOM_ICE. This makes compiling UFS driver clean when QCOM_ICE is not enabled. Change-Id: I57917ccfa76bc1e80f15a024d1fefd15e0e902da Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: pm: Remove use of CONFIG_PM_RUNTIMEVenkat Gopalakrishnan
CONFIG_PM_RUNTIME has been eliminated as of kernel 4.4 in favor of just using CONFIG_PM, hence remove its use. Change-Id: I096cde564c7bf2c7a041f0948617a7d74df71dd9 Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: sd: remove check_events callbackSubhash Jadavani
->check_events() callback sends the Test Unit Ready command to check if underlying media state has changed or not, this is generally not required for embedded storage media (such as UFS). We have seen race between Test Unit Ready command and runtime suspend context which basically can put the Test Unit Ready command at the head of the request queue when queue's rpm_status is SUSPENDING. In this case, scsi_request_fn will not pull in the Test Unit Ready command as REQ_PM flag is not set for it. This basically causes the deadlock situation. Currently there is no better way to fix this error other than removing the check_events() callback which is anyway not required for embedded storage like UFS. Change-Id: Idac374ba1674fede38cb3dcfc2c1f8d3db234d1d Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: sd: add null pointer check for scsi disk pointerSubhash Jadavani
scsi disk driver probe first calls the PM runtime get before actually allocating the scsi disk structure and if the PM runtime status was set to suspended at this time then it will trigger scsi disk driver's resume callback. But scsi disk driver's resume callback assumes that scsi disk structure is always available when it is called but that's not true always. Fix this issue by skipping the scsi disk resume if scsi disk structure isn't allocated. Change-Id: Ica920b1e07976140dc29847f4dc61aac9fa402ae Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: reduce the informational log messages during initial probeSubhash Jadavani
There are many informational log messages printed during the LUN detection and while binding the scsi device with upper level driver. Most of these messages are KERN_NOTICE level and hence would show up on serial console. In fact, as we are using the dev_printk() APIs even KERN_DEBUG level messages are ending up on console. This patch removes most of these informational log messages to reduce the load on serial console during boot up. Change-Id: I332b71f529e04039645d1f41783395da8abc7f0b Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: pm: keep request queue and scsi device runtime status in syncSubhash Jadavani
If scsi device is not runtime suspended while system resumes then scsi device's runtime PM status gets changed to RPM_ACTIVE (if its parent status is already set to RPM_ACTIVE) by the scsi system resume callback. But if the scsi device's runtime PM is managed by block layer then runtime status of scsi device's request queue might still remain in RPM_SUSPENDED hence all the new block requests submitted to the request queue will have to wait until the queue runtime status gets changed to RPM_ACTIVE which never happens as scsi device status is already marked RPM_ACTIVE. Fix this problem by changing the request queue runtime status to RPM_ACTIVE when scsi device runtime status changes to RPM_ACTIVE. Change-Id: I310cf8f1d7f13008b0ab9d87564fc0ac4d2e2314 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: pm: fix deadlock conditionSubhash Jadavani
We are seeing deadlock in scsi runtime resume context, here is the call trace: __switch_to+0x70/0x7c __schedule+0x4e0/0x734 schedule+0x70/0x7c __pm_runtime_barrier+0xdc/0x108 __pm_runtime_disable+0x60/0xf4 scsi_dev_type_resume+0x74/0xb4 scsi_runtime_resume+0x5c/0xbc __rpm_callback+0x3c/0x74 rpm_callback+0x60/0x84 rpm_resume+0x368/0x47c __pm_runtime_resume+0x6c/0x94 scsi_autopm_get_device+0x28/0x60 sg_open+0x148/0x5c0 chrdev_open+0x134/0x16c do_dentry_open+0x260/0x2dc vfs_open+0x3c/0x48 do_last+0x844/0xae8 path_openat+0x220/0x5c4 do_filp_open+0x2c/0x80 do_sys_open+0x160/0x1fc SyS_openat+0xc/0x18 It seems commit 3c31b52f96f7 ("scsi: async sd resume") has introduced a bug where runtime resume (for scsi devices not managed by upper level driver) context end up calling pm_runtime_disable() which waits for the runtime resume to finish and hence causing the deadlock. This change fixes this issue by making sure that we don't call pm_runtime_disable() if we are in runtime PM context. Change-Id: I770060c062ee828ef9117b8e5a4c248f48381f35 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: pm: fix null pointer access during sg_openSubhash Jadavani
When user space application opens any scsi generic device node (/dev/sg*), we will have following call stack: -> sg_open() -> scsi_autopm_get_device() -> pm_runtime_get_sync() -> scsi_runtime_resume() -> sdev_runtime_resume() -> blk_post_runtime_resume() The request queue device pointer (q->dev) is deferenced but it is NULL. q->dev is assigned when blk_pm_runtime_init() is called which only takes place for sd/sr type scsi devices. SCSI generic driver handles runtime PM get/put on its instead of block layer handling it. We can move the runtime PM get/put responsibility to block layer only if all the requests handled by sg driver are getting inserted to block layer request queue but this is not always true. For example, if LLD ioctl is issued via scsi generic ioctl then it may not get converted to block layer request (and hence doesn't get inserted into block layer request queue) and this may put us in situation where LLD driver handler the ioctl when it's runtime suspended. Better solution would be to let the sg driver manage its own runtime PM get/sync operations and fix the broken scsi_runtime_suspend and scsi_runtime_resume callbacks to handle SCSI devices which do not have upper layer driver (like SCSI disk). Change-Id: I1cae7f992f21a1c420d38c275a817d06baa8923d Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [subhashj@codeaurora.org: fixed the compilation failure] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> [venkatg@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: Allow auto suspend override by low-level driverSujit Reddy Thumma
Until now the scsi mid-layer forbids runtime suspend till userspace enables it. This is mainly to quarantine some disks with broken runtime power management or have high latencies executing suspend resume callbacks. If the userspace doesn't enable the runtime suspend the underlying hardware will be always on even when it is not doing any useful work and thus wasting power. Some low-level drivers for the controllers can efficiently use runtime power management to reduce power consumption and improve battery life. Allow runtime suspend parameters override within the LLD itself instead of waiting for userspace to control the power management. Change-Id: I03e96a89d19c174deeb5bd4f94136c77073eb009 Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org> [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: sd: reduce log level for suspend/resume log messagesSubhash Jadavani
Generally driver should be silent during the normal operation of the device hence this change reduces the logs level for suspend/resume messages from KERN_NOTICE to KERN_DEBUG. Change-Id: I154fb7c759aa35ed32ea451729083c93fc385c11 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> [mattw@codeaurora.org: resolved trivial context conflicts] Signed-off-by: Matt Wagantall <mattw@codeaurora.org> [venkatg@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: Adjust DBD setting in mode sense for caching mode page per LLDMaya Erez
Host sends MODE_SENSE_10 with caching mode page, to check if the device supports the cache feature. Some LLD standards requires DBD field to be set to 1. This patch allows LLD to define the setting of DBD if required. Change-Id: I7f6c0ff6613516c3ef49aacc0679b96b8bd9ccc8 Signed-off-by: Maya Erez <merez@codeaurora.org> [mattw@codeaurora.org: resolved a trivial context conflict in Scsi_Host struct definition] Signed-off-by: Matt Wagantall <mattw@codeaurora.org> [subhashj@codeaurora.org: resolved trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi/phy: Remove orphaned files after renamingVenkat Gopalakrishnan
Delete renamed orphan files after rebasing 3.18 ufs driver changes onto 4.4 ufs driver. Change-Id: Id241ad01bbb0fa74e209c66f8a2d97c05088e33b Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs: add checks before setting hibern8/clk-gating on idle statesSubhash Jadavani
"Hibern8 on idle" and "Clock gating on idle" features can be turned on/off selectively which means their state information is only important if that particular feature is enabled. This change makes sure that we only look at state of these features if feature itself is enabled. Change-Id: I25ef3d9dd60e69afe3f2d9dce602ae48f1b4a044 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add quirk to increase host PA_SaveConfigTimeSubhash Jadavani
The maximum value PA_SaveConfigTime is 250 (10us) but this is not enough for some vendors. Gear switch from PWM to HS may fail even with this max. PA_SaveConfigTime. Gear switch can be issued by host controller as an error recovery and any software delay will not help on this case so we need to increase PA_SaveConfigTime to >32us as per vendor recommendation. This change adds a quirk to increase the PA_SaveConfigTime parameter. Change-Id: I02a0394bb07f165ba8ae6c5802567cc6d8ad0d16 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: return -ENOIOCTLCMD for unsupported IOCTLsSubhash Jadavani
UFS compat_ioctl(ufshcd_ioctl) should return -ENOIOCTLCMD for unsupported IOCTLs so that the IOCTLs can fall back to higher layer. Change-Id: If6137edd84d38c264555aa2d00ba3a1cab32edb5 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs-qcom-ice: add null pointer checkSubhash Jadavani
ufs_qcom_ice_req_setup() function might access the uninitialized pointers, this change makes sure that there are no null pointer accesses. Change-Id: I83c3e2f015a474d5eba6ddaeeaa860e79717760f Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add crypto related operationsGilad Broner
UFS specification has been updated and crypto operations were added. Update the UFS driver code with the new registers and sequences to facilitate future usage. Change-Id: I020870f628977c3ebad6cc0afaef3cb1cdd15063 Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
2016-03-22crypto: ice: general driver clean-upGilad Broner
* Removed spinlock as it was not locking against anything * Removed conversion of interrupt status to error number as it is not used by API client, and in case several bits are set only 1 error is ever handled and the rest get lost. Instead pass to the client the complete status. * Removed redundant includes, variables * vops structure is returned after performing a lookup in the DTS. There's no need for that as we already know the structure to return. * Other minor corrections Change-Id: I6d2549ce04c9e4b19fdd8fe3dfee03d83bfd9d77 Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [venkatg@codeaurora.org: dropped ice driver and mmc ice changes] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs: ensure that host pa_tactivate is higher than deviceSubhash Jadavani
Some UFS devices require host PA_TACTIVATE to be higher than device PA_TACTIVATE otherwise it may get stuck during hibern8 sequence. This change allows this by using quirk. Change-Id: Iee1ee7a3e435b34a9e5cca3f5cff3a9b5c36fe1b Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22crypto: ice: Make ICE init & reset API synchronousDinesh K Garg
ICE init & reset can be synchronous now because ICE does not need to go to secure side for any ICE configuration. This would simplify interface and make call more efficient. Change-Id: I7aa4e2d3ba3383d25758b21b8ae261a0220f35f9 Signed-off-by: Dinesh K Garg <dineshg@codeaurora.org> Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org> Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [venkatg@codeaurora.org: dropped ice driver and mmc ice changes] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs-ice: fix ICE error handlerGilad Broner
Current code does not actually handle ICE errors as the relevant quirk is not set. Also, ICE errors are checked only if some host controller error occurred. Removed the quirk and fixed the check for ICE errors. Also, removed redundant API crypto_engine_get_err() and crypto_engine_reset_err(). Change-Id: Ic7f4e9a2cd3771f1f52dff97b2be90d12e32d2e5 Signed-off-by: Gilad Broner <gbroner@codeaurora.org> [venkatg@codeaurora.org: dropped msm/ice.c changes] Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
2016-03-22scsi: ufs: add support for compat ioctlSubhash Jadavani
Add support for compat ioctl so that 32-bit application can access the UFS ioctl calls on 64-bit kernel. Change-Id: Id4793bea84405adc7d692d6cf6f2265d1e491c28 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: allow updating bBootLunEn via ioctlSubhash Jadavani
"bBootLunEn" attribute value decides the active Boot LUN but there could be a case where userspace may want to change it during image update. This change allows writing to this parameter. Change-Id: I6e8d630606d8caf6197ef662003ec1ee646afe81 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: Fix compilation failure with CONFIG_LOCK_STATPatrick Daly
from include/linux/kobject.h:21:0, from include/linux/device.h:17, from include/linux/devfreq.h:16, from drivers/scsi/ufs/ufshcd.c:42: drivers/scsi/ufs/ufshcd.c: In function 'ufshcd_init_clk_gating': drivers/scsi/ufs/ufshcd.c:1548:19: error: 'clk_gating' undeclared (first use in this function) sysfs_attr_init(&clk_gating->enable_attr.attr); Change-Id: Ie61be8bc4472cf8960dc0afc3e0683c761ea177e Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
2016-03-22scsi: ufs-debugfs: overwrite error scenario value via debugfsYaniv Gardi
In the old code, there is no way to "disable" the already enabled error scenarios since the operator in use is a bit-wise OR operator. This change fixes this issue. Now, the new value overwrites the previous value so it's possible to disable all error scenarios by: echo 0 > /d/ufshcd0/err_inj_scenario Change-Id: I21eadb3345f6587edf5232ea3c03702bfdb930ad Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: fix condition in which DME command failure msg is printed outYaniv Gardi
The condition in which error message is printed out was incorrect and resulted error message only if retries exhausted. But retries happens only if DME command is a peer command, and thus DME commands which are not peer commands and fail are not printed out. This change fixes this issue. Change-Id: I43367befd810da0ebe34efd3a93751b582a19565 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: fix inconsistency of power mode when error is injectedYaniv Gardi
There is an inconsistency between the actual power mode of the UFS controller (and UFS device), to the power mode informed to upper layers in case an error is injected during ERR_INJECT_PWR_CHANGE scenario. Meaning, power change error is reported although the power mode has actually changed successfully in the controller and in the device. This change fixes this inconsistency. Also, this change fixes a bug where a pointer to u8 is sent as a pointer to int, which results undesired behavior. Also, this change removes unused error injection scenarios: - ERR_INJECT_HIBERN8_ENTER - ERR_INJECT_HIBERN8_EXIT Change-Id: I14116656862e3db8f5d6a93b5c798a1470a6b716 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: remove redundant condition for power changeYaniv Gardi
The removed condition is already checked inside the routine ufshcd_change_power_mode(). Also, a minor typo is fixed. Change-Id: Ib238ff9c4bdcd380406505d5319bd2d6c0ed6063 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs-qcom: add probe_defer in case phy driver not probed yetYaniv Gardi
In case UFS driver is probed before the phy driver does, the UFS driver should return a PROBE_DEFER code. Change-Id: I94ab353fed35889b92fb2f0baf5ee029894b999b Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: fix parameter type from bool to enum ufs_notify_change_statusYaniv Gardi
This change fixes the signature of the routine ufshcd_vops_clk_scale_notify() and the callback clk_scale_notify to receive enum ufs_notify_change_status instead of bool as their 3rd parameter. Change-Id: I8463f4f5f0a77bcbc3b0bcdfd05d1a02e334dc8e Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs-qcom: fix check of select_major instead of select_minorYaniv Gardi
This change fixes a bug where we check the select_minor value instead of checking the select_major value. Change-Id: I852944215a0be484449b578be09b46095fb01931 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs-debugfs: modify "err_inj_scenario" debugfs entryYaniv Gardi
err_inj_scenario debugfs entry used to be a u32 entity. This change modifies it to be a file entity, so reading it (cat /d/.../err_inj_scenario) helps the user get useful information about the enabled/disabled error scenarios. Change-Id: Ia805e6f5357009752ddcace3ae4ed87061e48759 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: do pm qos unvoting before calling scsi_done callbackSubhash Jadavani
We shouldn't be accessing scsi command's "request" structure after calling scsi_done callback but it seems pm qos unvoting code path is accessing this request structure even after caling the scsi_done callback. Fix this by releasing the pm qos vote before calling scsi_done. Change-Id: I5c8dd6ba7f0b619397924d73c1fd6c36fe86ebc1 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs-debugfs: remove unnecessary error scenario use-casesYaniv Gardi
This change removes error scenario use-cases that have not been implemented yet, and one error scenario (ERR_INJECT_LINK_STARTUP) that anyway is not recoverable. Change-Id: I78948f64ee3868333ec27e17695980b642248dcf Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs-debugfs: remove debugfs ability to control error codesYaniv Gardi
In order to simplify working with error injection feature, and since the capability of controlling error codes per error scenario has not been useful in debugging phase of the driver, it's decided to remove this feature. Now, the error injection framework randomly choose an error code from a list of error codes available per error scenario. Change-Id: Iee34b2aa99321f5f51190f26da364c9c129a3f77 Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
2016-03-22scsi: ufs: add retry for query descriptorsSubhash Jadavani
Query commands have 100ms timeout and it may timeout if they are issued in parallel to ongoing read/write SCSI commands, this change adds the retry (max: 10) in case command timeouts. Change-Id: If60e2dd85614c8e383018b1286a625a5e53f872f Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs-qcom: resume ICE driver after clock ungatingSubhash Jadavani
UFS core driver may power collapse the UFS host controller during clock gating hence we might loose some of the ICE register configuration. In order to restore ICE register configuration, we should call ICE driver's resume callback after ungating UFS clocks. Change-Id: I722a8037d81222c2cd493ebbe608a106f47cedfd Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: change clock gating timeout based on loadSubhash Jadavani
Currently we have the same gating timeout for both high load and low load condition but having the different timeouts would help to save power in low load condition and increase performance in high load condition. This change also adds support to tune these timeouts via sysfs. Change-Id: I0ac79042d0fd0cd6a6a917ebe3b52db2a1abd0b9 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs-qcom: do clock gating and hibern8 @10msSubhash Jadavani
This change enables the aggressive clock gating along with hibern8 at every 10ms. As hibern8 enter was already @10ms, we are now merging it with clock gating which will also be @10ms after this change. This change is needed to save power for real life usecases. Change-Id: I297d0f7d1c379f0b402298dc5dddd92ac33f6f25 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: don't suspend clock scaling during clock gatingSubhash Jadavani
Currently we are suspending clock scaling during clock gating which doesn't allow us to have clock gating timeout lower than clock scaling polling window. If clock gating timeout is smaller than the clock scaling polling window then we will mostly suspend the clock scaling before clock scaling polling window expires and we might get stuck in same state (scaled down or scaled up) for quite a long time. And for this reason, we have clock gating timeout (50ms) greater than clock scaling polling window (40ms). We would like to have aggressive clock gating timeout even lower than the clock scaling polling window hence this change is decoupling the clock scaling suspend/resume from clock gate/ungate. We will not suspend the clock scaling as part of clock gating instead clock scaling context will schedule scaling suspend work if there are no more pending transfer requests. Change-Id: I7c1e7580c63bbbfbad551d17921774afa3d95ca6 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs: add reference counting for scsi block requestsSubhash Jadavani
Currently we call the scsi_block_requests()/scsi_unblock_requests() whenever we want to block/unblock scsi requests but as there is no reference counting, nesting of these calls could leave us in undesired state sometime. Consider following call flow sequence: 1. func1() calls scsi_block_requests() but calls func2() before calling scsi_unblock_requests() 2. func2() calls scsi_block_requests() 3. func2() calls scsi_unblock_requests() 4. func1() calls scsi_unblock_requests() As there is no reference counting, we will have scsi requests unblocked after #3 instead of it to be unblocked only after #4. Though we may not have failures seen with this, we might run into some failures in future. Better solution would be to fix this by adding reference counting. Change-Id: I1eaa39c0716cf41120269cf389ebb322e3006da1 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-03-22scsi: ufs-qcom: don't disable host PHY ref_clk during aggressive gatingSubhash Jadavani
Enabling & disabling host PHY ref_clk generally may have high latencies hence don't disable them during aggresive clock gating otherwise it could affect the UFS performance badly. Change-Id: I1741c75a6295c7c0b0d77ff578ab977213dcc484 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>