All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/5] sparc64: drop deprecated irq features
@ 2011-01-21 22:24 ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:24 UTC (permalink / raw)
  To: sparclinux, David Miller, Thomas Gleixner; +Cc: lkml

This set of patches update sparc64 so no deprecated genirq
features are used.

I did this mainly to understand the genirq stuff better.
Originally I looked into sparc64 code and was confused
because it used deprecated stuff. So the logical step
was to update sparc64 to avoid the deprecated stuff.
So I did so and the result follows.

This is an RFC because:
- This is not yet tested
- I expect a (trivial) conflict when we get Thomas'
  __DO_irq stuff merged
- I expect to get some feedback that needs to be addressed

I made one conceptual change.
irq_handler_data was previously assinged to irq_data.chip_data.
This is changed so it uses irq_data.handler_data

Looking into kernel/irq/* this looked OK.

I plan to do some testing within the next week.

I looked at integrating struct virt_irq_table[] as
chip_data in irq_data.
But the way the virt_irq_alloc() function is used did not
make this bovious how to do so. So I played safe and did
not try to do so.

Any comments aprreciated.
If there are more features from genirq we could use let me
know and I may look at it.
And if something just looks wrong please say so too.

	Sam


Sam Ravnborg (5):
      sparc64: fix direct access to irq_desc
      sparc: in handler_irq() rename irq parameter to pil
      sparc64: all pointers to irq_handler_data renamed to handler_data
      sparc64: use {get,set}_irq_data for handler_data
      sparc64: use up-to-data genirq functions

 arch/sparc/Kconfig            |    2 -
 arch/sparc/kernel/irq_32.c    |   20 ++--
 arch/sparc/kernel/irq_64.c    |  197 ++++++++++++++++++++---------------------
 arch/sparc/kernel/sun4d_irq.c |   18 ++--
 4 files changed, 117 insertions(+), 120 deletions(-)

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [RFC PATCH 0/5] sparc64: drop deprecated irq features
@ 2011-01-21 22:24 ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:24 UTC (permalink / raw)
  To: sparclinux, David Miller, Thomas Gleixner; +Cc: lkml

This set of patches update sparc64 so no deprecated genirq
features are used.

I did this mainly to understand the genirq stuff better.
Originally I looked into sparc64 code and was confused
because it used deprecated stuff. So the logical step
was to update sparc64 to avoid the deprecated stuff.
So I did so and the result follows.

This is an RFC because:
- This is not yet tested
- I expect a (trivial) conflict when we get Thomas'
  __DO_irq stuff merged
- I expect to get some feedback that needs to be addressed

I made one conceptual change.
irq_handler_data was previously assinged to irq_data.chip_data.
This is changed so it uses irq_data.handler_data

Looking into kernel/irq/* this looked OK.

I plan to do some testing within the next week.

I looked at integrating struct virt_irq_table[] as
chip_data in irq_data.
But the way the virt_irq_alloc() function is used did not
make this bovious how to do so. So I played safe and did
not try to do so.

Any comments aprreciated.
If there are more features from genirq we could use let me
know and I may look at it.
And if something just looks wrong please say so too.

	Sam


Sam Ravnborg (5):
      sparc64: fix direct access to irq_desc
      sparc: in handler_irq() rename irq parameter to pil
      sparc64: all pointers to irq_handler_data renamed to handler_data
      sparc64: use {get,set}_irq_data for handler_data
      sparc64: use up-to-data genirq functions

 arch/sparc/Kconfig            |    2 -
 arch/sparc/kernel/irq_32.c    |   20 ++--
 arch/sparc/kernel/irq_64.c    |  197 ++++++++++++++++++++---------------------
 arch/sparc/kernel/sun4d_irq.c |   18 ++--
 4 files changed, 117 insertions(+), 120 deletions(-)

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH 1/5] sparc64: fix direct access to irq_desc
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:26   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

GENERIC_HARDIRQS_NO_DEPRECATED require us to access data via irq_data
No functional changes as data has same layout due to use of union

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index 830d70a..ee67dae 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p, void *v)
 		for_each_online_cpu(j)
 			seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
 #endif
-		seq_printf(p, " %9s", irq_desc[i].chip->name);
+		seq_printf(p, " %9s", irq_desc[i].irq_data.chip->name);
 		seq_printf(p, "  %s", action->name);
 
 		for (action=action->next; action; action = action->next)
@@ -284,7 +284,7 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq,
-				       irq_desc[virt_irq].affinity);
+				       irq_desc[virt_irq].irq_data.affinity);
 		imap = data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -360,7 +360,7 @@ static void sun4v_irq_enable(unsigned int virt_irq)
 {
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 	unsigned long cpuid = irq_choose_cpu(virt_irq,
-					     irq_desc[virt_irq].affinity);
+					     irq_desc[virt_irq].irq_data.affinity);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -423,7 +423,7 @@ static void sun4v_virq_enable(unsigned int virt_irq)
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].affinity);
+	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].irq_data.affinity);
 
 	dev_handle = virt_irq_table[virt_irq].dev_handle;
 	dev_ino = virt_irq_table[virt_irq].dev_ino;
@@ -798,9 +798,9 @@ void fixup_irqs(void)
 		raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
 		if (irq_desc[irq].action &&
 		    !(irq_desc[irq].status & IRQ_PER_CPU)) {
-			if (irq_desc[irq].chip->set_affinity)
-				irq_desc[irq].chip->set_affinity(irq,
-					irq_desc[irq].affinity);
+			if (irq_desc[irq].irq_data.chip->set_affinity)
+				irq_desc[irq].irq_data.chip->set_affinity(irq,
+					irq_desc[irq].irq_data.affinity);
 		}
 		raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
 	}
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 1/5] sparc64: fix direct access to irq_desc
@ 2011-01-21 22:26   ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

GENERIC_HARDIRQS_NO_DEPRECATED require us to access data via irq_data
No functional changes as data has same layout due to use of union

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index 830d70a..ee67dae 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -190,7 +190,7 @@ int show_interrupts(struct seq_file *p, void *v)
 		for_each_online_cpu(j)
 			seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
 #endif
-		seq_printf(p, " %9s", irq_desc[i].chip->name);
+		seq_printf(p, " %9s", irq_desc[i].irq_data.chip->name);
 		seq_printf(p, "  %s", action->name);
 
 		for (action¬tion->next; action; action = action->next)
@@ -284,7 +284,7 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq,
-				       irq_desc[virt_irq].affinity);
+				       irq_desc[virt_irq].irq_data.affinity);
 		imap = data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -360,7 +360,7 @@ static void sun4v_irq_enable(unsigned int virt_irq)
 {
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 	unsigned long cpuid = irq_choose_cpu(virt_irq,
-					     irq_desc[virt_irq].affinity);
+					     irq_desc[virt_irq].irq_data.affinity);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -423,7 +423,7 @@ static void sun4v_virq_enable(unsigned int virt_irq)
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].affinity);
+	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].irq_data.affinity);
 
 	dev_handle = virt_irq_table[virt_irq].dev_handle;
 	dev_ino = virt_irq_table[virt_irq].dev_ino;
@@ -798,9 +798,9 @@ void fixup_irqs(void)
 		raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
 		if (irq_desc[irq].action &&
 		    !(irq_desc[irq].status & IRQ_PER_CPU)) {
-			if (irq_desc[irq].chip->set_affinity)
-				irq_desc[irq].chip->set_affinity(irq,
-					irq_desc[irq].affinity);
+			if (irq_desc[irq].irq_data.chip->set_affinity)
+				irq_desc[irq].irq_data.chip->set_affinity(irq,
+					irq_desc[irq].irq_data.affinity);
 		}
 		raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
 	}
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 2/5] sparc: in handler_irq() rename irq parameter to pil
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:26   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

The generic irq support uses "irq" to identify the
virtual irq number. To avoid confusion rename the
argument to handler_irq() to pil to match the
name of the parameter in the PCR register.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_32.c    |   20 ++++++++++----------
 arch/sparc/kernel/irq_64.c    |    4 ++--
 arch/sparc/kernel/sun4d_irq.c |   18 +++++++++---------
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/arch/sparc/kernel/irq_32.c b/arch/sparc/kernel/irq_32.c
index 5ad6e5c..07c3e39 100644
--- a/arch/sparc/kernel/irq_32.c
+++ b/arch/sparc/kernel/irq_32.c
@@ -320,7 +320,7 @@ void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs)
 	panic("bogus interrupt received");
 }
 
-void handler_irq(int irq, struct pt_regs * regs)
+void handler_irq(int pil, struct pt_regs * regs)
 {
 	struct pt_regs *old_regs;
 	struct irqaction * action;
@@ -331,23 +331,23 @@ void handler_irq(int irq, struct pt_regs * regs)
 
 	old_regs = set_irq_regs(regs);
 	irq_enter();
-	disable_pil_irq(irq);
+	disable_pil_irq(pil);
 #ifdef CONFIG_SMP
 	/* Only rotate on lower priority IRQs (scsi, ethernet, etc.). */
-	if((sparc_cpu_model==sun4m) && (irq < 10))
+	if((sparc_cpu_model==sun4m) && (pil < 10))
 		smp4m_irq_rotate(cpu);
 #endif
-	action = sparc_irq[irq].action;
-	sparc_irq[irq].flags |= SPARC_IRQ_INPROGRESS;
-	kstat_cpu(cpu).irqs[irq]++;
+	action = sparc_irq[pil].action;
+	sparc_irq[pil].flags |= SPARC_IRQ_INPROGRESS;
+	kstat_cpu(cpu).irqs[pil]++;
 	do {
 		if (!action || !action->handler)
-			unexpected_irq(irq, NULL, regs);
-		action->handler(irq, action->dev_id);
+			unexpected_irq(pil, NULL, regs);
+		action->handler(pil, action->dev_id);
 		action = action->next;
 	} while (action);
-	sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS;
-	enable_pil_irq(irq);
+	sparc_irq[pil].flags &= ~SPARC_IRQ_INPROGRESS;
+	enable_pil_irq(pil);
 	irq_exit();
 	set_irq_regs(old_regs);
 }
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index ee67dae..d4d1233 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -714,13 +714,13 @@ void ack_bad_irq(unsigned int virt_irq)
 void *hardirq_stack[NR_CPUS];
 void *softirq_stack[NR_CPUS];
 
-void __irq_entry handler_irq(int irq, struct pt_regs *regs)
+void __irq_entry handler_irq(int pil, struct pt_regs *regs)
 {
 	unsigned long pstate, bucket_pa;
 	struct pt_regs *old_regs;
 	void *orig_sp;
 
-	clear_softint(1 << irq);
+	clear_softint(1 << pil);
 
 	old_regs = set_irq_regs(regs);
 	irq_enter();
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index e11b461..3af649e 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -205,28 +205,28 @@ out_unlock:
 
 extern void unexpected_irq(int, void *, struct pt_regs *);
 
-void sun4d_handler_irq(int irq, struct pt_regs * regs)
+void sun4d_handler_irq(int pil, struct pt_regs * regs)
 {
 	struct pt_regs *old_regs;
 	struct irqaction * action;
 	int cpu = smp_processor_id();
 	/* SBUS IRQ level (1 - 7) */
-	int sbusl = pil_to_sbus[irq];
+	int sbusl = pil_to_sbus[pil];
 	
 	/* FIXME: Is this necessary?? */
 	cc_get_ipen();
 	
-	cc_set_iclr(1 << irq);
+	cc_set_iclr(1 << pil);
 	
 	old_regs = set_irq_regs(regs);
 	irq_enter();
-	kstat_cpu(cpu).irqs[irq]++;
+	kstat_cpu(cpu).irqs[pil]++;
 	if (!sbusl) {
-		action = *(irq + irq_action);
+		action = *(pil + irq_action);
 		if (!action)
-			unexpected_irq(irq, NULL, regs);
+			unexpected_irq(pil, NULL, regs);
 		do {
-			action->handler(irq, action->dev_id);
+			action->handler(pil, action->dev_id);
 			action = action->next;
 		} while (action);
 	} else {
@@ -251,9 +251,9 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
 						action = actionp->action;
 						
 						if (!action)
-							unexpected_irq(irq, NULL, regs);
+							unexpected_irq(pil, NULL, regs);
 						do {
-							action->handler(irq, action->dev_id);
+							action->handler(pil, action->dev_id);
 							action = action->next;
 						} while (action);
 						release_sbi(SBI2DEVID(sbino), slot);
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 2/5] sparc: in handler_irq() rename irq parameter to pil
@ 2011-01-21 22:26   ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

The generic irq support uses "irq" to identify the
virtual irq number. To avoid confusion rename the
argument to handler_irq() to pil to match the
name of the parameter in the PCR register.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_32.c    |   20 ++++++++++----------
 arch/sparc/kernel/irq_64.c    |    4 ++--
 arch/sparc/kernel/sun4d_irq.c |   18 +++++++++---------
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/arch/sparc/kernel/irq_32.c b/arch/sparc/kernel/irq_32.c
index 5ad6e5c..07c3e39 100644
--- a/arch/sparc/kernel/irq_32.c
+++ b/arch/sparc/kernel/irq_32.c
@@ -320,7 +320,7 @@ void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs)
 	panic("bogus interrupt received");
 }
 
-void handler_irq(int irq, struct pt_regs * regs)
+void handler_irq(int pil, struct pt_regs * regs)
 {
 	struct pt_regs *old_regs;
 	struct irqaction * action;
@@ -331,23 +331,23 @@ void handler_irq(int irq, struct pt_regs * regs)
 
 	old_regs = set_irq_regs(regs);
 	irq_enter();
-	disable_pil_irq(irq);
+	disable_pil_irq(pil);
 #ifdef CONFIG_SMP
 	/* Only rotate on lower priority IRQs (scsi, ethernet, etc.). */
-	if((sparc_cpu_model=sun4m) && (irq < 10))
+	if((sparc_cpu_model=sun4m) && (pil < 10))
 		smp4m_irq_rotate(cpu);
 #endif
-	action = sparc_irq[irq].action;
-	sparc_irq[irq].flags |= SPARC_IRQ_INPROGRESS;
-	kstat_cpu(cpu).irqs[irq]++;
+	action = sparc_irq[pil].action;
+	sparc_irq[pil].flags |= SPARC_IRQ_INPROGRESS;
+	kstat_cpu(cpu).irqs[pil]++;
 	do {
 		if (!action || !action->handler)
-			unexpected_irq(irq, NULL, regs);
-		action->handler(irq, action->dev_id);
+			unexpected_irq(pil, NULL, regs);
+		action->handler(pil, action->dev_id);
 		action = action->next;
 	} while (action);
-	sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS;
-	enable_pil_irq(irq);
+	sparc_irq[pil].flags &= ~SPARC_IRQ_INPROGRESS;
+	enable_pil_irq(pil);
 	irq_exit();
 	set_irq_regs(old_regs);
 }
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index ee67dae..d4d1233 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -714,13 +714,13 @@ void ack_bad_irq(unsigned int virt_irq)
 void *hardirq_stack[NR_CPUS];
 void *softirq_stack[NR_CPUS];
 
-void __irq_entry handler_irq(int irq, struct pt_regs *regs)
+void __irq_entry handler_irq(int pil, struct pt_regs *regs)
 {
 	unsigned long pstate, bucket_pa;
 	struct pt_regs *old_regs;
 	void *orig_sp;
 
-	clear_softint(1 << irq);
+	clear_softint(1 << pil);
 
 	old_regs = set_irq_regs(regs);
 	irq_enter();
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index e11b461..3af649e 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -205,28 +205,28 @@ out_unlock:
 
 extern void unexpected_irq(int, void *, struct pt_regs *);
 
-void sun4d_handler_irq(int irq, struct pt_regs * regs)
+void sun4d_handler_irq(int pil, struct pt_regs * regs)
 {
 	struct pt_regs *old_regs;
 	struct irqaction * action;
 	int cpu = smp_processor_id();
 	/* SBUS IRQ level (1 - 7) */
-	int sbusl = pil_to_sbus[irq];
+	int sbusl = pil_to_sbus[pil];
 	
 	/* FIXME: Is this necessary?? */
 	cc_get_ipen();
 	
-	cc_set_iclr(1 << irq);
+	cc_set_iclr(1 << pil);
 	
 	old_regs = set_irq_regs(regs);
 	irq_enter();
-	kstat_cpu(cpu).irqs[irq]++;
+	kstat_cpu(cpu).irqs[pil]++;
 	if (!sbusl) {
-		action = *(irq + irq_action);
+		action = *(pil + irq_action);
 		if (!action)
-			unexpected_irq(irq, NULL, regs);
+			unexpected_irq(pil, NULL, regs);
 		do {
-			action->handler(irq, action->dev_id);
+			action->handler(pil, action->dev_id);
 			action = action->next;
 		} while (action);
 	} else {
@@ -251,9 +251,9 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
 						action = actionp->action;
 						
 						if (!action)
-							unexpected_irq(irq, NULL, regs);
+							unexpected_irq(pil, NULL, regs);
 						do {
-							action->handler(irq, action->dev_id);
+							action->handler(pil, action->dev_id);
 							action = action->next;
 						} while (action);
 						release_sbi(SBI2DEVID(sbino), slot);
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 3/5] sparc64: all pointers to irq_handler_data renamed to handler_data
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:26   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

In preparation of moving to use irq_data.handler_data rename
all pointers to irq_handler_data "handler_data".
This will also prevent name clash when we introduce the
new irq methods.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   78 ++++++++++++++++++++++----------------------
 1 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index d4d1233..a763f9a 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -277,15 +277,15 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 
 static void sun4u_irq_enable(unsigned int virt_irq)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 
-	if (likely(data)) {
+	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq,
 				       irq_desc[virt_irq].irq_data.affinity);
-		imap = data->imap;
+		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
 
@@ -294,21 +294,21 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 			 IMAP_AID_SAFARI | IMAP_NID_SAFARI);
 		val |= tid | IMAP_VALID;
 		upa_writeq(val, imap);
-		upa_writeq(ICLR_IDLE, data->iclr);
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 	}
 }
 
 static int sun4u_set_affinity(unsigned int virt_irq,
 			       const struct cpumask *mask)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 
-	if (likely(data)) {
+	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq, mask);
-		imap = data->imap;
+		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
 
@@ -317,7 +317,7 @@ static int sun4u_set_affinity(unsigned int virt_irq,
 			 IMAP_AID_SAFARI | IMAP_NID_SAFARI);
 		val |= tid | IMAP_VALID;
 		upa_writeq(val, imap);
-		upa_writeq(ICLR_IDLE, data->iclr);
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 	}
 
 	return 0;
@@ -346,14 +346,14 @@ static void sun4u_irq_disable(unsigned int virt_irq)
 
 static void sun4u_irq_eoi(unsigned int virt_irq)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
 
-	if (likely(data))
-		upa_writeq(ICLR_IDLE, data->iclr);
+	if (likely(handler_data))
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 }
 
 static void sun4v_irq_enable(unsigned int virt_irq)
@@ -530,10 +530,10 @@ static struct irq_chip sun4v_virq = {
 static void pre_flow_handler(unsigned int virt_irq,
 				      struct irq_desc *desc)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 
-	data->pre_handler(ino, data->arg1, data->arg2);
+	handler_data->pre_handler(ino, handler_data->arg1, handler_data->arg2);
 
 	handle_fasteoi_irq(virt_irq, desc);
 }
@@ -542,12 +542,12 @@ void irq_install_pre_handler(int virt_irq,
 			     void (*func)(unsigned int, void *, void *),
 			     void *arg1, void *arg2)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
-	data->pre_handler = func;
-	data->arg1 = arg1;
-	data->arg2 = arg2;
+	handler_data->pre_handler = func;
+	handler_data->arg1 = arg1;
+	handler_data->arg2 = arg2;
 
 	desc->handle_irq = pre_flow_handler;
 }
@@ -555,7 +555,7 @@ void irq_install_pre_handler(int virt_irq,
 unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 {
 	struct ino_bucket *bucket;
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned int virt_irq;
 	int ino;
 
@@ -573,19 +573,19 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 					      "IVEC");
 	}
 
-	data = get_irq_chip_data(virt_irq);
-	if (unlikely(data))
+	handler_data = get_irq_chip_data(virt_irq);
+	if (unlikely(handler_data))
 		goto out;
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data)) {
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data)) {
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
-	data->imap  = imap;
-	data->iclr  = iclr;
+	handler_data->imap  = imap;
+	handler_data->iclr  = iclr;
 
 out:
 	return virt_irq;
@@ -595,7 +595,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 				       struct irq_chip *chip)
 {
 	struct ino_bucket *bucket;
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned int virt_irq;
 
 	BUG_ON(tlb_type != hypervisor);
@@ -610,23 +610,23 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 					      "IVEC");
 	}
 
-	data = get_irq_chip_data(virt_irq);
-	if (unlikely(data))
+	handler_data = get_irq_chip_data(virt_irq);
+	if (unlikely(handler_data))
 		goto out;
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data)) {
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data)) {
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
 	 * register accesses.
 	 */
-	data->imap = ~0UL;
-	data->iclr = ~0UL;
+	handler_data->imap = ~0UL;
+	handler_data->iclr = ~0UL;
 
 out:
 	return virt_irq;
@@ -641,7 +641,7 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
 
 unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 {
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned long hv_err, cookie;
 	struct ino_bucket *bucket;
 	struct irq_desc *desc;
@@ -669,8 +669,8 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 				      handle_fasteoi_irq,
 				      "IVEC");
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data))
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data))
 		return 0;
 
 	/* In order to make the LDC channel startup sequence easier,
@@ -680,14 +680,14 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 	desc = irq_desc + virt_irq;
 	desc->status |= IRQ_NOAUTOEN;
 
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
 	 * register accesses.
 	 */
-	data->imap = ~0UL;
-	data->iclr = ~0UL;
+	handler_data->imap = ~0UL;
+	handler_data->iclr = ~0UL;
 
 	cookie = ~__pa(bucket);
 	hv_err = sun4v_vintr_set_cookie(devhandle, devino, cookie);
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 3/5] sparc64: all pointers to irq_handler_data renamed to handler_data
@ 2011-01-21 22:26   ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

In preparation of moving to use irq_data.handler_data rename
all pointers to irq_handler_data "handler_data".
This will also prevent name clash when we introduce the
new irq methods.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   78 ++++++++++++++++++++++----------------------
 1 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index d4d1233..a763f9a 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -277,15 +277,15 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 
 static void sun4u_irq_enable(unsigned int virt_irq)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 
-	if (likely(data)) {
+	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq,
 				       irq_desc[virt_irq].irq_data.affinity);
-		imap = data->imap;
+		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
 
@@ -294,21 +294,21 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 			 IMAP_AID_SAFARI | IMAP_NID_SAFARI);
 		val |= tid | IMAP_VALID;
 		upa_writeq(val, imap);
-		upa_writeq(ICLR_IDLE, data->iclr);
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 	}
 }
 
 static int sun4u_set_affinity(unsigned int virt_irq,
 			       const struct cpumask *mask)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 
-	if (likely(data)) {
+	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
 		cpuid = irq_choose_cpu(virt_irq, mask);
-		imap = data->imap;
+		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
 
@@ -317,7 +317,7 @@ static int sun4u_set_affinity(unsigned int virt_irq,
 			 IMAP_AID_SAFARI | IMAP_NID_SAFARI);
 		val |= tid | IMAP_VALID;
 		upa_writeq(val, imap);
-		upa_writeq(ICLR_IDLE, data->iclr);
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 	}
 
 	return 0;
@@ -346,14 +346,14 @@ static void sun4u_irq_disable(unsigned int virt_irq)
 
 static void sun4u_irq_eoi(unsigned int virt_irq)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
 
-	if (likely(data))
-		upa_writeq(ICLR_IDLE, data->iclr);
+	if (likely(handler_data))
+		upa_writeq(ICLR_IDLE, handler_data->iclr);
 }
 
 static void sun4v_irq_enable(unsigned int virt_irq)
@@ -530,10 +530,10 @@ static struct irq_chip sun4v_virq = {
 static void pre_flow_handler(unsigned int virt_irq,
 				      struct irq_desc *desc)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 
-	data->pre_handler(ino, data->arg1, data->arg2);
+	handler_data->pre_handler(ino, handler_data->arg1, handler_data->arg2);
 
 	handle_fasteoi_irq(virt_irq, desc);
 }
@@ -542,12 +542,12 @@ void irq_install_pre_handler(int virt_irq,
 			     void (*func)(unsigned int, void *, void *),
 			     void *arg1, void *arg2)
 {
-	struct irq_handler_data *data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
-	data->pre_handler = func;
-	data->arg1 = arg1;
-	data->arg2 = arg2;
+	handler_data->pre_handler = func;
+	handler_data->arg1 = arg1;
+	handler_data->arg2 = arg2;
 
 	desc->handle_irq = pre_flow_handler;
 }
@@ -555,7 +555,7 @@ void irq_install_pre_handler(int virt_irq,
 unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 {
 	struct ino_bucket *bucket;
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned int virt_irq;
 	int ino;
 
@@ -573,19 +573,19 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 					      "IVEC");
 	}
 
-	data = get_irq_chip_data(virt_irq);
-	if (unlikely(data))
+	handler_data = get_irq_chip_data(virt_irq);
+	if (unlikely(handler_data))
 		goto out;
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data)) {
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data)) {
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
-	data->imap  = imap;
-	data->iclr  = iclr;
+	handler_data->imap  = imap;
+	handler_data->iclr  = iclr;
 
 out:
 	return virt_irq;
@@ -595,7 +595,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 				       struct irq_chip *chip)
 {
 	struct ino_bucket *bucket;
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned int virt_irq;
 
 	BUG_ON(tlb_type != hypervisor);
@@ -610,23 +610,23 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 					      "IVEC");
 	}
 
-	data = get_irq_chip_data(virt_irq);
-	if (unlikely(data))
+	handler_data = get_irq_chip_data(virt_irq);
+	if (unlikely(handler_data))
 		goto out;
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data)) {
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data)) {
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
 	 * register accesses.
 	 */
-	data->imap = ~0UL;
-	data->iclr = ~0UL;
+	handler_data->imap = ~0UL;
+	handler_data->iclr = ~0UL;
 
 out:
 	return virt_irq;
@@ -641,7 +641,7 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
 
 unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 {
-	struct irq_handler_data *data;
+	struct irq_handler_data *handler_data;
 	unsigned long hv_err, cookie;
 	struct ino_bucket *bucket;
 	struct irq_desc *desc;
@@ -669,8 +669,8 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 				      handle_fasteoi_irq,
 				      "IVEC");
 
-	data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
-	if (unlikely(!data))
+	handler_data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
+	if (unlikely(!handler_data))
 		return 0;
 
 	/* In order to make the LDC channel startup sequence easier,
@@ -680,14 +680,14 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 	desc = irq_desc + virt_irq;
 	desc->status |= IRQ_NOAUTOEN;
 
-	set_irq_chip_data(virt_irq, data);
+	set_irq_chip_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
 	 * register accesses.
 	 */
-	data->imap = ~0UL;
-	data->iclr = ~0UL;
+	handler_data->imap = ~0UL;
+	handler_data->iclr = ~0UL;
 
 	cookie = ~__pa(bucket);
 	hv_err = sun4v_vintr_set_cookie(devhandle, devino, cookie);
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 4/5] sparc64: use {get,set}_irq_data for handler_data
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:26   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

{get,set}_irq_data uses the member "handler_data" in irq_data
which fits the nae of the datatype
The change has no functional impact and cosmetic only

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index a763f9a..b07fc79 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -277,7 +277,7 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 
 static void sun4u_irq_enable(unsigned int virt_irq)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
@@ -301,7 +301,7 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 static int sun4u_set_affinity(unsigned int virt_irq,
 			       const struct cpumask *mask)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq)
 
 static void sun4u_irq_eoi(unsigned int virt_irq)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
@@ -530,7 +530,7 @@ static struct irq_chip sun4v_virq = {
 static void pre_flow_handler(unsigned int virt_irq,
 				      struct irq_desc *desc)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 
 	handler_data->pre_handler(ino, handler_data->arg1, handler_data->arg2);
@@ -542,7 +542,7 @@ void irq_install_pre_handler(int virt_irq,
 			     void (*func)(unsigned int, void *, void *),
 			     void *arg1, void *arg2)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	handler_data->pre_handler = func;
@@ -573,7 +573,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 					      "IVEC");
 	}
 
-	handler_data = get_irq_chip_data(virt_irq);
+	handler_data = get_irq_data(virt_irq);
 	if (unlikely(handler_data))
 		goto out;
 
@@ -582,7 +582,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	handler_data->imap  = imap;
 	handler_data->iclr  = iclr;
@@ -610,7 +610,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 					      "IVEC");
 	}
 
-	handler_data = get_irq_chip_data(virt_irq);
+	handler_data = get_irq_data(virt_irq);
 	if (unlikely(handler_data))
 		goto out;
 
@@ -619,7 +619,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
@@ -680,7 +680,7 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 	desc = irq_desc + virt_irq;
 	desc->status |= IRQ_NOAUTOEN;
 
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 4/5] sparc64: use {get,set}_irq_data for handler_data
@ 2011-01-21 22:26   ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

{get,set}_irq_data uses the member "handler_data" in irq_data
which fits the nae of the datatype
The change has no functional impact and cosmetic only

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/kernel/irq_64.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index a763f9a..b07fc79 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -277,7 +277,7 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 
 static void sun4u_irq_enable(unsigned int virt_irq)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
@@ -301,7 +301,7 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 static int sun4u_set_affinity(unsigned int virt_irq,
 			       const struct cpumask *mask)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq)
 
 static void sun4u_irq_eoi(unsigned int virt_irq)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
@@ -530,7 +530,7 @@ static struct irq_chip sun4v_virq = {
 static void pre_flow_handler(unsigned int virt_irq,
 				      struct irq_desc *desc)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
 
 	handler_data->pre_handler(ino, handler_data->arg1, handler_data->arg2);
@@ -542,7 +542,7 @@ void irq_install_pre_handler(int virt_irq,
 			     void (*func)(unsigned int, void *, void *),
 			     void *arg1, void *arg2)
 {
-	struct irq_handler_data *handler_data = get_irq_chip_data(virt_irq);
+	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
 	struct irq_desc *desc = irq_desc + virt_irq;
 
 	handler_data->pre_handler = func;
@@ -573,7 +573,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 					      "IVEC");
 	}
 
-	handler_data = get_irq_chip_data(virt_irq);
+	handler_data = get_irq_data(virt_irq);
 	if (unlikely(handler_data))
 		goto out;
 
@@ -582,7 +582,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	handler_data->imap  = imap;
 	handler_data->iclr  = iclr;
@@ -610,7 +610,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 					      "IVEC");
 	}
 
-	handler_data = get_irq_chip_data(virt_irq);
+	handler_data = get_irq_data(virt_irq);
 	if (unlikely(handler_data))
 		goto out;
 
@@ -619,7 +619,7 @@ static unsigned int sun4v_build_common(unsigned long sysino,
 		prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
 		prom_halt();
 	}
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
@@ -680,7 +680,7 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 	desc = irq_desc + virt_irq;
 	desc->status |= IRQ_NOAUTOEN;
 
-	set_irq_chip_data(virt_irq, handler_data);
+	set_irq_data(virt_irq, handler_data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
 	 * is done by hypervisor calls on sun4v platforms, not by direct
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:26   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

Drop all uses of deprecated genirq features

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/Kconfig         |    2 +
 arch/sparc/kernel/irq_64.c |  119 ++++++++++++++++++++++----------------------
 2 files changed, 62 insertions(+), 59 deletions(-)

diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 45d9c87..7990a3c 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -50,6 +50,8 @@ config SPARC64
 	select RTC_DRV_STARFIRE
 	select HAVE_PERF_EVENTS
 	select PERF_USE_VMALLOC
+	select HAVE_GENERIC_HARDIRQS
+	select GENERIC_HARDIRQS_NO_DEPRECATED
 
 config ARCH_DEFCONFIG
 	string
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index b07fc79..f356e4c 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -275,16 +275,15 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 	real_hard_smp_processor_id()
 #endif
 
-static void sun4u_irq_enable(unsigned int virt_irq)
+static void sun4u_irq_enable(struct irq_data *data)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
+	struct irq_handler_data *handler_data = data->handler_data;
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
-		cpuid = irq_choose_cpu(virt_irq,
-				       irq_desc[virt_irq].irq_data.affinity);
+		cpuid = irq_choose_cpu(data->irq, data->affinity);
 		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -298,16 +297,16 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 	}
 }
 
-static int sun4u_set_affinity(unsigned int virt_irq,
-			       const struct cpumask *mask)
+static int sun4u_set_affinity(struct irq_data *data,
+			       const struct cpumask *mask, bool force)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
+	struct irq_handler_data *handler_data = data->handler_data;
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
-		cpuid = irq_choose_cpu(virt_irq, mask);
+		cpuid = irq_choose_cpu(data->irq, mask);
 		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -340,14 +339,14 @@ static int sun4u_set_affinity(unsigned int virt_irq,
  * sees that, it also hooks up a default ->shutdown method which
  * invokes ->mask() which we do not want.  See irq_chip_set_defaults().
  */
-static void sun4u_irq_disable(unsigned int virt_irq)
+static void sun4u_irq_disable(struct irq_data *data)
 {
 }
 
-static void sun4u_irq_eoi(unsigned int virt_irq)
+static void sun4u_irq_eoi(struct irq_data *data)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
-	struct irq_desc *desc = irq_desc + virt_irq;
+	struct irq_handler_data *handler_data = data->handler_data;
+	struct irq_desc *desc = irq_desc + data->irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
@@ -356,11 +355,10 @@ static void sun4u_irq_eoi(unsigned int virt_irq)
 		upa_writeq(ICLR_IDLE, handler_data->iclr);
 }
 
-static void sun4v_irq_enable(unsigned int virt_irq)
+static void sun4v_irq_enable(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	unsigned long cpuid = irq_choose_cpu(virt_irq,
-					     irq_desc[virt_irq].irq_data.affinity);
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	unsigned long cpuid = irq_choose_cpu(data->irq, data->affinity);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -377,11 +375,11 @@ static void sun4v_irq_enable(unsigned int virt_irq)
 		       ino, err);
 }
 
-static int sun4v_set_affinity(unsigned int virt_irq,
-			       const struct cpumask *mask)
+static int sun4v_set_affinity(struct irq_data *data,
+			       const struct cpumask *mask, bool force)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	unsigned long cpuid = irq_choose_cpu(virt_irq, mask);
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	unsigned long cpuid = irq_choose_cpu(data->irq, mask);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -392,9 +390,9 @@ static int sun4v_set_affinity(unsigned int virt_irq,
 	return 0;
 }
 
-static void sun4v_irq_disable(unsigned int virt_irq)
+static void sun4v_irq_disable(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
 	int err;
 
 	err = sun4v_intr_setenabled(ino, HV_INTR_DISABLED);
@@ -403,10 +401,10 @@ static void sun4v_irq_disable(unsigned int virt_irq)
 		       "err(%d)\n", ino, err);
 }
 
-static void sun4v_irq_eoi(unsigned int virt_irq)
+static void sun4v_irq_eoi(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	struct irq_desc *desc = irq_desc + virt_irq;
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	struct irq_desc *desc = irq_desc + data->irq;
 	int err;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
@@ -418,15 +416,15 @@ static void sun4v_irq_eoi(unsigned int virt_irq)
 		       "err(%d)\n", ino, err);
 }
 
-static void sun4v_virq_enable(unsigned int virt_irq)
+static void sun4v_virq_enable(struct irq_data *data)
 {
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].irq_data.affinity);
+	cpuid = irq_choose_cpu(data->irq, data->affinity);
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid);
 	if (err != HV_EOK)
@@ -447,16 +445,16 @@ static void sun4v_virq_enable(unsigned int virt_irq)
 		       dev_handle, dev_ino, err);
 }
 
-static int sun4v_virt_set_affinity(unsigned int virt_irq,
-				    const struct cpumask *mask)
+static int sun4v_virt_set_affinity(struct irq_data *data,
+				    const struct cpumask *mask, bool force)
 {
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, mask);
+	cpuid = irq_choose_cpu(data->irq, mask);
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid);
 	if (err != HV_EOK)
@@ -467,13 +465,13 @@ static int sun4v_virt_set_affinity(unsigned int virt_irq,
 	return 0;
 }
 
-static void sun4v_virq_disable(unsigned int virt_irq)
+static void sun4v_virq_disable(struct irq_data *data)
 {
 	unsigned long dev_handle, dev_ino;
 	int err;
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_valid(dev_handle, dev_ino,
 				    HV_INTR_DISABLED);
@@ -483,17 +481,17 @@ static void sun4v_virq_disable(unsigned int virt_irq)
 		       dev_handle, dev_ino, err);
 }
 
-static void sun4v_virq_eoi(unsigned int virt_irq)
+static void sun4v_virq_eoi(struct irq_data *data)
 {
-	struct irq_desc *desc = irq_desc + virt_irq;
+	struct irq_desc *desc = irq_desc + data->irq;
 	unsigned long dev_handle, dev_ino;
 	int err;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_state(dev_handle, dev_ino,
 				    HV_INTR_STATE_IDLE);
@@ -504,27 +502,27 @@ static void sun4v_virq_eoi(unsigned int virt_irq)
 }
 
 static struct irq_chip sun4u_irq = {
-	.name		= "sun4u",
-	.enable		= sun4u_irq_enable,
-	.disable	= sun4u_irq_disable,
-	.eoi		= sun4u_irq_eoi,
-	.set_affinity	= sun4u_set_affinity,
+	.name			= "sun4u",
+	.irq_enable		= sun4u_irq_enable,
+	.irq_disable		= sun4u_irq_disable,
+	.irq_eoi		= sun4u_irq_eoi,
+	.irq_set_affinity	= sun4u_set_affinity,
 };
 
 static struct irq_chip sun4v_irq = {
-	.name		= "sun4v",
-	.enable		= sun4v_irq_enable,
-	.disable	= sun4v_irq_disable,
-	.eoi		= sun4v_irq_eoi,
-	.set_affinity	= sun4v_set_affinity,
+	.name			= "sun4v",
+	.irq_enable		= sun4v_irq_enable,
+	.irq_disable		= sun4v_irq_disable,
+	.irq_eoi		= sun4v_irq_eoi,
+	.irq_set_affinity	= sun4v_set_affinity,
 };
 
 static struct irq_chip sun4v_virq = {
-	.name		= "vsun4v",
-	.enable		= sun4v_virq_enable,
-	.disable	= sun4v_virq_disable,
-	.eoi		= sun4v_virq_eoi,
-	.set_affinity	= sun4v_virt_set_affinity,
+	.name			= "vsun4v",
+	.irq_enable		= sun4v_virq_enable,
+	.irq_disable		= sun4v_virq_disable,
+	.irq_eoi		= sun4v_virq_eoi,
+	.irq_set_affinity	= sun4v_virt_set_affinity,
 };
 
 static void pre_flow_handler(unsigned int virt_irq,
@@ -798,9 +796,12 @@ void fixup_irqs(void)
 		raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
 		if (irq_desc[irq].action &&
 		    !(irq_desc[irq].status & IRQ_PER_CPU)) {
-			if (irq_desc[irq].irq_data.chip->set_affinity)
-				irq_desc[irq].irq_data.chip->set_affinity(irq,
-					irq_desc[irq].irq_data.affinity);
+			struct irq_data *data = irq_get_irq_data(irq);
+
+			if (data->chip->irq_set_affinity)
+				data->chip->irq_set_affinity(data,
+				                             data->affinity,
+				                             false);
 		}
 		raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
 	}
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 5/5] sparc64: use up-to-data genirq functions
@ 2011-01-21 22:26   ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 22:26 UTC (permalink / raw)
  To: David S. Miller, Thomas Gleixner; +Cc: sparclinux, lkml, Sam Ravnborg

Drop all uses of deprecated genirq features

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 arch/sparc/Kconfig         |    2 +
 arch/sparc/kernel/irq_64.c |  119 ++++++++++++++++++++++----------------------
 2 files changed, 62 insertions(+), 59 deletions(-)

diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 45d9c87..7990a3c 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -50,6 +50,8 @@ config SPARC64
 	select RTC_DRV_STARFIRE
 	select HAVE_PERF_EVENTS
 	select PERF_USE_VMALLOC
+	select HAVE_GENERIC_HARDIRQS
+	select GENERIC_HARDIRQS_NO_DEPRECATED
 
 config ARCH_DEFCONFIG
 	string
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index b07fc79..f356e4c 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -275,16 +275,15 @@ static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
 	real_hard_smp_processor_id()
 #endif
 
-static void sun4u_irq_enable(unsigned int virt_irq)
+static void sun4u_irq_enable(struct irq_data *data)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
+	struct irq_handler_data *handler_data = data->handler_data;
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
-		cpuid = irq_choose_cpu(virt_irq,
-				       irq_desc[virt_irq].irq_data.affinity);
+		cpuid = irq_choose_cpu(data->irq, data->affinity);
 		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -298,16 +297,16 @@ static void sun4u_irq_enable(unsigned int virt_irq)
 	}
 }
 
-static int sun4u_set_affinity(unsigned int virt_irq,
-			       const struct cpumask *mask)
+static int sun4u_set_affinity(struct irq_data *data,
+			       const struct cpumask *mask, bool force)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
+	struct irq_handler_data *handler_data = data->handler_data;
 
 	if (likely(handler_data)) {
 		unsigned long cpuid, imap, val;
 		unsigned int tid;
 
-		cpuid = irq_choose_cpu(virt_irq, mask);
+		cpuid = irq_choose_cpu(data->irq, mask);
 		imap = handler_data->imap;
 
 		tid = sun4u_compute_tid(imap, cpuid);
@@ -340,14 +339,14 @@ static int sun4u_set_affinity(unsigned int virt_irq,
  * sees that, it also hooks up a default ->shutdown method which
  * invokes ->mask() which we do not want.  See irq_chip_set_defaults().
  */
-static void sun4u_irq_disable(unsigned int virt_irq)
+static void sun4u_irq_disable(struct irq_data *data)
 {
 }
 
-static void sun4u_irq_eoi(unsigned int virt_irq)
+static void sun4u_irq_eoi(struct irq_data *data)
 {
-	struct irq_handler_data *handler_data = get_irq_data(virt_irq);
-	struct irq_desc *desc = irq_desc + virt_irq;
+	struct irq_handler_data *handler_data = data->handler_data;
+	struct irq_desc *desc = irq_desc + data->irq;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
@@ -356,11 +355,10 @@ static void sun4u_irq_eoi(unsigned int virt_irq)
 		upa_writeq(ICLR_IDLE, handler_data->iclr);
 }
 
-static void sun4v_irq_enable(unsigned int virt_irq)
+static void sun4v_irq_enable(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	unsigned long cpuid = irq_choose_cpu(virt_irq,
-					     irq_desc[virt_irq].irq_data.affinity);
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	unsigned long cpuid = irq_choose_cpu(data->irq, data->affinity);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -377,11 +375,11 @@ static void sun4v_irq_enable(unsigned int virt_irq)
 		       ino, err);
 }
 
-static int sun4v_set_affinity(unsigned int virt_irq,
-			       const struct cpumask *mask)
+static int sun4v_set_affinity(struct irq_data *data,
+			       const struct cpumask *mask, bool force)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	unsigned long cpuid = irq_choose_cpu(virt_irq, mask);
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	unsigned long cpuid = irq_choose_cpu(data->irq, mask);
 	int err;
 
 	err = sun4v_intr_settarget(ino, cpuid);
@@ -392,9 +390,9 @@ static int sun4v_set_affinity(unsigned int virt_irq,
 	return 0;
 }
 
-static void sun4v_irq_disable(unsigned int virt_irq)
+static void sun4v_irq_disable(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
 	int err;
 
 	err = sun4v_intr_setenabled(ino, HV_INTR_DISABLED);
@@ -403,10 +401,10 @@ static void sun4v_irq_disable(unsigned int virt_irq)
 		       "err(%d)\n", ino, err);
 }
 
-static void sun4v_irq_eoi(unsigned int virt_irq)
+static void sun4v_irq_eoi(struct irq_data *data)
 {
-	unsigned int ino = virt_irq_table[virt_irq].dev_ino;
-	struct irq_desc *desc = irq_desc + virt_irq;
+	unsigned int ino = virt_irq_table[data->irq].dev_ino;
+	struct irq_desc *desc = irq_desc + data->irq;
 	int err;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
@@ -418,15 +416,15 @@ static void sun4v_irq_eoi(unsigned int virt_irq)
 		       "err(%d)\n", ino, err);
 }
 
-static void sun4v_virq_enable(unsigned int virt_irq)
+static void sun4v_virq_enable(struct irq_data *data)
 {
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].irq_data.affinity);
+	cpuid = irq_choose_cpu(data->irq, data->affinity);
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid);
 	if (err != HV_EOK)
@@ -447,16 +445,16 @@ static void sun4v_virq_enable(unsigned int virt_irq)
 		       dev_handle, dev_ino, err);
 }
 
-static int sun4v_virt_set_affinity(unsigned int virt_irq,
-				    const struct cpumask *mask)
+static int sun4v_virt_set_affinity(struct irq_data *data,
+				    const struct cpumask *mask, bool force)
 {
 	unsigned long cpuid, dev_handle, dev_ino;
 	int err;
 
-	cpuid = irq_choose_cpu(virt_irq, mask);
+	cpuid = irq_choose_cpu(data->irq, mask);
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_target(dev_handle, dev_ino, cpuid);
 	if (err != HV_EOK)
@@ -467,13 +465,13 @@ static int sun4v_virt_set_affinity(unsigned int virt_irq,
 	return 0;
 }
 
-static void sun4v_virq_disable(unsigned int virt_irq)
+static void sun4v_virq_disable(struct irq_data *data)
 {
 	unsigned long dev_handle, dev_ino;
 	int err;
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_valid(dev_handle, dev_ino,
 				    HV_INTR_DISABLED);
@@ -483,17 +481,17 @@ static void sun4v_virq_disable(unsigned int virt_irq)
 		       dev_handle, dev_ino, err);
 }
 
-static void sun4v_virq_eoi(unsigned int virt_irq)
+static void sun4v_virq_eoi(struct irq_data *data)
 {
-	struct irq_desc *desc = irq_desc + virt_irq;
+	struct irq_desc *desc = irq_desc + data->irq;
 	unsigned long dev_handle, dev_ino;
 	int err;
 
 	if (unlikely(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
 		return;
 
-	dev_handle = virt_irq_table[virt_irq].dev_handle;
-	dev_ino = virt_irq_table[virt_irq].dev_ino;
+	dev_handle = virt_irq_table[data->irq].dev_handle;
+	dev_ino = virt_irq_table[data->irq].dev_ino;
 
 	err = sun4v_vintr_set_state(dev_handle, dev_ino,
 				    HV_INTR_STATE_IDLE);
@@ -504,27 +502,27 @@ static void sun4v_virq_eoi(unsigned int virt_irq)
 }
 
 static struct irq_chip sun4u_irq = {
-	.name		= "sun4u",
-	.enable		= sun4u_irq_enable,
-	.disable	= sun4u_irq_disable,
-	.eoi		= sun4u_irq_eoi,
-	.set_affinity	= sun4u_set_affinity,
+	.name			= "sun4u",
+	.irq_enable		= sun4u_irq_enable,
+	.irq_disable		= sun4u_irq_disable,
+	.irq_eoi		= sun4u_irq_eoi,
+	.irq_set_affinity	= sun4u_set_affinity,
 };
 
 static struct irq_chip sun4v_irq = {
-	.name		= "sun4v",
-	.enable		= sun4v_irq_enable,
-	.disable	= sun4v_irq_disable,
-	.eoi		= sun4v_irq_eoi,
-	.set_affinity	= sun4v_set_affinity,
+	.name			= "sun4v",
+	.irq_enable		= sun4v_irq_enable,
+	.irq_disable		= sun4v_irq_disable,
+	.irq_eoi		= sun4v_irq_eoi,
+	.irq_set_affinity	= sun4v_set_affinity,
 };
 
 static struct irq_chip sun4v_virq = {
-	.name		= "vsun4v",
-	.enable		= sun4v_virq_enable,
-	.disable	= sun4v_virq_disable,
-	.eoi		= sun4v_virq_eoi,
-	.set_affinity	= sun4v_virt_set_affinity,
+	.name			= "vsun4v",
+	.irq_enable		= sun4v_virq_enable,
+	.irq_disable		= sun4v_virq_disable,
+	.irq_eoi		= sun4v_virq_eoi,
+	.irq_set_affinity	= sun4v_virt_set_affinity,
 };
 
 static void pre_flow_handler(unsigned int virt_irq,
@@ -798,9 +796,12 @@ void fixup_irqs(void)
 		raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
 		if (irq_desc[irq].action &&
 		    !(irq_desc[irq].status & IRQ_PER_CPU)) {
-			if (irq_desc[irq].irq_data.chip->set_affinity)
-				irq_desc[irq].irq_data.chip->set_affinity(irq,
-					irq_desc[irq].irq_data.affinity);
+			struct irq_data *data = irq_get_irq_data(irq);
+
+			if (data->chip->irq_set_affinity)
+				data->chip->irq_set_affinity(data,
+				                             data->affinity,
+				                             false);
 		}
 		raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
 	}
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [RFC PATCH 0/5] sparc64: drop deprecated irq features
  2011-01-21 22:24 ` Sam Ravnborg
@ 2011-01-21 22:55   ` David Miller
  -1 siblings, 0 replies; 22+ messages in thread
From: David Miller @ 2011-01-21 22:55 UTC (permalink / raw)
  To: sam; +Cc: sparclinux, tglx, linux-kernel

From: Sam Ravnborg <sam@ravnborg.org>
Date: Fri, 21 Jan 2011 23:24:51 +0100

> Sam Ravnborg (5):
>       sparc64: fix direct access to irq_desc
>       sparc: in handler_irq() rename irq parameter to pil
>       sparc64: all pointers to irq_handler_data renamed to handler_data
>       sparc64: use {get,set}_irq_data for handler_data
>       sparc64: use up-to-data genirq functions

I did a sanity build and boot of these changes against Linus current
tree and it seems to work fine on my Niagara-2+ machine.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [RFC PATCH 0/5] sparc64: drop deprecated irq features
@ 2011-01-21 22:55   ` David Miller
  0 siblings, 0 replies; 22+ messages in thread
From: David Miller @ 2011-01-21 22:55 UTC (permalink / raw)
  To: sam; +Cc: sparclinux, tglx, linux-kernel

From: Sam Ravnborg <sam@ravnborg.org>
Date: Fri, 21 Jan 2011 23:24:51 +0100

> Sam Ravnborg (5):
>       sparc64: fix direct access to irq_desc
>       sparc: in handler_irq() rename irq parameter to pil
>       sparc64: all pointers to irq_handler_data renamed to handler_data
>       sparc64: use {get,set}_irq_data for handler_data
>       sparc64: use up-to-data genirq functions

I did a sanity build and boot of these changes against Linus current
tree and it seems to work fine on my Niagara-2+ machine.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [RFC PATCH 0/5] sparc64: drop deprecated irq features
  2011-01-21 22:55   ` David Miller
@ 2011-01-21 23:03     ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 23:03 UTC (permalink / raw)
  To: David Miller; +Cc: sparclinux, tglx, linux-kernel

On Fri, Jan 21, 2011 at 02:55:27PM -0800, David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Fri, 21 Jan 2011 23:24:51 +0100
> 
> > Sam Ravnborg (5):
> >       sparc64: fix direct access to irq_desc
> >       sparc: in handler_irq() rename irq parameter to pil
> >       sparc64: all pointers to irq_handler_data renamed to handler_data
> >       sparc64: use {get,set}_irq_data for handler_data
> >       sparc64: use up-to-data genirq functions
> 
> I did a sanity build and boot of these changes against Linus current
> tree and it seems to work fine on my Niagara-2+ machine.

Thanks!
I will repost an updated serie when I have tested it locally too.

	Sam

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [RFC PATCH 0/5] sparc64: drop deprecated irq features
@ 2011-01-21 23:03     ` Sam Ravnborg
  0 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-21 23:03 UTC (permalink / raw)
  To: David Miller; +Cc: sparclinux, tglx, linux-kernel

On Fri, Jan 21, 2011 at 02:55:27PM -0800, David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Fri, 21 Jan 2011 23:24:51 +0100
> 
> > Sam Ravnborg (5):
> >       sparc64: fix direct access to irq_desc
> >       sparc: in handler_irq() rename irq parameter to pil
> >       sparc64: all pointers to irq_handler_data renamed to handler_data
> >       sparc64: use {get,set}_irq_data for handler_data
> >       sparc64: use up-to-data genirq functions
> 
> I did a sanity build and boot of these changes against Linus current
> tree and it seems to work fine on my Niagara-2+ machine.

Thanks!
I will repost an updated serie when I have tested it locally too.

	Sam

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
  (?)
@ 2011-01-21 23:43   ` Josip Rodin
  -1 siblings, 0 replies; 22+ messages in thread
From: Josip Rodin @ 2011-01-21 23:43 UTC (permalink / raw)
  To: sparclinux

On Fri, Jan 21, 2011 at 11:26:56PM +0100, Sam Ravnborg wrote:
> Drop all uses of deprecated genirq features

> -static int sun4u_set_affinity(unsigned int virt_irq,
> -			       const struct cpumask *mask)
> +static int sun4u_set_affinity(struct irq_data *data,
> +			       const struct cpumask *mask, bool force)
> -static int sun4v_set_affinity(unsigned int virt_irq,
> -			       const struct cpumask *mask)
> +static int sun4v_set_affinity(struct irq_data *data,
> +			       const struct cpumask *mask, bool force)
> -static int sun4v_virt_set_affinity(unsigned int virt_irq,
> -				    const struct cpumask *mask)
> +static int sun4v_virt_set_affinity(struct irq_data *data,
> +				    const struct cpumask *mask, bool force)

For the benefit of future readers, maybe add a short comment to the commit
description to explain why these functions are now apparently ignoring the
'force' parameter, that is, does it not apply because it's not presently
implemented, or because it just doesn't make sense.

Just nitpicking, feel free to ignore :)

-- 
     2. That which causes joy or happiness.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
  (?)
  (?)
@ 2011-01-22  0:02   ` David Miller
  -1 siblings, 0 replies; 22+ messages in thread
From: David Miller @ 2011-01-22  0:02 UTC (permalink / raw)
  To: sparclinux

From: Josip Rodin <joy@entuzijast.net>
Date: Sat, 22 Jan 2011 00:43:44 +0100

> On Fri, Jan 21, 2011 at 11:26:56PM +0100, Sam Ravnborg wrote:
>> Drop all uses of deprecated genirq features
> 
>> -static int sun4u_set_affinity(unsigned int virt_irq,
>> -			       const struct cpumask *mask)
>> +static int sun4u_set_affinity(struct irq_data *data,
>> +			       const struct cpumask *mask, bool force)
>> -static int sun4v_set_affinity(unsigned int virt_irq,
>> -			       const struct cpumask *mask)
>> +static int sun4v_set_affinity(struct irq_data *data,
>> +			       const struct cpumask *mask, bool force)
>> -static int sun4v_virt_set_affinity(unsigned int virt_irq,
>> -				    const struct cpumask *mask)
>> +static int sun4v_virt_set_affinity(struct irq_data *data,
>> +				    const struct cpumask *mask, bool force)
> 
> For the benefit of future readers, maybe add a short comment to the commit
> description to explain why these functions are now apparently ignoring the
> 'force' parameter, that is, does it not apply because it's not presently
> implemented, or because it just doesn't make sense.

I don't see any implementation where the "force" parameter is used, and
I see no call of these methods that every sets "force" to anything other
than "false".

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
                     ` (2 preceding siblings ...)
  (?)
@ 2011-01-22  1:21   ` Josip Rodin
  -1 siblings, 0 replies; 22+ messages in thread
From: Josip Rodin @ 2011-01-22  1:21 UTC (permalink / raw)
  To: sparclinux

On Fri, Jan 21, 2011 at 04:02:52PM -0800, David Miller wrote:
> From: Josip Rodin <joy@entuzijast.net>
> Date: Sat, 22 Jan 2011 00:43:44 +0100
> 
> > On Fri, Jan 21, 2011 at 11:26:56PM +0100, Sam Ravnborg wrote:
> >> Drop all uses of deprecated genirq features
> > 
> >> -static int sun4u_set_affinity(unsigned int virt_irq,
> >> -			       const struct cpumask *mask)
> >> +static int sun4u_set_affinity(struct irq_data *data,
> >> +			       const struct cpumask *mask, bool force)
> >> -static int sun4v_set_affinity(unsigned int virt_irq,
> >> -			       const struct cpumask *mask)
> >> +static int sun4v_set_affinity(struct irq_data *data,
> >> +			       const struct cpumask *mask, bool force)
> >> -static int sun4v_virt_set_affinity(unsigned int virt_irq,
> >> -				    const struct cpumask *mask)
> >> +static int sun4v_virt_set_affinity(struct irq_data *data,
> >> +				    const struct cpumask *mask, bool force)
> > 
> > For the benefit of future readers, maybe add a short comment to the commit
> > description to explain why these functions are now apparently ignoring the
> > 'force' parameter, that is, does it not apply because it's not presently
> > implemented, or because it just doesn't make sense.
> 
> I don't see any implementation where the "force" parameter is used, and
> I see no call of these methods that every sets "force" to anything other
> than "false".

So the conversion to a non-deprecated API is introducing cruft?
That sounds like the change defeats its own point :)

-- 
     2. That which causes joy or happiness.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
                     ` (3 preceding siblings ...)
  (?)
@ 2011-01-22  6:51   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-22  6:51 UTC (permalink / raw)
  To: sparclinux

Hi Thomas.
Josip have a point here... Can you shed some light on this?

On Sat, Jan 22, 2011 at 02:21:24AM +0100, Josip Rodin wrote:
> On Fri, Jan 21, 2011 at 04:02:52PM -0800, David Miller wrote:
> > From: Josip Rodin <joy@entuzijast.net>
> > Date: Sat, 22 Jan 2011 00:43:44 +0100
> > 
> > > On Fri, Jan 21, 2011 at 11:26:56PM +0100, Sam Ravnborg wrote:
> > >> Drop all uses of deprecated genirq features
> > > 
> > >> -static int sun4u_set_affinity(unsigned int virt_irq,
> > >> -			       const struct cpumask *mask)
> > >> +static int sun4u_set_affinity(struct irq_data *data,
> > >> +			       const struct cpumask *mask, bool force)
> > >> -static int sun4v_set_affinity(unsigned int virt_irq,
> > >> -			       const struct cpumask *mask)
> > >> +static int sun4v_set_affinity(struct irq_data *data,
> > >> +			       const struct cpumask *mask, bool force)
> > >> -static int sun4v_virt_set_affinity(unsigned int virt_irq,
> > >> -				    const struct cpumask *mask)
> > >> +static int sun4v_virt_set_affinity(struct irq_data *data,
> > >> +				    const struct cpumask *mask, bool force)
> > > 
> > > For the benefit of future readers, maybe add a short comment to the commit
> > > description to explain why these functions are now apparently ignoring the
> > > 'force' parameter, that is, does it not apply because it's not presently
> > > implemented, or because it just doesn't make sense.
> > 
> > I don't see any implementation where the "force" parameter is used, and
> > I see no call of these methods that every sets "force" to anything other
> > than "false".
> 
> So the conversion to a non-deprecated API is introducing cruft?
> That sounds like the change defeats its own point :)

The commit that introduced the force parameter says:

    The replacement for set_affinity() has an extra argument "bool
    force". The reason for this is to notify the low level code, that the
    move has to be done right away and cannot be delayed until the next
    interrupt happens. That's necessary to handle the irq fixup on cpu
    unplug in the generic code.

The only callers of chip->irq_set_affinity() is in kernel/irq/manage.c

And like David I can only see irq_set_affinity() being called with forceúlse.
As force tell us to set the affinity and we do so on sparc in all
cases it looks safe to ignore the parameter.
I will update the changelog to include this info in next version,
if Thomas does not have other inputs.

	Sam

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
                     ` (4 preceding siblings ...)
  (?)
@ 2011-01-22  9:27   ` Thomas Gleixner
  -1 siblings, 0 replies; 22+ messages in thread
From: Thomas Gleixner @ 2011-01-22  9:27 UTC (permalink / raw)
  To: sparclinux

On Sat, 22 Jan 2011, Sam Ravnborg wrote:
> > So the conversion to a non-deprecated API is introducing cruft?
> > That sounds like the change defeats its own point :)
> 
> The commit that introduced the force parameter says:
> 
>     The replacement for set_affinity() has an extra argument "bool
>     force". The reason for this is to notify the low level code, that the
>     move has to be done right away and cannot be delayed until the next
>     interrupt happens. That's necessary to handle the irq fixup on cpu
>     unplug in the generic code.
> 
> The only callers of chip->irq_set_affinity() is in kernel/irq/manage.c
> 
> And like David I can only see irq_set_affinity() being called with forceúlse.
> As force tell us to set the affinity and we do so on sparc in all
> cases it looks safe to ignore the parameter.
> I will update the changelog to include this info in next version,
> if Thomas does not have other inputs.

The change was done as a preparatory for further cleanups down the
road. I did not want to add irq_set_affinity() now and then change all
those instances again 6 month later down the road.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 5/5] sparc64: use up-to-data genirq functions
  2011-01-21 22:26   ` Sam Ravnborg
                     ` (5 preceding siblings ...)
  (?)
@ 2011-01-22 18:29   ` Sam Ravnborg
  -1 siblings, 0 replies; 22+ messages in thread
From: Sam Ravnborg @ 2011-01-22 18:29 UTC (permalink / raw)
  To: sparclinux

On Sat, Jan 22, 2011 at 10:27:06AM +0100, Thomas Gleixner wrote:
> On Sat, 22 Jan 2011, Sam Ravnborg wrote:
> > > So the conversion to a non-deprecated API is introducing cruft?
> > > That sounds like the change defeats its own point :)
> > 
> > The commit that introduced the force parameter says:
> > 
> >     The replacement for set_affinity() has an extra argument "bool
> >     force". The reason for this is to notify the low level code, that the
> >     move has to be done right away and cannot be delayed until the next
> >     interrupt happens. That's necessary to handle the irq fixup on cpu
> >     unplug in the generic code.
> > 
> > The only callers of chip->irq_set_affinity() is in kernel/irq/manage.c
> > 
> > And like David I can only see irq_set_affinity() being called with forceúlse.
> > As force tell us to set the affinity and we do so on sparc in all
> > cases it looks safe to ignore the parameter.
> > I will update the changelog to include this info in next version,
> > if Thomas does not have other inputs.
> 
> The change was done as a preparatory for further cleanups down the
> road. I did not want to add irq_set_affinity() now and then change all
> those instances again 6 month later down the road.

Thanks for info.
It would have been good to have had this info in the changelog.

	Sam

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2011-01-22 18:29 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-21 22:24 [RFC PATCH 0/5] sparc64: drop deprecated irq features Sam Ravnborg
2011-01-21 22:24 ` Sam Ravnborg
2011-01-21 22:26 ` [PATCH 1/5] sparc64: fix direct access to irq_desc Sam Ravnborg
2011-01-21 22:26   ` Sam Ravnborg
2011-01-21 22:26 ` [PATCH 2/5] sparc: in handler_irq() rename irq parameter to pil Sam Ravnborg
2011-01-21 22:26   ` Sam Ravnborg
2011-01-21 22:26 ` [PATCH 3/5] sparc64: all pointers to irq_handler_data renamed to handler_data Sam Ravnborg
2011-01-21 22:26   ` Sam Ravnborg
2011-01-21 22:26 ` [PATCH 4/5] sparc64: use {get,set}_irq_data for handler_data Sam Ravnborg
2011-01-21 22:26   ` Sam Ravnborg
2011-01-21 22:26 ` [PATCH 5/5] sparc64: use up-to-data genirq functions Sam Ravnborg
2011-01-21 22:26   ` Sam Ravnborg
2011-01-21 23:43   ` Josip Rodin
2011-01-22  0:02   ` David Miller
2011-01-22  1:21   ` Josip Rodin
2011-01-22  6:51   ` Sam Ravnborg
2011-01-22  9:27   ` Thomas Gleixner
2011-01-22 18:29   ` Sam Ravnborg
2011-01-21 22:55 ` [RFC PATCH 0/5] sparc64: drop deprecated irq features David Miller
2011-01-21 22:55   ` David Miller
2011-01-21 23:03   ` Sam Ravnborg
2011-01-21 23:03     ` Sam Ravnborg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.