summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc
AgeCommit message (Collapse)Author
2008-07-17sparc: Merge asm-sparc{,64}/shmbuf.hSam Ravnborg
Padding in the shmbuf structure made conditional as only 32 bit sparc did so. :$ diff -u include/asm-sparc/shmbuf.h include/asm-sparc64/shmbuf.h :-- include/asm-sparc/shmbuf.h 2008-06-13 06:42:07.000000000 +0200 :++ include/asm-sparc64/shmbuf.h 2008-06-13 06:42:07.000000000 +0200 :@@ -1,23 +1,19 @@ :-#ifndef _SPARC_SHMBUF_H :-#define _SPARC_SHMBUF_H :+#ifndef _SPARC64_SHMBUF_H :+#define _SPARC64_SHMBUF_H : : /* :- * The shmid64_ds structure for sparc architecture. :+ * The shmid64_ds structure for sparc64 architecture. : * Note extra padding because this structure is passed back and forth : * between kernel and user space. : * : * Pad space is left for: :- * - 64-bit time_t to solve y2038 problem :- * - 2 miscellaneous 32-bit values :+ * - 2 miscellaneous 64-bit values : */ : : struct shmid64_ds { : struct ipc64_perm shm_perm; /* operation perms */ :- unsigned int __pad1; : __kernel_time_t shm_atime; /* last attach time */ :- unsigned int __pad2; : __kernel_time_t shm_dtime; /* last detach time */ :- unsigned int __pad3; : __kernel_time_t shm_ctime; /* last change time */ : size_t shm_segsz; /* size of segment (bytes) */ : __kernel_pid_t shm_cpid; /* pid of creator */ :@@ -39,4 +35,4 @@ : unsigned long __unused4; : }; : :-#endif /* _SPARC_SHMBUF_H */ :+#endif /* _SPARC64_SHMBUF_H */ Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: Merge asm-sparc{,64}/sembuf.hSam Ravnborg
Padding in the sembuf structure made conditional as only 32 bit sparc did so. :$ diff -u include/asm-sparc/sembuf.h include/asm-sparc64/sembuf.h :-- include/asm-sparc/sembuf.h 2008-06-13 06:42:07.000000000 +0200 :++ include/asm-sparc64/sembuf.h 2008-06-13 06:42:07.000000000 +0200 :@@ -1,21 +1,18 @@ :-#ifndef _SPARC_SEMBUF_H :-#define _SPARC_SEMBUF_H :+#ifndef _SPARC64_SEMBUF_H :+#define _SPARC64_SEMBUF_H : : /* :- * The semid64_ds structure for sparc architecture. :+ * The semid64_ds structure for sparc64 architecture. : * Note extra padding because this structure is passed back and forth : * between kernel and user space. : * : * Pad space is left for: :- * - 64-bit time_t to solve y2038 problem :- * - 2 miscellaneous 32-bit values :+ * - 2 miscellaneous 64-bit values : */ : : struct semid64_ds { : struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ :- unsigned int __pad1; : __kernel_time_t sem_otime; /* last semop time */ :- unsigned int __pad2; : __kernel_time_t sem_ctime; /* last change time */ : unsigned long sem_nsems; /* no. of semaphores in array */ : unsigned long __unused1; Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: Merge asm-sparc{,64}/msgbuf.hSam Ravnborg
Padding from 32 bit sparc kept using preprocessor magic :$ diff -u include/asm-sparc/msgbuf.h include/asm-sparc64/msgbuf.h :-- include/asm-sparc/msgbuf.h 2008-06-13 06:42:07.000000000 +0200 :++ include/asm-sparc64/msgbuf.h 2008-06-13 06:42:07.000000000 +0200 :@@ -7,17 +7,13 @@ : * between kernel and user space. : * : * Pad space is left for: :- * - 64-bit time_t to solve y2038 problem :- * - 2 miscellaneous 32-bit values :+ * - 2 miscellaneous 64-bit values : */ : : struct msqid64_ds { : struct ipc64_perm msg_perm; :- unsigned int __pad1; : __kernel_time_t msg_stime; /* last msgsnd time */ :- unsigned int __pad2; : __kernel_time_t msg_rtime; /* last msgrcv time */ :- unsigned int __pad3; : __kernel_time_t msg_ctime; /* last change time */ : unsigned long msg_cbytes; /* current number of bytes on queue */ Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: Merge asm-sparc{,64}/fcntl.hSam Ravnborg
The definition of O_NDELAY differed - the rest was equal :$ diff -u include/asm-sparc/fcntl.h include/asm-sparc64/fcntl.h :-- include/asm-sparc/fcntl.h 2008-06-13 06:46:39.000000000 +0200 :++ include/asm-sparc64/fcntl.h 2008-06-13 06:46:39.000000000 +0200 :@@ -1,8 +1,9 @@ :-#ifndef _SPARC_FCNTL_H :-#define _SPARC_FCNTL_H :+#ifndef _SPARC64_FCNTL_H :+#define _SPARC64_FCNTL_H : : /* open/fcntl - O_SYNC is only implemented on blocks devices and on files : located on an ext2 file system */ :+#define O_NDELAY 0x0004 : #define O_APPEND 0x0008 : #define FASYNC 0x0040 /* fcntl, for BSD compatibility */ : #define O_CREAT 0x0200 /* not fcntl */ :@@ -10,7 +11,6 @@ : #define O_EXCL 0x0800 /* not fcntl */ : #define O_SYNC 0x2000 : #define O_NONBLOCK 0x4000 :-#define O_NDELAY (0x0004 | O_NONBLOCK) : #define O_NOCTTY 0x8000 /* not fcntl */ : #define O_LARGEFILE 0x40000 : #define O_DIRECT 0x100000 /* direct disk access hint */ :@@ -29,8 +29,7 @@ : #define F_UNLCK 3 : : #define __ARCH_FLOCK_PAD short __unused; :-#define __ARCH_FLOCK64_PAD short __unused; : : #include <asm-generic/fcntl.h> : :-#endif :+#endif /* !(_SPARC64_FCNTL_H) */ Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: Merge asm-sparc{,64}/ioctls.hSam Ravnborg
Trivial differenses in comments - used the version from sparc64 :$ diff -u include/asm-sparc/ioctls.h include/asm-sparc64/ioctls.h :-- include/asm-sparc/ioctls.h 2008-06-13 08:46:29.000000000 +0200 :++ include/asm-sparc64/ioctls.h 2008-06-13 08:46:29.000000000 +0200 :@@ -1,5 +1,5 @@ :-#ifndef _ASM_SPARC_IOCTLS_H :-#define _ASM_SPARC_IOCTLS_H :+#ifndef _ASM_SPARC64_IOCTLS_H :+#define _ASM_SPARC64_IOCTLS_H : : #include <asm/ioctl.h> : :@@ -22,7 +22,7 @@ : : /* Note that all the ioctls that are not available in Linux have a : * double underscore on the front to: a) avoid some programs to :- * thing we support some ioctls under Linux (autoconfiguration stuff) :+ * think we support some ioctls under Linux (autoconfiguration stuff) : */ : /* Little t */ : #define TIOCGETD _IOR('t', 0, int) :@@ -110,7 +110,7 @@ : #define TIOCSERGETLSR 0x5459 /* Get line status register */ : #define TIOCSERGETMULTI 0x545A /* Get multiport config */ : #define TIOCSERSETMULTI 0x545B /* Set multiport config */ :-#define TIOCMIWAIT 0x545C /* Wait input */ :+#define TIOCMIWAIT 0x545C /* Wait for change on serial input line(s) */ : #define TIOCGICOUNT 0x545D /* Read serial port inline interrupt counts */ : : /* Kernel definitions */ :@@ -133,4 +133,4 @@ : #define TIOCPKT_NOSTOP 16 : #define TIOCPKT_DOSTOP 32 : :-#endif /* !(_ASM_SPARC_IOCTLS_H) */ :+#endif /* !(_ASM_SPARC64_IOCTLS_H) */ Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: copy exported sparc64 specific header files to asm-sparcSam Ravnborg
Copy was done using the following simple script: set -e SPARC64="h display7seg.h envctrl.h psrcompat.h pstate.h uctx.h utrap.h watchdog.h" for FILE in ${SPARC64}; do if [ -f asm-sparc/$FILE ]; then echo $FILE exist in asm-sparc fi cat asm-sparc64/$FILE > asm-sparc/$FILE printf "#include <asm-sparc/$FILE>\n" > asm-sparc64/$FILE done The name of the copied files are added to asm-sparc/Kbuild to keep "make headers_check" functional. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-07-17sparc: remove PROM_AP1000Adrian Bunk
This seems to be left from the long gone AP1000 support. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-07-17sparc/mm/: possible cleanupsAdrian Bunk
This patch contains the following possible cleanups: - make the following needlessly global code static: - fault.c: force_user_fault() - init.c: calc_max_low_pfn() - init.c: pgt_cache_water[] - init.c: map_high_region() - srmmu.c: hwbug_bitmask - srmmu.c: srmmu_swapper_pg_dir - srmmu.c: srmmu_context_table - srmmu.c: is_hypersparc - srmmu.c: srmmu_cache_pagetables - srmmu.c: srmmu_nocache_size - srmmu.c: srmmu_nocache_end - srmmu.c: srmmu_get_nocache() - srmmu.c: srmmu_free_nocache() - srmmu.c: srmmu_early_allocate_ptable_skeleton() - srmmu.c: srmmu_nocache_calcsize() - srmmu.c: srmmu_nocache_init() - srmmu.c: srmmu_alloc_thread_info() - srmmu.c: early_pgtable_allocfail() - srmmu.c: srmmu_early_allocate_ptable_skeleton() - srmmu.c: srmmu_allocate_ptable_skeleton() - srmmu.c: srmmu_inherit_prom_mappings() - sunami.S: tsunami_copy_1page - remove the following unused code: - init.c: struct sparc_aliases Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-07-17sparc/kernel/: possible cleanupsAdrian Bunk
This patch contains the following possible cleanups: - make the following needlessly global code static: - apc.c: apc_swift_idle() - ebus.c: ebus_blacklist_irq() - ebus.c: fill_ebus_child() - ebus.c: fill_ebus_device() - entry.S: syscall_is_too_hard - etra: tsetup_sun4c_stackchk - head.S: cputyp - head.S: prom_vector_p - idprom.c: Sun_Machines[] - ioport.c: _sparc_find_resource() - ioport.c: create_proc_read_entry() - irq.c: struct sparc_irq[] - rtrap.S: sun4c_rett_stackchk - setup.c: prom_sync_me() - setup.c: boot_flags - sun4c_irq.c: sun4c_sbint_to_irq() - sun4d_irq.c: sbus_tid[] - sun4d_irq.c: struct sbus_actions - sun4d_irq.c: sun4d_sbint_to_irq() - sun4m_irq.c: sun4m_sbint_to_irq() - sun4m_irq.c: sun4m_get_irqmask() - sun4m_irq.c: sun4m_timers - sun4m_smp.c: smp4m_cross_call() - sun4m_smp.c: smp4m_blackbox_id() - sun4m_smp.c: smp4m_blackbox_current() - time.c: sp_clock_typ - time.c: sbus_time_init() - traps.c: instruction_dump() - wof.S: spwin_sun4c_stackchk - wuf.S: sun4c_fwin_stackchk - #if 0 the following unused code: - process.c: sparc_backtrace_lock - process.c: __show_backtrace() - process.c: show_backtrace() - process.c: smp_show_backtrace_all_cpus() - remove the following unused code: - entry.S: __handle_exception - smp.c: smp_num_cpus - smp.c: smp_activated - smp.c: __cpu_number_map[] - smp.c: __cpu_logical_map[] - smp.c: bitops_spinlock - traps.c: trap_curbuf - traps.c: trapbuf[] - traps.c: linux_smp_still_initting - traps.c: thiscpus_tbr - traps.c: thiscpus_mid Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-06-26smp_call_function: get rid of the unused nonatomic/retry argumentJens Axboe
It's never used and the comments refer to nonatomic and retry interchangably. So get rid of it. Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-05-20sparc: remove CVS keywordsAdrian Bunk
This patch removes the CVS keywords that weren't updated for a long time from comments. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-12sparc: Fix mremap address range validation.David S. Miller
Just like mmap, we need to validate address ranges regardless of MAP_FIXED. sparc{,64}_mmap_check()'s flag argument is unused, remove. Based upon a report and preliminary patch by Jan Lieskovsky <jlieskov@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-11sparc32: Fix build.Robert Reif
Fix sparc32 build error due to undefined bool type. CC [M] fs/ocfs2/dlm/userdlm.o In file included from include/asm/sigcontext.h:6, from include/asm/signal.h:5, from include/linux/signal.h:4, from fs/ocfs2/dlm/userdlm.c:30: include/asm/ptrace.h:42: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pt_regs_is_syscall’ include/asm/ptrace.h:47: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pt_regs_clear_syscall’ make[3]: *** [fs/ocfs2/dlm/userdlm.o] Error 1 make[2]: *** [fs/ocfs2/dlm] Error 2 make[1]: *** [fs/ocfs2] Error 2 make: *** [fs] Error 2 Signed-off-by: Robert Reif <reif@earthlink.net> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-11sparc: Fix debugger syscall restart interactions.David S. Miller
So, forever, we've had this ptrace_signal_deliver implementation which tries to handle all of the nasties that can occur when the debugger looks at a process about to take a signal. It's meant to address all of these issues inside of the kernel so that the debugger need not be mindful of such things. Problem is, this doesn't work. The idea was that we should do the syscall restart business first, so that the debugger captures that state. Otherwise, if the debugger for example saves the child's state, makes the child execute something else, then restores the saved state, we won't handle the syscall restart properly because we lose the "we're in a syscall" state. The code here worked for most cases, but if the debugger actually passes the signal through to the child unaltered, it's possible that we would do a syscall restart when we shouldn't have. In particular this breaks the case of debugging a process under a gdb which is being debugged by yet another gdb. gdb uses sigsuspend to wait for SIGCHLD of the inferior, but if gdb itself is being debugged by a top-level gdb we get a ptrace_stop(). The top-level gdb does a PTRACE_CONT with SIGCHLD to let the inferior gdb see the signal. But ptrace_signal_deliver() assumed the debugger would cancel out the signal and therefore did a syscall restart, because the return error was ERESTARTNOHAND. Fix this by simply making ptrace_signal_deliver() a nop, and providing a way for the debugger to control system call restarting properly: 1) Report a "in syscall" software bit in regs->{tstate,psr}. It is set early on in trap entry to a system call and is fully visible to the debugger via ptrace() and regsets. 2) Test this bit right before doing a syscall restart. We have to do a final recheck right after get_signal_to_deliver() in case the debugger cleared the bit during ptrace_stop(). 3) Clear the bit in trap return so we don't accidently try to set that bit in the real register. As a result we also get a ptrace_{is,clear}_syscall() for sparc32 just like sparc64 has. M68K has this same exact bug, and is now the only other user of the ptrace_signal_deliver hook. It needs to be fixed in the same exact way as sparc. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-11sparc: Fix ptrace() detach.David S. Miller
Forever we had a PTRACE_SUNOS_DETACH which was unconditionally recognized, regardless of the personality of the process. Unfortunately, this value is what ended up in the GLIBC sys/ptrace.h header file on sparc as PTRACE_DETACH and PT_DETACH. So continue to recognize this old value. Luckily, it doesn't conflict with anything we actually care about. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-03Merge git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-inttypesLinus Torvalds
* git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-inttypes: (24 commits) Make constants in kernel/timeconst.h fixed 64 bits types: add C99-style constructors to <asm-generic/int-*.h> xtensa: types: use <asm-generic/int-*.h> for the xtensa architecture x86: types: use <asm-generic/int-*.h> for the x86 architecture v850: types: use <asm-generic/int-*.h> for the v850 architecture sparc64: types: use <asm-generic/int-*.h> for the sparc64 architecture sparc: types: use <asm-generic/int-*.h> for the sparc architecture sh: types: use <asm-generic/int-*.h> for the sh architecture s390: types: use <asm-generic/int-*.h> for the s390 architecture powerpc: types: use <asm-generic/int-*.h> for the powerpc architecture parisc: types: use <asm-generic/int-*.h> for the parisc architecture mn10300: types: use <asm-generic/int-*.h> for the mn10300 architecture mips: types: use <asm-generic/int-*.h> for the mips architecture m68k: types: use <asm-generic/int-*.h> for the m68k architecture m32r: types: use <asm-generic/int-*.h> for the m32r architecture ia64: types: use <asm-generic/int-*.h> for the ia64 architecture h8300: types: use <asm-generic/int-*.h> for the h8300 architecture frv: types: use <asm-generic/int-*.h> for the frv architecture cris: types: use <asm-generic/int-*.h> for the cris architecture blackfin: types: use <asm-generic/int-*.h> for the blackfin architecture ...
2008-05-02sparc: types: use <asm-generic/int-*.h> for the sparc architectureH. Peter Anvin
This modifies <asm-sparc/types.h> to use the <asm-generic/int-*.h> generic include files. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: William L. Irwin <wli@holomorphy.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-02sparc32: Delete prom_stdin and prom_stdout.David S. Miller
They are written, but never used. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-02sparc32: More memory probing consolidation.David S. Miller
The PROM library function prom_meminit() builds a table, prom_phys_avail[], just so that probe_memory() in arch/sparc/mm/fault.c can copy it into sp_banks[]. Just have prom_meminit() fill in the sp_banks[] array directly, and remove duplicated sort() function. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-05-02sparc32: Kill totally unused memory information tables.David S. Miller
The code in arch/sparc/prom/memory.c computes three tables, the list of total memory, the list of available memory (total minus what firmware is using), and the list of firmware taken memory. Only the available memory list is even used. Therefore, kill those unused tables and make prom_meminfo() return just the available memory list. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-30Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6Linus Torvalds
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc64: remove duplicated include sparc: Add kgdb support. kgdbts: Sparc needs sstep emulation. sparc32: Kill smp_message_pass() and related code. sparc64: Kill PIL_RESERVED, unused. sparc64: Split entry.S up into seperate files.
2008-04-29kernel: Move arches to use common unaligned accessHarvey Harrison
Unaligned access is ok for the following arches: cris, m68k, mn10300, powerpc, s390, x86 Arches that use the memmove implementation for native endian, and the byteshifting for the opposite endianness. h8300, m32r, xtensa Packed struct for native endian, byteshifting for other endian: alpha, blackfin, ia64, parisc, sparc, sparc64, mips, sh m86knommu is generic_be for Coldfire, otherwise unaligned access is ok. frv, arm chooses endianness based on compiler settings, uses the byteshifting versions. Remove the unaligned trap handler from frv as it is now unused. v850 is le, uses the byteshifting versions for both be and le. Remove the now unused asm-generic implementation. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-29sparc: Add kgdb support.David S. Miller
Current limitations: 1) On SMP single stepping has some fundamental issues, shared with other sw single-step architectures such as mips and arm. 2) On 32-bit sparc we don't support SMP kgdb yet. That requires some reworking of the IPI mechanisms and infrastructure on that platform. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-29sparc32: Kill smp_message_pass() and related code.David S. Miller
Completely unused, and it just makes the SMP message passing code on 32-bit sparc look more complex than it is. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-28Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6Linus Torvalds
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc: video drivers: add facility level sparc: tcx.c make tcx_init and tcx_exit static sparc: ffb.c make ffb_init and ffb_exit static sparc: cg14.c make cg14_init and cg15_exit static sparc: bw2.c fix bw2_exit sparc64: Fix accidental syscall restart on child return from clone/fork/vfork. sparc64: Clean up handling of pt_regs trap type encoding. sparc: Remove old style signal frame support. sparc64: Kill bogus RT_ALIGNEDSZ macro from signal.c sparc: sunzilog.c remove unused argument sparc: fix drivers/video/tcx.c warning sparc64: Kill unused local ISA bus layer. input: Rewrite sparcspkr device probing. sparc64: Do not ignore 'pmu' device ranges. sparc64: Kill ISA_FLOPPY_WORKS code. sparc64: Kill CONFIG_SPARC32_COMPAT sparc64: Cleanups and corrections for arch/sparc64/Kconfig sparc64: Fix wedged irq regression.
2008-04-28mm: introduce pte_special pte bitNick Piggin
s390 for one, cannot implement VM_MIXEDMAP with pfn_valid, due to their memory model (which is more dynamic than most). Instead, they had proposed to implement it with an additional path through vm_normal_page(), using a bit in the pte to determine whether or not the page should be refcounted: vm_normal_page() { ... if (unlikely(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP))) { if (vma->vm_flags & VM_MIXEDMAP) { #ifdef s390 if (!mixedmap_refcount_pte(pte)) return NULL; #else if (!pfn_valid(pfn)) return NULL; #endif goto out; } ... } This is fine, however if we are allowed to use a bit in the pte to determine refcountedness, we can use that to _completely_ replace all the vma based schemes. So instead of adding more cases to the already complex vma-based scheme, we can have a clearly seperate and simple pte-based scheme (and get slightly better code generation in the process): vm_normal_page() { #ifdef s390 if (!mixedmap_refcount_pte(pte)) return NULL; return pte_page(pte); #else ... #endif } And finally, we may rather make this concept usable by any architecture rather than making it s390 only, so implement a new type of pte state for this. Unfortunately the old vma based code must stay, because some architectures may not be able to spare pte bits. This makes vm_normal_page a little bit more ugly than we would like, but the 2 cases are clearly seperate. So introduce a pte_special pte state, and use it in mm/memory.c. It is currently a noop for all architectures, so this doesn't actually result in any compiled code changes to mm/memory.o. BTW: I haven't put vm_normal_page() into arch code as-per an earlier suggestion. The reason is that, regardless of where vm_normal_page is actually implemented, the *abstraction* is still exactly the same. Also, while it depends on whether the architecture has pte_special or not, that is the only two possible cases, and it really isn't an arch specific function -- the role of the arch code should be to provide primitive functions and accessors with which to build the core code; pte_special does that. We do not want architectures to know or care about vm_normal_page itself, and we definitely don't want them being able to invent something new there out of sight of mm/ code. If we made vm_normal_page an arch function, then we have to make vm_insert_mixed (next patch) an arch function too. So I don't think moving it to arch code fundamentally improves any abstractions, while it does practically make the code more difficult to follow, for both mm and arch developers, and easier to misuse. [akpm@linux-foundation.org: build fix] Signed-off-by: Nick Piggin <npiggin@suse.de> Acked-by: Carsten Otte <cotte@de.ibm.com> Cc: Jared Hulbert <jaredeh@gmail.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-27sparc: Remove old style signal frame support.David S. Miller
Back around the same time we were bootstrapping the first 32-bit sparc Linux kernel with a SunOS userland, we made the signal frame match that of SunOS. By the time we even started putting together a native Linux userland for 32-bit Sparc we realized this layout wasn't sufficient for Linux's needs. Therefore we changed the layout, yet kept support for the old style signal frame layout in there. The detection mechanism is that we had sys_sigaction() start passing in a negative signal number to indicate "new style signal frames please". Anyways, no binaries exist in the world that use the old stuff. In fact, I bet Jakub Jelinek and myself are the only two people who ever had such binaries to be honest. So let's get rid of this stuff. I added an assertion using WARN_ON_ONCE() that makes sure 32-bit applications are passing in that negative signal number still. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-23[SPARC64]: NUMA device infrastructure.David S. Miller
Record and propagate NUMA information for devices. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-21Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6Linus Torvalds
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC]: Remove SunOS and Solaris binary support.
2008-04-21[SPARC]: Remove SunOS and Solaris binary support.David S. Miller
As per Documentation/feature-removal-schedule.txt Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-20[SPARC] minor irq handler cleanupsJeff Garzik
- mark timer_interrupt() static - sparc_floppy_request_irq() prototype should use irq_handler_t Signed-off-by: Jeff Garzik <jgarzik@redhat.com> Acked-by: David S. Miller <davem@davemloft.net>
2008-04-18Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6Linus Torvalds
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (58 commits) ide: remove ide_init_default_irq() macro ide: move default IDE ports setup to ide_generic host driver ide: remove obsoleted "idex=noprobe" kernel parameter (take 2) ide: remove needless hwif->irq check from ide_hwif_configure() ide: init hwif->{io_ports,irq} explicitly in legacy VLB host drivers ide: limit legacy VLB host drivers to alpha, x86 and mips cmd640: init hwif->{io_ports,irq} explicitly cmd640: cleanup setup_device_ptrs() ide: add ide-4drives host driver (take 3) ide: remove ppc ifdef from init_ide_data() ide: remove ide_default_io_ctl() macro ide: remove CONFIG_IDE_ARCH_OBSOLETE_INIT ide: add CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS (take 2) ppc/pmac: remove no longer needed IDE quirk ppc: don't include <linux/ide.h> ppc: remove ppc_ide_md ppc/pplus: remove ppc_ide_md.ide_init_hwif hook ppc/sandpoint: remove ppc_ide_md hooks ppc/lopec: remove ppc_ide_md hooks ppc/mpc8xx: remove ppc_ide_md hooks ...
2008-04-18ide: remove ide_default_io_ctl() macroBartlomiej Zolnierkiewicz
It is always == '((base) + 0x206)' if CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS=y and it is not needed otherwise (arm, blackfin, parisc, ppc64, sh, sparc[64]). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2008-04-17Generic semaphore implementationMatthew Wilcox
Semaphores are no longer performance-critical, so a generic C implementation is better for maintainability, debuggability and extensibility. Thanks to Peter Zijlstra for fixing the lockdep warning. Thanks to Harvey Harrison for pointing out that the unlikely() was unnecessary. Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Acked-by: Ingo Molnar <mingo@elte.hu>
2008-04-02kvm: provide kvm.h for all architecture: fixes headers_installChristian Borntraeger
Currently include/linux/kvm.h is not considered by make headers_install, because Kbuild cannot handle " unifdef-$(CONFIG_FOO) += foo.h. This problem was introduced by commit fb56dbb31c4738a3918db81fd24da732ce3b4ae6 Author: Avi Kivity <avi@qumranet.com> Date: Sun Dec 2 10:50:06 2007 +0200 KVM: Export include/linux/kvm.h only if $ARCH actually supports KVM Currently, make headers_check barfs due to <asm/kvm.h>, which <linux/kvm.h> includes, not existing. Rather than add a zillion <asm/kvm.h>s, export kvm. only if the arch actually supports it. Signed-off-by: Avi Kivity <avi@qumranet.com> which makes this an 2.6.25 regression. One way of solving the issue is to enhance Kbuild, but Avi and David conviced me, that changing headers_install is not the way to go. This patch changes the definition for linux/kvm.h to unifdef-y. If  unifdef-y is used for linux/kvm.h "make headers_check" will fail on all architectures without asm/kvm.h. Therefore, this patch also provides asm/kvm.h on all architectures. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Avi Kivity <avi@qumranet.com> Cc: Sam Ravnborg <sam@ravnborg.org Cc: David Woodhouse <dwmw2@infradead.org> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-28[SPARC]: Add reboot_command[] extern decl to asm/system.hDavid S. Miller
Kill off some sparse warnings. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/a.out.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/fb.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/errno.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/device.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/current.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/cache.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/byteorder.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/bugs.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/bug.hDavid S. Miller
Note that because of minimum compiler version enforcement in linux/compiler.h these days the check for sparc32 buggy __builtin_trap() can be safely removed. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Kill BSD errno translation table and header files.David S. Miller
Completely unused. Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge asm-sparc{,64}/bpp.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Merge include/asm-sparc{,64}/prom.hDavid S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-09[SPARC]: Remove of_platform_device_createStephen Rothwell
There are no callers of this on the Sparc platforms. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
2008-02-08CONFIG_HIGHPTE vs. sub-page page tables.Martin Schwidefsky
Background: I've implemented 1K/2K page tables for s390. These sub-page page tables are required to properly support the s390 virtualization instruction with KVM. The SIE instruction requires that the page tables have 256 page table entries (pte) followed by 256 page status table entries (pgste). The pgstes are only required if the process is using the SIE instruction. The pgstes are updated by the hardware and by the hypervisor for a number of reasons, one of them is dirty and reference bit tracking. To avoid wasting memory the standard pte table allocation should return 1K/2K (31/64 bit) and 2K/4K if the process is using SIE. Problem: Page size on s390 is 4K, page table size is 1K or 2K. That means the s390 version for pte_alloc_one cannot return a pointer to a struct page. Trouble is that with the CONFIG_HIGHPTE feature on x86 pte_alloc_one cannot return a pointer to a pte either, since that would require more than 32 bit for the return value of pte_alloc_one (and the pte * would not be accessible since its not kmapped). Solution: The only solution I found to this dilemma is a new typedef: a pgtable_t. For s390 pgtable_t will be a (pte *) - to be introduced with a later patch. For everybody else it will be a (struct page *). The additional problem with the initialization of the ptl lock and the NR_PAGETABLE accounting is solved with a constructor pgtable_page_ctor and a destructor pgtable_page_dtor. The page table allocation and free functions need to call these two whenever a page table page is allocated or freed. pmd_populate will get a pgtable_t instead of a struct page pointer. To get the pgtable_t back from a pmd entry that has been installed with pmd_populate a new function pmd_pgtable is added. It replaces the pmd_page call in free_pte_range and apply_to_pte_range. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>