Ok, I find out what happens.

While standard SATA setup, chain of functions is called: ... ->
ata_eh_recover -> ata_eh_reset. If SATA is not initialized, then hard
reset is performed (function ata_do_reset() ).

In both drivers I have, function ata_do_reset() returns 0, even if after
this reset device is not working (like my second drive HDD).

There is no sata_down_spd_limit() calls at all. After hard reset second
device is not working, and there is no tries to recover that.

At first time, or every time when I physically hotplug device, or I call
"echo "- - -" > /sys/class/scsi_host/host1/scan", then chain of
functions are called: ata_eh_recover -> ata_eh_schedule_probe, and
variable trials is increasing. After a few hotplugs, when trials >
ATA_EH_PROBE_TRIALS, then sata_down_spd_limit(link, 1) is called and it
cuts down SATA bandwidth. After bandwidth limiting, hard reset is
performed and then device is working.

I think it's wrong behavior when it's try to limit the bandwidth ony
after many hotpluging and hard resets. It could try in one
ata_eh_recover() call.

For my own, I changed a little code of ata_eh_reset() to check if the
device is online after reset:

rc = ata_do_reset(link, reset, classes, deadline, true);
if( ata_link_offline(link) )
  rc = -EPIPE;

At the bottom of ata_eh_reset(), if rc == -EPIPE, then
sata_down_spd_limit() is called and after that. This completely fixes my
problem with not working drive. I don't have to manually reconnect
device to be working. Only issue is some delay performed before next
reset (schedule_timeout_uninterruptible function).


Maybe this conversation should be moved to Linux linux-ide mailing list, t

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1783906

Title:
  Linux 4.15 and onwards fails to initialize some hard drives

Status in linux package in Ubuntu:
  Confirmed
Status in linux source package in Bionic:
  Confirmed
Status in linux source package in Cosmic:
  Confirmed

Bug description:
  I have two hard drives, the main hard drive is a TOSHIBA DT01ACA200
  the second backup hard drive is a Western Digital WD5003AZEX. I
  installed lubuntu 18.04.1 on the Toshiba HDD and it boots just fine,
  the issue is with the second hard drive, when installing the WD HDD
  wouldn't even come as an option to install, and after boot the WD HDD
  still wouldn't come up, this is the dmesg with the stock kernel (4.15)
  https://paste.ubuntu.com/p/kpxh94v2SK/

  ata6 is the WD HDD that refuses to work. The messages:
  [  302.107650] ata6: SError: { CommWake 10B8B Dispar DevExch }
  [  302.107658] ata6: hard resetting link
  [  307.860291] ata6: link is slow to respond, please be patient (ready=0)
  [  312.120898] ata6: COMRESET failed (errno=-16)
  [  363.445120] INFO: task kworker/u8:5:201 blocked for more than 120 seconds.
  [  363.445131]       Not tainted 4.15.0-29-generic #31-Ubuntu
  [  363.445135] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
this message.
  [  363.445140] kworker/u8:5    D    0   201      2 0x80000000
  [  363.445155] Workqueue: events_unbound async_run_entry_fn
  [  363.445157] Call Trace:
  [  363.445171]  __schedule+0x291/0x8a0
  [  363.445177]  schedule+0x2c/0x80
  [  363.445182]  ata_port_wait_eh+0x7c/0xf0
  [  363.445186]  ? wait_woken+0x80/0x80
  [  363.445189]  ata_port_probe+0x28/0x40
  [  363.445192]  async_port_probe+0x2e/0x52
  [  363.445196]  async_run_entry_fn+0x3c/0x150
  [  363.445199]  process_one_work+0x1de/0x410
  [  363.445203]  worker_thread+0x32/0x410
  [  363.445207]  kthread+0x121/0x140
  [  363.445210]  ? process_one_work+0x410/0x410
  [  363.445214]  ? kthread_create_worker_on_cpu+0x70/0x70
  [  363.445218]  ret_from_fork+0x22/0x40

  Repeat constantly. Also when I try to turn off the computer, the
  computer seem to freeze, the lights of the keyboard and mouse turn off
  and the computer just stay on.

  I tried Tiny Core 9.0 which has linux 4.14.10, and i didn't had this
  issue, i also installed linux 4.14 on this lubuntu 18.04 using Ukuu
  Kernel Update Utility. And with this kernel version, or any previous
  version the WD HDD does work again. Here's a dmesg of lubuntu 18.04
  with linux 4.14 and the WD HDD finally coming up at the end:
  https://paste.ubuntu.com/p/Gd3cGFbjTJ/

  Also tried with with linux 4.17 but the WD HDD would also refuse to
  work on this version. Here's another dmesg with this version:
  https://paste.ubuntu.com/p/PmNn96vZZv/

  ProblemType: Bug
  DistroRelease: Ubuntu 18.04
  Package: linux-image-4.15.0-29-generic 4.15.0-29.31
  ProcVersionSignature: Ubuntu 4.15.0-29.31-generic 4.15.18
  Uname: Linux 4.15.0-29-generic x86_64
  AlsaVersion: Advanced Linux Sound Architecture Driver Version 
k4.15.0-29-generic.
  ApportVersion: 2.20.9-0ubuntu7.2
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  testtest    756 F.... pulseaudio
   /dev/snd/controlC1:  testtest    756 F.... pulseaudio
  Card0.Amixer.info:
   Card hw:0 'NVidia_1'/'HDA NVidia at 0xfe020000 irq 22'
     Mixer name : 'Realtek ALC1200'
     Components : 'HDA:10ec0888,10ec0000,00100101 
HDA:10de0002,10de0101,00100000'
     Controls      : 56
     Simple ctrls  : 21
  Card1.Amixer.info:
   Card hw:1 'NVidia'/'HDA NVidia at 0xfcffc000 irq 16'
     Mixer name : 'Nvidia GPU 42 HDMI/DP'
     Components : 'HDA:10de0042,38422651,00100100'
     Controls      : 21
     Simple ctrls  : 3
  CurrentDesktop: LXDE
  Date: Thu Jul 26 17:10:58 2018
  HibernationDevice: RESUME=UUID=17e70869-516d-4b63-b900-e92e3c4b73b6
  InstallationDate: Installed on 2018-07-26 (0 days ago)
  InstallationMedia: Lubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 
(20180725)
  MachineType: 113 1
  ProcFB: 0 nouveaufb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.15.0-29-generic 
root=UUID=71cf0a32-7827-49be-a2c0-cd50a72c26a1 ro quiet splash vt.handoff=1
  RelatedPackageVersions:
   linux-restricted-modules-4.15.0-29-generic N/A
   linux-backports-modules-4.15.0-29-generic  N/A
   linux-firmware                             1.173.1
  RfKill:
   0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
  SourcePackage: linux
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 09/30/2008
  dmi.bios.vendor: Phoenix Technologies, LTD
  dmi.bios.version: 6.00 PG
  dmi.board.name: 113-M2-E113
  dmi.board.vendor: EVGA
  dmi.board.version: 1
  dmi.chassis.asset.tag: Unknow
  dmi.chassis.type: 3
  dmi.chassis.vendor: EVGA
  dmi.chassis.version: 113-M2-E113
  dmi.modalias: 
dmi:bvnPhoenixTechnologies,LTD:bvr6.00PG:bd09/30/2008:svn113:pn1:pvr1:rvnEVGA:rn113-M2-E113:rvr1:cvnEVGA:ct3:cvr113-M2-E113:
  dmi.product.name: 1
  dmi.product.version: 1
  dmi.sys.vendor: 113

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1783906/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to