* module-unify-per-cpu-data.patch: Unifies per cpu data handling for UP

and SMP builds, fixing a bug detected on ia64.

svn path=/dists/trunk/linux-2.6/; revision=4201
This commit is contained in:
dann frazier 2005-09-14 17:24:58 +00:00
commit 1f9d8bc7d7
3 changed files with 137 additions and 1 deletions

6
debian/changelog vendored
View File

@ -58,7 +58,11 @@ linux-2.6 (2.6.13-1) UNRELEASED; urgency=low
* Drop drivers-ide-dma-blacklist-toshiba.patch (merged)
* Drop drivers-ide-__devinit.patch (merged)
-- maximilian attems <maks@sternwelten.at> Wed, 14 Sep 2005 11:45:23 +0200
[ dann frazier ]
* module-unify-per-cpu-data.patch: Unifies per cpu data handling for UP
and SMP builds, fixing a bug detected on ia64.
-- dann frazier <dannf@debian.org> Wed, 14 Sep 2005 11:27:04 -0600
linux-2.6 (2.6.12-6) unstable; urgency=high

View File

@ -0,0 +1,131 @@
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Description: Make UP & SMP kernels treat module per-cpu data the same
## DP: Description: See the patch header for more details.
## DP: Patch author: Peter Chubb <peterc@gelato.unsw.edu.au>
## DP: Upstream status: submitted
##
From: Peter Chubb <peterc@gelato.unsw.edu.au>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Message-ID: <17174.35525.283392.703723@berry.gelato.unsw.EDU.AU>
Date: Thu, 1 Sep 2005 14:59:49 +1000
To: linux-ia64@vger.kernel.org, tony.luck@intel.com, dmosberger@gmail.com
Cc: linux-kernel@vger.kernel.org
In-Reply-To: <ed5aea43050830150112ee6103@mail.gmail.com>
References:
<B8E391BBE9FE384DAA4C5C003888BE6F0443A5FA@scsmsx401.amr.corp.intel.com>
<ed5aea430508301229386fc596@mail.gmail.com>
<17172.54563.329758.846131@wombat.chubb.wattle.id.au>
X-Mailer: VM 7.19 under 21.4 (patch 17) "Jumbo Shrimp" XEmacs Lucid
Comments: Hyperbole mail buttons accepted, v04.18.
X-Face:
GgFg(Z>fx((4\32hvXq<)|jndSniCH~~$D)Ka:P@e@JR1P%Vr}EwUdfwf-4j\rUs#JR{'h#
!]])6%Jh~b$VA|ALhnpPiHu[-x~@<"@Iv&|%R)Fq[[,(&Z'O)Q)xCqe1\M[F8#9l8~}#u$S$Rm`S9%
\'T@`:&8>Sb*c5d'=eDYI&GF`+t[LfDH="MP5rwOO]w>ALi7'=QJHz&y&C&TE_3j!
X-SA-Exim-Connect-IP: 203.143.160.117
X-SA-Exim-Mail-From: peterc@gelato.unsw.edu.au
Subject: RE: ip_contrack refuses to load if built UP as a module on IA64
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on
lemon.gelato.unsw.edu.au
X-Spam-Level:
X-Spam-Status: No, score=-2.3 required=5.0 tests=ALL_TRUSTED,AWL
autolearn=ham version=3.0.4
X-SA-Exim-Version: 4.2 (built Thu, 03 Mar 2005 10:39:27 +0000)
X-SA-Exim-Scanned: Yes (on lemon.gelato.unsw.edu.au)
Sender: linux-ia64-owner@vger.kernel.org
Precedence: bulk
X-Mailing-List: linux-ia64@vger.kernel.org
X-PMX-Version: 5.0.3.165339, Antispam-Engine: 2.1.0.0, Antispam-Data:
2005.8.31.39
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at ldl.fc.hp.com
X-Evolution-Source: imap://dannf@linux.fc.hp.com/
Content-Transfer-Encoding: 8bit
This patch makes UP and SMP do the same thing as far as module per-cpu
data go.
Unfortunately it affects core code.
To repeat the problem:
IA64 keeps per-cpu data in a small data area that is referenced by a
22-bit offset, for both UP and SMP cases. If a module defines
per-cpu data, it too will end up in the small-data area. But the
module loader at present special-cases the UP treatment of per-cpu
data, assumes that it is in the GP-relative data area, and does
nothing (for SMP it allocates space, and copies initialised data
items into it)
The effect is that modules defining per-cpu data fail to load if
they're built UP, because of an impossible relocation.
The appended patch makes the treatment of per-cpu data uniform
between UP and SMP cases. For most architectures, the per-cpu data
section will be empty for UP, and so the per-cpu setup code will not
be invoked.
Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au>
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -951,4 +951,10 @@ percpu_modcopy (void *pcpudst, const voi
if (cpu_possible(i))
memcpy(pcpudst + __per_cpu_offset[i], src, size);
}
+#else
+void
+percpu_modcopy (void *pcpudst, const void *src, unsigned long size)
+{
+ memcpy(pcpudst, src, size);
+}
#endif /* CONFIG_SMP */
diff --git a/kernel/module.c b/kernel/module.c
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -209,7 +209,6 @@ static struct module *find_module(const
return NULL;
}
-#ifdef CONFIG_SMP
/* Number of blocks used and allocated. */
static unsigned int pcpu_num_used, pcpu_num_allocated;
/* Size of each block. -ve means used. */
@@ -352,29 +351,7 @@ static int percpu_modinit(void)
return 0;
}
__initcall(percpu_modinit);
-#else /* ... !CONFIG_SMP */
-static inline void *percpu_modalloc(unsigned long size, unsigned long align,
- const char *name)
-{
- return NULL;
-}
-static inline void percpu_modfree(void *pcpuptr)
-{
- BUG();
-}
-static inline unsigned int find_pcpusec(Elf_Ehdr *hdr,
- Elf_Shdr *sechdrs,
- const char *secstrings)
-{
- return 0;
-}
-static inline void percpu_modcopy(void *pcpudst, const void *src,
- unsigned long size)
-{
- /* pcpusec should be 0, and size of that section should be 0. */
- BUG_ON(size != 0);
-}
-#endif /* CONFIG_SMP */
+
#ifdef CONFIG_MODULE_UNLOAD
#define MODINFO_ATTR(field) \
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

View File

@ -21,3 +21,4 @@
+ sparc64-hme-lockup.patch
+ tty-locking-fixes9.patch
+ version.patch
+ module-unify-per-cpu-data.patch