* 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:
commit
1f9d8bc7d7
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -21,3 +21,4 @@
|
|||
+ sparc64-hme-lockup.patch
|
||||
+ tty-locking-fixes9.patch
|
||||
+ version.patch
|
||||
+ module-unify-per-cpu-data.patch
|
||||
|
|
Loading…
Reference in New Issue