Commit Graph

459 Commits

Author SHA1 Message Date
Konstantin Belousov
edc8222303 Make kstack_pages a tunable on arm, x86, and powepc. On i386, the
initial thread stack is not adjusted by the tunable, the stack is
allocated too early to get access to the kernel environment. See
TD0_KSTACK_PAGES for the thread0 stack sizing on i386.

The tunable was tested on x86 only.  From the visual inspection, it
seems that it might work on arm and powerpc.  The arm
USPACE_SVC_STACK_TOP and powerpc USPACE macros seems to be already
incorrect for the threads with non-default kstack size.  I only
changed the macros to use variable instead of constant, since I cannot
test.

On arm64, mips and sparc64, some static data structures are sized by
KSTACK_PAGES, so the tunable is disabled.

Sponsored by:	The FreeBSD Foundation
MFC after:	2 week
2015-08-10 17:18:21 +00:00
Zbigniew Bodek
721555e7ee Fix KSTACK_PAGES issue when the default value was changed in KERNCONF
If KSTACK_PAGES was changed to anything alse than the default,
the value from param.h was taken instead in some places and
the value from KENRCONF in some others. This resulted in
inconsistency which caused corruption in SMP envorinment.

Ensure all places where KSTACK_PAGES are used the opt_kstack_pages.h
is included.

The file opt_kstack_pages.h could not be included in param.h
because was breaking the toolchain compilation.

Reviewed by:   kib
Obtained from: Semihalf
Sponsored by:  The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3094
2015-07-16 10:46:52 +00:00
Warner Losh
c0b346c47d Need to handle the !FDT case still too... I thought in r270025 we
wouldn't need it, but it appears that we still do for the moment...
2015-05-22 05:02:53 +00:00
Andrew Turner
610373a6f7 Include machine/intr.h for arm_post_filter. 2015-04-04 23:00:37 +00:00
Andrew Turner
0ebebb1260 Build the cpufunc_asm_* files based on the cpu type, not which config file
we happen to be building.
2015-03-29 22:43:39 +00:00
Andrew Turner
9a25f3e847 Remove the bootconfig parsing. We never used it and always passed either an
empty string or NULL to the setup functions that called into it.
2015-03-29 20:37:28 +00:00
Ian Lepore
3bb693af87 Move the uart_class definitions and fdt compat data into the individual
uart implementations, and export them using the new linker-set mechanism.

Differential Revision:	https://reviews.freebsd.org/D1993
Submitted by:	Michal Meloun
2015-03-07 15:24:15 +00:00
Ian Lepore
05ca38474e Use explicit initializer style, fill in missing functions. 2015-01-21 03:28:07 +00:00
Ian Lepore
110e70ba1d For some reason, all the arm bus_space functions that work with uint16
values have armv4 in the name.  There's nothing armv4-special about them,
so just use the same sort of names as all the other functions.
2015-01-21 02:56:13 +00:00
Ian Lepore
4098ccafa4 Revise the arm bus_space implementation to avoid dereferencing the tag on
every operation to retrieve the bs_cookie value almost nothing actually uses.

The bus_space struct contains a private data pointer (poorly named bs_cookie,
now renamed to bs_privdata) which is used only by a few old armv4 xscale
implementations.  The bus_space functions were all defined to take this
value as the first parameter instead of the bus_space_tag_t, requiring all
the inline macro and function expansions to dereference the tag to pass it
to another function, which never uses it.  Now all the functions take the tag
as the first parameter and retrieve the privdata if they need it.

Also fix a couple bus_space_unmap() implementations that were calling
kva_free() instead of pmap_unmapdev().

Discussed with:	   cognet
2015-01-21 01:06:08 +00:00
Ian Lepore
f55abc7e4b Eliminate a redundant declaration. 2014-12-21 21:23:53 +00:00
Ian Lepore
81d54b79fc Remove the ARM_DEVICE_MULTIPASS option and make its effect be the default.
Multipass device attachment was tested on many arm platforms by users and
only success was reported on the arm@ mailing list.  This is just the
long-delayed followup of making it the default.

Multipass attachment is necessary when using vendor-supplied FDT data,
because our devices may need to be attached in a different order than they
are described in the FDT data.
2014-10-26 18:30:35 +00:00
Kevin Lo
b50afa88b0 Fix the definitioin of AT91SAM9G45_IRQ_PIOE and rename it to
AT91SAM9G45_IRQ_PIODE.  According to the data sheet, both PIOD and PIOE
use the same IRQ.

While here remove duplicate definitions.
2014-09-27 14:39:00 +00:00
Kevin Lo
ce71bdcad4 Remove a bogus AIC.
Reviewed by:	imp
2014-09-27 02:15:45 +00:00
Kevin Lo
bec21f7149 Fix the size of AT91SAM9260_PIT_SIZE. 2014-09-26 09:08:09 +00:00
Kevin Lo
d9197e6f81 Fix typos. 2014-09-26 09:07:02 +00:00
Gleb Smirnoff
6625a48525 Mechanically convert to if_inc_counter(). 2014-09-19 09:20:16 +00:00
Ian Lepore
d6c7df9860 Convert the at91_pinctrl driver to use the new fdt_pinctrl interface. 2014-09-13 19:59:16 +00:00
Andrew Turner
b8fd1e31d9 Unify interrupts bit definition and usage. While here remove PSR_C_bit.
Submitted by:	Svatopluk Kraus <onwahe at gmail.com>,
		Michal Meloun <meloun at miracle.cz>
Differential Revision: https://reviews.freebsd.org/D754
2014-09-10 15:25:15 +00:00
Warner Losh
3da47f7cad Wrap some long lines. 2014-09-04 16:40:54 +00:00
Ian Lepore
752ba93078 Rename OF_xref_phandle() to OF_node_from_xref() and add a new function
that provides the inverse translation, OF_xref_from_node().

Discussed with:	nwhitehorn
2014-09-01 18:51:01 +00:00
Warner Losh
ef9bab8ec8 Make note about reset vs RTOE actions... 2014-08-18 21:04:35 +00:00
Bjoern A. Zeeb
e6b802649c Remove keyboard entropy [1] from r270105.
Reported by:		ian [1]
(Pointy hat)^2 to:	imp
2014-08-17 18:27:02 +00:00
Warner Losh
71db9bfe7d Add missing license to at91_common.c. It was committed w/o a license.
Pointy hat to: imp@
2014-08-17 16:53:19 +00:00
Warner Losh
7945ebfd6c Define at91_master_clock in only one file to eliminate warnings about
it multiply defined commons.
2014-08-17 16:53:14 +00:00
Ian Lepore
93f6c1b54f Rename the old initarm_* functions to the new platform_* names. Also
move the registration of the static device map table into the function
intended to do devmap init stuff.
2014-08-17 02:53:36 +00:00
Warner Losh
d90e30ba36 Implement the FDT static pinctl/pinmux spec for Atmel. This will
configure the mux and config registers for PIO devices based on what
we find in the FDT. I developed it per the spec that had been
committed to Linux in the January 2014 time frame and haven't
updated. In short, bundles of pins are activated in specific ways for
specific configurations, and we implement all of that.

What's not included is a MI device infrastructure, any dynamic
run-time changing of these pins, etc. Also not included are hooks into
all the drivers to enable the latter (static at boot no driver changes
are needed). These larger questions will need to be answered once we
have more drivers like this for more platforms, or somebody has a heck
of a lot of time to research a bunch of platforms, the Linux solution
(which is good, but has its warts), etc.
2014-08-15 16:08:52 +00:00
Warner Losh
6e8f9f5113 Print the symbolic bit names for the status when we get a timeout. 2014-08-14 23:17:33 +00:00
Warner Losh
9fedbe51c6 Add AIC to at91sam9260 support, now that it is needed for multipass to
work. This gets my AT91SAM9260-based boards almost booting with
current in multi pass. The MCI driver is broken, but it is equally
broken before multi-pass.
2014-08-14 04:21:31 +00:00
Warner Losh
9a6e86e109 Add support for multipass to Atmel, for both FDT and !FDT cases. 2014-08-14 04:21:25 +00:00
Warner Losh
66f2388712 Start to add FDT support. 2014-08-14 04:21:20 +00:00
Warner Losh
280cfc8438 Add support for FDT and !FDT configs on Atmel, though FDT isn't
working yet.
Bump rev on arm Makefile since files.at91 uses new '!' operator.
2014-08-14 04:21:14 +00:00
John Baldwin
a2677ff239 Don't bother clearing maps for static DMA allocations to NULL. Instead,
leave them as purely opaque values that are only set by bus_dmamem_alloc().
2014-06-17 18:10:06 +00:00
John Baldwin
068d8643ad Fix various NIC drivers to properly cleanup static DMA resources.
In particular, don't check the value of the bus_dma map against NULL
to determine if either bus_dmamem_alloc() or bus_dmamap_load() succeeded.
Instead, assume that bus_dmamap_load() succeeeded (and thus that
bus_dmamap_unload() should be called) if the bus address for a resource
is non-zero, and assume that bus_dmamem_alloc() succeeded (and thus
that bus_dmamem_free() should be called) if the virtual address for a
resource is not NULL.

In many cases these bugs could result in leaks when a driver was detached.

Reviewed by:	yongari
MFC after:	2 weeks
2014-06-11 14:53:58 +00:00
Kevin Lo
6ed1354934 Remove extra semicolons. 2014-06-06 16:37:42 +00:00
Ian Lepore
b8821f8415 When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE.
On armv4 these are defined as synonyms right now, but it's a bit ambiguous
what NOCACHE means (is buffering/write-combining also enabled or not?); this
is a first step towards replacing PTE_NOCACHE with a less ambiguous name.
2014-05-10 20:03:03 +00:00
Ian Lepore
5e4e1d4995 Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c
and the functionality it provided into arm/exception.S.  Rename the main
irq handling routine from arm_handler_execute() to arm_irq_handler() to
make it more congruent with how other exception handlers are named, and
also update its signature to reflect what has long been reality: it is
passed just a trapframe pointer, no interrupt number argument.
2014-03-10 18:10:09 +00:00
Ian Lepore
510ccb2fd4 The arm exception entry points currently vector through a function pointer
to the actual handler routine.  All the pointers are static-intialized to
the only handlers available, and yet various platform-specific inits still
set those pointers (to the values they're already initialized to).  Begin
to drain the swamp by removing all the redundant external declarations and
runtime setting of the pointers that's scattered around various places.
2014-03-09 18:08:27 +00:00
Warner Losh
9d6f987b13 Remove bogus define that causes compile errors. Most of the defines
for SAM9X are going away soonish anyway (once FDT works), but until
then...
2014-03-09 02:28:30 +00:00
Warner Losh
49fa38e888 Move AIC related stuff to own file. 2014-03-08 06:06:50 +00:00
Warner Losh
ebb61891fb Properly round on unmapping. 2014-03-08 06:06:42 +00:00
Warner Losh
1dd7152066 Make at91_soc_id() public. 2014-03-08 05:03:56 +00:00
Warner Losh
4b3c970b83 tcb device for fdt 2014-02-28 03:00:28 +00:00
Warner Losh
1341ea85f2 shdwc device for fdt 2014-02-28 03:00:25 +00:00
Warner Losh
089fd56d90 Add device node for SDRAMC device. Currently just claims device's
resources.
2014-02-28 02:59:51 +00:00
Warner Losh
b331ba445e Style(9) nit: Use tab here. 2014-02-27 08:19:19 +00:00
Warner Losh
fd420f84dd Honor the disabled status by only grabbing resources and returning
when running under FDT.
2014-02-13 16:50:08 +00:00
Warner Losh
88bc24ff35 Fix board ID too... 2014-02-13 15:47:41 +00:00
Warner Losh
2956b2b069 Fix board name. 2014-02-13 15:46:08 +00:00
Ian Lepore
42c8459bed Rework the EARLY_PRINTF mechanism. Instead of defining a special eprintf()
routine, now a platform can provide a pointer to an early_putc() routine
which is used instead of cn_putc().  Control can be handed off from early
printf support to standard console support by NULLing out the pointer
during standard console init.

This leverages all the existing error reporting that uses printf calls,
such as panic() which can now be usefully employed even in early
platform init code (useful at least to those who maintain that code and
build kernels with EARLY_PRINTF defined).

Reviewed by:	imp, eadler
2014-02-12 00:53:38 +00:00