summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* sparc: refactor MakefileSam Ravnborg2008-12-042-16/+8
| | | | | | | | | The btfixup step needs knowledge of all the .o files, but there is no need to pass them in independent variables. Simplify it to use only two variables. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc,sparc64: unify asm-offsets.cSam Ravnborg2008-12-042-4/+17
| | | | | | | | | sparc64 does not use constants generated from asm-offsets but to prepare it to do so the parts that could be shared do now generate constants for sparc64 too. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: use vmlinux.lds.S from sparcSam Ravnborg2008-12-042-177/+2
| | | | | | | Previous commit made them identical so use the sparc version Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc,sparc64: prepare vmlinux.lds.S for unificationSam Ravnborg2008-12-042-28/+116
| | | | | | | | | | | | | This patch makes the two vmlinux.lds.S files identical and serve as documentation for the changes in each file. This mainly add stuffs to sparc32 that is otherwise only used by sparc64 and thus it should have no effect. Build tested only. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Provide oprofile pseudo-NMI on Niagara.David S. Miller2008-12-041-16/+135
| | | | Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Add performance counter hypervisor calls for sun4v.David S. Miller2008-12-043-0/+62
| | | | Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Add save_stack_trace_tsk().David S. Miller2008-12-042-9/+27
| | | | | | And this allows us to indicate HAVE_LATENCYTOP_SUPPORT. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc32: pdev_to_pnode() is used from __devinitAl Viro2008-12-041-1/+1
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc32: Don't btfixup cache flush ops for viking multiple times.David S. Miller2008-12-041-12/+11
| | | | | | | | Just do it once. Pointed out by Al Viro. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: combine unistd_{32,64}.hStephen Rothwell2008-12-045-773/+443
| | | | | | | | This is complicated a little because compat_audit.c wants to see only the 32bit syscall numbers, but is being built in a 64bit compile. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Use NMI oprofile profiling on cheetah and derivative cpus.David S. Miller2008-12-041-1/+109
| | | | | | | | | | We use clock cycle counter, adjusted to HZ. This can be extended to sun4v based processors as well, as they also have a proper overflow interrupt facility for the performance counters. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Add write_pic() helper.David S. Miller2008-12-041-4/+5
| | | | | | | | It writes the %pic register, keeping mind of processor bugs. Implement reset_pic() in terms of it. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Block NMIs in critical section of context switch.David S. Miller2008-12-041-0/+2
| | | | | | | | | | In these instructions we load the new thread register, switch the register window, and setup the new frame pointer. All of these must appear atomic, and things will explode if we take a PIL=15 NMI interrupt in the middle of this sequence. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Make special trap return path for TRAP_NMI().David S. Miller2008-12-042-2/+14
| | | | | | | We don't want the rtrap path to try and run softirqs or anything like that when returning from a PIL==15 NMI. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Make %pil level 15 a pseudo-NMI.David S. Miller2008-12-0412-25/+46
| | | | | | | | | So that we can profile code even in a local_irq_disable() section, only write 14 (instead of 15) into the %pil register to disable IRQs. This allows PIL level 15 to serve as a pseudo NMI. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: Include drivers/pcmcia/KconfigDavid S. Miller2008-12-042-18/+7
| | | | | | | | | | | | | Stephen Rothwell pointed out that pcmcia can't be enabled on sparc64. There is an empty non-prompt PCMCIA explicit entry in arch/sparc/Kconfig but that doesn't do anything. 32-bit sparc needs a small hack to make this work, since it doesn't use the generic IRQ layer yes. We have to provide a dummy definition of probe_irq_mask(), since this is used by the yenta socket driver. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Add interface for registering a performance counter IRQ handler.David S. Miller2008-12-043-1/+67
| | | | Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Add tsb-ratio sysctl.David S. Miller2008-12-042-7/+28
| | | | | | | | | | | | | | | | | Add a sysctl to tweak the RSS limit used to decide when to grow the TSB for an address space. In order to avoid expensive divides and multiplies only simply positive and negative powers of two are supported. The function computed takes the number of TSB translations that will fit at one time in the TSB of a given size, and either adds or subtracts a percentage of entries. This final value is the RSS limit. See tsb_size_to_rss_limit(). Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc,sparc64: unify mm/Sam Ravnborg2008-12-0411-13/+8
| | | | | | | | | | | - move all sparc64/mm/ files to arch/sparc/mm/ - commonly named files are named _64.c - add files to sparc/mm/Makefile preserving link order - delete now unused sparc64/mm/Makefile - sparc64 now finds mm/ in sparc Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: prepare mm/ for unificationSam Ravnborg2008-12-044-8/+12
| | | | | | | | | - rename files where sparc64 has similar files to _32.c - Restructure Makefile - Sneak in -Werror as we have for sparc64 Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: unify arch/sparc64/oprofile/Sam Ravnborg2008-12-043-33/+1
| | | | | | | | | | | | | A simple: diff arch/sparc64/oprofile/init.c arch/sparc/oprofile/init.c diff arch/sparc64/oprofile/Makefile arch/sparc/oprofile/Makefile revealed that the directories were equal. So let sparc64 point to the sparc version and drop the sparc64 oprofile dir Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: unify math-emuSam Ravnborg2008-12-044-9/+2
| | | | | | | | Move relavent files to sparc/math-emu and adjust path/include accordingly. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: prepare math-emu for unificationSam Ravnborg2008-12-043-2/+2
| | | | | | | Add _32 to filenames to make them 32 bit unique Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: cleanup math-emuSam Ravnborg2008-12-042-39/+3
| | | | | | | | | - Drop unused assignment from Makefile - Replace EXTRA_CFLAGS with ccflags-y - Delete unused file Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc,sparc64: add BITS to arch MakefileSam Ravnborg2008-12-042-5/+6
| | | | | | | BITS will be used to simplify unified Makefiles Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc,sparc64: unify Kconfig filesSam Ravnborg2008-12-042-476/+309
| | | | | | | | | | | | | | | | Merge all of sparc64 Kconfig to sparc Kconfig. The merge was checked by: - visual inspection in menuconfig - result of allnoconfig, allmodconfig, allyesconfig was checked before and after - result of a number of randconfig was checked before and after scripts/diffconfig was used to check if the config differed before and after The validity of the test was checked by on purpose introducing a few bugs - and they were all caught by first run. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: add "Bus options" to KconfigSam Ravnborg2008-12-041-61/+67
| | | | | | | | | To align with sparc64 add a "Bus options" menu This has the additiona advantage that all bus options are kept together Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: add menu "Executable file formats"Sam Ravnborg2008-12-041-2/+6
| | | | | | | This is what we use in sparc64 - make sparc equal Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: use Kconfig.hzSam Ravnborg2008-12-041-4/+1
| | | | | | | | We already has the proper definition in place in param.h. So use the common Kconfig.hz file Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: drop UNIX98_PTYS from arch KconfigSam Ravnborg2008-12-041-34/+0
| | | | | | | | We have it in drivers/char/Kconfig There is no need to ask twice Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: added more config options to the menusSam Ravnborg2008-12-041-38/+42
| | | | | | | | | | moved a few config entries inside a menu so we do not clutter the first screen up with a lot of detailed config options. The structure now remotely resemble the structure for i386 Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: refactor Kconfig a littleSam Ravnborg2008-12-041-23/+24
| | | | | | | | Mode declaration of SPARC up in the top to match the structure of sparc64 Kconfig Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc: unify Kconfig.debugSam Ravnborg2008-12-043-45/+27
| | | | | | | Let sparc and sparc64 use the same Kconfig.debug Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Stop using memory barriers for atomics and locks.David S. Miller2008-12-0415-137/+17
| | | | | | | | | The kernel always executes in the TSO memory model now, so none of this stuff is necessary any more. With helpful feedback from Nick Piggin. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Run the kernel always in the TSO memory model.David S. Miller2008-12-043-17/+12
| | | | | | | | | | | | | | | | The fact of the matter is, all UltraSPARC-III and later chips only implement TSO. They don't implement PSO and RMO memory models at all. Only the Ultra-I and Ultra-II family chips implement RMO and they are only helped marginally by using this setting when executing kernel code. The big plus to doing this is that we can eliminate all of the non-Sync memory barriers in the kernel except for the ones used in the optimized memcpy/memset code (these use block load and store operations which have their own memory ordering rules). Signed-off-by: David S. Miller <davem@davemloft.net>
* of: Fix comment, sparc no longer uses of_device objects on special busses.David S. Miller2008-12-041-2/+1
| | | | | | It only uses of_platform_bus_type. Signed-off-by: David S. Miller <davem@davemloft.net>
* sparc64: Rework auxio driver to save some text space.David S. Miller2008-12-041-44/+26
| | | | | | | | | | | | | | | | | Use common functions instead of inlining and duplicating logic over and over to handle the SBUS vs. EBUS cases. Before: text data bss dec hex filename 715 568 16 1299 513 arch/sparc64/kernel/auxio.o After: text data bss dec hex filename 631 568 16 1215 4bf arch/sparc64/kernel/auxio.o Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge branch 'master' of ↵David S. Miller2008-12-043-3/+6
|\ | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
| * sparc64: Sync FPU state in VIS emulation handler.Hong H. Pham2008-12-041-0/+2
| | | | | | | | | | | | | | | | Copy the FPU state to the task's thread_info->fpregs for the VIS emulation functions to access. Signed-off-by: Hong H. Pham <hong.pham@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * sparc64: Fix VIS emulation bugsJoseph Myers2008-12-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes some bugs in VIS emulation that cause the GCC test failure FAIL: gcc.target/sparc/pdist-3.c execution test for both 32-bit and 64-bit testing on hardware lacking these instructions. The emulation code for the pdist instruction uses RS1(insn) for both source registers rs1 and rs2, which is obviously wrong and leads to the instruction doing nothing (the observed problem), and further inspection of the code shows that RS1 uses a shift of 24 and RD a shift of 25, which clearly cannot both be right; examining SPARC documentation indicates the correct shift for RS1 is 14. This patch fixes the bug if single-stepping over the affected instruction in the debugger, but not if the testcase is run standalone. For that, Wind River has another patch I hope they will send as a followup to this patch submission. Signed-off-by: Joseph Myers <joseph@codesourcery.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * sparc: asm/bitops.h should define __flsRusty Russell2008-12-031-0/+1
| | | | | | | | | | | | | | | | | | | | bitops_64.h includes the generic one; pretty sure 32 should too. (Found by using __fls in generic code and breaking sparc defconfig build: thanks Stephen and linux-next!) Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
| * sparc64: Fix bug in PTRACE_SETFPREGS64 handling.Chris Torek2008-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | From: Chris Torek <chris.torek@windriver.com> >The SPARC64 kernel code for PTRACE_SETFPREGS64 appears to be an exact copy >of that for PTRACE_GETFPREGS64. This means that gdbserver and native >64-bit GDB cannot set floating-point registers. It looks like a simple typo. Signed-off-by: David S. Miller <davem@davemloft.net>
* | Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-blockLinus Torvalds2008-12-038-19/+37
|\ \ | | | | | | | | | | | | | | | | | | | | | * 'for-linus' of git://git.kernel.dk/linux-2.6-block: block: fix setting of max_segment_size and seg_boundary mask block: internal dequeue shouldn't start timer block: set disk->node_id before it's being used When block layer fails to map iov, it calls bio_unmap_user to undo
| * | block: fix setting of max_segment_size and seg_boundary maskMilan Broz2008-12-034-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix setting of max_segment_size and seg_boundary mask for stacked md/dm devices. When stacking devices (LVM over MD over SCSI) some of the request queue parameters are not set up correctly in some cases by default, namely max_segment_size and and seg_boundary mask. If you create MD device over SCSI, these attributes are zeroed. Problem become when there is over this mapping next device-mapper mapping - queue attributes are set in DM this way: request_queue max_segment_size seg_boundary_mask SCSI 65536 0xffffffff MD RAID1 0 0 LVM 65536 -1 (64bit) Unfortunately bio_add_page (resp. bio_phys_segments) calculates number of physical segments according to these parameters. During the generic_make_request() is segment cout recalculated and can increase bio->bi_phys_segments count over the allowed limit. (After bio_clone() in stack operation.) Thi is specially problem in CCISS driver, where it produce OOPS here BUG_ON(creq->nr_phys_segments > MAXSGENTRIES); (MAXSEGENTRIES is 31 by default.) Sometimes even this command is enough to cause oops: dd iflag=direct if=/dev/<vg>/<lv> of=/dev/null bs=128000 count=10 This command generates bios with 250 sectors, allocated in 32 4k-pages (last page uses only 1024 bytes). For LVM layer, it allocates bio with 31 segments (still OK for CCISS), unfortunatelly on lower layer it is recalculated to 32 segments and this violates CCISS restriction and triggers BUG_ON(). The patch tries to fix it by: * initializing attributes above in queue request constructor blk_queue_make_request() * make sure that blk_queue_stack_limits() inherits setting (DM uses its own function to set the limits because it blk_queue_stack_limits() was introduced later. It should probably switch to use generic stack limit function too.) * sets the default seg_boundary value in one place (blkdev.h) * use this mask as default in DM (instead of -1, which differs in 64bit) Bugs related to this: https://bugzilla.redhat.com/show_bug.cgi?id=471639 http://bugzilla.kernel.org/show_bug.cgi?id=8672 Signed-off-by: Milan Broz <mbroz@redhat.com> Reviewed-by: Alasdair G Kergon <agk@redhat.com> Cc: Neil Brown <neilb@suse.de> Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Tejun Heo <htejun@gmail.com> Cc: Mike Miller <mike.miller@hp.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| * | block: internal dequeue shouldn't start timerTejun Heo2008-12-034-15/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | blkdev_dequeue_request() and elv_dequeue_request() are equivalent and both start the timeout timer. Barrier code dequeues the original barrier request but doesn't passes the request itself to lower level driver, only broken down proxy requests; however, as the original barrier code goes through the same dequeue path and timeout timer is started on it. If barrier sequence takes long enough, this timer expires but the low level driver has no idea about this request and oops follows. Timeout timer shouldn't have been started on the original barrier request as it never goes through actual IO. This patch unexports elv_dequeue_request(), which has no external user anyway, and makes it operate on elevator proper w/o adding the timer and make blkdev_dequeue_request() call elv_dequeue_request() and add timer. Internal users which don't pass the request to driver - barrier code and end_that_request_last() - are converted to use elv_dequeue_request(). Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Mike Anderson <andmike@linux.vnet.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| * | block: set disk->node_id before it's being usedCheng Renquan2008-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | disk->node_id will be refered in allocating in disk_expand_part_tbl, so we should set it before disk->node_id is refered. Signed-off-by: Cheng Renquan <crquan@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| * | When block layer fails to map iov, it calls bio_unmap_user to undoPetr Vandrovec2008-12-031-1/+1
| |/ | | | | | | | | | | | | | | | | | | mapping. Which is good if pages were mapped - but if they were provided by someone else and just copied then bad things happen - pages are released once here, and once by caller, leading to user triggerable BUG at include/linux/mm.h:246. Signed-off-by: Petr Vandrovec <petr@vandrovec.name> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
* | Merge branch 'merge' of ↵Linus Torvalds2008-12-032-8/+9
|\ \ | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts powerpc: Fix dma_map_sg() cache flushing on non coherent platforms
| * | powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dtsAnton Vorontsov2008-12-031-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just found the merge issue in 442746989d92afc125040e0f29b33602ad94da99 ("powerpc/83xx: Add support for MCU microcontroller in .dts files"): the commit adds the MCU controller node into the DMA node, which is wrong because the MCU sits on the I2C bus. Fix this by moving the MCU node into the I2C controller node. The original patch[1] was OK though. ;-) Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
| * | powerpc: Fix dma_map_sg() cache flushing on non coherent platformsBenjamin Herrenschmidt2008-12-031-0/+1
| |/ | | | | | | | | | | | | | | | | | | | | On PowerPC 4xx or other non cache-coherent platforms, we lost the appropriate cache flushing in dma_map_sg() when merging the 32 and 64-bit DMA code (commit 4fc665b88a79a45bae8bbf3a05563c27c7337c3d, "powerpc: Merge 32 and 64-bit dma code"). This restores it. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Becky Bruce <beckyb@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
OpenPOWER on IntegriCloud