All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration.
@ 2007-02-05 20:54 Lu, Yinghai
  2007-02-05 23:03 ` Eric W. Biederman
  0 siblings, 1 reply; 26+ messages in thread
From: Lu, Yinghai @ 2007-02-05 20:54 UTC (permalink / raw)
  To: ebiederm
  Cc: Andi Kleen, Andrew Morton, linux-kernel, Luigi Genoni,
	Ingo Molnar, Natalie Protasevich

-----Original Message-----
From: ebiederm@xmission.com [mailto:ebiederm@xmission.com] 
Sent: Monday, February 05, 2007 12:37 PM


>The only corner case I can see that might potentially happen is
>"apic_in_service_vector() != irq_vector[irq]" and if that is the case
>we don't want to migrate, because the precondition that we are in the
>irq handler servicing the expected irq isn't true.

Reuse vector could help in that case.

In another case, if two irq are migrated from one cpu to another cpu.
ack_apic_edge for irq2 could use get apci_in_servier_vector for irq1,
and handle that to clear irr for irq1. instead of irq2.

YH





^ permalink raw reply	[flat|nested] 26+ messages in thread
* RE: [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration.
@ 2007-02-05 23:33 Lu, Yinghai
  0 siblings, 0 replies; 26+ messages in thread
From: Lu, Yinghai @ 2007-02-05 23:33 UTC (permalink / raw)
  To: ebiederm
  Cc: Andi Kleen, Andrew Morton, linux-kernel, Luigi Genoni,
	Ingo Molnar, Natalie Protasevich

-----Original Message-----
From: ebiederm@xmission.com [mailto:ebiederm@xmission.com] 
Sent: Monday, February 05, 2007 3:03 PM
>Nope. irq routines are a stack.  if apic_in_service_vector could return
>the wrong value.  ack_APIC_irq() which use the same information would
>acknowledge the wrong irq.  If there was actually any danger of
>mis-computing that information I would just pass it from the interrupt
>service routine stash it in a per cpu variable and then read it out.
>But the apic already has registers doing that, so I was lazy and used
>what was available.  It should be the common case that we need that
>information.

OK.

I wonder if current kernel support different cpu handle irq request for
different device at the same time.

YH



^ permalink raw reply	[flat|nested] 26+ messages in thread
* RE: [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration.
@ 2007-02-05 20:11 Lu, Yinghai
  2007-02-05 20:37 ` Eric W. Biederman
  0 siblings, 1 reply; 26+ messages in thread
From: Lu, Yinghai @ 2007-02-05 20:11 UTC (permalink / raw)
  To: ebiederm
  Cc: Andi Kleen, Andrew Morton, linux-kernel, Luigi Genoni,
	Ingo Molnar, Natalie Protasevich

From: ebiederm@xmission.com [mailto:ebiederm@xmission.com] 
>> How about let apic_hangle_pending_vector take the irq too?

>We can't compute the vector by reading the hardware registers after
>we have acknowledged the irq.

>I hope that was the answer you were looking for I'm not quite certain
>what you mean by take.

I mean 


+static void apic_handle_pending_vector(unsigned vector)
+{
+	unsigned irr;
+	int irq;
+
+	irq = __get_cpu_var(vector_irq)[vector];
+	if (irq >= 0)
+		return;
+
+	/* If the irq we are servicing has moved and is not pending
+	 * free it's vector.
+	 */

==>

+static void apic_handle_pending_vector(unsigned vector, unsigned irqx)
+{
+	unsigned irr;
+	int irq;
+
+	irq = __get_cpu_var(vector_irq)[vector];
+	if ( (-irq) != irqx)
+		return;
+ 
+
+	/* If the irq we are servicing has moved and is not pending
+	 * free it's vector.
+	 */




^ permalink raw reply	[flat|nested] 26+ messages in thread
* RE: [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration.
@ 2007-02-05 19:29 Lu, Yinghai
  2007-02-05 19:59 ` Eric W. Biederman
  0 siblings, 1 reply; 26+ messages in thread
From: Lu, Yinghai @ 2007-02-05 19:29 UTC (permalink / raw)
  To: Andi Kleen, Eric W. Biederman
  Cc: Andrew Morton, linux-kernel, Luigi Genoni, Ingo Molnar,
	Natalie Protasevich

Eric,

How about let apic_hangle_pending_vector take the irq too?
I wonder if there any chance that you have two IRQ_MOVE_PENDING? 


BYW, Andi, Do you want to try "reuse vector when do the irq-balance
between CPUS"?

If So, I will update the patch that you dropped some months ago.

YH



^ permalink raw reply	[flat|nested] 26+ messages in thread
[parent not found: <200701221116.13154.luigi.genoni@pirelli.com>]

end of thread, other threads:[~2007-02-09  6:41 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-05 20:54 [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration Lu, Yinghai
2007-02-05 23:03 ` Eric W. Biederman
  -- strict thread matches above, loose matches on Subject: below --
2007-02-05 23:33 Lu, Yinghai
2007-02-05 20:11 Lu, Yinghai
2007-02-05 20:37 ` Eric W. Biederman
2007-02-05 19:29 Lu, Yinghai
2007-02-05 19:59 ` Eric W. Biederman
     [not found] <200701221116.13154.luigi.genoni@pirelli.com>
     [not found] ` <200702021848.55921.luigi.genoni@pirelli.com>
2007-02-02 18:02   ` System crash after "No irq handler for vector" linux 2.6.19 Eric W. Biederman
     [not found]     ` <200702021905.39922.luigi.genoni@pirelli.com>
2007-02-03  0:31       ` [PATCH 1/2] x86_64 irq: Simplfy __assign_irq_vector Eric W. Biederman
2007-02-03  0:35         ` [PATCH 2/2] x86_64 irq: Handle irqs pending in IRR during irq migration Eric W. Biederman
2007-02-03  1:05           ` Andrew Morton
2007-02-03  1:39             ` Eric W. Biederman
2007-02-03  2:01               ` Andrew Morton
2007-02-03  7:32             ` Arjan van de Ven
2007-02-03  7:55               ` Eric W. Biederman
2007-02-03 14:31                 ` l.genoni
2007-02-03 10:01           ` Andi Kleen
2007-02-03 10:22             ` Eric W. Biederman
2007-02-03 10:26               ` Andi Kleen
2007-02-06  7:36           ` Ingo Molnar
2007-02-06  8:57             ` Eric W. Biederman
     [not found]             ` <200702061012.25910.luigi.genoni@pirelli.com>
2007-02-06 22:05               ` Eric W. Biederman
2007-02-06 22:16             ` Eric W. Biederman
2007-02-06 22:25               ` Ingo Molnar
2007-02-07  2:33                 ` Eric W. Biederman
2007-02-08 11:48                 ` Eric W. Biederman
2007-02-08 20:19                   ` Eric W. Biederman
2007-02-09  6:40                     ` Eric W. Biederman

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.