aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel
Commit message (Collapse)AuthorAge
* Blackfin: update ftrace for latest toolchainYi Li2009-09-16
| | | | | | | | | | | | The mcount support that was finally added to the Blackfin gcc port isn't exactly the same as what ftrace was developed against. Now that the final gcc version is in place, update the ftrace code to match. While updating this, fix the swapped arguments to the tracer (signature is (ip, parent_ip) while we were passing (parent_ip, ip)). Signed-off-by: Yi Li <yi.li@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: unify cache init functionsMike Frysinger2009-09-16
| | | | | | | | The CPLB implementations (mpu/nompu) had exact copies of the cacheinit code. Even the i/d cache functions are largely the same. So unify them both in the common kernel cache code. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: swap clocksource ratings for gptimer/cyclesGraf Yang2009-09-16
| | | | | | | | The cycles clocksource is a higher resolution than the gptimer one, so make sure the ratings field reflects this. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: update ftrace_push_return_trace() breakageMike Frysinger2009-09-16
| | | | | | | | Commit 71e308a239c updated ftrace_push_return_trace() prototype but didn't update the Blackfin ftrace code, so things broke. Since we don't support the new stuff yet, call it with stub values. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: add ICPLB coverage for async banksBernd Schmidt2009-09-16
| | | | | | | | When doing XIP, we need to execute out of the async banks, so we need ICPLBs to allow this. Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: use KERN_ALERT in all kgdb_test outputMingquan Pan2009-09-16
| | | | | | | | Most messages are already using KERN_ALERT, so be consistent to make things easier to check with test scripts. Signed-off-by: Mingquan Pan <grace.pan@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: fix spelling in a few commentsMichael Hennerich2009-09-16
| | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: use raw_smp_processor_id() in exception codeYi Li2009-09-16
| | | | | | | | | | | When preempt debugging is enabled, smp_processor_id() may utilize the "current" structure. This may not be safe to access under all exceptions due to it being in dynamically allocated memory. So in exception code, make sure we use raw_smp_processor_id() instead to get at the real value directly. Signed-off-by: Yi Li <yi.li@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: remove useless duplicated assignment in gpio codeMichael Hennerich2009-09-16
| | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: Fix link errors with binutils 2.19 and GCC 4.3Ingo Molnar2009-09-16
| | | | | | | | | | | | | | | | | | | | | Not sure whether this has been reported/fixed before. Today I built a Blackfin tool-chain from scratch for -tip testing, and it triggers: arch/blackfin/kernel/vmlinux.lds:1238: undefined section `.data_a_l1' referenced in expression and: arch/blackfin/kernel/vmlinux.lds:1238: undefined section `.text_data_l1' referenced in expression Now i dont have any way to test this linker script, but it now at least builds fine after fixing what appears to be typos in those assert statements. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: optimize fixed code handling for the most common caseMike Frysinger2009-09-16
| | | | | | | | | | | The majority of the time we are returning to user space, it is not in the fixed atomic code region. So rather than branch to a function where we check the PC and return, do the check inline and branch only when needed. Also, tweak some of the fixed code handling based on assumptions we are aware of but cannot be expressed in C. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: punt dead cache locking codeMike Frysinger2009-09-16
| | | | | | | No one uses these functions, and some are duplicate of existing C code. So just punt the whole thing. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: do not trace the exception handlerYi Li2009-09-16
| | | | | | | | Since the exception handler cannot cause exceptions, we cannot trace it without easily causing double faults and crashing the system. Signed-off-by: Yi Li <yi.li@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: cleanup sync handling when enabling/disabling cplbsYi Li2009-09-16
| | | | | | | | | | | | | | The handling of updating the [DI]MEM_CONTROL MMRs does not follow proper sync procedures as laid out in the Blackfin programming manual. So rather than audit/fix every call location, create helper functions that do the right things in order to safely update these MMRs. Then convert all call sites to use these new helper functions. While we're fixing the code, drop the workaround for anomaly 05000125 as that anomaly applies to old versions of silicon that we do not support. Signed-off-by: Yi Li <yi.li@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: fix read buffer overflowRoel Kluin2009-09-16
| | | | | | | Check whether index is within bounds before testing the element. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: improve double fault debug handlingGraf Yang2009-09-16
| | | | | | | | | | | | | | Since the hardware only provides reporting for the last exception handled, and the values are valid only when executing the exception handler, we need to save the context for reporting at a later point. While we do this for one exception, it doesn't work properly when handling a second one as the original exception is clobbered by the double fault. So when double fault debugging is enabled, create a dedicated shadow of these values and save/restore out of there. Now the crash report properly displays the first exception as well as the second one. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: fix MPU handling of invalid memory accessesGraf Yang2009-09-16
| | | | | | | | | | | | The protect_page() function was incorrectly setting up the hardware tables based on possible access capabilities rather than the actual requested values. This means we would grant more access to mmap-ed pages than we should have. Once we fix this, we need to tweak the signal generated by such accesses to aline ourselves with other ports. This allows the LTP mmap0{5,6,7} cases to run properly. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: do not try displaying the end of the stackSonic Zhang2009-09-16
| | | | | | | | | The end of the stack may not be valid (and that could be OK), so do not attempt to parse it. If we do, we might use a bad pointer in kernel space which makes things panic(). Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: catch hardware errors earlier during bootingRobin Getz2009-09-16
| | | | | | | | | | | | | | | | | | Allow hardware errors to be caught during early portions of booting, and leave something in the shadow console that people can use to debug their system with (to be printed out by the bootloader on next reset). This enables the hardare error interrupts in head.S, allowing us to find hardware errors when they happen (well, as much as you can with a hardware error) and prints out the trace if it is enabled. This will catch errors (like booting the wrong image on a 533) which previously resulted in a infinite loop/hang, as well as random hardware errors before before setup_arch(). To disable this debug only feature - turn off EARLY_PRINTK. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: add an early shadow consoleRobin Getz2009-09-16
| | | | | | | | | Add a memory based shadow console to keep a copy of the printk buffer in a location which can be found externally. This allows bootloaders to locate and utilize the log buffer in case of silent (early/resume/etc...) crashes. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: add support for common FDPIC ptrace requestsMike Frysinger2009-09-16
| | | | | | | | The FDPIC arches support a standard set of ptrace requests so rather than define our own custom API, hook up those requests for common code to leverage. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: clean up early memory setup codeRobin Getz2009-09-16
| | | | | | | | Remove code duplication, and only print out memory warnings when they are an actual problem. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: fix module reloc handling for all memory regionsMike Frysinger2009-09-16
| | | | | | | | | The current module relocation code has spotty handling wrt different memory regions (like L1 instruction). Rather than try to fix each little spot, use the new common memory functions to greatly simplify everything and make sure it is always correct. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: cleanup module section checkingMike Frysinger2009-09-16
| | | | | | | | | The current module section handling code has a lot of verbose statements copied and pasted throughout which makes it pretty hard to digest at a glance. By unifying all of these up front, it is a lot easier to quickly get an idea of what is actually going on. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: convert malloc()/memset() to zalloc() in module codeMike Frysinger2009-09-16
| | | | Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: cleanup printk() usage in module codeMike Frysinger2009-09-16
| | | | | | | Convert all printk() statements to use the common pr_xxx() funcs and use the new pr_fmt() function to standardize all of the output. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: reject outdated/unused/wrong relocation typesRobin Getz2009-09-16
| | | | | | | | | | | All kernel modules are required to be built with -mlong-calls and thus should not generate any of these relocations. If they do, it means the module has not been compiled properly, so rather than trying to handle them (and running into random run time errors) just error out on module load to force the module to be compiled correctly. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: convert ptrace to new memory functionsMike Frysinger2009-09-16
| | | | | | | | | Now that we have a Blackfin memory function to figure out how to properly access the different regions, drop the custom memory range checks in our ptrace code and use that. It makes the code nicer and fixes bugs where the ptrace logic wasn't handling all the different regions. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: cleanup traps decode_address() a bitMike Frysinger2009-09-16
| | | | | | | Unify the address display to shrink the code, and add missing decoding of a few special Blackfin-specific regions (L1 ROM and MMRs). Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: inline I-pipe bypass code in ret_from_exceptionPhilippe Gerum2009-09-16
| | | | | Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: allow high priority domains to preempt schedule_tail()Philippe Gerum2009-09-16
| | | | | | | | | | | | | | ret_from_fork is always entered with hw interrupts off, which prevents real-time domains to preempt the Linux kernel during part of the initial context switch to the new task, which could in turn raise the worst-case latency figures. To avoid this, stall the root domain stage in the interrupt pipeline to keep the scheduling tail code free from Linux-handled IRQs, then enable hardware interrupts again. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: export show_stack() to modulesPhilippe Gerum2009-09-16
| | | | | Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: fix misnomer of some I-pipe helpersPhilippe Gerum2009-09-16
| | | | | | | | | | __ipipe_{stall, unstall}_root_raw() identifiers may leave the reader under the impression that only the virtual state is affected by these operations, which is wrong. Pick names following the convention used throughout the interrupt pipeline code. Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: checkpatch --file arch/blackfin/kernel/ipipe.cPhilippe Gerum2009-09-16
| | | | | Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4]Robin Getz2009-09-16
| | | | | | | | | | | | | | | | | We handle many exceptions at EVT5 (hardware error level) so that we can catch exceptions in our exception handling code. Today - if the global interrupt enable bit (IPEND[4]) is set (interrupts disabled) our trap handling code goes into a infinite loop, since we need interrupts to be on to defer things to EVT5. Normal kernel code should not trigger this for any reason as IPEND[4] gets cleared early (when doing an interrupt context save) and the kernel stack there should be sane (or something much worse is happening in the system). But there have been a few times where this has happened, so this change makes sure we dump a proper crash message even when things have gone south. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Merge branch 'percpu-for-linus' into percpu-for-nextTejun Heo2009-08-14
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: arch/sparc/kernel/smp_64.c arch/x86/kernel/cpu/perf_counter.c arch/x86/kernel/setup_percpu.c drivers/cpufreq/cpufreq_ondemand.c mm/percpu.c Conflicts in core and arch percpu codes are mostly from commit ed78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many num_possible_cpus() with nr_cpu_ids. As for-next branch has moved all the first chunk allocators into mm/percpu.c, the changes are moved from arch code to mm/percpu.c. Signed-off-by: Tejun Heo <tj@kernel.org>
| * Blackfin: add CPLB entries for Core B on-chip L1 SRAM regionsGraf Yang2009-07-16
| | | | | | | | | | | | | | | | | | The Blackfin SMP port was missing CPLB entries for Core B on-chip L1 SRAM regions. Any code that attempted to use these would wrongly crash due to a CPLB miss. Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: work around anomaly 05000189Robin Getz2009-07-16
| | | | | | | | | | | | | | | | | | Similar to anomaly 05000281 but not as bad, we cannot return to the instruction causing a fault otherwise we'll trigger a second false exception. The system can still recover, but it isn't correct. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: drop per-cpu loops_per_jiffy trackingMichael Hennerich2009-07-16
| | | | | | | | | | | | | | | | | | | | | | On Blackfin SMP, a per-cpu loops_per_jiffy is pointless since both cores always run at the same CCLK. In addition, the current implementation has flaws since the main consumer for loops_per_jiffy (asm/delay.h) uses the global kernel loops_per_jiffy and not the per_cpu one. So punt all of the per-cpu handling and go back to the global shared one. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: fix bugs in GPIO resume codeMichael Hennerich2009-07-16
| | | | | | | | | | | | | | | | | | Change the bfin_gpio_pm_hibernate_restore() function to: 1) AND restored DATA with DIR (not OR) to get correct final state 2) Restore DATA before setting DIR to avoid glitches Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: drop duplicate runtime checking of anomaly 05000448Robin Getz2009-07-16
| | | | | | | | | | | | | | | | | | We already catch this anomaly at compile time, and the runtime version is such that it ends up checking on all parts rather than just the ones that might actually have it. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: fix early_dma_memcpy() handling of busy channelsMike Frysinger2009-07-16
| | | | | | | | | | | | | | | | | | | | | | The early logic to locate a free DMA channel and then set it up was broken in a few ways that only manifested itself when we needed to set up more than 2 on chip SRAM regions (most board defaults setup 1 or 2). First, we checked the wrong status register (the destination gets updated, not the source) and second, we did the ssync before rather than after resetting a DMA config register. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: handle BF561 Core B memory regions better when SMP=nMike Frysinger2009-07-16
| | | | | | | | | | | | | | | | | | Rather than assume Core B is always run with caches turned on, let people load into any of the on-chip memory regions. It is their business how the SRAM/Cache regions are utilized, so don't prevent them from being able to load into them. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: fix silent crash when no uClinux MTD filesystem existsRobin Getz2009-07-16
| | | | | | | | | | | | | | | | | | | | | | | | | | Since we need to relocate the attached filesystem with the uClinux MTD map (to handle some anomalies), we need to know its real filesize. If we boot a kernel without a filesystem actually attached, we end up blindly reading and copying garbage (since there is no magic value to detect validity). Often times this results in an early crash and no output. So add a few basic sanity checks before operating on things to catch the majority of cases. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: restore exception banner when dumping crash infoMike Frysinger2009-07-16
| | | | | | | | | | | | | | Previous unification code put the exception banner behind the "is oops" logic when it should have been printed all the time. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: work around anomaly 05000281Robin Getz2009-07-16
| | | | | | | | | | | | | | | | | | | | | | | | Add missing anomaly workaround for anomaly 05000281 - we can't return to instructions which cause hardware errors otherwise we trigger the error again which means we go into an infinite loop of handling, returning, and retriggering. This work around confuses gdb when the error occurs as the PC will seemed to have moved, so a better long term fix will need to be figured out, but for now this is better than an infinite crash loop. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * Blackfin: drop dead flash_probe callMike Frysinger2009-07-16
| | | | | | | | | | | | | | | | | | There are no CONFIG_{BLK,CHR}_DEV_FLASH Kconfig options, and there is no flash_probe() function, so not really sure what this code is all about. Seems to be dead code that stretches way back to the start of the Blackfin port. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
| * headers: smp_lock.h reduxAlexey Dobriyan2009-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | * Remove smp_lock.h from files which don't need it (including some headers!) * Add smp_lock.h to files which do need it * Make smp_lock.h include conditional in hardirq.h It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPT This will make hardirq.h inclusion cheaper for every PREEMPT=n config (which includes allmodconfig/allyesconfig, BTW) Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| * Remove multiple KERN_ prefixes from printk formatsJoe Perches2009-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 5fd29d6ccbc98884569d6f3105aeca70858b3e0f ("printk: clean up handling of log-levels and newlines") changed printk semantics. printk lines with multiple KERN_<level> prefixes are no longer emitted as before the patch. <level> is now included in the output on each additional use. Remove all uses of multiple KERN_<level>s in formats. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | linker script: unify usage of discard definitionTejun Heo2009-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Discarded sections in different archs share some commonality but have considerable differences. This led to linker script for each arch implementing its own /DISCARD/ definition, which makes maintaining tedious and adding new entries error-prone. This patch makes all linker scripts to move discard definitions to the end of the linker script and use the common DISCARDS macro. As ld uses the first matching section definition, archs can include default discarded sections by including them earlier in the linker script. ia64 is notable because it first throws away some ia64 specific subsections and then include the rest of the sections into the final image, so those sections must be discarded before the inclusion. defconfig compile tested for x86, x86-64, powerpc, powerpc64, ia64, alpha, sparc, sparc64 and s390. Michal Simek tested microblaze. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Paul Mundt <lethal@linux-sh.org> Acked-by: Mike Frysinger <vapier@gentoo.org> Tested-by: Michal Simek <monstr@monstr.eu> Cc: linux-arch@vger.kernel.org Cc: Michal Simek <monstr@monstr.eu> Cc: microblaze-uclinux@itee.uq.edu.au Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Tony Luck <tony.luck@intel.com>