Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] Fix ALSA resume
       [not found] <1102195391.1560.65.camel@tux.rsn.bth.se>
@ 2004-12-04 21:54 ` Lee Revell
  2004-12-05  1:28 ` Andrew Morton
  1 sibling, 0 replies; 7+ messages in thread
From: Lee Revell @ 2004-12-04 21:54 UTC (permalink / raw)
  To: Martin Josefsson; +Cc: Andrew Morton, Linus Torvalds, linux-kernel, alsa-devel

Please cc: alsa-devel@lists.sourceforge.net on all ALSA issues.

On Sat, 2004-12-04 at 22:23 +0100, Martin Josefsson wrote:
> Some time ago, a patch was merged that removed pci_save_state() and
> pci_restore_state() from various ALSA drivers. That patch also added
> pci_restore_state() to sound/core/init.c but didn't add pci_save_state()
> anywhere. This is needed since the core pci handling doesn't do this for
> us anymore.
> 
> My laptop doesn't resume (gets what I assume is an ACPI timeout and
> hangs solid) without this small obvious patch.
> 
> Signed-off-by: Martin Josefsson <gandalf@wlug.westbo.se>
> Fixed-by: Takashi Iwai <tiwai@suse.de>
> 
> --- linux/sound/core/init.c	8 Nov 2004 11:37:08 -0000	1.48
> +++ linux/sound/core/init.c	12 Nov 2004 13:56:32 -0000
> @@ -782,12 +782,15 @@<br>
>  int snd_card_pci_suspend(struct pci_dev *dev, u32 state)
>  {
>  	snd_card_t *card = pci_get_drvdata(dev);
> +	int err;
>  	if (! card || ! card->pm_suspend)
>  		return 0;
>  	if (card->power_state == SNDRV_CTL_POWER_D3hot)
>  		return 0;
>  	/* FIXME: correct state value? */
> -	return card->pm_suspend(card, 0);
> +	err = card->pm_suspend(card, 0);
> +	pci_save_state(dev);
> +	return err;
>  }
> 
>  int snd_card_pci_resume(struct pci_dev *dev)
> 
> 
-- 
Lee Revell <rlrevell@joe-job.com>



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
       [not found] <1102195391.1560.65.camel@tux.rsn.bth.se>
  2004-12-04 21:54 ` [PATCH] Fix ALSA resume Lee Revell
@ 2004-12-05  1:28 ` Andrew Morton
  2004-12-05  3:39   ` Joshua Kwan
  2004-12-06 14:22   ` Takashi Iwai
  1 sibling, 2 replies; 7+ messages in thread
From: Andrew Morton @ 2004-12-05  1:28 UTC (permalink / raw)
  To: Martin Josefsson; +Cc: torvalds, linux-kernel, Joshua Kwan, alsa-devel

Martin Josefsson <gandalf@wlug.westbo.se> wrote:
>
> Some time ago, a patch was merged that removed pci_save_state() and
> pci_restore_state() from various ALSA drivers. That patch also added
> pci_restore_state() to sound/core/init.c but didn't add pci_save_state()
> anywhere. This is needed since the core pci handling doesn't do this for
> us anymore.
> 
> My laptop doesn't resume (gets what I assume is an ACPI timeout and
> hangs solid) without this small obvious patch.
> 
> Signed-off-by: Martin Josefsson <gandalf@wlug.westbo.se>
> Fixed-by: Takashi Iwai <tiwai@suse.de>
> 
> --- linux/sound/core/init.c	8 Nov 2004 11:37:08 -0000	1.48
> +++ linux/sound/core/init.c	12 Nov 2004 13:56:32 -0000
> @@ -782,12 +782,15 @@<br>
>  int snd_card_pci_suspend(struct pci_dev *dev, u32 state)
>  {
>  	snd_card_t *card = pci_get_drvdata(dev);
> +	int err;
>  	if (! card || ! card->pm_suspend)
>  		return 0;
>  	if (card->power_state == SNDRV_CTL_POWER_D3hot)
>  		return 0;
>  	/* FIXME: correct state value? */
> -	return card->pm_suspend(card, 0);
> +	err = card->pm_suspend(card, 0);
> +	pci_save_state(dev);
> +	return err;
>  }
> 
>  int snd_card_pci_resume(struct pci_dev *dev)

OK.  That's a better version of Joshua Kwan's patch:


From: Joshua Kwan <joshk@triplehelix.org>

Fix an intel8x0 problem which is breaking swsusp resumes.

Signed-off-by: Joshua Kwan <joshk@triplehelix.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/sound/pci/intel8x0.c  |    2 ++
 25-akpm/sound/pci/intel8x0m.c |    2 ++
 2 files changed, 4 insertions(+)

diff -puN sound/pci/intel8x0.c~intel8x0-pm-fix sound/pci/intel8x0.c
--- 25/sound/pci/intel8x0.c~intel8x0-pm-fix	2004-12-04 00:13:21.801532720 -0800
+++ 25-akpm/sound/pci/intel8x0.c	2004-12-04 00:13:21.808531656 -0800
@@ -2279,6 +2279,8 @@ static int intel8x0_suspend(snd_card_t *
 	for (i = 0; i < 3; i++)
 		if (chip->ac97[i])
 			snd_ac97_suspend(chip->ac97[i]);
+	pci_save_state(chip->pci);
+	pci_disable_device(chip->pci);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
 	return 0;
 }
diff -puN sound/pci/intel8x0m.c~intel8x0-pm-fix sound/pci/intel8x0m.c
--- 25/sound/pci/intel8x0m.c~intel8x0-pm-fix	2004-12-04 00:13:21.802532568 -0800
+++ 25-akpm/sound/pci/intel8x0m.c	2004-12-04 00:13:21.809531504 -0800
@@ -1091,6 +1091,8 @@ static int intel8x0m_suspend(snd_card_t 
 		snd_pcm_suspend_all(chip->pcm[i]);
 	if (chip->ac97)
 		snd_ac97_suspend(chip->ac97);
+	pci_save_state(chip->pci);
+	pci_disable_device(chip->pci);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
 	return 0;
 }
_


But Joshua crosses his heart and swears that the pci_disable_device() is
also needed for a successful swsusp resume.

Should snd_card_pci_suspend() be doing the pci_disable_device() as well, or
it that a responsibility of the driver which called snd_card_pci_suspend()?



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
  2004-12-05  1:28 ` Andrew Morton
@ 2004-12-05  3:39   ` Joshua Kwan
  2004-12-05  7:51     ` Andrew Morton
  2004-12-06 14:22   ` Takashi Iwai
  1 sibling, 1 reply; 7+ messages in thread
From: Joshua Kwan @ 2004-12-05  3:39 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Martin Josefsson, torvalds, linux-kernel, alsa-devel

Andrew Morton wrote:
> But Joshua crosses his heart and swears that the pci_disable_device() is
> also needed for a successful swsusp resume.

I never said I had any problems with resuming.

That said, I tried removing the pci_disable_device call and things seem
to still work. So I guess it can be left out?

-- 
Joshua Kwan


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
  2004-12-05  3:39   ` Joshua Kwan
@ 2004-12-05  7:51     ` Andrew Morton
  2004-12-05 10:06       ` Joshua Kwan
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Morton @ 2004-12-05  7:51 UTC (permalink / raw)
  To: Joshua Kwan; +Cc: gandalf, torvalds, linux-kernel, alsa-devel

Joshua Kwan <joshk@triplehelix.org> wrote:
>
> Andrew Morton wrote:
> > But Joshua crosses his heart and swears that the pci_disable_device() is
> > also needed for a successful swsusp resume.
> 
> I never said I had any problems with resuming.

OK, suspend was failing, yes?

> That said, I tried removing the pci_disable_device call and things seem
> to still work. So I guess it can be left out?

Can you please test Martin's patch?


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
  2004-12-05  7:51     ` Andrew Morton
@ 2004-12-05 10:06       ` Joshua Kwan
  2004-12-05 12:11         ` Martin Josefsson
  0 siblings, 1 reply; 7+ messages in thread
From: Joshua Kwan @ 2004-12-05 10:06 UTC (permalink / raw)
  To: Andrew Morton; +Cc: gandalf, torvalds, linux-kernel, alsa-devel

Andrew Morton wrote:
> OK, suspend was failing, yes?

Yes.

> Can you please test Martin's patch?

Works for me.

-- 
Joshua Kwan


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
  2004-12-05 10:06       ` Joshua Kwan
@ 2004-12-05 12:11         ` Martin Josefsson
  0 siblings, 0 replies; 7+ messages in thread
From: Martin Josefsson @ 2004-12-05 12:11 UTC (permalink / raw)
  To: Joshua Kwan; +Cc: Andrew Morton, torvalds, linux-kernel, alsa-devel

[-- Attachment #1: Type: text/plain, Size: 389 bytes --]

On Sun, 2004-12-05 at 11:06, Joshua Kwan wrote:
> Andrew Morton wrote:
> > OK, suspend was failing, yes?
> 
> Yes.
> 
> > Can you please test Martin's patch?
> 
> Works for me.

Works here as well.
This is the only problem I've had with ALSA and swsusp.
It even handles suspending in the middle of playing music and then
resuming and continuing where it was.

-- 
/Martin

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix ALSA resume
  2004-12-05  1:28 ` Andrew Morton
  2004-12-05  3:39   ` Joshua Kwan
@ 2004-12-06 14:22   ` Takashi Iwai
  1 sibling, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2004-12-06 14:22 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Martin Josefsson, torvalds, linux-kernel, Joshua Kwan, alsa-devel

At Sat, 4 Dec 2004 17:28:55 -0800,
Andrew Morton wrote:
> 
> But Joshua crosses his heart and swears that the pci_disable_device() is
> also needed for a successful swsusp resume.

Yes.  This would make suspend safer.

The linux-sound bk tree already includes the fix above and the patches
to add pci_disable_device() in appropriate places. 
Andrew, could you update bk-alsa patch set?


> Should snd_card_pci_suspend() be doing the pci_disable_device() as well, or
> it that a responsibility of the driver which called snd_card_pci_suspend()?

So far, we suppose that the lowlevel suspend() callback should call
pci_disable_device() although we can move it to the common place,
snd_card_pci_suspend().


Takashi


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2004-12-06 14:22 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1102195391.1560.65.camel@tux.rsn.bth.se>
2004-12-04 21:54 ` [PATCH] Fix ALSA resume Lee Revell
2004-12-05  1:28 ` Andrew Morton
2004-12-05  3:39   ` Joshua Kwan
2004-12-05  7:51     ` Andrew Morton
2004-12-05 10:06       ` Joshua Kwan
2004-12-05 12:11         ` Martin Josefsson
2004-12-06 14:22   ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox