/[linux-patches]/genpatches-2.6/tags/2.6.32-47/1047_linux-2.6.32.48.patch
Gentoo

Contents of /genpatches-2.6/tags/2.6.32-47/1047_linux-2.6.32.48.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2037 - (show annotations) (download)
Wed Dec 28 14:38:55 2011 UTC (6 years, 6 months ago) by psomas
File size: 5564 byte(s)
2.6.32-47 release
1 diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
2 index b54d581..30c44e6 100644
3 --- a/arch/powerpc/sysdev/mpic.c
4 +++ b/arch/powerpc/sysdev/mpic.c
5 @@ -567,10 +567,12 @@ static void __init mpic_scan_ht_pics(struct mpic *mpic)
6 #endif /* CONFIG_MPIC_U3_HT_IRQS */
7
8 #ifdef CONFIG_SMP
9 -static int irq_choose_cpu(const cpumask_t *mask)
10 +static int irq_choose_cpu(unsigned int virt_irq)
11 {
12 + cpumask_t mask;
13 int cpuid;
14
15 + cpumask_copy(&mask, irq_desc[virt_irq].affinity);
16 if (cpus_equal(mask, CPU_MASK_ALL)) {
17 static int irq_rover;
18 static DEFINE_SPINLOCK(irq_rover_lock);
19 @@ -592,15 +594,20 @@ static int irq_choose_cpu(const cpumask_t *mask)
20
21 spin_unlock_irqrestore(&irq_rover_lock, flags);
22 } else {
23 - cpuid = cpumask_first_and(mask, cpu_online_mask);
24 - if (cpuid >= nr_cpu_ids)
25 + cpumask_t tmp;
26 +
27 + cpus_and(tmp, cpu_online_map, mask);
28 +
29 + if (cpus_empty(tmp))
30 goto do_round_robin;
31 +
32 + cpuid = first_cpu(tmp);
33 }
34
35 return get_hard_smp_processor_id(cpuid);
36 }
37 #else
38 -static int irq_choose_cpu(const cpumask_t *mask)
39 +static int irq_choose_cpu(unsigned int virt_irq)
40 {
41 return hard_smp_processor_id();
42 }
43 @@ -809,7 +816,7 @@ int mpic_set_affinity(unsigned int irq, const struct cpumask *cpumask)
44 unsigned int src = mpic_irq_to_hw(irq);
45
46 if (mpic->flags & MPIC_SINGLE_DEST_CPU) {
47 - int cpuid = irq_choose_cpu(cpumask);
48 + int cpuid = irq_choose_cpu(irq);
49
50 mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);
51 } else {
52 diff --git a/drivers/base/sys.c b/drivers/base/sys.c
53 index 3f202f7..0d90390 100644
54 --- a/drivers/base/sys.c
55 +++ b/drivers/base/sys.c
56 @@ -471,12 +471,6 @@ int sysdev_resume(void)
57 {
58 struct sysdev_class *cls;
59
60 - /*
61 - * Called from syscore in mainline but called directly here
62 - * since syscore does not exist in this tree.
63 - */
64 - irq_pm_syscore_resume();
65 -
66 WARN_ONCE(!irqs_disabled(),
67 "Interrupts enabled while resuming system devices\n");
68
69 diff --git a/drivers/xen/events.c b/drivers/xen/events.c
70 index 15ed43e..009ca4e 100644
71 --- a/drivers/xen/events.c
72 +++ b/drivers/xen/events.c
73 @@ -536,7 +536,7 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi,
74 if (irq < 0)
75 return irq;
76
77 - irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME | IRQF_EARLY_RESUME;
78 + irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME;
79 retval = request_irq(irq, handler, irqflags, devname, dev_id);
80 if (retval != 0) {
81 unbind_from_irq(irq);
82 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
83 index c7e1aa5..4528f29 100644
84 --- a/include/linux/interrupt.h
85 +++ b/include/linux/interrupt.h
86 @@ -54,8 +54,6 @@
87 * irq line disabled until the threaded handler has been run.
88 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend
89 * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
90 - * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
91 - * resume time.
92 */
93 #define IRQF_DISABLED 0x00000020
94 #define IRQF_SAMPLE_RANDOM 0x00000040
95 @@ -68,7 +66,6 @@
96 #define IRQF_ONESHOT 0x00002000
97 #define IRQF_NO_SUSPEND 0x00004000
98 #define IRQF_FORCE_RESUME 0x00008000
99 -#define IRQF_EARLY_RESUME 0x00020000
100
101 #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND)
102
103 @@ -199,7 +196,6 @@ extern void enable_irq(unsigned int irq);
104 #ifdef CONFIG_GENERIC_HARDIRQS
105 extern void suspend_device_irqs(void);
106 extern void resume_device_irqs(void);
107 -extern void irq_pm_syscore_resume(void);
108 #ifdef CONFIG_PM_SLEEP
109 extern int check_wakeup_irqs(void);
110 #else
111 @@ -208,7 +204,6 @@ static inline int check_wakeup_irqs(void) { return 0; }
112 #else
113 static inline void suspend_device_irqs(void) { };
114 static inline void resume_device_irqs(void) { };
115 -static inline void irq_pm_syscore_resume(void) { };
116 static inline int check_wakeup_irqs(void) { return 0; }
117 #endif
118
119 diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
120 index b1fc3dd..0067abb 100644
121 --- a/kernel/irq/pm.c
122 +++ b/kernel/irq/pm.c
123 @@ -39,46 +39,25 @@ void suspend_device_irqs(void)
124 }
125 EXPORT_SYMBOL_GPL(suspend_device_irqs);
126
127 -static void resume_irqs(bool want_early)
128 +/**
129 + * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
130 + *
131 + * Enable all interrupt lines previously disabled by suspend_device_irqs() that
132 + * have the IRQ_SUSPENDED flag set.
133 + */
134 +void resume_device_irqs(void)
135 {
136 struct irq_desc *desc;
137 int irq;
138
139 for_each_irq_desc(irq, desc) {
140 unsigned long flags;
141 - bool is_early = desc->action &&
142 - desc->action->flags & IRQF_EARLY_RESUME;
143 -
144 - if (is_early != want_early)
145 - continue;
146
147 spin_lock_irqsave(&desc->lock, flags);
148 __enable_irq(desc, irq, true);
149 spin_unlock_irqrestore(&desc->lock, flags);
150 }
151 }
152 -
153 -/**
154 - * irq_pm_syscore_ops - enable interrupt lines early
155 - *
156 - * Enable all interrupt lines with %IRQF_EARLY_RESUME set.
157 - */
158 -void irq_pm_syscore_resume(void)
159 -{
160 - resume_irqs(true);
161 -}
162 -
163 -/**
164 - * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
165 - *
166 - * Enable all non-%IRQF_EARLY_RESUME interrupt lines previously
167 - * disabled by suspend_device_irqs() that have the IRQS_SUSPENDED flag
168 - * set as well as those with %IRQF_FORCE_RESUME.
169 - */
170 -void resume_device_irqs(void)
171 -{
172 - resume_irqs(false);
173 -}
174 EXPORT_SYMBOL_GPL(resume_device_irqs);
175
176 /**
177 diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
178 index c9510a5..63bc2ae 100644
179 --- a/sound/soc/codecs/wm8940.c
180 +++ b/sound/soc/codecs/wm8940.c
181 @@ -473,8 +473,6 @@ static int wm8940_set_bias_level(struct snd_soc_codec *codec,
182 break;
183 }
184
185 - codec->dapm.bias_level = level;
186 -
187 return ret;
188 }
189

  ViewVC Help
Powered by ViewVC 1.1.20