From: ebiederm@xmission.com (Eric W. Biederman)
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
Yinghai Lu <yinghai@kernel.org>, Ingo Molnar <mingo@elte.hu>
Subject: Re: [RFC] Correct behaviour of irq affinity?
Date: Tue, 24 Mar 2009 05:39:37 -0700 [thread overview]
Message-ID: <m1k56frt6e.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <200903241619.03517.rusty@rustcorp.com.au> (Rusty Russell's message of "Tue\, 24 Mar 2009 16\:19\:03 +1030")
Rusty Russell <rusty@rustcorp.com.au> writes:
> The effect of setting desc->affinity (ie. from userspace via sysfs) has varied
> over time. In 2.6.27, the 32-bit code anded the value with cpu_online_map,
> and both 32 and 64-bit did that anding whenever a cpu was unplugged.
>
> 2.6.29 consolidated this into one routine (and fixed hotplug) but introduced
> another variation: anding the affinity with cfg->domain. Is this right, or
> should we just set it to what the user said? Or as now, indicate that we're
> restricting it.
>
> If we should change it, here's what the patch looks like against x86 tip
> (cpu_mask_to_apicid_and already takes cpu_online_mask into account):
desc->affinity should be what the user requested, if it is at all
possible to honor the user space request. YH the fact that we do not
currently exercise the full freedom that user space gives us is
irrelevant.
Further setting desc->affinity to the user space request is what
x86_64 did before the grand merger.
Likewise desc->affinity & cfg->domain & cpu_online_map going into the
selection of apic id, is what the code did before the grand merger,
and what the code is currently doing. So logically that looks good.
YH has a point that several of the implementations of
cpu_mask_to_apic_id do not take cpu_online_map into account and should
probably be fixed. flat_cpu_mask_to_apicid was the one I could find.
Also now that I look at it there is one other bug in this routine
that you have missed. set_extra_move_desc should be called before
we set desc->affinity, as it compares that with the new value to
see if we are going to be running on a new cpu, and if so we may
need to reallocate irq_desc onto a new numa node. set_extra_move_desc
looks a little fishy but it doesn't stand a chance if it is called
with the wrong data.
Overall I like it.
Do you think you could fix those two issues and regenerate the patch?
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 86827d8..30906cd 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -592,10 +592,10 @@ set_desc_affinity(struct irq_desc *desc, const struct cpumask *mask)
> if (assign_irq_vector(irq, cfg, mask))
> return BAD_APICID;
>
> - cpumask_and(desc->affinity, cfg->domain, mask);
> + cpumask_copy(desc->affinity, mask);
> set_extra_move_desc(desc, mask);
>
> - return apic->cpu_mask_to_apicid_and(desc->affinity, cpu_online_mask);
> + return apic->cpu_mask_to_apicid_and(desc->affinity, cfg->domain);
> }
>
> static void
Eric
next prev parent reply other threads:[~2009-03-24 12:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-24 5:49 [RFC] Correct behaviour of irq affinity? Rusty Russell
2009-03-24 7:21 ` Yinghai Lu
2009-03-24 12:52 ` Rusty Russell
2009-03-24 20:36 ` Yinghai Lu
2009-03-24 12:39 ` Eric W. Biederman [this message]
2009-03-24 19:49 ` Yinghai Lu
2009-03-24 20:23 ` [PATCH] x86: fix set_extra_move_desc calling Yinghai Lu
2009-03-24 21:15 ` [tip:x86/apic] " Yinghai Lu
2009-03-24 21:15 ` [PATCH 1/3] " Yinghai Lu
2009-03-24 21:16 ` [PATCH 2/3] x86: use default_cpu_mask_to_apicid for 64bit Yinghai Lu
2009-03-24 21:30 ` [tip:x86/apic] " Yinghai Lu
2009-03-24 21:34 ` Ingo Molnar
2009-03-24 21:42 ` [PATCH 3/3] x86: Correct behaviour of irq affinity -v2 Yinghai Lu
2009-03-24 21:17 ` [PATCH 3/3] x86: Correct behaviour of irq affinity Yinghai Lu
2009-03-24 21:30 ` [tip:x86/apic] " Rusty Russell
2009-03-25 17:51 ` Rusty Russell
2009-03-25 0:33 ` [RFC] Correct behaviour of irq affinity? Rusty Russell
2009-03-25 0:59 ` Rusty Russell
2009-03-25 1:03 ` Yinghai Lu
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=m1k56frt6e.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
--cc=x86@kernel.org \
--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