[linux-pm] [PATCH] make pm_suspend_disk suspend/resume sysdev and dpm_off_irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Pavel Machek wrote:
> Hi!
> 
>> This patch makes the new swsusp code ( pm_suspend_disk since
>> 2.6.9-rc3) call suspend/resume functions for sysdev and devices in
>> dpm_off_irq list. Otherwise, PCI link device in the system won't
>> provide correct interrupt for PCI devices during resume.
> 
> I do not think this is right approach; you enable interrupts
> then disable that again, potentially without interrupt controller
> being initialized. 
> 
> This should be better patch:

Agreed. Your patch solves the bug. But do you plan to deal with the 
devices in dpm_off_irq list?

Thanks,
-yi

> --- clean/kernel/power/swsusp.c	2004-10-19
> 14:16:29.000000000 +0200
> +++ linux/kernel/power/swsusp.c	2004-11-23
> 23:11:04.000000000 +0100
> @@ -854,11 +840,13 @@
>  	if ((error = arch_prepare_suspend()))
>  		return error;
>  	local_irq_disable();
> +	sysdev_suspend(3);
>  	save_processor_state();
>  	error = swsusp_arch_suspend();
>  	/* Restore control flow magically appears here */ 
>  	restore_processor_state(); restore_highmem();
> +	sysdev_resume();
>  	local_irq_enable();
>  	return error;
>  }
> @@ -878,6 +866,7 @@
>  {
>  	int error;
>  	local_irq_disable();
> +	sysdev_suspend(3);
>  	/* We'll ignore saved state, but this gets preempt
> count (etc) right */
>  	save_processor_state();
>  	error = swsusp_arch_resume();
> @@ -887,6 +876,7 @@
>  	BUG_ON(!error);
>  	restore_processor_state();
>  	restore_highmem();
> +	sysdev_resume();
>  	local_irq_enable();
>  	return error;
>  }




[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux