From: Takayoshi Kochi <kochi@hpc.bs1.fc.nec.co.jp>
To: linux-ia64@vger.kernel.org
Subject: Re: percpu data for non-existant cpus
Date: Tue, 04 Nov 2003 01:43:49 +0000 [thread overview]
Message-ID: <marc-linux-ia64-106791036330723@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-106790736528585@msgid-missing>
[-- Attachment #1: Type: Text/Plain, Size: 859 bytes --]
Hi,
From: Jack Steiner <steiner@sgi.com>
Subject: percpu data for non-existant cpus
Date: Mon, 3 Nov 2003 18:55:24 -0600
> It was neccessary in 2.4 to allocate cpu_data areas for
> non-existent cpus. I forget where, but some generic
> initialization code expected to be able to reference cpu_data
> for all cpus up to NR_CPUS.
>
> Does 2.6 have the same requirement or can I allocate cpu_data
> areas only for cpus that exist or might exist (cpu_possible()).
The current discontig (for both 2.4 & 2.6) only allocate
cpu_data on existing nodes (which means existing cpus
eventually), doesn't it?
We've found wrap_mmu_context() refers to all percpu data
and if the any of the cpu_data is not valid,
it may cause panic.
Attached patches are for 2.4 & 2.6, which are harmless
even when percpu data are allocated for non-existing
cpus.
---
Takayoshi Kochi
[-- Attachment #2: wrap_mmu_context-2.4.patch --]
[-- Type: Text/Plain, Size: 395 bytes --]
--- linux-2.4.22/arch/ia64/mm/tlb.c.orig Fri Sep 12 09:45:18 2003
+++ linux-2.4.22/arch/ia64/mm/tlb.c Wed Oct 8 17:56:03 2003
@@ -75,7 +75,7 @@
* and because interrupts are disabled during context switch.
*/
for (i = 0; i < NR_CPUS; ++i)
- if (i != smp_processor_id())
+ if (cpu_online(i) && (i != smp_processor_id()))
cpu_data(i)->need_tlb_flush = 1;
local_flush_tlb_all();
}
[-- Attachment #3: wrap_mmu_context-2.6.patch --]
[-- Type: Text/Plain, Size: 366 bytes --]
--- linux-2.6.0-test6.orig/arch/ia64/mm/tlb.c Sun Sep 28 09:50:38 2003
+++ linux-2.6.0-test6/arch/ia64/mm/tlb.c Wed Oct 8 17:58:42 2003
@@ -77,7 +77,7 @@
{
int cpu = get_cpu(); /* prevent preemption/migration */
for (i = 0; i < NR_CPUS; ++i)
- if (i != cpu)
+ if (cpu_online(i) && (i != cpu))
per_cpu(ia64_need_tlb_flush, i) = 1;
put_cpu();
}
next prev parent reply other threads:[~2003-11-04 1:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-04 0:55 percpu data for non-existant cpus Jack Steiner
2003-11-04 1:43 ` Takayoshi Kochi [this message]
2003-11-04 23:04 ` Matthew Wilcox
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=marc-linux-ia64-106791036330723@msgid-missing \
--to=kochi@hpc.bs1.fc.nec.co.jp \
--cc=linux-ia64@vger.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 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.