public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>,
	Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	Yinghai Lu <yinghai@kernel.org>,
	"Maciej W. Rozycki" <macro@linux-mips.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [patch] x86, apic: use 0x20 for the IRQ_MOVE_CLEANUP_VECTOR instead of 0x1f
Date: Mon, 11 Jan 2010 17:52:30 -0800	[thread overview]
Message-ID: <m1k4vo144h.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <4B4BC401.6010605@zytor.com> (H. Peter Anvin's message of "Mon\, 11 Jan 2010 16\:36\:17 -0800")

"H. Peter Anvin" <hpa@zytor.com> writes:

> On 01/11/2010 04:28 PM, Eric W. Biederman wrote:
>> 
>> Sorry.  I suck at multitasking.
>> 
>> Without changes assign_irq_vector will reuse vectors in the range
>> IRQ0_VECTOR to IRQ15_VECTOR in the code as it we currently ship it,
>> when we switch irq0-15 into ioapic mode.
>> 
>> Switching the loop to cover IRQ0_VECTOR to IRQ15_VECTOR is not a
>> problem.  I don't think it will find anything free as we assign those
>> vectors on all cpus, but the data structures are fine.
>> 
>> I am uncomfortable with the suggestion of sharing the priority of the
>> IRQ_MOVE_CLEANUP_VECTOR with other interrupts.  I know if it had be
>> clear from the documentation that it was safe to share the irq level
>> with other interrupts I would not have reserved the entire interrupt
>> level for the IRQ_MOVE_CLEANUP_VECTOR.
>> 
>
> What are the properties that you're looking for, and in what
> documentation?  We reviewed the Software Development Manual here at
> Intel, and it rather explicitly states:
>
> "Each interrupt priority level (sometimes interpreted by software as an
> interrupt priority class) encompasses 16 vectors. Prioritizing
> interrupts within a priority level is determined by the vector number.
> The higher the vector number, the higher the priority within that
> priority level.  In determining the priority of a vector and ranking
> of vectors within a priority group, the vector number is often divided
> into two parts, with the high 4 bits of the vector indicating its
> priority and the low 4 bit indicating its ranking within the priority
> group."
>
> [Intel® 64 and IA-32 Architectures Software Developer’s Manual
> Volume 3A: System Programming Guide, Part 1; September 2009, Order
> Number 253668-032US; section 10.9.3, page 10-57f.]
>
> So 0x20 is the lowest-priority vector within priority group 0x2.

After having the documentation quoted at me.  I am having a distinct
memory of one piece of documentation saying:
"interrupts within a priority level can be delivered in any order"

So I am guessing there is not any ordering of interrupts in the same
priority level until they get to the local apic.

What guarantee we need is the interesting question.

The cleanup ipi is sent when we have seen an interrupt arrive at it's
newly configured location.  It is possible that there is still an
interrupt in flight to the old configured location (think NUMA where
the interrupt has been migrated from off node to on node).  We want
the guarantee that the ipi arrives after the inflight irq.  Which
means on the wire ordering as well as in the local apic ordering is
interesting.

I am slammed with other stuff right now so I don't think I will have
time to find the old documentation I was looking at for a couple of
more days.

Eric

  reply	other threads:[~2010-01-12  1:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-09  2:09 [patch] x86, apic: use 0x20 for the IRQ_MOVE_CLEANUP_VECTOR instead of 0x1f Suresh Siddha
2010-01-09  2:19 ` H. Peter Anvin
2010-01-09  2:50   ` Yinghai Lu
2010-01-11 22:53   ` Suresh Siddha
2010-01-11 22:57     ` H. Peter Anvin
2010-01-11 23:10       ` Eric W. Biederman
2010-01-11 23:13         ` H. Peter Anvin
2010-01-12  0:06           ` Suresh Siddha
2010-01-12  0:13             ` H. Peter Anvin
2010-01-12  0:28               ` Eric W. Biederman
2010-01-12  0:36                 ` H. Peter Anvin
2010-01-12  1:52                   ` Eric W. Biederman [this message]
2010-01-12  2:17                     ` H. Peter Anvin
2010-01-12  2:27                       ` Eric W. Biederman
2010-01-12 10:25                       ` Alan Cox
2010-01-13 20:36                       ` Eric W. Biederman
2010-01-13 20:38                         ` H. Peter Anvin
2010-01-13 20:53                         ` H. Peter Anvin
2010-01-13 20:58                         ` H. Peter Anvin
2010-01-12  0:42                 ` H. Peter Anvin
2010-01-11 23:00     ` Eric W. Biederman
2010-01-11 23:07       ` H. Peter Anvin
2010-01-09  3:07 ` Yinghai Lu
2010-01-09  3:20   ` H. Peter Anvin
2010-01-09  3:23 ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m1k4vo144h.fsf@fess.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=macro@linux-mips.org \
    --cc=mingo@elte.hu \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox