From: Tejun Heo <htejun@gmail.com>
To: Indan Zupancic <indan@nul.nu>
Cc: Paul Mundt <lethal@linux-sh.org>,
jeff@garzik.org, linux-ide@vger.kernel.org,
linux-kernel@vger.kernel.org, garyhade@us.ibm.com
Subject: Re: [PATCH] libata: implement ata_wait_after_reset()
Date: Sat, 19 May 2007 20:23:25 +0200 [thread overview]
Message-ID: <464F409D.9030408@gmail.com> (raw)
In-Reply-To: <1800.81.207.0.53.1179590050.squirrel@secure.samage.net>
Indan Zupancic wrote:
> Using sata_sil (SiI 3512) with a ST3120827AS disk here.
>
> For me the COMRESET happens after resume (s2ram):
>
> [ 2.174342] sd 0:0:0:0: [sda] Starting disk
> [ 2.476407] ata1: device not ready (errno=-19), forcing hardreset
> [ 2.476429] ata2: SATA link down (SStatus 0 SControl 310)
> [ 2.931793] ata1: COMRESET failed (errno=-19)
> [ 2.931797] ata1: reset failed (errno=-19), retrying in 10 secs
> [ 12.918421] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> [ 12.921957] ata1.00: ata_hpa_resize 1: sectors = 234441648, hpa_sectors = 234441648
> [ 12.925908] ata1.00: ata_hpa_resize 1: sectors = 234441648, hpa_sectors = 234441648
>
> With your patch applied the output is:
>
> [ 2.173369] sd 0:0:0:0: [sda] Starting disk
> [ 2.475431] ata1: device not ready (errno=-19), forcing hardreset
> [ 2.475453] ata2: SATA link down (SStatus 0 SControl 310)
> [ 3.592930] ata1: COMRESET failed (errno=-19)
> [ 3.592934] ata1: reset failed (errno=-19), retrying in 9 secs
> [ 12.917446] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> [ 12.920969] ata1.00: ata_hpa_resize 1: sectors = 234441648, hpa_sectors = 234441648
> [ 12.924945] ata1.00: ata_hpa_resize 1: sectors = 234441648, hpa_sectors = 234441648
>
> Resume takes now ten seconds or more, while it used to take only a few seconds,
> what changed? A few kernel versions ago (2.6.21-rc or so?) it retried in 5 seconds
> instead of 10, but even that is too long.
There are two different things at play here...
1. We dropped libata specific suspend/resume implementation in favor of
sd driven one. Unfortunately, the new implementation currently can't do
background spinup, so that's probably why you can feel the delay. We
need to figure out how to do background spinup with the new implementation.
2. To make reset finish in defined time, each reset try now has defined
deadlines. I was trying to be conservative so I chose 10sec for the
first try. It's driven by timing table near the top of libata-eh.c, so
adjusting the table is easy and maybe we can be a bit more aggressive
with the first two tries. But if we solve #1, this shouldn't matter too
much.
So, it's the unfortunate combination of the above two.
> Maybe a silly question, but why do we wait for the harddisk to show up? Maybe that
> makes a little bit of sense at bootup, but for resume from ram, where nothing is
> supposed to have changed, it seems a bit strange. Why not wait when something tries
> to access the harddisk or something?
I hope it's explained now.
> I wonder if sil_pci_device_resume() and sd_resume() know about each other...
> I'll disable sd_resume() and see how that goes.
Yeap, that should work. In most configurations, devices spin up
immediately after power is restored. sd_resume() just waits for the
device to be revalidated in such cases.
--
tejun
next prev parent reply other threads:[~2007-05-19 18:23 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-10 7:20 libata reset-seq merge broke sata_sil on sh Paul Mundt
2007-05-10 11:28 ` Tejun Heo
2007-05-10 11:53 ` Tejun Heo
2007-05-10 12:46 ` Paul Mundt
2007-05-10 13:08 ` Tejun Heo
2007-05-11 0:52 ` Paul Mundt
2007-05-11 9:39 ` Tejun Heo
2007-05-12 3:49 ` Paul Mundt
2007-05-16 0:30 ` Paul Mundt
2007-05-16 16:44 ` [PATCH] libata: implement ata_wait_after_reset() Tejun Heo
2007-05-17 0:50 ` Paul Mundt
2007-05-17 0:59 ` Paul Mundt
2007-05-19 15:54 ` Indan Zupancic
2007-05-19 18:23 ` Tejun Heo [this message]
2007-05-19 22:54 ` Indan Zupancic
2007-05-20 9:50 ` Tejun Heo
2007-05-20 13:26 ` Indan Zupancic
2007-05-20 17:09 ` Tejun Heo
2007-05-20 19:35 ` Indan Zupancic
2007-05-19 16:39 ` Indan Zupancic
2007-05-19 18:43 ` Tejun Heo
2007-05-19 19:04 ` Tejun Heo
2007-05-19 22:33 ` sd_resume redundant? [was: [PATCH] libata: implement ata_wait_after_reset()] Indan Zupancic
2007-05-20 9:54 ` Tejun Heo
2007-05-20 14:27 ` Indan Zupancic
2007-05-20 17:17 ` Tejun Heo
2007-05-20 19:47 ` Indan Zupancic
2007-05-21 6:02 ` [PATCH] libata: implement ata_wait_after_reset() Paul Mundt
2007-05-29 1:31 ` Jeff Garzik
2007-05-29 7:33 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=464F409D.9030408@gmail.com \
--to=htejun@gmail.com \
--cc=garyhade@us.ibm.com \
--cc=indan@nul.nu \
--cc=jeff@garzik.org \
--cc=lethal@linux-sh.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).