summaryrefslogtreecommitdiffstats
path: root/sys/arm
Commit message (Collapse)AuthorAgeFilesLines
* Don't set PG_WRITEABLE in pmap_enter() unless the page is managed.alc2010-06-051-1/+2
| | | | Correct a typo in a nearby comment on sparc64.
* In pmap_enter_locked(), don't require the vector page to be VPO_BUSY.alc2010-06-011-3/+4
|
* Push down page queues lock acquisition in pmap_enter_object() andalc2010-05-261-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pmap_is_referenced(). Eliminate the corresponding page queues lock acquisitions from vm_map_pmap_enter() and mincore(), respectively. In mincore(), this allows some additional cases to complete without ever acquiring the page queues lock. Assert that the page is managed in pmap_is_referenced(). On powerpc/aim, push down the page queues lock acquisition from moea*_is_modified() and moea*_is_referenced() into moea*_query_bit(). Again, this will allow some additional cases to complete without ever acquiring the page queues lock. Reorder a few statements in vm_page_dontneed() so that a race can't lead to an old reference persisting. This scenario is described in detail by a comment. Correct a spelling error in vm_page_dontneed(). Assert that the object is locked in vm_page_clear_dirty(), and restrict the page queues lock assertion to just those cases in which the page is currently writeable. Add object locking to vnode_pager_generic_putpages(). This was the one and only place where vm_page_clear_dirty() was being called without the object being locked. Eliminate an unnecessary vm_page_lock() around vnode_pager_setsize()'s call to vm_page_clear_dirty(). Change vnode_pager_generic_putpages() to the modern-style of function definition. Also, change the name of one of the parameters to follow virtual memory system naming conventions. Reviewed by: kib
* Initial loader(8) support for Flattened Device Tree.raj2010-05-251-0/+1
| | | | | | | | | | o This is disabled by default for now, and can be enabled using WITH_FDT at build time. o Tested with ARM and PowerPC. Reviewed by: imp Sponsored by: The FreeBSD Foundation
* Roughly half of a typical pmap_mincore() implementation is machine-alc2010-05-241-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | independent code. Move this code into mincore(), and eliminate the page queues lock from pmap_mincore(). Push down the page queues lock into pmap_clear_modify(), pmap_clear_reference(), and pmap_is_modified(). Assert that these functions are never passed an unmanaged page. Eliminate an inaccurate comment from powerpc/powerpc/mmu_if.m: Contrary to what the comment says, pmap_mincore() is not simply an optimization. Without a complete pmap_mincore() implementation, mincore() cannot return either MINCORE_MODIFIED or MINCORE_REFERENCED because only the pmap can provide this information. Eliminate the page queues lock from vfs_setdirty_locked_object(), vm_pageout_clean(), vm_object_page_collect_flush(), and vm_object_page_clean(). Generally speaking, these are all accesses to the page's dirty field, which are synchronized by the containing vm object's lock. Reduce the scope of the page queues lock in vm_object_madvise() and vm_page_dontneed(). Reviewed by: kib (an earlier version)
* Reorganize syscall entry and leave handling.kib2010-05-232-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend struct sysvec with three new elements: sv_fetch_syscall_args - the method to fetch syscall arguments from usermode into struct syscall_args. The structure is machine-depended (this might be reconsidered after all architectures are converted). sv_set_syscall_retval - the method to set a return value for usermode from the syscall. It is a generalization of cpu_set_syscall_retval(9) to allow ABIs to override the way to set a return value. sv_syscallnames - the table of syscall names. Use sv_set_syscall_retval in kern_sigsuspend() instead of hardcoding the call to cpu_set_syscall_retval(). The new functions syscallenter(9) and syscallret(9) are provided that use sv_*syscall* pointers and contain the common repeated code from the syscall() implementations for the architecture-specific syscall trap handlers. Syscallenter() fetches arguments, calls syscall implementation from ABI sysent table, and set up return frame. The end of syscall bookkeeping is done by syscallret(). Take advantage of single place for MI syscall handling code and implement ptrace_lwpinfo pl_flags PL_FLAG_SCE, PL_FLAG_SCX and PL_FLAG_EXEC. The SCE and SCX flags notify the debugger that the thread is stopped at syscall entry or return point respectively. The EXEC flag augments SCX and notifies debugger that the process address space was changed by one of exec(2)-family syscalls. The i386, amd64, sparc64, sun4v, powerpc and ia64 syscall()s are changed to use syscallenter()/syscallret(). MIPS and arm are not converted and use the mostly unchanged syscall() implementation. Reviewed by: jhb, marcel, marius, nwhitehorn, stas Tested by: marcel (ia64), marius (sparc64), nwhitehorn (powerpc), stas (mips) MFC after: 1 month
* On entry to pmap_enter(), assert that the page is busy. While I'malc2010-05-161-1/+13
| | | | | | | | | | | | | | | | | | | | here, make the style of assertion used by pmap_enter() consistent across all architectures. On entry to pmap_remove_write(), assert that the page is neither unmanaged nor fictitious, since we cannot remove write access to either kind of page. With the push down of the page queues lock, pmap_remove_write() cannot condition its behavior on the state of the PG_WRITEABLE flag if the page is busy. Assert that the object containing the page is locked. This allows us to know that the page will neither become busy nor will PG_WRITEABLE be set on it while pmap_remove_write() is running. Correct a long-standing bug in vm_page_cowsetup(). We cannot possibly do copy-on-write-based zero-copy transmit on unmanaged or fictitious pages, so don't even try. Previously, the call to pmap_remove_write() would have failed silently.
* Catchup with new prototype for db_printf().cognet2010-05-141-1/+1
|
* The FA526 belongs to the ARM9TDMI familykevlo2010-05-122-3/+1
|
* Push down the page queues into vm_page_cache(), vm_page_try_to_cache(), andalc2010-05-081-12/+12
| | | | | | | | | | | vm_page_try_to_free(). Consequently, push down the page queues lock into pmap_enter_quick(), pmap_page_wired_mapped(), pmap_remove_all(), and pmap_remove_write(). Push down the page queues lock into Xen's pmap_page_is_mapped(). (I overlooked the Xen pmap in r207702.) Switch to a per-processor counter for the total number of pages cached.
* Add support for FA626TE.kevlo2010-05-046-61/+66
| | | | Tested on GM8181 development board.
* Add new tunable 'net.link.ifqmaxlen' to set default send interfacesobomax2010-05-032-3/+3
| | | | | | | | | | queue length. The default value for this parameter is 50, which is quite low for many of today's uses and the only way to modify this parameter right now is to edit if_var.h file. Also add read-only sysctl with the same name, so that it's possible to retrieve the current value. MFC after: 1 month
* Import mvs(4) - Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA controllersmav2010-05-021-0/+1
| | | | | | driver for CAM ATA subsystem. This driver supports same hardware as atamarvell, ataadaptec and atamvsata drivers from ata(4), but provides many additional features, such as NCQ, PMP, etc.
* On Alan's advice, rather than do a wholesale conversion on a singlekmacy2010-04-302-5/+10
| | | | | | | | | | | | architecture from page queue lock to a hashed array of page locks (based on a patch by Jeff Roberson), I've implemented page lock support in the MI code and have only moved vm_page's hold_count out from under page queue mutex to page lock. This changes pmap_extract_and_hold on all pmaps. Supported by: Bitgravity Inc. Discussed with: alc, jeffr, and kib
* Style: use #define<TAB> instead of #define<SPACE>.kib2010-04-271-1/+1
| | | | | Noted by: bde, pluknet gmail com MFC after: 11 days
* Resurrect pmap_is_referenced() and use it in mincore(). Essentially,alc2010-04-241-0/+14
| | | | | | | | | | | | | | | | | pmap_ts_referenced() is not always appropriate for checking whether or not pages have been referenced because it clears any reference bits that it encounters. For example, in mincore(), clearing the reference bits has two negative consequences. First, it throws off the activity count calculations performed by the page daemon. Specifically, a page on which mincore() has called pmap_ts_referenced() looks less active to the page daemon than it should. Consequently, the page could be deactivated prematurely by the page daemon. Arguably, this problem could be fixed by having mincore() duplicate the activity count calculation on the page. However, there is a second problem for which that is not a solution. In order to clear a reference on a 4KB page, it may be necessary to demote a 2/4MB page mapping. Thus, a mincore() by one process can have the side effect of demoting a superpage mapping within another process!
* Move the constants specifying the size of struct kinfo_proc intokib2010-04-241-0/+2
| | | | | | | | | | machine-specific header files. Add KINFO_PROC32_SIZE for struct kinfo_proc32 for architectures providing COMPAT_FREEBSD32. Add CTASSERT for the size of struct kinfo_proc32. Submitted by: pluknet Reviewed by: imp, jhb, nwhitehorn MFC after: 2 weeks
* Change USB_DEBUG to #ifdef and allow it to be turned off. Previously this hadthompsa2010-04-227-0/+7
| | | | | | the illusion of a tunable setting but was always turned on regardless. MFC after: 1 week
* Add BUS_SPACE_UNRESTRICTED and define it to be ~0, just like all theimp2010-04-081-0/+2
| | | | other platforms.
* Oops! Wrong copy-paste in r206053.mav2010-04-011-1/+1
|
* Fill extended ATA command registers in cPRD to support 48bit commands.mav2010-04-011-0/+5
|
* Build modules for this config to make sure they stay buildable...imp2010-03-291-1/+1
|
* Pass the correct pointer to fled_cb().rpaulo2010-03-261-1/+1
|
* Change the arguments of exec_setregs() so that it receives a pointernwhitehorn2010-03-251-3/+3
| | | | | | | | to the image_params struct instead of several members of that struct individually. This makes it easier to expand its arguments in the future without touching all platforms. Reviewed by: jhb
* Make sure we insert and remove the PV entries related to unmanaged kernelcognet2010-03-211-3/+5
| | | | | mappings into the kernel pmap, not into the pmap related to the pmap_enter_pv()/pmap_remove_pv() call.
* Add support for the Samsung S3C2xx0 family of ARM SoCs written byimp2010-03-2021-0/+3664
| | | | | | | | Andrew Turner. The kernel supports the LN2410SBC evaluation board, and likely others. These parts (or similar ones) are in some open hardware designs for phones. Submitted by: Andrew Turner
* fix type in commentticso2010-03-121-1/+1
|
* Fix ARM cache handling yet more.raj2010-03-112-2/+9
| | | | | | | | | | | | 1) vm_machdep.c: remove the dangling allocations so they do not un-necessarily turn off the cache upon consecutive access. 2) busdma_machdep.c: remove the same amount than shadow mapped. Reported by: Maks Verver Submitted by: Mark Tinguely Reviewed by: Grzegorz Bernacki MFC after: 3 days
* Let detailed info about CPU features print on Marvell Sheeva CPU as well.raj2010-03-111-0/+2
| | | | | | | Provide missing entry in the cpu_classes[]. Reported by: Maks Verver MFC after: 1 week
* Provide correct TCLK value for Kirkwood A1 silicon revision.raj2010-03-052-2/+4
| | | | | | | While there improve SOC ID output accordingly. Obtained from: Semihalf MFC after: 1 week
* simplify hash calculationticso2010-02-281-5/+1
|
* remove debug leftoverticso2010-02-281-1/+0
|
* Fix multicast hashes.ticso2010-02-281-2/+17
| | | | Atmel uses a simple xor hash instead of the typical crc based one.
* Do not force verbose and single mode in non-metadata boot case.raj2010-02-241-2/+1
| | | | We want to go multi-user by default also in case of booting without loader(8).
* Update the commented out option for omitting the sysctl descriptions; itbrucec2010-02-243-3/+3
| | | | | | was committed as NO_SYSCTL_DESCR. Approved by: rrs (mentor)
* Fix previous commit: led_func() doesn't exist, it should be fled_cb().rpaulo2010-02-221-1/+1
| | | | Pointed out by: bz
* Show the cpu info for fa526kevlo2010-02-203-1/+7
| | | | Submitted by: Yohanes Nugroho <yohanes at gmail dot com>
* Correct both FA526/FA626TE cpu ids since the cpu id is alwayskevlo2010-02-201-2/+2
| | | | masked with 0xfffffff0
* The NetBSD Foundation has granted permission to remove clauses 3 and 4.imp2010-02-1616-112/+0
| | | | Obtained from: NetBSD
* Adjust style (following the already existing rules) for the newlyattilio2010-02-1514-14/+14
| | | | | | introduced option DEADLKRES. Reported by: danfe, julian, avg
* Correct cpu id for FA526.kevlo2010-02-141-1/+2
| | | | While I'm here, add cpu id for FA626TE.
* Add the options DEADLKRES (introducing the deadlock resolver thread) inattilio2010-02-1016-0/+16
| | | | | | | | | | the 'debugging' section of any HEAD kernel and enable for the mainstream ones, excluding the embedded architectures. It may, of course, enabled on a case-by-case basis. Sponsored by: Sandvine Incorporated Requested by: emaste Discussed with: kib
* Turn on the front LED at boot time like we do with the Avila.rpaulo2010-02-101-0/+2
|
* Improve checking whether an ARM VA has a valid mapping before performing cacheraj2010-02-071-74/+42
| | | | | | | | | | | | | | | | | | | | sync. VIPT/PIPT caches need valid VA-PA mapping in PTE for a cache operation to succeed (unlike VIVT). Prior to this fix pmap was using l2pte_valid() for that check, but this is not sufficient as the function merely checks if a PTE exists (there can be existing but _invalid_ entries in the table). A new pmap_has_valid_mapping() routine is introduced to do this job right by checking proper PTE flags. Among other potential problems this cures coherency issues with L2 caches on MV-78100. Submitted by: Grzegorz Bernacki, Piotr Ziecik Reviewed, tested by: marcel Obtained from: Semihalf MFC after: 1 week
* When backtracing self, start with the current frame (i.e. themarcel2010-01-291-1/+1
| | | | | | frame of db_trace_self()) and not the caller's frame. The use of builtin_frame_address(1) to get the caller's frame is not reliable and can cause panics.
* Move the examples for the 'hints' and 'env' keywords from various GENERICjhb2010-01-196-12/+0
| | | | | | kernel configs into NOTES. Reviewed by: imp
* Do not free the dmamap if it is still busy.cognet2010-01-151-1/+1
| | | | | Submitted by: Mark Tinguely MFC after: 3 days
* Revert 200594. This file isn't intended for these sorts of things.imp2010-01-041-7/+0
|
* Remove CNS11XXNAS.hints.rpaulo2010-01-042-3/+0
|
* Add support for Cavium Econa CNS11XX ARM boards. These boards wererpaulo2010-01-0422-3/+5368
| | | | | | | | | | previously know by StarSemi STR9104. Tested by the submitter on an Emprex NSD-100 board. Submitted by: Yohanes Nugroho <yohanes at gmail.com> Reviewed by: freebsd-arm, stas Obtained from: //depot/projects/str91xx/...
OpenPOWER on IntegriCloud