All of lore.kernel.org
 help / color / mirror / Atom feed
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();
 	}

  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.