From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Katz Subject: Re: Oops after resume from suspend Date: Thu, 25 Jan 2007 15:09:05 -0500 Message-ID: <45B90E61.2090304@redhat.com> References: <1169676112.10817.13.camel@aglarond.local> <45B86338.8050306@qumranet.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000104040206000707000702" To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Return-path: In-Reply-To: <45B86338.8050306-atKUWr5tajBWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org This is a multi-part message in MIME format. --------------000104040206000707000702 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Avi Kivity wrote: > Jeremy Katz wrote: >> When using kvm on my laptop, I get the following oops if I try using kvm >> after a suspend (ACPI S3)/resume cycle. At first I thought it went away >> if I unloaded the module before suspending and then reloading it >> afterwards, but I can't reproduce that working now, so I might have just >> been hallucinating. Thoughts of things to try? > > Module unload/reload should work. Can you try adding printks in > hardware_disable() and hardware_enable()? Okay, what was going wrong with reloading was the difference between - and _ with module naming :-/ *sigh* Actually getting the module unloaded then makes things work fine. > For real suspend support, we need to flush any cached state on Intel > cpus (vmcs_clear), and to do the hardware_disable()/hardware_enable() > cycle. Should be easy. The obvious approach (attached) fails to resume -- there may be console output, but hard to tell on my laptop. I'll dig up a box with a serial port to try there and see if I get something across serial console with it. Jeremy --------------000104040206000707000702 Content-Type: text/x-patch; name="kvm-suspend.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="kvm-suspend.patch" Index: kvm_main.c =================================================================== --- kvm_main.c (revision 4328) +++ kvm_main.c (working copy) @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -2052,6 +2053,29 @@ .priority = 0, }; +static int kvm_suspend(struct sys_device *dev, pm_message_t state) +{ + on_each_cpu(kvm_arch_ops->hardware_disable, 0, 0, 1); + return 0; +} + +static int kvm_resume(struct sys_device *dev) +{ + on_each_cpu(kvm_arch_ops->hardware_enable, 0, 0, 1); + return 0; +} + +static struct sysdev_class kvm_sysclass = { + .resume = kvm_resume, + .suspend = kvm_suspend, + set_kset_name("kvm"), +}; + +static struct sys_device kvm_sysdevice = { + .id = 0, + .cls = &kvm_sysclass, +}; + static __init void kvm_init_debug(void) { struct kvm_stats_debugfs_item *p; @@ -2100,6 +2124,13 @@ on_each_cpu(kvm_arch_ops->hardware_enable, 0, 0, 1); register_reboot_notifier(&kvm_reboot_notifier); + r = sysdev_class_register(&kvm_sysclass); + if (r) + return r; + r = sysdev_register(&kvm_sysdevice); + if (r) + return r; + kvm_chardev_ops.owner = module; r = misc_register(&kvm_dev); @@ -2121,6 +2152,9 @@ { misc_deregister(&kvm_dev); + sysdev_unregister(&kvm_sysdevice); + sysdev_class_unregister(&kvm_sysclass); + unregister_reboot_notifier(&kvm_reboot_notifier); on_each_cpu(kvm_arch_ops->hardware_disable, 0, 0, 1); kvm_arch_ops->hardware_unsetup(); --------------000104040206000707000702 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV --------------000104040206000707000702 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/kvm-devel --------------000104040206000707000702--