summaryrefslogtreecommitdiff
path: root/arch/ia64/kernel/module.c
AgeCommit message (Collapse)Author
2009-06-17[IA64] Convert ia64 to use int-ll64.hMatthew Wilcox
It is generally agreed that it would be beneficial for u64 to be an unsigned long long on all architectures. ia64 (in common with several other 64-bit architectures) currently uses unsigned long. Migrating piecemeal is too painful; this giant patch fixes all compilation warnings and errors that come as a result of switching to use int-ll64.h. Note that userspace will still see __u64 defined as unsigned long. This is important as it affects C++ name mangling. [Updated by Tony Luck to change efi.h:efi_freemem_callback_t to use u64 for start/end rather than unsigned long] Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2009-04-01[IA64] BUG to BUG_ON changesStoyan Gaydarov
Replace: if (test) BUG(); with BUG_ON(test); Signed-off-by: Stoyan Gaydarov <stoyboyker@gmail.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2009-03-26ia64/pv_ops/bp/module: support binary patching for kernel module.Isaku Yamahata
support binary patching for kernel module. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-09-10[IA64] fix compile failure with non modular buildsJames Bottomley
Broke the non modular builds by moving an essential function into modules.c. Fix this by moving it out again and into asm/sections.h as an inline. To do this, the definitions of struct fdesc and struct got_val have been lifted out of modules.c and put in asm/elf.h where they belong. Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-09-09lib: Correct printk %pF to work on all architecturesJames Bottomley
It was introduced by "vsprintf: add support for '%pS' and '%pF' pointer formats" in commit 0fe1ef24f7bd0020f29ffe287dfdb9ead33ca0b2. However, the current way its coded doesn't work on parisc64. For two reasons: 1) parisc isn't in the #ifdef and 2) parisc has a different format for function descriptors Make dereference_function_descriptor() more accommodating by allowing architecture overrides. I put the three overrides (for parisc64, ppc64 and ia64) in arch/kernel/module.c because that's where the kernel internal linker which knows how to deal with function descriptors sits. Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Tony Luck <tony.luck@intel.com> Acked-by: Kyle McMartin <kyle@mcmartin.ca> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-17 [IA64] adding parameter check to module_free()Akiyama, Nobuyuki
module_free() refers the first parameter before checking. But it is called like below(in kernel/kprobes). The first parameter is always NULL. This happens when many probe points(>1024) are set by kprobes. I encountered this with using SystemTap. It can set many probes easily. static int __kprobes collect_one_slot(struct kprobe_insn_page *kip, int idx) { ... if (kip->nused == 0) { hlist_del(&kip->hlist); if (hlist_empty(&kprobe_insn_pages)) { ... } else { module_free(NULL, kip->insns); //<<< 1st param always NULL kfree(kip); } return 1; } return 0; } Signed-off-by: Akiyama, Nobuyuki <akiyama.nobuyuk@jp.fujitsu.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-03-06[IA64] remove remaining __FUNCTION__ occurrencesHarvey Harrison
__FUNCTION__ is gcc-specific, use __func__ Long lines have been kept where they exist, some small spacing changes have been done. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-01-30modules: fold percpu_modcopy into module.ctravis@sgi.com
percpu_modcopy() is defined multiple times in arch files. However, the only user is module.c. Put a static definition into module.c and remove the definitions from the arch files. Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-01-30percpu: make the asm-generic/percpu.h more "generic"travis@sgi.com
- add support for PER_CPU_ATTRIBUTES - fix generic smp percpu_modcopy to use per_cpu_offset() macro. Add the ability to use generic/percpu even if the arch needs to override several aspects of its operations. This will enable the use of generic percpu.h for all arches. An arch may define: __per_cpu_offset Do not use the generic pointer array. Arch must define per_cpu_offset(cpu) (used by x86_64, s390). __my_cpu_offset Can be defined to provide an optimized way to determine the offset for variables of the currently executing processor. Used by ia64, x86_64, x86_32, sparc64, s/390. SHIFT_PTR(ptr, offset) If an arch defines it then special handling of pointer arithmentic may be implemented. Used by s/390. (Some of these special percpu arch implementations may be later consolidated so that there are less cases to deal with.) Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
2007-05-11[IA64] spelling fixes: arch/ia64/Simon Arlott
Spelling and apostrophe fixes in arch/ia64/. Signed-off-by: Simon Arlott <simon@fire.lp0.eu> Signed-off-by: Tony Luck <tony.luck@intel.com>
2006-06-30Remove obsolete #include <linux/config.h>Jörn Engel
Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: Adrian Bunk <bunk@stusta.de>
2006-04-06[IA64] for_each_possible_cpu: ia64KAMEZAWA Hiroyuki
for_each_cpu() actually iterates across all possible CPUs. We've had mistakes in the past where people were using for_each_cpu() where they should have been iterating across only online or present CPUs. This is inefficient and possibly buggy. We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the future. This patch replaces for_each_cpu with for_each_possible_cpu under arch/ia64/kernel/. Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fjitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Tony Luck <tony.luck@intel.com>
2005-10-25[IA64] wider use of for_each_cpu_mask() in arch/ia64hawkes@sgi.com
In arch/ia64 change the explicit use of for-loops and NR_CPUS into the general for_each_cpu() or for_each_online_cpu() constructs, as appropriate. This widens the scope of potential future optimizations of the general constructs, as well as takes advantage of the existing optimizations of first_cpu() and next_cpu(). Signed-off-by: John Hawkes <hawkes@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2005-06-08[IA64] Module gp must point to valid memoryKeith Owens
Some bits of the kernel assume that gp always points to valid memory, in particular PHYSICAL_MODE_ENTER() assumes that both gp and sp are valid virtual addresses with associated physical pages. The IA64 module loader puts gp well past the end of the module, with no physical backing. Offsets on gp are still valid, but physical mode addressing breaks for modules. Ensure that gp always falls within the module body. Also ensure that gp is 8 byte aligned. Signed-off-by: Keith Owens <kaos@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2004-10-05[IA64] sparse "long" constant cleanup patchDavid Mosberger
Sparse wants us to be clear about (unsigned) long constants. Make it so. Signed-off-by: David Mosberger-Tang <davidm@hpl.hp.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2004-07-08[PATCH] ia64: allow module core code calls to module init code againTony Luck
Drop the prohibition for module core code calls to module init code (this breaks netfilter). Signed-off-by: <tony.luck@intel.com> Signed-off-by: David Mosberger <davidm@hpl.hp.com>
2004-06-29[PATCH] ia64: fix reloc-out-of-range error on module loadingTony Luck
I'm hitting this problem because the module I want to load was compiled with -g, so the filesize is absolutely huge. kernel/module.c does a vmalloc() to inhale the entire file, and then two calls to module_alloc() (which calls vmalloc() on ia64) to load the 'init' and 'core' sections. The 'init' is small and slips into a gap early in the vmalloc playspace, while the 'core' area is allocated after the huge area that was allocated for the inhaled copy of the whole file. I made a one coding change to Jean-Marc's version, adding a check to see whether the init/core sections are close enough together for the PCREL21B to reach (they almost always are). I've kept the test that there are no jumps from core to init (though the message that is printed is almost as unhelpful as the one that you get when you statically link a module into the kernel that has calls to the discarded .exit section :-) This patch stalled out before on the question of whether a PLT was overkill for a section-to-section branch, and whether it would be better to use relaxation techniques to extend the range. Doing that might be more elegant in some way, but it needs a whole heap of extra code (to count how many relaxed branches need to be added and allocated them as needed). This seems a lot of extra code that is only ever going to be exercised by maniacs like me with 49MB .ko files. I fixed up the comments to be a little more heplful. Signed-off-by: <tony.luck@intel.com> Signed-off-by: David Mosberger <davidm@hpl.hp.com>
2003-10-24ia64: Fix/finish kernel module table support so it actually works.David Mosberger
2003-07-17[PATCH] another batch of "invalid" not "illegal" fixesAlan Cox
(Steven Cole)
2003-06-17ia64: Sync with 2.5.71.David Mosberger
2003-06-16ia64: Manual merge with 2.5.71.David Mosberger
2003-06-16ia64: Make brl-branches to ia64_spinlock_contention work from modules.David Mosberger
Since these branches use a special calling-convention, we don't want to go through the PLT stubs normally used for cross-module calls. Also fix a 1-bit bug in the plt_reloc() function which got triggered now that the core code lives below the module code (due to the virtual mapping of the core).
2003-06-11ia64: Build the gate page(s) as an ELF DSO.David Mosberger
Remove CONFIG_FSYS option (it's the default now). Consolidate the various instruction patching routines into a single file (patch.c).
2003-06-05[PATCH] per-cpu support inside modules (minimal)Andrew Morton
From: Rusty Russell <rusty@rustcorp.com.au> OK, this does the *minimum* required to support DEFINE_PER_CPU inside modules. If we decide to change kmalloc_percpu later, great, we can turf this out. Basically, overallocates the amount of per-cpu data at boot to at least PERCPU_ENOUGH_ROOM if CONFIG_MODULES=y (arch-specific by default 32k: I have only 7744 bytes of percpu data in my kernel here, so makes sense), and a special allocator in module.c dishes it out.
2003-03-25ia64: More module-loader fixing.David Mosberger
2003-03-25ia64: Fix module loader by setting sh_type of place-holder sesctions to ↵David Mosberger
SHT_NOBITS.
2003-03-25ia64: Rewrite the relocator in the kernel module loader. Fix some bugs and ↵David Mosberger
simplify the handling of loader-created sections.
2003-03-21First draft at making modules work again (loosely based on Rusty's original andDavid Mosberger
thoroughly broken ia64 patch). Not all relocs are supported yet and the reloc code needs to be cleaned up, but simply stuff like loading the palinfo module works. Also, linkage-stubs are optimized with brl for McKinley or better.