public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Nathan Bryant <nbryant@optonline.net>
To: ncunningham@linuxmail.org
Cc: Pavel Machek <pavel@ucw.cz>,
	"'James Bottomley'" <James.Bottomley@steeleye.com>,
	Linux SCSI Reflector <linux-scsi@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	jgarzik@pobox.com
Subject: Re: [PATCH] SCSI midlayer power management
Date: Wed, 11 Aug 2004 18:48:44 -0400	[thread overview]
Message-ID: <411AA24C.6050303@optonline.net> (raw)
In-Reply-To: <1092262602.3553.14.camel@laptop.cunninghams>

Nigel Cunningham wrote:

>Hi.
>
>On Wed, 2004-08-11 at 23:13, Nathan Bryant wrote:
>  
>
>>>>ACPI S1 and S4/swsusp are untested, but I think there should be no
>>>>regressions with S1. To do S1 properly, we probably need to tell the
>>>>drive to spin down, and I don't know what the SCSI command is for
>>>>that... For S4, the call to scsi_device_quiesce might pose a problem for
>>>>the subsequent state dump to disk. But I'm not sure swsusp ever worked
>>>>for SCSI.
>>>>        
>>>>
>
>I tried it on an OSDL machine and could suspend (suspend 2), but only
>resume as far as copying back the original kernel. The problem then
>looked to me like it was request ids not matching what the drive was
>expecting (but I'm ignorant of scsi, so might be completely wrong
>there).
>  
>
I saw "no match for command buffer" interrupt storms when I was fixing 
up aic7xxx for S3. The problem was due to not reprogramming the address 
of our SCB's on resume. Needed to tell the card the base address for all 
the DMA structures.

Just to speculate about what would be required for swsusp: you probably 
need to be using a SCSI LLD that properly implements pci suspend/resume, 
which implies you need to make sure the card's DMA state machine is 
flushed and idle before suspend completes. I've got a patch that fixes 
this much up for aic7xxx. And my other midlayer-level patch may also 
help... What happens during resume is interesting. I think maybe the 
problem is not what the drive is expecting, but what the card's state 
engine is expecting when it tries to map commands to command buffers in 
DMA space.  Maybe you need to suspend the LLD from the context of the 
kernel that is doing the image load, and then resume from the context of 
the kernel that was just loaded.

Sounds like this is why Pavel is asking about DMA. So he'll need to 
manage calling the host adapter's suspend callbacks, not just 
generic_scsi_suspend. DMA base addresses are likely to change when you 
load the new kernel image

>>answer is NO. For purposes of not suspending the drivers, I haven't 
>>looked into how swsusp would see which host adapter owns which drive, 
>>but some of the required information seems to be present in sysfs.
>>    
>>
>
>With my 'device tree' code, I'm getting the struct dev of the device
>we're using via the struct block_device in the swap_info struct.
>  
>
Right, though you also need to get the host adapter's struct device, if 
you're not already doing so, that is. Many IDE host drivers don't bother 
with suspend/resume callbacks at the pci_driver level, but SCSI needs 
callbacks because the BIOS usually doesn't handle things for us.

Nathan

  reply	other threads:[~2004-08-11 22:54 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-10 23:58 [PATCH] SCSI midlayer power management Nathan Bryant
2004-08-11  8:09 ` Pavel Machek
2004-08-11 13:13   ` Nathan Bryant
2004-08-11 13:37     ` James Bottomley
2004-08-11 15:21       ` Alan Cox
2004-08-11 16:28         ` James Bottomley
2004-08-11 16:43           ` Nathan Bryant
2004-08-11 23:36       ` Benjamin Herrenschmidt
2004-08-12  7:45         ` Pavel Machek
2004-08-12 10:38           ` Benjamin Herrenschmidt
2004-08-12 12:48         ` James Bottomley
2004-08-12 13:14           ` Pavel Machek
2004-08-12 16:29             ` James Bottomley
2004-08-12 19:11               ` Pavel Machek
2004-08-12 19:34                 ` James Bottomley
2004-08-12 20:26                   ` Pavel Machek
2004-08-12 20:31                     ` James Bottomley
2004-08-12 20:37                       ` Pavel Machek
2004-08-12 20:42                         ` James Bottomley
2004-08-12 20:48                           ` Pavel Machek
2004-08-12 20:52                           ` Nathan Bryant
2004-08-12 20:40                       ` Nathan Bryant
2004-08-12 23:05                       ` Benjamin Herrenschmidt
2004-08-12 22:36                   ` Nigel Cunningham
2004-08-12 22:43                     ` Nigel Cunningham
2004-08-12 23:04                   ` Benjamin Herrenschmidt
2004-08-12 13:41           ` Nathan Bryant
2004-08-12 16:45             ` Patrick Mansfield
2004-08-12 23:02           ` Benjamin Herrenschmidt
2004-08-11 20:19     ` Pavel Machek
2004-08-11 20:50       ` Nathan Bryant
2004-08-11 22:16     ` Nigel Cunningham
2004-08-11 22:48       ` Nathan Bryant [this message]
2004-08-12  7:43         ` Pavel Machek
2004-08-12  9:39         ` Nigel Cunningham
2004-08-12 13:43           ` Nathan Bryant
  -- strict thread matches above, loose matches on Subject: below --
2004-08-16 13:29 James.Smart
2004-08-10 23:56 Nathan Bryant
2004-08-11  9:53 ` Alan Cox
2004-08-11 12:55   ` Nathan Bryant
2004-08-11 13:39   ` James Bottomley

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=411AA24C.6050303@optonline.net \
    --to=nbryant@optonline.net \
    --cc=James.Bottomley@steeleye.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ncunningham@linuxmail.org \
    --cc=pavel@ucw.cz \
    /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