Commit 39431acb1a4c464e62471cb3058b8ffffb9244db

Authored by Thomas Gleixner
1 parent 1c9db52534

pci: Cleanup the irq_desc mess in msi

Handing down irq_desc to msi just so that msi can access
irq_desc.irq_data.msi_desc is a pretty stupid idea. The calling code
can hand down a pointer to msi_desc so msi code does not need to know
about the irq descriptor at all.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Showing 3 changed files with 15 additions and 21 deletions Side-by-side Diff

arch/x86/kernel/apic/io_apic.c
... ... @@ -3383,14 +3383,14 @@
3383 3383  
3384 3384 cfg = desc->chip_data;
3385 3385  
3386   - get_cached_msi_msg_desc(desc, &msg);
  3386 + __get_cached_msi_msg(desc->irq_data.msi_desc, &msg);
3387 3387  
3388 3388 msg.data &= ~MSI_DATA_VECTOR_MASK;
3389 3389 msg.data |= MSI_DATA_VECTOR(cfg->vector);
3390 3390 msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK;
3391 3391 msg.address_lo |= MSI_ADDR_DEST_ID(dest);
3392 3392  
3393   - write_msi_msg_desc(desc, &msg);
  3393 + __write_msi_msg(desc->irq_data.msi_desc, &msg);
3394 3394  
3395 3395 return 0;
3396 3396 }
... ... @@ -193,10 +193,8 @@
193 193 msi_set_mask_bit(data, 0);
194 194 }
195 195  
196   -void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
  196 +void __read_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
197 197 {
198   - struct msi_desc *entry = get_irq_desc_msi(desc);
199   -
200 198 BUG_ON(entry->dev->current_state != PCI_D0);
201 199  
202 200 if (entry->msi_attrib.is_msix) {
203 201  
204 202  
205 203  
... ... @@ -227,15 +225,13 @@
227 225  
228 226 void read_msi_msg(unsigned int irq, struct msi_msg *msg)
229 227 {
230   - struct irq_desc *desc = irq_to_desc(irq);
  228 + struct msi_desc *entry = get_irq_msi(irq);
231 229  
232   - read_msi_msg_desc(desc, msg);
  230 + __read_msi_msg(entry, msg);
233 231 }
234 232  
235   -void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
  233 +void __get_cached_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
236 234 {
237   - struct msi_desc *entry = get_irq_desc_msi(desc);
238   -
239 235 /* Assert that the cache is valid, assuming that
240 236 * valid messages are not all-zeroes. */
241 237 BUG_ON(!(entry->msg.address_hi | entry->msg.address_lo |
242 238  
243 239  
244 240  
... ... @@ -246,15 +242,13 @@
246 242  
247 243 void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg)
248 244 {
249   - struct irq_desc *desc = irq_to_desc(irq);
  245 + struct msi_desc *entry = get_irq_msi(irq);
250 246  
251   - get_cached_msi_msg_desc(desc, msg);
  247 + __get_cached_msi_msg(entry, msg);
252 248 }
253 249  
254   -void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
  250 +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
255 251 {
256   - struct msi_desc *entry = get_irq_desc_msi(desc);
257   -
258 252 if (entry->dev->current_state != PCI_D0) {
259 253 /* Don't touch the hardware now */
260 254 } else if (entry->msi_attrib.is_msix) {
261 255  
... ... @@ -292,9 +286,9 @@
292 286  
293 287 void write_msi_msg(unsigned int irq, struct msi_msg *msg)
294 288 {
295   - struct irq_desc *desc = irq_to_desc(irq);
  289 + struct msi_desc *entry = get_irq_msi(irq);
296 290  
297   - write_msi_msg_desc(desc, msg);
  291 + __write_msi_msg(entry, msg);
298 292 }
299 293  
300 294 static void free_msi_irqs(struct pci_dev *dev)
... ... @@ -10,13 +10,13 @@
10 10 };
11 11  
12 12 /* Helper functions */
13   -struct irq_desc;
14 13 struct irq_data;
  14 +struct msi_desc;
15 15 extern void mask_msi_irq(struct irq_data *data);
16 16 extern void unmask_msi_irq(struct irq_data *data);
17   -extern void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
18   -extern void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
19   -extern void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
  17 +extern void __read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
  18 +extern void __get_cached_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
  19 +extern void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
20 20 extern void read_msi_msg(unsigned int irq, struct msi_msg *msg);
21 21 extern void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg);
22 22 extern void write_msi_msg(unsigned int irq, struct msi_msg *msg);