~ubuntu-branches/ubuntu/lucid/linux-rt/lucid

« back to all changes in this revision

Viewing changes to drivers/xen/manage.c

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2009-08-05 23:00:52 UTC
  • Revision ID: james.westby@ubuntu.com-20090805230052-7xedvqcyk9dnnxb2
Tags: 2.6.31-1.1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
 
40
40
        BUG_ON(!irqs_disabled());
41
41
 
42
 
        err = device_power_down(PMSG_SUSPEND);
43
 
        if (err) {
44
 
                printk(KERN_ERR "xen_suspend: device_power_down failed: %d\n",
45
 
                       err);
46
 
                return err;
47
 
        }
48
42
        err = sysdev_suspend(PMSG_SUSPEND);
49
43
        if (err) {
50
44
                printk(KERN_ERR "xen_suspend: sysdev_suspend failed: %d\n",
51
45
                        err);
52
 
                device_power_up(PMSG_RESUME);
 
46
                dpm_resume_noirq(PMSG_RESUME);
53
47
                return err;
54
48
        }
55
49
 
68
62
        gnttab_resume();
69
63
        xen_mm_unpin_all();
70
64
 
71
 
        sysdev_resume();
72
 
        device_power_up(PMSG_RESUME);
73
 
 
74
65
        if (!*cancelled) {
75
66
                xen_irq_resume();
76
67
                xen_console_resume();
77
68
                xen_timer_resume();
78
69
        }
79
70
 
 
71
        sysdev_resume();
 
72
        dpm_resume_noirq(PMSG_RESUME);
 
73
 
80
74
        return 0;
81
75
}
82
76
 
98
92
        }
99
93
#endif
100
94
 
101
 
        err = device_suspend(PMSG_SUSPEND);
 
95
        err = dpm_suspend_start(PMSG_SUSPEND);
102
96
        if (err) {
103
 
                printk(KERN_ERR "xen suspend: device_suspend %d\n", err);
 
97
                printk(KERN_ERR "xen suspend: dpm_suspend_start %d\n", err);
104
98
                goto out;
105
99
        }
106
100
 
107
 
        printk("suspending xenbus...\n");
108
 
        /* XXX use normal device tree? */
109
 
        xenbus_suspend();
110
 
 
111
 
        err = stop_machine(xen_suspend, &cancelled, &cpumask_of_cpu(0));
 
101
        printk(KERN_DEBUG "suspending xenstore...\n");
 
102
        xs_suspend();
 
103
 
 
104
        err = dpm_suspend_noirq(PMSG_SUSPEND);
 
105
        if (err) {
 
106
                printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err);
 
107
                goto resume_devices;
 
108
        }
 
109
 
 
110
        err = stop_machine(xen_suspend, &cancelled, cpumask_of(0));
112
111
        if (err) {
113
112
                printk(KERN_ERR "failed to start xen_suspend: %d\n", err);
114
113
                goto out;
116
115
 
117
116
        if (!cancelled) {
118
117
                xen_arch_resume();
119
 
                xenbus_resume();
 
118
                xs_resume();
120
119
        } else
121
 
                xenbus_suspend_cancel();
122
 
 
123
 
        device_resume(PMSG_RESUME);
 
120
                xs_suspend_cancel();
 
121
 
 
122
        dpm_resume_noirq(PMSG_RESUME);
 
123
 
 
124
resume_devices:
 
125
        dpm_resume_end(PMSG_RESUME);
124
126
 
125
127
        /* Make sure timer events get retriggered on all CPUs */
126
128
        clock_was_set();