aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc/kernel
AgeCommit message (Collapse)AuthorFilesLines
2008-08-29sparc: Remove SBUS layer resource and irq handling.David S. Miller1-27/+0
All the drivers use OF device objects now for this information. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Kill SBUS layer IRQ hooks.David S. Miller4-100/+0
IRQs are obtained by drivers from the of_device struct. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Convert sun4d IRQ code to use generic device tree probing.David S. Miller1-35/+48
Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Convert pmc to OF driver.David S. Miller1-29/+28
Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Convert apc to OF driver.David S. Miller1-34/+38
Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Make mmu_map_dma_area and mmu_unmap_dma_area take a device pointer.David S. Miller1-2/+2
This lets us kill this "map it in every IOMMU" crazy code, and also some of the final references to sbus_root. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Kill mmu_translate_dvma() usage.David S. Miller1-35/+1
Just simply use virt_to_page() on the provided virtual address pointer. Kill #if 0'd code. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Move SBUS DMA attribute interfaces out of asm/sbus.hDavid S. Miller1-1/+1
This is in preparation for the subsequent asm/sbus.h removal. Also, make these routines take a "struct device" or no arguments, as appropriate. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Convert all SBUS drivers to dma_*() interfaces.David S. Miller1-8/+0
And all the SBUS dma interfaces are deleted. A private implementation remains inside of the 32-bit sparc port which exists only for the sake of the implementation of dma_*(). Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Implement more generic dma_*() interfaces.David S. Miller4-1/+244
These dispatch to either PCI or SBUS routines based upon the device bus type. This will allow us to let SBUS drivers call these routines. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Make mmu_{get,release}_*() take a struct device pointer.David S. Miller1-13/+4
Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Make SBUS DMA interfaces take struct device.David S. Miller2-26/+19
This is the first step in converting all the SBUS drivers over to generic dma_*(). Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc32: Make IOMMU and IO-UNIT init work with device nodes.David S. Miller1-11/+6
And stick the iommu archdata pointer into the generic OF device tree of_device struct as well. We still have to pass the sbus_bus object down into the routines so that the SBUS bus objects get the iommu cookies set properly. After drivers get converted to being pure OF drivers, that can go away. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Kill SBUS DVMA layer.David S. Miller1-1/+0
This thing was completely pointless. Just find the OF device in the parent of drivers that want to program this device, and map the DMA regs inside such drivers too. This also moves the dummy claim_dma_lock() and release_dma_lock() implementation to floppy_32.h, which makes it handle this issue just like floppy_64.h does. Signed-off-by: David S. Miller <[email protected]>
2008-08-29sparc: Delete bare sbus char bpp driver, obsoleted by parport_sunbppDavid S. Miller1-1/+0
Signed-off-by: David S. Miller <[email protected]>
2008-08-28sparc: Fix resource flags for PCI children in OF device tree.David S. Miller1-5/+14
When a device is under an EBUS or ISA bus, the resource flags don't get set properly. Fix this by re-evaluating the resource flags at each level of bus as we apply ranges on the way to the root. And let PCI override any existing flags setting, but don't let the default flags calculator make such overrides. Signed-off-by: David S. Miller <[email protected]>
2008-08-27sparc32: Implement smp_call_function_single().David S. Miller2-10/+18
Reported by Stephen Rothwell. Needed to fix the build when CONFIG_RELAY is enabled. Signed-off-by: David S. Miller <[email protected]>
2008-08-25sparc64: Fix irq_of_parse_and_map() and irq_dispose_mapping().David S. Miller1-2/+2
Stephen Rothwell noticed that I committed an earlier version of the patch that didn't have two things fixed: 1) irq_of_parse_and_map() should return "unsigned int" not "int" and it should return zero for "no irq" 2) irq_dispose_mapping() should be an inline function, not a macro, for type checking With feedback and suggestions from Anton Vorontsov. Signed-off-by: David S. Miller <[email protected]>
2008-08-24sparc: Implement irq_of_parse_and_map() and irq_dispose_mapping().David S. Miller1-0/+11
This allows more OF layer code to be shared between powerpc and sparc. Signed-off-by: David S. Miller <[email protected]>
2008-08-24sparc: Add mutex for set property calls.David S. Miller1-0/+6
On some platforms, the I2C controller is shared between the OS and OBP. OBP uses this I2C controller to access the EEPROM, and thus is programmed when the kernel calls prom_setprop(). Wrap such calls with the new of_set_property_mutex. Relevant I2C bus drivers can grab this mutex around top-level I2C operations to provide the proper protection. Signed-off-by: David S. Miller <[email protected]>
2008-08-07sparc: don't use asm/of_device.hStephen Rothwell2-2/+2
Use linux/of_device.h instead. Signed-off-by: Stephen Rothwell <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-07-27sparc: Add call to tracehook_signal_handler().David S. Miller1-0/+2
Signed-off-by: David S. Miller <[email protected]>
2008-07-27sparc: Create and use TIF_NOTIFY_RESUME.David S. Miller2-3/+16
Signed-off-by: David S. Miller <[email protected]>
2008-07-27sparc: Use tracehook routines in syscall_trace().David S. Miller2-17/+21
Signed-off-by: David S. Miller <[email protected]>
2008-07-25sparc: Wire up new system calls.David S. Miller1-1/+2
This wires up the recently added Wire up signalfd4, eventfd2, epoll_create1, dup3, pipe2, and inotify_init1 system calls. Signed-off-by: David S. Miller <[email protected]>
2008-07-24flag parameters: pipeUlrich Drepper1-1/+1
This patch introduces the new syscall pipe2 which is like pipe but it also takes an additional parameter which takes a flag value. This patch implements the handling of O_CLOEXEC for the flag. I did not add support for the new syscall for the architectures which have a special sys_pipe implementation. I think the maintainers of those archs have the chance to go with the unified implementation but that's up to them. The implementation introduces do_pipe_flags. I did that instead of changing all callers of do_pipe because some of the callers are written in assembler. I would probably screw up changing the assembly code. To avoid breaking code do_pipe is now a small wrapper around do_pipe_flags. Once all callers are changed over to do_pipe_flags the old do_pipe function can be removed. The following test must be adjusted for architectures other than x86 and x86-64 and in case the syscall numbers changed. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <sys/syscall.h> #ifndef __NR_pipe2 # ifdef __x86_64__ # define __NR_pipe2 293 # elif defined __i386__ # define __NR_pipe2 331 # else # error "need __NR_pipe2" # endif #endif int main (void) { int fd[2]; if (syscall (__NR_pipe2, fd, 0) != 0) { puts ("pipe2(0) failed"); return 1; } for (int i = 0; i < 2; ++i) { int coe = fcntl (fd[i], F_GETFD); if (coe == -1) { puts ("fcntl failed"); return 1; } if (coe & FD_CLOEXEC) { printf ("pipe2(0) set close-on-exit for fd[%d]\n", i); return 1; } } close (fd[0]); close (fd[1]); if (syscall (__NR_pipe2, fd, O_CLOEXEC) != 0) { puts ("pipe2(O_CLOEXEC) failed"); return 1; } for (int i = 0; i < 2; ++i) { int coe = fcntl (fd[i], F_GETFD); if (coe == -1) { puts ("fcntl failed"); return 1; } if ((coe & FD_CLOEXEC) == 0) { printf ("pipe2(O_CLOEXEC) does not set close-on-exit for fd[%d]\n", i); return 1; } } close (fd[0]); close (fd[1]); puts ("OK"); return 0; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Ulrich Drepper <[email protected]> Acked-by: Davide Libenzi <[email protected]> Cc: Michael Kerrisk <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2008-07-19sparc: Remove Sparc's asm-offsets for sclow.SDavid Howells1-12/+0
Remove Sparc's asm-offsets for sclow.S as the (E)UID/(E)GID size and offset definitions will cease to be correct if COW credentials are merged. Signed-off-by: David Howells <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-07-17sparc: Use new '%pS' infrastructure to print symbols.David S. Miller2-10/+8
Signed-off-by: David S. Miller <[email protected]>
2008-07-17sparc: arch/sparc/kernel/apc.c to unlocked_ioctlStoyan Gaydarov1-12/+28
This changes arch/sparc/kernel/apc.c to use unlocked_ioctl Signed-off-by: Stoyan Gaydarov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-07-17sparc: export openprom.h to userspaceSam Ravnborg1-0/+1
sparc64 exports openprom.h to userspace so let sparc follow the example. As openprom.h pulled in another not-for-export vaddrs.h header file it required a few changes to fix the build. The definition af VMALLOC_* were moved to pgtable as this is where sparc64 has them. Signed-off-by: Sam Ravnborg <[email protected]>
2008-07-17sparc/kernel/: possible cleanupsAdrian Bunk20-54/+38
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-07-14Merge commit 'v2.6.26' into bkl-removalJonathan Corbet18-30/+37
2008-07-02sparc-apc: BKL pushdownArnd Bergmann1-0/+2
Signed-off-by: Arnd Bergmann <[email protected]>
2008-06-03sparc: switch /proc/led to seq_fileAlexey Dobriyan1-13/+21
Signed-off-by: Alexey Dobriyan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-05-20sparc: remove CVS keywordsAdrian Bunk16-16/+16
This patch removes the CVS keywords that weren't updated for a long time from comments. Signed-off-by: Adrian Bunk <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-05-16[PATCH] take init_files to fs/file.cAl Viro1-1/+0
Signed-off-by: Al Viro <[email protected]>
2008-05-12sparc: Fix mremap address range validation.David S. Miller1-43/+5
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-05-11sparc32: fix rtrap.S typoRobert Reif1-1/+1
Fix compile problem in rtrap.S arch/sparc/kernel/built-in.o: In function `ret_trap_userwins_ok': arch/sparc/kernel/rtrap.S:(.text+0x1900): undefined reference to `PSR_SYCALL' Signed-off-by: Robert Reif <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2008-05-11sparc: Fix debugger syscall restart interactions.David S. Miller4-41/+40
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 <[email protected]>
2008-05-11sparc: Fix ptrace() detach.David S. Miller1-0/+2
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 <[email protected]>
2008-05-10sparc32: Don't twiddle PT_DTRACE in exec.David S. Miller1-5/+0
That bit isn't used on this platform. Signed-off-by: David S. Miller <[email protected]>
2008-05-07sparc: Fix SA_ONSTACK signal handling.David S. Miller1-3/+17
We need to be more liberal about the alignment of the buffer given to us by sigaltstack(). The user should not need to be mindful of all of the alignment constraints we have for the stack frame. This mirrors how we handle this situation in clone() as well. Also, we align the stack even in non-SA_ONSTACK cases so that signals due to bad stack alignment can be delivered properly. This makes such errors easier to debug and recover from. Finally, add the sanity check x86 has to make sure we won't overflow the signal stack. This fixes glibc testcases nptl/tst-cancel20.c and nptl/tst-cancelx20.c Signed-off-by: David S. Miller <[email protected]>
2008-05-07sparc: Fix fork/clone/vfork system call restart.David S. Miller1-4/+16
We clobber %i1 as well as %i0 for these system calls, because they give two return values. Therefore, on error, we have to restore %i1 properly or else the restart explodes since it uses the wrong arguments. This fixes glibc's nptl/tst-eintr1.c testcase. Signed-off-by: David S. Miller <[email protected]>
2008-05-07sparc: Fix mmap VA span checking.David S. Miller1-2/+1
We should not conditionalize VA range checks on MAP_FIXED. Signed-off-by: David S. Miller <[email protected]>
2008-05-02sparc32: More memory probing consolidation.David S. Miller1-4/+1
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 <[email protected]>
2008-04-30Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6Linus Torvalds7-886/+214
* 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-29sparc: Add kgdb support.David S. Miller5-809/+214
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 <[email protected]>
2008-04-29sparc32: Kill smp_message_pass() and related code.David S. Miller2-77/+0
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 <[email protected]>
2008-04-27sparc: Remove old style signal frame support.David S. Miller3-253/+23
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 <[email protected]>
2008-04-23sparc: cleanup after SunOS binary emulation removalAdrian Bunk2-6/+0
The following cleanups are now possible: - arch/sparc/kernel/entry.S:ret_sys_call no longer has to be global - arch/sparc/kernel/signal.c:sys_sigpause() can be removed Signed-off-by: Adrian Bunk <[email protected]> Signed-off-by: David S. Miller <[email protected]>