- Jan 10, 2011
-
-
Graf Yang authored
Since we're breaking apart some inter-header dependencies to avoid more circular loops, move the blackfin_core_id() definition to the func that it is based upon. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
The SMP code needs "asmlinkage" which linkage.h provides. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
Common code expects these to be defined for SMP ports, so add them. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
The BF561 mem_map.h header has the __ASSEMBLY__/CONFIG_SMP checks out of order which leads to build errors for assembly code that happens to include this file. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
This function takes an irq_handler_t function, but the prototype in the header doesn't match the function definition. This is due to the smp headers needing to avoid circular dependencies. So change the function to take a simple pointer. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
The common asm-generic non-atomic bitops.h defines test_bit() for us, but we need to use our own version. So redirect the definition of this func to avoid having to inline the rest of the asm-generic file. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
The cpu maps are defines provided by common linux/cpumask.h, not local variables. So stop exporting them locally and include the right header for their definition. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
The external functions are named __raw_xxx, not arch_xxx, so rename the prototypes to match reality. This fixes some simple build errors in the bfin_ksyms.c code which exports these helpers to modules. Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Sonic Zhang authored
Rather than maintain Kconfig entries where people have to enter raw numbers and hardcode lists of addresses/pins in the driver itself, push it all to platform resources. This lets us simplify the driver, the Kconfig, and gives board porters greater flexibility. In the process, we need to also start supporting the early platform interface. Not a big deal, but it causes the patch to be bigger than a simple resource relocation. All the Blackfin boards already have their resources updated and in place for this change. Signed-off-by:
Sonic Zhang <sonic.zhang@analog.com> Acked-by:
Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Looks like I missed a few new spots when renaming the SICA macros. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
These were only included because of the irq handling of the PLL funcs, and those PLL funcs have been moved out into their own header now. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
The defBF512.h header exists only to include defBF51x_base.h, and it is the only place where defBF51x_base.h is included. So move the contents of the defBF51x_base.h header into the defBF512.h header. Same situation for the other def/cdef pairs. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
The main asm/blackfin.h header will pull in mach/blackfin.h to get all the fun Blackfin defines. So having any of the sub-mach headers trying to include asm/blackfin.h makes no sense -- punt it. The mach/blackfin.h header takes care of including the part-specific def headers which in turn will include any other needed def file. Similarly, it takes care of pulling in the part-specific cdef header. So move this logic out of the blackfin.h when necessary. Further, make sure the cdef headers do not waste time including the def headers again. Since all parts need the common def/cdef headers, move this logic out of the part-specific headers and into the mach/blackfin.h file. Finally, we need to split the BF539 def header since the BF538 does not have MXVR and we don't want to expose those MMRs. So now all parts should have the same behavior: mach/blackfin.h asm/def_LPBlackfin.h part-specific def.h if ! asm asm/cdef_LPBlackfin.h part-specific cdef.h And the sub def/cdef headers only tail into what they need. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
We don't want the BF533 to be different in terms of its MMR headers, so merge the FIO_FLAG helpers back into the normal place. To avoid circular dependencies with headers, turn the inline C funcs into CPP defines. Not like there will be any code size differences. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Since the SMP code paths tend to compile fail a lot, start a SMP defconfig so our nightly build tools will automatically test it. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
We don't want people banging on MMRs directly. As for the ip0x board, it shouldn't need to muck with the CS pin directly as the Blackfin SPI bus master driver takes care of driving this. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
The array of pointers is never written, so constify it. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Use the same naming convention for DMA traffic MMRs (most were legacy anyways) so we can avoid useless ifdef trees. Same goes for MDMA names -- this actually allows us to undo a bunch of ifdef redirects that existed for this purpose alone. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Acked-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
A bunch of arches define reads[bwl]/writes[bwl] helpers for accessing memory mapped registers. Since the Blackfin ones aren't specific to Blackfin code, move them to the common asm-generic/io.h for people. Acked-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Mike Frysinger authored
Each Blackfin port has been duplicating UART structures and defines when there really is no need for it. So start a new bfin_serial.h header to unify all these pieces and give ourselves a fresh start. Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Bob Liu authored
In order to not touch the driver file for different xtal usage, push the clkin value to board file and calculate the register value instead of hardcoding it. Signed-off-by:
Bob Liu <lliubbo@gmail.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
Graf Yang authored
Signed-off-by:
Graf Yang <graf.yang@analog.com> Signed-off-by:
Mike Frysinger <vapier@gentoo.org>
-
- Jan 07, 2011
-
-
Nicholas Piggin authored
The problem that this patch aims to fix is vfsmount refcounting scalability. We need to take a reference on the vfsmount for every successful path lookup, which often go to the same mount point. The fundamental difficulty is that a "simple" reference count can never be made scalable, because any time a reference is dropped, we must check whether that was the last reference. To do that requires communication with all other CPUs that may have taken a reference count. We can make refcounts more scalable in a couple of ways, involving keeping distributed counters, and checking for the global-zero condition less frequently. - check the global sum once every interval (this will delay zero detection for some interval, so it's probably a showstopper for vfsmounts). - keep a local count and only taking the global sum when local reaches 0 (this is difficult for vfsmounts, because we can't hold preempt off for the life of a reference, so a counter would need to be per-thread or tied strongly to a particular CPU which requires more locking). - keep a local difference of increments and decrements, which allows us to sum the total difference and hence find the refcount when summing all CPUs. Then, keep a single integer "long" refcount for slow and long lasting references, and only take the global sum of local counters when the long refcount is 0. This last scheme is what I implemented here. Attached mounts and process root and working directory references are "long" references, and everything else is a short reference. This allows scalable vfsmount references during path walking over mounted subtrees and unattached (lazy umounted) mounts with processes still running in them. This results in one fewer atomic op in the fastpath: mntget is now just a per-CPU inc, rather than an atomic inc; and mntput just requires a spinlock and non-atomic decrement in the common case. However code is otherwise bigger and heavier, so single threaded performance is basically a wash. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
Reduce some branches and memory accesses in dcache lookup by adding dentry flags to indicate common d_ops are set, rather than having to check them. This saves a pointer memory access (dentry->d_op) in common path lookup situations, and saves another pointer load and branch in cases where we have d_op but not the particular operation. Patched with: git grep -E '[.>]([[:space:]])*d_op([[:space:]])*=' | xargs sed -e 's/\([^\t ]*\)->d_op = \(.*\);/d_set_d_op(\1, \2);/' -e 's/\([^\t ]*\)\.d_op = \(.*\);/d_set_d_op(\&\1, \2);/' -i Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
RCU free the struct inode. This will allow: - Subsequent store-free path walking patch. The inode must be consulted for permissions when walking, so an RCU inode reference is a must. - sb_inode_list_lock to be moved inside i_lock because sb list walkers who want to take i_lock no longer need to take sb_inode_list_lock to walk the list in the first place. This will simplify and optimize locking. - Could remove some nested trylock loops in dcache code - Could potentially simplify things a bit in VM land. Do not need to take the page lock to follow page->mapping. The downsides of this is the performance cost of using RCU. In a simple creat/unlink microbenchmark, performance drops by about 10% due to inability to reuse cache-hot slab objects. As iterations increase and RCU freeing starts kicking over, this increases to about 20%. In cases where inode lifetimes are longer (ie. many inodes may be allocated during the average life span of a single inode), a lot of this cache reuse is not applicable, so the regression caused by this patch is smaller. The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU, however this adds some complexity to list walking and store-free path walking, so I prefer to implement this at a later date, if it is shown to be a win in real situations. I haven't found a regression in any non-micro benchmark so I doubt it will be a problem. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
dget_locked was a shortcut to avoid the lazy lru manipulation when we already held dcache_lock (lru manipulation was relatively cheap at that point). However, how that the lru lock is an innermost one, we never hold it at any caller, so the lock cost can now be avoided. We already have well working lazy dcache LRU, so it should be fine to defer LRU manipulations to scan time. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
dcache_lock no longer protects anything. remove it. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
Protect d_unhashed(dentry) condition with d_lock. This means keeping DCACHE_UNHASHED bit in synch with hash manipulations. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
Make d_count non-atomic and protect it with d_lock. This allows us to ensure a 0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when we start protecting many other dentry members with d_lock. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Nicholas Piggin authored
Change d_delete from a dentry deletion notification to a dentry caching advise, more like ->drop_inode. Require it to be constant and idempotent, and not take d_lock. This is how all existing filesystems use the callback anyway. This makes fine grained dentry locking of dput and dentry lru scanning much simpler. Signed-off-by:
Nick Piggin <npiggin@kernel.dk>
-
Paul Mundt authored
There have likewise been some API updates, so we refactor to use the consolidated smp_prepare_cpus(). Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-
Paul Mundt authored
This fixes up the SMP support to use the refactored GIC APIs. Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-
Paul Mundt authored
Use the new linux/clkdev.h to get it building again. Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-
Magnus Damm authored
Remove now unused IRQ demux code. All R-Mobile and SH-Mobile processors should register IRQ demux handlers during run-time. Signed-off-by:
Magnus Damm <damm@opensource.se> Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-
Magnus Damm authored
Break-out GIC specific IRQ demux code from the file entry-macro-intc.S and register during run-time. Covers sh73a0. Signed-off-by:
Magnus Damm <damm@opensource.se> Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-
Magnus Damm authored
Break-out INTC specific IRQ demux code from the file entry-macro-intc.S and register during run-time. Covers sh7367, sh7377 and sh7372. Signed-off-by:
Magnus Damm <damm@opensource.se> Signed-off-by:
Paul Mundt <lethal@linux-sh.org>
-