History log of /freebsd-10-stable/sys/arm/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
343505 27-Jan-2019 marius

MFC: r342634 (partial)

o Don't allocate resources for SDMA in sdhci(4) if the controller or the
front-end doesn't support SDMA or the latter implements a platform-
specific transfer method instead. While at it, factor out allocation
and freeing of SDMA resources to sdhci_dma_{alloc,free}() in order to
keep the code more readable when adding support for ADMA variants.

o Base the size of the SDMA bounce buffer on MAXPHYS up to the maximum
of 512 KiB instead of using a fixed 4-KiB-buffer. With the default
MAXPHYS of 128 KiB and depending on the controller and medium, this
reduces the number of SDHCI interrupts by a factor of ~16 to ~32 on
sequential reads while an increase of throughput of up to ~84 % was
seen.

Front-ends for broken controllers that only support an SDMA buffer
boundary of a specific size may set SDHCI_QUIRK_BROKEN_SDMA_BOUNDARY
and supply a size via struct sdhci_slot. According to Linux, only -
unsupported in stable/10 anyway - Qualcomm MSM-type SDHCI controllers
are affected by this, though.

Requested by: Shreyank Amartya (unconditional bump to 512 KiB)

o Introduce a SDHCI_DEPEND macro for specifying the dependency of the
front-end modules on the sdhci(4) one and bump the module version
of sdhci(4) to 2 via an also newly introduced SDHCI_VERSION in order
to ensure that all components are in sync WRT struct sdhci_slot.

o In sdhci(4):
- Make pointers const were applicable, and
- replace a few device_printf(9) calls with slot_printf() for
consistency.

337036 01-Aug-2018 hselasky

MFC r321686 and r330361:
Add inline functions to convert between sbintime_t and decimal time units.
Use them in some existing code that is vulnerable to roundoff errors.

335557 22-Jun-2018 avg

MFC r333667: followup to r332730/r332752: set kdb_why to "trap" for fatal traps

This change updates arm, arm64 and mips achitectures. Additionally, it
removes redundant checks for kdb_active where it already results in
kdb_reenter() and adds kdb_reenter() calls where they were missing.

Some architectures check the return value of kdb_trap(), but some don't.
I haven't changed any of that.

Some trap handling routines have a return code. I am not sure if I
provided correct ones for returns after kdb_reenter(). kdb_reenter
should never return unless kdb_jmpbufp is NULL for some reason.

322724 20-Aug-2017 marius

MFC: r266470, r273546, r276017, r277932, r279153, r279778, r279780, r278797,
r278861, r280283, r280284, r280294, r280452, r280558, r280571, r281863,
r282049, r282357, r282440, r282441, r282358, r282359, r283550, r283918,
r290171, r290667, r290381, r290533, r290666, r292483, r295659, r297545,
r298305, r298383, r298428, r306489, r306557, r307067, r307068, r307087,
r307088, r307089, r307091, r307092, r307093, r307098, r307115, r307154,
r307240, r307241, r315967, r316476

Unbreak BCM2835/RPI-B support by bringing it in line with stable/11 and
head:

- Optimise reading of pending interrupt registers.

- Fix a bug where some DTS layouts could cause the premature ending of the
search (i.e. without returning any result) and you would end up with a
random MAC address.

- Reduce the diff between head and arm_intrng with the bcm2835 interrupt
controller.

- Allow the retrieving of the reserved pins state.

- Add support to the bcm2835 mailbox driver to work before interrupts are
enabled. This will be needed to enable the power on devices early on in the
boot process.

- Add support for enabling the USB on the Raspberry Pi boards when it hasn't
been done by U-Boot. This allows the USB to work when we load the kernel
directly.

- Call config_intrhook_disestablish on failure of the bcm2835 fb and fbd intr
hooks. With this we can get through the boot even if these functions fail.

- Add the structures needed to get/set the power state. These can be used
when, for example, we boot without U-Boot and wish to enable USB, or to
suspend an unneeded device.

- Add a mask to match only the relative base address of BSC controllers.

- Move the code to set the device power to the bcm2835 mailbox driver so it
can be reused by other drivers.

- Add the SOC_BCM2835 and SOC_BCM2836 options for the arm kernel and add the
former to std.bcm2835.

- Add a helper function to read clock frequencies from videocore and use this
to get the default frequency of the sdhci device.

- Add partial support for the Raspberry Pi 2.

- Remove a debug #error from the bcm2835 sdhci driver.

- Fetch the SDHCI frequency from videocore (our prefered source) and only if
it fails, fetch the clock-frequency from DTB. If both methods fail, use the
hardcoded default.

- Pass the supplied buffer length instead of a fixed size.

- Add the routines to query and setup the framebuffer state using the
BCM2835_MBOX_CHAN_PROP channel. The old channel (BCM2835_MBOX_CHAN_FB)
seems deprecated on recent firmware versions and is causing a freeze on
RPi 2.

- Fix DMA on RPi 2. BCM2836 has a different base address for peripherals.

- Enable DMA for sdhci on RPi 2 (BCM2836).

- Add a missing wakeup when releasing ownership of the SPI hardware.

- Fix framebuffer compatibility with new RPi firmware.

- Refactor bcm2835_cpufreq to use bcm2835_mbox_property API.

- Fix the sc(4) framebuffer driver on RPi 2.

- Fix the vt(4) framebuffer driver on RPi 2.

- Remove unused mutex and softc variables.

- Refactor mailbox property API to make it usable for /dev/vcio driver.

- Replace semaphore-base locking with sleep/wait synchronization.

- Fix infinite loop if response from VideoCore never received.

- Set have_message in interrupt to handle "response before READ" case.

- Serialize access to property channel when using bcm2835_mbox_property.

- Force framebuffer virtual viewport to be the same as physical.

- Use proper type of tag in bcm2835_mbox_fb_init.

- bcm2835_cpufreq: Only attach driver if we correcly match on the machine
compatible string.

- Add dev.fb.X.resync sysctl to resync ARM framebuffer with VideoCore.

- Do not use DMA channels used by GPU.

- Define local-intc for BCM2836 platform (RPI2) and make BCM2835 intc
a child of it.

- Fix build for Pi kernels with syscons enabled.

- Use VM_MEMATTR_WRITE_COMBINING memattr for mmap(2) on framebuffer.

- Make intc driver compatible with upstream DTS.

- Make Rapsberry Pi watchdog driver compatible with upstream DTS.

- Make sure intc is attached before interrupt consumers.

- Make framebuffer driver compatible with upstream DT.

- Add one more heuristic to determine MAC address of the SMSC device.

- Add compatibility strings from upstream DT.

- Fix spelling mistake, BCM2835_PASWORD -> BCM2835_PASSWORD.

Approved by: re (kib)

321946 02-Aug-2017 marius

Apply the other half of merges to sdhci_imx(4) and sdhci_fsl(4) that
somehow stayed local when committing r318198, probably due to the
associated tree conflicts.

While at it, register the dependency of sdhci_fsl(4) on sdhci(4) and
allow the former to be built.

318977 27-May-2017 hselasky

MFC r318353:
Avoid use of contiguous memory allocations in busdma when possible.

This patch improves the boundary checks in busdma to allow more cases
using the regular page based kernel memory allocator. Especially in
the case of having a non-zero boundary in the parent DMA tag. For
example AMD64 based platforms set the PCI DMA tag boundary to
PCI_DMA_BOUNDARY, 4GB, which before this patch caused contiguous
memory allocations to be preferred when allocating more than PAGE_SIZE
bytes. Even if the required alignment was less than PAGE_SIZE bytes.

This patch also fixes the nsegments check for using kmem_alloc_attr()
when the maximum segment size is less than PAGE_SIZE bytes.

Updated some comments describing the code in question.

Differential Revision: https://reviews.freebsd.org/D10645
Reviewed by: kib, jhb, gallatin, scottl
Sponsored by: Mellanox Technologies

318198 11-May-2017 marius

MFC: r292180 (partial), r297127 (partial), r311911, r311923, r312939,
r313250, r313712, r314811 (partial), r314887 (partial), r315430,
r317981, r315466

o Move the DRIVER_MODULE() statements that declare mmc(4) to be a child
of the various bridge drivers out of dev/mmc.c and into the bridge
drivers.

o Add ACPI platform support for SDHCI driver.

o Fix some overly long lines, whitespace and other bugs according to
style(9) as well as spelling etc. in mmc(4), mmcsd(4) and sdhci(4).

o In the mmc(4) bridges and sdhci(4) (bus) front-ends:
- Remove redundant assignments of the default bus_generic_print_child
device method,
- use DEVMETHOD_END,
- use NULL instead of 0 for pointers.

o Trim/adjust includes.

o Add and use a MMC_DECLARE_BRIDGE macro for declaring mmc(4) bridges
as kernel drivers and their dependency onto mmc(4).

o Add support for eMMC "partitions". Besides the user data area, i. e.
the default partition, eMMC v4.41 and later devices can additionally
provide up to:
1 enhanced user data area partition
2 boot partitions
1 RPMB (Replay Protected Memory Block) partition
4 general purpose partitions (optionally with a enhanced or extended
attribute)

Besides simply subdividing eMMC devices, some Intel NUCs having UEFI
code in the boot partitions etc., another use case for the partition
support is the activation of pseudo-SLC mode, which manufacturers of
eMMC chips typically associate with the enhanced user data area and/
or the enhanced attribute of general purpose partitions.

CAVEAT EMPTOR: Partitioning eMMC devices is a one-time operation.

o Now that properly issuing CMD6 is crucial (so data isn't written to
the wrong partition for example), make a step into the direction of
correctly handling the timeout for these commands in the MMC layer.
Also, do a SEND_STATUS when CMD6 is invoked with an R1B response as
recommended by relevant specifications.

o Add an IOCTL interface to mmcsd(4); this is sufficiently compatible
with Linux so that the GNU mmc-utils can be ported to and used with
FreeBSD (note that due to the remaining deficiencies outlined above
SANITIZE operations issued by/with `mmc` currently most likely will
fail). These latter have been added to ports as sysutils/mmc-utils.
Among others, the `mmc` tool of mmc-utils allows for partitioning
eMMC devices (tested working).

o For devices following the eMMC specification v4.41 or later, year 0
is 2013 rather than 1997; so correct this for assembling the device
ID string properly.

o Let mmcsd.ko depend on mmc.ko. Additionally, bump MMC_VERSION as at
least for some of the above a matching pair is required.

309447 02-Dec-2016 jhb

MFC 303522,303647,303860,303880,304168-304170,304479,304482,304485,305548,
305549:
Chelsio T4/T5 VF driver.

303522:
Various fixes to the t4/5nex character device.

- Remove null open/close methods.
- Don't set d_flags to 0 explicitly.
- Remove t5_cdevsw as the .d_name member isn't really used and doesn't
warrant a separate cdevsw just for the name.
- Use ENOTTY as the error value for an unknown ioctl request.
- Use make_dev_s() to close race with setting si_drv1.

303647:
Store the offset of the KDOORBELL and GTS registers in the softc.

VF devices use a different register layout than PF devices. Storing
the offset in a value in the softc allows code to be shared between the
PF and VF drivers.

303860:
Reserve an adapter flag IS_VF to mark VF devices vs PF devices.

303880:
Track the base absolute ID of ingress and egress queues.

Use this to map an absolute queue ID to a logical queue ID in interrupt
handlers. For the regular cxgbe/cxl drivers this should be a no-op as
the base absolute ID should be zero. VF devices have a non-zero base
absolute ID and require this change. While here, export the absolute ID
of egress queues via a sysctl.

304168:
Make SGE parameter handling more VF-friendly.

Add fields to hold the SGE control register and free list buffer sizes to
the sge_params structure. Populate these new fields in
t4_init_sge_params() for PF devices and change t4_read_chip_settings() to
pull these values out of the params structure instead of reading
registers directly. This will permit t4_read_chip_settings() to be reused
for VF devices which cannot read SGE registers directly.

While here, move the call to t4_init_sge_params() to
get_params__post_init(). The VF driver will populate the SGE parameters
structure via a different method before calling t4_read_chip_settings().

304169:
Update mailbox writes to work with VF devices.

- Use alternate register locations for the data and control registers for
VFs.
- Do a dummy read to force the writes to the mailbox data registers to
post before the write to the control register on VFs.
- Do not check the PCI-e firmware register for errors on VFs.

304170:
Add support for register dumps on VF devices.

- Add handling of VF register sets to t4_get_regs_len() and t4_get_regs().
- While here, use t4_get_regs_len() in the ioctl handler for regdump
instead of inlining it.

304479:
Add structures for VF-specific adapter parameters.

While here, mark which parameters are PF-specific and which are
VF-specific.

304482:
Adjust t4_port_init() to work with VF devices.

Specifically, the FW_PORT_CMD may or may not work for a VF (the PF
driver can choose whether or not to permit access to this command),
so don't attempt to fetch port information on a VF if permission is
denied by the PF.

304485:
Reorder sysctls so that nodes shared with the VF driver are added first.

This permits a single early return for VF devices in the routines that
add sysctl nodes.

305548:
Don't break out of the m_advance() loop if len drops to zero.

If a packet contains the Ethernet header (14 bytes) in the first mbuf
and the payload (IP + UDP + data) in the second mbuf, then the attempt
to fetch the l3hdr will return a NULL pointer. The first loop iteration
will drop len to zero and exit the loop without setting 'p'. However,
the desired data is at the start of the second mbuf, so the correct
behavior is to loop around and let the conditional set 'p' to m_data of
the next mbuf (and leave offset as 0).

305549:
Chelsio T4/T5 VF driver.

The cxgbev/cxlv driver supports Virtual Function devices for Chelsio
T4 and T4 adapters. The VF devices share most of their code with the
existing PF4 driver (cxgbe/cxl) and as such the VF device driver
currently depends on the PF4 driver.

Similar to the cxgbe/cxl drivers, the VF driver includes a t4vf/t5vf
PCI device driver that attaches to the VF device. It then creates
child cxgbev/cxlv devices representing ports assigned to the VF.
By default, the PF driver assigns a single port to each VF.

t4vf_hw.c contains VF-specific routines from the shared code used to
fetch VF-specific parameters from the firmware.

t4_vf.c contains the VF-specific PCI device driver and includes its
own attach routine.

VF devices are required to use a different firmware request when
transmitting packets (which in turn requires a different CPL message
to encapsulate messages). This alternate firmware request does not
permit chaining multiple packets in a single message, so each packet
results in a firmware request. In addition, the different CPL message
requires more detailed information when enabling hardware checksums,
so parse_pkt() on VF devices must examine L2 and L3 headers for all
packets (not just TSO packets) for VF devices. Finally, L2 checksums
on non-UDP/non-TCP packets do not work reliably (the firmware trashes
the IPv4 fragment field), so IPv4 checksums for such packets are
calculated in software.

Most of the other changes in the non-VF-specific code are to expose
various variables and functions private to the PF driver so that they
can be used by the VF driver.

Note that a limited subset of cxgbetool functions are supported on VF
devices including register dumps, scheduler classes, and clearing of
statistics. In addition, TOE is not supported on VF devices, only for
the PF interfaces.

Sponsored by: Chelsio Communications

308402 07-Nov-2016 hselasky

MFC r307518:
Fix device delete child function.

When detaching device trees parent devices must be detached prior to
detaching its children. This is because parent devices can have
pointers to the child devices in their softcs which are not
invalidated by device_delete_child(). This can cause use after free
issues and panic().

Device drivers implementing trees, must ensure its detach function
detaches or deletes all its children before returning.

While at it remove now redundant device_detach() calls before
device_delete_child() and device_delete_children(), mostly in
the USB controller drivers.

Tested by: Jan Henrik Sylvester <me@janh.de>
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D8070

305615 08-Sep-2016 pfg

MFC r303891, r303892:
sys: replace comma with semicolon when pertinent.

Uses of commas instead of a semicolons can easily go undetected. The comma
can serve as a statement separator but this shouldn't be abused when
statements are meant to be standalone.

294690 24-Jan-2016 ian

MFC r289477:

Fix a strange macro re-definition compile error. If the VM_MAXUSER_ADDRESS
value is defined as a config option the definition is emitted into
opt_global.h which is force-included into everything. In addition, the
symbol is emitted by the genassym mechanism, but that by its nature reduces
the value to a 0xnnnnnnnn number. When compiling a .S file you end up
with two different definitions of the macro (they evaluate to the same
number, but the text is different, upsetting the compiler).

294687 24-Jan-2016 ian

MFC r294032:

Fix the handling of the "PDC write transfer length" erratum for at91. The
problem affects revision 1xx hardware as well as later versions. Also, the
recommended workaround is to set the PDC count register for a 12-byte
transfer when the actual size is less than that, but there is no need to
extend or zero-out the data buffer, because the blklen register contains
the real transfer size and only that many bytes will be transferred.

Also add a sysctl to turn debugging printfs on or off on the fly.

294686 24-Jan-2016 ian

MFC r293830:

Fix the spelling of fueword* to eliminate compile warnings about mismatched
begin/end symbols when the warning level is turned up.

294685 24-Jan-2016 ian

MFC r293053, r293061, r293063, r293064, r293065, r293775, r293792:

Use 64-bit math when finding a block of ram to hold the kernel. This fixes
a problem on 32-bit systems which have ram occupying the end of the physical
address space -- for example, a block of ram at 0x80000000 with a size of
0x80000000 was overflowing 32 bit math and ending up with a calculated size
of zero.

Use 64-bit math when processing the lists of physical and excluded memory
to generate the phys_avail and dump_avail arrays.

Work around problems that happen when there is ram at the end of the
physical address space.

Cast pointer through uintptr_t on the way to uint64_t to squelch a warning.

Reword the comment to better describe what I found while researching the
problem that led to this temporary workaround (and also so I can properly
cite the PR in the commit this time).

Cast using uintfptr_t and eliminate the cast to uint64_t which is uneeded
because rounding down cannot increase the number of bits needed to express
the result.

Go back to using uintptr_t, because code that actually compiles is
infinitely less buggy than code that is theoretically correct in some
alternate universe.

PR: 201614

294683 24-Jan-2016 ian

MFC r293045, r293046:

Make the 'env' directive described in config(5) work on all architectures,
providing compiled-in static environment data that is used instead of any
data passed in from a boot loader.

Previously 'env' worked only on i386 and arm xscale systems, because it
required the MD startup code to examine the global envmode variable and
decide whether to use static_env or an environment obtained from the boot
loader, and set the global kern_envp accordingly. Most startup code wasn't
doing so. Making things even more complex, some mips startup code uses an
alternate scheme that involves calling init_static_kenv() to pass an empty
buffer and its size, then uses a series of kern_setenv() calls to populate
that buffer.

Now all MD startup code calls init_static_kenv(), and that routine provides
a single point where envmode is checked and the decision is made whether to
use the compiled-in static_kenv or the values provided by the MD code.

The routine also continues to serve its original purpose for mips; if a
non-zero buffer size is passed the routine installs the empty buffer ready
to accept kern_setenv() values. Now if the size is zero, the provided buffer
full of existing env data is installed. A NULL pointer can be passed if the
boot loader provides no env data; this allows the static env to be installed
if envmode is set to do so.

Most of the work here is a near-mechanical change to call the init function
instead of directly setting kern_envp. A notable exception is in xen/pv.c;
that code was originally installing a buffer full of preformatted env data
along with its non-zero size (like mips code does), which would have allowed
kern_setenv() calls to wipe out the preformatted data. Now it passes a zero
for the size so that the buffer of data it installs is treated as
non-writeable.

Also, revert accidental change that snuck into r293045.

294682 24-Jan-2016 ian

MFC r290647, r292523, r292891:

ARM: Improve robustness of locore_v6.S and fix errors.
- boot page table is not allocated in data section, so must be
cleared before use
- map only one section (1 MB) for SOCDEV mapping (*)
- DSB must be used for ensuring of finishing TLB operations
- Invalidate BTB when appropriate

Allow armv4/5 kernels to be loaded on any 2MB boundary, like armv6/7.

This eliminates the reliance on PHYSADDR and KERNPHYSADDR compile-time
symbols (except when the rom-copy code is enabled) by using the current
PC and the assumption that the entry-point routine is in the first 1MB
section of the text segment.

Other cleanups done:

- Reduce the initarm() stack size back to 2K. It got increased to
4 * 2K when this file was supporting multicore armv6, but that
support is now in locore-v6.S.

- When building the temporary startup page tables, map the entire
4GB address space as VA=PA before mapping the kernel at its loaded
location. This allows access to boot parameters stored somewhere
in ram by the bootloader, regardless of where that may be.

- When building the page table entry for supporting EARLY_PRINTF, map
the section as uncached unbuffered, since it is presumably device
registers.

Note that this restores the ability to use loader(8)/ubldr on armv4/5
kernels. That was broken in r283035, the point at which ubldr started
loading an arm kernel at any 2MB boundary.

Also note that after this, there is no reason to set KERNVIRTADDR to
anything other than 0xc0000000, and no need for PHYSADDR or KERNPHYSADDR
symbols at all.

Bring some of the recent locore-v4.S improvements into locore-V6...

- Map all 4GB as VA=PA so that args passed in from a bootloader can
be accessed regardless of where they are.
- Figure out the kernel load address by directly masking the PC rather
then by doing pc-relative math on the _start symbol.
- For EARLY_PRINTF support, map device memory as uncacheable (no-op for
ARM_NEW_PMAP because all TEX types resolve to uncacheable).

294681 24-Jan-2016 ian

MFC r277416, r282023, r282024, r282025, r284264:

Remove the SMP code from locore-v4. These will never use the SMP code as
there is no multi-core hardware prior to ARMv6.

Remove the armv6 code from locore-v4.S, it's not needed there.

Fix the style of locore-v4.S and locore-v6.S to help find any common code.

Cleanup a little more:
- Remove whitespace at the end of lines
- Use a tab after instructions, not spaces

Fix the spelling of __ARM_ARCH >= 6 in sys/arm/arm.

294679 24-Jan-2016 ian

MFC r292419, r294237:

Fix the clock divisor calc for imx6 sdcard bus speed.

Quick exit after setting the clock control register.

294678 24-Jan-2016 ian

MFC r291149, r291367:

Update the imx5/imx6 cpu_reset() implementation based on a new understanding
of the SRS (software reset) bit in the watchdog control register. Despite
what the manual seems to imply, this bit DOES trigger an immediate reset, as
opposed to simply flagging the type of reset as software-triggered.

Rename sysctl node hw.imx6 to hw.imx. Move its definition to imx_machdep.c
so that code shared between imx5 and imx6 can work with OIDs under that node.

Add last_reset_status (integer) and last_reset_reason (string) OIDs that
provide info about the last chip reset (power-on, software reset, watchdog
timeout).

294671 24-Jan-2016 ian

MFC r289619:

Follow the advice of the misplaced comment and don't access the map struct
after freeing it. Remove the comment whose uselessness has been revealed.

294136 16-Jan-2016 dchagin

MFC r293613:

Implement vsyscall hack. Prior to 2.13 glibc uses vsyscall
instead of vdso. An upcoming linux_base-c6 needs it.

293581 09-Jan-2016 dchagin

MFC r283479:

The kernel sends signals to the processes via ABI specific sv_sendsig method.
Native ABI do not need signal conversion, only emulators may want this. Usually
emulators implements its own sv_sendsig method. For now only ibcs2 emulator does
not have own sv_sendsig implementation and depends on native sendsig() method.
So, remove any extra attempts to convert signal numbers from native sendsig()
methods except from i386 where ibsc2 is living.

293490 09-Jan-2016 dchagin

MFC r283382:

In preparation for switching linuxulator to the use the native 1:1
threads add a hook for cleaning thread resources before the thread die.

289666 20-Oct-2015 ian

MFC r281828, r289083, r289084, r289091, r289093, r289095, r289097, r289098,
r289104, r289105, r289118: various i2c fixes...

Fix numerous issues in iic(4) and iicbus(4):
--Allow multiple open iic fds by storing addressing state in cdevpriv
--Fix, as much as possible, the baked-in race conditions in the iic
ioctl interface by requesting bus ownership on I2CSTART, releasing it on
I2CSTOP/I2CRSTCARD, and requiring bus ownership by the current cdevpriv
to use the I/O ioctls
--Reduce internal iic buffer size and remove 1K read/write limit by
iteratively calling iicbus_read/iicbus_write
--Eliminate dynamic allocation in I2CWRITE/I2CREAD
--Move handling of I2CRDWR to separate function and improve error handling
--Add new I2CSADDR ioctl to store address in current cdevpriv so that
I2CSTART is not needed for read(2)/write(2) to work
--Redesign iicbus_request_bus() and iicbus_release_bus():
--iicbus_request_bus() no longer falls through if the bus is already
owned by the requesting device. Multiple threads on the same device may
want exclusive access. Also, iicbus_release_bus() was never
device-recursive anyway.
--Previously, if IICBUS_CALLBACK failed in iicbus_release_bus(), but
the following iicbus_poll() call succeeded, IICBUS_CALLBACK would not be
issued again
--Do not hold iicbus mtx during IICBUS_CALLBACK call. There are
several drivers that may sleep in IICBUS_CALLBACK, if IIC_WAIT is passed.
--Do not loop in iicbus_request_bus if IICBUS_CALLBACK returns
EWOULDBLOCK; instead pass that to the caller so that it can retry if so
desired.

Bugfix: Exit the transfer loop if any read or write operation fails. Also,
perform a stop operation on the bus if there was an error, otherwise the
bus will remain hung forever. Consistantly use 'if (error != 0)' style in
the function.

Mostly rewrite the imx i2c driver. This started out as an attempt to fix
one specific problem: the driver didn't check for ACK/NAK after writing a
slave address byte to the bus, and some slaves signal that they are busy
(such as when completing an internal write to flash memory) by sending a
NAK in response to being addressed.

Use IIC_EBUSBSY and IIC_BUSERR status values consistantly across all drivers.
Make it clearer what each one means in the comments that define them.

Add iic2errno(), a helper function to translate IIC_Exxxxx status values to
errno values that are at least vaguely equivelent. Also add a new status
value, IIC_ERESOURCE, to indicate a failure to acquire memory or other
required resources to complete a transaction.

Return only IIC_Exxxx status values from iicbus-layer functions. Most of
these functions are thin wrappers around calling the hardware-layer driver,
but some of them do sanity checks and return an error.

Add a short name, IIC_INTRWAIT, for the common case (IIC_INTR | IIC_WAIT).

Replace a local sx lock that allowed only one client at a time to access
an eeprom device with iicbus_request/release_bus(), which achieves the
same effect and also keeps other i2c slave drivers from clashing on the bus.

289184 12-Oct-2015 andrew

MFC of r288447. Only the Marvell driver has been updated as there is no
support for Raspbetty Pi 2 in stable/10.

An IPI must be cleared before it is handled otherwise next IPI could be
missed. In other words, if a new request for an IPI is sent while the
previous request is being handled but the IPI is not cleared yet, the
clearing of the previous IPI request also clears the new one and the
handling is missed.

There are only three MP interrupt controllers in ARM now. Two of them are
fixed by this change, the third one is correct, probably only just by
accident. The fix is minimalistic as new interrupt framework is awaited.

It was debugged on RPi2 where missing IPI handling together with SCHED_ULE
led to situation in which tdq_ipipending was not cleared and so IPI_PREEMPT
was stopped to be sent. Various odditys were found related to slow system
response time like various events timed out, and slow console response.

288287 27-Sep-2015 kib

MFC r288000:
Add support for weak symbols to the kernel linkers.

287082 23-Aug-2015 ian

MFC r283547:

Ensure that all arm kernel configs contain ALT_BREAK_TO_DEBUGGER and not
BREAK_TO_DEBUGGER if they have a serial console (most do). A burst of
serial line noise (such as unplugging a usb serial adapter) can look like
a break and drop a working system into the debugger. The alt break sequence
(<CR>~^B) works fine on both serial and non-serial consoles.

287079 23-Aug-2015 ian

MFC r286942, r286943, r286944: imx watchdog fixes...

Add compatible strings for all the hardware this driver works with.

Also, move the READ/WRITE bus space access macros from the header into the
source file, and rename them to RD2/WR2 to make it clear they're 16-bit
accessors. (READ/WRITE just don't seem like good names to be in a public
header file.)

Make the imx watchdog actually work, by setting WDOG_CR_WDE (enable bit).
Also, follow the rules from watchdog(9) about what values to return in
various situations (especially, don't touch *error when asked to set a
non-zero timeout that isn't achievable on the hardware).

Enable the watchdog driver on imx6, now that it works.

287040 23-Aug-2015 ian

Always compile in PPS capture. Use the same device name used in 11-current.

This is a direct commit to 10-stable because the corresponding changes in 11
are bound up with all the device-tree rework for beaglebone. This somewhat
aligns the features between the two branches, from a user's perspective.

287016 22-Aug-2015 mav

MFC r280451:
Remove from legacy ata(4) driver support for hardware, supported by newer
and more functional drivers ahci(4), siis(4) and mvs(4).

This removes about 3400 lines of code, unused since FreeBSD 9.0 release.

286052 30-Jul-2015 marius

MFC: r281752

Make a comment reflect reality.

285365 10-Jul-2015 gjb

Fix two remaining issues with the arm UFS mount issue:

- Add the GEOM_PART_GPT option and enable MSDOSFS in the GUMSTIX
kernel. [1]

- Add GEOM_LABEL to the PANDABOARD kernel, that should have been
included included in r285132. I confused the kernel configuration
used for the WANDBOARD and PANDABOARD, which the former uses the
IMX6 kernel configuration, along with the CUBOX-HUMMINGBOARD.

This is a direct commit to stable/10, as was r285132.

[1] I do not actually have the GUMSTIX board, but I suspect it will
fail to boot in the same way as the others have been.

Approved by: re (kib)
Sponsored by: The FreeBSD Foundation

285132 04-Jul-2015 gjb

Add the GEOM_LABEL option to the BEAGLEBONE, GUMSTIX, and RPI-B
kernel configuration files, resolving an issue where the UFS and
MSDOSFS partitions would not mount as set in fstab(5).

This is a direct commit to stable/10, as the GEOM_LABEL option
is handled differently in head for arm/armv6. The WANDBOARD
and PANDABOARD already have this kernel option entry via the IMX6
kernel configuration file, so do not need to be changed.

Approved by: re (kib)
Sponsored by: The FreeBSD Foundation

284096 06-Jun-2015 ian

MFC r279824, r279827, r279825:

Add a dtb module for AM335x systems (just Beaglebone right now).

Remove the static DTB config and instead build modules/dtb/am335x.

Also, remove WITHOUT_MODULES="ahc" which was added long ago to work
around build problems that have long since been fixed correctly.

Revert accidentally commited modules/Makefile file from r279824.

284094 06-Jun-2015 ian

MFC r278338, r278340, r278458, r278519:

Create a module to install the Raspberry Pi dtb files.

Pull in the rpi.dts -> rpi.dtb module (dtb/rpi) and have it install
rpi.dtb in /boot/dtb by default.

Add a module to build the dtb files for all supported imx6 systems.

Remove imx6s-wandboard.dts, there is no such file.

284052 06-Jun-2015 np

MFC r276480, r276485, r276498, r277225, r277226, r277227, r277230,
r277637, and r283149 (by emaste@).

r276485 is the real change here, the rest deal with the fallout of
mp_ring's reliance on 64b atomics.

Use the incorrectly spelled 'eigth' from struct pkthdr in this branch
instead of MFC'ing r261733, which would have renamed the field of a
public structure in a -STABLE branch.
---

r276480:
Temporarily unplug cxgbe(4) from !amd64 builds.

r276485:
cxgbe(4): major tx rework.

a) Front load as much work as possible in if_transmit, before any driver
lock or software queue has to get involved.

b) Replace buf_ring with a brand new mp_ring (multiproducer ring). This
is specifically for the tx multiqueue model where one of the if_transmit
producer threads becomes the consumer and other producers carry on as
usual. mp_ring is implemented as standalone code and it should be
possible to use it in any driver with tx multiqueue. It also has:
- the ability to enqueue/dequeue multiple items. This might become
significant if packet batching is ever implemented.
- an abdication mechanism to allow a thread to give up writing tx
descriptors and have another if_transmit thread take over. A thread
that's writing tx descriptors can end up doing so for an unbounded
time period if a) there are other if_transmit threads continuously
feeding the sofware queue, and b) the chip keeps up with whatever the
thread is throwing at it.
- accurate statistics about interesting events even when the stats come
at the expense of additional branches/conditional code.

The NIC txq lock is uncontested on the fast path at this point. I've
left it there for synchronization with the control events (interface
up/down, modload/unload).

c) Add support for "type 1" coalescing work request in the normal NIC tx
path. This work request is optimized for frames with a single item in
the DMA gather list. These are very common when forwarding packets.
Note that netmap tx in cxgbe already uses these "type 1" work requests.

d) Do not request automatic cidx updates every 32 descriptors. Instead,
request updates via bits in individual work requests (still every 32
descriptors approximately). Also, request an automatic final update
when the queue idles after activity. This means NIC tx reclaim is still
performed lazily but it will catch up quickly as soon as the queue
idles. This seems to be the best middle ground and I'll probably do
something similar for netmap tx as well.

e) Implement a faster tx path for WRQs (used by TOE tx and control
queues, _not_ by the normal NIC tx). Allow work requests to be written
directly to the hardware descriptor ring if room is available. I will
convert t4_tom and iw_cxgbe modules to this faster style gradually.

r276498:
cxgbe(4): remove buf_ring specific restriction on the txq size.

r277225:
Make cxgbe(4) buildable with the gcc in base.

r277226:
Allow cxgbe(4) to be built on i386. Driver attach will succeed only on
a subset of i386 systems.

r277227:
Plug cxgbe(4) back into !powerpc && !arm builds, instead of building it
on amd64 only.

r277230:
Build cxgbe(4) on powerpc64 too.

r277637:
Make sure the compiler flag to get cxgbe(4) to compile with gcc is used
only when gcc is being used. This is what r277225 should have been.

283931 02-Jun-2015 imp

MFC:

r283014: Disable unmapped I/O: it is broken for unaligned pages
r283126: Fix comments

283930 02-Jun-2015 imp

MFC:

Merge r276846: Add infrastructure to build dtb files from dts files.

283510 25-May-2015 ian

MFC r283033, r283062, r283066, r283069:

Do not set preload_addr_relocate for ARM.

Refactor net_getparams() to make it easier to get params from sources other
than bootp and rarp.

Add a routine to obtain netboot parameters from the U-Boot env vars

Enable the NETIF_OPEN_CLOSE_ONCE option for ubldr.

283501 24-May-2015 ian

MFC r282516:

Add the code necessary to run the imx6 chip at its lowest clock/power
operating point (396MHz/950mV).

283500 24-May-2015 ian

MFC r268838, r277644:

Add support for Toradex Apalis i.MX6 development board.

Add support for imx6 audio transmitting, include drivers for:
o Digital Audio Multiplexer (AUDMUX)
o Smart Direct Memory Access Controller (SDMA)
o Synchronous Serial Interface (SSI)

283499 24-May-2015 ian

MFC r282418:

On an icache sync by address/len, round the length up if the operation
spans a cacheline boundary.

283404 24-May-2015 ian

MFC r279850:

Remove MODULES_OVERRIDE="" for Marvel-based armv5 systems.

Also add some #NO_UNIVERSE to configs that essentially duplicate DB-88F6XXX.

283387 24-May-2015 ian

MFC r279837:

Remove MODULES_OVERRIDE="" and WITHOUT_MODULES="ahc" from armv6 configs.

283368 24-May-2015 ian

MFC r276004: Fix the indentation to simplify comparing the ARM config files.

283340 23-May-2015 ian

MFC r262409, r267129, r267130, r280709:

Move the declaration for mpentry() into a header file

Fix broken SMP startup on Armada XP after r265694

Avoid using hard-coded SoC's register address in mptramp code for Armada XP

Use pmap_mapdev()/unmapdev() to temporarily map on-chip sram while copying
the startup trampoline code.

283339 23-May-2015 ian

MFC r280278, r280402:

Allow to override default kernel virtual address assignment on ARM.

Do not save/restore the TLS pointer on context switch for armv6.

283338 23-May-2015 ian

MFC r279816, r279826:

Attach the prcm clock driver early, so it can set the mpcore timer frequency.

Change the name of the dmtimer pps device from /dev/ppsN to /dev/dmtppsN.

283336 23-May-2015 ian

MFC r279810, r279811:

Clean data cache before instruction cache in armv7_icache_sync_range().

Add minimum cache line sizes to struct cpuinfo, use them in the new cache
maintenance routines. Also add a routine to invalidate the branch cache.

283335 23-May-2015 ian

MFC r278518: Resolve cache line size from CP15 instead of hard-coded 32.

283334 23-May-2015 ian

MFC r277098, r279235:

Introduce ofw_bus_reg_to_rl() to replace part of common bus code

Fix endianness on FDT read in ARM GIC

283332 23-May-2015 ian

MFC r274249, r274484, r275583:

Avoid panic in ofwbus caused by not released resource list entry

Fix typo in ARM GIC device_printf()

Fix buffer overflow in Marvell PCI/PCIe driver

283329 23-May-2015 ian

MFC r276021, r279766:

Reduce the diff in the Ti aintc between head and arm_intrng

Fix spurious interrupts on arm am335x (beaglebone), by doing the EOI in
both the post-filter and post-thread callbacks.

283327 23-May-2015 ian

MFC r279723, r279724:

Define new linker set, UART_FDT_CLASS_AND_DEVICE, for registering full
(class and device) FDT UART. Define second one, UART_FDT_CLASS, for UART
class only.

Move the uart_class definitions and fdt compat data into the individual
uart implementations, and export them using the new linker-set mechanism.

283323 23-May-2015 ian

MFC r277132: Rename Exynos UART driver functions. No functional change.

283322 23-May-2015 ian

MFC r266942, r266944:

Do only receive chars if there are some data in the buffer.
This fixes operation on newer Exynos boards.

Rename exynos uart driver filenames.

283319 23-May-2015 ian

MFC r279702: Update a comment that had drifted out of date.

283317 23-May-2015 ian

MFC r278770, r279114, r279215, r279338, r279543:

Add logic for handling new-style ARM cpu ID info.

Correct a comment which was exactly backwards from reality.

There is no reason to do i+dcache writeback and invalidate when changing
the translation table (this may be left over from armv5 days). It's
especially bad to do so using a cache operation that isn't coherent on
SMP systems.

Add casting to make atomic ops work for pointers. (Apparently nobody has
ever done atomic ops on pointers before now on arm).

Revert incorrect casting.

283161 20-May-2015 gjb

MFC r282500, r282693:
r282500:
Add initial support for building RPI2 images.

In release.sh, allow overriding buildenv_setup() before
the handoff to arm/release.sh.

Copy arm/RPI-B.conf -> arm/RPI2.conf, set UBOOT_PORT and
the correct KERNEL, and add the buildenv_setup() override
to install the sysutils/u-boot-rpi2 port/package.

Copy tools/arm/crochet-RPI-B.conf -> tools/arm/crochet-RPI2.conf,
and set the correct entries for the RaspberryPi2 board.

r282693:
Merge ^/projects/release-arm-redux into ^/head.

Of note:

- This commit adds native FreeBSD/arm release build support without
requiring out-of-tree utilities.

- Part of this merge removes the WANDBOARD-{SOLO,DUAL,QUAD} kernel
configuration files, for which the IMX6 kernel configuration file
should be used instead.

- The resulting images have a 'freebsd' user (password 'freebsd'),
to allow ssh(1) access when console access is not available (VGA
or serial). The default 'root' user password is set to 'root'.

- The /etc/ttys file for arm images now enable both ttyv0 and ttyu0
by default.

Note: The RPI2 kernel configuration does not yet exist in stable/10,
however the merge conflicts needed to be properly resolved.
Additionally, SRCBRANCH has been set to base/stable/10 in the updated
arm configuration files as part of this commit.

Sponsored by: The FreeBSD Foundation

282506 05-May-2015 hselasky

MFC r282120:
The add_bounce_page() function can be called when loading physical
pages which pass a NULL virtual address. If the BUS_DMA_KEEP_PG_OFFSET
flag is set, use the physical address to compute the page offset
instead. The physical address should always be valid when adding
bounce pages and should contain the same page offset like the virtual
address.

Submitted by: Svatopluk Kraus <onwahe@gmail.com>
Reviewed by: jhb@

280258 19-Mar-2015 rwatson

Merge r263233 from HEAD to stable/10:

Update kernel inclusions of capability.h to use capsicum.h instead; some
further refinement is required as some device drivers intended to be
portable over FreeBSD versions rely on __FreeBSD_version to decide whether
to include capability.h.

Sponsored by: Google, Inc.


/freebsd-10-stable/sys/amd64/amd64/sys_machdep.c
/freebsd-10-stable/sys/amd64/linux32/linux32_machdep.c
arm/sys_machdep.c
/freebsd-10-stable/sys/cam/ctl/ctl_frontend_iscsi.c
/freebsd-10-stable/sys/cddl/compat/opensolaris/sys/file.h
/freebsd-10-stable/sys/compat/freebsd32/freebsd32_capability.c
/freebsd-10-stable/sys/compat/freebsd32/freebsd32_ioctl.c
/freebsd-10-stable/sys/compat/freebsd32/freebsd32_misc.c
/freebsd-10-stable/sys/compat/linux/linux_file.c
/freebsd-10-stable/sys/compat/linux/linux_ioctl.c
/freebsd-10-stable/sys/compat/linux/linux_socket.c
/freebsd-10-stable/sys/compat/svr4/svr4_fcntl.c
/freebsd-10-stable/sys/compat/svr4/svr4_filio.c
/freebsd-10-stable/sys/compat/svr4/svr4_ioctl.c
/freebsd-10-stable/sys/compat/svr4/svr4_misc.c
/freebsd-10-stable/sys/compat/svr4/svr4_stream.c
/freebsd-10-stable/sys/dev/aac/aac_linux.c
/freebsd-10-stable/sys/dev/aacraid/aacraid_linux.c
/freebsd-10-stable/sys/dev/amr/amr_linux.c
/freebsd-10-stable/sys/dev/filemon/filemon.c
/freebsd-10-stable/sys/dev/hwpmc/hwpmc_logging.c
/freebsd-10-stable/sys/dev/ipmi/ipmi_linux.c
/freebsd-10-stable/sys/dev/iscsi/icl.c
/freebsd-10-stable/sys/dev/iscsi/icl_proxy.c
/freebsd-10-stable/sys/dev/iscsi_initiator/iscsi.c
/freebsd-10-stable/sys/dev/mfi/mfi_linux.c
/freebsd-10-stable/sys/dev/tdfx/tdfx_linux.c
/freebsd-10-stable/sys/fs/fdescfs/fdesc_vnops.c
/freebsd-10-stable/sys/fs/fuse/fuse_vfsops.c
/freebsd-10-stable/sys/fs/nfsclient/nfs_clport.c
/freebsd-10-stable/sys/fs/nfsserver/nfs_nfsdport.c
/freebsd-10-stable/sys/i386/i386/sys_machdep.c
/freebsd-10-stable/sys/i386/ibcs2/ibcs2_fcntl.c
/freebsd-10-stable/sys/i386/ibcs2/ibcs2_ioctl.c
/freebsd-10-stable/sys/i386/ibcs2/ibcs2_misc.c
/freebsd-10-stable/sys/i386/linux/linux_machdep.c
/freebsd-10-stable/sys/kern/imgact_elf.c
/freebsd-10-stable/sys/kern/kern_descrip.c
/freebsd-10-stable/sys/kern/kern_event.c
/freebsd-10-stable/sys/kern/kern_exec.c
/freebsd-10-stable/sys/kern/kern_exit.c
/freebsd-10-stable/sys/kern/kern_ktrace.c
/freebsd-10-stable/sys/kern/kern_sig.c
/freebsd-10-stable/sys/kern/kern_sysctl.c
/freebsd-10-stable/sys/kern/subr_capability.c
/freebsd-10-stable/sys/kern/subr_syscall.c
/freebsd-10-stable/sys/kern/subr_trap.c
/freebsd-10-stable/sys/kern/sys_capability.c
/freebsd-10-stable/sys/kern/sys_generic.c
/freebsd-10-stable/sys/kern/sys_procdesc.c
/freebsd-10-stable/sys/kern/tty.c
/freebsd-10-stable/sys/kern/uipc_mqueue.c
/freebsd-10-stable/sys/kern/uipc_sem.c
/freebsd-10-stable/sys/kern/uipc_shm.c
/freebsd-10-stable/sys/kern/uipc_syscalls.c
/freebsd-10-stable/sys/kern/uipc_usrreq.c
/freebsd-10-stable/sys/kern/vfs_acl.c
/freebsd-10-stable/sys/kern/vfs_aio.c
/freebsd-10-stable/sys/kern/vfs_extattr.c
/freebsd-10-stable/sys/kern/vfs_lookup.c
/freebsd-10-stable/sys/kern/vfs_syscalls.c
/freebsd-10-stable/sys/netsmb/smb_dev.c
/freebsd-10-stable/sys/nfsserver/nfs_srvkrpc.c
/freebsd-10-stable/sys/security/mac/mac_syscalls.c
/freebsd-10-stable/sys/sparc64/sparc64/sys_machdep.c
/freebsd-10-stable/sys/ufs/ffs/ffs_alloc.c
/freebsd-10-stable/sys/vm/vm_mmap.c
279467 01-Mar-2015 dim

MFC r279312:

Fix a number of -Wcast-qual warnings under sys/arm. No functional
change.

Submitted by: andrew

279462 01-Mar-2015 dim

MFC r279311:

In sys/arm/ti/am335x/am335x_rtc.c, fix a clang 3.6.0 warning about
am33x_rtc_softc::sc_irq_res (which is an array) never being NULL.

Submitted by: andrew

278786 14-Feb-2015 loos

MFC r274670, r274671, r276168:

Moves all the duplicate code to a single function.

Verify for invalid modes and unwanted flags before pass the new flags to
driver.

Make gpio_default_map_gpios() static. No functional changes.

Improves the GPIO API description a little bit.

gpio_pin_max must return the maximum supported pin number and not the total
number of pins on the system.

278782 14-Feb-2015 loos

MFC r273799:

Make the GPIO children attach to the first unit available and not only to
unit 0.

This fix a bug where a GPIO controller could fail to attach its children
(gpioc and gpiobus) if another GPIO driver attach first.

278778 14-Feb-2015 loos

MFC: r273264, r274409, r278212, r278213:

Add a workaround needed to fix a bug of Arasan Host Controller where it may
lose the contents of consecutive writes (that happens within two SD card
clock cycles).

This fixes the causes of instability during the SD card detection and
identification on Raspberry Pi (which happens at 400 kHz and so was much
more vulnerable to this issue).

Remove the previous workaround which clearly can't provide the same effect.

Remove stale comments about the issues with HS mode.

Remove a previous workaround to limit the minimum sdhci frequency that
isn't needed anymore.

Remove some duplicate calls to bus_release_resource() and destroy the mutex
on error cases.

While here remove unnecessary includes.

278769 14-Feb-2015 loos

MFC r276298, r276303:

Remove the '#undef DEBUG' that should not be committed.

Removes unused and duplicate headers.

Bring the wait limit on mailbox write to a more sane value.

Fix a off-by-one bug on wait time limit.

Remove extra blank line.

278768 14-Feb-2015 loos

MFC r276296, r277207:

Make consistent use of the correct debug macros across the file.

Fix the C -> K temperature conversion for the dev.cpu.0.temperature sysctl.

Remove the unused temperature conversion macros.

278746 14-Feb-2015 kib

MFC r277643:
Remove Giant from /dev/mem and /dev/kmem.

MFC r277743:
Arm: ensure that _tmppt KVA is used exclusively.

278735 13-Feb-2015 ian

MFC r278031: Remove a stale comment.

278732 13-Feb-2015 ian

MFC r277555, r277568:

Enable all sd device clocks on imx6.

Add imx5/6 pinmux driver support for encoded input register configs.

278731 13-Feb-2015 ian

MFC r277523: Add last_fault_code when DEBUG is defined.

278730 13-Feb-2015 ian

MFC r277532, r277533: Add Maxmem global for arm.

278727 13-Feb-2015 ian

MFC r277454, r277460, r277465, r277466, r277467, r277469, r277470, r277471,
r277472, r277473, r277474, r277475, r277476, r277477, r277478, r277479,
r277480, r277512, r277516:

Add inline implementations of arm bus_space_read/write_N().

Revise the arm bus_space implementation to avoid dereferencing the tag on
every operation to retrieve the bs_cookie value almost nothing actually uses.

Use the explicit member initializer style to init the bus_space struct.

Use arm/bus_space-v6.c for all armv6 systems

Consolidate many identical implementations of bus_space to a single
common tag and implementation shared by armv4 and armv6.

Micro-optimize the new arm inline bus_space implementation by grouping all
the data the inline functions access together at the start of the bus_space
struct so that they all fit in a single cache line.


allwinner/a20/files.a20
allwinner/files.a10
arm/bus_space-v6.c
arm/bus_space_asm_generic.S
arm/bus_space_base.c
arm/bus_space_generic.c
at91/at91.c
at91/files.at91
broadcom/bcm2835/files.bcm2835
cavium/cns11xx/econa.c
cavium/cns11xx/files.econa
freescale/imx/files.imx51
freescale/imx/files.imx53
freescale/imx/files.imx6
freescale/vybrid/files.vybrid
include/bus.h
lpc/files.lpc
lpc/lpc_space.c
mv/bus_space.c
mv/files.mv
rockchip/files.rk30xx
samsung/exynos/files.exynos5
samsung/s3c2xx0/files.s3c2xx0
samsung/s3c2xx0/s3c24x0.c
samsung/s3c2xx0/s3c2xx0_space.c
samsung/s3c2xx0/s3c2xx0var.h
samsung/s3c2xx0/uart_cpu_s3c2410.c
ti/files.ti
versatile/bus_space.c
versatile/files.versatile
versatile/versatile_pci.c
versatile/versatile_pci_bus_space.c
versatile/versatile_pci_bus_space.h
xilinx/files.zynq7
xilinx/zy7_bus_space.c
xscale/i80321/ep80219_machdep.c
xscale/i80321/files.ep80219
xscale/i80321/files.i80219
xscale/i80321/files.i80321
xscale/i80321/files.iq31244
xscale/i80321/i80321_space.c
xscale/i80321/iq31244_machdep.c
xscale/i80321/obio.c
xscale/i80321/obio_space.c
xscale/i80321/obiovar.h
xscale/i80321/uart_cpu_i80321.c
xscale/i8134x/crb_machdep.c
xscale/i8134x/files.i81342
xscale/i8134x/i81342_space.c
xscale/i8134x/obio.c
xscale/i8134x/obio_space.c
xscale/i8134x/obiovar.h
xscale/i8134x/uart_cpu_i81342.c
xscale/ixp425/avila_ata.c
xscale/ixp425/cambria_exp_space.c
xscale/ixp425/ixp425_a4x_space.c
xscale/ixp425/ixp425_pci_space.c
xscale/ixp425/ixp425_space.c
xscale/pxa/pxa_space.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_ixp4xx.c
278726 13-Feb-2015 ian

MFC r272103: Move s3c2xx0 into the samsung directory.

278722 13-Feb-2015 ian

MFC r257740, r257739: Switch to using common armv6 bus_space tag.

278703 13-Feb-2015 ian

MFC r277306, r277307, r277346:

Add defines for SDHCI 3.0 controllers.

Add a new SDHCI quirk, SDHCI_QUIRK_DONT_SET_HISPD_BIT.

Save the command-and-flags value into shadow register when it is written.

278702 13-Feb-2015 ian

MFC r277305: Minor cleanups, comment changes.

278701 13-Feb-2015 ian

MFC r277265: Enable the snoop control unit during MP startup

278700 13-Feb-2015 ian

MFC r277037: Enable ALT_BREAK_TO_DEBUGGER for rpi.

278699 13-Feb-2015 ian

MFC r276003:

Start to clean up the armv6 kernel configs by reducing the diff between
them in the first sections and the later FDT support.

278698 13-Feb-2015 ian

MFC r263245, r269233, r267101, r275961: Config style cleanups.

Some of these are effectively record-only merges, because the actual
merge happened during conflict resolution of some prior merge.

278696 13-Feb-2015 ian

MFC r271220:

Create a common i.MX53 config and use it with the two existing i.MX53 boards.

278692 13-Feb-2015 ian

MFC r275962: Clean up style of CUBIEBOARD2 config.

278689 13-Feb-2015 ian

MFC r277028, r277038:

Check for and handle failures of bus_dmamap_load().
Handle dma mappings with more than one segment for rpi sdhci.

278685 13-Feb-2015 ian

MFC r276985:

Store the shadow command/mode register in the softc, not a local static var.

278684 13-Feb-2015 ian

MFC r276803, r276808:

Add accessors for the ARM CP15 performance monitor registers.
Move the inclusion of cpu-v6.h inside the #ifdef _KERNEL block.

278683 13-Feb-2015 ian

MFC r267719:

Remove the incomplete Tegra 2 code, nobody was maintaining it. The AC100
never booted to single user mode. (And now it is blocking the ability
to MFC other changes since it is gone from -current and hasn't kept up
with the other changes).

278680 13-Feb-2015 ian

MFC r266083, r267597:

Give suitably-endowed ARMs a register similar to the x86 TSC register.

278677 13-Feb-2015 ian

MFC r276642, r276644:

Remove commented-out options SMP and APIC_IO from old arm boards that will
never be able to support smp.

Switch all arm kernels with option SMP to use SCHED_ULE instead of 4BSD.

278676 13-Feb-2015 ian

MFC r266647, r270912, r273089:

Reduce the diff between the PandaBoard and BeableBone kernel configs

Resync comments about scbus and pass for life after AHCI joined CAM.

Uncomment general options from the Pandaboard config. These are in other
configs and there is no reason for them not to be here.

278656 13-Feb-2015 ian

MFC r272356, r275639, r276638:

Split syscall handling out to a separate file.

Include sys/kernel.h to pick up the definition of hz in syscall.c

Add a new trap-v6.c which has support for all armv7 exceptions.

278652 13-Feb-2015 ian

MFC r276525, r276596:

Put in a workaround for bug 196407 (arm modules cause crashes & panics).
(Don't allow movw/movt insn in modules.)

Fix alignment directives in arm asm code after clang 3.5 import.

278648 13-Feb-2015 ian

MFC r276519:

Define a WFI macro that expands to the right form of wait-for-interrupt
depending on the architecture.

278646 13-Feb-2015 ian

MFC r276518: Rework vfp code so it will compile on clang 3.4 and 3.5.

278645 13-Feb-2015 ian

MFC r276444, r276445, r276470:

Fix a paste-o in dcache_inv_pou_all().

Change the order of operations for the initial cache setup.

A couple small fixes to make clang 3.5 happy... Move END(sigcode)
and other misplace ENTRY/END macros.

278643 13-Feb-2015 ian

MFC r276394, r276397:

Add armv6 implementations of the startup-time cache maintenence functions.

Create a new locore.S that includes locore-v4 or locore-v6 as needed.

278639 12-Feb-2015 ian

MFC r276395, r276396: Rename locore.S to locore-v4.S and add a new locore-v6.S.

278635 12-Feb-2015 ian

MFC r276247, r276333, r276334, r276335, r276336, r276340, r276350:

Include acle-compat.h directly rather than getting it via sysreg.h.

Add new code to read and parse cpu identification data using the new CPUID
mechanism defined for armv7.

Add new TLB and cache maintainence functions for armv6 and armv7.

Eliminate an unused macro whose name clashes now with a function in the
new cpu-v6.h

Add cache maintenance functions which will be used by startup code to
initially set up the MMU.

Fix a "decl is not a prototype" error noticed by gcc (but not clang).

Update comments (r4 is not used anywhere), use non-profiling entry macros.

Add arm option ARM_NEW_PMAP, to allow us to begin adding the new pmap
code alongside the existing implementation

Add armv6 implementations of cache operations to avoid duplication

278631 12-Feb-2015 ian

MFC r272209, r272300, r276212, r276213:

Add machine/sysreg.h to simplify accessing the system control coprocessor
registers and use it in the ARMv7 CPU functions.

Add macros for asm barrier instructions with arch-specific implementations.

Define only the CP15 register operations that are valid for the architecture.

278630 12-Feb-2015 ian

MFC r276206:

For data and instruction prefetch aborts, call the same handler in the C
code, passing a 0/1 flag that indicates which type of abort it was. This
sets the stage for unifying the handling of page faults in a single routine.

278629 12-Feb-2015 ian

MFC r276196, r276197, r276198, r276202, r276203, r276204:

Change the style of the DO_AST macro to match the others

Remove _PROF_PROLOGUE from the EENTRY() macros.

Stylish changes... put tabs where they need to be in macros, move lines
around so that related things are more grouped together, rewrite comments.

Fix the GLOBAL macro so it works (upper vs lowercase X), use it in _EENTRY.

Create 'L' variants of all the ENTRY macros for file-static/local symbols.

278626 12-Feb-2015 ian

MFC r276191: Display correct value for cache level-of-coherency (needs +1).

278614 12-Feb-2015 ian

MFC r276187, r276190, r271422:

Rename pmap_kenter_temp to pmap_kenter_temporary to be consistent with the
other architectures with this function.

Eliminate unnecessary references to pte.h internals by using the standard
pmap_kenter_temporary() to map pages while dumping.

Cleanup up ARM *frame structures.

278613 12-Feb-2015 ian

MFC r271394, r271398:

Add more register values to armreg.h and remove CPU_CONTROL_32BP_ENABLE
from asm.h as they were already defined in armreg.h.

Unify interrupts bit definition and usage. While here remove PSR_C_bit.

278608 12-Feb-2015 ian

MFC r275779, r275963, r276101, r276161, r276297:

Move ofw_cpu.c to sys/dev/ofw so that it can be used by other
architectures.

Add driver for CPU frequency/voltage control on the Raspberry Pi.

On initialization, do not use bcm_mbox_intr() to read the pending messages.
This fixes the hang that happens on boot while initializing the cpufreq on
Raspberry Pi.

278601 11-Feb-2015 ian

MFC r276047: Add -march=armv7a to the kernel compile for all v7a ARM systems.

278599 11-Feb-2015 ian

MFC r266943, r266950, r267390:

Add support for Exynos 5420 Octa - 8-core (big.LITTLE) ARM machine
Enable SMP for both Exynos5 models we support.

278432 09-Feb-2015 rpaulo

MFC r277958, r278061:

ti_pruss: make sure the mmap'ed memory region is uncacheable.

am335x_clk_pruss_activate(): use the L3F clock.

278347 07-Feb-2015 kib

MFC r278001:
Do not qualify the mcontext_t *mcp argument for set_mcontext(9) as const.

278278 05-Feb-2015 hselasky

MFC r266969 and r276717:
Add 64-bit DMA support in the XHCI controller driver.
- Fix some comments and whitespaces while at it.
- Add support for PAE.


allwinner/a10_ehci.c
cavium/cns11xx/ehci_ebus.c
cavium/cns11xx/ohci_ec.c
freescale/vybrid/vf_ehci.c
lpc/lpc_ohci.c
samsung/exynos/exynos5_ehci.c
ti/am335x/am335x_usbss.c
ti/usb/omap_ehci.c
xilinx/zy7_ehci.c
/freebsd-10-stable/sys/dev/usb/controller/at91dci_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/at91dci_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/atmegadci_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/dwc_otg_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/dwc_otg_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_fsl.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_imx.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_ixp4xx.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_mv.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_pci.c
/freebsd-10-stable/sys/dev/usb/controller/musb_otg_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/ohci_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/ohci_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/ohci_pci.c
/freebsd-10-stable/sys/dev/usb/controller/ohci_s3c24x0.c
/freebsd-10-stable/sys/dev/usb/controller/uhci_pci.c
/freebsd-10-stable/sys/dev/usb/controller/usb_controller.c
/freebsd-10-stable/sys/dev/usb/controller/uss820dci_atmelarm.c
/freebsd-10-stable/sys/dev/usb/controller/xhci.c
/freebsd-10-stable/sys/dev/usb/controller/xhci_pci.c
/freebsd-10-stable/sys/dev/usb/usb_bus.h
/freebsd-10-stable/sys/dev/usb/usb_busdma.h
/freebsd-10-stable/sys/dev/usb/usb_transfer.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_ehci.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_ohci.c
/freebsd-10-stable/sys/mips/cavium/usb/octusb_octeon.c
/freebsd-10-stable/sys/mips/rmi/xls_ehci.c
/freebsd-10-stable/sys/mips/rt305x/rt305x_dotg.c
/freebsd-10-stable/sys/powerpc/ps3/ehci_ps3.c
/freebsd-10-stable/sys/powerpc/ps3/ohci_ps3.c
278079 02-Feb-2015 loos

MFC r277042:

Add support to turn off Beaglebone with poweroff(8) or shutdown(8) -p.

To cut off the power we need to start the shutdown sequence by writing
the OFF bit on PMIC.

Once the PMIC is programmed the SoC needs to toggle the PMIC_PWR_ENABLE
pin when it is ready for the PMIC to cut off the power. This is done by
triggering the ALARM2 interrupt on SoC RTC.

The RTC driver only works in power management mode which means it won't
provide any kind of time keeping functionality. It only implements a way
to trigger the ALARM2 interrupt when requested.

278078 02-Feb-2015 loos

MFC r261459, r273045, r273047.

r261459:
Remove trailing tabs causing false grep positives.

r273045:
Sort the files in the am355x directory.

r273047:
Remove the need for files.beaglebone and std.beaglebone by moving the one
option they defined into files.am335x.

278072 02-Feb-2015 loos

MFC r277206:

Catch a few cases where we need to release memory resources on errors.

Place parentheses around variables in macros.

277113 13-Jan-2015 ganbold

MFC:
Allow timer0 to run at full 24MHz not at 24MHz/16 by setting prescale to 1.

Approved by: stas (mentor)

276877 09-Jan-2015 loos

MFC r276249:

Fix the musb initialization sequence on AM335x.

According to http://e2e.ti.com/support/arm/sitara_arm/f/791/t/210729 the
USB reset pulse has an undocumented duration of 200ns and during this
period the module must not be acessed.

We wait for 100us to take into account for some imprecision of the early
DELAY() loop.

This fixes the eventual 'External Non-Linefetch Abort (S)' that happens at
boot while resetting the musb subsystem.

While here, enable the USB subsystem clock before the first access.

276875 09-Jan-2015 loos

MFC r273606:

Fix cpsw_detach() to not panic when called from cpsw_attach().

For an unkown reason (at moment), sometimes if_cpsw cannot read from PHY
and fails to attach calling cpsw_detach() which end up in a panic.

Fix it by doing the proper check before detach the miibus and also fix the
leak of few variables.

And to actually make it work, ether_ifattach() has to be moved to the end
of cpsw_attach() to avoid a race where calling ether_ifdetach() before
domain_init() (which will only run later on) would make it crash at
INP_INFO_RLOCK() on in_pcbpurgeif0().

Tested on: BBB (am335x)

276874 09-Jan-2015 loos

MFC r273599:

Fix a bug where DMA maps created with bus_dmamap_create() won't increment
the map count and without being able to keep track of the current map
allocation, bus_dma_tag_destroy() will fail to proceed and will return
EBUSY even after all the maps have been correctly destroyed with
bus_dmamap_destroy().

Found while testing the detach method of a NIC.

276872 09-Jan-2015 loos

MFC r276314:

Convert the BSC (i2c) driver to use the new iicbus_get_frequency().

Tested on: Raspberry pi

276869 09-Jan-2015 loos

MFC r273610:

Add an iicbus_reset() method to bcm2835_bsc. While it is generally not
used for kernel devices it is used by i2c(8).

This fix the 'error: Device not configured' when i2c(8) tries to reset the
controller:

# i2c -r
Resetting I2C controller on /dev/iic0: error: Device not configured

For now use conservative settings for default i2c speeds.

276868 09-Jan-2015 loos

MFC r273329, r273337 and r274415

Add another wakeup() after actually set the bus as free.

This fix a race where the threads waiting for the bus would wake up early
and still see bus as busy.

While here, give a better description to wmesg for the two use cases we
have (bus and io waiting).

Fix the mtx_sleep() error checking, catch all errors and not only
EWOULDBLOCK.

Do not print any message at errors. The errors are properly sent to upper
layers which should be able to deal with it, including printing the errors
when they need to.

The error message was quite annoying while scanning the i2c bus.

276546 02-Jan-2015 alc

MFC r273701, r274556
By the time that pmap_init() runs, vm_phys_segs[] has been initialized.
Obtaining the end of memory address from vm_phys_segs[] is a little
easier than obtaining it from phys_avail[].

Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the
default on i386 PAE. (The use of VM_PHYSSEG_SPARSE on i386 PAE saves
us some precious kernel virtual address space that would have been
wasted on unused vm_page structures.)

276312 27-Dec-2014 ian

MFC r276165, r276166:

Define the old-school arm arch constants we still use internally based on
the somewhat newer constants predefined by the compiler. This will allow
userland apps to use various machine/foo.h headers without CPUTYPE defined.

276290 27-Dec-2014 ian

MFC r276029:

Remove a volatile qualifier on return type that is ignored and results in
a -Wreturn-type warning when compiled with gcc.

276287 27-Dec-2014 ian

MFC r275944, r275946, r275949, r275950:

Add code to set and reset open-drain mode on the bus when requested.

When command and data interrupts have been aggregated together, don't do
the data-completed processing if a command-error interrupt is also asserted.

Add a new sdhci quirk, SDHCI_QUIRK_WAITFOR_RESET_ASSERTED, to work around
TI OMAP controllers which will return the reset-in-progress bit as zero if
you read the status register too fast after setting the reset bit.

276286 27-Dec-2014 ian

MFC r275660: Fix the watchdog timeout calculation to prevent wrap.

276284 27-Dec-2014 ian

MFC r274941: The arm PJ4B cpu is armv7 architecture, not v6.

276278 27-Dec-2014 ian

MFC r274641, r274644, r274822, r276049:

Allow i2c bus speed to be configured via hints, FDT data, and sysctl.

Implement bus speed setting for OMAP4, AM335x, and imx5/6.

Fix the i2c bus speed divisors for TI OMAP4 and AM335x to give the
advertised 100, 400, and 1000 KHz speeds.

PR: 195009

276275 27-Dec-2014 ian

MFC r274412, r274413, r274414: Bugfixes for imx5/6 pinctrl driver.

276274 27-Dec-2014 ian

MFC r274538, r274545, r274596, r274602, r274603, r274604, r274605, r274839:

When doing busdma sync ops for BUSDMA_COHERENT memory, there is no need
for cache maintenance operations, but ensure that all prior writes have
reached memory when doing a PREWRITE sync.

Do not do a cache invalidate on a PREREAD sync that is also a PREWRITE sync.

Do the cache invalidate sequence from the outermost to innermost, required
for correct operation.

Correct the sequence of busdma sync ops involved with PRE/POSTREAD syncs.

When doing a PREREAD sync of an mbuf-type dma buffer, do a writeback of
the first cacheline if the buffer start address is not on a cacheline
boundary.

275776 14-Dec-2014 andrew

MFC 275564:

Use the unified syntax when generating assembly for clang. The clang 3.5
integrated assembler only accepts it.

Sponsored by: ABT Systems Ltd

275775 14-Dec-2014 andrew

MFC 275378:

Pull in the NetBSD global offset table handling code. Clang 3.5 creates
relocations the linker complains about.

Obtained from: NetBSD

275767 14-Dec-2014 andrew

Clean up our ARM assembly:

MFC 275256:

Switch to the ARM unified assembly language as the clang integrated as only
supports it. Binutils supports it when the ".syntax unified" directive
is set.

Sponsored by: ABT Systems Ltd

MFC 275264:

Update _ENTRY to use _EENTRY to reduce the common code.

MFC 275321:

Remove extra labels, ENTRY_NP already provides them.

Sponsored by: ABT Systems Ltd

MFC 275322:

Correctly a few incorrect uses of ENTRY/EENTRY and END/EEND

Sponsored by: ABT Systems Ltd

MFC 275416:

Fix the name of the coprocessor to include the "p" prefix, the clang
integrated assembler expects this.

Sponsored by: ABT Systems Ltd

MFC 275418:

Switch to unified syntax so these can be built with clang 3.5.

Sponsored by: ABT Systems Ltd

MFC 275519:

Add missing END macros to some of the xscale functions.

Sponsored by: ABT Systems Ltd

MFC 275520:

Use the unified syntax in a few more assembly files

Sponsored by: ABT Systems Ltd

MFC 275521:

Set the alignment to 4-bytes after a string as clang 3.5 can switch to
thumb mode if this is incorrect.

Sponsored by: ABT Systems Ltd

MFC 275522:

Place the literal pool after a RET otherwise clang 3.5 tries to put it too
far away from a ldr psuedo instruction. With this clang will place the
literal value here where it's close enough to be loaded.

Sponsored by: ABT Systems Ltd

MFC 275523:

Switch to an armv6k cpu, without this clang 3.5 complains "bx lr" is
unsupported as it needs a newer cpu.

Sponsored by: ABT Systems Ltd

MFC 275524:

Switch to a .cpu directive. These will work when clang 3.5 is imported
where the .arch directive is a nop.

Sponsored by: ABT Systems Ltd

275764 14-Dec-2014 andrew

MFC 275207:

We don't use the hypervisor interrupt, make it optional in the device tree.

Submitted by: Julien Grall <julien.grall AT linaro.org>

MFC 275208:

Some device tree configurations place the generic timer under the root
of the tree and not under simplebus. Update the driver to handle this.

Submitted by: Julien Grall <julien.grall AT linaro.org>

275648 09-Dec-2014 rpaulo

MFC r275376:

Allow multiple devices to mmap. It's impossible to prevent this with
checks on the open/close functions.

274648 18-Nov-2014 kib

Merge the fueword(9) and casueword(9). In particular,

MFC r273783:
Add fueword(9) and casueword(9) functions.
MFC note: ia64 is handled like arm, with NO_FUEWORD define.

MFC r273784:
Replace some calls to fuword() by fueword() with proper error checking.

MFC r273785:
Convert kern_umtx.c to use fueword() and casueword().
MFC note: the sys__umtx_lock and sys__umtx_unlock syscalls are not
converted, they are removed from HEAD, and not used. The do_sem2*()
family is not yet merged to stable/10, corresponding chunk will be
merged after do_sem2* are committed.

MFC r273788 (by jkim):
Actually install casuword(9) to fix build.

MFC r273911:
Add type qualifier volatile to the base (userspace) address argument
of fuword(9) and suword(9).

274268 08-Nov-2014 ian

MFC r273703:

Remove the ARM_DEVICE_MULTIPASS option and make its effect be the default.

273830 29-Oct-2014 andrew

MFC r273288:

Allow the armv6 kernel to be build with PHYSADDR undefined. The kernel
will now find the virtual to physical mapping for libkvm to use at
runtime. This makes PHYSADDR redundant, however keep it around to give
everyone a chance to update their libkvm.

273828 29-Oct-2014 andrew

MFC r273284:

Allow libkvm to get the kernel va to pa delta without the need for
physaddr. This should allow for a kernel where PHYSADDR and KERNPHYSADDR
are both undefined.

For now libkvm will use the old method of reading physaddr and kernaddr
to allow it to work with old kernels. This could be removed in the future
when enough time has passed.

273827 29-Oct-2014 andrew

MFC r269956:

From https://sourceware.org/ml/newlib/2014/msg00113.html
By Richard Earnshaw at ARM
>
>GCC has for a number of years provides a set of pre-defined macros for
>use with determining the ISA and features of the target during
>pre-processing. However, the design was always somewhat cumbersome in
>that each new architecture revision created a new define and then
>removed the previous one. This meant that it was necessary to keep
>updating the support code simply to recognise a new architecture being
>added.
>
>The ACLE specification (ARM C Language Extentions)
>(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.swdev/index.html)
>provides a much more suitable interface and GCC has supported this
>since gcc-4.8.
>
>This patch makes use of the ACLE pre-defines to map to the internal
>feature definitions. To support older versions of GCC a compatibility
>header is provided that maps the traditional pre-defines onto the new
>ACLE ones.

Stop using __FreeBSD_ARCH_armv6__ and switch to __ARM_ARCH >= 6 in the
couple of places in tree. clang already implements ACLE. Add a define
that says we implement version 1.1, even though the implementation
isn't quite complete.

273736 27-Oct-2014 hselasky

MFC r263710, r273377, r273378, r273423 and r273455:

- De-vnet hash sizes and hash masks.
- Fix multiple issues related to arguments passed to SYSCTL macros.

Sponsored by: Mellanox Technologies


/freebsd-10-stable/sys/amd64/amd64/fpu.c
arm/busdma_machdep-v6.c
arm/busdma_machdep.c
/freebsd-10-stable/sys/cam/scsi/scsi_sa.c
/freebsd-10-stable/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
/freebsd-10-stable/sys/cddl/dev/dtrace/dtrace_sysctl.c
/freebsd-10-stable/sys/compat/ndis/kern_ndis.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_asus.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_asus_wmi.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_hp.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_ibm.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_rapidstart.c
/freebsd-10-stable/sys/dev/acpi_support/acpi_sony.c
/freebsd-10-stable/sys/dev/bxe/bxe.c
/freebsd-10-stable/sys/dev/cxgb/cxgb_sge.c
/freebsd-10-stable/sys/dev/cxgbe/t4_main.c
/freebsd-10-stable/sys/dev/e1000/if_em.c
/freebsd-10-stable/sys/dev/e1000/if_igb.c
/freebsd-10-stable/sys/dev/e1000/if_lem.c
/freebsd-10-stable/sys/dev/hatm/if_hatm.c
/freebsd-10-stable/sys/dev/ixgbe/ixgbe.c
/freebsd-10-stable/sys/dev/ixgbe/ixv.c
/freebsd-10-stable/sys/dev/ixl/if_ixl.c
/freebsd-10-stable/sys/dev/mpr/mpr.c
/freebsd-10-stable/sys/dev/mps/mps.c
/freebsd-10-stable/sys/dev/mrsas/mrsas.c
/freebsd-10-stable/sys/dev/mrsas/mrsas.h
/freebsd-10-stable/sys/dev/mxge/if_mxge.c
/freebsd-10-stable/sys/dev/oce/oce_sysctl.c
/freebsd-10-stable/sys/dev/qlxgb/qla_os.c
/freebsd-10-stable/sys/dev/qlxgbe/ql_os.c
/freebsd-10-stable/sys/dev/rt/if_rt.c
/freebsd-10-stable/sys/dev/sound/pci/hda/hdaa.c
/freebsd-10-stable/sys/dev/vxge/vxge.c
/freebsd-10-stable/sys/dev/xen/netfront/netfront.c
/freebsd-10-stable/sys/fs/devfs/devfs_devs.c
/freebsd-10-stable/sys/fs/fuse/fuse_main.c
/freebsd-10-stable/sys/fs/fuse/fuse_vfsops.c
/freebsd-10-stable/sys/fs/nfsserver/nfs_nfsdkrpc.c
/freebsd-10-stable/sys/geom/geom_kern.c
/freebsd-10-stable/sys/kern/kern_cpuset.c
/freebsd-10-stable/sys/kern/kern_descrip.c
/freebsd-10-stable/sys/kern/kern_mib.c
/freebsd-10-stable/sys/kern/kern_synch.c
/freebsd-10-stable/sys/kern/subr_devstat.c
/freebsd-10-stable/sys/kern/subr_kdb.c
/freebsd-10-stable/sys/kern/subr_uio.c
/freebsd-10-stable/sys/kern/vfs_cache.c
/freebsd-10-stable/sys/mips/mips/busdma_machdep.c
/freebsd-10-stable/sys/net/if_lagg.c
/freebsd-10-stable/sys/net/pfvar.h
/freebsd-10-stable/sys/net80211/ieee80211_ht.c
/freebsd-10-stable/sys/net80211/ieee80211_hwmp.c
/freebsd-10-stable/sys/net80211/ieee80211_mesh.c
/freebsd-10-stable/sys/net80211/ieee80211_superg.c
/freebsd-10-stable/sys/netgraph/bluetooth/common/ng_bluetooth.c
/freebsd-10-stable/sys/netgraph/ng_base.c
/freebsd-10-stable/sys/netgraph/ng_socket.c
/freebsd-10-stable/sys/netinet/cc/cc_chd.c
/freebsd-10-stable/sys/netinet/tcp_reass.c
/freebsd-10-stable/sys/netipsec/ipsec.h
/freebsd-10-stable/sys/netipx/ipx_proto.c
/freebsd-10-stable/sys/netpfil/pf/if_pfsync.c
/freebsd-10-stable/sys/netpfil/pf/pf.c
/freebsd-10-stable/sys/netpfil/pf/pf_ioctl.c
/freebsd-10-stable/sys/ofed/drivers/net/mlx4/mlx4_en.h
/freebsd-10-stable/sys/powerpc/powermac/fcu.c
/freebsd-10-stable/sys/powerpc/powermac/smu.c
/freebsd-10-stable/sys/powerpc/powerpc/busdma_machdep.c
/freebsd-10-stable/sys/powerpc/powerpc/cpu.c
/freebsd-10-stable/sys/sys/sysctl.h
/freebsd-10-stable/sys/vm/memguard.c
/freebsd-10-stable/sys/vm/vm_kern.c
/freebsd-10-stable/sys/x86/x86/busdma_bounce.c
273735 27-Oct-2014 loos

MFC: r266336, r270230 and r273263

r266336:
Allow us to compile the Ti iic driver for both OMAP4 and AM335x.

r270230:
Rewrite of ti_i2c based on gonzo's patch, fix the following bugs/problems:

. interrupt storm detected on "intr70:"; throttling interrupt source;

. Added access serialization on iicbus_transfer(), previously there was
no such protection and a new transfer could easily confuse the
controller;

. Add error checkings (i.e. stop the transfer when a error is detected
and do _not_ overwrite the previous error);

. On command done interrupt do not assume that the transfer was finished
sucessfully as we will receive the command done interrupt even after
errors;

. Simplify the FIFO handling;

. Reset the FIFO between the transfers as the FIFO may contain data from
the last (failed) transfer;

. Fix the iicbus speed for AM335x, which in turn will make better use of
the I2C noise filter (set to one internal clock cycle);

. Move the read and write handler to ithread instead of notifying the
requesting thread with wakeup(9);

. Fix the comments based on OMAP4 TRM.

The above changes allows me to read the EDID from my HDMI monitor on BBB
with gonzo's patches to support TDA19988 (which does 128 bytes reads) and
repeatedly scan the iicbus (with a modified i2c(8)) without lock up the bus.

r273263:
Fix the chan address for mtx_sleep() on bus wait. Without this fix the
threads waiting for the bus would never wake.

273695 26-Oct-2014 ian

MFC r273590: Accept documented compatible string for PL310 cache controller/

273694 26-Oct-2014 ian

MFC r273561:

Install a temporary workaround to avoid problems in fdt data with linux's
workaround for an imx6 chip erratum by using gpio1_6 as an interrupt.

273686 26-Oct-2014 rpaulo

MFC r273281:
Style changes as pointed out by stas@.

273682 26-Oct-2014 ian

MFC r273353, r273514:

Attach the imx6 CCM driver during BUS_PASS_CPU.

Unconditionally enable the clocks for all imx6 devices that we have drivers
for, or that are required to run the chip (such as busses).

273681 26-Oct-2014 ian

MFC r273352: Ask for the fastest available clock for the GTP timecounter.

273679 26-Oct-2014 ian

MFC r273283:

Attach this driver during BUS_PASS_BUS and move the cpu init code to a
bus_new_pass() handler so it doesn't happen until BUS_PASS_CPU. This allows
the anatop driver to outbid the generic simplebus driver (which the FDT
data describes as compatible).

273676 26-Oct-2014 ian

MFC r272333: Honor exclusion flags when building the memory lists.

273673 26-Oct-2014 ian

MFC r271906:

Make the ARM MPCore Timer driver work with published standard FDT bindings.

273672 26-Oct-2014 ian

MFC r271595, r271601, r271607, r271630:

Add compat strings for all the flavors of GIC this driver should support.
Also allow the driver to attach to ofwbus as well as simplebus, some FDT
data puts the root interrupt controller on the root bus.

Add a common routine for parsing FDT data describing an ARM GIC interrupt.

Use gic_decode_fdt() rather than a local routine to parse fdt interrupt
properties. Move fdt_pic_table and fdt_fixup_table into imx6_machdep.c,
which means imx6 doesn't need imx_common.c anymore.

The private peripheral interrupts start at offset 16, not 0. Also, use
names rather than inline mystery constants for these offsets.

273671 26-Oct-2014 ian

MFC r271594:

Fix an undefined variable that was accidentally not causing an error.

273670 26-Oct-2014 ian

MFC r271550, r271591:

Replace the imx5 and imx6 iomux drivers with a single common driver that
uses the new fdt_pinctrl interface.

273667 26-Oct-2014 ian

MFC r271310:

Rename new to newval in inline asm code, to avoid clashes with C++ new.

273663 26-Oct-2014 ian

MFC r271097, r271100, r271101, r271102, r271124:

- Add a basic iomux driver for imx6.
- Implement the same public interface in imx51 and imx6 iomux
- The iomux driver is no longer optional, remove it from kernel configs.
- Implement the imx_iomux_get/set_gpr() interface for imx6.
- Stop setting the iomux device status to disabled, now that we have a driver.

273662 26-Oct-2014 ian

MFC r268973, r268977: Rename i.MX I2C driver file, enable it on imx6.

273661 26-Oct-2014 ian

MFC r268834, r268835:

o Enable GPIO device driver for i.MX6.
It was originally written for i.MX5 and compatible with newer chip.
o Extend device tree information
o style(9) fixes
o Rename gpio driver file.

273659 26-Oct-2014 ian

MFC r271055, r271084, r271094:

Add a function to get the frequency of the AHB bus. Another stopgap
function until we have full clock support for imx6.

The imx5x and imx6 chips have an onboard IOMUX device which also contains a
few "general purpose registers" whose values control chip behavior in ways
that have nothing to do with IO pin mux control. Define a simple API that
other soc-specific code can use to read and write the registers, and provide
the imx51 implementation of them.

Fix a typo.

273656 26-Oct-2014 ian

MFC r270955,r270956: make the imx6 octop and anatop drivers early attachers.

273652 26-Oct-2014 ian

MFC r270945:

Rename OF_xref_phandle() to OF_node_from_xref() and add a new function
that provides the inverse translation, OF_xref_from_node().

273651 26-Oct-2014 ian

MFC r270025:

Implement the FDT static pinctl/pinmux spec for Atmel.

273650 26-Oct-2014 ian

MFC r257200, r259121, r261410, r265853:

- Remove #include <machine/frame.h>.
- Add gpio parse routines according to sys/boot/fdt/dts/bindings-gpio.txt.
- Follow r261352 by updating all drivers which are children of simplebus
to check the status property in their probe routines.
- Rename platform_gpio_init to be SoC specific, and make it static as it's
only called from this file.

This is mostly catching up on some old MFCs that were done before this file
existed in the 10 branch.

273645 25-Oct-2014 ian

MFC r268633, r271046:

Fixes and enhancements for the if_cgem driver...

- miibus fixes as suggested by Yonghyeon Pyun.
- enable VLAN MTU support.
- fix a few WITNESS complaints in cgem_attach().
- have cgem_attach() properly init the ifnet struct before calling
mii_attach() to fix panic when using e1000phy.
- fix ethernet address changing.
- fix transmit queue overflow handling.
- tweak receive queue handling to reduce receive overflows.
- bring out MAC statistic counters to sysctls.
- add e1000phy to config file.
- implement receive hang work-around described in reference guide.
- change device name from if_cgem to cgem to be consistent with other
interfaces.

Fix the Zedboard/Zynq ethernet driver to handle media speed changes so
that it can connect to switches at speeds other than 1gb.

273626 25-Oct-2014 rpaulo

MFC r273261:
Remove an unused mutex.

273625 25-Oct-2014 rpaulo

MFC r273258:
Make the ti_mbox and ti_pruss drivers optional.

273624 25-Oct-2014 rpaulo

MFC r273257:
Add a driver for the TI watchdog.

The TI watchdog timer is present on BeagleBone's. Since 2014, U-Boot
has been booting the BeagleBone with the watchdog enabled. We need
to
disable it on boot to avoid a spurious reset.
The timer isn't exactly precise, but it will do as a watchdog. This
is also a reflection of the watchdog(9) API.

In the future, we could handle interrupts, but the watchdog(9) API
needs to be a bit smarter before that can happen.

271746 18-Sep-2014 tuexen

MFC r270673:
Announce SCTP support in the kern.features sysctl variables.

MFC r270859:
Enable SCTP support. It runs perfectly fine on a Wandboard quad.

MFC r271204 with manual intervention:
Fix the handling of sysctl variables when used with VIMAGE.
While there do some cleanup of the code.

MFC r271209:
Fix a leak of an address, if the address is scheduled for removal
and the stack is torn down.
Thanks to Peter Bostroem and Jiayang Liu from Google for reporting the
issue.

MFC r271219:
Use SYSCTL_PROC instead of SYSCTL_VNET_PROC.
Suggested by: glebius@

MFC r271221:
Use union sctp_sockstore instead of struct sockaddr_storage. This
eliminates some warnings when building in userland.
Thanks to Patrick Laimbock for reporting this issue.
Remove also some unnecessary casts.
There should be no functional change.

MFC r271228:
Address another warnings reported by Patrick Laimbock when compiling
in userspace. While there, improve consistency.

MFC r271230:
Address warnings generated by the clang analyzer.

Approved by: re (kib)

271428 11-Sep-2014 ian

Disable debugging-related options in all ARM kernel configs for stable-10.
This is a direct commit to stable-10. The following options are disabled
in all arm kernel configs:

DEADLKRES
DIAGNOSTIC
INVARIANTS
INVARIANTS_SUPPORT
WITNESS
WITNESS_SKIPSPIN
Approved by: re(gjb)

271339 09-Sep-2014 ian

MFC r271050: Disable DIAGNOSTIC on low-end ARM platforms.

Approved by: re(gjb)

271337 09-Sep-2014 ian

MFC r270882, r270930:

In ARM asm code, ensure that every ENTRY(foo) has a matching END(foo).
The EABI unwind info requires a .fnend for every .fnstart, and newer
binutils will complain about seeing two .fnstart in a row. This change
allows newer tools to compile our code.

Do not generate unwind info in asm functions if _STANDALONE is defined.
The .fnend op causes the assembler to emit RELOC references to unwind
support functions that don't exist in libstand.

Approved by: re(gjb)

271330 09-Sep-2014 ian

MFC r270065:

Move the imx6 sysctl temperature info to hw.imx6 where all the other
soc-wide info lives. It was under dev.imx6_anatop.0.

Approved by: re(gjb)

271329 09-Sep-2014 ian

MFC r270858, 270879:

Remove duplicated option FDT from individual Wandboard configs, leave
the one in the common IMX6 file that they all include.

Approved by: re(gjb)

271327 09-Sep-2014 ian

MFC r270862, r270878: MMU fixes for kernel startup.

Fix the handling of MMU type in the AP entry code. The ARM_MMU_V6/V7
symbols are always #defined to 0 or 1, so use #if SYM not #if defined(SYM).
Also, it helps if you include the header file that defines the symbols.

The Marvell PJ4B cpu family is armv7, not armv6.

Approved by: re(gjb)

271051 03-Sep-2014 marius

MFC: r270885, r270948

- Nuke unused sdhci_softc.
- Static'ize sdhci_debug local to sdhci.c.
- Const'ify PCI device description strings.
- Nuke redundant resource ID members from sdhci_pci_softc.
- Nuke unused hw.sdhci_pci.debug tunable.
- Add support for using MSI instead of INTx, controllable via the tunable
hw.sdhci.enable_msi (defaulting to on) and tested with a RICOH R5CE823 SD
controller.
- Use NULL instead of 0 for pointers.

270920 01-Sep-2014 kib

Fix a leak of the wired pages when unwiring of the PROT_NONE-mapped
wired region. Rework the handling of unwire to do the it in batch,
both at pmap and object level.

All commits below are by alc.

MFC r268327:
Introduce pmap_unwire().

MFC r268591:
Implement pmap_unwire() for powerpc.

MFC r268776:
Implement pmap_unwire() for arm.

MFC r268806:
pmap_unwire(9) man page.

MFC r269134:
When unwiring a region of an address space, do not assume that the
underlying physical pages are mapped by the pmap. This fixes a leak
of the wired pages on the unwiring of the region mapped with no access
allowed.

MFC r269339:
In the implementation of the new function pmap_unwire(), the call to
MOEA64_PVO_TO_PTE() must be performed before any changes are made to the
PVO. Otherwise, MOEA64_PVO_TO_PTE() will panic.

MFC r269365:
Correct a long-standing problem in moea{,64}_pvo_enter() that was revealed
by the combination of r268591 and r269134: When we attempt to add the
wired attribute to an existing mapping, moea{,64}_pvo_enter() do nothing.
(They only set the wired attribute on newly created mappings.)

MFC r269433:
Handle wiring failures in vm_map_wire() with the new functions
pmap_unwire() and vm_object_unwire().
Retire vm_fault_{un,}wire(), since they are no longer used.

MFC r269438:
Rewrite a loop in vm_map_wire() so that gcc doesn't think that the variable
"rv" is uninitialized.

MFC r269485:
Retire pmap_change_wiring().

Reviewed by: alc

270439 24-Aug-2014 kib

Merge the changes to pmap_enter(9) for sleep-less operation (requested
by flag). The ia64 pmap.c changes are direct commit, since ia64 is
removed on head.

MFC r269368 (by alc):
Retire PVO_EXECUTABLE.

MFC r269728:
Change pmap_enter(9) interface to take flags parameter and superpage
mapping size (currently unused).

MFC r269759 (by alc):
Update the text of a KASSERT() to reflect the changes in r269728.

MFC r269822 (by alc):
Change {_,}pmap_allocpte() so that they look for the flag
PMAP_ENTER_NOSLEEP instead of M_NOWAIT/M_WAITOK when deciding whether
to sleep on page table page allocation.

MFC r270151 (by alc):
Replace KASSERT that no PV list locks are held with a conditional
unlock.

Reviewed by: alc
Approved by: re (gjb)
Sponsored by: The FreeBSD Foundation

270262 21-Aug-2014 dumbbell

vt(4): Colors are indexed against a console palette, not a VGA palette

Rename vt_generate_vga_palette() to vt_generate_cons_palette() and
change it to build a palette where the color index is the same than in
terminal escape codes, not the VGA index. That's what TCHAR_CREATE()
uses and passes to vt(4).

The main differences between both orders are:
o Blue and red are swapped (1 <-> 4)
o Yellow and cyan are swapped (3 <-> 6)

The problem remained unnoticed, because the RGB bit indexes passed to
vt_generate_vga_palette() were reversed. This inversion was cancelled
by the colors inversions in the generated palette. For instance, red
(0xff0000) and blue (0x0000ff) have bytes in opposite order, but were
swapped in the palette. But after changing the value of blue (see last
paragraph), the modified color was in fact the red one.

While here, tune the palette to better match console colors and improve
the readability (especially the dark blue).

This is an MFC of r269783 and r269791.

270243 20-Aug-2014 loos

MFC r267021:

FreeBSD, historically, has always used 8-bit addresses for i2c devices
(7-bit device address << 1), always leaving the room for the read/write
bit.

This commit convert ti_i2c and revert r259127 on bcm2835_bsc to make them
compatible with 8-bit addresses. Previous to this commit an i2c device
would have different addresses depending on the controller it was attached
to (by example, when compared to any iicbb(4) based i2c controller), which
was a pretty annoying behavior.

Also, update the PMIC i2c address on beaglebone* DTS files to match the
new address scheme.

Now the userland utilities need to do the correct slave address shifting
(but it is going to work with any i2c controller on the system).

Discussed with: ian

MFC r267834:

Clarify the expected usage of I2C 7-bit slave addresses on ioctl(2)
interface.

While here add the cross reference to iic(4) on iicbus(4).

CR: D210
Suggested by: jmg

270241 20-Aug-2014 loos

MFC r266923:

Ignore IIC_ENOADDR from iicbus_reset() as it only means we have a
master-only controller.

This fixes the iic bus scan with i2c(8) (on supported controllers).

Tested with gpioiic(4).

MFC r267009:

Remove the unnecessary i2c slave address assignment.

The ti_i2c controller only works in the master mode and the i2c address
passed on iicbus_reset() is used to set the controller slave address when
operating as an i2c slave (which isn't currently supported).

When talking to a slave, the slave address is correctly provided to
ti_i2c_tranfer().

270238 20-Aug-2014 loos

MFC r266960:

Configure the analog input 7 which, on BBB, is connected to the 3V3B rail
through a voltage divisor (R163 and R164 on page 4 of BBB schematic).

Add a note about this on ti_adc(4) man page. The ti_adc(4) man page will
first appear on 10.1-RELEASE.

Suggested by: Sulev-Madis Silber (ketas)
Manual page reviewed by: brueffer (D127)

270237 20-Aug-2014 loos

MFC r266937:

Export two new settings for the AM335x PWM, the clock prescaler (clkdiv)
and the actual PWM frequency.

Enforce the maximum value for the period sysctl.

The frequency systcl now allows the direct setting of the PWM frequency
(it will try to find the better clkdiv and period for a given frequency,
i.e. the ones that will give the better PWM resolution).

This allows the use lower frequencies on the PWM. Without changing the
clock prescaler the minimum PWM frequency was 1.52kHz.

PWM frequencies checked with an osciloscope.

PWM output tested with some R/C servos at 50Hz.

270077 17-Aug-2014 ian

MFC r269646: Use a SYSINIT to init the array of interrupt names on arm.

270076 17-Aug-2014 ian

MFC r269607, r269698:

Cache the imx6 SoC type in a static var so that it only has to be figured
out by sniffing hardware registers once.

Add a missing clock register definition.

270075 17-Aug-2014 ian

MFC r269594, r269596, r269597, r269598, r269605, r269606:

Set ofwbus and simplebus to attach during BUS_PASS_BUS.

Define names that drivers can use to adjust their position relative to
other drivers within a BUS_PASS

Adjust ofwbus and simplebus to attach at BUS_PASS_ORDER_MIDDLE, so that
a platform can attach some other bus first if necessary.

Set the pl310 L2 cache driver to attach during the middle of BUS_PASS_CPU.

Attach arm generic interrupt and timer drivers in the middle of
BUS_PASS_INTERRUPT and BUS_PASS_TIMER, respectively.

Add an arm option, ARM_DEVICE_MULTIPASS, used to opt-in to multi-pass
device attachment on arm platforms. If this is defined, nexus attaches
early in BUS_PASS_BUS, and other busses and devices attach later, in the
pass number they are set up for. Without it defined, nexus attaches in
BUS_PASS_DEFAULT and thus so does everything else, which is status quo.

269798 11-Aug-2014 ian

MFC r269403, r269405, r269410, r269414:

Add 64-bit atomic ops for armv6, and also for armv4 only in kernel code.
Use the new ops in the cddl code (and avoid defining functions with the
same names locally).

269797 11-Aug-2014 ian

MFC r269393, r269394, r269395:

Fix parsing of arch extensions in binutils/gas.
Use ".arch_extension sec" when compiling ARM TI code that uses the
security extensions.

269796 11-Aug-2014 ian

MFC r269390: Fix unwind info in hand-written asm (avoid nested functions).

269794 11-Aug-2014 ian

MFC r269206, r269207, r269208, r269209, r269210, r269211, r269212, r269213,
r269214, r269215, r269216, r269217, r269221:

busdma-v6 improvements, primarily:
- Allocate the temporary segments array per-map rather than per-tag.
- Avoid needlessly bouncing IO for mbufs and buffers allocated by
bus_dmamem_alloc() (in both situations we known they're allocated
on cacheline boundaries and don't need bouncing).
- Various minor reformatting and cleanups.

269792 10-Aug-2014 ian

MFC r268993, r268893, r268994, plus partial r264070, r264082

Fix C++ exception handling for ARM EABI.

Just the part of r264070 that creates the FBSD_1.4 namespace in libc
is hand-applied, and then r264082 which creates the Versions.def entry
is MFC'd.

269679 07-Aug-2014 ian

MFC r256691, r256748: casuword fixes

Use unsigned compare against KERNBASE addr.
Use atomic ops on armv6.

269104 25-Jul-2014 ian

MFC r268401, r268495:

Pending interrupt status is cleared by writing to the ISR, not the data reg.

Use named constant rather than '0' to access the reset controller register.

269103 25-Jul-2014 ian

MFC r266565, r266651:

Map device memory using PTE_DEVICE attributes, and also ensure that the
shared flag is set on normal-memory mappings made via pmap_kenter() for SMP.

The "shared flag" part of this change isn't obvious from the diff, here's
the deal... by using the array of preformatted page table entry templates
instead of constructing the PTE from scratch, we automatically get the
right attribute bits set for both caching and shared.

Fix whitespace glitches.

269072 24-Jul-2014 kib

MFC r267213 (by alc):
Add a page size field to struct vm_page.

Approved by: alc

268813 17-Jul-2014 imp

MFC r263749,267146:

>r267146 | imp | 2014-06-05 22:08:55 -0600 (Thu, 05 Jun 2014) | 4 lines
>Restore comments accidentally removed.

>r263749 | imp | 2014-03-25 16:08:31 -0600 (Tue, 25 Mar 2014) | 18 lines
>Rather than require a makeoptions DEBUG to get debug correct,
>add it in kern.mk, but only if we're using clang. While this
>option is supported by both clang and gcc, in the future there
>may be changes to clang which change the defaults that require
>a tweak to build our kernel such that other tools in our tree
>will work. Set a good example by forcing -gdwarf-2 only for
>clang builds, and only if the user hasn't specified another
>dwarf level already. Update UPDATING to reflect the changed
>state of affairs. This also keeps us from having to update
>all the ARM kernels to add this, and also keeps us from
>in the future having to update all the MIPS kernels and is
>one less place the user will have to know to do something
>special for clang and one less thing developers will need
>to do when moving an architecture to clang.

266755 27-May-2014 ian

MFC 266621: Eliminte spurious interrupts caused by ARM weak memory ordering.

266751 27-May-2014 ian

MFC r264096, r264097, r264099 r264100, r264101, r264102, r264119:

Fixes to the ti_sdhci and sdhci drivers (fix clock divisor calcs).

Use the ti_sdhci driver instead of ti_mmchs for Pandaboard.

266412 18-May-2014 ian

MFC 258287: Implement pmap_align_superpage().

266409 18-May-2014 ian

MFC 257231:

Make sure the PCB is aligned on 8 bytes, we may use ldrd/strd to access it,
which may have strong alignment requirements.

266408 18-May-2014 ian

MFC 257189:

Fix an itt instruction. We need to execute both the mov and b instructions
when building for Thumb.

266406 18-May-2014 ian

MFC 256942, 256943:

- Fix a typo.
- Use bus_dmamap_unload(), it is not optional.
- The new allocator won't return coherent memory for any size > PAGE_SIZE,
so don't assume we have coherent memory, and explicitely use
bus_dmamap_sync().

266405 18-May-2014 ian

MFC 256873: Make watchdog function conform watchdog(9):

266404 18-May-2014 ian

MFC 256941: make sure the frame is indeed in the kernel memory.

266397 18-May-2014 ian

MFC 265624, 265739: Fix interrupt parent property in dts, add SMP support.

266388 18-May-2014 ian

MFC 265913, 265914:

Interrupts need to be disabled on entry to cpu_sleep() for ARM. Given
that and the need to be in a critical section when switching to idleclock
mode for event timers, use spinlock_enter()/exit() to achieve both needs.

Clean up some style nits.

266387 18-May-2014 ian

MFC 265861, 265870:

Make the hardware memory and instruction barrier functions work on armv4
and armv5 as well.

Add cpu_l2cache_drain_writebuf(), use it to implement generic_bs_barrier().

266386 18-May-2014 ian

MFC 265852: Map device memory using PTE_DEVICE rather than PTE_NOCACHE.

266385 18-May-2014 ian

MFC 265694, 265705, 265784:

Move the mptramp code which is specific to the Marvell ArmadaXP SoC out of
the common locore.S file and into the mv/armadaxp directory.

Consolidate all the AP core startup stuff under a single #ifdef SMP block

Call idcache_inv_all from the AP core entry code before turning on the MMU.
Also, enable instruction and branch caches, which should be safe now that
they're properly initialized/invalidated first.

266384 18-May-2014 ian

MFC 265440, 265441, 265444, 265445, 265446, 265447:

Move the pl310.enabled tunable to hw.pl310.enabled. Clean up a few minor
style(9) nits. Use DEVMETHOD_END.

Break out the code that figures out the L2 cache geometry to its own
routine, so that it can be called from multiple places in upcoming changes.

Call platform_pl310_init() before enabling the controller, and handle the
case where the controller is already enabled.

Add defines for the bits in the PL310 debug control register.

Add a public routine to set the L2 cache ram latencies. This can be
called by platform init routines to fine-tune cache performance.

Enable PL310 power-saving modes and tune the cache ram latencies for imx6.

266383 18-May-2014 ian

MFC 265155, 265254:

Omit from the universe build all config files tagged with #NO_UNIVERSE.

Add FDT to the VYBRID kernel.

266381 17-May-2014 ian

MFC 265207: Use arm_devmap_add_entry() to setup static device mapping.

266380 17-May-2014 ian

MFC 265156: Remove WANDBOARD.common, it was replaced by IMX6.

266379 17-May-2014 ian

MFC 265099, 265148, 265690:

Add SMP support for Zedboard.

Use edge-triggered interrupts rather than polling loops to avoid missing
transitions of the INIT_B line. Also, release the mutex during uiomove().

Convert the Zynq SoC support to the new routines for static device mapping.

266378 17-May-2014 ian

MFC 265111: Make a declaration into a proper function prototype.

266375 17-May-2014 ian

MFC 265035: Move duplicated code to print l2 config into the common code.

266374 17-May-2014 ian

MFC 265023, 265024, 265036:

There is no difference between IPI_STOP and IPI_STOP_HARD on ARM, so
map them both to the same interrupt number like other arches do.

Flush and invalidate caches on each CPU as part of handling IPI_STOP.

Don't use multiprocessing-extensions instruction on processors that don't
support SMP.

266373 17-May-2014 ian

MFC 264990, 264994, 265020, 265025:

Call cpu_icache_sync_range() rather than sync_all since we know the range
and flushing the entire icache is needlessly expensive.

Provide a proper armv7 implementation of icache_sync_all rather than
using armv7_idcache_wbinv_all, because wbinv_all doesn't broadcast the
operation to other cores. In elf_cpu_load_file() use icache_sync_all()
and explain why it's needed (and why other sync operations aren't).

Remove cpu_idcache_wbinv_all() from kdb_cpu_trap(), it's no longer needed.

Explain why wbinv_all is SMP-safe when dumping, and add a missing l2 cache
flush. (Either it was missing here, or it isn't needed in the minidump
case. Adding it here seems like the safer path to consistancy.)

266371 17-May-2014 ian

MFC 264977:

Stop calling imx51_ccm_foo() clock functions from imx6 code. Instead
define a few imx_ccm_foo() functions that are implemented by the imx51
or imx6 ccm code.

266369 17-May-2014 ian

MFC 264702: Remove uncessary armv6 cache and TLB maintenance ops.

266365 17-May-2014 ian

MFC 264251: Updates to i.MX53:

* Define support for the SDHCI driver, although it doesn't work yet
* Fix the memory mappings for IPU

266363 17-May-2014 ian

MFC 264219: Move sys/arm/econa to sys/arm/cavium/cns11xx.

266362 17-May-2014 ian

MFC 264203, 264204, 264206, 264218:

Tell VM we now have ARM platforms with physically discontiguous memory.

Define the full 1024M of ram on the imx51 and imx53 boards.

Use a more professional uart device description.

266360 17-May-2014 ian

MFC 264180, 264181, 264182:

Follow files.imx51 and add vt support for imx53.

Add fsl,imx53 compatible string.

Need to include machine/fdt.h in vt_early_fb.c

266359 17-May-2014 ian

MFC 264160: Remove code under PMAP_CACHE_VIVT, not compiled on armv6.

266358 17-May-2014 ian

MFC 264150: Exynos: Correct the end address of the video frame buffer.

266357 17-May-2014 ian

MFC 264183: Add a couple more required TLB flushes.

266356 17-May-2014 ian

MFC 264137: Switch wandboards over to the common IMX6 kernel config, which
has SMP enabled. Also switch IMX6 to use SCHED_ULE.

266355 17-May-2014 ian

MFC 264137: Switch wandboards over to the common IMX6 kernel config, which
has SMP enabled. Also switch IMX6 to use SCHED_ULE.

266353 17-May-2014 ian

MFC 264128, 264129, 264130, 264135,

Fix TTB set operation for armv7. Perform sychronization (by "isb" barrier)
after TTB is set.

Fix TLB maintenance issues for armv6 and armv7.

- Add cpu_cpwait to comply with the convention.
- Add missing TLB invalidations, especially in pmap_kenter & pmap_kremove
with distinguishing between D and ID pages.
- Modify pmap init/bootstrap invalidations to ID, just to be safe.
- Fix TLB-inv and PTE_SYNC ordering.

Allocate per-cpu resources for doing pmap_zero_page() and pmap_copy_page().
This is performance enhancement rather than bugfix.

We don't support any ARM systems with an ISA bus and don't need a freelist
of memory to support ISA addressing limitations.

266352 17-May-2014 ian

MFC 264052, 264057, 264065, 264094, 264103, 264120

Actually save the mpcore clock frequency retrieved from fdt data.

imx6..
- Don't call sdhci_init_slot() until after handling the FDT properties
related to detecting card presence.
- Flag several sysctl variables as tunables.
- Rework the cpu frequency management code for imx6 to add "operating
points" and min/max frequency controls.

generic timer...
- Setup both secure and non-secure timer IRQs.
We don't know our ARM security state, so one of them will operate.
- Don't set frequency, since it's unpossible in non-secure state.
Only rely on DTS clock-frequency value or get clock from timer.

266348 17-May-2014 ian

MFC 264054, 264056

Switch imx6 to using the mpcore per-cpu event timers, but continue to use
the GPT timer, which is fixed-frequency, as a timecounter.

Change NO_EVENTTIMERS from an arm-specific to an MI option, so that it can
be used in MI code.

266347 17-May-2014 ian

MFC 264019, 264041, 264048, 264049, 264050, 264051

Add support for event timers whose clock frequency can change while running.

Apparently all ARM configs build kern_et.c, but only a few of them also
build kern_clocksource.c, un-break the build by not referencing functions in
kern_clocksource if NO_EVENTTIMERS is defined.

Add variable-frequency support to the arm mpcore eventtimer driver.

mpcore_timer: Disable the timer and clear any pending bit, then setup the
new counter register values, then restart the timer. Also re-nest the parens
properly for casting the result of converting time and frequency to a count.

266341 17-May-2014 ian

MFC 263910, 263913, 263914, 263933, 263934, 263935, 263936, 263981, 263982,

Add more flags for the fpexc register from the ARM1176JZF-S Manual

Initialise fpscr to a sane value when we create the pcb. This sets NaNs to
be the default NaN and for denormalised numbers to be flushed to zero.

VFP fixes/cleanups for ARM11:
* Save the required VFP registers on context switch. If the exception bit
is set we need to save and restore the FPINST register, and if the fp2v
bit is also set we need to save and restore FPINST2.
* Move saving and restoring the floating point control registers to C.
* Clear the fpexc exception and fp2v flags on a floating-point exception.
* Signal a SIGFPE if the fpexc exception flag is set on an undefined
instruction. This is how the ARM core signals to software there is a
floating-point exception.

Add Cortex-A15 cpu id revisions.

Exynos/Arndale...
- Merge SoC-common parts
- Enable iicbus device
- Directly call kmem_alloc_contig to allocate framebuffer memory
and pass VM_MEMATTR_UNCACHEABLE (no-cache, no-buffer).
This fixes screen refreshing problem when data is updated too slowly.
- Add support for keyboard used in Samsung Chromebook (ARM machine)
Support covers device drivers for:
- Interrupt Combiner
- gpio/pad, External Interrupts Controller (pad)
- I2C Interface
- Chrome Embedded Controller
- Chrome Keyboard
- Use new gpio dev class in EHCI driver
- Expand device tree information
- Release i2c bus on detach.

266338 17-May-2014 loos

Adds the ADC driver for TI AM3xxx SoC family.

The ADC has a 12bit resolution and its raw output can be read via sysctl(8)
interface.

The driver allows the setup of ADC clock, samples average and open delay
(the number of clock cycles to wait before start the conversion).

The TSC_ADC module is set in the general purpose mode (no touchscreen
support).

Tested on Beaglebone-black.

Written based on AM335x TRM.

266337 17-May-2014 ian

MFC 263631, 263637, 263664, 263676, 263679, 263698, 263711,

Implement __flt_rounds for ARMv6 hard-float. The fpscr register stores the
current rounding mode used by the VFP unit.

Simplify how we build MACHINE_ARCH. There are 3 options that may be set
however only arm, armeb, armv6, and soon armv6hf will be used.

Add the llvm/clang patch for r263619.

Reorder the pmap macros so "ARM_MMU_V6 + ARM_MMU_V7" is first. As they are
identical this allows us to build for both v6 and v7 together.

Add code for enabling second CPU core for A20 SoC.
Enable SMP on Cubieboard2.

Switch to freebsd.org emal address in copyright.

266332 17-May-2014 ian

MFC 263250, 263251, 263424, 263425, 263426, 263427, 263430, 263431

Use the same cache terminology as the ARM docs in comments. No
functional changes.

Use armv7 TLB flush code, not arm11, for cortex-a processors.

Exynos/ Arndale...
- Disable debugging by default.
- Add display-related and clk devices to the tree
- Prevent resources intersection with EHCI driver
- Add display-related and clk devices to the tree
- Prevent resources intersection with EHCI driver
- Add driver for Display Controller.
- Add support for Samsung Chromebook (ARM Cortex A15 machine).
- Rename mct and ehci drivers files to match common naming.

266331 17-May-2014 ian

MFC 263301

In kernel config files, it is supposed to be 'options<space><tab>' not
'options<tab><tab>', per long standing (but recently not so strictly
enforced) convention.


/freebsd-10-stable/sys/amd64/conf/NOTES
conf/AC100
conf/ARMADAXP
conf/ARNDALE
conf/ATMEL
conf/AVILA
conf/BEAGLEBONE
conf/BWCT
conf/CAMBRIA
conf/CNS11XXNAS
conf/COLIBRI-VF50
conf/COSMIC
conf/CRB
conf/CUBIEBOARD
conf/CUBIEBOARD2
conf/DB-78XXX
conf/DB-88F5XXX
conf/DB-88F6XXX
conf/DIGI-CCWMX53
conf/DOCKSTAR
conf/DREAMPLUG-1001
conf/EA3250
conf/EB9200
conf/EFIKA_MX
conf/EP80219
conf/ETHERNUT5
conf/GUMSTIX
conf/HL200
conf/HL201
conf/IMX53-QSB
conf/IMX6
conf/IQ31244
conf/KB920X
conf/LN2410SBC
conf/NSLU
conf/PANDABOARD
conf/QILA9G20
conf/QUARTZ
conf/RADXA
conf/RPI-B
conf/SAM9260EK
conf/SAM9G20EK
conf/SAM9X25EK
conf/SHEEVAPLUG
conf/SN9G45
conf/TS7800
conf/VERSATILEPB
conf/VYBRID.common
conf/WANDBOARD.common
conf/ZEDBOARD
/freebsd-10-stable/sys/i386/conf/NOTES
/freebsd-10-stable/sys/i386/conf/XEN
/freebsd-10-stable/sys/ia64/conf/GENERIC
/freebsd-10-stable/sys/mips/conf/ALCHEMY
/freebsd-10-stable/sys/mips/conf/AP121
/freebsd-10-stable/sys/mips/conf/AP91
/freebsd-10-stable/sys/mips/conf/AP93
/freebsd-10-stable/sys/mips/conf/AP94
/freebsd-10-stable/sys/mips/conf/AP96
/freebsd-10-stable/sys/mips/conf/AR71XX_BASE
/freebsd-10-stable/sys/mips/conf/AR724X_BASE
/freebsd-10-stable/sys/mips/conf/AR91XX_BASE
/freebsd-10-stable/sys/mips/conf/AR933X_BASE
/freebsd-10-stable/sys/mips/conf/AR934X_BASE
/freebsd-10-stable/sys/mips/conf/CARAMBOLA2
/freebsd-10-stable/sys/mips/conf/ENH200
/freebsd-10-stable/sys/mips/conf/PB47
/freebsd-10-stable/sys/mips/conf/PB92
/freebsd-10-stable/sys/mips/conf/PICOSTATION_M2HP
/freebsd-10-stable/sys/mips/conf/ROUTERSTATION
/freebsd-10-stable/sys/mips/conf/ROUTERSTATION_MFS
/freebsd-10-stable/sys/mips/conf/RSPRO
/freebsd-10-stable/sys/mips/conf/RSPRO_MFS
/freebsd-10-stable/sys/mips/conf/RSPRO_STANDALONE
/freebsd-10-stable/sys/mips/conf/RT305X
/freebsd-10-stable/sys/mips/conf/SENTRY5
/freebsd-10-stable/sys/mips/conf/SWARM64_SMP
/freebsd-10-stable/sys/mips/conf/SWARM_SMP
/freebsd-10-stable/sys/mips/conf/TP-WN1043ND
/freebsd-10-stable/sys/mips/conf/WZR-300HP
/freebsd-10-stable/sys/mips/conf/XLRN32
/freebsd-10-stable/sys/mips/conf/std.SWARM
/freebsd-10-stable/sys/mips/conf/std.XLP
/freebsd-10-stable/sys/powerpc/conf/GENERIC
/freebsd-10-stable/sys/powerpc/conf/GENERIC64
/freebsd-10-stable/sys/powerpc/conf/MPC85XX
/freebsd-10-stable/sys/powerpc/conf/NOTES
266328 17-May-2014 ian

MFC 263245: Make all the comments '# ' and align to same column.

266313 17-May-2014 ian

MFC 263199, 263207

Fix error mesasge in dtc.

Add tmpfs, mbr, and bsdlabel options back to wandboard kernel config.

266312 17-May-2014 ian

MFC 263036, 263059: delete advertising clause in licenses, renumber.

266311 17-May-2014 ian

MFC 262952, 262958, 262966, 262979, 262980, 262986, 262987, 262995, 262997,
263030, 263033, 263034, 263056, 263057,

Remove all the redundant external declarations of exception vectors and
runtime setting of the pointers that's scattered around various places.

Remove all traces of support for ARM chips prior to the arm9 series.

Make the default exception handler vectors point to where I thought they
were already pointing: the default handlers (not a panic that says there
is no default handler).

Eliminate irq_dispatch.S. Move the data items it contained into
arm/intr.c and the functionality it provided into arm/exception.S.

Move the exception vector table (so-called "page0" data) into exception.S
and eliminate vectors.S.

Change the way the asm GET_CURTHREAD_PTR() macro is defined so that code
using it doesn't have to have an "AST_LOCALS" macro somewhere in the file.

Arrange for arm fork_trampoline() to return to userland via the standard
swi_exit code in exception.S instead of having its own inline expansion
of the DO_AST and PULLFRAME macros.

Now that the PUSHFRAME and PULLFRAME macros are used only in the swi
entry/exit code, they don't need to be macros. Except that didn't work
and the whole change was reverted.

Remove some unnecessary indirection and jump right to the handler functions.

Use panic rather than printf to "handle" an arm26 address exception
(should never happen on arm32).

Remove the unreferenced DATA() macro.

Remove #include <machine/asmacros.h> from files that don't need it.

266277 17-May-2014 ian

MFC 257774, 256760, 262916, 262905, 262918, 262919, 262920, 262921, 262924,
262925, 262929, 262932, 262935, 262940, 262941, 262942, 262948, 262949,
262950

Strip arm/conf/DEFAULTS down to just items that are mandatory for running
the architecture.

Move all the files named foo/common.c to foo/foo_common.c

Initial cut for DTS on the hl201 board.

Add commented out dts for sam9260ek as well as early printf support.

Make clock optional on uart nodes, then back it out ("I don't know what I
was thinking, but it is lame.")

Set the baud rate if it isn't 0

Make at91_soc_id() public.

Properly round at91 resource on unmapping.

Move AT91 AIC related stuff to own file.

Fix another bug in multicast filtering. i.MX uses 6 bits from MSB in
LE CRC32 for the hash value, not the lowest 6 bits in BE CRC32.

Follow r262916 with one more config file that references a renamed common.c

Remove bogus AT91 define that causes compile errors. Most of the defines
for SAM9X are going away soonish anyway (once FDT works), but until
then...

Remove all dregs of a per-thread undefined-exception-mode stack.

Rework the VFP code that handles demand-based save and restore of state.

Always call vfp_discard() on thread death.

When a thread begins life it doesn't own the VFP hardware state on any cpu.

Make undefined exception entry MP-safe.


allwinner/a10_common.c
allwinner/a20/files.a20
allwinner/common.c
allwinner/files.a10
arm/exception.S
arm/genassym.c
arm/machdep.c
arm/swtch.S
arm/undefined.c
arm/vfp.c
arm/vm_machdep.c
at91/at91.c
at91/at91_aic.c
at91/at91rm9200.c
at91/at91sam9g20.c
at91/at91sam9g20reg.h
at91/at91sam9x5.c
at91/files.at91
broadcom/bcm2835/bcm2835_common.c
broadcom/bcm2835/bus_space.c
broadcom/bcm2835/common.c
broadcom/bcm2835/files.bcm2835
conf/AC100
conf/ARMADAXP
conf/ARNDALE
conf/ATMEL
conf/AVILA
conf/BEAGLEBONE
conf/BWCT
conf/CAMBRIA
conf/CNS11XXNAS
conf/CRB
conf/CUBIEBOARD
conf/CUBIEBOARD2
conf/DB-78XXX
conf/DB-88F5XXX
conf/DB-88F6XXX
conf/DEFAULTS
conf/DIGI-CCWMX53
conf/DOCKSTAR
conf/DREAMPLUG-1001
conf/EA3250
conf/EB9200
conf/EFIKA_MX
conf/EP80219
conf/ETHERNUT5
conf/GUMSTIX
conf/HL200
conf/HL201
conf/IMX53-QSB
conf/IMX6
conf/IQ31244
conf/KB920X
conf/LN2410SBC
conf/NSLU
conf/PANDABOARD
conf/QILA9G20
conf/RADXA
conf/RPI-B
conf/SAM9260EK
conf/SAM9G20EK
conf/SAM9X25EK
conf/SHEEVAPLUG
conf/SIMICS
conf/SN9G45
conf/TS7800
conf/VERSATILEPB
conf/VYBRID.common
conf/ZEDBOARD
freescale/imx/common.c
freescale/imx/files.imx51
freescale/imx/files.imx53
freescale/imx/files.imx6
freescale/imx/imx_common.c
include/param.h
include/pcb.h
include/pcpu.h
include/vfp.h
mv/common.c
mv/files.mv
mv/mv_common.c
mv/mvreg.h
rockchip/common.c
rockchip/files.rk30xx
rockchip/rk30xx_common.c
samsung/exynos/common.c
samsung/exynos/exynos5_common.c
samsung/exynos/files.exynos5
tegra/common.c
tegra/files.tegra2
tegra/tegra2_common.c
ti/common.c
ti/files.ti
ti/ti_common.c
versatile/common.c
versatile/files.versatile
versatile/versatile_common.c
/freebsd-10-stable/sys/boot/fdt/dts/arm/hl201.dts
/freebsd-10-stable/sys/dev/ffec/if_ffec.c
/freebsd-10-stable/sys/dev/uart/uart_bus_fdt.c
266275 16-May-2014 ian

MFC 258211, 257775, 258096,

Add mbox and pruss drivers to ti build.

Use common bus_space-v6 instead of local copies.

266274 16-May-2014 ian

MFC 262695, 262708, 262709, 262710, 262711, 262728, 262870, 262877, 262880,
262885, 262891, 262903,

imx6: Add a tunable to set the number of active cores, enable SMP by default.

ffec: Fix multicast filtering.

Allwinner a10/a20...
- Add gpio and clock bits for A10/A20's EMAC ethernet controller driver
- EMAC gpio configuration
- EMAC clock activation
- Add Static Random Access Memory controller driver for A10/A20.
A10/A20's SRAM is used by devices, such as CPU, EMAC,
for extra fast memory or as cache.
- Add EMAC 10/100 Ethernet controller driver for A10/A20.
It is available mostly in A10 devices like Hackberry, Marsboard,
Mele A1000, A2000, A100 HTPC, cubieboard1 and A20 device
like cubieboard2.
TX performance can be improved using both channels 0 and 1.
RX performance is poor and needs improvement with the assistance of
external DMA controller in case there
- Add EMAC and SRAM controller entries to FDT.
- Add EMAC device to kernel config files and enable EMAC, SRAM drivers.

OMAP: When calculating the MPU freq, make sure not to overflow.

Vybrid:
- Add driver for Port control and interrupts (PORT).
- Export panel info to DTS
- Reset all the layers before setup first one
- Enable display

nandfs: Slight code reordering to make error branch last.

Add option TMPFS to arm/conf/DEFAULTS, remove it from the few configs
that have it individually. Concensus on freebsd-arm@ is that it should
be included in all ARM kernels.

Fix the arm sys_sigreturn(): its argument is a struct ucontext, not a
struct sigframe containing the struct ucontext.

266217 16-May-2014 ian

MFC r262591, r262592, r262593, r262597, r262598, r262599, r262600, r262601,
r262606

Initial import of Linux/Vendor DTS files for various embedded boards.

Initial import of DTS files from Linux

Correct initial import script

New AT91 devices or fdt probe added to existing devices. Some of these
are just stubs for testing the new dts.
- nand
- SDRAMC
- shdwc
- tcb
- usb host and gadget


at91/at91_sdramc.c
at91/at91_shdwc.c
at91/at91_tcb.c
/freebsd-10-stable/sys/contrib/dts
/freebsd-10-stable/sys/contrib/dts/FreeBSD-upgrade
/freebsd-10-stable/sys/contrib/dts/arm/animeo_ip.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91-ariag25.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91-cosino.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91-cosino_mega2560.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91-foxg20.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91-qil_a9260.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91-sama5d3_xplained.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91rm9200.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91rm9200_pqfp.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91rm9200ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9260.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9263.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9263ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g15.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g15ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g20.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g20ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g20ek_2mmc.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g20ek_common.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g25.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g25ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g35.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g35ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9g45.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9m10g45ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9n12.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9n12ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x25.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x25ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x35.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x35ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5_macb0.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5_macb1.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5_usart3.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5cm.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/at91sam9x5ek.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/ethernut5.dts
/freebsd-10-stable/sys/contrib/dts/arm/evk-pro3.dts
/freebsd-10-stable/sys/contrib/dts/arm/ge863-pro3.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/kizbox.dts
/freebsd-10-stable/sys/contrib/dts/arm/mpa1600.dts
/freebsd-10-stable/sys/contrib/dts/arm/pm9g45.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d31.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d31ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d33.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d33ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d34.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d34ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d35.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d35ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d36.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d36ek.dts
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_can.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_emac.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_gmac.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_lcd.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_mci2.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_tcb1.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3_uart.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3xcm.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3xdm.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/sama5d3xmb.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/tny_a9260.dts
/freebsd-10-stable/sys/contrib/dts/arm/tny_a9260_common.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/tny_a9263.dts
/freebsd-10-stable/sys/contrib/dts/arm/tny_a9g20.dts
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9260.dts
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9260_common.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9263.dts
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9g20.dts
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9g20_common.dtsi
/freebsd-10-stable/sys/contrib/dts/arm/usb_a9g20_lpw.dts
/freebsd-10-stable/sys/dev/nand/nfc_at91.c
/freebsd-10-stable/sys/dev/usb/controller/at91dci_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/ohci_fdt.c
266207 16-May-2014 ian

MFC r262534, r262548, r262549, r262552, r262568, r262581, r262583, r262584,
r262585, r262587, r262696, r262712

Replace many pasted identical definitions of cpu_initclocks() with a common
implementation in arm/machdep.c.

aicasm: Don't complain about missing prototypes to ease bootstrap issues.

Vybrid: Add driver for Inter-Integrated Circuit (I2C).

imx6: Initialize the Low Power Mode bits to keep the ARM cores running
during WFI.

All our current ARM multi-core systems have all cores in one package with
a shared L2 cache, reflect that in the common cpu_topo() routine.

mpcore timer: Supply a DELAY() implementation via weak linkage, so that
SoC-specific code can supply a better implementation.

imx6: Add some rudimentary voltage control.

Add an armv7 implementation of cpu_sleep().

Add __used attribute so that the DELAY implementation doesn't get
optimized away as unreferenced, causing linker errors when trying to
resolve the weak reference to the missing function.

266204 16-May-2014 ian

MFC r257854 (discussed with alc@)

As of r257209, all architectures have defined
VM_KMEM_SIZE_SCALE. In other words, every architecture is now
auto-sizing the kmem arena. This revision changes kmeminit() so
that the definition of VM_KMEM_SIZE_SCALE becomes mandatory and
the definition of VM_KMEM_SIZE becomes optional.

Replace or eliminate all existing definitions of VM_KMEM_SIZE.
With auto-sizing enabled, VM_KMEM_SIZE effectively became an
alternate spelling for VM_KMEM_SIZE_MIN on most architectures.
Use VM_KMEM_SIZE_MIN for clarity.

266203 16-May-2014 ian

MFC r262409, r262411, r262413, r262420, r262426, r262427, r262440, r262456,
r262482, r262483, r262531,

Move the declaration for mpentry() into a header file instead of pasting
it into a bunch of different .c files.

If the L2 cache type is PIPT, pass a physical address for a flush.

Actually set the proper bit to indicate TTB shared memory.

Add a new cache maintenance function, idcache_inv_all, to the table, and
implementations for each of the chips we support.

Invalidate caches immediately upon entry to init_secondary(). Also set
the Bufferable bit in the PDE entries of the secondary processor startup
pagetables.

Add the bits needed to run SMP on imx6.

Invalidate the SCU cache tag ram on all 4 cores, not just 1-3.

Minor tweaks to the imx GPT timer

Vybrid enhancements...
- Pin configuration is a complete iomux register now and includes
drive strength, pull mode, mux mode, speed, etc.
- Add i2c devices to the tree
- Add IPG clock
- Add support for Quartz Module.
- Pin configuration is a complete iomux register now and includes
drive strength, pull mode, mux mode, speed, etc.
- Add i2c devices to the tree
- Add IPG clock

266201 15-May-2014 ian

MFC r261982, r261987, r262123, r262244, r262278, r262280, r262353, r262354,
r262355, r262419,

Add Vybrid driver for Synchronous Audio Interface (SAI).

Decrease SAI buffer size. Handle eDMA interrupt on running channel only.

Give the physmem fdt helper routines static linkage since no global
definition of them is provided anywhere.

Add imx6 early printf support, wrapped in #if 0 because it's rarely needed.

Add basic cpu frequency control and temperature monitoring to imx6_anatop.

Add the FREEBSD_BOOT_LOADER option so that a loaded DTB passed in from
ubldr will actually get used.

Create a generic IMX6 kernel config, then fix it to have an ident line.

Don't force imx6 bootverbose on anymore, it can be set from ubldr now.

266200 15-May-2014 ian

MFC r261938, r261939, r261940, r261944, r261945, r261946, r261947, r261956, r261957, r261983, r261094,
r261955, r261958,

Add a driver to provide access to imx6 on-chip one-time-programmble data.

Make it possible to access the ocotp registers before the ocotp device
is attached, by establishing a temporary mapping of the registers when
necessary.

It turns out Freescale cleverly made the ocotp device compatible across
several different families of SoCs, so move it to the freescale directory
and prefix everything with fsl rather than imx6.

Convert the imx6 sdhci "R1B fix" from a busy-loop in the interrupt handler
to a callout.

Increase the wait time for acquiring the SD bus from 10 to 250ms.

If no compatible cards were found after probing the SD bus, say so.

Add timeout logic to sdhci, separate from the timeouts done by the hardware.

After a timeout, reset the controller using SDHCI_RESET_CMD|SDHCI_RESET_DATA
rather than SDHCI_RESET_ALL; the latter turns off clocks and power, removing
any possibility of recovering from the error.

Add a helper routine to depth-search the device tree for a node with a
matching 'compatible' property.

266199 15-May-2014 ian

MFC r261917, r261918, r261919, r261920, r261921, r261922

Always clear L1 PTE descriptor when removing superpage on ARM

Invalidate L1 PTE regardles of existance of the corresponding l2_bucket.

Ensure proper TLB invalidation on superpage promotion and demotion on ARM

Base pages within newly created superpage need to be invalidated so that
new mapping is "visible" immediately after creation.

Fix superpage promotion on ARM with respect to RO/RW and wired attributes

Avoid redundant superpage promotion attempts on ARM

Remove spurious assertion from pmap_extract_locked() on ARM

Handle pmap_enter() on already promoted mappings for ARMv6/v7

266198 15-May-2014 ian

MFC r261803, r261808, r261814, r261815, r261816, r261817, r261818, r261826,
r261848, r261855

On armv6 and later, use the WriteNotRead bit of the fault status register
to decide what protections are required by the faulting access.

Use the right symbols for determining arm architecture. Include the
necessary header file which has the new FAULT_WNR symbol defined in it.

Allow the kernel to be loaded at any 1MiB address. This requirement is
because we use the 1MiB section maps as they only need a single pagetable.

Add function for configuring Vybrid PLL4 (Audio) clock frequency output.

imx6 changes ...

- Fix the definition of the SDHCI_STATE_DAT and SDHCI_STATE_CMD fields,
and add SDHCI_RETUNE_REQUEST. None of these are actually used in the
code yet.

- Write translation code for the SDHCI_PRESENT_STATE register.
Freescale moved some bits around in their version of the register,
adjust things so that the sdhci code sees the standard layout.

- Add standard non-removable and cd-gpios properties to the usdhc
devices. That generates references to gpio devices, so uncomment them
even though there isn't a gpio driver to do anything with them yet.

- Add handling of standard "non-removable" property, and also some
workaround code so that if card detect is wired to a gpio pin, for now
we just treat it the same as non-removable (because there isn't a gpio
driver yet).

- Enable both sdcard slots, but not the sdio-based wifi that we don't
yet have a driver for.

- Remove a couple obsolete function declarations.

266197 15-May-2014 ian

MFC r261786, r261789

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.

Convert two while(1); statements into proper panics.

266196 15-May-2014 ian

MFC r261681, r261682, r261683, r261684, r261685, r261686, r261687, r261688,
r261689, r261690, r261783, r261791, r261836, r261837, r261841,

Add FDT matching code to AT91 device drivers.

Better nomatch messages: include compat string. Also, flag devices as
disabled in the successful probe message, but leave what that means to
the actual driver (no semantic changes).

Fix Embest board name and id.

Honor the disabled status by only grabbing resources and returning
when running under FDT in the AT91 SPI driver.

266194 15-May-2014 ian

MFC r261643, r261646, r261648, r261649, r261651, r261656, r261657, r261663,
r261676, r261677, r261698, r261778

Consolidate code related to setting up physical memory configuration into
a new physmem.c file.

Replace compile-time constant KERNPHYSADDR with abp_physaddr

Calculate the kernel's load address from the PC in the elf / gzip
trampoline instead of relying on KERNPHYSADDR as a compile-time constant.

It turns out a global variable is the only straightforward way to
communicate the kernel's physical load address from where it's known in
initarm() into cpu_mp_start() which is called from non-arm code and
takes no parameters.

Remove the now unused MMU_INIT macro.

Use vm_paddr_t, not vm_offset_t, when dealing with physical addresses.

No need to set physmem in each initarm() instance anymore, it's handled
in common code now.

Pass the pagetable used from locore.S to initarm to allow it to map data
in as required.

Fix the physmem exclude-region clipping logic for the edge-trim case.

Add some extra debugging output when DEBUG is defined.

Update legacy platforms to use new arm_physmem helper routines.

266178 15-May-2014 ian

MFC r256672

If we avoid to use the page at addr 0, we should adjust the size to reflect it.

266175 15-May-2014 ian

MFC r257549, r261642

Don't create a distinct free page pool for segregating allocations that are
accessed through the direct map unless the kernel configuration actually
includes a direct map. Only a few configurations do, and for the rest the
unnecessary free page pool is a small pessimization.

Remove the ARM_USE_SMALL_ALLOC option and code related to it.

266170 15-May-2014 ian

MFC r261616, r261639

Remove FreeBSD 6 support from atmel usb controllers.

Add Vybrid drivers for:
- Enhanced Direct Memory Access Controller (eDMA)
- Direct Memory Access Multiplexer (DMAMUX)

266168 15-May-2014 loos

MFC r259270

After r266105 ofw_iicbuc.c will be built by default for any kernel which
includes options 'iicbus' and 'fdt'. Remove the (now) unnecessary entries.

266164 15-May-2014 loos

MFC r256871, r259034, r266010

r256871:
Implement watchdog function and register it with watchdog list.

r259034:
Make the sysctl node read-only.

r266010:
Remove extra newlines.
No functional changes.

266162 15-May-2014 ian

MFC r261570, r261572

Revert r260440 (add USB_HOST_ALIGN to all configs, it's only needed for
platforms with a 64-byte cacheline size).

Add option USB_HOST_ALIGN=64 for all SoCs that have 64 byte cache lines.

266160 15-May-2014 ian

MFC r261423, r261424, r261516, r261513, r261562, r261563, r261564, r261565,
r261596, r261606

Add the imx sdhci controller.

Move Open Firmware device root on PowerPC, ARM, and MIPS systems to
a sub-node of nexus (ofwbus) rather than direct attach under nexus. This
fixes FDT on x86 and will make coexistence with ACPI on ARM systems easier.
SPARC is unchanged.

Add the missing ')' at end of sentence. Reword it to use a more common idiom.

Pass the kernel physical address to initarm through the boot param struct.

Make functions only used in vfp.c static, and remove vfp_enable.

Fix __syscall on armeb EABI. As it returns a 64-bit value it needs to
place 32-bit data in r1, not r0. 64-bit data is already packed correctly.

Use abp_physaddr for the physical address over KERNPHYSADDR. This helps us
remove the need to load the kernel at a fixed address.

Remove references to PHYSADDR where it's used only in debugging output.

Dynamically generate the page table. This will allow us to detect the
physical address we are loaded at to change the mapping.


arm/elf_trampoline.c
arm/locore.S
arm/machdep.c
arm/nexus.c
arm/pmap-v6.c
arm/pmap.c
arm/support.S
arm/vfp.c
arm/vm_machdep.c
at91/at91_machdep.c
broadcom/bcm2835/bcm2835_fb.c
broadcom/bcm2835/bcm2835_fbd.c
econa/econa_machdep.c
freescale/imx/tzic.c
include/cpu.h
include/machdep.h
mv/mv_localbus.c
mv/mv_pci.c
s3c2xx0/s3c24x0_machdep.c
xscale/ixp425/avila_machdep.c
/freebsd-10-stable/sys/conf/files
/freebsd-10-stable/sys/conf/files.powerpc
/freebsd-10-stable/sys/dev/fdt/fdtbus.c
/freebsd-10-stable/sys/dev/fdt/simplebus.c
/freebsd-10-stable/sys/dev/mmc/mmc.c
/freebsd-10-stable/sys/dev/ofw/ofw_nexus.c
/freebsd-10-stable/sys/dev/ofw/ofw_nexus.h
/freebsd-10-stable/sys/dev/ofw/ofwbus.c
/freebsd-10-stable/sys/dev/powermac_nvram/powermac_nvram.c
/freebsd-10-stable/sys/mips/beri/beri_simplebus.c
/freebsd-10-stable/sys/mips/mips/nexus.c
/freebsd-10-stable/sys/powerpc/mambo/mambo.c
/freebsd-10-stable/sys/powerpc/mpc85xx/lbc.c
/freebsd-10-stable/sys/powerpc/mpc85xx/pci_mpc85xx.c
/freebsd-10-stable/sys/powerpc/ofw/ofw_cpu.c
/freebsd-10-stable/sys/powerpc/ofw/openpic_ofw.c
/freebsd-10-stable/sys/powerpc/powermac/cpcht.c
/freebsd-10-stable/sys/powerpc/powermac/grackle.c
/freebsd-10-stable/sys/powerpc/powermac/smu.c
/freebsd-10-stable/sys/powerpc/powermac/uninorth.c
/freebsd-10-stable/sys/powerpc/powermac/uninorthpci.c
/freebsd-10-stable/sys/powerpc/powerpc/nexus.c
/freebsd-10-stable/sys/powerpc/pseries/rtas_dev.c
/freebsd-10-stable/sys/powerpc/pseries/rtas_pci.c
/freebsd-10-stable/sys/powerpc/pseries/vdevice.c
/freebsd-10-stable/sys/powerpc/pseries/xics.c
/freebsd-10-stable/sys/powerpc/psim/iobus.c
266159 15-May-2014 ian

MFC r261414, r261415, r261417, r261418, r261419

Don't call device_set_ivars() for the mmchs

Change the way pcpu and curthread are stored per-core

Invalidate cachelines for bounce pages on PREREAD too, there may still be
stale entries from a previous transfer.

Only use the CPU ID register if SMP is defined. Some non-MPCore armv6 cpu,
such as the one found in the RPi, don't have it, and just hang when we try
to access it.

266155 15-May-2014 ian

MFC r261411, r261413, r261416:

Add support for Colibri VF50 Evaluation Board.

Add driver for Display Control Unit (DCU4).

Add prototype for tcon_bypass() used by dcu4.
Add register definition.

266152 15-May-2014 ian

MFC r261410

Follow r261352 by updating all drivers which are children of simplebus
to check the status property in their probe routines.


allwinner/a10_clk.c
allwinner/a10_ehci.c
allwinner/a10_gpio.c
allwinner/a10_wdog.c
allwinner/a20/a20_cpu_cfg.c
allwinner/aintc.c
arm/generic_timer.c
arm/gic.c
arm/mpcore_timer.c
arm/pl190.c
arm/pl310.c
broadcom/bcm2835/bcm2835_bsc.c
broadcom/bcm2835/bcm2835_dma.c
broadcom/bcm2835/bcm2835_gpio.c
broadcom/bcm2835/bcm2835_intr.c
broadcom/bcm2835/bcm2835_mbox.c
broadcom/bcm2835/bcm2835_sdhci.c
broadcom/bcm2835/bcm2835_spi.c
broadcom/bcm2835/bcm2835_systimer.c
broadcom/bcm2835/bcm2835_wdog.c
freescale/imx/i2c.c
freescale/imx/imx51_ccm.c
freescale/imx/imx51_gpio.c
freescale/imx/imx51_iomux.c
freescale/imx/imx51_ipuv3.c
freescale/imx/imx51_ipuv3_fbd.c
freescale/imx/imx6_anatop.c
freescale/imx/imx6_ccm.c
freescale/imx/imx6_usbphy.c
freescale/imx/imx_gpt.c
freescale/imx/imx_nop_usbphy.c
freescale/imx/imx_sdhci.c
freescale/imx/imx_wdog.c
freescale/imx/tzic.c
freescale/vybrid/vf_anadig.c
freescale/vybrid/vf_ccm.c
freescale/vybrid/vf_ehci.c
freescale/vybrid/vf_gpio.c
freescale/vybrid/vf_iomuxc.c
freescale/vybrid/vf_mscm.c
freescale/vybrid/vf_nfc.c
freescale/vybrid/vf_src.c
lpc/if_lpe.c
lpc/lpc_dmac.c
lpc/lpc_fb.c
lpc/lpc_gpio.c
lpc/lpc_intc.c
lpc/lpc_mmc.c
lpc/lpc_ohci.c
lpc/lpc_pwr.c
lpc/lpc_rtc.c
lpc/lpc_spi.c
lpc/lpc_timer.c
mv/gpio.c
mv/ic.c
mv/mpic.c
mv/mv_sata.c
mv/mv_ts.c
mv/rtc.c
mv/timer.c
mv/twsi.c
rockchip/rk30xx_gpio.c
rockchip/rk30xx_grf.c
rockchip/rk30xx_pmu.c
rockchip/rk30xx_wdog.c
samsung/exynos/arch_timer.c
samsung/exynos/ehci_exynos5.c
ti/aintc.c
ti/am335x/am335x_dmtimer.c
ti/am335x/am335x_lcd.c
ti/am335x/am335x_prcm.c
ti/am335x/am335x_pwm.c
ti/am335x/am335x_usbss.c
ti/cpsw/if_cpsw.c
ti/omap4/omap4_prcm_clks.c
ti/ti_edma3.c
ti/ti_gpio.c
ti/ti_i2c.c
ti/ti_mbox.c
ti/ti_mmchs.c
ti/ti_pruss.c
ti/ti_scm.c
ti/ti_sdhci.c
ti/ti_sdma.c
ti/usb/omap_ehci.c
versatile/if_smc_fdt.c
versatile/pl050.c
versatile/sp804.c
versatile/versatile_clcd.c
versatile/versatile_pci.c
versatile/versatile_sic.c
xilinx/zy7_devcfg.c
xilinx/zy7_ehci.c
xilinx/zy7_gpio.c
xilinx/zy7_slcr.c
/freebsd-10-stable/sys/dev/altera/atse/if_atse_fdt.c
/freebsd-10-stable/sys/dev/altera/avgen/altera_avgen_fdt.c
/freebsd-10-stable/sys/dev/altera/jtag_uart/altera_jtag_uart_fdt.c
/freebsd-10-stable/sys/dev/altera/sdcard/altera_sdcard_fdt.c
/freebsd-10-stable/sys/dev/ata/chipsets/ata-fsl.c
/freebsd-10-stable/sys/dev/cesa/cesa.c
/freebsd-10-stable/sys/dev/cfi/cfi_bus_fdt.c
/freebsd-10-stable/sys/dev/fdt/simplebus.c
/freebsd-10-stable/sys/dev/ffec/if_ffec.c
/freebsd-10-stable/sys/dev/mge/if_mge.c
/freebsd-10-stable/sys/dev/mvs/mvs_soc.c
/freebsd-10-stable/sys/dev/quicc/quicc_bfe_fdt.c
/freebsd-10-stable/sys/dev/sdhci/sdhci_fdt.c
/freebsd-10-stable/sys/dev/sec/sec.c
/freebsd-10-stable/sys/dev/terasic/de4led/terasic_de4led_fdt.c
/freebsd-10-stable/sys/dev/terasic/mtl/terasic_mtl_fdt.c
/freebsd-10-stable/sys/dev/tsec/if_tsec_fdt.c
/freebsd-10-stable/sys/dev/uart/uart_bus_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/dwc_otg_fdt.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_fsl.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_imx.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_mv.c
/freebsd-10-stable/sys/mips/beri/beri_pic.c
/freebsd-10-stable/sys/mips/beri/beri_simplebus.c
266148 15-May-2014 loos

MFC r259125, r264019, r264083, r264153, r264197

r259125:
Fix a few typos on the scm (control module) pin mux definitions.

r264019:
Fix some of the style(9) problems on ti_gpio.

Remove redundant code and declarations.

r264083:
Move the GPIO bank initialization to a new function to make easier to detect
errors.

Reset the GPIO module during the initialization. This is guaranteed to be
the same as a hardware reset. Tested on AM335x (BBB) and checked against
the omap3 and omap4 TRM.

Do a better job freeing resources when there are errors and on
ti_gpio_detach().

r264153:
- Fix the setup of interrupts for banks 2 and 3 on AM335x.

On AM335x each one of the four GPIO banks has two physical interrupt
lines, so we now allocate resources and setup our interrupt handler for
all the (8) available interrupts.

On OMAP3 and OMAP4 there is only one interrupt for each GPIO bank (6
banks, 6 interrupts), but there are two set of registers where the
first one is used to setup the delivery of interrupts to the MPU and
the second set, setup the delivery of interrupts to the DSP.

On AM335x, each set of registers controls each one of the interrupt
lines.

- Remove nonexistent registers for OMAP4 and AM335x, replace their use with
the correct ones for these SoCs.

- Remove stray whitespace.

r264197:
Partially revert r264083.

While it is the recommended initialization procedure, it hangs on the reset
of the second GPIO module on pandaboard.

Removes the module reset for now as more investigation is needed.

266146 15-May-2014 ian

MFC r261406, r261409: enhance Vybrid support...

o Expand device tree information
o Export iomuxc (pins) configuration to DTS
o Allow devices to assign clocks in DTS
o Split kernel configuration to chip common and board specific parts.

266144 15-May-2014 ian

MFC r261137, r261393

Correct the alignment of sp through functions that use UNWINDSVCFRAME.

Update all arm code that manipulates the PSR registers to use modern syntax.

266128 15-May-2014 ian

MFC r261351, r261352, r261355, r261396, r261397, r261398, r261403, r261404,
r261405

Open Firmware interrupt specifiers can consist of arbitrary-length byte
strings and include arbitrary information (IRQ line/domain/sense). When the
ofw_bus_map_intr() API was introduced, it assumed that, as on most systems,
these were either 1 cell, containing an interrupt line, or 2, containing
a line number plus a sense code. It turns out a non-negligible number of
ARM systems use 3 (or even 4!) cells for interrupts, so make this more
general.

Provide a simpler and more standards-compliant simplebus implementation to
get the Routerboard 800 up and running with the vendor device tree. This
does not implement some BERI-specific features (which hopefully won't be
necessary soon), so move the old code to mips/beri, with a higher attach
priority when built, until MIPS interrupt domain support is rearranged.

Allow nesting of simplebuses.

Add a set of helpers (ofw_bus_get_status() and ofw_bus_status_okay()) to
process "status" properties of OF nodes.

Fix one remnant endian flaw in nexus.

266113 15-May-2014 ian

MFC r258546: Add watchdog driver for rk3188.

266110 15-May-2014 ian

MFC r261252, r261279, r261304, r261305, r261322, r261336, r261337, r261338,
r261353

Fix the name of the dts file for the HL201...

When mapping an address, the bsh needs the same offset we do for other things.

Add explicit depends on bus_if.h and device_if.h to avoid a
chicken and egg problem in some compilation environments.

Switch to using PAs rather than VAs for the addresses we map for
devices. This is a nop, except for what's reported by atmelbus for the
resources.

Comment cleanups. Move things around for diff reduction against FDT work.

266105 15-May-2014 loos

MFC r258046, r258047, r258050, r259035, r259036, r259037, r261842, r261843,
r261844, r261845, r261846, r262194, r262522, r262559

r258046:
Fix a typo on a comment in ofw_bus_if.m, the default method will return -1
when a node doesn't exist.

r258047:
Move the KASSERT() check to the point before the increase of number of pins.

r258050:
Fix gpiobus to return BUS_PROBE_GENERIC insted of BUS_PROBE_SPECIFIC (0) so
it can be overriden by its OFW/FDT version.

Give a chance for GPIO devices that implement the device_identify method to
attach.

r259035:
Remove unnecessary includes and an unused softc variable. While here apply
two minor style(9) fixes.

r259036:
Move the GPIOBUS_SET_PINFLAGS(..., ..., pin, GPIO_PIN_OUTPUT) to led(4)
control callback function. This makes gpioled(4) works even if the pin
is accidentally set to an input.

r259037:
Fix the pin value reading on AM335x. Because of the inverted logic it was
always returning '0' for all the reads, even for the outputs. It is now
known to work with gpioiic(4) and gpioled(4).

r261842:
Add an OFW GPIO compatible bus. This allows the use of the DTS files to
describe GPIO bindings in the system.

Move the GPIOBUS lock macros to gpiobusvar.h as they are now shared between
the OFW and the non OFW versions of GPIO bus.

Export gpiobus_print_pins() so it can also be used on the OFW GPIO bus.

r261843:
Add OFW support to the in tree gpio compatible devices: gpioiic(4) and
gpioled(4).

Tested on RPi and BBB (using the hardware I2C controller and gpioiic(4) for
the I2C tests). It was also verified for regressions on RSPRO (MIPS/ar71xx)
used as reference for a non OFW-based system.

Update the gpioled(4) and gpioiic(4) man pages with some details and
examples about the FDT/OFW support.

Some compatibility details pointed out by imp@ will follow in subsequent
commits.

r261844:
Allow the use of OFW I2C bus together with iicbb(4) on OFW-based systems.

This change makes ofw_iicbus attach to iicbb(4) controllers in addition to
the already supported i2c host bridges (iichb).

On iicbb(4) allow the direct access of the OFW parent node by its children,
so they can be directly attached to iicbb(4) node on the DTS without the
need of describing the i2c bus.

r261845:
Allow the use of the OFW GPIO bus for ti_gpio and bcm2835_gpio. With this
change the gpio children can be described as directly connected to the GPIO
controller without the need of describing the OFW GPIO bus itself on the
DTS file.

With this commit the OFW GPIO bus is fully functional on BBB and RPi.

GPIO controllers which want to use the OFW GPIO bus will need similar
changes.

r261846:
Make the gpioled(4) work out of the box on BBB.

Add gpioled(4) to BEAGLEBONE kernel and add the description of the four
on-board leds of beaglebone-black to its DTS file.

r262194:
Remove an unnecessary header.

r262522:
Fix make depend for iicbus.

r262559:
Inspired by r262522, fix make depend. This fixes the build of gpio modules.

266098 15-May-2014 ian

MFC r258209, r258210, r261211,

Add a driver for the Texas Instruments Mailbox hardware.

Add a driver for the TI Programmable Realtime Unit Subsystem.

fix args to mtx_init

266097 14-May-2014 ian

MFC r260886, r261165, r261171, r261172, r261214

Fix gcc with -Wstrict-prototypes by telling it bi_emac takes no
parameters.

Bus space handles need to be the VA of the requested resource, not the
rounded page VA. Correct so the DBGU device can be mapped for FDT
console since it isn't on a page boundary.

Make early printf output nicer by inserting a carriage return before
any linefeeds that are output.

Before resetting the USART, delay a bit to allow the transmitter to
finish the current character to drain to avoid glitching. Also,
simplify the code a smidge.

Remove extra parens to silence clang warning.

266095 14-May-2014 ian

MFC r261083, r261092, r261126, r261127, r261128, r261129, r261130, r261131

Add Atmel serial drivers.

uart clock-frequency is a FreeBSD-specific extention. Make it optional and
allow the client uart drivers to decide if a frequency is required.

Remove redundant declaration for uart devclass.
Commit some unrelated, but harmless, FDT ifdefs.

Add at91 NAND support, Fix comment.

Remove obsolete options and fix comments

266094 14-May-2014 ian

MFC r261038, r261039, r261040, r261041

Implement generic support for early printf.

266090 14-May-2014 ian

MFC r260921: Add nand to arm NOTES

266088 14-May-2014 ian

MFC r259728, r260752

Add Freescale i.MX515 vt(9) driver.

266087 14-May-2014 ian

MFC r260695, r260696, r260884, r260885, r260886, r260887

Provide a simplified way to specify GPIO pins for the Atmel port.

Add at91 data so we can convert a PIO unit number into a base address.

Add at91 standard memory controller helper functions.

Generalize AT91 NAND support a bit.

Connect NAND for the SAM9260EK eval board, as well as the HotE HL-201.

Add nand device and NANDFS into the mix for those at91 boards that have
support for it at the moment.

266086 14-May-2014 ian

MFC r260440, r260441, r260447, r260490, r260493

Add option USB_HOST_ALIGN to configs that contain 'device usb'.

Update dts files of Cubieboard1,2 to use 1GB memory.

Add a function to print the contents of the static device mapping table,

266085 14-May-2014 ian

MFC r256839, r256948, r256950, r257299, r257414, r258057, r259090

Add configuration for the Freescale i.MX53 Quick Start Board.

Add the Raspberry Pi BSC (I2C compliant) controller driver.

Add Radxa Rock board (by radxa.com) support.

Digi-CCWMX53: enable ffec and uart, USB.

Add support for Freescale Vybrid Family VF600

Move and rename dwc otg driver to more generic one as it appears to work
for rk3188 SoC based board too.

266084 14-May-2014 ian

MFC r257738, r259202, r258410, r260288, r260292, r260294, r260320, r260323,
r260326, r260327, r260331, r260333, r260340, r260371, r260372, r260373,
r260374, r260375

Add common bus_space tag definition shared for most supported ARMv6/v7 SoCs.
Correct license statements to reflect the fact that these files were all
derived from sys/arm/mv/bus_space.c.

In pmap_unmapdev(), remember the size, and use that as an argument to
kva_free(), or we'd end up always passing it a size of 0

In pmap_mapdev(), first check whether a static mapping exists,

Convert TI static device mapping to use the new arm_devmap_add_entry(),

Use the common armv6 fdt_bus_tag defintion for tegra instead of a local copy.

Eliminate use of fdt_immr_addr(), it's not needed for tegra

Convert lpc from using fdt_immr style to arm_devmap_add_entry() to make
static device mappings.

Retire machine/fdt.h as a header used by MI code, as its function is now
obsolete. This involves the following pieces:
- Remove it entirely on PowerPC, where it is not used by MD code either
- Remove all references to machine/fdt.h in non-architecture-specific code
(aside from uart_cpu_fdt.c, shared by ARM and MIPS, and so is somewhat
non-arch-specific).
- Fix code relying on header pollution from machine/fdt.h includes
- Legacy fdtbus.c (still used on x86 FDT systems) now passes resource
requests to its parent (nexus). This allows x86 FDT devices to allocate
both memory and IO requests and removes the last notionally MI use of
fdtbus_bs_tag.
- On those architectures that retain a machine/fdt.h, unused bits like
FDT_MAP_IRQ and FDT_INTR_MAX have been removed.

Add #include <machine/fdt.h> to a few files that used to get it via pollution

Enable the mv cesa security/crypto device by providing the required property
in the dts source, and adding the right devices to the kernel config.

Remove dev/fdt/fdt_pci.c, which was code specific to Marvell ARM SoCs,
related to setting up static device mappings. Since it was only used by
arm/mv/mv_pci.c, it's now just static functions within that file, plus
one public function that gets called only from arm/mv/mv_machdep.c.

Switch RPi to using arm_devmap_add_entry() to set up static device mapping.

Allow 'no static device mappings' to potentially work.

Don't try to find a static mapping before calling pmap_mapdev(), that logic
is now part of pmap_mapdev() and doesn't need to be duplicated here.

Switch a10 to using arm_devmap_add_entry() to set up static device mapping.

266079 14-May-2014 ian

MFC r260281, r260282, r260283, r260285

Implement OFW_BUS_MAP_INTR() in terms of the FDT PIC table

Reimplement fdt_intr_to_rl() in terms of OFW_BUS_MAP_INTR() and
OFW_BUS_CONFIG_INTR().

Use bus_space_map() rather than pmap_mapdev() in nexus_activate_resource(),
when running on FDT systems. Unmap memory in nexus_deactivate_resource().

Remove fdt_pic_table code from MIPS, PowerPC, and x86, as it is no longer
used by anything.

266070 14-May-2014 ian

MFC r260161, r260163, r260165, r260166, r260189

Add polarity and level support to ARM GIC

Do not attach to PCI bridges in AHCI driver

Use only mapped BIOs on ARM

Fix race condition in DELAY for SP804 timer.

266065 14-May-2014 ian

MFC r260092, r260093, r260121, r260180,

Allow AT91_MCI_ALLOW_OVERCLOCK to be an option in kernel config files.

Set the SoC name for the atmelbus name.

Add support for Samsung K9F2G08U0A (256MiB SLC) NAND

Comment updates.

266058 14-May-2014 ian

MFC r258359, r258742, r258845, r259936, r259640

Apply access flags for managed and unmanaged pages properly on ARMv6/v7

Set the PGA_WRITEABLE flag when the protections indicate write access, not
just when the current access is a write.

Enable missing Access Flag for secondary cores on ARMv6/v7

Add identification and necessary type checks for Krait CPU cores.

266050 14-May-2014 ian

MFC r256707, r256708, r257291, r258358

Switch to use WBWA mappings for page tables on armv6, this is needed for SMP.
Fix PTE_SYNC() for PIPT L2 caches, using the virtual address wasn't so useful.
Use PTE_SYNC() for >= armv6
Spell cpu_l2cache_wb_range correctly.

Fix condition that determines PMAP_NEEDS_PTE_SYNC value for ARM

Use values of the correct defines to determine statement's result.
ARM_ARCH_ symbols are always defined, hence only values are relevant.

Avoid clearing EXEC permission bit when setting the page RW on ARMv6/v7

When emulating modified bit the executable attribute was cleared by
mistake when calling pmap_set_prot().

266046 14-May-2014 ian

MFC r257170, r257171, r257172, r257240, r257278, r257279, r257280, r257281,
r257282, r257332

Wait for DesignWare UART transfers completion before accessing line control

Enable UART busy detection handling for Armada XP - based board

Enable SATA interface on Armada XP
Run mvs SATA driver on Armada XP instead of old mv_sata

Retire arm_remap_nocache() and the data and constants associated with it.

Remove hard-coded mappings related to Armada XP support

Fix-up DTB for Armada XP registers' base according to the actual settings

Change Armada XP kernel load address to the u-boot's end address

Remove not working and deprecated PJ4Bv6 support

Switch off explicit broadcasting of the TLB flush operations for PJ4B CPU

Add missing ARMv6 CPU functions to ARM Makefile

266022 14-May-2014 ian

MFC r259517, r259518

Add vt support for RPi. (No early stage yet.)

266020 14-May-2014 ian

MFC r258800, r258802, r258805, r258806, r258807, r258851, r258857,
r259199, r259484, r259513, r259514, r259516

The kernel stack guard pages are only below the stack pointer, not above.

Remove unnecessary double-setting of the thread's onfault state in
copyinstr().

Open Firmware mandates that certain cross-references, in particular those
in /chosen, be ihandles. The ePAPR spec makes those cross-reference phandles,
since FDT has no concept of ihandles. Have the OF FDT CI module interpret
queries about ihandles as cross-reference phandles.

Real OF systems have an ihandle under /chosen/stdout, not a phandle. Use
the right type.

Rearchitect platform memory map parsing to make it less
Open Firmware-centric.

Remove fdtbus_bs_tag definition, which is now obsolete. The remainder of
this file is also slated for future demolition.

Return the correct IEEE 1275 code for "nextprop".

Use the common Open Firmware PCI interrupt routing code instead of the
duplicate version in dev/fdt.

Configure interrupt sense based on device tree information.

Simplify the ofw_bus_lookup_imap() API slightly: make it allocate maskbuf
internally instead of requiring the caller to allocate it.

266000 14-May-2014 ian

MFC r257702, r257745, r257746, r257747, r257751, r257791, r257793,
r257794, r257795, r257992

Teach nexus(4) about Open Firmware (e.g. FDT) on ARM and MIPS, retiring
fdtbus in most cases.

Make OF_nextprop() work correctly for FDT by using the libfdt
fdt_next_property_offset() API.

Do not panic if pmap_mincore() is called.

An addendum: it is possible, though of questionable utility, for a node
to have no properties at all.
Add definition for the Atheros 8021 gigabit PHY.

Consolidate Apple firmware hacks and improve them by switching on the
presence of mac-io devices in the tree, which uniquely identifies Apple
hardware.

Allow OF_decode_addr() to also be able to map resources on big-endian
devices.

Make tsec work with the device tree present on the RB800.

Be more flexible about which compatible strings to accept. This brings up
the PCI Express bus on the RB800 using the firmware device tree.

Rename the "bare" platform "mpc85xx", which is what it actually is, and
add actual platform probing based on PVR.

265999 14-May-2014 ian

MFC r257334, r257336, r257337, r257338, r257341, r257342, r257343, r257370,
r257368, r257416

Hints-only devices should return BUS_PROBE_NOWILDCARD from their probe
methods.


at91/at91.c
econa/econa.c
s3c2xx0/s3c24x0.c
sa11x0/sa11x0.c
xscale/i80321/iq80321.c
xscale/pxa/pxa_obio.c
/freebsd-10-stable/sys/dev/acpica/acpi.c
/freebsd-10-stable/sys/dev/altera/atse/if_atse_nexus.c
/freebsd-10-stable/sys/dev/altera/avgen/altera_avgen_nexus.c
/freebsd-10-stable/sys/dev/altera/jtag_uart/altera_jtag_uart_nexus.c
/freebsd-10-stable/sys/dev/altera/sdcard/altera_sdcard_nexus.c
/freebsd-10-stable/sys/dev/cfe/cfe_resource.c
/freebsd-10-stable/sys/dev/gxemul/disk/gxemul_disk.c
/freebsd-10-stable/sys/dev/gxemul/ether/if_gx.c
/freebsd-10-stable/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
/freebsd-10-stable/sys/dev/rt/if_rt.c
/freebsd-10-stable/sys/dev/terasic/de4led/terasic_de4led_nexus.c
/freebsd-10-stable/sys/dev/terasic/mtl/terasic_mtl_nexus.c
/freebsd-10-stable/sys/dev/xen/console/console.c
/freebsd-10-stable/sys/dev/xen/pcifront/pcifront.c
/freebsd-10-stable/sys/dev/xen/timer/timer.c
/freebsd-10-stable/sys/mips/adm5120/obio.c
/freebsd-10-stable/sys/mips/alchemy/obio.c
/freebsd-10-stable/sys/mips/atheros/apb.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_ehci.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_pci.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_spi.c
/freebsd-10-stable/sys/mips/atheros/ar71xx_wdog.c
/freebsd-10-stable/sys/mips/atheros/ar724x_pci.c
/freebsd-10-stable/sys/mips/atheros/if_arge.c
/freebsd-10-stable/sys/mips/cavium/ciu.c
/freebsd-10-stable/sys/mips/cavium/octeon_ebt3000_cf.c
/freebsd-10-stable/sys/mips/cavium/octeon_pmc.c
/freebsd-10-stable/sys/mips/cavium/octeon_rnd.c
/freebsd-10-stable/sys/mips/cavium/octeon_rtc.c
/freebsd-10-stable/sys/mips/idt/obio.c
/freebsd-10-stable/sys/mips/malta/gt.c
/freebsd-10-stable/sys/mips/mips/tick.c
/freebsd-10-stable/sys/mips/nlm/tick.c
/freebsd-10-stable/sys/mips/nlm/xlp_pci.c
/freebsd-10-stable/sys/mips/rmi/iodi.c
/freebsd-10-stable/sys/mips/rmi/tick.c
/freebsd-10-stable/sys/mips/rt305x/obio.c
/freebsd-10-stable/sys/mips/sibyte/sb_zbbus.c
/freebsd-10-stable/sys/modules/Makefile
/freebsd-10-stable/sys/powerpc/pseries/plpar_iommu.c
265967 13-May-2014 ian

MFC r256932, r256938, r256966, r256953, r256967, r256969, r257015:

Add a new function (OF_getencprop()) that undoes the transformation applied
by encode-int. Specifically, it takes a set of 32-bit cell values and
changes them to host byte order. Most non-string instances of OF_getprop()
should be using this function, which is a no-op on big-endian platforms.

Use the new function all over the place.

265940 12-May-2014 ian

MFC r259750, r260245: Add PPS support to the am335x timer driver.

265939 12-May-2014 ian

MFC r259744, cleanups to move global vars into softc, use named values, etc.

265938 12-May-2014 ian

MFC r259739, r259743: Shorten DMTIMER_->DMT_, #define all register constants.

265936 12-May-2014 ian

MFC r259099: Fix a small error in calculating length of DELAY().

265810 10-May-2014 rpaulo

MFC r259126:

Activate the device before attempt to access any of its registers. Without
this change we may end up with a panic (Fatal kernel mode data abort:
'External Non-Linefetch Abort (S)') as described in
http://e2e.ti.com/support/arm/sitara_arm/f/791/t/276862.aspx.

It is now possible to bring up I2C1 and I2C2 on BBB.

265606 07-May-2014 scottl

Merge r264984

Retire smp_active. It was racey and caused demonstrated problems with
the cpufreq code. Replace its use with smp_started. There's at least
one userland tool that still looks at the kern.smp.active sysctl, so
preserve it but point it to smp_started as well.

Obtained from: Netflix, Inc.

264496 15-Apr-2014 tijl

MFC r263998:

Rename __wchar_t so it no longer conflicts with __wchar_t from clang 3.4
-fms-extensions.

263456 21-Mar-2014 dim

MFC r262408 (by ian):

Eliminate an unused-var warning by wrapping #if 0 around some tables of
values that were probably entered "for completeness" from a datasheet, and
for all I know may be useful/necessary some day.

263455 21-Mar-2014 dim

MFC r262393 (by ian):

Fix a typo _IMX51_TZICRREG_H_ -> _IMX51_TZICREG_H_ (extra R)

263017 11-Mar-2014 jhay

MFC r262020:

Make it possible to use the env kernel config file option for AVILA
and CAMBRIA boards that does not use loader to load the kernel. This
is basically how it was done for i386. This way tunables can also be
set. For example in config file:

env "/conf/AVILA.env"

And in AVILA.env:

vfs.unmapped_buf_allowed=0

262698 02-Mar-2014 imp

MRC: r260886

Merge only the uart_dev_at91usart.c part of this revision,
since it has nothing to do with the commit log and was included
by mistake there.

This connects the new grab/ungrab upcalls that were revised
in uart to fix mountroot>.

262649 01-Mar-2014 imp

MFC: r260889, r260890, r260911:

r260911 | imp | 2014-01-20 10:45:36 -0700 (Mon, 20 Jan 2014) | 5 lines

Don't lock in the generic grab just to lock again in the specific grabs.

r260890 | imp | 2014-01-19 12:39:13 -0700 (Sun, 19 Jan 2014) | 11 lines

Introduce grab and ungrab upcalls. When the kernel desires to grab the
console, it calls the grab functions. These functions should turn off
the RX interrupts, and any others that interfere. This makes mountroot
prompt work again. If there's more generalized need other than
prompting, many of these routines should be expanded to do those new
things.

Reviewed by: bde (with reservations)

262586 28-Feb-2014 brueffer

MFC: r261884

Correct the order of arguments to mtx_init().

PR: 186701
Submitted by: Takanori Sawada <tak.swd at gmail.com>

261490 04-Feb-2014 eadler

MFC r258787:
r258780 should not have applied to .S files.

261455 04-Feb-2014 eadler

MFC r258779,r258780,r258787,r258822:

Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this
shifts into the sign bit. Instead use (1U << 31) which gets the
expected result.

Similar to the (1 << 31) case it is not defined to do (2 << 30).

This fix is not ideal as it assumes a 32 bit int, but does fix the issue
for most cases.

A similar change was made in OpenBSD.


/freebsd-10-stable/lib/libc/sparc64/fpu/fpu.c
/freebsd-10-stable/lib/libc/sparc64/fpu/fpu_sqrt.c
/freebsd-10-stable/lib/libc/xdr/xdr_rec.c
/freebsd-10-stable/sys/amd64/pci/pci_cfgreg.c
/freebsd-10-stable/sys/amd64/vmm/intel/vmcs.h
/freebsd-10-stable/sys/amd64/vmm/intel/vmx_controls.h
/freebsd-10-stable/sys/amd64/vmm/intel/vtd.c
arm/cpufunc_asm_pj4b.S
arm/db_trace.c
arm/pl190.c
at91/if_macbvar.h
broadcom/bcm2835/bcm2835_dma.c
econa/if_ece.c
freescale/imx/imx6_anatopreg.h
freescale/imx/imx6_usbphy.c
freescale/imx/imx_gptreg.h
include/armreg.h
lpc/if_lpereg.h
lpc/lpcreg.h
mv/mv_pci.c
samsung/exynos/ehci_exynos5.c
xscale/i8134x/i81342reg.h
xscale/ixp425/ixp425reg.h
/freebsd-10-stable/sys/boot/arm/at91/libat91/mci_device.h
/freebsd-10-stable/sys/boot/i386/libfirewire/fwohci.h
/freebsd-10-stable/sys/boot/i386/libfirewire/fwohcireg.h
/freebsd-10-stable/sys/dev/aac/aacvar.h
/freebsd-10-stable/sys/dev/acpica/acpi_video.c
/freebsd-10-stable/sys/dev/agp/agp_i810.c
/freebsd-10-stable/sys/dev/ahci/ahci.h
/freebsd-10-stable/sys/dev/bktr/bktr_core.c
/freebsd-10-stable/sys/dev/cesa/cesa.h
/freebsd-10-stable/sys/dev/drm/i915_reg.h
/freebsd-10-stable/sys/dev/drm/mach64_drv.h
/freebsd-10-stable/sys/dev/drm/mga_drv.h
/freebsd-10-stable/sys/dev/drm/r128_drv.h
/freebsd-10-stable/sys/dev/drm/r300_reg.h
/freebsd-10-stable/sys/dev/drm/r600_blit.c
/freebsd-10-stable/sys/dev/drm/radeon_cp.c
/freebsd-10-stable/sys/dev/drm/radeon_drv.h
/freebsd-10-stable/sys/dev/drm/via_irq.c
/freebsd-10-stable/sys/dev/drm2/i915/i915_reg.h
/freebsd-10-stable/sys/dev/drm2/radeon/evergreen_blit_kms.c
/freebsd-10-stable/sys/dev/drm2/radeon/evergreen_cs.c
/freebsd-10-stable/sys/dev/drm2/radeon/evergreend.h
/freebsd-10-stable/sys/dev/drm2/radeon/nid.h
/freebsd-10-stable/sys/dev/drm2/radeon/r200.c
/freebsd-10-stable/sys/dev/drm2/radeon/r300.c
/freebsd-10-stable/sys/dev/drm2/radeon/r300_reg.h
/freebsd-10-stable/sys/dev/drm2/radeon/r500_reg.h
/freebsd-10-stable/sys/dev/drm2/radeon/r600_blit.c
/freebsd-10-stable/sys/dev/drm2/radeon/r600_blit_kms.c
/freebsd-10-stable/sys/dev/drm2/radeon/r600_cs.c
/freebsd-10-stable/sys/dev/drm2/radeon/r600d.h
/freebsd-10-stable/sys/dev/drm2/radeon/radeon_cp.c
/freebsd-10-stable/sys/dev/drm2/radeon/radeon_drv.h
/freebsd-10-stable/sys/dev/drm2/radeon/radeon_reg.h
/freebsd-10-stable/sys/dev/drm2/radeon/rv770d.h
/freebsd-10-stable/sys/dev/drm2/radeon/sid.h
/freebsd-10-stable/sys/dev/drm2/ttm/ttm_bo.c
/freebsd-10-stable/sys/dev/e1000/e1000_82575.h
/freebsd-10-stable/sys/dev/e1000/e1000_ich8lan.c
/freebsd-10-stable/sys/dev/e1000/e1000_regs.h
/freebsd-10-stable/sys/dev/etherswitch/arswitch/arswitchreg.h
/freebsd-10-stable/sys/dev/ffec/if_ffecreg.h
/freebsd-10-stable/sys/dev/firewire/firewire.c
/freebsd-10-stable/sys/dev/firewire/fwohci.c
/freebsd-10-stable/sys/dev/firewire/fwohcireg.h
/freebsd-10-stable/sys/dev/firewire/sbp.c
/freebsd-10-stable/sys/dev/firewire/sbp.h
/freebsd-10-stable/sys/dev/firewire/sbp_targ.c
/freebsd-10-stable/sys/dev/hatm/if_hatmreg.h
/freebsd-10-stable/sys/dev/hwpmc/hwpmc_piv.h
/freebsd-10-stable/sys/dev/iwn/if_iwnreg.h
/freebsd-10-stable/sys/dev/mge/if_mgevar.h
/freebsd-10-stable/sys/dev/mpt/mpt_cam.c
/freebsd-10-stable/sys/dev/msk/if_mskreg.h
/freebsd-10-stable/sys/dev/mvs/mvs.h
/freebsd-10-stable/sys/dev/mxge/mxge_mcp.h
/freebsd-10-stable/sys/dev/qlxge/qls_dump.c
/freebsd-10-stable/sys/dev/ral/rt2560reg.h
/freebsd-10-stable/sys/dev/ral/rt2661reg.h
/freebsd-10-stable/sys/dev/ral/rt2860reg.h
/freebsd-10-stable/sys/dev/sound/pci/hda/hdaa.h
/freebsd-10-stable/sys/dev/usb/controller/ehci.h
/freebsd-10-stable/sys/dev/usb/wlan/if_rumreg.h
/freebsd-10-stable/sys/dev/usb/wlan/if_runreg.h
/freebsd-10-stable/sys/dev/usb/wlan/if_uralreg.h
/freebsd-10-stable/sys/dev/usb/wlan/if_urtwreg.h
/freebsd-10-stable/sys/dev/usb/wlan/if_zydreg.h
/freebsd-10-stable/sys/dev/wpi/if_wpireg.h
/freebsd-10-stable/sys/geom/raid/tr_raid1e.c
/freebsd-10-stable/sys/i386/pci/pci_cfgreg.c
/freebsd-10-stable/sys/mips/atheros/ar71xxreg.h
/freebsd-10-stable/sys/mips/atheros/ar934xreg.h
/freebsd-10-stable/sys/mips/atheros/if_argevar.h
/freebsd-10-stable/sys/mips/malta/gt_pci.c
/freebsd-10-stable/sys/mips/nlm/dev/net/nae.c
/freebsd-10-stable/sys/mips/nlm/xlp_machdep.c
/freebsd-10-stable/sys/mips/rmi/pic.h
/freebsd-10-stable/sys/ofed/drivers/infiniband/hw/mlx4/qp.c
/freebsd-10-stable/sys/ofed/drivers/infiniband/hw/mthca/mthca_mcg.c
/freebsd-10-stable/sys/ofed/drivers/infiniband/hw/mthca/mthca_qp.c
/freebsd-10-stable/sys/ofed/drivers/net/mlx4/mcg.c
/freebsd-10-stable/sys/powerpc/fpu/fpu_emu.c
/freebsd-10-stable/sys/powerpc/fpu/fpu_sqrt.c
/freebsd-10-stable/sys/powerpc/powermac/nvbl.c
/freebsd-10-stable/sys/sys/consio.h
/freebsd-10-stable/sys/x86/iommu/intel_reg.h
/freebsd-10-stable/usr.sbin/bluetooth/bthidd/kbd.c
261078 23-Jan-2014 loos

MFC r256959:

Add the Raspberry Pi BSC (I2C compliant) controller driver.

Reviewed by: rpaulo

MFC r256961:

Enable the build of OFW I2C bus for FDT systems.

MFC r258045:

As all the IIC controllers on system uses the same 'iichb' prefix we cannot
rely only on checking the device unit to indentify the BSC unit we are
attaching to. Make use of the device base address to identify our BSC unit.

MFC r259127:

Bring the RPi I2C driver in line with ti_i2c. Make it treat any slave
address as a 7-bit address.

Approved by: adrian (mentor)

261077 23-Jan-2014 loos

MFC r257127:

Remove all the instances of '#undef DEBUG' from kernel.

Suggested by: rpaulo
Approved by: adrian (mentor)

259963 27-Dec-2013 adrian

Revert r252694 from stable/10 to fix instabilities seen with jemalloc + dhclient/sshd.

This is a direct commit to stable/10 as the VM code has changed
since the stable/10 branch.

PR: kern/185046

259831 24-Dec-2013 jhb

MFC 258177:
Remove an incorrectly copied and pasted clause from these license
statements.

259759 23-Dec-2013 imp

MFC r259685:

Plumb the cn_grab and cn_ungrab routines down into the uart
clients. Mask RX interrupts while grabbed on the atmel serial
driver. This UART interrupts every character. When interrupts are
enabled at the mountroot> prompt, this means the ISR eats the
characters. Rather than try to create a cooperative buffering system
for the low level kernel console, instead just mask out the ISR. For
NS8250 and decsendents this isn't needed, since interrupts only happen
after 14 or more characters (depending on the fifo settings). Plumb
such that these are optional so there's no change in behavior for all
the other UART clients. ddb worked on this platform because all
interrupts were disabled while it was running, so this problem wasn't
noticed. The mountroot> issue has been around for a very very long
time.

Approved by: re@ (gjb@)

259510 17-Dec-2013 kib

MFC r257228:
Add bus_dmamap_load_ma() function to load map with the array of
vm_pages.

259381 14-Dec-2013 ian

MFC r259212, r259220:

Fix one race and one fence post error. When the TX buffer was
completely full, we'd not complete any of the mbufs due to the fence
post error (this creates a large leak). When this is fixed, we still
leak, but at a much smaller rate due to a race between ateintr and
atestart_locked as well as an asymmetry where atestart_locked is
called from elsewhere. Ensure that we free in-flight packets that
have completed there as well. Also remove needless check for NULL on
mb, checked earlier in the loop and simplify a redundant if.

259380 14-Dec-2013 ian

MFC r259038, r259039:

Bump the maximum VM space from 3 * memory size to a fixed
256MB. That's all we have room for since we map the hardware registers
starting at 0xd0000000. This allows my 64MB AT91SAM9G20 to boot again
after the unmmaped I/O changes were MFC'd at r251897. Other
subplatforms may need similar treatment.

Although not strictly required to boot a 64MB board, bump
vm_max_virtual_address to be KERNVIRTADDR + 256MB. This allows some
future shock protection since the KVA requirements have gone up since
the unmapped changes have gone in, as well as preventing us from
overlapping with the hardware devices, which we map at 0xd0000000,
which we'd hit with anything more than 85MB...

259379 14-Dec-2013 ian

MFC r258828:

Add a nand flash controller driver for Atmel at91 family. Tested only
on at91rm9200 so far.

259378 14-Dec-2013 ian

MFC r258820: Add definitions for the PIO pins found on recent AT91 SoCs.

259377 14-Dec-2013 ian

MFC r258392, r258412:

Call cpu_setup() immediately after the page tables are installed. This
enables data cache and other chip-specific features. It was previously
done via an early SYSINIT, but it was being done after pmap and vm setup,
and those setups need to use mutexes. On some modern ARM platforms,
the ldrex/strex instructions that implement mutexes require the data cache
to be enabled.

Call cpu_setup() from the initarm() routine on platforms that don't use
the common FDT-aware initarm() in arm/machdep.c.

259375 14-Dec-2013 ian

MFC r258393:

Add USB_HOST_ALIGN=64; the cache line size on the am335x is 64 bytes.

259374 14-Dec-2013 ian

MFC r258356:

Bugfixes... the host capabilties from FDT data are stored in host.caps, not
host.host_ocr, examine the correct field when setting up the hardware. Also,
the offset for the capabilties register should be 0x140, not 0x240.

259373 14-Dec-2013 ian

MFC r258240:

In the data abort handler, don't panic if kdb is available and says it
handled the condition.

259366 14-Dec-2013 ian

MFC r257924:

Apparently with "const uint32_t foo = 0x60;" gcc doesn't consider 'foo'
to be a constant integer suitable for use in a case label, so use #defines.

259365 14-Dec-2013 ian

MFC r257669, r257672, r257673, r257676, r257678:

Call initarm_lastaddr() later in the init sequence, after establishing
static device mappings, rather than as the first of the initializations
that a platform can hook into. This allows a platform to allocate KVA
from the top of the address space downwards for things like static device
mapping, and return the final "last usable address" result after that and
other early init work is done.

Because some platforms were doing work in initarm_lastaddr() that needs to
be done early, add a new initarm_early_init() routine and move the early
init code to that routine on those platforms.

Make PTE_DEVICE a synonym for PTE_NOCACHE on armv4, to make it easier to
share the same code on both architectures.

Add new helper routines for arm static device mapping. The new code
allocates kva space from the top down for the device mappings and builds
entries in an internal table which is automatically used later by
arm_devmap_bootstrap(). The platform code just calls the new
arm_devmap_add_entry() function as many times as it needs to (up to 32
entries allowed; most platforms use 2 or 3 at most).

Remove imx local devmap code and use the essentially identical common
code that got moved from imx_machdep.c to arm/devmap.c.

259364 14-Dec-2013 ian

MFC r257648, r257649, r257660:

Begin reducing code duplication in arm pmap.c and pmap-v6.c by factoring
out common code related to mapping device memory into a new devmap.c file.

Remove the growing duplication of code that used pmap_devmap_find_pa() and
then did some math with the returned results to generate a virtual address,
and likewise in reverse to get a physical address. Now there are a pair
of functions, arm_devmap_vtop() and arm_devmap_ptov(), to do that. The
bus_space_map() implementations are rewritten in terms of these.

Move remaining code and data related to static device mapping into the
new devmap.[ch] files. Emphasize the MD nature of these things by using
the prefix arm_devmap_ on the function and type names (already a few of
these things found their way into MI code, hopefully it will be harder to
do by accident in the future).

259363 13-Dec-2013 ian

MFC r257639:

Remove the duplicated implementations of some bus_space functions and use
the essentially identical generic implementations instead. The generic
implementations differ only in the spelling of a couple variable names
and some formatting differences.

259361 13-Dec-2013 ian

MFC r257603, r257604:

Rename WANDBOARD-COMMON to WANDBOARD.common and adjust the configs that
include it accordingly. The build machinery for universe and tinderbox
tries to build every kernel config whose name begins and ends with [A-Z0-9]
and the common include file that has most of the options isn't buildable
by itself, so the new lowercase .common will avoid building it.

259360 13-Dec-2013 ian

MFC r257595: Comments and style(9) only, no functional changes.

259359 13-Dec-2013 ian

MFC r257561:

Bugfix: the attach routine needs to use the same table of fdt compat
strings that the probe routine used.

259358 13-Dec-2013 ian

MFC r257557: Add a missing register definition.

259356 13-Dec-2013 ian

MFC r257518, r257519:

TI sdhci driver improvements, mostly related to fdt data...

Use the published compatible strings (our own invention, "ti,mmchs" is
still accepted as well, for now).

Don't blindly turn on 8-bit bus mode, because even though the controller
supports it, the board has to be wired appropriately as well. Use the
published property (bus-width=<n>) and honor all the valid values (1,4,8).

The eMMC device on a Beaglebone Black is wired for 8-bit, update the dts.

The mmchs controller can inherently do both 1.8v and 3.0v on the first
device and 1.8v only on other devices, unless an external transceiver is
used. Set the voltage automatically for the first device and honor
the published fdt property (ti,dualvolt) for other devices.

259355 13-Dec-2013 ian

MFC r257483, r257486, r257489:

Add the Soc- / machine-dependent parts of imx6 support.
Add dts source for imx6 SoCs and for Wandboard boards.
Add kernel config for Wandboard.

259354 13-Dec-2013 ian

MFC r257476, r257478:

Revamp the SoC identity numbering scheme to be more in line with the way
Freescale numbers the chips in the ID registers.

Add definitions for the register and data that describes the SoC type.

259353 13-Dec-2013 ian

MFC r257454: Add sdhci driver glue for imx family SoCs.

259352 13-Dec-2013 ian

MFC r257453: Add stubbed-out imx6 support for clocks and power management.

259351 13-Dec-2013 ian

MFC r257452: Add support for the USB PHY on imx6 SoCs.

259349 13-Dec-2013 ian

MFC r257419:

Do not EOI an interrupt until the point after the filter handlers / before
threaded handlers.

259348 13-Dec-2013 ian

MFC r257418:

Don't iterate through the bits of the pending interrupt register if the
whole register is zero. Most of the registers will be zero most of the time.

259347 13-Dec-2013 ian

MFC r257413:

Reset the timer interrupt status register at the top rather than bottom of
the interrupt handler. If the event callback starts a new short timeout,
the timer can fire before returning from the event callback, and clearing
the interrupt status after that loses the interrupt and hangs until the
counter wraps. Fixing all of this removes the need for the do-nothing
loop at the top of the handler which really just waited for the counter to
roll over and reach the one-shot count again.

Also add a missing return(0) in the periodic timer start case.

259346 13-Dec-2013 ian

MFC r257407:

Expand the list of compatible devices this driver works with. Increase
the target frequency from 1 to 10 MHz because these SoCs are plenty fast
enough to benefit from the extra event timer resolution.

259343 13-Dec-2013 ian

MFC r257383, r257384:

Add some bare-bones support for enabling usb and usbphy clocks.

Add a "no-op" USB PHY driver for imx-family SoCs.

259342 13-Dec-2013 ian

MFC r257258, r257265: Include headers (if_var.h and others) where needed.

The change that triggered the need for this on head was r257244. That
hasn't been MFC'd yet, but there's no harm in paving the way for it with
this MFC.

259337 13-Dec-2013 ian

MFC r257203: Eliminate a compiler warning about extraneous parens.

259335 13-Dec-2013 ian

MFC r257201, r257202

Retire arm_remap_nocache() and the data and constants associated with it.

259329 13-Dec-2013 ian

MFC r257199, r257200, r257217:

Remove all #include <machine/pmap.h> from arm code. It's already
included by vm/pmap.h, which is a prerequisite for arm/machine/pmap.h
so there's no reason to ever include it directly.

Remove #include <machine/frame.h> from all the arm code that doesn't
really need it. That would be almost everywhere it was included. Add
it in a couple files that really do need it and were previously getting
it by accident via another header.

Remove the last dregs of trapframe_t. It turns out only arm was using
this type, so remove it to make arm code more consistant with other
platforms.


allwinner/a10_clk.c
allwinner/a10_gpio.c
allwinner/a10_machdep.c
allwinner/a20/a20_cpu_cfg.c
allwinner/timer.c
arm/cpufunc.c
arm/genassym.c
arm/generic_timer.c
arm/machdep.c
arm/minidump_machdep.c
arm/mpcore_timer.c
arm/nexus.c
arm/trap.c
arm/undefined.c
arm/vfp.c
arm/vm_machdep.c
at91/at91_mci.c
at91/at91_pmc.c
broadcom/bcm2835/bcm2835_dma.c
broadcom/bcm2835/bcm2835_fb.c
broadcom/bcm2835/bcm2835_gpio.c
broadcom/bcm2835/bcm2835_machdep.c
broadcom/bcm2835/bcm2835_mbox.c
broadcom/bcm2835/bcm2835_sdhci.c
broadcom/bcm2835/bcm2835_spi.c
broadcom/bcm2835/bcm2835_systimer.c
econa/timer.c
freescale/imx/imx51_ipuv3.c
freescale/imx/imx_gpt.c
freescale/imx/imx_machdep.c
include/cpu.h
include/fdt.h
include/frame.h
include/pcb.h
include/pcpu.h
include/undefined.h
lpc/lpc_fb.c
lpc/lpc_gpio.c
lpc/lpc_machdep.c
lpc/lpc_mmc.c
lpc/lpc_spi.c
lpc/lpc_timer.c
mv/mv_machdep.c
mv/mvvar.h
mv/orion/db88f5xxx.c
mv/timer.c
rockchip/rk30xx_gpio.c
rockchip/rk30xx_grf.c
rockchip/rk30xx_machdep.c
rockchip/rk30xx_pmu.c
sa11x0/sa11x0_io.c
samsung/exynos/arch_timer.c
samsung/exynos/exynos5_machdep.c
tegra/tegra2_machdep.c
ti/am335x/am335x_dmtimer.c
ti/am335x/am335x_lcd_syscons.c
ti/am335x/am335x_prcm.c
ti/am335x/am335x_scm_padconf.c
ti/omap4/omap4_prcm_clks.c
ti/omap4/omap4_scm_padconf.c
ti/omap4/pandaboard/pandaboard.c
ti/ti_cpuid.c
ti/ti_machdep.c
ti/ti_mmchs.c
ti/ti_prcm.c
ti/ti_scm.c
ti/twl/twl.c
ti/twl/twl_clks.c
ti/twl/twl_vreg.c
versatile/pl050.c
versatile/sp804.c
versatile/versatile_clcd.c
versatile/versatile_machdep.c
versatile/versatile_pci.c
versatile/versatile_timer.c
xilinx/zy7_machdep.c
xscale/i80321/i80321_pci.c
xscale/i8134x/i81342_pci.c
xscale/ixp425/ixp425_pci.c
xscale/ixp425/ixp425_wdog.c
259325 13-Dec-2013 ian

MFC r257062: Add the Raspberry Pi SPI controller driver.

259324 13-Dec-2013 ian

MFC r256949: Import basic support for Rockchip RK3188 SoC.

259322 13-Dec-2013 ian

MFC r257197:

Maximize available kva space by doing static device mapping from the top
of the address space downwards, and then returning the lowest mapped
device address from initarm_lastaddr(). Premap most of the device's
on-chip peripherals.

259318 13-Dec-2013 ian

MFC r256809: Add configuration for the Freescale i.MX53 Quick Start Board.

259317 13-Dec-2013 ian

MFC r256806, r256919, r257167:

Add a driver for the Freescale Fast Ethernet Controller found on various
Freescale SoCs including the i.MX series. This also works for the newer
SoCs with the ENET gigabit controller, but doesn't use any of the new
hardware features other than enabling gigabit speed.

Mask out non-address bits in the mac address register, for proper
detection of an all-zeroes address. Also remove a misplaced return.

Switch to using ofw_bus_search_compatible() table-driven compat lookup.
Add compat strings for Freescale Vybrid family SoCs.

259315 13-Dec-2013 ian

MFC r256804:

Switch to using the standard uart console driver instead of the special
driver for early boot debugging.

259314 13-Dec-2013 ian

MFC r256774:

Clock divisors 0-3 correspond to dividing by 1-4, so add 1 before dividing.

259313 13-Dec-2013 ian

MFC r256647:

Invalidate the entire L2 cache before enabling it. Say whether it
has been enabled or disabled.

259310 13-Dec-2013 ian

MFC r256638:

Add cases for the combinations of busdma sync op flags that we handle
correctly by doing nothing, then add a panic for the default case, because
that implies that some driver asked for a sync (probably incorrectly) and
nothing was done.

259309 13-Dec-2013 ian

MFC r256637:

When calculating the number of bounce pages needed, round the maxsize
up to a multiple of PAGE_SIZE, and add one page because there can always
be one more boundary crossing than the number of pages in the transfer.

259308 13-Dec-2013 ian

MFC r256628:
Fix a register name typo. The effect was that CPU_CONTROL_AFLT_ENABLE
wasn't being set, but it was almost assuredly already turned on anyway
by the bootloader.

256292 10-Oct-2013 dim

MFC r256291:

In sys/arm/versatile/versatile_pci.c, add a default handler, to fix a
gcc warning about uninitialized use of a variable.

Approved by: re (gjb)

256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


256196 09-Oct-2013 dim

Remove redundant redeclarations of uart_s3c2410_class in
sys/arm/s3c2xx0/uart_bus_s3c2410.c and uart_cpu_s3c2410.c, to silence
two gcc warnings.

Approved by: re (gjb)
X-MFC-With: r252394


255967 01-Oct-2013 br

- Enable unmapped buffers on Exynos5 again, because
board now able to see all the 2GB ram it has
- Also unbreak gcc build

Approved by: cognet (mentor)
Approved by: re (marius)


255816 23-Sep-2013 loos

Fix DELAY() on RPi, the wrong math was making it take twice it should.

Reported by: Alexander <sht@ropnet.ru>
Approved by: adrian (mentor)
Approved by: re (gjb)


255786 22-Sep-2013 glebius

- Create kern.ipc.sendfile namespace, and put the new "readhead" OID
there as "kern.ipc.sendfile.readahead".
- Push all nsfbuf related tunables into MD code. Don't move them
to new namespace in favor of POLA.

Reviewed by: scottl
Approved by: re (gjb)


255738 20-Sep-2013 zbb

Fix GCC build for all ARMs. Revert bug introduced in r255613.

Previous change applied in r255613 fixed build for ARMv6 but
broke it for previous architecture revisions. This commit
eventually fixes GCC build for all ARM revisions.

Approved by: cognet (mentor)
Approved by: re (kib)


255724 20-Sep-2013 alc

The pmap function pmap_clear_reference() is no longer used. Remove it.

pmap_clear_reference() has had exactly one caller in the kernel for
several years, more precisely, since FreeBSD 8. Now, that call no
longer exists.

Approved by: re (kib)
Sponsored by: EMC / Isilon Storage Division


255677 18-Sep-2013 pjd

Fix panic in ktrcapfail() when no capability rights are passed.
While here, correct all consumers to pass NULL instead of 0 as we pass
capability rights as pointers now, not uint64_t.

Reported by: Daniel Peyrolon
Tested by: Daniel Peyrolon
Approved by: re (marius)


255613 16-Sep-2013 zbb

Fix GCC build error when building for ARMv6

Apply theravens's idea to move __strong_reference
macros into the proper ifdef section.

Approved by: cognet (mentor)
Approved by: re


255612 16-Sep-2013 zbb

Implement pmap_advise() for ARMv6/v7 pmap module

Apply the given advice to the specified range of addresses within the
given pmap. Depending on the advice, clear the referenced and/or
modified flags in each mapping. Superpage within the given range will
be demoted or destroyed.

Reviewed by: alc
Approved by: cognet (mentor)
Approved by: re


255611 16-Sep-2013 zbb

Write protect base page after superpage demotion so that it may repromote

When clearing the modification status of the superpage, one of the
base pages produced during demotion should be marked as write disabled.
The intention is that subsequent write access may repromote.
In the current implementation this was done wrong as write permission was
granted instead of forbidden.

Approved by: cognet (mentor)
Approved by: re


255370 07-Sep-2013 loos

Export a function to allow BCM2835's peripheral devices to enable their
altenate pin function (from GPIO pins) as needed.

Approved by: adrian (mentor)


255361 07-Sep-2013 andrew

On ARM EABI double precision floating point values are stored in the
endian the CPU is in, i.e. little-endian on most ARM cores.

This allows ARMv4 and ARMv5 boards to boot with the ARM EABI.


255352 07-Sep-2013 glebius

Fix of r255318: move sf_buf_alloc()/sf_buf_free() out of #ifdef
ARM_USE_SMALL_ALLOC.


255334 06-Sep-2013 loos

Fix an off-by-one bug in ar71xx_gpio and bcm2835_gpio which makes the last
pin unavailable.

Reported and tested by: sbruno (ar71xx)
Approved by: adrian (mentor)
Pointy hat to: loos


255318 06-Sep-2013 glebius

Fix build with gcc. Move sf_buf_alloc()/sf_buf_free() declarations
to MD headers.


255151 02-Sep-2013 rpaulo

Revert accidental commit.


255130 01-Sep-2013 rpaulo

Initial support for the Digi ConnectCore(c) i.MX53 / Wi-i.MX53 boards.

There are many drivers missing, but we can reach single user mode now.

Hardware graciously donated by Douglas Beattie.


255092 31-Aug-2013 theraven

Unconditionally compile the __sync_* atomics support functions into compiler-rt
for ARM.
This is quite ugly, because it has to work around a clang bug that does not
allow built-in functions to be defined, even when they're ones that are
expected to be built as part of a library.

Reviewed by: ed


255091 31-Aug-2013 rpaulo

Fix a typo in a comment.


255028 29-Aug-2013 alc

Significantly reduce the cost, i.e., run time, of calls to madvise(...,
MADV_DONTNEED) and madvise(..., MADV_FREE). Specifically, introduce a new
pmap function, pmap_advise(), that operates on a range of virtual addresses
within the specified pmap, allowing for a more efficient implementation of
MADV_DONTNEED and MADV_FREE. Previously, the implementation of
MADV_DONTNEED and MADV_FREE relied on per-page pmap operations, such as
pmap_clear_reference(). Intuitively, the problem with this implementation
is that the pmap-level locks are acquired and released and the page table
traversed repeatedly, once for each resident page in the range
that was specified to madvise(2). A more subtle flaw with the previous
implementation is that pmap_clear_reference() would clear the reference bit
on all mappings to the specified page, not just the mapping in the range
specified to madvise(2).

Since our malloc(3) makes heavy use of madvise(2), this change can have a
measureable impact. For example, the system time for completing a parallel
"buildworld" on a 6-core amd64 machine was reduced by about 1.5% to 2.0%.

Note: This change only contains pmap_advise() implementations for a subset
of our supported architectures. I will commit implementations for the
remaining architectures after further testing. For now, a stub function is
sufficient because of the advisory nature of pmap_advise().

Discussed with: jeff, jhb, kib
Tested by: pho (i386), marcel (ia64)
Sponsored by: EMC / Isilon Storage Division


254918 26-Aug-2013 raj

Introduce superpages support for ARMv6/v7.

Promoting base pages to superpages can increase TLB coverage and allow for
efficient use of page table entries. This development provides FreeBSD/ARM
with superpages management mechanism roughly equivalent to what we have for
i386 and amd64 architectures.

1. Add mechanism for automatic promotion of 4KB page mappings to 1MB section
mappings (and demotion when not needed, respectively).

2. Managed and non-kernel mappings are now superpages-aware.

3. The functionality can be enabled by setting "vm.pmap.sp_enabled" tunable to
a non-zero value (either in loader.conf or by modifying "sp_enabled"
variable in pmap-v6.c file). By default, automatic promotion is currently
disabled.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: alc
Sponsored by: The FreeBSD Foundation, Semihalf


254915 26-Aug-2013 raj

Provide settings for superpage reservation system on ARM.

This allows for enabling and configuring superpages reservation mechanism in
order to allocate and populate 256 4KB base pages (for the purpose of
promotion to a 1MB superpage).

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: alc
Sponsored by: The FreeBSD Foundation, Semihalf


254913 26-Aug-2013 raj

Add missing TAILQ initializer (omitted in r250634).

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: alc
Sponsored by: The FreeBSD Foundation, Semihalf


254902 26-Aug-2013 andrew

Update the root device to be correct for use with crochet.


254901 26-Aug-2013 andrew

Revert r251370 as it contains a deadlock.


254847 25-Aug-2013 andrew

Add the frame information to cpu_switch to allow us to unwind out of it,
for example when dumping threads in the kernel debugger.


254845 25-Aug-2013 andrew

Add the unwind information to irq_entry so we can pass through it when
unwinding the stack.


254667 22-Aug-2013 kib

Revert r254501. Instead, reuse the type stability of the struct pmap
which is the part of struct vmspace, allocated from UMA_ZONE_NOFREE
zone. Initialize the pmap lock in the vmspace zone init function, and
remove pmap lock initialization and destruction from pmap_pinit() and
pmap_release().

Suggested and reviewed by: alc (previous version)
Tested by: pho
Sponsored by: The FreeBSD Foundation


254598 21-Aug-2013 ian

Add support for uarts other than the serial console in TI OMAP SoCs.

The TI uart hardware is ns16550-compatible, except that before it can
be used the clocks and power have to be enabled and a non-standard
mode control register has to be set to put the device in uart mode
(as opposed to irDa or other serial protocols). This adds the extra
code in an extension to the standard ns8250 probe routine, and the
rest of the driver is just the standard ns8250 code.


254593 21-Aug-2013 ian

Make the noop clock successfully do nothing, because doing nothing and
returning an error status (which the NULL method pointers caused) isn't
nearly as useful.


254592 21-Aug-2013 ian

Define the uart clocks so that they can be en/disabled at runtime.


254580 20-Aug-2013 andrew

Enable VFP on ARMADA XP.


254559 20-Aug-2013 ian

Make the standard sdhci(4) driver work for the TI OMAP family SoCs.
The MMCHS hardware is pretty much a standard SDHCI v2.0 controller with a
couple quirks, which are now supported by sdhci(4) as of r254507.

This should work for all TI SoCs that use the MMCHS hardware, but it has
only been tested on AM335x right now, so this enables it on those platforms
but leaves the existing ti_mmchs driver in place for other OMAP variants
until they can be tested.

This initial incarnation lacks DMA support (coming soon). Even without it
this improves performance pretty noticibly over the ti_mmchs driver,
primarily because it now does multiblock IO.


254542 19-Aug-2013 andrew

Enable VFP on the Zedboard.


254536 19-Aug-2013 raj

Do not use pv_kva on ARMv6/v7 and save some space on each vm_page. It's only
relevant for older ARM variants (with virtual cache).

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: gber
Sponsored by: The FreeBSD Foundation, Semihalf


254535 19-Aug-2013 raj

Simplify and clean up pmap_clearbit()

There is no need for calling vm_page_dirty() when clearing "modified" flag as
it is already set for that page in pmap_fault_fixup() or pmap_enter() thanks
to "modified" bit emulation.

Also, there is no need for checking PTE "referenced" or "writeable" flags. If
there is a request to clear a particular flag we should just do it.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: gber
Sponsored by: The FreeBSD Foundation, Semihalf


254533 19-Aug-2013 raj

Fix ARMv6/v7 mapping's wired status.

Last input argument in pmap_modify_pv() should be a mask of flags to be set.
In pmap_change_wiring() however, the straight wired status was used, which
does not represent valid flags (and is of type boolean).

This commit fixes the issue so that wired flag is passed to pmap_modify_pv()
properly.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: gber
Sponsored by: The FreeBSD Foundation, Semihalf


254532 19-Aug-2013 raj

Clear all L2 PTE protection bits before their configuration.

Revise L2_S_PROT_MASK to include all of the protection bits. Notice that
clearing these bits does not always take away the corresponding permissions
(for example, permission is granted when the bit is cleared). The bits are
cleared but are to be set or left cleared accordingly in pmap_set_prot(),
pmap_enter_locked(), etc.

Clear L2_XN along with L2_S_PROT_MASK in pmap_set_prot() so that all
permissions related bits are cleared before actual configuration.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: gber
Sponsored by: The FreeBSD Foundation, Semihalf


254531 19-Aug-2013 raj

Simplify pv_entry removal or ARMv6/v7:

- PGA_WRITEABLE indicates that there *might be* a writable mapping for the
particular page, so to avoid frequent sweeping of the pv_entries whenever
pmap_nuke_pv(), pmap_modify_pv(), etc. is called, it is sufficient to
clear that flag if there are no managed mappings for that page anymore
(notice that only pmap_enter is authorized to set this flag).
- Avoid redundant checking for PVF_WIRED flag when this flag cannot be set
anyway.
- Clear PGA_WRITEABLE only once for each vm_page instead of multiple,
redundant clearing it in loop when there are no writeable mappings
to that page anymore.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: gber
Sponsored by: The FreeBSD Foundation, Semihalf


254514 19-Aug-2013 andrew

Enable VFP on the Arndale Board.


254495 18-Aug-2013 cognet

Increase the max KVA available for general consumption on the Exynos 5.

Submitted by: Ruslan Bukin <br@bsdpad.com>


254494 18-Aug-2013 andrew

Enable VFP in the Versatile PB (QEMU) kernel. Tested on QEMU 1.6.0.


254493 18-Aug-2013 andrew

Enable VFP on the CubieBoard and CubieBoard 2.


254487 18-Aug-2013 andrew

Enable VFP support on EFIKA MX.


254464 17-Aug-2013 ian

Enable VFP support for BeagleBone.


254461 17-Aug-2013 andrew

Rename device vfp to option VFP and retire the ARM_VFP_SUPPORT option. This
simplifies enabling as previously both options were required to be enabled,
now we only need a single option.

While here enable VFP on the PandaBoard.


254454 17-Aug-2013 andrew

Remove the ARMFPE option. It is unsupported, and appears to be broken as
arm_fpe_core_changecontext is not a function.


254452 17-Aug-2013 andrew

Remove fpe_sp_state as we don't support fpe.


254451 17-Aug-2013 andrew

Remove unused FPE code. This is not enabled anywhere as it is the only
file I can find containing FAST_FPE. It appears this would not work as
want_resched is not defined anywhere.


254299 13-Aug-2013 ian

Rename imx_machdep.c to imx51_machdep.c, because it contains hardware
addresses which are specific to the imx51 chips.


254281 13-Aug-2013 ian

Add imx6 compatibility and make the driver work for any clock frequency.

There are still a couple references to imx51 ccm driver functions that will
need to be changed after an imx6 ccm driver is written.

Reviewed by: ray


254229 11-Aug-2013 cognet

Only allocate 2 bounce pages for maps that can only use them for buffers that
are unaligned on cache lines boundary, as we will never need more.


254172 10-Aug-2013 cognet

Use the correct address when calling kva_free()

Pointy hat to: cognet
Spotted out by: alc


254171 10-Aug-2013 cognet

- The address lies in the bus space handle, not in the cookie
- Use the right address when calling kva_free()
(Is there any reason why the s3c2xx0 comes with its own version of bs_map/
bs_unmap ? It seems to be just the same as in bus_space_generic.c)


254166 09-Aug-2013 cognet

Instead of just trying to do it for arm, make sure vm_kmem_size is properly
aligned in kmeminit(), where it'll work for any arch.

Suggested by: alc


254165 09-Aug-2013 cognet

- The address lies in the bus space handle, not in the cookie
- Use the right address when calling kva_free()


254164 09-Aug-2013 cognet

Make sure vm_kmem_size is aligned on a page boundary, since that's what vmem
expects.


254138 09-Aug-2013 attilio

The soft and hard busy mechanism rely on the vm object lock to work.
Unify the 2 concept into a real, minimal, sxlock where the shared
acquisition represent the soft busy and the exclusive acquisition
represent the hard busy.
The old VPO_WANTED mechanism becames the hard-path for this new lock
and it becomes per-page rather than per-object.
The vm_object lock becames an interlock for this functionality:
it can be held in both read or write mode.
However, if the vm_object lock is held in read mode while acquiring
or releasing the busy state, the thread owner cannot make any
assumption on the busy state unless it is also busying it.

Also:
- Add a new flag to directly shared busy pages while vm_page_alloc
and vm_page_grab are being executed. This will be very helpful
once these functions happen under a read object lock.
- Move the swapping sleep into its own per-object flag

The KPI is heavilly changed this is why the version is bumped.
It is very likely that some VM ports users will need to change
their own code.

Sponsored by: EMC / Isilon storage division
Discussed with: alc
Reviewed by: jeff, kib
Tested by: gavin, bapt (older version)
Tested by: pho, scottl


254061 07-Aug-2013 cognet

Don't bother trying to work around buffers which are not aligned on a cache
line boundary. It has never been 100% correct, and it can't work on SMP,
because nothing prevents another core from accessing data from an unrelated
buffer in the same cache line while we invalidated it. Just use bounce pages
instead.

Reviewed by: ian
Approved by: mux (mentor) (implicit)


254056 07-Aug-2013 ganbold

Bring initial support for Allwinner A20 SoC (Cubieboard2).
Add support for A20 timer.
Correct interrupt offset depending from chip.
Add basic code for CPU configuration module.
For now, add kernel config and dts file
(only FDT blob related problem needs to be solved later in
order to have one kernel for both cubieboard1 and 2).

Approved by: ray@


254025 07-Aug-2013 jeff

Replace kernel virtual address space allocation with vmem. This provides
transparent layering and better fragmentation.

- Normalize functions that allocate memory to use kmem_*
- Those that allocate address space are named kva_*
- Those that operate on maps are named kmap_*
- Implement recursive allocation handling for kmem_arena in vmem.

Reviewed by: alc
Tested by: pho
Sponsored by: EMC / Isilon Storage Division


253985 06-Aug-2013 andrew

We no longer need to align the stack before calling swi_handler as it is
already aligned correctly in the PUSHFRAME macro.


253971 05-Aug-2013 cognet

Let the platform calculate the timer frequency at runtime, and use that for
the omap4, instead of relying on the (wrong) value provided in the dts.


253968 05-Aug-2013 andrew

When entering exception handlers we may not have an aligned stack. This is
because an exception may happen at any time. The stack alignment rules on
ARM EABI state the only place the stack must be 8-byte aligned is on a
function boundary.

If an exception happens while a function is setting up or tearing down it's
stack frame it may not be correctly aligned. There is also no requirement
for it to be when the function is a leaf node.

The fix is to align the stack after we have stored a backup of the old stack
pointer, but before we have stored anything in the trapframe. Along with
this we need to adjust the size of the trapframe by 4 bytes to ensure the
stack below it is also correctly aligned.


253914 03-Aug-2013 ian

Tweak the imx debug console code so that it works with multiple SoCs.

Instead of hard-coding the uart register addresses for the imx51, use
a variable that defaults to the imx51 address. When debugging another
imx-family SoC, the variable can be set early in initarm() to provide
full console/printf support for debugging early boot.


253896 02-Aug-2013 cognet

Only receive the interrupts on the first core, to avoid duplicate interrupts.


253857 01-Aug-2013 ganbold

Add identification for Cortex-A7 (R0) cores.

Reviewed by: cognet@


253845 31-Jul-2013 obrien

Back out r253779 & r253786.


253830 31-Jul-2013 rpaulo

Initialisation routines for the mailbox, spinlock and PRU-ICSS clocks.


253788 29-Jul-2013 cognet

The errata 727915 requires a different workaround for r2p0, we have to
explicitely clean/invalidate every cache line using way/set operations.


253787 29-Jul-2013 cognet

Remove useless cache operations.


253779 29-Jul-2013 obrien

Decouple yarrow from random(4) device.

* Make Yarrow an optional kernel component -- enabled by "YARROW_RNG" option.
The files sha2.c, hash.c, randomdev_soft.c and yarrow.c comprise yarrow.

* random(4) device doesn't really depend on rijndael-*. Yarrow, however, does.

* Add random_adaptors.[ch] which is basically a store of random_adaptor's.
random_adaptor is basically an adapter that plugs in to random(4).
random_adaptor can only be plugged in to random(4) very early in bootup.
Unplugging random_adaptor from random(4) is not supported, and is probably a
bad idea anyway, due to potential loss of entropy pools.
We currently have 3 random_adaptors:
+ yarrow
+ rdrand (ivy.c)
+ nehemeiah

* Remove platform dependent logic from probe.c, and move it into
corresponding registration routines of each random_adaptor provider.
probe.c doesn't do anything other than picking a specific random_adaptor
from a list of registered ones.

* If the kernel doesn't have any random_adaptor adapters present then the
creation of /dev/random is postponed until next random_adaptor is kldload'ed.

* Fix randomdev_soft.c to refer to its own random_adaptor, instead of a
system wide one.

Submitted by: arthurmesh@gmail.com, obrien
Obtained from: Juniper Networks
Reviewed by: obrien


253768 29-Jul-2013 cognet

Explicitely include <machine/pcb.h>, so that we get the definition of
struct pcb.

Submitted by: Zbyszek Bodek <zbb@semihalf.com>
Pointy hat to: cognet


253762 29-Jul-2013 cognet

Define KDB_STOPPEDPCB, so that we can access the backtraces of threads running
on other cores.


253750 28-Jul-2013 avg

Revert r253748,253749

This WIP should not have been committed yet.

Pointyhat to: avg


253748 28-Jul-2013 avg

put contents of cpu.h under _KERNEL

no userland-serviceable parts inside

MFC after: 20 days


253746 28-Jul-2013 ian

Rename the existing std.imx and imx.files to std.imx51 and files.imx51, to
pave the way for adding imx6 support.


253635 25-Jul-2013 rpaulo

Revert ROOTDEVNAME change from previous commit.


253634 25-Jul-2013 rpaulo

Enable modules for the BeagleBone and for the Raspberry Pi.


253489 20-Jul-2013 andrew

Start adding support to build bits of our code using the Thumb-2
instruction set. Thumb-2 requires an if-then instruction to implement
conditional codes.

When building for ARM mode the it-then instructions do not generate any
assembled instruction as per the ARMv7-A Architecture Reference Manual, and
are safe to use.

While this allows the atomic instructions to be built, it doesn't mean we
fully support Thumb code. It works in small tests, but is still known to
fail in a large number of places.

While here add a check for the armv6t2 architecture.


253400 16-Jul-2013 andrew

Fix vfp:
- We should check is_d32 to see howmany registers we have
- In vfp_restore mark vfpscr as an output register

Without the second part it appears we can return the incorrect value from
vfp_bounce if the VFP condition flags are set as it may override the
register holding the return value.


253355 15-Jul-2013 rpaulo

Move the Raspberry Pi low level options out of the kernel config and into
std.rpi + std.bcm2835.

Reviewed by: imp


253351 15-Jul-2013 ae

Introduce new structure sfstat for collecting sendfile's statistics
and remove corresponding fields from struct mbstat. Use PCPU counters
and SFSTAT_INC() macro for update these statistics.

Discussed with: glebius


253309 13-Jul-2013 rpaulo

Indent the "scp=... rlv=..." to make it easier to read the backtrace.


253142 10-Jul-2013 ray

Remove trailing whitespaces.


253053 09-Jul-2013 rpaulo

Improve a comment.


253052 09-Jul-2013 emaste

Remove extraneous format string converison specifier

Submitted by: wxs@


253025 08-Jul-2013 gonzo

Add IDs for TPS65217C and TPS65217D


253023 08-Jul-2013 gonzo

- AM335x requires updated soft-reset logic too


253006 07-Jul-2013 rpaulo

Convert bcm2835_mbox to the new mbox interface.

Reviewed by: gonzo


253005 07-Jul-2013 rpaulo

Another warning.


252997 07-Jul-2013 rpaulo

armadaxp_idcache_wbinv_all() is in this file.


252996 07-Jul-2013 rpaulo

Fix all the compiler warnings in elf_trampoline.c.


252915 07-Jul-2013 gonzo

- Add USFS driver as an example of device mode for AM335x-based devices


252913 07-Jul-2013 gonzo

- Add USBSS driver for AM335x SoC. Driver is a wrapper around Mentors Graphic
USB OTG core.


252863 06-Jul-2013 rpaulo

Don't clear the SYSCONFIG register on boot.

This follows section 18.4.2.2 SD Soft Reset Flow in the TI AM335x Technical
Reference Manual and seems to fix the "ti_mmchs0: Error: current cmd NULL,
already done?" messages.


252837 05-Jul-2013 andrew

Fix the build with gcc.

Gcc outputs pre-UAL asm and expects the ldcl instruction with a condition
in the form ldc<c>l, where the code produces the instruction in the UAL
form ldcl<c>. Work around this by checking if we are using clang or gcc and
adjusting the instruction.

While here correct the cmp instruction's value to include the # before the
immediate value.


252780 05-Jul-2013 ray

o Make fields names short.
o Slim down reg fields comments.


252722 04-Jul-2013 gonzo

Add support for ePWM submodule of PWMSS

ePWM is controlled by sysctl nodes dev.am335x_pwm.N.period,
dev.am335x_pwm.N.dutyA and dev.am335x_pwm.N.dutyB that controls
PWM period and duty cycles for channels A and B respectively.

Period and duty cycle are measured in clock ticks. Default
clock frequency for AM335x PWM subsystem is 100MHz


252695 04-Jul-2013 gber

Remove redundant clearing of the PGA_WRITEABLE flag in
pmap_remove_all()

This flag should already be cleared by pmap_nuke_pv()

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


252694 04-Jul-2013 gber

Fix modified bit emulation for ARMv6/v7

When doing pmap_enter_locked(), enable write permission only when access
type indicates attempt to write. Otherwise, leave the page read only but
mark it writable in pv_flags.

This will result in:
1. Marking page writable during pmap_enter() but only when ensured that it
will be written right away so that we will not get redundant permissions
fault on write attempt.
2. Keeping page read only when it is permitted to be written but there was
no actual write attempt. Hence, we will get permissions fault on write
access and mark page writable in pmap_fault_fixup() what will indicate
modification status.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


252652 03-Jul-2013 gonzo

Fix one of INVARIANTS-related UMA panics on ARM

Force UMA zone to allocate service structures like slabs using own
allocator. uma_debug code performs atomic ops on uma_slab_t fields
and safety of this operation is not guaranteed for write-back caches


252522 02-Jul-2013 andrew

Enable VFP on Raspberry Pi. This has worked as of r251712.


252473 01-Jul-2013 tuexen

Enable SCTP, since it is also enabled on GENERIC and it works fine on
the Raspberry Pi.

Discussed with: rpaulo


252450 01-Jul-2013 rpaulo

The mbox driver is actually MP safe, so set the right flag in
bus_setup_intr().


252449 01-Jul-2013 rpaulo

Disable debugging.


252440 01-Jul-2013 rpaulo

Use the new FDT_FILE rpi.dts.


252434 01-Jul-2013 kib

Fix issues with zeroing and fetching the counters, on x86 and ppc64.
Issues were noted by Bruce Evans and are present on all architectures.

On i386, a counter fetch should use atomic read of 64bit value,
otherwise carry from the increment on other CPU could be lost for the
given fetch, making error of 2^32. If 64bit read (cmpxchg8b) is not
available on the machine, it cannot be SMP and it is enough to disable
preemption around read to avoid the split read.

On x86 the counter increment is not atomic on purpose, which makes it
possible for the store of the incremented result to override just
zeroed per-cpu slot. The effect would be a counter going off by
arbitrary value after zeroing. Perform the counter zeroing on the
same processor which does the increments, making the operations
mutually exclusive. On i386, same as for the fetching, if the
cmpxchg8b is not available, machine is not SMP and we disable
preemption for zeroing.

PowerPC64 is treated the same as amd64.

For other architectures, the changes made to allow the compilation to
succeed, without fixing the issues with zeroing or fetching. It
should be possible to handle them by using the 64bit loads and stores
atomic WRT preemption (assuming the architectures also converted from
using critical sections to proper asm). If architecture does not
provide the facility, using global (spin) mutex would be non-optimal
but working solution.

Noted by: bde
Sponsored by: The FreeBSD Foundation


252432 30-Jun-2013 rpaulo

Add INET6.


252427 30-Jun-2013 ray

Replace some spaces to tab.


252425 30-Jun-2013 ray

Decrypt magic numbers - define names for fields of Generic Timer's CNTKCTL reg.

Submitted by: Ruslan Bukin <br@bsdpad.com>


252424 30-Jun-2013 cognet

In generic_bs_map(), use kmem_alloc_nofault() instead of kmem_alloc(), as we
only need virtual addresses.

Submitted by: alc


252396 30-Jun-2013 ray

Arndale Board (by Insignal) kernel config file.
More info on the Wiki page https://wiki.freebsd.org/FreeBSD/arm/ArndaleBoard

Submitted by: Ruslan Bukin <br@bsdpad.com>
Reviewed by: gonzo


252395 30-Jun-2013 gonzo

- Fix IMAPx registers values calculation
- Initialize SMAPx registers too although they're unused in QEMU
- Do not pass IO/MEM resources to upper bus for activation, handle them locally.
Previously ACTIVATE method of upper bus was no-op so nothing bad
happened. But now FDT maps physaddr to vaddr and it causes
troubles: fdtbus_activate_resource resource assumes that
bustag/bushandle are already set which in this case is wrong.


252393 29-Jun-2013 gonzo

Enable patth-through of IRQ30 and IRQ31 to PIC just as comment states


252391 29-Jun-2013 ray

Import basic support for Samsung Exynos 5 support.

Submitted by: Ruslan Bukin <br@bsdpad.com>
Reviewed by: gonzo


252372 29-Jun-2013 ray

Add ARM Generic Timer driver.

Submitted by: Ruslan Bukin <br@bsdpad.com>


252370 29-Jun-2013 ray

o Initialize interrupt groups as Group 0 (secure interrupts).
o Minor cleanup.

Submitted by: Ruslan Bukin <br@bsdpad.com>


252362 28-Jun-2013 ray

Bump max number of IRQs for Cortex-Ax family to cover Exynos5 requirement.

Submitted by: Ruslan Bukin <br@bsdpad.com>


252361 28-Jun-2013 ray

Add identification for Cortex-A15 (R0) cores.

Submitted by: Ruslan Bukin <br@bsdpad.com>


252320 27-Jun-2013 andrew

Support reading registers r0-r3 when unwinding. There is a seperate
instruction to load these. We only hit it when unwinding past an trap frame
as in C r0-r3 would never have been saved onto the stack.


252311 27-Jun-2013 andrew

Add UNWINDSVCFRAME to provide the unwind pseudo ops to allow us to unwind
past a trapframe.

Use this macro in exception_exit as it is the function the unwinder enters
as the functions that store the frame setting lr to point to it.


252282 27-Jun-2013 gonzo

- Request non-cached memory for framebuffer
- Properly probe/initialize syscons


252229 26-Jun-2013 rpaulo

Print the 'setting internal ...' message only with bootverbose.


251781 15-Jun-2013 ed

Make support for atomics on ARM complete.

Provide both __sync_*-style and __atomic_*-style functions that perform
the atomic operations on ARMv5 by using Restartable Atomic Sequences.

While there, clean up some pieces of code where it's sufficient to use
regular uint32_t to store register contents and don't need full reg_t's.
Also sync this back to the MIPS code.


251712 13-Jun-2013 andrew

Fix the vfp code to work with the 16 register variants of the VFP unit. We
check which variant we are on, and if it is a VFPv3 or v4, and has 32
double registers we save these. This fixes VFP support on Raspberry Pi.

While here clean fmrx and fmxr up to use the register names from vfp.h
as opposed to the raw register names.


251695 13-Jun-2013 ed

Add C11 atomic fallbacks for ARM.

Basically the situation is as follows:

- When using Clang + armv6, we should not need any intrinsics. It should
support it, even though due to a target misconfiguration it does not.
We should fix this in Clang.
- When using Clang + noarmv6, provide __atomic_* functions that disable
interrupts.
- When using GCC + armv6, we can provide __sync_* intrinsics, similar to
what we did for MIPS. As ARM and MIPS are quite similar, simply base
this implementation on the one I did for MIPS.
- When using GCC + noarmv6, disable the interrupts, like we do for
Clang.

This implementation still lacks functions for noarmv6 userspace. To be
done.


251586 09-Jun-2013 cognet

Increase the maximum KVM available on TI chips. Not sure why we suddenly need
that much, but that lets me boot with 1GB of RAM.


251517 08-Jun-2013 andrew

Merge in changes from NetBSD:
* Remove support for non-elf files.
* Add the VFP setjmp magic numbers.
* Add the offsets for the VFP registers within the buffer.


251510 07-Jun-2013 andrew

Reduce the difference to NetBSD.

* Stop pretending we support anything other than ELF by removing code
surrounded by #ifdef __ELF__ ... #endif.
* Remove _JB_MAGIC_SETJMP and _JB_MAGIC__SETJMP, they are defined in
setjmp.h, which is able to be included from asm.
* Fix the spelling of dependent.
* Rename END _END and add END and ASEND to complement ENTRY and ASENTRY
respectively
* Add macros to simplify accessing the Global Offset Table, some of these
will be used in the upcoming update to the setjmp functions.


251371 04-Jun-2013 gber

Fix the passing of time on Armada XP.

In order to become independent of Coherency Fabric frequency, configure
Timer and Watchdog to operate in 25MHz mode.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>


251370 04-Jun-2013 gber

Implement pmap_copy() for ARMv6/v7.

Copy the given range of mappings from the source map to the
destination map, thereby reducing the number of VM faults on fork.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


251018 27-May-2013 gonzo

AM335x LCD controller driver with syscons support

Limitations:
- Raster mode only
- 24 and 32 bpp only


251017 27-May-2013 gonzo

Add PWM module driver for AM335x. Only eCAS subsystem is supported

Export function to configure eCAS submodule from another drivers.
It's used to control LCD panel backlight on AM335x EVM.


251016 27-May-2013 gonzo

Add SCM registers definitions for AM335x platform


251015 27-May-2013 gonzo

Add clock definitions for LCD controller and PWM module


250931 23-May-2013 gber

Rework and organize pmap_enter_locked() function.

pmap_enter_locked() implementation was very ambiguous and confusing.
Rearrange it so that each part of the mapping creation is separated.
Avoid walking through the redundant conditions.
Extract vector_page specific PTE setup from normal PTE setting.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


250930 23-May-2013 gber

Stop using PVF_MOD, PVF_REF & PVF_EXEC flags in pv_entry, use PTE.

Using PVF_MOD, PVF_REF and PVF_EXEC is redundant as we can get the proper
info from PTE bits.
When the mapping is marked as executable and has been referenced we assume
that it has been executed. Similarly, when the mapping is set to be writable
and is referenced, it must have been due to write access to it.
PVF_MOD and PVF_REF flags are kept just for pmap_clearbit() usage,
to pass the information on which bit should be cleared.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


250929 23-May-2013 gber

Improve, optimize and clean-up ARMv6/v7 memory management related code.

Use pmap_find_pv if needed instead of multiplying its code throughout
pmap-v6.

Avoid possible NULL pointer dereference in pmap_enter_locked()
When trying to get m->md.pv_memattr, make sure that m != NULL,
in particular that vector_page is set to be NULL.

Do not set PGA_REFERENCED flag in pmap_enter_pv().
On ARM any new page reference will result in either entering the new
mapping by calling pmap_enter, etc. or fixing-up the existing mapping in
pmap_fault_fixup().
Therefore we set PGA_REFERENCED flag in the earlier mentioned cases and
setting it later in pmap_enter_pv() is just waste of cycles.

Delete unused pm_pdir pointer from the pmap structure.

Rearrange brackets in the fault cause detection in trap.c
Place the brackets correctly in order to see course of the conditions
instantaneously.

Unify naming in pmap-v6.c and improve style
Use naming common for whole pmap and compatible with other pmaps,
improve style where possible:
pm -> pmap
pg -> m
opg -> om
*pt -> *ptep
*pte -> *ptep
*pde -> *pdep

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


250928 23-May-2013 gber

Switch to AP[2:1] access permissions model. Store "referenced"
bit in PTE.

Enable Access Flag in CPU control. With AF enabled each valid mapping
needs to have referenced bit in PTE set in order to be able to cache
it in the TLB.

AP[0] bit is to be used as reference flag.
All access permissions are encoded by AP[2:1] wherein AP[1] is in fact
"user enable" and AP[2](APX) is "write disable".

All mappings are always set to be valid. Reference emulation is performed
by setting/clearing reference flag in PTE.

md.pvh_attrs are no longer necessary however pv_flags are still being used
for now.

Marking vm_page as "dirty" or "referenced" is being performed on:
- page or flag fault servicing in pmap_fault_fixup(), basing on the fault
type
- vm_fault servicing in pmap_enter() according to the desired protections
and faulty access type
Redundant page marking has been removed as on ARM we know exactly when the
particular page is referenced or is going to be written.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Sponsored by: The FreeBSD Foundation, Semihalf


250884 21-May-2013 attilio

o Relax locking assertions for vm_page_find_least()
o Relax locking assertions for pmap_enter_object() and add them also
to architectures that currently don't have any
o Introduce VM_OBJECT_LOCK_DOWNGRADE() which is basically a downgrade
operation on the per-object rwlock
o Use all the mechanisms above to make vm_map_pmap_enter() to work
mostl of the times only with readlocks.

Sponsored by: EMC / Isilon storage division
Reviewed by: alc


250810 19-May-2013 andrew

Add a comment explaining why stack_capture is empty for EABI and clang.

While here add a comment pointing out that, while r11 is not the frame
pointer on EABI as there is no frame pointer, it's value is unused so is
safe.


250791 18-May-2013 kientzle

Back out r250768 until I can further investigate why it might
be causing problems with the BeagleBone Black boot.


250768 18-May-2013 kientzle

Label the mmc child after the parent.


250742 17-May-2013 rpaulo

Revert r250692. We'll use 1 kernel config file for the BeagleBone models.


250695 16-May-2013 gber

Fix L2 cache write-back invalidate for Sheeva core.

Submitted by: Michal Dubiel
Obtained from: Netasq, Semihalf


250692 16-May-2013 rpaulo

Add a kernel config file for the BeableBone Black SoC.


250634 14-May-2013 gber

Port the new PV entry allocator from amd64/i386/mips to armv6/v7.

PV entries are now roughly half the size.
Instead of using a shared UMA zone for 28 byte pv entries
(two 8-byte tailq nodes, a 4 byte pointer, a 4 byte address and 4 byte
flags), we allocate a page at a time per process.
This provides 252 pv entries per process (actually, per pmap address space)
and eliminates one of the 8-byte tailq entries since we now can track
per-process pv entries implicitly.
The pointer to the pmap can be eliminated by doing address arithmetic to
find the metadata on the page headers to find a single pointer shared by
all 252 entries. There is an 8-int bitmap for the freelist of those 252
entries.
When in serious low memory condition, allocation of another pv_chunk is
possible by freeing some pages in pmap_pv_reclaim().

Added pv_entry/pv_chunk related statistics to pmap.
pv_entry/pv_chunk statistics can be accessed via sysctl vm.pmap.

Ported PTE freelist of KVA allocation and maintenance from i386.
Using an idea from Stephan Uphoff, use the empty pte's that correspond
to the unused kva in the pv memory block to thread a freelist through.
This allows us to free pages that used to be used for pv entry chunks
since we can now track holes in the kva memory block.

As both ARM pmap.c and pmap-v6.c use the same header and pv_entry, pmap and
md_page structures are different, it was needed to separate code designed
for ARMv6/7 from the one for other ARMs.

Submitted by: Zbigniew Bodek <zbb@semihalf.com>
Reviewed by: alc
Sponsored by: The FreeBSD Foundation, Semihalf


250544 12-May-2013 peter

Tidy up some CVS workarounds.


250531 11-May-2013 kientzle

Don't use the old stack-walking code with
EABI ARM kernels or clang-compiled ARM kernels.

This fixes a crash seen in clang-compiled ARM
kernels that include WITNESS.

This code could be easily modified to walk the stack
for current clang-generated code (including EABI)
but Andrew Turner has raised concerns that the
stack frame currently emitted by clang isn't actually
required by EABI so such a change might cause problems
down the road.

In case anyone wants to experiment, the change
to support current clang-compiled kernels
involves simply setting FR_RFP=0 and FR_SCP=1.


250357 08-May-2013 ray

Update copyright date.


250338 07-May-2013 attilio

Rename VM_NDOMAIN into MAXMEMDOM and move it into machine/param.h in
order to match the MAXCPU concept. The change should also be useful
for consolidation and consistency.

Sponsored by: EMC / Isilon storage division
Obtained from: jeff
Reviewed by: alc


250324 07-May-2013 gber

decode_win_sdram_fixup() function should be declared, defined and used
only by Armada XP

Obtained from: Semihalf


250299 06-May-2013 gber

Fix page reference emulation on ARMv6 and v7

Submitted by: Zbigniew Bodek
Obtained from: Semihalf


250297 06-May-2013 gber

Fix L2 PTE access permissions management.

Keep following access permissions:

APX AP Kernel User
1 01 R N
1 10 R R
0 01 R/W N
0 11 R/W R/W

Avoid using reserved in ARMv6 APX|AP settings:
- In case of unprivileged (user) access without permission to write,
the access permission bits were being set to reserved for ARMv6
(but valid for ARMv7) value of APX|AP = 111.

Fix-up faulting userland accesses properly:
- Wrong condition statement in pmap_fault_fixup() caused that
any genuine, unprivileged access was being fixed-up instead of
just skip doing anything and return. Staring from now we ensure
proper reaction for illicit user accesses.

L2_S_PROT_R and L2_S_PROT_U names might be misleading as they do not
reflect real permission levels. It will be clarified in following
patches (switch to AP[2:1] permissions model).

Obtained from: Semihalf


250296 06-May-2013 gber

Correct comment about initial VA=>PA mapping


250295 06-May-2013 gber

Disable decoding windows with no FDT entry.

- On ARMADAXP B0 (GP development board) we are not able to use PCI due to
whole 32-bit address space used by 4GB of RAM memory.
- Change is required to destroy unnecessary window to free address space
for PCI and other devices
- Fix offset value for SDRAM decoding windows

Obtained from: Semihalf


250294 06-May-2013 gber

Avoid calling pcpu_init() simultaneously.

pcpu_init() updates queue, so cannot be called by multiple cores
at the same time

Obtained from: Semihalf


250293 06-May-2013 gber

Properly initialize Armada XP MP subsystem.

- correct setting of Auxiliary Control Register for MP mode
- correct setting of Auxiliarty Debug registers
- cleanup management of memory contains bootup code
- early initialization of Coherency Fabric (MP and not-MP mode)
- enable Snoop Filtering

Obtained from: Semihalf


250292 06-May-2013 gber

Initialize L2 cache for Armada XP.

Obtained from: Semihalf


250291 06-May-2013 gber

Move initialization of CESA decoding windows from common section
to driver specific files.

- window initialization is done during device attach
- CESA TDMA decoding windows values are set based on DTS,
not copied from CPU registers
- remove unnecessary virtual mapping
- update dts file

Obtained from: Semihalf


250255 04-May-2013 kientzle

Make a debugging printf a little more useful.


250254 04-May-2013 ian

Fix comment block formatting.


250253 04-May-2013 ian

Insert STOP_UNWINDING directives in the _start (kernel entry point) and
fork_trampoline (thread entry point) assembler routines, because it's
not possible to unwind beyond those points.

Also insert STOP_UNWINDING in the exception_exit routine, to prevent an
unwind-loop at that point. This is just a stopgap until we get around
to instrumenting all assembler functions with proper unwind metadata.


250252 04-May-2013 ian

EABI unwinder enhancements... When it's time to stop unwinding, don't
exit the loop until after printing info about the current frame. Also,
if executing the unwind function for a frame doesn't change the values of
any registers, log that and exit the loop rather than looping endlessly.


250131 01-May-2013 eadler

Correct a few sizeof()s

Submitted by: swildner@DragonFlyBSD.org
Reviewed by: alfred


250015 28-Apr-2013 wkoszek

Bring copyright changes with the agreement of Thomas Skibo.

Communication on src-commiters, Sat, 27 Apr 2013 22:09:06 -0700,
Subject was: "Re: svn commit: r249997"

As I'm here, fix the style main block comments in files' headers.


249999 27-Apr-2013 wkoszek

Add Xilinx Zynq ARM/FPGA SoC support to FreeBSD/arm port.

Submitted by: Thomas Skibo <ThomasSkibo (at) sbcglobal.net>
Tested by: wkoszek (ZedBoard)
Reviewed by: wkoszek, freebsd-arm@ (no objections raised)


249997 27-Apr-2013 wkoszek

Add Xilinx Zynq ARM/FPGA SoC support to FreeBSD/arm port.

Submitted by: Thomas Skibo <ThomasSkibo (at) sbcglobal.net>
Reviewed by: wkoszek, freebsd-arm@ (no objections raised)


249762 22-Apr-2013 dmarion

Initialize GIC_PMRR register on ARM GIC.

Provided by: Thomas Skibo


249586 17-Apr-2013 gabor

- Correct mispellings of word resource

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>


249582 17-Apr-2013 gabor

- Correct mispellings of the word occurrence

Submitted by: Christoph Mallon <christoph.mallon@gmx.de> (via private mail)


249449 13-Apr-2013 dim

Fix undefined behaviour in several gpio_pin_setflags() routines (under
sys/arm and sys/mips), squelching the clang 3.3 warnings about this.

Noticed by: tinderbox and many irate spectators
Submitted by: Luiz Otavio O Souza <loos.br@gmail.com>
PR: kern/177759
MFC after: 3 days


249410 12-Apr-2013 trasz

Remove ctl(4) from GENERIC. Also remove 'options CTL_DISABLE'
and kern.cam.ctl.disable tunable; those were introduced as a workaround
to make it possible to boot GENERIC on low memory machines.

With ctl(4) being built as a module and automatically loaded by ctladm(8),
this makes CTL work out of the box.

Reviewed by: ken
Sponsored by: FreeBSD Foundation


249268 08-Apr-2013 glebius

Merge from projects/counters: counter(9).

Introduce counter(9) API, that implements fast and raceless counters,
provided (but not limited to) for gathering of statistical data.

See http://lists.freebsd.org/pipermail/freebsd-arch/2013-April/014204.html
for more details.

In collaboration with: kib
Reviewed by: luigi
Tested by: ae, ray
Sponsored by: Nginx, Inc.


249265 08-Apr-2013 glebius

Merge from projects/counters:

Pad struct pcpu so that its size is denominator of PAGE_SIZE. This
is done to reduce memory waste in UMA_PCPU_ZONE zones.

Sponsored by: Nginx, Inc.


249232 07-Apr-2013 hselasky

Fix regression issue after r248910.

PR: arm/177685
Submitted by: Christoph Mallon <christoph.mallon@gmx.de>


249181 06-Apr-2013 gonzo

Properly clean "spurious interrupt" state

Suggested by: Ian Lepore


249180 06-Apr-2013 andrew

Hide non-assembler bits behind #ifndef __ASSEMBLER__


249176 05-Apr-2013 andrew

Add the hw.floatingpoint sysctl to ARM to tell us if we have vfp support
in the kernel and the hardware includes a vfp unit.


249083 04-Apr-2013 mav

Remove all legacy ATA code parts, not used since options ATA_CAM enabled in
most kernels before FreeBSD 9.0. Remove such modules and respective kernel
options: atadisk, ataraid, atapicd, atapifd, atapist, atapicam. Remove the
atacontrol utility and some man pages. Remove useless now options ATA_CAM.

No objections: current@, stable@
MFC after: never


248965 01-Apr-2013 ian

Fix low-level uart drivers that set their fifo sizes in the softc too late.

uart(4) allocates send and receiver buffers in attach() before it calls
the low-level driver's attach routine. Many low-level drivers set the
fifo sizes in their attach routine, which is too late. Other drivers set
them in the probe() routine, so that they're available when uart(4)
allocates buffers. This fixes the ones that were setting the values too
late by moving the code to probe().


248964 01-Apr-2013 ian

Enable hardware flow control and high speed bulk data transfer in at91 uarts.

Changes to make rtc/cts flow control work...

This does not turn on the builtin hardware flow control on the SoC's usart
device, because that doesn't work on uart1 due to a chip erratum (they
forgot to wire up pin PA21 to RTS0 internally). Instead it uses the
hardware flow control logic where the tty layer calls the driver to assert
and de-assert the flow control lines as needed. This prevents overruns at
the tty layer (app doesn't read fast enough), but does nothing for overruns
at the driver layer (interrupts not serviced fast enough).

To work around the wiring problem with RTS0, the driver reassigns that pin
as a GPIO and controls it manually. It only does so if given permission via
hint.uart.1.use_rts0_workaround=1, to prevent accidentally driving the pin
if uart1 is used without flow control (because something not related to
serial IO could be wired to that pin).

In addition to the RTS0 workaround, driver changes were needed in the area
of reading the current set of DCE signals. A priming read is now done at
attach() time, and the interrupt routine now sets SER_INT_SIGCHG when any
of the DCE signals change. Without these changes, nothing could ever be
transmitted, because the tty layer thought CTS was de-asserted (when in fact
we had just never read the status register, and the hwsig variable was
init'd to CTS de-asserted).

Changes to support bulk high-speed (230kbps and higher) data reception...

Allow the receive fifo size to be tuned with hint.uart.<dev>.fifo_bytes.
For high speed receive, a fifo size of 1024 works well. The default is
still 128 bytes if no hint is provided. Using a value larger than 384
requires a change in dev/uart/uart_core.c to size the intermediate
buffer as MAX(384, 3*sc->sc_rxfifosize).

Recalculate the receive timeout whenever the baud rate changes. At low
baud rates (19.2kbps and below) the timeout is the number of bits in 2
characters. At higher speed it's calculated to be 500 microseconds
worth of bits. The idea is to compromise between being responsive in
interactive situations and not timing out prematurely during a brief
pause in bulk data flow. The old fixed timeout of 1.5 characters was
just 32 microseconds at 460kbps.

At interrupt time, check for receiver holding register overrun status
and set the corresponding status bit in the return value.

When handling a buffer overrun, get a single buffer emptied and handed
back to the hardware as quickly as possible, then deal with the second
buffer. This at least minimizes data loss compared to the old logic
that fully processed both buffers before restarting the hardware.

Rewrite the logic for handling buffers after a receive timeout. The
original author speculated in a comment that there may be a race with
high speed data. There was, although it was rare. The code now handles
all three possible scenarios on receive timeout: two empty buffers, one
empty and one partial buffer, or one full and one partial buffer.

Reviewed by: imp


248961 31-Mar-2013 ian

When running on armv6, set alignment checking to modulo-4 mode rather
than modulo-8, because clang emits ldrd and strd instructions for
addresses that are only 4-byte aligned.


248944 31-Mar-2013 ian

Fix a typo in the CF device driver name that prevented instantiation.


248911 29-Mar-2013 ian

Add userland access to at91 gpio functionality via ioctl calls. Also,
add the ability for userland to be notified of changes on gpio pins via
a select(2)/read(2) interface.

Change the interrupt handler from filtered to threaded.

Because of the uiomove() calls in the new interface, change locking from
standard mutex to sx.

Add / restore the at91_gpio_high_z() function.

Reviewed by: imp (long ago)


248910 29-Mar-2013 ian

Change the API for at91_pio_gpio_get() to return the entire masked set
of bits, not just a 0/1 indicating whether any of the masked bits are on.
This is compatible with the single in-tree caller of this function right now
(at91_vbus_poll() in dev/usb/controller/at91dci_atemelarm.c).


248909 29-Mar-2013 ian

Call soc_info.soc_data->soc_clock_init() before at91_pmc_init_clock(), so
that the latter correctly fills in the clock data structures based on
proper hardware-specific shift and mask values from the soc_data structure.


248907 29-Mar-2013 ian

Add a couple forward declarations, so that board support routines don't have
to pre-include a bunch of header files they don't need just to use this one.


248904 29-Mar-2013 ian

Redo the workaround for at91rm9200 erratum #26 in a way that doesn't
cause a lockup on some rm92 hardware.


248902 29-Mar-2013 ian

Fix a typo: the RXD0 pin is PA18, not PA19.


248899 29-Mar-2013 ian

Remove a really noisy printf left over from debugging hardware errata.


248655 23-Mar-2013 ian

Don't check and warn about pmap mismatch on every call to busdma sync.
With some recent busdma refactoring, sometimes it happens that a sync
op gets called when bus_dmamap_load() never got called, which results
in a spurious warning about a map mismatch when no sync operations will
actually happen anyway. Now the check is done only if a sync operation
is actually performed, and the result of the check is a panic, not just
a printf.

Reviewed by: cognet (who prevented me from donning a point hat)


248585 21-Mar-2013 mav

Minimal timer period of 100us introduced in r244758 is overkill. While
original 2us are indeed not enough, 3us are working quite well on my tests.
To be more safe set minimal period to 5us and to be even more safe replicate
here from HPET mechanism of rereading counter after programming comparator.

This change allows to handle 30K of short nanosleep() calls per second on
Raspberry Pi instead of just 8K before.

Discussed with: gonzo


248557 20-Mar-2013 ray

Integrate Efika MX project back to home.

Sponsored by: The FreeBSD Foundation


248508 19-Mar-2013 kib

Implement the concept of the unmapped VMIO buffers, i.e. buffers which
do not map the b_pages pages into buffer_map KVA. The use of the
unmapped buffers eliminate the need to perform TLB shootdown for
mapping on the buffer creation and reuse, greatly reducing the amount
of IPIs for shootdown on big-SMP machines and eliminating up to 25-30%
of the system time on i/o intensive workloads.

The unmapped buffer should be explicitely requested by the GB_UNMAPPED
flag by the consumer. For unmapped buffer, no KVA reservation is
performed at all. The consumer might request unmapped buffer which
does have a KVA reserve, to manually map it without recursing into
buffer cache and blocking, with the GB_KVAALLOC flag.

When the mapped buffer is requested and unmapped buffer already
exists, the cache performs an upgrade, possibly reusing the KVA
reservation.

Unmapped buffer is translated into unmapped bio in g_vfs_strategy().
Unmapped bio carry a pointer to the vm_page_t array, offset and length
instead of the data pointer. The provider which processes the bio
should explicitely specify a readiness to accept unmapped bio,
otherwise g_down geom thread performs the transient upgrade of the bio
request by mapping the pages into the new bio_transient_map KVA
submap.

The bio_transient_map submap claims up to 10% of the buffer map, and
the total buffer_map + bio_transient_map KVA usage stays the
same. Still, it could be manually tuned by kern.bio_transient_maxcnt
tunable, in the units of the transient mappings. Eventually, the
bio_transient_map could be removed after all geom classes and drivers
can accept unmapped i/o requests.

Unmapped support can be turned off by the vfs.unmapped_buf_allowed
tunable, disabling which makes the buffer (or cluster) creation
requests to ignore GB_UNMAPPED and GB_KVAALLOC flags. Unmapped
buffers are only enabled by default on the architectures where
pmap_copy_page() was implemented and tested.

In the rework, filesystem metadata is not the subject to maxbufspace
limit anymore. Since the metadata buffers are always mapped, the
buffers still have to fit into the buffer map, which provides a
reasonable (but practically unreachable) upper bound on it. The
non-metadata buffer allocations, both mapped and unmapped, is
accounted against maxbufspace, as before. Effectively, this means that
the maxbufspace is forced on mapped and unmapped buffers separately.
The pre-patch bufspace limiting code did not worked, because
buffer_map fragmentation does not allow the limit to be reached.

By Jeff Roberson request, the getnewbuf() function was split into
smaller single-purpose functions.

Sponsored by: The FreeBSD Foundation
Discussed with: jeff (previous version)
Tested by: pho, scottl (previous version), jhb, bf
MFC after: 2 weeks


248467 18-Mar-2013 ray

o Switch to use physical addresses in rman for FDT.
o Remove vtophys used to translate virtual address to physical in case rman carry virtual.

Sponsored by: The FreeBSD Foundation


248430 17-Mar-2013 ian

Eliminate an intermediate buffer and some memcpy() operations, and do
DMA directly to/from the buffers passed in from higher layer drivers.

Reviewed by: gonzo


248407 17-Mar-2013 ian

Add a macro that gets the physical address of a memory mapped device
register from a bus space resource.

Note that this macro is just for ARM, and is intended to have a short
lifespan. The DMA engines in some SoCs need the physical address of a
memory-mapped device register as one of the arguments for the transfer.
Several scattered ad-hoc solutions have been converted to use this macro,
which now also serves to mark the places where a more complete fix needs
to be applied (after that fix has been designed).


248366 16-Mar-2013 andrew

Move the __aeabi_unwind_cpp_pr{0,1,2} functions to libkern so they can be
referenced in a non-debug kernel.


248364 16-Mar-2013 andrew

Implement the required but unused __aeabi_unwind_cpp_* functions in the
trampoline kernel.


248361 16-Mar-2013 andrew

Add an END macro to ARM. This is mostly used to tell gas where the bounds
of the functions are when creating the EABI unwind tables.


248280 14-Mar-2013 kib

Add pmap function pmap_copy_pages(), which copies the content of the
pages around, taking array of vm_page_t both for source and
destination. Starting offsets and total transfer size are specified.

The function implements optimal algorithm for copying using the
platform-specific optimizations. For instance, on the architectures
were the direct map is available, no transient mappings are created,
for i386 the per-cpu ephemeral page frame is used. The code was
typically borrowed from the pmap_copy_page() for the same
architecture.

Only i386/amd64, powerpc aim and arm/arm-v6 implementations were
tested at the time of commit. High-level code, not committed yet to
the tree, ensures that the use of the function is only allowed after
explicit enablement.

For sparc64, the existing code has known issues and a stab is added
instead, to allow the kernel linking.

Sponsored by: The FreeBSD Foundation
Tested by: pho (i386, amd64), scottl (amd64), ian (arm and arm-v6)
MFC after: 2 weeks


248207 12-Mar-2013 glebius

Functions m_getm2() and m_get2() have different order of arguments,
and that can drive someone crazy. While m_get2() is young and not
documented yet, change its order of arguments to match m_getm2().

Sorry for churn, but better now than later.


248189 12-Mar-2013 glebius

Use m_get2() to get an mbuf of appropriate size.

Reviewed by: marius
Sponsored by: Nginx, Inc.


248153 11-Mar-2013 cognet

Don't use an empty struct.


248125 10-Mar-2013 andrew

Fix a typo where db_printf was spelt printf.


248124 10-Mar-2013 andrew

Update how we read the stack pointer to work on both GCC and clang.


248123 10-Mar-2013 andrew

Tell the unwinder we can't unwind swi_entry. This fixes an infinite loop
when the kernel attempts to unwind through this function.

The .fnstart and .fnend in this function should be moved to macros but we
are currently missing an END macro on ARM.


248119 10-Mar-2013 andrew

__FreeBSD_ARCH_armv6__ is undefined on clang. We can use __ARM_ARCH in
it's place. This makes 'uname -p' correctly output 'armv6' on a kernel
built with clang.


248084 09-Mar-2013 attilio

Switch the vm_object mutex to be a rwlock. This will enable in the
future further optimizations where the vm_object lock will be held
in read mode most of the time the page cache resident pool of pages
are accessed for reading purposes.

The change is mostly mechanical but few notes are reported:
* The KPI changes as follow:
- VM_OBJECT_LOCK() -> VM_OBJECT_WLOCK()
- VM_OBJECT_TRYLOCK() -> VM_OBJECT_TRYWLOCK()
- VM_OBJECT_UNLOCK() -> VM_OBJECT_WUNLOCK()
- VM_OBJECT_LOCK_ASSERT(MA_OWNED) -> VM_OBJECT_ASSERT_WLOCKED()
(in order to avoid visibility of implementation details)
- The read-mode operations are added:
VM_OBJECT_RLOCK(), VM_OBJECT_TRYRLOCK(), VM_OBJECT_RUNLOCK(),
VM_OBJECT_ASSERT_RLOCKED(), VM_OBJECT_ASSERT_LOCKED()
* The vm/vm_pager.h namespace pollution avoidance (forcing requiring
sys/mutex.h in consumers directly to cater its inlining functions
using VM_OBJECT_LOCK()) imposes that all the vm/vm_pager.h
consumers now must include also sys/rwlock.h.
* zfs requires a quite convoluted fix to include FreeBSD rwlocks into
the compat layer because the name clash between FreeBSD and solaris
versions must be avoided.
At this purpose zfs redefines the vm_object locking functions
directly, isolating the FreeBSD components in specific compat stubs.

The KPI results heavilly broken by this commit. Thirdy part ports must
be updated accordingly (I can think off-hand of VirtualBox, for example).

Sponsored by: EMC / Isilon storage division
Reviewed by: jeff
Reviewed by: pjd (ZFS specific review)
Discussed with: alc
Tested by: pho


248028 08-Mar-2013 kientzle

This file is specific to arm11x6 processors, so tell the
assembler it's okay to use arm11x6 instructions.


247864 06-Mar-2013 andrew

Fix stack alignment in the kernel to be on an 8 byte boundary as required
by AAPCS.


247855 05-Mar-2013 gonzo

- Reset DMA channel if error occured
- Initialize info field in bcm_dma_reset

Submitted by: Daisuke Aoyama <aoyama@peach.ne.jp>


247776 04-Mar-2013 cognet

If we're using a PIPT L2 cache, only merge 2 segments if both the virtual
and the physical addreses are contiguous.

Submitted by: Thomas Skibo <ThomasSkibo@sbcglobal.net>


247610 02-Mar-2013 andrew

Move some virtual memory constants to the top of the file where they are on
other architectures [1].

While here:
- Remove an unused and commented out include.
- Add a comment describing the file that other copies have.
- Fix the style of the defines and add a comment on what each one is.

Suggested by: [1] alc


247609 02-Mar-2013 andrew

Build the Raspberry Pi dtb file when building the kernel so we can copy it
to the boot partition for U-Boot.


247608 02-Mar-2013 andrew

Ensure the stack is correctly aligned before calling the first C function.


247587 01-Mar-2013 andrew

Increase the maximum text size on ARM to 64MiB. Without this clang would be
sent a SIGABRT when it is loaded as it is too large. This is the smallest
power of two MiB value that allows us to execute clang.

While here wrap it in an #ifndef to be consistent with the other
architectures.

Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp>


247564 01-Mar-2013 alc

Eliminate a redundant #include: machine/pmap.h is already included
through vm/pmap.h.


247535 01-Mar-2013 alc

Copy the definition of VM_MAX_AUTOTUNE_MAXUSERS from i386. (See r242847.)

Tested by: andrew


247520 01-Mar-2013 ganbold

Enable uart driver for A10.

Approved by: gonzo@


247497 28-Feb-2013 gonzo

Add platform DMA support to SDHCI driver for BCM2835

Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp>
Reviewed by: ian@


247496 28-Feb-2013 gonzo

Add driver for BCM2835's DMA engine

This is a version of code submitted by Daisuke Aoyama <aoyama at peach.ne.jp>
with some architectural changes.


247463 28-Feb-2013 mav

MFcalloutng:
Switch eventtimers(9) from using struct bintime to sbintime_t.
Even before this not a single driver really supported full dynamic range of
struct bintime even in theory, not speaking about practical inexpediency.
This change legitimates the status quo and cleans up the code.


247429 28-Feb-2013 attilio

Complete r247297:
Remove unused inclusions of vm/vm_pager.h and vm/vnode_pager.h.

Sponsored by: EMC / Isilon storage division


247391 27-Feb-2013 gonzo

Fix typo


247390 27-Feb-2013 gonzo

- Initialize GPIO_OE register based on pinmux configuration

Although AM335x TRM states that GPIO_OE register is not used and just
reflects pads configuration in practice it does control pin behavior
and shoiuld be set in addition to pinmux setup


247360 26-Feb-2013 attilio

Merge from vmc-playground branch:
Replace the sub-optimal uma_zone_set_obj() primitive with more modern
uma_zone_reserve_kva(). The new primitive reserves before hand
the necessary KVA space to cater the zone allocations and allocates pages
with ALLOC_NOOBJ. More specifically:
- uma_zone_reserve_kva() does not need an object to cater the backend
allocator.
- uma_zone_reserve_kva() can cater M_WAITOK requests, in order to
serve zones which need to do uma_prealloc() too.
- When possible, uma_zone_reserve_kva() uses directly the direct-mapping
by uma_small_alloc() rather than relying on the KVA / offset
combination.

The removal of the object attribute allows 2 further changes:
1) _vm_object_allocate() becomes static within vm_object.c
2) VM_OBJECT_LOCK_INIT() is removed. This function is replaced by
direct calls to mtx_init() as there is no need to export it anymore
and the calls aren't either homogeneous anymore: there are now small
differences between arguments passed to mtx_init().

Sponsored by: EMC / Isilon storage division
Reviewed by: alc (which also offered almost all the comments)
Tested by: pho, jhb, davide


247341 26-Feb-2013 cognet

Export vfp_init() prototype, for use in the MP code.


247340 26-Feb-2013 cognet

Fix SMP build.


247339 26-Feb-2013 cognet

Don't forget to init the VFP stuff for all cores.


247314 26-Feb-2013 alc

Be more conservative in auto-sizing and capping the kmem submap. In
fact, use the same values here that we use on 32-bit x86 and MIPS. Some
machines were reported to have problems with the more aggressive values.

Reported and tested by: andrew


247313 26-Feb-2013 alc

Eliminate a redundant #include: machine/pmap.h is already included
through vm/pmap.h.


247304 26-Feb-2013 kientzle

RPi users might want to touch the boot partition, which is always FAT
formatted on this board, so compile-in MSDOSFS.

Comment out the compiled-in FDT and explain why.


247297 26-Feb-2013 attilio

Merge from vmobj-rwlock branch:
Remove unused inclusion of vm/vm_pager.h and vm/vnode_pager.h.

Sponsored by: EMC / Isilon storage division
Tested by: pho
Reviewed by: alc


247259 25-Feb-2013 gonzo

Fix off-by-one error in sanity checks


247252 25-Feb-2013 gonzo

- Fix off-by-one error when returning max pin number
- Fix GPIOGET for output pins. Requesting state for
output pin is valid operation, get the state from
TI_GPIO_DATAOUTX register


247204 23-Feb-2013 gonzo

Add macroses to properly map IO peripherals memory window from
ARM physical memory address space to VideoCore address space


247195 23-Feb-2013 mav

Add basic and not very reliable protection against going to sleep with
thread scheduled by interrupt fired after we entered critical section.
None of cpu_sleep() implementations on ARM check sched_runnable() now, so
put the first line of defence here. This mostly fixes unexpectedly long
sleeps in synthetic tests of calloutng code and probably other situations.


247046 20-Feb-2013 alc

Initialize vm_max_kernel_address on non-FDT platforms. (This should have
been included in r246926.)

The second parameter to pmap_bootstrap() is redundant. Eliminate it.

Reviewed by: andrew


247010 19-Feb-2013 gonzo

Spelling fixes

Spotted by: N. J. Mann


247009 19-Feb-2013 gonzo

Roll back change of frequency for initialization sequence since it
seems to cause more problems then previous behavior: it either breaks
initilization sequence in other places or uncovers problems with
high-speed mode timing for SDHCI 3.0


246955 19-Feb-2013 ganbold

Define gpio constants rather than using enum.
Fix pull-up and pull-down values of gpio.
According to A10 user manual possible pull register
values are 00 Pull-up/down disable, 01 Pull-up, 10 Pull-down.

Approved by: gonzo@


246929 18-Feb-2013 alc

Place a cap on the size of the kernel's heap, also known as the kmem
submap. Otherwise, after r246204, the auto-scaling logic in kern_malloc.c
tries to create a kmem submap that consumes the entire kernel map on a
Pandaboard with 1 GB of RAM.

Tested by: gonzo


246926 18-Feb-2013 alc

On arm, like sparc64, the end of the kernel map varies from one type of
machine to another. Therefore, VM_MAX_KERNEL_ADDRESS can't be a constant.
Instead, #define it to be a variable, vm_max_kernel_address, just like we
do on sparc64.

Reviewed by: kib
Tested by: ian


246888 17-Feb-2013 gonzo

- Add hw.bcm2835.sdhci.hs tunable to enable/disable highspeed mode in
SDHCI driver
Suggested by: Daisuke Aoyama

- Set initilization sequence frequency to 8MHz. It should fix Data CRC
errors. Standard requires initialization sequence to be executed
at 400KHz but on this hardware low frequncies seems to cause
Data CRC errors.

Value was derived from analyzing hardware signals after
Raspberry Pi is powered up. Before any data is read though DATA line
adapter's clock frequency is changed to 8MHz.

Modern cards should function fine at 8MHz but for older MMC cards it
can be overriden by setting hw.bcm2835.sdhci.min_freq tunable.


246881 16-Feb-2013 ian

In _bus_dmamap_addseg(), the return value must be zero for error, or the size
actually added to the segment (possibly smaller than the requested size if
boundary crossings had to be avoided).


246859 15-Feb-2013 ian

Set map->pmap before _bus_dmamap_count_pages() tries to use it.

Obtained from: Thomas Skibo <ThomasSkibo@sbcglobal.net>


246851 15-Feb-2013 gonzo

Enable USB1 (which is EHCI0) for Allwinner A10

Tested by: ganbold@


246850 15-Feb-2013 gonzo

Fix copy-paste error in bus_space_unmap argument

While I'm at it - fix some style(9) issues

Submitted by: Mikael Urankar


246713 12-Feb-2013 kib

Reform the busdma API so that new types may be added without modifying
every architecture's busdma_machdep.c. It is done by unifying the
bus_dmamap_load_buffer() routines so that they may be called from MI
code. The MD busdma is then given a chance to do any final processing
in the complete() callback.

The cam changes unify the bus_dmamap_load* handling in cam drivers.

The arm and mips implementations are updated to track virtual
addresses for sync(). Previously this was done in a type specific
way. Now it is done in a generic way by recording the list of
virtuals in the map.

Submitted by: jeff (sponsored by EMC/Isilon)
Reviewed by: kan (previous version), scottl,
mjacob (isp(4), no objections for target mode changes)
Discussed with: ian (arm changes)
Tested by: marius (sparc64), mips (jmallet), isci(4) on x86 (jharris),
amd64 (Fabian Keil <freebsd-listen@fabiankeil.de>)


246707 12-Feb-2013 gonzo

Remove debug output


246661 11-Feb-2013 gonzo

A10 reset mechanism is the same for all boards in this family so remove
redundant reset function implementation pointer. We might want to
ressurect it later when support for other Allwinner chips is introduced.


246660 11-Feb-2013 gonzo

Add watchdog driver for Allwinner A10


246601 09-Feb-2013 kientzle

Fix breakage introduced in r246318.


246375 06-Feb-2013 ganbold

Use and set gpio pin to high to power up usb.

Approved by: gonzo@


246353 05-Feb-2013 ganbold

Remove two dead assignments and
make use of sc more explicit and clear

Submitted by: Christoph Mallon
Approved by: gonzo@


246342 05-Feb-2013 ganbold

Add gpio driver and update dts and kernel config accordingly.

Approved by: gonzo@


246318 04-Feb-2013 andrew

Use the STACKALIGN macro to alight the stack rather than with a magic mask.

Submitted by: Christoph Mallon <christoph.mallon gmx.de>


246276 03-Feb-2013 kientzle

Another overhaul of the CPSW driver for BeagleBone

Major changes:
* Finally tracked down the flow control setting that
seems to have been causing TX stalls and watchdog timeouts
* RX and TX paths now share a lot more code
* TX interrupt is no longer used; we instead GC finished
tx queue entries at the bottom of the start routine.
* TX start now queues fragmented packets directly; it only
invokes defrag() for occasional very fragmented packets.
* "sysctl dev.cpsw" dumps controller statistics and queue counts
* Host Error Interrupt will give extensive debugging information
if the controller chokes on the queued data.


246228 02-Feb-2013 kientzle

Tweaks to standard BEAGLEBONE config, as recently discussed
on FreeBSD-ARM.


246204 01-Feb-2013 andre

Add VM_KMEM_SIZE_SCALE parameter set to 2 (50%) for all ARM platforms.

VM_KMEM_SIZE_SCALE specifies which fraction of the available physical
memory, after deduction of the kernel itself and other early statically
allocated memory, can be used for the kmem_map. The kmem_map provides
for all UMA/malloc allocations in KVM space.

Previously ARM was using a fixed kmem_map size of (12*1024*1024) = 12MB
without regard to effectively available memory. This is too small for
recent ARM SoC with more than 128MB of RAM.

For reference a description of others related kmem_map parameters:

VM_KMEM_SIZE default start size of kmem_map if SCALE is
not defined
VM_KMEM_SIZE_MIN hard floor on the kmem_map size
VM_KMEM_SIZE_MAX hard ceiling on the kmem_map size
VM_KMEM_SIZE_SCALE fraction of the available real memory to
be used for the kmem_map, limited by the
MIN and MAX parameters.

Tested by: ian
MFC after: 1 week


246158 31-Jan-2013 kib

Use pmap_kextract() instead of inlining the page table walk.
Remove the comment referencing non-existing code.

Reviewed by: cognet, ian (previous version)
Tested by: ian


246057 29-Jan-2013 ganbold

Add simple clock driver and ehci glue code for a10
Update dts and kernel config

Approved by: gonzo@


246025 28-Jan-2013 dmarion

Fix case for some signal names.

Submitted by: Emmanuel Vadot <elbarto@megadrive.org>


246024 28-Jan-2013 dmarion

Filled in missing pads for AM335x / Beaglebone.

Submitted by: Emmanuel Vadot <elbarto@megadrive.org>


246001 27-Jan-2013 ian

Fix off-by-one errors in low-level arm9 and arm10 cache maintenance routines.

In all the routines that loop through a range of virtual addresses, the loop
is controlled by subtracting the cache line size from the total length of the
request. After the subtract, a 'bpl' instruction was used, which branches if
the result of the subtraction is zero or greater, but we need to exit the
loop when the count hits zero. Thus, all the bpl instructions in those loops
have been changed to 'bhi' (branch if greater than zero).

In addition, the two routines that walk through the cache using set-and-index
were correct, but confusing. The loop control for those has been simplified,
just so that it's easier to see by examination that the code is correct.

Routines for other arm architectures and generations still have the bpl
instruction, but compensate for the off-by-one situation by decrementing
the count register by one before entering the loop.

PR: arm/174461
Approved by: cognet (mentor)


246000 27-Jan-2013 ian

Restore the irq number to the display string; I fumbled this in the previous
commit while trying to make the code internally self-consistant.

Approved by: cognet (mentor)
Obtained from: Christoph Mallon


245999 27-Jan-2013 ian

Remove the remaining references to the now-obsolete sheevaplug config files,
which have been replaced by the generic db88f6xxx config which works for all
kirkwood-series chips.

Approved by: cognet (mentor)


245955 27-Jan-2013 ian

Add support for the GlobalScale Technologies DreamPlug computer.

This adds support for version 10, revision 01, but it should also work
without changes for the 0901 model, at least until we get drivers for the
two different wifi chips involved.

Many users contributed to and tested the various patchsets floating around
for the past year that have eventually evolved into this checkin, most notably
Richard Neese who provided the bulk of the kernel config file.

Approved by: cognet (mentor)


245954 27-Jan-2013 ian

Add a default do-nothing implementation of fdt_pci_devmap() using a weak alias,
so that we don't need an empty implementation of it for every Marvell platform
that has no PCI. This allows the removal of the SheevaPlug-specific stub and
config files, and eliminates the need to add similar stubs for future models.

Marvell platforms that do expose PCI are compiled with 'device pci' which
causes the real (non-weak) implementation in dev/fdt/fdt_pci.c to be used.

Approved by: cognet (mentor)


245948 26-Jan-2013 ian

Fix a buffer overrun while pre-formatting the names array, perpetrated in
the prior commit. Use essentially the same sprintf() statement for both
formatting and pre-formatting, and use a format string which eliminates the
need for an extra temporary buffer when formatting the name.

Noted by: Christoph Mallon
Pointy hat to: ian
Approved by: cognet (mentor)


245942 26-Jan-2013 andrew

Align td_frame as it will be placed into the sp register which must be
8 byte aligned on ARM EABI.


245900 25-Jan-2013 ganbold

Fix method of naming compatible string to follow
"<manufacturer>,<model>" as described in
http://www.devicetree.org/Device_Tree_Usage

Reviewed by: andrew@
Approved by: gonzo@


245876 24-Jan-2013 ganbold

Fix timer to support oneshot and periodic mode
Use 64 bit high and low counter for timecounter and delay

Reviewed by: mav@, ian@
Approved by: gonzo@


245672 19-Jan-2013 kientzle

Clarify the error messages for unrecognized pins and muxtypes.


245637 19-Jan-2013 ian

Eliminate the need for an intermediate array of indices into the arrays of
interrupt counts and names, by making the names into an array of fixed-length
strings that can be directly indexed. This eliminates extra memory accesses
on every interrupt to increment the counts.

As a side effect, it also fixes a bug that would corrupt the names data
if a name was longer than MAXCOMLEN, which led to incorrect vmstat -i output.

Approved by: cognet (mentor)


245551 17-Jan-2013 andrew

* Correct KINFO_PROC_SIZE for ARM EABI.
* Update the syscall interface to pass in the syscall value in register r7.


245549 17-Jan-2013 andrew

Implement stack unwinding based on section 9 of the "Exception handling ABI
for the ARM architecture" documentation. The unwind tables are currently
not stored in the kernel but will be added later.


245500 16-Jan-2013 ganbold

Fix style bugs
Use defined constant instead of variable for reg_shift
Change u_int32_t to uint32_t

Approved by: gonzo
Suggested by: bde, wkoszek


245478 15-Jan-2013 cognet

Use armv7_drain_writebuf() and armv7_context_switch, instead of the arm11
variants.


245477 15-Jan-2013 cognet

Only spin on the blocked_lock for SCHED_ULE+SMP, as it's done on the other
arches.


245475 15-Jan-2013 cognet

Don't define rel/acq variants of some atomic operations as the regular
version for armv6.


245455 15-Jan-2013 ganbold

Add mistakenly removed third clause to license

Reviewed by: joel


245454 15-Jan-2013 ganbold

Fix formatting of license according to share/examples/etc/bsd-style-copyright

Reviewed by: joel


245453 15-Jan-2013 ganbold

Fix license to follow standard license template

Reviewed by: joel


245450 15-Jan-2013 ganbold

Initial support for Allwinner A10 SoC (Cubieboard)
Add simple console driver
Add interrupt handling and timer codes
Add kernel config file
Add dts file
Approved by: gonzo


245414 14-Jan-2013 andrew

Update sigcode to use both the current ABI and FreeBSD's version of the
ARM EABI syscall calling convention.

The current ABI encodes the syscall number in the instruction. This causes
issues with the thumb mode as it only has 8 bits to encode this value and
we have too many system calls and by using a register will simplify the
code to get the syscall number in the kernel.

With the ARM EABI we reuse the Linux calling convention by storing the
value in r7. Because of this we use both methods to encode the syscall
number in this function.


245389 13-Jan-2013 ray

Enable syscons framebuffer support for bcm2835. It makes possible to run Xorg
on Raspberry Pi.
o convert mmap address to physical.
o add FBIOGTYPE ioctl handler - allow to get screen resolution by new
xf86-video-scfb driver.
Originally designed for "Efika MX" project.

Sponsored by: FreeBSD Foundation


245388 13-Jan-2013 gonzo

Remove accidentally copypasted comment

Spotted by: gavin


245203 09-Jan-2013 cognet

Define IPI_IRQ_START and IPI_IRQ_END.


245202 09-Jan-2013 cognet

Use get_pcpu() instead of using pcpup, as it's wrong for SMP.

Submitted by: Lukasz Plachno <luk@semihalf.com>


245192 08-Jan-2013 cognet

Remove old declarations.


245147 08-Jan-2013 gonzo

Switch default cache type for ARMv6/ARMv7 from write-through to
writeback-writeallocate


245146 08-Jan-2013 gonzo

Fix cache-related issue with pmap for ARMv6/ARMv7:

- Missing PTE_SYNC in pmap_kremove caused memory corruption
in userland applications
- Fix lack of cache flushes when using special PTEs for zeroing or
copying pages. If there are dirty lines for destination memory
and page later remapped as a non-cached region actual content
might be overwritten by these dirty lines when cache eviction
happens as a result of applying cache eviction policy or because
of wbinv_all call.
- icache sync for new mapping for userland applications.

Tested by: gber


245137 07-Jan-2013 gonzo

- Identify more devices for OMAP4 SoC (up to OMAP4470)
- Whitespace fixes


245135 07-Jan-2013 gonzo

Implement barriers for AMRv6 and ARMv7

Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp>
Reviewed by: ian, cognet


245120 07-Jan-2013 gonzo

Release version check for erratum 727915 workaround in
l2_wbinv_range function implementation causes function
fail to flush caches for chip with RTL number 0x7. I failed
to find official PL310 revision with this RTL number
so further research on this matter required.


245087 06-Jan-2013 andrew

Fix the build:

* Use pl310_softc when the softc is otherwise unavailable.
* Use the correct spelling of sc_rtl_revision.


245083 06-Jan-2013 andrew

Only work around errata when we are on a part where the erratum applies.

Reviewed by: gonzo


245080 05-Jan-2013 gonzo

Export board serial and board revision obtained from FDT blob


245079 05-Jan-2013 gonzo

Add hw.board.serial and hw.board.revision for exporting board-specific info


245071 05-Jan-2013 gonzo

Fix background color calculation

Spotted by: ray@


245070 05-Jan-2013 kientzle

Shuffle the TX underrun to work the same way as the RX underrun,
as suggested by YongHyeon PYUN.


245068 05-Jan-2013 kientzle

Prefer the new NFS modules


245064 05-Jan-2013 kientzle

While trying to track down the root cause for
TX stalls in this driver, I've also had some
time to evaluate the effectiveness of different
watchdog strategies.

This is the latest attempt, which consolidates
all of the watchdog logic in one place and
consistently detects TX stalls and resets within
a couple of seconds.


244939 01-Jan-2013 kientzle

Overhauled CPSW driver for TI CPSW Ethernet module
(as used in AM335x SoC for BeagleBone).

Among other things:
* Watchdog reset doesn't hang the driver.
* Disconnecting cable doesn't hang the driver.
* ifconfig up/down doesn't hang the driver
* Out-of-memory no longer panics the driver.

Known issues:
* Doesn't have good support for fragmented packets
(calls m_defrag() on TX, assumes RX packets are never fragmented)
* Promisc and allmulti still unimplimented
* addmulti and delmulti still unimplemented
* TX queue still stalls (but watchdog now consistently recovers in ~5s)
* No sysctl monitoring
* Only supports port0
* No switch configuration support
* Not tested on anything but BeagleBone

Committed from: BeagleBone


244919 01-Jan-2013 andrew

Document the known values of the RTL release field in the cache is register


244914 31-Dec-2012 gonzo

PL310 driver update:

- Add pl310.disable tunable to disable L2 cache altogether. In
order to make sure that it's 100% disabled we use cache event
counters for cache line eviction and read allocate events
and panic if any of these counters increased. This is purely
for debugging purpose
- Direct access DEBUG_CTRL and CTRL might be unavailable in
unsecure mode, so use platform-specific functions for
these registers
- Replace #if 1 with proper erratum numbers
- Add erratum 753970 workaround
- Remove wait function for atomic operations
- Protect cache operations with spin mutex in order to prevent race condition
- Disable instruction cache prefetch and make sure data cache
prefetch is enabled in OMAP4-specific intialization


244912 31-Dec-2012 gonzo

Merge r234561 from busdma_machdep.c to ARMv6 version of busdma:

Interrupts must be disabled while handling a partial cache line flush,
as otherwise the interrupt handling code may modify data in the non-DMA
part of the cache line while we have it stashed away in the temporary
stack buffer, then we end up restoring a stale value.

PR: 160431
Submitted by: Ian Lepore


244762 28-Dec-2012 gonzo

Add makeshift implementation for framebuffer console's cursor

Basically it's replica of VersatilePB code which is replica of XBox FB
code. All of them are linear framebuffers and should have common bits
moved to reusable framework.


244758 28-Dec-2012 gonzo

Fix event timer on Raspberry Pi

- Disable interrupt when updating compare value in order to
make this operation atomical

- Increase minimum period for event timer. Systimer on BCM2835
is compare timer, so if minimum period is too small it might
be less then fraction of time between "read current value" and
"set compare timer" operations. It means that when timer is armed
actual counter value is more then compare value and it will take
whole cycle (~32sec for 1MHz timer) to fire interrupt.

Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp>


244755 28-Dec-2012 gonzo

Add custom renderer for poor man's cursor support for framebuffer console


244575 22-Dec-2012 cognet

The manpage states that bus_dmamap_create(9) returns ENOMEM if it can't
allocate a map or mapping resources. That seems to imply that any memory
allocations it does must use M_NOWAIT and check for NULL.

Submitted by: Ian Lepore <freebsd@damnhippie.dyndns.org>


244574 22-Dec-2012 cognet

The VM_MEMATTR_ constants are enumerated, not a bitset. Compare accordingly.

Submitted by: Ian Lepore <freebsd@damnhippie.dyndns.org>


244480 20-Dec-2012 gonzo

Replace generic ARM11 option with more specific
support for ARM1136 and ARM1176

Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp>
Obtained from: NetBSD


244476 20-Dec-2012 gonzo

Fix misleading comment


244473 20-Dec-2012 cognet

Use C comments instead of C++ comments.

Spotted out by: gonzo (thanks, man)


244471 20-Dec-2012 cognet

Busdma enhancements, especially for managing small uncacheable buffers.

- Use the new architecture-agnostic buffer pool manager that uses uma(9)
to manage a set of power-of-2 sized buffers for bus_dmamem_alloc().

- Create pools of buffers backed by both regular and uncacheable memory,
and use them to handle regular versus BUS_DMA_COHERENT allocations.

- Use uma(9) to manage a pool of bus_dmamap structs instead of local code
to manage a static list of 500 items (it took 3300 maps to get to
multi-user mode, so the static pool wasn't much of an optimization).

- Small BUS_DMA_COHERENT allocations no longer waste an entire page per
allocation, or set pages to uncached when they contain data other than
DMA buffers. There's no longer a need for drivers to work around the
inefficiency by allocing large buffers then sub-dividing them.

- Because we know the alignment and padding of buffers allocated by
bus_dmamem_alloc() (whether coherent or regular memory, and whether
obtained from the pool allocator or directly from the kernel) we
can avoid doing partial cacheline flushes on them.

- Add a fast-out to _bus_dma_could_bounce() (and some comments about
what the routine really does because the old misplaced comment was wrong).

- Everywhere the dma tag alignment is used, the interpretation is that
an alignment of 1 means no special alignment. If the tag is created
with an alignment argument of zero, store it in the tag as one, and
remove all the code scattered around that changed 0->1 at point of use.

- Remove stack-allocated arrays of segments, use a local array of two
segments within the tag struct, or dynamically allocate an array at first
use if nsegments > 2. On an arm system I tested, only 5 of 97 tags used
more than two segments. On my x86 desktop it was only 7 of 111 tags.

Submitted by: Ian Lepore <freebsd@damnhippie.dyndns.org>


244469 20-Dec-2012 cognet

Use the new allocator in bus_dmamem_alloc().


244446 19-Dec-2012 gonzo

Use NFSCL since NFSCLIENT build is broken at the moment


244414 19-Dec-2012 cognet

Properly implement pmap_[get|set]_memattr

Submitted by: Ian Lepore <freebsd@damnhippie.dyndns.org>


244412 18-Dec-2012 gonzo

Add sysctls for changing GPIO pins function

Submitted by: Luiz Otavio O Souza


244281 16-Dec-2012 gonzo

Fix comment to represent actual file purpose

Spotted by: gavin@


244197 13-Dec-2012 gonzo

Add support for QEMU's version of Versatile Platform Board


244195 13-Dec-2012 gonzo

Add driver for PrimeCell Vectored Interrupt Controller (PL190)


243909 05-Dec-2012 cognet

Don't write-back the cachelines if we really just want to invalidate them.

Spotted out by: Ian Lepore <freebsd at damnhippie DOT dyndns dot org>


243882 05-Dec-2012 glebius

Mechanically substitute flags from historic mbuf allocator with
malloc(9) flags within sys.

Exceptions:

- sys/contrib not touched
- sys/mbuf.h edited manually


243701 30-Nov-2012 gonzo

- Enable syscons/framebuffer by default
- Enable NFS client by default. Might be useful for building ports


243691 30-Nov-2012 gonzo

Get reserved memory regions and exclude them from available memory map


243688 30-Nov-2012 gonzo

Get frequency from "clock-frequency" property of "/axi/sdhci" FDT node


243687 30-Nov-2012 gonzo

Fix RGB565 case


243666 29-Nov-2012 gonzo

Fix hardcoded bpp value


243602 27-Nov-2012 gonzo

Do not enable data cache until later in kernel init. Stale bits in
cache might cause erroneus behavior on early stage.

Submitted by: Ian Lepore
Tested on: Atmel, Marvell, and Eyxnos


243581 27-Nov-2012 marcel

Add NOTES and Makefile in order to generate LINT. NOTES contains pretty
much all the union of all the kernel configuration files, including all
the CPU types, Marvell SOC types and at91 board types. Any device not
supported (read: does not compile) has been removed, which is a fairly
small set actually. As such, LINT gives us very good coverage without
having to build a zillion kernels.


243580 27-Nov-2012 marcel

Allow building LINT by defining both SAMPLE_AT_RESET on the one hand
and SAMPLE_AT_RESET_{LO|HI} on the other. It doesn't matter which
values they take, as long as they are defined.


243579 27-Nov-2012 marcel

Don't include arm/xscale/i8134x/i81342reg.h when we're compiling LINT.
The definitions in i81342reg.h clash with those in i80321reg.h.


243578 27-Nov-2012 marcel

Remove print_kernel_section_addr(). All statements in that function
expand to uncompilable code when the kernel configuration contains
"options DEBUG", such as it is for LINT. The toolchain is often a
better approach to figure this out, as it doesn't require one to
boot the kernel.


243576 27-Nov-2012 marcel

Don't define intr_disable and intr_restore as macros. The macros
interfere with structure fields of the same name in drivers, like
the intr_disable function pointer in struct cphy_ops in cxgb(4).
Instead define intr_disable and intr_restore as inline functions.

With intr_disable() an inline function, the I32_bit and F32_bit
macros now need to be visible in MI code and given the rather
poor names, this is not at all good. Define ARM_CPSR_F32 and
ARM_CPSR_I32 and use that instead of F32_bit and I32_bit (resp)
for now.


243575 26-Nov-2012 marcel

Unbreak building a kernel with EHCI: there's no ehci_atmelarm.c.


243523 25-Nov-2012 kientzle

Fix spelling.


243465 23-Nov-2012 gonzo

Add Raspberry Pi GPIO driver

Submitted by: Luiz Otavio O Souza


243462 23-Nov-2012 imp

Strip trailing newline.


243434 23-Nov-2012 gonzo

Now that we have working USB keyboard add ukbd to the syscons-enabling
part of config


243423 23-Nov-2012 gonzo

Multiple fixes for BCM2835 framebuffer

- Get resolution settings from FDT blob
- Properly handle 24 and 16 bits per pixel
- Add colors support for text console


243359 21-Nov-2012 cognet

Make sure the address starts on a cache line boundary.


243227 18-Nov-2012 adrian

Correctly use spaces here.

Pointed out by: pjd


243194 17-Nov-2012 andrew

Clean up the two i80321 copies of initarm to be closer to one another.


243189 17-Nov-2012 adrian

Just compile the whole ath chipset support in.


243132 16-Nov-2012 kib

Move the declaration of vm_phys_paddr_to_vm_page() from vm/vm_page.h
to vm/vm_phys.h, where it belongs.

Requested and reviewed by: alc
MFC after: 2 weeks


243109 16-Nov-2012 cognet

Don't forget to unlock the pmap lock on failure.


243108 15-Nov-2012 cognet

Remove a useless printf


243107 15-Nov-2012 cognet

Use the "inner shareable" variations of flush/invalidate functions for SMP.

Submitted by: Giovanni Trematerra <gianni at freebsd DOT org>


243040 14-Nov-2012 kib

Flip the semantic of M_NOWAIT to only require the allocation to not
sleep, and perform the page allocations with VM_ALLOC_SYSTEM
class. Previously, the allocation was also allowed to completely drain
the reserve of the free pages, being translated to VM_ALLOC_INTERRUPT
request class for vm_page_alloc() and similar functions.

Allow the caller of malloc* to request the 'deep drain' semantic by
providing M_USE_RESERVE flag, now translated to VM_ALLOC_INTERRUPT
class. Previously, it resulted in less aggressive VM_ALLOC_SYSTEM
allocation class.

Centralize the translation of the M_* malloc(9) flags in the single
inline function malloc2vm_flags().

Discussion started by: "Sears, Steven" <Steven.Sears@netapp.com>
Reviewed by: alc, mdf (previous version)
Tested by: pho (previous version)
MFC after: 2 weeks


243026 14-Nov-2012 cognet

Make it clear the L2 ops are filled for any cpu using a PL310 cache, not just
the omap4.

Spotted out by: Giovanni Trematerra <gianni at freebsd DOT org>


243024 14-Nov-2012 cognet

Use the arrmv7 version for flushID too, as it does something different for SMP.

Submitted by: Giovanni Trematerra <gianni at freebsd DOT org>


242746 08-Nov-2012 imp

Reduce differences between these two initarms a bit more.


242700 07-Nov-2012 imp

Minor cosmetic changes to bring atmel's initarm and the default
initarm for FDT closer together. More to follow.


242692 07-Nov-2012 kevlo

Fix typo; s/ouput/output


242531 03-Nov-2012 andrew

Merge the FDT versions of initarm.

The copies of initarm used on platforms with FDT support were almost
identical. The differences were pulled out into separate functions that
were called by initarm.

This change merges the, now identical, copies of initarm and a few of it's
support functions. This is a step towards a common kernel on ARMv6.


242431 01-Nov-2012 cognet

Fix build for SMP.

Submitted by: Giovanni Trematerra <gianni at freebsd DOT org>


242394 31-Oct-2012 andrew

Merge r242125 into the other ARMv6 copies of initarm.


242362 30-Oct-2012 cognet

Fix SMP build for omap4

Submitted by: Giovanni Trematerra <gianni at freebsd DOT org>


242343 30-Oct-2012 andrew

Move the call to platform_gpio_init() into initarm_gpio_init() to reduce
the diff to the other FDT versions of initarm.


242321 29-Oct-2012 gonzo

Add BCM2835 SDHCI driver and enable it in Raspberry Pi config


242191 27-Oct-2012 kientzle

Missing paren.

Pointy hat:me


242171 27-Oct-2012 kientzle

Comment out the other BOOTP option
This should make PANDABOARD suitable for building
bootable SD images.

Submitted by: Giovanni Trematerra


242125 26-Oct-2012 kientzle

set the kernelname from the boot loader environment.
This fixes kern.bootfile sysctl.

Submitted by: Giovanni Trematerra


242124 26-Oct-2012 kientzle

Comment out the BOOTP/NFSROOT support. Transition this
config file to support a production kernel mounted on an
SD card.


242068 25-Oct-2012 kientzle

Do proper padding of runt packets using code copied from bge(4).

Reviewed by: gnn


242067 25-Oct-2012 kientzle

Refer to headers locally. This makes it a lot easier
to build this driver out-of-tree.


242063 25-Oct-2012 kientzle

Support FreeBSD Boot loaders.


242062 25-Oct-2012 kientzle

Everybody needs bpf.


242061 25-Oct-2012 kientzle

Support boot loaders in the standard kernel.


241885 22-Oct-2012 eadler

This isn't functionally identical. In some cases a hint to disable
unit 0 would in fact disable all units.

This reverts r241856

Approved by: cperciva (implicit)


241856 22-Oct-2012 eadler

Now that device disabling is generic, remove extraneous code from the
device drivers that used to provide this feature.

Reviewed by: des
Approved by: cperciva
MFC after: 1 week


241844 22-Oct-2012 eadler

remove duplicate semicolons where possible.

Approved by: cperciva
MFC after: 1 week


241831 22-Oct-2012 kientzle

Don't repeat the POSTREAD dma sync.


241721 19-Oct-2012 kientzle

Replace deprecated M_DONTWAIT with M_NOWAIT.


241572 15-Oct-2012 kientzle

Fix an mbuf leak in cpsw driver, clean up mbuf management:
* Record TX mbufs when we get them so we can release them.
* Set TX/RX mbuf slots to NULL when we are no longer responsible for them
* Move dma sync on RX into RX intr routine


241564 14-Oct-2012 kientzle

Cut-and-paste dropped semicolon.


241563 14-Oct-2012 kientzle

Name cpsw_stop to cpsw_stop_locked consistently with other functions
in this file that assume locks are already held.


241562 14-Oct-2012 kientzle

Return correct packet size.


241333 07-Oct-2012 imp

Loop reading the RTC registers until the same values are obtained
twice, as advised in the atmel docs.

Submitted by: Ian Lapore


241308 07-Oct-2012 imp

Improve a few comments.


241307 07-Oct-2012 imp

Use the RTC unit to get the time. This works on all known AT91SAM9*
processors, either on reboot or after power down with battery backup.
However, the AT91RM9200 RTC always resets on reboot making it just
about useless at the moment (if we support a low-power mode or an
extended sleep mode, it might become useful).

Submitted by: Ian Lepore


241100 01-Oct-2012 kientzle

Support kernel options from ubldr.


241081 01-Oct-2012 andrew

Remove unused variables from the OMAP ehci code.


241080 01-Oct-2012 andrew

Fix the clobber list on the atomic operators that do comparisons. Without
this some compilers will place a cmp instruction before the atomic operation
and expect to be able to use the result afterwards. By adding "cc" to the
list of used registers we tell the compiler to not do this.


241063 30-Sep-2012 alc

Stop calling pmap_remove_write() from pmap_remove_all(). Doing so is not
only inefficient but also leads to recursive lock acquisition.

Tested by: ray


241058 29-Sep-2012 alc

Eliminate an unused declaration.


241055 29-Sep-2012 alc

Eliminate unused variables.


241054 29-Sep-2012 alc

Add support for mincore(). Specifically, this is an adaptation of the
pmap_mincore() implementation that was added to the original arm pmap
in r235717.


241044 29-Sep-2012 alc

Update a comment to reflect recent locking changes.


240983 27-Sep-2012 alc

Implementing pmap_kextract(va) as pmap_extract(kernel_pmap, va) is
problematic because some callers to pmap_kextract() expect its
implementation to be lock-less. In particular, uma_dbg_alloc() implicitly
requires this. Otherwise, lock-order reversals occur between pmap locks and
UMA zone locks. So, this change introduces a lock-less implementation of
pmap_kextract().

Disable recursion on the pvh global lock in the new armv6 pmap. While
recursion on this locks occurs in the old arm pmap, it thankfully doesn't
occur in the armv6 pmap.

Tested by: jmg


240956 26-Sep-2012 andrew

Create the new initarm_ functions to reduce the diff to the other FDT
versions of initarm


240953 26-Sep-2012 andrew

Use arm_dump_avail_init to build the dump_avail array


240952 26-Sep-2012 andrew

Start to clean up the lpc initarm as it also uses FDT.


240913 25-Sep-2012 alc

Eliminate an unused declaration.


240869 23-Sep-2012 andrew

Clean up the bcm2835 initarm. It is now identical to the other ARMv6 copies

Tested by: Alexander Yerenkow


240853 23-Sep-2012 andrew

Fix a typo in a Broadcom initarm debug printf


240846 23-Sep-2012 andrew

Pull out the SoC specific parts of initarm into separate functions


240845 23-Sep-2012 andrew

Update different versions of physmap_init to be identical in preparation
for merging them.


240844 22-Sep-2012 andrew

Reduce the diff between the FDT implementations of initarm.
This only touches whitespace and comments.


240803 22-Sep-2012 alc

Since UMA_ZONE_NOFREE is specified when l2zone and l2table_zone are created,
there is no need to release and reacquire the pmap and pvh global locks
around calls to uma_zfree(). Recursion into the pmap simply won't occur.

Eliminate the use of M_USE_RESERVE. It is deprecated and, in fact, counter-
productive, meaning that it actually makes the memory allocation request
more likely to fail.

Eliminate the macros pmap_{alloc,free}_l2_dtable(). They are of limited
utility, and pmap_free_l2_dtable() was inconsistently used.

Tidy up pmap_init(). In particular, change the initialization of the PV
zone so that it doesn't span the initialization of the l2 and l2table zones.

Tested by: jmg


240802 22-Sep-2012 andrew

Create a common set_stackptrs in sys/arm/machdep.c.

On single core devices set_stackptrs is only ever called with cpu = 0 in
initarm and will be identical to the existing function. On SMP this needs
to be implemented for sys/arm/mp_machdep.c, but the implementations are
identical for each SoC.


240596 17-Sep-2012 andrew

Add a kernel config for the Toshiba AC100. The AC100 is an ARM laptop with
an NVidia Tegra 2 CPU.

Tegra 2 needs an external patch to pmap for atomic operations to work. Even
with this the Kernel only gets to the mount root prompt. As such Tegra
support is considered experimental, however adding the kernel config will
help ensure the Tegra code builds.


240572 16-Sep-2012 jmg

fix the kernel files to match our standard "option<space><tab>" format
such that when commenting/uncommentting lines, horizontal spacing is
maintained...

Also fix some minor comment formatting to line things up, etc...

Reviewed by: gnn, imp
MFC after: 1 week


240571 16-Sep-2012 jmg

remove some unnecessary debugging statements, dead code and incorrect
comment...

Reviewed by: gnn, imp


240551 16-Sep-2012 andrew

Start to clean up ARMv6 initarm implementations by making the Tegra 2
version similar to the Ti version.


240550 16-Sep-2012 andrew

In the Tegra 2 standard config:
* Remove an unneeded makeoption
* Set machine correctly
* Properly indent the include of files.tegra2


240549 16-Sep-2012 andrew

The cpu_reset function is noreturn, make sure this is true on Tegra 2.
While here fix a typo.


240532 15-Sep-2012 alc

Eliminate an unused malloc type.


240518 14-Sep-2012 eadler

Correct double "the the"

Approved by: cperciva
MFC after: 3 days


240493 14-Sep-2012 gber

Implement MSI support.

MSI are implemented via Inbound Shared Doorbell 1 interrupts. Interrupts
are triggered by writing to Software Triggered Interrupt registeri (PCIe
card using physical address of this register in BAR0 space). There are 32
interrupts available. It can be increased by using Doorbell 2 and
Doorbell 3 registers to 96 interrupts.

Obtained from: Marvell, Semihalf


240492 14-Sep-2012 gber

Add support for MSI in interrupt controlller.

MSI are implemented via software interrupt. PCIe cards will write
into software interrupt register which will cause inbound shared
interrupt which will be interpreted as a MSI.

Obtained from: Marvell, Semihalf


240491 14-Sep-2012 gber

Remove unused structure fields

Obtained from: Semihalf


240490 14-Sep-2012 gber

Enable PCI for Armada XP

Obtained from: Semihalf


240489 14-Sep-2012 gber

pci: Implement new memory and io space allocator for PCI.

Cleanup code and move initializing bridge into separate function.
Add checking of PCI mode (RC or endpoint).

Obtained from: Semihalf


240488 14-Sep-2012 gber

Add support for Armada XP A0.

- Add functions to calculate clocks instead using hardcoded values
- Update reset and timers functions
- Update number of interrupts
- Change name of platform from db88f78100 to db78460
- Correct DRAM size and PCI IRQ routing in dts file.

Obtained from: Semihalf


240486 14-Sep-2012 gber

Support identification of new PJ4B cores.

Obtained from: Semihalf


240483 14-Sep-2012 hselasky

Add basic USB support to Raspberry PI target.


240442 13-Sep-2012 alc

Simplify the kernel pmap locking in pmap_enter_pv(). While I'm here, tidy
up the comments and whitespace.

Tested by: cognet


240376 11-Sep-2012 hselasky

Add device entry for DWC OTG.


240321 10-Sep-2012 alc

Replace all uses of the vm page queues lock by a r/w lock that is private
to this pmap.

Revise some comments.

The file vm/vm_param.h includes the file machine/vmparam.h, so there is no
need to directly include it.

Tested by: andrew


240280 09-Sep-2012 hselasky

Add support for DWC OTG.


240181 07-Sep-2012 alc

Eliminate an unused macro.


240177 06-Sep-2012 jhb

Dynamically allocate the S/G lists passed to callback routines rather than
allocating them on the stack of various bus_dmamap_load*() functions. The
S/G lists are stored in the DMA tags. This matches the implementation on
all other platforms.

Discussed with: scottl, gibbs
Tested by: stas (arm@)


240166 06-Sep-2012 alc

There is no need to release the pvh global lock around calls to
pmap_get_pv_entry(). In fact, some callers already held it around calls.
(In earlier versions, the same statements would apply to the page queues
lock.)

While I'm here tidy up the style of a few nearby statements and revise
some comments.

Tested by: Ian Lepore


239934 31-Aug-2012 alc

Replace all uses of the vm page queues lock by a r/w lock that is private
to this pmap.

Tested by: Ian Lepore


239922 30-Aug-2012 gonzo

Add barebone Raspberry Pi port. Supported parts:
- Interrupts controller
- Watchdog
- System timer
- Framebuffer (hardcoded resolution/bpp)


239806 29-Aug-2012 imp

4-wire mode isn't working quite right, so turn it off for a bit.


239805 29-Aug-2012 imp

Make this work on the AT91SAM9G20:
o Disable multi-block operations: they sometimes fail.
o Don't use the PROOF bits yet: they hang the system hard.
o Disable the the multi-block operations for !rm9200, but it
still doesn't help.
o Fix writing < 12 bytes errata to actually work.
o Enable, for the moment, reporting extra bytes soaked up.


239804 29-Aug-2012 imp

When copying data, use memcpy instead of bcopy. It matches the
arguments better.
Also, set the need to use the workaround flag before we actually need
to use it, rather than after.


239785 28-Aug-2012 imp

Make AT91_MCI_ALLOW_OVERCLOCK a real option. Rename old use 30MHz to
this new option. Only try to use > 25MHz when our best frequency is <
15MHz and overclocking is enabled. Fix minor style chaff.


239780 28-Aug-2012 imp

Clip the upper end to 31MHz for slow clock speeds. On faster
machines, we wind up with a 66MHz clock, which is too fast.


239764 28-Aug-2012 imp

Move to using a flag instead of checking the CPU type each
transaction for the MCI1 rev 2.x write workarounds.


239763 28-Aug-2012 imp

Style: Move these routines to be before the forward declared functions
as is the normal practice.


239762 28-Aug-2012 imp

Bring in the multi-block patches for mci. These required extensive
restructuring of the driver. I've tried to preserve the other silicon
workarounds that we've added over the years, but haven't had a chance
to extensively test on other hardware. On my AT91RM9200 with 30MHz/1
wire/64 block transfers, I've been able to go from ~.66MB/s to
2.25MB/s in the simple tests I performed, almost a 3.5x improvement.
This cuts the boot time almost in half when everything else goes
right (timed from rtc message to login: prompt).

PR: 155214
Submitted by: Ian Lapore


239722 27-Aug-2012 kientzle

Correctly fetch the MAC address.

Break down the bytes directly into the softc;
the intermediate buffer isn't needed here.
Break down the bytes in the correct order.


239721 27-Aug-2012 imp

Add hint and sysctl support for 4 wire mode.

PR: 155241
Submitted by: Ian Lapore


239720 27-Aug-2012 imp

Minor style(9) nit.


239719 27-Aug-2012 imp

Don't puprosely overclock the SD bus to 30MHz, make the user
explicltly enable that. The driver chose to use 60MHz / 2 (30MHz)
most of the time rather than 60MHz / 4 (15MHz) based on the Linux
driver of the time. This pushes the spec a little in order to not
suffer the penalty of running at 15MHz. However, when other bus
masters are active in the system, and the user tries 4-wire mode, the
internal bus arbitration would fail with data loss as a result.

# Comments from PR were reworked to reflect my historical perspective

PR: 155214 (partial)
Submitted by: Ian Lepore


239702 26-Aug-2012 gonzo

Add ARM11 support for elf trampoline


239701 26-Aug-2012 gonzo

Add support for ARM11 cpufunc

Obtained from: NetBSD (partially)


239699 26-Aug-2012 gjb

Grammar fix: s/NIC's/NICs/

MFC after: 3 days


239698 26-Aug-2012 gonzo

Call set_pcpu for ARMv6 architecture too


239697 26-Aug-2012 gonzo

Merge fix for hang on ARM11 from NetBSD


239696 26-Aug-2012 gonzo

Piggyback MIPS changes and add ARM syscons support for devices with
framebuffer

While here - sort #if defined() order alphabetically


239690 25-Aug-2012 gonzo

Style cleanup


239688 25-Aug-2012 gonzo

ARM11 might have more then 32 interrupts, e.g. BCM2835: 72 interrupts


239687 25-Aug-2012 gonzo

Add clrex, strex , ldrex, strex and variants

Submitted by: Alexander Rybalko


239626 23-Aug-2012 imp

Fetch the chip select in the bridge driver, like all the other spi
bridges do.


239623 23-Aug-2012 imp

Use proper resource type when freeing.

Submitted by: Ian Lapore (indirectly in a larger patch)


239597 22-Aug-2012 gonzo

Do not change "cachable" attribute for DMA memory allocated with
BUS_DMA_COHERENT attribute

The minimum unit for changing "cachable" attribute is page, so call
to pmap_change_attr effectively disable cache for all pages that newly
allocated DMA memory region spans on. The problem is that general-purpose
memory could reside on these pages too and disabling cache might affect
performance. Moreover ldrex/strex operators raise Data Abort exception
when accessing memory on page with "cachable" attribute off.

BUS_DMA_COHERENT does nto require memory to be coherent. It just suggests
to do best effort for reducing synchronization overhead.


239553 22-Aug-2012 kientzle

After r239366, fix the ti_edma3.c driver to use the
exact name as used in the FDT.


239530 21-Aug-2012 hselasky

Make some at91_pcm_xxx() functions NULL safe.


239508 21-Aug-2012 hrs

- Calculate the I2C baud rate to keep them <100 kHz under different TCLK
frequencies. The maximum freqency is 100 kHz according to the datasheet.

- Add child device probing support based on the device tree. It now tries to
find i2c-address property in the tree and attach the device with given slave
address to iicbus.


239371 18-Aug-2012 hrs

Add mvts(4) driver for internal thermal sensor found on 88F6282 and 88F6283.
The temperature value will be exported via sysctl like this:

dev.mvts.0.temperature: 52.1C


239370 18-Aug-2012 hrs

Sort IDs.


239369 18-Aug-2012 hrs

Fix build when DEBUG is defined.


239368 18-Aug-2012 hrs

- MV_DEV_88F6282 has 256KB 4-way L2 cache.
- Sort IDs in win_cpu_can_remap() and remove MV_DEV_MV78100 because it is
included in MV_DEV_DISCOVERY.
- Add MV_DEV_MV78XXX to xor_max_eng().


239367 18-Aug-2012 hrs

Fix a bug that could fail to initialize GPIO pins specified in "gpios" because
"gpio-controller" property at the controller node was always ignored.


239363 18-Aug-2012 andrew

Remove machine from the LN2410SBC config, it is set by std.s3c2410


239362 18-Aug-2012 andrew

Set machine correctly on ARM. This allows universe to use the correct world
when building each kernel.

Reviewed by: imp


239351 17-Aug-2012 rpaulo

The GPIO drivers were initialising their mutexes with type of
MTX_NETWORK_LOCK. This is wrong since these mutexes have nothing to do
with networking.


239324 16-Aug-2012 imp

Preliminary Embest ATEB9200 support.


239323 16-Aug-2012 imp

Hmmm, somehow this file was completely deleted, rather than just
having the bogus lines being removed.


239322 16-Aug-2012 imp

Remove unused hints.


239308 15-Aug-2012 gonzo

Unbreak build for the rest of AT91 platforms


239307 15-Aug-2012 jceel

Switch lpc initarm() to use struct arm_boot_params and therefore fix
EA3250 kernel build.

Approved by: gonzo


239291 15-Aug-2012 gonzo

Unbreak ATMEL kernel build


239283 15-Aug-2012 gonzo

Specify architecture for assembler


239281 15-Aug-2012 gonzo

Merging of projects/armv6, part 10

- Support for Texas Instruments SoCs:
- AM335x
- OMAP4

- Kernel configs, DTS for Beaglebone and Pandaboard

Submitted by: Ben Gray, Damjan Marion


239280 15-Aug-2012 gonzo

Merging of projects/armv6, part 9

Very basic support for Nvidia Tegra2: timer, interrupts, UART.

Submitted by: Damjan Marion <dmarion@freebsd.org>


239279 15-Aug-2012 gonzo

Merging of projects/armv6, intermission

Add configs missed in previous commits:
- ARMADA XP
- Embedded Artists EA3250


239278 15-Aug-2012 gonzo

Merging of projects/armv6, part 8

r235162:

Initial LPC32x0 support. Includes DTS file for Embedded Artists EA3250
board.

Peripherals currently supported:
- Serial ports
- Interrupt controller
- Timers
- Ethernet
- USB host
- Framebuffer (in conjunction with SSD1289 LCD controller)
- RTC
- SPI
- GPIO

Submitted by: Jakub Wojciech Klama <jceel@freebsd.org>


239277 15-Aug-2012 gonzo

Merging of projects/armv6, part 7

Add Marvell ARMADA XP support

Obtained from: Marvell, Semihalf


239268 15-Aug-2012 gonzo

Merging projects/armv6, part 1

Cummulative patch of changes that are not vendor-specific:
- ARMv6 and ARMv7 architecture support
- ARM SMP support
- VFP/Neon support
- ARM Generic Interrupt Controller driver
- Simplification of startup code for all platforms


239191 11-Aug-2012 andrew

Move the decoding of the swi instruction to the syscall function. With the
ARM EABI the syscall value will be moved to a register to ease adding thumb
support. When this happens decoding of the instruction will no longer be
required.


239190 11-Aug-2012 imp

Correct the PLLA setting functions and centralize.


239189 11-Aug-2012 imp

Update comments about setting PLLA and refernce the tables in the
datasheet that express the limits.


239188 11-Aug-2012 imp

Don't use C++ comments.


239168 10-Aug-2012 imp

More comments about setting PLLA, or rather that we never do.


239167 10-Aug-2012 imp

Add charge pump current register.


239065 05-Aug-2012 kib

After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason
to pull vm_param.h was removed. Other big dependency of vm_page.h on
vm_param.h are PA_LOCK* definitions, which are only needed for
in-kernel code, because modules use KBI-safe functions to lock the
pages.

Stop including vm_param.h into vm_page.h. Include vm_param.h
explicitely for the kernel code which needs it.

Suggested and reviewed by: alc
MFC after: 2 weeks


239033 04-Aug-2012 andrew

Correctly return EFAULT in copyin & copyout on a fault. This fixes NFS
when running FreeBSD on QEMU emulating a Gumstix board.

While here remove the use of a magic number in the not-XScale version.

Pointed out by: kib
Reviewed by: stas


239032 04-Aug-2012 andrew

Ensure we align the stack to 8 bytes in system calls.

This is not strictly required with the current ABI but will be when we
switch to the ARM EABI. The aapcs requires the stack to be 4 byte aligned
at all times and 8 byte aligned when calling a public subroutine where the
current ABI only requires sp to be a multiple of 4.


238957 31-Jul-2012 imp

Prefer ate over macb. macb doesn't work anymore, and ate has more
errata workarounds in it.


238956 31-Jul-2012 imp

Note about where we can boot this.


238955 31-Jul-2012 imp

Allow chip selects other than 0. The SAM9260EK board
has its dataflash on CS1.


238932 31-Jul-2012 imp

macb doesn't work, switch to ate.


238922 30-Jul-2012 imp

These files will support the whole at91sam9x5 family when done,
so rename them now before they get copied further afield...


238921 30-Jul-2012 imp

List the members of the AT91SAM9G45 family.


238895 30-Jul-2012 imp

Fix a couple of comments about the rm9200, and fix a couple of indentation
issues. Add note that we need to implement at91sam9260 erratum workaround.


238881 29-Jul-2012 imp

Commit the dci (gadget) support to the one ATMEL kernel config where
it might actually work.


238880 29-Jul-2012 imp

Add usb_template for the gadget support. Even though this isn't a
bootable kernel, its config will likely be copied to places that are.

Submitted by: Hans Petter Selasky


238873 28-Jul-2012 hrs

Add support for Marvell 88F6282.

Sponsored by: Plat'Home, Co.,Ltd.


238850 27-Jul-2012 imp

Add gadget devices. Not yet added to the child lists, but here to
keep things from bit-rotting.


238849 27-Jul-2012 imp

Add the usb device (gadget) side of things. Also add ehci bindings
while I'm here in anticipation of usb2 support for newer SoCs.

Requested by: Hans Petter Selasky


238847 27-Jul-2012 imp

Neither of these systems has PCI, but they do have ohci interface, so
fix comments.


238846 27-Jul-2012 imp

Add new at91sam9g45 support and sn9g45 board to the ATMEL kernel.
Adapt SN9G45 board support to cope with multi-board.


238823 27-Jul-2012 imp

Document the dataflash/mmc-sd issue. Add umass driver and usb. Boot
off da0s1a instead of ate0. Note that MMC/SD is slot B. Until I
switch over to NAND boot, dataflash booting will preclude having SD
cards inserted at boot, so this last bit is untested.

My SAM9260-EK not boots to multi-user prompt.


238821 27-Jul-2012 imp

Turns out the ETHERNUT5 isn't anything like the SAM9260-EK. Make this
board init match better: UART1 instead of UART2, No RMMI, no SPI0, SPI1
comments.


238820 27-Jul-2012 imp

Add (back?) ohci atmel attachment.


238811 26-Jul-2012 imp

Trim read/write sizes to 128 bytes. Pages are only 128 bytes in size.
Writes larger than this will wrap to the same page. Reads larger than
this are permitted, but why take chances.


238789 26-Jul-2012 andrew

Add support for the DesignA Electronics Snapper9g45 System on Module.

Reviewed by: imp


238788 26-Jul-2012 andrew

Add support for the Atmel AT91SAM9G45 CPU.

Reviewed by: imp


238787 26-Jul-2012 imp

Some models have 6 USARTS + DBGU. Set a consistent name.


238786 26-Jul-2012 imp

Fix typo in comment.
spibus uses cs= rather than addr=, so fix hints to use that (nop since
spibus cs defaults to 0, and at91_spi assumes 0).


238785 26-Jul-2012 imp

Update partitions to reflect "sam9 demo" defaults.
Update i2c devices to just include the eeprom.
Update dataflash chip select to be CS 1 (this doesn't work yet and
needs changes to at91_spi and the spibus infrastructure).
Fix typo in comment.


238545 17-Jul-2012 gonzo

Move unmask IRQ function call up to nexus device level.

FDT-enabled targets were broken after r238043 that relies
on device up the hierarchy to properly setup interrupt.
nexus device for ARM platforms did job only partially:
setting handler but not unmasking interrupt. Unmasking
was performed by platform code.

Reviewed by: andrew@


238467 15-Jul-2012 imp

These were never used, remove them.


238465 15-Jul-2012 imp

Configure the peripheral pins for MCI devices. Eliminate the now-unused
at91_pio_rm9200.h.


238443 14-Jul-2012 imp

Add preliminary support for Atmel SAM9260-EK evaluation kit.
Initially identical to the Ethernut5, but will diverge shortly before
I refactor...


238442 14-Jul-2012 imp

uboot should be telling us it is an ETHERNUT5 for this board. Tag it
as such.


238439 14-Jul-2012 imp

Create common routines for configuring the serial ports and use them
on all the at91rm9200 boards.


238415 13-Jul-2012 imp

For our at91rm9200 boards, register which subtype of SoC is on the
board. We'll use this later to control the differences between these
two variants' pins.


238404 12-Jul-2012 imp

This file is no longer AT91RM9200 specific, but now is generic to all
Atmel AT91 SoC's we support. Rename to reflect that.


238403 12-Jul-2012 imp

Remember where we found the DBGU and use that for our console.


238398 12-Jul-2012 imp

Fix whitespace divot.


238397 12-Jul-2012 imp

Complete the transition away from newbus to populate the children to
the linker set of CPU modules. The newbus method, although clever,
had many flaws: it didn't really support multiple SoC, many of the
comments about order were just wrong, and it did a few things far too
late to be useful. delay and cpu_reset now work much earlier in the
boot process.


238390 12-Jul-2012 imp

Create the children devices for the SoC in atmelarm bus node, not in
the identify routine of the CPU.


238389 12-Jul-2012 imp

Export the interrupt status vector via soc_data. Set the interrupt
priorities in the AIC in the atmelarm driver before attaching the
children. Delete redunant copies of the code.


238376 11-Jul-2012 imp

Make the SoC stuff a little more modular, and start to move away from
having the CPU device that's a child of atmelarm that does stuff.

o Create a linker_set for the support fucntions for the SoCs.
o Rename soc_data to soc_info.
o Move the delay and reset function pointers to new soc_data struct
o Create elements for all known SoCs
o Add lookup of the SoC we found, and print a warning if it isn't one
we know about.


238370 11-Jul-2012 imp

at91pit->at91_pit for consistnecy with other drivers.


238369 11-Jul-2012 imp

at91$DEV->at91_$DEV to match other Atmel drivers. Also, export
at91_rst_cpu_reset.


238358 10-Jul-2012 imp

Remove some more unused code.


238354 10-Jul-2012 imp

Go ahead and disable the interrupts for the DBGU the boot loader may
have left enabled after we detect the CPU, and remove the multiplely
copied code from the SoC modules.


238348 10-Jul-2012 imp

Remove a useless bit of indirection. On all Atmel ARM products, irq 1
is the system IRQ, so use the define for it and get on with life.


238347 10-Jul-2012 imp

Revert committal of local change accidentally swept up in r238329.


238341 10-Jul-2012 imp

Pure style mischief. at91_$DEV_ rather than at91$DEV_ to match
others.


238340 10-Jul-2012 imp

Minor rework to eliminate at91rm9200reg.h dependency and possibly set the
stage for a detach routine (unlikely to be useful, but while I was here..)


238335 10-Jul-2012 imp

Revert last change. It was accidental.


238334 10-Jul-2012 imp

Collapse all copies of at91_add_child into at91.c. They were
logically identical before today, and actually identical after today's
changes.


238332 10-Jul-2012 imp

Missed one of the special AT91SAM9xxx_BASE defines. This should be
AT91_BASE.


238331 10-Jul-2012 imp

The system IRQ is always IRQ 1. Make it so.


238330 10-Jul-2012 imp

Eliminate the AT91XXXX_BASE for each SoC. AT91_BASE is the right way
to spell this since we only have one AT91_BASE for all Atmel arm9 SoCs.


238329 10-Jul-2012 imp

Remove some unused variables/externs that have been copied too many times...


238327 10-Jul-2012 imp

Not quite ready for this yet, so comment it out.


238325 10-Jul-2012 imp

There's nothing AT91RM9200 specific about this file at all.


238189 07-Jul-2012 imp

Create a generic way to support multiple boards within an
arm platform. Add all the atmel boards to the ATMEL kernel for
testing purposes. Until boot loader arg parsing of baord type
is done, this won't actually be able to do the runtime selection.


238130 05-Jul-2012 marcel

Fix LINT.

Obtained from: Juniper Networks, Inc.


237883 01-Jul-2012 imp

Create a pseudo-lint kernel for all at91 SoCs. This kernel will not
currently boot, but will serve as a good linting. make universe could
now be altered to skip building all the other at91 kernels...


237881 01-Jul-2012 imp

Opt-in rather than opt-out of the SoC. We don't really support
running with multiple SoCs compiled in very well anyway, so this just
wastes space. As more and more SoCs arrive in the tree, it is better
to edit one master file that builds them all than many board files.


237841 30-Jun-2012 marius

Exclude at91sam9x25 support, which just wastes space for Ethernut 5.


237745 29-Jun-2012 imp

Tweak comment.


237744 29-Jun-2012 imp

Add PIOD, make at91sam9x25 a standard SoC, tweak some comments.


237743 29-Jun-2012 imp

Ooops, replaced the at91sam9g20 interrupt list with the at91sam9x25 ones.


237742 29-Jun-2012 imp

Initital support for AT91SAM9X25 SoC and the SAM9X25-EK evaluation
board. Much work remains.


237741 29-Jun-2012 imp

All xscale ports are armeb, so mark it here. This should reduce universe
times a little.


237517 24-Jun-2012 andrew

Make the wchar_t type machine dependent.

This is required for ARM EABI. Section 7.1.1 of the Procedure Call for the
ARM Architecture (AAPCS) defines wchar_t as either an unsigned int or an
unsigned short with the former preferred.

Because of this requirement we need to move the definition of __wchar_t to
a machine dependent header. It also cleans up the macros defining the limits
of wchar_t by defining __WCHAR_MIN and __WCHAR_MAX in the same machine
dependent header then using them to define WCHAR_MIN and WCHAR_MAX
respectively.

Discussed with: bde


237433 22-Jun-2012 kib

Implement mechanism to export some kernel timekeeping data to
usermode, using shared page. The structures and functions have vdso
prefix, to indicate the intended location of the code in some future.

The versioned per-algorithm data is exported in the format of struct
vdso_timehands, which mostly repeats the content of in-kernel struct
timehands. Usermode reading of the structure can be lockless.
Compatibility export for 32bit processes on 64bit host is also
provided. Kernel also provides usermode with indication about
currently used timecounter, so that libc can fall back to syscall if
configured timecounter is unknown to usermode code.

The shared data updates are initiated both from the tc_windup(), where
a fast task is queued to do the update, and from sysctl handlers which
change timecounter. A manual override switch
kern.timecounter.fast_gettime allows to turn off the mechanism.

Only x86 architectures export the real algorithm data, and there, only
for tsc timecounter. HPET counters page could be exported as well, but
I prefer to not further glue the kernel and libc ABI there until
proper vdso-based solution is developed.

Minimal stubs neccessary for non-x86 architectures to still compile
are provided.

Discussed with: bde
Reviewed by: jhb
Tested by: flo
MFC after: 1 month


237432 22-Jun-2012 imp

Fix a stray debug that I committed accidentally years ago...


237430 22-Jun-2012 kib

Reserve AT_TIMEKEEP auxv entry for providing usermode the pointer to
timekeeping information.

MFC after: 1 week


237429 22-Jun-2012 imp

Move these #defines to at91reg.h (where I should have put them in the
first place).


237239 18-Jun-2012 marius

Revert the part of r236495 that introduced checking of SPI_SR_TXEMPTY
for TX transfer completion as for reasons unknown this occasionally
causes SPI_SR_RXBUFF and SPI_SR_ENDRX to not rise.
In any case, once the RX part of the transfer is done it's obvious
that the preceding TX part had finished and checking of SPI_SR_TXEMPTY
was introduced to rule out a possible cause for the data corruption
mentioned in r236495 but which didn't turn out to be the problem
anyway.

MFC after: 3 days


237238 18-Jun-2012 marius

Try to bring this file closer to style(9).


237237 18-Jun-2012 marius

Unbreak after r236658 by comparing the right things.


237168 16-Jun-2012 alc

The page flag PGA_WRITEABLE is set and cleared exclusively by the pmap
layer, but it is read directly by the MI VM layer. This change introduces
pmap_page_is_write_mapped() in order to completely encapsulate all direct
access to PGA_WRITEABLE in the pmap layer.

Aesthetics aside, I am making this change because amd64 will likely begin
using an alternative method to track write mappings, and having
pmap_page_is_write_mapped() in place allows me to make such a change
without further modification to the MI VM layer.

As an added bonus, tidy up some nearby comments concerning page flags.

Reviewed by: kib
MFC after: 6 weeks


237151 16-Jun-2012 imp

Throw this debug behind bootverbose. The information isn't all that
exciting once the initial board bring up is over.


237137 15-Jun-2012 imp

Remove stray line from merge.


237130 15-Jun-2012 imp

Make it possible to link together a sam and an rm kernel. The results
aren't very pretty yet, but this takes DELAY and cpu_reset and makes
them pointers.

# I worry that these are set too late in the boot, especially cpu_reset.


237125 15-Jun-2012 imp

These options are unused, and can safely be retired.


237124 15-Jun-2012 imp

This hints file doesn't actually do anything, and besides it is commented
out here. Remove it.


237122 15-Jun-2012 imp

Collapse the files.at91 and files.at91sam9 back into files.at91.
Create a new option for at91rm9200 support. Set this option in
std.at91. Create a new option for the at91sam9 standard devices. Set
this option in std.at91sam9. Retire files.at91sam9. Add options for
at91sam9x25 SoC and SAM9X25EK board, but don't connect it just yet as
the supporting files aren't quite ready.

Note: device at91rm9200 and device at91sam9 are presently mutually
exclusive.


237118 15-Jun-2012 imp

Fix a global shadowing problem when LINUX_BOOT_ABI was defined.


237115 15-Jun-2012 imp

Take half a step closer towards having a unified atmel kernel by
rearranging where we initialize the time counter and putting the
common stubs into a central place.


237089 14-Jun-2012 imp

Fix missing straggler for the move to parse_boot_param()


237069 14-Jun-2012 imp

Defines for parsing linux ATAGs lists.


237045 14-Jun-2012 imp

More Linux boot support. Create arm_dump_avail_init() to initialize
this array either from Linux boot data, when enabled, or in the
typical way that most ports do it. arm_pyhs_avail_init is coming
soon since it must be a separate function.


237044 14-Jun-2012 imp

Add support for parsing Linux ATAGs such as you'd see from uboot or
redboot. Support is very preiminary and likely needs some work. Also,
do some minor code shuffling of the FreeBSD /boot/loader metadata
parsing code. This code is preliminary and should be used with
caution.


237042 14-Jun-2012 imp

Create default_parse_boot_param which, if FreeBSD /boot/loader support
is enabled, sets values based on the metadata passed in. Otherwise
fake_preload_metadata is called. Change the default parse_boot_param
to default_parse_boot_param. Enable this functionality only on the mv
platform, which is where most of the code is from.

Reviewed by: cognet, Ian Lapore


237040 14-Jun-2012 imp

Modify all the arm platform files to call parse_boot_param passing in
the boot parameters from initarm first thing. parse_boot_param parses
the boot arguments and converts them to the /boot/loader metadata the
rest of the kernel uses. parse_boot_param is a weak alias to
fake_preload_metadata, which all the platforms use now, but may become
more extensive in the future.

Since it is a weak symbol, specific boards may define their own
parse_boot_param to interface to custom boot loaders.

Reviewed by: cognet@, Ian Lapore


237010 13-Jun-2012 imp

Remove leakage of other patches into last commit.


236997 13-Jun-2012 fabient

Add ARM callchain support for hwpmc.

Sponsored by: NETASQ
MFC after: 3 days


236992 13-Jun-2012 imp

trim trailing whitespace


236991 13-Jun-2012 imp

Final whitespace trim.


236990 13-Jun-2012 imp

Trim trailing whitespace...


236989 13-Jun-2012 imp

Strip trailing whitespace before other changes.


236988 13-Jun-2012 imp

Strip trailing whitespace.


236987 13-Jun-2012 imp

trim trailing spaces that have accumulated over the years (these files
served as the basis for too many other platforms).


236846 10-Jun-2012 andrew

Remove an unneeded increment from initarm. The variable is uninitialised,
is not used in this part of the function and correctly initialised later
when it is used.


236845 10-Jun-2012 andrew

The GUMSTIX-QEMU config file is almost identical to the GUMSTIX config,
include the latter file from the former rather than duplicating it.


236828 10-Jun-2012 andrew

Pull out the common code to initialise proc0 & thread0 from initarm to a
common function.

Reviewed by: imp


236681 06-Jun-2012 imp

Remove stray break; that resulted from a last-minute, untested change.


236658 06-Jun-2012 imp

Enhance the Atmel SoC chip identification routines to account for more
SoC variants. Fold the AT91SAM9XE chips into the AT91SAM9260
handling, where appropriate. The following SoCs/SoC families are recognized:
at91cap9, at91rm9200, at91sam9260, at91sam9261, at91sam9263,
at91sam9g10, at91sam9g20, at91sam9g45, at91sam9n12, at91sam9rl,
at91sam9x5
and the following variations are also recognized:
at91rm9200_bga, at91rm9200_pqfp, at91sam9xe, at91sam9g45, at91sam9m10,
at91sam9g46, at91sam9m11, at91sam9g15, at91sam9g25, at91sam9g35,
at91sam9x25, at91sam9x35
This is only the identification routine: no additional Atmel devices
are supported at this time.

# With these changes, I'm able to boot to the point of identification
# on a few different Atmel SoCs that we don't yet support using the
# KB920X config file -- someday tht will be an ATMEL config file...


236617 05-Jun-2012 imp

Remove dead code.


236535 04-Jun-2012 imp

Eliminate the now-unused AT91C_MASTER_CLOCK option and change the one
place in the source it was used to the more correct AT91C_MAIN_CLOCK.
Sort AT91C_MAIN_CLOCK into a better location in the options.arm file.


236524 03-Jun-2012 imp

Minor rearrangement of the locore <-> initarm interface. Pass in a
structure with the first 4 registers to allow a wider range of boot
loaders to work. Future commits will make use of this to centralize
support for the different loaders.


236498 03-Jun-2012 imp

Remove stray repeated line...


236497 03-Jun-2012 marius

- Now that the DataFlash related drivers work properly (at91_spi(4) since
r236495 and at45d(4) since r236496), enable them by default.
- Sort BOOTP options.


236495 03-Jun-2012 marius

- Prepend the device description with "AT91" to reflect its nature. [1]
- Move DMA tag and map creature to at91_spi_activate() where the other
resource allocation also lives. [1]
- Flesh out at91_spi_deactivate(). [1]
- Work around the "Software Reset must be Written Twice" erratum.
- For now, run the bus at the slowest speed possible in order to work
around data corruption on transit even seen with 9 MHz on ETHERNUT5
(15 MHz maximum) and AT45DB321D (20 MHz maximum). This also serves as
a poor man's work-around for the "NPCSx rises if no data data is to be
transmitted" erratum of RM9200. Being able to use the appropriate bus
speed would require:
1) Adding a proper work-around for the RM9200 bug consisting of taking
the chip select control away from the SPI peripheral and managing it
directly as a GPIO line.
2) Taking the maximum frequencies supported by the actual board and the
slave devices into account and basing the whole thing on the master
clock instead of hardcoding a divisor as previously done.
3) Fixing the above mentioned data corruption.
- KASSERT that TX/RX command and data sizes match on transfers.
- Introduce a mutex ensuring that only one child device is running a SPI
transfer at a time. [1]
- Add preliminary, #ifdef'ed out support for setting the chip select. [1]
- Use the RX instead of the TX commando size when setting up the RX side
of a transfer.
- For controllers having SPI_SR_TXEMPTY, i.e. !RM9200, also wait for the
completion of the TX part of transfers before stopping the whole thing
again.
- Use DEVMETHOD_END. [1]
- Use NULL instead of 0 for pointers. [1, partially]

Additional testing by: Ian Lepore

Submitted by: Ian Lepore [1]
MFC after: 1 week


236373 01-Jun-2012 imp

Revert debug and other immature code accidentally committed in r236372.


236372 01-Jun-2012 imp

Initialize the clocks before we call cninit() so that the serial
console so initialized will work upon return from cninit. While this
is the very next line, other platforms setup all this stuff before
calling cninit. Also, initialize the SDRAM base register in the inner
block in at91_ramsize().


236308 30-May-2012 gber

Print userspace backtrace for current thread.

Reviewed by: imp
Obtained from: Semihalf


236307 30-May-2012 gber

Flush D and I caches after setting a breakpoint.

Reviewed by: imp
Obtained from: Semihalf


236215 29-May-2012 imp

Compute the master clock frequency, so we no longer need to have it
compiled into the kernel. This allows us to boot the same kernel on
machines with different master clock frequencies, so long as we can
determine the main clock frequency accurately. Cleanup the pmc clock
init function so it can be called in early boot so we can use the
serial port just after we call cninit.

# We have two calls to at91_pmc_clock_init for reasons unknown, that will
# be fixed later -- it is harmless for now.


236191 28-May-2012 marius

- Correct the comments regarding the sizes of some partitions in the
DataFlash.
- Add a mapping for the Nut/OS configuration DataFlash partition according
to the board manual (but not known to either Linux or U-Boot (patches).


235941 24-May-2012 bz

MFp4 bz_ipv6_fast:

in_cksum.h required ip.h to be included for struct ip. To be
able to use some general checksum functions like in_addword()
in a non-IPv4 context, limit the (also exported to user space)
IPv4 specific functions to the times, when the ip.h header is
present and IPVERSION is defined (to 4).

We should consider more general checksum (updating) functions
to also allow easier incremental checksum updates in the L3/4
stack and firewalls, as well as ponder further requirements by
certain NIC drivers needing slightly different pseudo values
in offloading cases. Thinking in terms of a better "library".

Sponsored by: The FreeBSD Foundation
Sponsored by: iXsystems

Reviewed by: gnn (as part of the whole)
MFC After: 3 days


235908 24-May-2012 gber

Return Supervisor SP and LR registers instead of User ones while in KDB thread.

Obtained from: Semihalf


235907 24-May-2012 gber

ARMs don't have motherboards.

Obtained from: Semihalf


235898 24-May-2012 mav

MFprojects/zfsd:
Generalize and unify ses device description.


235831 23-May-2012 fabient

Soft PMC support for ARM.
Callgraph is not captured, only current location.

Sample system wide profiling: "pmcstat -Sclock.hard -T"


235718 21-May-2012 imp

Be a little less magical, not that these values are likely to change...


235717 21-May-2012 imp

Implement pmap_mincore for arm. Now programs using it don't cause a
flood of console messages.

Reviewed by: alc@


235715 21-May-2012 imp

Another minor re-arrangement of the code: calcualte the master clock
frequency in the at91_pmc_clock_init rather than passing it in. Allow
for frequencies >= 21MHz by rounding to the nearest 500Hz (Idea from
Ian Lapore whose company uses a similar arrangement in their product).
at91_pmc_clock_init() is now nearly independent of the rest of the pmc
driver (which means we may be able to call it much earlier in boot
soon to eliminate the master clock config file requirement for printf
to work during early boot and also eliminate some interdependencies
with the device ordering which requires pmc to be the first device
added).


235698 20-May-2012 imp

Minor cleanup before some more major changes:
o main_clock_hz isn't used, eliminate it
o move main clock calculation code and table so we have only one ifdef.


235656 19-May-2012 marcel

Unbreak LINT for ARM: DEBUG is a kernel configuration option.


235611 18-May-2012 gber

Add localbus driver for Marvell's platforms.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235609 18-May-2012 gber

Add architecture dependent code to support NAND Framework on Marvell SoCs.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235348 12-May-2012 marius

Add glue/support for the SAM9XE512-based Ethernut 5 boards. Currently,
all integrated and on-board peripherals except the DataFlash (at91_spi(4)
and at45d(4) still need to be unb0rken) and NAND Flash (missing NAND
framework) are working.
AFAICT, this makes FreeBSD the first operating system besides Nut/OS
supporting Ethernut 5 out of tree.


235278 11-May-2012 imp

Remove unused cruft. We call through memcpy more directly when we
need to move the kernel, so we no longer need this.


235277 11-May-2012 imp

This comment has become unmoored from the code to which it applies.
Move it back.


235273 11-May-2012 imp

Remove obsolte big endian flag. It is no longer needed.


235271 11-May-2012 imp

Hack to unbreak boot2 for at91rm9200 boot loader. When the at91sam
code came in, it moved things around which wound up breaking the
build. We have to do this bit of a hack to avoid duplication of a lot
of #defines.


235234 10-May-2012 imp

Generate board id's from Linux's mach-types database for all arm
ports. This currently is a nop, but will soon be used to allow
support for multiple boards to be built into one kernel (starting with
AT91RM9200 and expanding out from there).


235072 06-May-2012 imp

Fix the MACHINE_ARCH for big endian arm to be armeb.


235062 05-May-2012 imp

I need to change uname -p, not uname -m, so back this out.
Also, fix a couple of style(9) issues while I'm here.

Submitted by: nathanw, bde


235050 05-May-2012 imp

Big endian arm boxes need to have a uname -m of armeb, not arm, so
that the bootstrap from source works correctly.

MFC after: 4 days


234931 02-May-2012 imp

Fix comment about what board this is really for left over from early
cut and paste.


234923 02-May-2012 imp

The PIT is really 16 bytes long (0x10) not 10 bytes long. Doesn't
matter much, since these defines are unused...

Obtained from: AT91SAM9G20 datasheet


234901 01-May-2012 marius

- Add missing locking in at91_usart_getc().
- Align the RX buffers on the cache line size, otherwise the requirement
of partial cache line flushes on every are pretty much guaranteed. [1]
- Make the code setting the RX timeout match its comment (apparently,
start and stop bits were missed in the previous calculation). [1]
- Cover the busdma operations in at91_usart_bus_{ipend,transmit}() with
the hardware mutex, too, so these don't race against each other.
- In at91_usart_bus_ipend(), reduce duplication in the code dealing with
TX interrupts.
- In at91_usart_bus_ipend(), turn the code dealing with RX interrupts
into an else-if cascade in order reduce its complexity and to improve
its run-time behavior.
- In at91_usart_bus_ipend(), add missing BUS_DMASYNC_PREREAD calls on
the RX buffer map before handing things over to the hardware again. [1]
- In at91_usart_bus_getsig(), used a variable of sufficient width for
storing the contents of USART_CSR.
- Use KOBJMETHOD_END.
- Remove an unused header.

Submitted by: Ian Lepore [1]
Reviewed by: Ian Lepore
MFC after: 1 week


234785 29-Apr-2012 dim

Add a convenience macro for the returns_twice attribute, and apply it to
the prototypes of the appropriate functions (getcontext, savectx,
setjmp, sigsetjmp and vfork).

MFC after: 2 weeks


234688 25-Apr-2012 stas

- Disable MMU before reconfiguring the pagetables in the trampoline code.
Otherwise we might end up overwriting the PTEs we're currently using
for some reason.

Reviewed by: cognet


234561 22-Apr-2012 marius

Interrupts must be disabled while handling a partial cache line flush,
as otherwise the interrupt handling code may modify data in the non-DMA
part of the cache line while we have it stashed away in the temporary
stack buffer, then we end up restoring a stale value.

PR: 160431
Submitted by: Ian Lepore
MFC after: 1 week


234560 22-Apr-2012 marius

- Add support for MCI1 revision 2xx controllers and a work-around for their
"Data Write Operation and number of bytes" erratum.
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.


234337 16-Apr-2012 andrew

Replace the C implementation of __aeabi_read_tp with an assembly version.
This ensures we follow the ABI by preserving registers r1-r3.

Reviewed by: jmallett, imp


234293 14-Apr-2012 marius

Generate an obviously missing STOP when having finished transmitting data.
This fixes communication with PCF8563.


234292 14-Apr-2012 marius

Add support for the Atmel SAM9XE familiy of microcontrollers, which
consist of a ARM926EJ-S processor core with up to 512 Kbytes of on-chip
flash. Tested with SAM9XE512.

This file was missed in r234291.


234291 14-Apr-2012 marius

Add support for the Atmel SAM9XE familiy of microcontrollers, which
consist of a ARM926EJ-S processor core with up to 512 Kbytes of on-chip
flash. Tested with SAM9XE512.


234281 14-Apr-2012 marius

- Try to bring these files closer to style(9).
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.


234006 07-Apr-2012 stas

- Revert part of r234005, which I did not intend to commit.
Sorry! :(


234005 07-Apr-2012 stas

- Add kernel config file for QEMU-emulated gumstix board.


234004 07-Apr-2012 stas

- Add new ARM kernel option QEMU_WORKAROUNDS which can be
used in the code which needs to implement some specific
behaviour when being run under QEMU.
- Make PXA UART probe code to work under QEMU gumstix, which
doesn't emulate all the ports properly.


233628 28-Mar-2012 fabient

Add software PMC support.

New kernel events can be added at various location for sampling or counting.
This will for example allow easy system profiling whatever the processor is
with known tools like pmcstat(8).

Simultaneous usage of software PMC and hardware PMC is possible, for example
looking at the lock acquire failure, page fault while sampling on
instructions.

Sponsored by: NETASQ
MFC after: 1 month


233271 21-Mar-2012 ed

Remove pty(4) from our kernel configurations.

As of FreeBSD 8, this driver should not be used. Applications that use
posix_openpt(2) and openpty(3) use the pts(4) that is built into the
kernel unconditionally. If it turns out high profile depend on the
pty(4) module anyway, I'd rather get those fixed. So please report any
issues to me.

The pty(4) module is still available as a kernel module of course, so a
simple `kldload pty' can be used to run old-style pseudo-terminals.


233013 15-Mar-2012 raj

Fix error check.

Submitted by: Lukasz Plachno
Obtained from: Semihalf


232619 06-Mar-2012 attilio

Disable the option VFS_ALLOW_NONMPSAFE by default on all the supported
platforms.
This will make every attempt to mount a non-mpsafe filesystem to the
kernel forbidden, unless it is expressely compiled with
VFS_ALLOW_NONMPSAFE option.

This patch is part of the effort of killing non-MPSAFE filesystems
from the tree.

No MFC is expected for this patch.


232512 04-Mar-2012 raj

Remove unused #defines. All this is now retrieved from the device tree.

MFC after: 1 week


232356 01-Mar-2012 jhb

- Change contigmalloc() to use the vm_paddr_t type instead of an unsigned
long for specifying a boundary constraint.
- Change bus_dma tags to use bus_addr_t instead of bus_size_t for boundary
constraints.

These allow boundary constraints to be fully expressed for cases where
sizeof(bus_addr_t) != sizeof(bus_size_t). Specifically, it allows a
driver to properly specify a 4GB boundary in a PAE kernel.

Note that this cannot be safely MFC'd without a lot of compat shims due
to KBI changes, so I do not intend to merge it.

Reviewed by: scottl


232295 29-Feb-2012 cognet

Make sure we do not provide the page 0 to the VM. It can't handle it properly,
because pmap_extract() returns 0 when there's no mapping.

PR: arm/154227
MFC after: 1 week


230475 23-Jan-2012 das

Add C11 macros describing subnormal numbers to float.h.

Reviewed by: bde


230455 22-Jan-2012 pjd

TDF_* flags should be used with td_flags field and TDP_* flags should be used
with td_pflags field. Correct two places where it was not the case.

Discussed with: kib
MFC after: 1 week


230366 20-Jan-2012 das

Add parentheses where required. Without them, `sizeof LDBL_MAX'
is a syntax error and shouldn't be, while `1 FLT_ROUNDS' isn't a
syntax error and should be. Thanks to bde for the examples.


230229 16-Jan-2012 das

Fix the value of float_t to match what is implied by FLT_EVAL_METHOD.


230198 16-Jan-2012 das

Fix the definition of FLT_EVAL_METHOD and some minor bugs.


230191 16-Jan-2012 das

Implement FLT_ROUNDS for arm. Some (all?) arm FPUs lack support for
dynamic rounding modes, but FPUless chips that use softfloat can support it
because everything is emulated anyway. (We presently have incomplete
support for hardware FPUs.)

Submitted by: Ian Lepore


230133 15-Jan-2012 uqs

Remove spurious 8bit chars, turning files into plain ASCII.


229639 05-Jan-2012 adrian

Add missing options so modules build/load correctly.


229125 31-Dec-2011 marius

Fix header pollution, possibly unbreaking the build of cfi_bus_ixp4xx.c
as part of cfi.ko.


228530 15-Dec-2011 raj

ARM pmap fixes:

- Write Buffers have to be drained after write to Page Table even if caches
are in write-through mode.

- Make sure to sync PTE in pmap_zero_page_generic().

Submitted by: Michal Mazur
Reviewed by: cognet
Obtained from: Semihalf
MFC after: 1 month


228522 15-Dec-2011 alc

Eliminate vestiges of page coloring.


228504 14-Dec-2011 raj

Make *intr{cnt,names} on ARM reside in data section, similar to other arches.

sintrnames and sintrcnt are initialized with non-zero values, which were
discarded by the .bss directive, so consumers like "vmstat -i" were not
getting correct data.

Submitted by: Lukasz Plachno
Obtained from: Semihalf
MFC after: 1 month


228483 14-Dec-2011 hselasky

Implement better support for USB controller suspend and resume.

This patch should remove the need for kldunload of USB
controller drivers at suspend and kldload of USB controller
drivers at resume.

This patch also fixes some build issues in avr32dci.c

MFC after: 2 weeks


228469 13-Dec-2011 ed

Replace __signed by signed.

The signed keyword is an integral part of the C syntax. There's no need
to use __signed.


228201 02-Dec-2011 jchandra

Fix OF_finddevice error return value in case of FDT.

According to the open firmware standard, finddevice call has to return
a phandle with value of -1 in case of error.

This commit is to:
- Fix the FDT implementation of this interface (ofw_fdt_finddevice) to
return (phandle_t)-1 in case of error, instead of 0 as it does now.
- Fix up the callers of OF_finddevice() to compare the return value with
-1 instead of 0 to check for errors.
- Since phandle_t is unsigned, the return value of OF_finddevice should
be checked with '== -1' rather than '<= 0' or '> 0', fix up these cases
as well.

Reported by: nwhitehorn

Reviewed by: raj
Approved by: raj, nwhitehorn


227849 22-Nov-2011 hselasky

Rename device_delete_all_children() into device_delete_children().

Suggested by: jhb @ and marius @
MFC after: 1 week


227843 22-Nov-2011 marius

- There's no need to overwrite the default device method with the default
one. Interestingly, these are actually the default for quite some time
(bus_generic_driver_added(9) since r52045 and bus_generic_print_child(9)
since r52045) but even recently added device drivers do this unnecessarily.
Discussed with: jhb, marcel
- While at it, use DEVMETHOD_END.
Discussed with: jhb
- Also while at it, use __FBSDID.


227730 19-Nov-2011 raj

Initial version of cesa(4) driver for Marvell crypto engine and security
accelerator.

The following algorithms and schemes are supported:
- 3DES, AES, DES
- MD5, SHA1

Obtained from: Semihalf
Written by: Piotr Ziecik


227701 19-Nov-2011 hselasky

Move the device_delete_all_children() function from usb_util.c
to kern/subr_bus.c. Simplify this function so that it no longer
depends on malloc() to execute. Identify a few other places where
it makes sense to use device_delete_all_children().

MFC after: 1 week


227333 08-Nov-2011 attilio

Introduce the option VFS_ALLOW_NONMPSAFE and turn it on by default on
all the architectures.
The option allows to mount non-MPSAFE filesystem. Without it, the
kernel will refuse to mount a non-MPSAFE filesytem.

This patch is part of the effort of killing non-MPSAFE filesystems
from the tree.

No MFC is expected for this patch.

Tested by: gianni
Reviewed by: kib


227309 07-Nov-2011 ed

Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.

The SYSCTL_NODE macro defines a list that stores all child-elements of
that node. If there's no SYSCTL_DECL macro anywhere else, there's no
reason why it shouldn't be static.


227293 07-Nov-2011 ed

Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.

This means that their use is restricted to a single C file.


226995 01-Nov-2011 marius

- Import the common MII bitbang'ing code from NetBSD and convert drivers to
take advantage of it instead of duplicating it. This reduces the size of
the i386 GENERIC kernel by about 4k. The only potential in-tree user left
unconverted is xe(4), which generally should be changed to use miibus(4)
instead of implementing PHY handling on its own, as otherwise it makes not
much sense to add a dependency on miibus(4)/mii_bitbang(4) to xe(4) just
for the MII bitbang'ing code. The common MII bitbang'ing code also is
useful in the embedded space for using GPIO pins to implement MII access.
- Based on lessons learnt with dc(4) (see r185750), add bus barriers to the
MII bitbang read and write functions of the other drivers converted in
order to ensure the intended ordering. Given that register access via an
index register as well as register bank/window switching is subject to the
same problem, also add bus barriers to the respective functions of smc(4),
tl(4) and xl(4).
- Sprinkle some const.

Thanks to the following testers:
Andrew Bliznak (nge(4)), nwhitehorn@ (bm(4)), yongari@ (sis(4) and ste(4))
Thanks to Hans-Joerg Sirtl for supplying hardware to test stge(4).

Reviewed by: yongari (subset of drivers)
Obtained from: NetBSD (partially)


226832 27-Oct-2011 kevlo

Check the return value of BUS_SETUP_INTR()

Reviewed by: imp


226607 21-Oct-2011 das

People porting FreeBSD to new architectures ought not have to
implement a deprecated FPU control interface in addition to the
standard one. To make this clearer, further deprecate ieeefp.h
by not declaring the function prototypes except on architectures
that implement them already.

Currently i386 and amd64 implement the ieeefp.h interface for
compatibility, and for fp[gs]etprec(), which doesn't exist on
most other hardware. Powerpc, sparc64, and ia64 partially implement
it and probably shouldn't, and other architectures don't implement it
at all.


226498 18-Oct-2011 des

Trace attempts to call restricted MD syscalls.


226443 16-Oct-2011 cognet

Fix 2 bugs :

- A race condition could happen if two threads were using RAS at the same time
as the code didn't reset RAS_END, the RAS code could believe we were not in
a RAS, when we were in fact.
- Using signed value logic to compare addresses wasn't such a good idea.

Many thanks to Ian to investigate on these issues.

Pointy hat to: cognet
PR: arm/161498
Submitted by: Ian Lepore <freebsd At damnhippie DOT dyndns dot org
MFC after: 1 week


226441 16-Oct-2011 cognet

Explicitely set ARM_RAS_START and ARM_RAS_END once the cacheline or the
page has been allocated, or we could end up using random values, and bad things
could happen.

PR: arm/161492
Submitted by: Ian Lepore <freebsd AT damnhippie dot dyndns DOT org>
MFC after: 1 week


226325 12-Oct-2011 thompsa

Name these gpio pins better, they are on an external PLD and not the same as
the cpu wired gpio.


226324 12-Oct-2011 thompsa

Dont just set the pin high when turning on output, use the current value. Also
let this value be set when in input mode.


226112 07-Oct-2011 kib

Remove unused define.

MFC after: 1 month


226034 05-Oct-2011 thompsa

Add missing newbus glue, this has never attached properly to gpiobus.


225995 04-Oct-2011 marcel

Properly guard definitions of DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ and
SGROWSIZ. They can be set in the kernel configuration file.


225991 04-Oct-2011 marcel

Fix build when DEBUG is defined in the kernel configuration file (e.g.
LINT).


225990 04-Oct-2011 marcel

Include opt_* headers first. Otherwise we can end up with redefined
symbols.


225988 04-Oct-2011 marcel

Fix build when DEBUG is defined (e.g. for LINT).


225973 04-Oct-2011 kib

Convert ARM to the syscallenter/syscallret system call sequence handlers.

Tested by: gber
MFC after: 1 month


225882 30-Sep-2011 kevlo

Remove pointless semicolons after label


225617 16-Sep-2011 kmacy

In order to maximize the re-usability of kernel code in user space this
patch modifies makesyscalls.sh to prefix all of the non-compatibility
calls (e.g. not linux_, freebsd32_) with sys_ and updates the kernel
entry points and all places in the code that use them. It also
fixes an additional name space collision between the kernel function
psignal and the libc function of the same name by renaming the kernel
psignal kern_psignal(). By introducing this change now we will ease future
MFCs that change syscalls.

Reviewed by: rwatson
Approved by: re (bz)


225482 11-Sep-2011 brueffer

Fix a zyd(4) comment typo that was copy+pasted into most kernel config files.

PR: 160276
Submitted by: MATSUMIYA Ryo <matsumiya@mma.club.uec.ac.jp>
Approved by: re (kib)
MFC after: 1 week


225418 06-Sep-2011 kib

Split the vm_page flags PG_WRITEABLE and PG_REFERENCED into atomic
flags field. Updates to the atomic flags are performed using the atomic
ops on the containing word, do not require any vm lock to be held, and
are non-blocking. The vm_page_aflag_set(9) and vm_page_aflag_clear(9)
functions are provided to modify afalgs.

Document the changes to flags field to only require the page lock.

Introduce vm_page_reference(9) function to provide a stable KPI and
KBI for filesystems like tmpfs and zfs which need to mark a page as
referenced.

Reviewed by: alc, attilio
Tested by: marius, flo (sparc64); andreast (powerpc, powerpc64)
Approved by: re (bz)


225214 27-Aug-2011 rwatson

Follow up to r225203 refining break-to-debugger run-time configuration
improvements:

(1) Implement new model in previously missed at91 UART driver
(2) Move BREAK_TO_DEBUGGER and ALT_BREAK_TO_DEBUGGER from opt_comconsole.h
to opt_kdb.h (spotted by np)
(3) Garbage collect now-unused opt_comconsole.h

MFC after: 3 weeks
Approved by: re (bz)


224746 09-Aug-2011 kib

- Move the PG_UNMANAGED flag from m->flags to m->oflags, renaming the flag
to VPO_UNMANAGED (and also making the flag protected by the vm object
lock, instead of vm page queue lock).
- Mark the fake pages with both PG_FICTITIOUS (as it is now) and
VPO_UNMANAGED. As a consequence, pmap code now can use use just
VPO_UNMANAGED to decide whether the page is unmanaged.

Reviewed by: alc
Tested by: pho (x86, previous version), marius (sparc64),
marcel (arm, ia64, powerpc), ray (mips)
Sponsored by: The FreeBSD Foundation
Approved by: re (bz)


224699 07-Aug-2011 rmacklem

Change all the sample kernel configurations to use
NFSCL, NFSD instead of NFSCLIENT, NFSSERVER since
NFSCL and NFSD are now the defaults. The client change is
needed for diskless configurations, so that the root
mount works for fstype nfs.
Reported by seanbru at yahoo-inc.com for i386/XEN.

Approved by: re (hrs)


224612 02-Aug-2011 attilio

Fix for arm and mips case the size of storage for sintrcnt/sintrnames.
It seems that "info as" is not much precise on what expect by pseudo-op
.word, by the way.

No MFC is previewed for this patch.

Tested by: andreast, pluknet
Approved by: re (kib)


224207 19-Jul-2011 attilio

Add the possibility to specify from kernel configs MAXCPU value.
This patch is going to help in cases like mips flavours where you
want a more granular support on MAXCPU.

No MFC is previewed for this patch.

Tested by: pluknet
Approved by: re (kib)


224187 18-Jul-2011 attilio

- Remove the eintrcnt/eintrnames usage and introduce the concept of
sintrcnt/sintrnames which are symbols containing the size of the 2
tables.
- For amd64/i386 remove the storage of intr* stuff from assembly files.
This area can be widely improved by applying the same to other
architectures and likely finding an unified approach among them and
move the whole code to be MI. More work in this area is expected to
happen fairly soon.

No MFC is previewed for this patch.

Tested by: pluknet
Reviewed by: jhb
Approved by: re (kib)


224051 15-Jul-2011 marcel

Do not call platform_gpio_init() early. It doesn't work because we do
not have enough information to reliably setup GPIO pins. Do it when
we attach the gpio driver. This prevents hangs and the need to fake
up a softc.


224050 15-Jul-2011 marcel

Set preload_addr_relocate accordingly so that preloaded modules and
images are properly relocated.


224049 15-Jul-2011 marcel

In pmap_protect(), don't call vm_page_dirty() if the page is unmanaged.


223692 30-Jun-2011 jonathan

Add some checks to ensure that Capsicum is behaving correctly, and add some
more explicit comments about what's going on and what future maintainers
need to do when e.g. adding a new operation to a sys_machdep.c.

Approved by: mentor(rwatson), re(bz)


223677 29-Jun-2011 alc

Add a new option, OBJPR_NOTMAPPED, to vm_object_page_remove(). Passing this
option to vm_object_page_remove() asserts that the specified range of pages
is not mapped, or more precisely that none of these pages have any managed
mappings. Thus, vm_object_page_remove() need not call pmap_remove_all() on
the pages.

This change not only saves time by eliminating pointless calls to
pmap_remove_all(), but it also eliminates an inconsistency in the use of
pmap_remove_all() versus related functions, like pmap_remove_write(). It
eliminates harmless but pointless calls to pmap_remove_all() that were being
performed on PG_UNMANAGED pages.

Update all of the existing assertions on pmap_remove_all() to reflect this
change.

Reviewed by: kib


223668 29-Jun-2011 jonathan

We may split today's CAPABILITIES into CAPABILITY_MODE (which has
to do with global namespaces) and CAPABILITIES (which has to do with
constraining file descriptors). Just in case, and because it's a better
name anyway, let's move CAPABILITIES out of the way.

Also, change opt_capabilities.h to opt_capsicum.h; for now, this will
only hold CAPABILITY_MODE, but it will probably also hold the new
CAPABILITIES (implying constrained file descriptors) in the future.

Approved by: rwatson
Sponsored by: Google UK Ltd


223665 29-Jun-2011 kevlo

Typo

Submitted by: Damjan Marion <damjan dot marion at gmail dot com>
MFC after: 3 days


223562 26-Jun-2011 kevlo

Remove duplicate header includes


223523 24-Jun-2011 cognet

Comment out AH_DEBUG, to get this kernel to compile, until AH_DEBUG is fixed.


222813 07-Jun-2011 attilio

etire the cpumask_t type and replace it with cpuset_t usage.

This is intended to fix the bug where cpu mask objects are
capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever
value. Anyway, as long as several structures in the kernel are
statically allocated and sized as MAXCPU, it is suggested to keep it
as low as possible for the time being.

Technical notes on this commit itself:
- More functions to handle with cpuset_t objects are introduced.
The most notable are cpusetobj_ffs() (which calculates a ffs(3)
for a cpuset_t object), cpusetobj_strprint() (which prepares a string
representing a cpuset_t object) and cpusetobj_strscan() (which
creates a valid cpuset_t starting from a string representation).
- pc_cpumask and pc_other_cpus are target to be removed soon.
With the moving from cpumask_t to cpuset_t they are now inefficient
and not really useful. Anyway, for the time being, please note that
access to pcpu datas is protected by sched_pin() in order to avoid
migrating the CPU while reading more than one (possible) word
- Please note that size of cpuset_t objects may differ between kernel
and userland. While this is not directly related to the patch itself,
it is good to understand that concept and possibly use the patch
as a reference on how to deal with cpuset_t objects in userland, when
accessing kernland members.
- KTR_CPUMASK is changed and now is represented through a string, to be
set as the example reported in NOTES.

Please additively note that no MAXCPU is bumped in this patch, but
private testing has been done until to MAXCPU=128 on a real 8x8x2(htt)
machine (amd64).

Please note that the FreeBSD version is not yet bumped because of
the upcoming pcpu changes. However, note that this patch is not
targeted for MFC.

People to thank for the time spent on this patch:
- sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested
several revision of the patches and really helped in improving
stability of this work.
- marius fixed several bugs in the sparc64 implementation and reviewed
patches related to ktr.
- jeff and jhb discussed the basic approach followed.
- kib and marcel made targeted review on some specific part of the
patch.
- marius, art, nwhitehorn and andreast reviewed MD specific part of
the patch.
- marius, andreast, gonzo, nwhitehorn and jceel tested MD specific
implementations of the patch.
- Other people have made contributions on other patches that have been
already committed and have been listed separately.

Companies that should be mentioned for having participated at several
degrees:
- Yahoo! for having offered the machines used for testing on big
count of CPUs.
- The FreeBSD Foundation for having sponsored my devsummit attendance,
which has been instrumental.
- Sandvine for having offered offices and infrastructure during
development.

(I really hope I didn't forget anyone, if it happened I apologize in
advance).


221855 13-May-2011 mdf

Move the ZERO_REGION_SIZE to a machine-dependent file, as on many
architectures (i386, for example) the virtual memory space may be
constrained enough that 2MB is a large chunk. Use 64K for arches
other than amd64 and ia64, with special handling for sparc64 due to
differing hardware.

Also commit the comment changes to kmem_init_zero_region() that I
missed due to not saving the file. (Darn the unfamiliar development
environment).

Arch maintainers, please feel free to adjust ZERO_REGION_SIZE as you
see fit.

Requested by: alc
MFC after: 1 week
MFC with: r221853


221844 13-May-2011 cognet

In pmap_change_wiring(), use the right argument for pmap_modify_pv().
It only worked because the only consumer calls pmap_change_wiring() to remove
the wiring.


221218 29-Apr-2011 jhb

Change rman_manage_region() to actually honor the rm_start and rm_end
constraints on the rman and reject attempts to manage a region that is out
of range.
- Fix various places that set rm_end incorrectly (to ~0 or ~0u instead of
~0ul).
- To preserve existing behavior, change rman_init() to set rm_start and
rm_end to allow managing the full range (0 to ~0ul) if they are not set by
the caller when rman_init() is called.


221207 29-Apr-2011 jhb

Fix build of this kernel config. The ath(4) bits need the 11n frame format
even though ar5416 isn't enabled.

Reviewed by: adrian


221173 28-Apr-2011 attilio

Add the watchdogs patting during the (shutdown time) disk syncing and
disk dumping.
With the option SW_WATCHDOG on, these operations are doomed to let
watchdog fire, fi they take too long.

I implemented the stubs this way because I really want wdog_kern_*
KPI to not be dependant by SW_WATCHDOG being on (and really, the option
only enables watchdog activation in hardclock) and also avoid to
call them when not necessary (avoiding not-volountary watchdog
activations).

Sponsored by: Sandvine Incorporated
Discussed with: emaste, des
MFC after: 2 weeks


221071 26-Apr-2011 mav

- Add shim to simplify migration to the CAM-based ATA. For each new adaX
device in /dev/ create symbolic link with adY name, trying to mimic old ATA
numbering. Imitation is not complete, but should be enough in most cases to
mount file systems without touching /etc/fstab.
- To know what behavior to mimic, restore ATA_STATIC_ID option in cases
where it was present before.
- Add some more details to UPDATING.


221025 25-Apr-2011 cognet

Typo fix


220982 24-Apr-2011 mav

Switch the GENERIC kernels for all architectures to the new CAM-based ATA
stack. It means that all legacy ATA drivers are disabled and replaced by
respective CAM drivers. If you are using ATA device names in /etc/fstab or
other places, make sure to update them respectively (adX -> adaY,
acdX -> cdY, afdX -> daY, astX -> saY, where 'Y's are the sequential
numbers for each type in order of detection, unless configured otherwise
with tunables, see cam(4)).

ataraid(4) functionality is now supported by the RAID GEOM class.
To use it you can load geom_raid kernel module and use graid(8) tool
for management. Instead of /dev/arX device names, use /dev/raid/rX.


220836 19-Apr-2011 pluknet

Call init_param1() much earlier, so that msgbufsize is non-zero when we want
to map and use the msgbuf.

Reviewed by: cognet
MFC after: 1 week


220774 18-Apr-2011 philip

Delete mistakenly added sys/files.ts7800
Add mistakenly forgotten sys/arm/conf/TS7800

Not sure how this happened. Apologies for the repo-churn.

Submitted by: glebius
Pointy hat to: philip


220653 15-Apr-2011 philip

Add basic support for the Marvell Orion TS-7800.

Submitted by: Kristof Provost <kristof -at- freebsd.org>


220558 12-Apr-2011 hselasky

We don't need to call EOWRITE4(sc, EHCI_USBINTR, 0) directly from each EHCI
bus driver at detach, hence ehci_detach() does exactly this since r199718.

Submitted by: Luiz Otavio O Souza
MFC after: 7 days
Approved by: thompsa (mentor)


220303 03-Apr-2011 hselasky

- Correct EHCI interrupt disabling at detach.

Submitted by: Luiz Otavio O Souza
MFC after: 7 days
Approved by: thompsa (mentor)


220185 31-Mar-2011 adrian

Break out the ath PCI logic into a separate device/module.

Introduce the AHB glue for Atheros embedded systems. Right now it's
hard-coded for the AR9130 chip whose support isn't yet in this HAL;
it'll be added in a subsequent commit.

Kernel configuration files now need both 'ath' and 'ath_pci' devices; both
modules need to be loaded for the ath device to work.


219684 16-Mar-2011 marcel

Fix mv_gpio_in() for pin numbers that occupy bits 8-31 in GPIO registers.
The compiler will truncate the 32-bit return value of mv_gpio_value_get()
to match the 8-bit return value of mv_gpio_in(). A conditional expression
is used to have mv_gpio_in() always return 0 or 1 instead.


219653 14-Mar-2011 jkim

Make get_cyclecount(9) little bit more useful where binuptime(9) is used.


219405 08-Mar-2011 dchagin

Extend struct sysvec with new method sv_schedtail, which is used for an
explicit process at fork trampoline path instead of eventhadler(schedtail)
invocation for each child process.

Remove eventhandler(schedtail) code and change linux ABI to use newly added
sysvec method.

While here replace explicit comparing of module sysentvec structure with the
newly created process sysentvec to detect the linux ABI.

Discussed with: kib

MFC after: 2 Week


219134 01-Mar-2011 rwatson

Continue to introduce Capsicum capability mode:

White list sysarch calls allowed in capability mode; arguably, there
should be some link between the capability mode model and the privilege
model here. Sysarch is a morass similar to ioctl, in many senses.

Submitted by: anderson
Discussed with: benl, kris, pjd
Sponsored by: Google, Inc.
Obtained from: Capsicum Project
MFC after: 3 months


219025 25-Feb-2011 obrien

Add a real dependency on the microcode.
Now when one does 'make kernel ; make kernel' the second invocation
only does: `kernel.ko' is up to date.
rather than reproduce all the binary microcode files and relink the kernel.
[continuation of r212429]


218913 21-Feb-2011 cognet

Get myself a brain, move the call to init_param1() before the first use in
at91_machdep.c, and do it for the files I forgot the first time

Reported by: andrew
Submitted by: pluknet


218909 21-Feb-2011 brucec

Fix typos - remove duplicate "the".

PR: bin/154928
Submitted by: Eitan Adler <lists at eitanadler.com>
MFC after: 3 days


218780 17-Feb-2011 marcel

Fix the R_ARM_ABS32 relocation implementation. The memory address
contains the addend that we need to include.

Obtained from: Juniper Networks.
Fixed by: Santhanakrishnan Balraj <sbalraj@juniper.net>


218773 17-Feb-2011 alc

Remove pmap fields that are either unused or not fully implemented.

Discussed with: kib


218667 13-Feb-2011 cognet

Oops, wasn't supposed to commit this.


218666 13-Feb-2011 cognet

Call init_param1() much earlier, so that msgbufsize is non-zero when we want
to map and use the msgbuf.


218482 09-Feb-2011 jhb

Whitespace tweak.


218427 08-Feb-2011 marcel

In arm_get_next_irq(), use the last IRQ argument in order to prevent
a hard hang due to an interrupt storm or stuck interrupt pin. We
return the next IRQ that is larger than the last one returned and
in doing so give all interrupts a fair chance of being handled.
Consequently, we're able to break into the kernel debugger in such
an event.


218426 08-Feb-2011 marcel

o Make sure to mask off timer1 interrupts. It's not necessarily
masked-off by the firmware.
o In DELAY(). Make sure we have an inner-loop body that the compiler
cannot eliminate. While timing does not have to be perfect, the
loops must be there to have at least some notion of delay.

Obtained from: Juniper Networks


218388 07-Feb-2011 marcel

Remove use_high from the softc and simply check the number of GPIO
pins to determine whether there's a high register set or not. This
allows platform_gpio_init() to work without duplicating the work
done in the attach method.


218387 07-Feb-2011 ticso

unbreak mutlicast hash creation for the second time.
at91_emac hardware is *not* using ether_crc32_be algorithm!


218311 05-Feb-2011 imp

phys_addr is a PA not a VA so declare it as a vm_paddr_t not a vm_offset_t.


218310 05-Feb-2011 imp

Make md_tp a register_t not a void *. This will keep us from
accidentally dereferencng it and might be one fewer things to change
if arm64 happens...

Submitted by: rwatson's question on irc...


218228 03-Feb-2011 marcel

The FDT describes the host controller directly. There's no need to
get properties from the parent. The parent is in fact the FDT bus
itself and will therefore not have the properties we're looking
for.

Sponsored by: Juniper Networks


218227 03-Feb-2011 marcel

Accept r1 as having the metadata pointer argument if r0 is 0.
This provides backward compatibility with Juniper loaders.

Sponsored by: Juniper Networks


218195 02-Feb-2011 mdf

Put the general logic for being a CPU hog into a new function
should_yield(). Use this in various places. Encapsulate the common
case of check-and-yield into a new function maybe_yield().

Change several checks for a magic number of iterations to use
should_yield() instead.

MFC after: 1 week


218073 29-Jan-2011 marcel

Introduce macro FDT_MAP_IRQ to map from an interrupt controller and
interrupt pin pair to a global IRQ number. When multiple PICs exist
on a board, the interrupt pin alone is not unique.


218054 29-Jan-2011 andrew

Move the load address of the kernel to the start of KVA as the
s3c24x0 copy of initarm expects the kernel to be loaded there.

Approved by: imp (mentor)


217709 22-Jan-2011 marcel

Fix r217688. We need to call init_param1() before we use msgbufsize,
now that the size of the message buffer is a tunable.


217708 22-Jan-2011 marcel

Fix backtraces by defining ksym_start & ksym_end if DDB is
defined. The kernel linker doesn't deal with symbols of
type NOTYPE and typically gives the wrong symbol ($a) for
local symbols.

Obtained from: Juniper Networks, Inc.


217688 21-Jan-2011 pluknet

Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.

Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe


217561 18-Jan-2011 kib

For architectures not using direct map , and requiring real KVA page for
sf buf allocation, use wakeup() instead of wakeup_one() to notify sf
buffer waiters about free buffer.

sf_buf_alloc() calls msleep(PCATCH) when SFB_CATCH flag was given,
and for simultaneous wakeup and signal delivery, msleep() returns
EINTR/ERESTART despite the thread was selected for wakeup_one(). As
result, we loose a wakeup, and some other waiter will not be woken up.

Reported and tested by: az
Reviewed by: alc, jhb
MFC after: 1 week


217519 17-Jan-2011 jkim

Remove empty dev_mem_md_init() stubs.


217515 17-Jan-2011 jkim

Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set().
Compile sys/dev/mem/memutil.c for all supported platforms and remove now
unnecessary dev_mem_md_init(). Consistently define mem_range_softc from
mem.c for all platforms. Add missing #include guards for machine/memdev.h
and sys/memrange.h. Clean up some nearby style(9) nits.

MFC after: 1 month


217290 11-Jan-2011 marcel

Don't re-use MODINFOMD_BOOTINFO as MODINFOMD_DTBP. It breaks
compatibility without any means for the kernel to work with
an older loader.


217265 11-Jan-2011 jhb

Remove unneeded includes of <sys/linker_set.h>. Other headers that use
it internally contain nested includes.

Reviewed by: bde


217192 09-Jan-2011 kib

Move repeated MAXSLP definition from machine/vmparam.h to sys/vmmeter.h.
Update the outdated comments describing MAXSLP and the process
selection algorithm for swap out.

Comments wording and reviewed by: alc


217147 08-Jan-2011 tijl

On mixed 32/64 bit architectures (mips, powerpc) use __LP64__ rather than
architecture macros (__mips_n64, __powerpc64__) when 64 bit types (and
corresponding macros) are different from 32 bit. [1]

Correct the type of INT64_MIN, INT64_MAX and UINT64_MAX.

Define (U)INTMAX_C as an alias for (U)INT64_C matching the type definition
for (u)intmax_t. Do this on all architectures for consistency.

Suggested by: bde [1]
Approved by: kib (mentor)


217146 08-Jan-2011 tijl

On 32 bit architectures define (u)int64_t as (unsigned) long long instead
of (unsigned) int __attribute__((__mode__(__DI__))). This aligns better
with macros such as (U)INT64_C, (U)INT64_MAX, etc. which assume (u)int64_t
has type (unsigned) long long.

The mode attribute was used because long long wasn't standardised until
C99. Nowadays compilers should support long long and use of the mode
attribute is discouraged according to GCC Internals documentation.

The type definition has to be marked with __extension__ to support
compilation with "-std=c89 -pedantic".

Discussed with: bde
Approved by: kib (mentor)


217145 08-Jan-2011 tijl

Fix types of some values in machine/_limits.h.

On some architectures UCHAR_MAX and USHRT_MAX had type unsigned int.
However, lacking integer suffixes for types smaller than int, their type
should correspond to that of an object of type unsigned char (or short)
when used in an expression with objects of type int. In that case unsigned
char (short) are promoted to int (i.e. signed) so the type of UCHAR_MAX and
USHRT_MAX should also be int.

Where MIN/MAX constants implicitly have the correct type the suffix has
been removed.

While here, correct some comments.

Reviewed by: bde
Approved by: kib (mentor)


217128 07-Jan-2011 tijl

Remove unused support for 64 bit long on 32 bit architectures.

It was used mainly to discover and fix some 64-bit portability problems
before 64-bit arches were widely available.

Discussed with: bde
Approved by: kib (mentor)


217097 07-Jan-2011 kib

Add AT_STACKPROT elf aux vector. Will be used to inform rtld about the
initial stack protection set by the kernel image activator.


217072 06-Jan-2011 jhb

Remove bogus usage of INTR_FAST. "Fast" interrupts are now indicated by
registering a filter handler rather than a threaded handler. Also remove
a bogus use of INTR_MPSAFE for a filter.


217069 06-Jan-2011 jhb

- Add a proper return value to mv_gpio_intr().
- Remove an obsolete use of INTR_FAST.


217062 06-Jan-2011 jhb

- Use macbstart_locked() directly instead of deferring it to a task.
- Expand locking scope in interrupt handler.
- Flesh out the detach routine.

Reviewed by: cognet


217036 06-Jan-2011 imp

Remove support for SKYEYE simulator


217032 05-Jan-2011 imp

Remove ancient simulation code. Skyeye simulation never really worked
quite right and hasn't been used in ages and is likely broken. QEMU
with GUMSTIX is a more promising road to FreeBSD/arm in emulation
anyway.

Reviewed by: cognet@


216681 23-Dec-2010 imp

IXP4XX_GPIO_{,UN}LOCK() don't take args. Remove the sc here to make
this compile again.


216227 06-Dec-2010 kevlo

Fix double ;;


216143 03-Dec-2010 brucec

Revert r216134. This checkin broke platforms where bus_space are macros:
they need to be a single statement, and do { } while (0) doesn't work in this
situation so revert until a solution can be devised.


216134 02-Dec-2010 brucec

Disallow passing in a count of zero bytes to the bus_space(9) functions.

Passing a count of zero on i386 and amd64 for [I386|AMD64]_BUS_SPACE_MEM
causes a crash/hang since the 'loop' instruction decrements the counter
before checking if it's zero.

PR: kern/80980
Discussed with: jhb


215319 14-Nov-2010 thompsa

Provide a mutex around the read/modify/write of the IXP425_GPIO_*
registers. Giant was used in some places, but not all.


215142 11-Nov-2010 thompsa

Add a GPIO driver for the Gateworks Cambria platform.

The external gpio pins are connected to a PLD on the i2c bus, unfortunatley
this device does not conform by failing to send an ack after each byte written.
The iicbb driver will abort the transfer when the address is not ack'd and it
would introduce a lot of churn to be able to pass a flag down to
iicbb_start/iicbb_write. Instead we do bad things by grabbing the iicbus but
then doing our own bit banging.


215124 11-Nov-2010 ticso

add hint for at45d flash device sitting of spibus0


215054 09-Nov-2010 jhb

- Remove <machine/mutex.h>. Most of the headers were empty, and the
contents of the ones that were not empty were stale and unused.
- Now that <machine/mutex.h> no longer exists, there is no need to allow it
to override various helper macros in <sys/mutex.h>.
- Rename various helper macros for low-level operations on mutexes to live
in the _mtx_* or __mtx_* namespaces. While here, change the names to more
closely match the real API functions they are backing.
- Drop support for including <sys/mutex.h> in assembly source files.

Suggested by: bde (1, 2)


215034 09-Nov-2010 brucec

Fix typos.

PR: bin/148894
Submitted by: olgeni


215031 09-Nov-2010 kevlo

Minor cosmetic changes


214972 08-Nov-2010 kevlo

Intel IXP425 SoC is based on the ARMv5TE architecture

MFC after: 3 days


214948 07-Nov-2010 thompsa

Remove line for the uncommitted Cambria gpio drive that snuck in with r214946.


214946 07-Nov-2010 thompsa

Hook up the five gpio pins on the Avila board to the gpio framework. There are
actually 16 I/O lines but the other ones are used for system devices and
interrupts.

The IXP4XX platform can set interrupts on these pins for
high/low/rising/falling/transitional but this is not implemented yet.

The Cambria has the same interface but as all the pins are assigned to system
functions the gpio header is toggled via a PLD on the i2c bus and is not
supported by this commit.


214835 05-Nov-2010 jhb

Adjust the order of operations in spinlock_enter() and spinlock_exit() to
work properly with single-stepping in a kernel debugger. Specifically,
these routines have always disabled interrupts before increasing the nesting
count and restored the prior state of interrupts after decreasing the nesting
count to avoid problems with a nested interrupt not disabling interrupts
when acquiring a spin lock. However, trap interrupts for single-stepping
can still occur even when interrupts are disabled. Now the saved state of
interrupts is not saved in the thread until after interrupts have been
disabled and the nesting count has been increased. Similarly, the saved
state from the thread cannot be read once the nesting count has been
decreased to zero. To fix this, use temporary variables to store interrupt
state and shuffle it between the thread's MD area and the appropriate
registers.

In cooperation with: bde
MFC after: 1 month


214648 01-Nov-2010 cognet

Try to be a little smart at guessing where _start is located in flash, instead
of relying on a binutils bug.

Reported by: dim


214016 18-Oct-2010 mav

Set of legacy mode SATA enchancements:
- Implement proper combined mode decoding for Intel controllers to properly
identify SATA and PATA channels and associate ATA channels with SATA ports.
This fixes wrong reporting and in some cases hard resets to wrong SATA ports.
- Improve SATA registers support to handle hot-plug events and potentially
interface errors. For ICH5/6300ESB chipsets these registers accessible via
PCI config space. For later ones they may be accessible via PCI BAR(5).
- For controllers not generating interrupts on hot-plug events, implement
periodic status polling. Use it to detect hot-plug on Intel and VIA
controllers. Same probably could also be used for Serverworks and SIS.


213896 15-Oct-2010 marius

Remove a device_printf() accidentally left in r213894.

Submitted by: jhb


213894 15-Oct-2010 marius

Converted the remainder of the NIC drivers to use the mii_attach()
introduced in r213878 instead of mii_phy_probe(). Unlike r213893 these
are only straight forward conversions though.

Reviewed by: yongari


213893 15-Oct-2010 marius

Convert the PHY drivers to honor the mii_flags passed down and convert
the NIC drivers as well as the PHY drivers to take advantage of the
mii_attach() introduced in r213878 to get rid of certain hacks. For
the most part these were:
- Artificially limiting miibus_{read,write}reg methods to certain PHY
addresses; we now let mii_attach() only probe the PHY at the desired
address(es) instead.
- PHY drivers setting MIIF_* flags based on the NIC driver they hang
off from, partly even based on grabbing and using the softc of the
parent; we now pass these flags down from the NIC to the PHY drivers
via mii_attach(). This got us rid of all such hacks except those of
brgphy() in combination with bce(4) and bge(4), which is way beyond
what can be expressed with simple flags.

While at it, I took the opportunity to change the NIC drivers to pass
up the error returned by mii_attach() (previously by mii_phy_probe())
and unify the error message used in this case where and as appropriate
as mii_attach() actually can fail for a number of reasons, not just
because of no PHY(s) being present at the expected address(es).

Reviewed by: jhb, yongari


213499 06-Oct-2010 cognet

Add the QILA9G20 config files.

Submitted by: Greg Ansley


213498 06-Oct-2010 cognet

Add support for the AT91SAM9260

Submitted by: Greg Ansley


213497 06-Oct-2010 cognet

Add the AT91SAM9G20EK config files.

Submitted by: Greg Ansley


213496 06-Oct-2010 cognet

if_ate.c:

* Support for sam9 "EMAC" controller.
* Support for rmii interface to phy.

at91.c & at91sam9.c:

* Eliminate separate at91sam9.c file.
* Add new devices to at91sam9_devs table.

at91_machdep.c & at at91sam9_machdep.c:

* Automatic chip type determination.
* Remove compile time chip dependencies.
* Eliminate separate at91sam9_machdep.c file.

at91_pmc.c:

* Corrected support for all of the sam926? and sam9g20 chips.
* Remove compile time chip dependencies.

My apologies to Greg for taking so long to take care of it.


213251 28-Sep-2010 ticso

fix outdated comment


213203 27-Sep-2010 ticso

The TWI controller automatically stops if we don't fill up with new data in
time.


213201 27-Sep-2010 ticso

fix off by one error for twi reads with len != 1.
STOP must be requested before the last byte is received.


212825 18-Sep-2010 mav

Add basic cpu_sleep() support for Marvell SoCs. This drops my SheevaPlug's
heatsink termperature in open air from 49C to 43C when idle.


212823 18-Sep-2010 mav

Clear timer interrupt status before calling callback, not after it,
This fixes timer interrupt losses, fatal in one-shot mode.


212507 12-Sep-2010 cognet

In pmap_remove_all(), do not decrease pm_stats.wired_count if the mapping was
wired, as it's been done later in pmap_nuke_pv().

Submitted by: Mark Tinguely


212413 10-Sep-2010 avg

bus_add_child: change type of order parameter to u_int

This reflects actual type used to store and compare child device orders.
Change is mostly done via a Coccinelle (soon to be devel/coccinelle)
semantic patch.
Verified by LINT+modules kernel builds.

Followup to: r212213
MFC after: 10 days


212332 08-Sep-2010 emax

Add custom kernel configuration and device tree source files for
Seagate FreeAgent DockStar(tm) device. It seems to be a dumb down
version of Marvell SheevaPlug. Device tree source file could use
more tweaking, but at least it wll network boot and run FreeBSD/arm.


211412 17-Aug-2010 kib

Supply some useful information to the started image using ELF aux vectors.
In particular, provide pagesize and pagesizes array, the canary value
for SSP use, number of host CPUs and osreldate.

Tested by: marius (sparc64)
MFC after: 1 month


211197 11-Aug-2010 jhb

Update various places that store or manipulate CPU masks to use cpumask_t
instead of int or u_int. Since cpumask_t is currently u_int on all
platforms this should just be a cosmetic change.


210550 27-Jul-2010 jhb

Very rough first cut at NUMA support for the physical page allocator. For
now it uses a very dumb first-touch allocation policy. This will change in
the future.
- Each architecture indicates the maximum number of supported memory domains
via a new VM_NDOMAIN parameter in <machine/vmparam.h>.
- Each cpu now has a PCPU_GET(domain) member to indicate the memory domain
a CPU belongs to. Domain values are dense and numbered from 0.
- When a platform supports multiple domains, the default freelist
(VM_FREELIST_DEFAULT) is split up into N freelists, one for each domain.
The MD code is required to populate an array of mem_affinity structures.
Each entry in the array defines a range of memory (start and end) and a
domain for the range. Multiple entries may be present for a single
domain. The list is terminated by an entry where all fields are zero.
This array of structures is used to split up phys_avail[] regions that
fall in VM_FREELIST_DEFAULT into per-domain freelists.
- Each memory domain has a separate lookup-array of freelists that is
used when fulfulling a physical memory allocation. Right now the
per-domain freelists are listed in a round-robin order for each domain.
In the future a table such as the ACPI SLIT table may be used to order
the per-domain lookup lists based on the penalty for each memory domain
relative to a specific domain. The lookup lists may be examined via a
new vm.phys.lookup_lists sysctl.
- The first-touch policy is implemented by using PCPU_GET(domain) to
pick a lookup list when allocating memory.

Reviewed by: alc


210458 24-Jul-2010 andrew

Allow external interrupts.

- Set the external pin to interrupt in bus_setup_intr
- Implement bus_config_intr for external interrupts
- Extend arm_{,un}mask_irq to work with external interrupts

Approved by: imp (mentor)


210397 22-Jul-2010 andrew

Add the s3c24x0 real time clock driver

Approved by: imp (mentor)


210396 22-Jul-2010 andrew

Rework how device memory is allocated on the s3c24x0 CPU's.

The device virtual addresses are now able to be allocated at runtime rather
than from the static pmap_devmap at boot. The only exception is memory
required before we have had a chance to dynamically allocate it.

While here reduce the space between the statically allocated devices by
reducing the distance between the virtual addresses.

Approved by: imp (mentor)


210298 20-Jul-2010 mav

Fix several un-/signedness bugs of r210290 and r210293. Add one more check.


210293 20-Jul-2010 mav

Refactor Marvell ARM SoC timer driver to the new timer infrastructure.


210249 19-Jul-2010 raj

Now that we are fully FDT-driven on MRVL platforms, remove PHYSMEM_SIZE option.


210247 19-Jul-2010 raj

Eliminate FDT_IMMR_VA define.

This removes platform dependencies from <machine>/fdt.h for the benfit of
portability.


210246 19-Jul-2010 raj

Move MRVL FDT fixups and PIC decode routine to a platform specific area.

This allows for better encapsulation (and eliminates generic fdt_arm.c, at
least for now).


210040 14-Jul-2010 cognet

Import preliminary support for Atmel AT91SAM9G20 cpu, and the Hot-e HL201.
This fine work was done by Yohanes Nugroho <yohanes a gmail dot com>
Many thanks to John Nicholls and Thinlinx for providing sample hardware.


209909 11-Jul-2010 raj

Get rid of bootinfo for good in loader (U-Boot-based) and ARM.

For FDT-enabled platforms the device tree is a modern replacement for bootinfo
config data.


209613 30-Jun-2010 jhb

Move prototypes for kern_sigtimedwait() and kern_sigprocmask() to
<sys/syscallsubr.h> where all other kern_<syscall> prototypes live.


209232 16-Jun-2010 raj

Move ARM nexus rman initialization to attach routine.

This fixes a panic, which started to trigger after r209129 cleanup.

Submitted by: Andrew Turner


209223 15-Jun-2010 cognet

Turn off cache if there's more than one kernel mapping, and one is writable.

Submitted by: Mark Tinguely


209161 14-Jun-2010 raj

Temporarily bring back the ARM bootinfo (and make tinderbox happy).

BI will be eliminated for good when powerpc transition to FDT is complete.


209131 13-Jun-2010 raj

Convert Marvell ARM platforms to FDT convention.

The following systems are involved:

- DB-88F5182
- DB-88F5281
- DB-88F6281
- DB-78100
- SheevaPlug

This overhaul covers the following major changes:

- All integrated peripherals drivers for Marvell ARM SoC, which are
currently in the FreeBSD source tree are reworked and adjusted so they
derive config data out of the device tree blob (instead of hard coded /
tabelarized values).

- Since the common FDT infrastrucutre (fdtbus, simplebus) is used we say
good by to obio / mbus drivers and numerous hard-coded config data.

Note that world needs to be built WITH_FDT for the affected platforms.

Reviewed by: imp
Sponsored by: The FreeBSD Foundation.


209130 13-Jun-2010 raj

Initial FDT infrastructure elements for ARM.

Reviewed by: imp
Sponsored by: The FreeBSD Foundation


209129 13-Jun-2010 raj

Improve style.


209048 11-Jun-2010 alc

Relax one of the new assertions in pmap_enter() a little. Specifically,
allow pmap_enter() to be performed on an unmanaged page that doesn't have
VPO_BUSY set. Having VPO_BUSY set really only matters for managed pages.
(See, for example, pmap_remove_write().)


208990 10-Jun-2010 alc

Reduce the scope of the page queues lock and the number of
PG_REFERENCED changes in vm_pageout_object_deactivate_pages().
Simplify this function's inner loop using TAILQ_FOREACH(), and shorten
some of its overly long lines. Update a stale comment.

Assert that PG_REFERENCED may be cleared only if the object containing
the page is locked. Add a comment documenting this.

Assert that a caller to vm_page_requeue() holds the page queues lock,
and assert that the page is on a page queue.

Push down the page queues lock into pmap_ts_referenced() and
pmap_page_exists_quick(). (As of now, there are no longer any pmap
functions that expect to be called with the page queues lock held.)

Neither pmap_ts_referenced() nor pmap_page_exists_quick() should ever
be passed an unmanaged page. Assert this rather than returning "0"
and "FALSE" respectively.

ARM:

Simplify pmap_page_exists_quick() by switching to TAILQ_FOREACH().

Push down the page queues lock inside of pmap_clearbit(), simplifying
pmap_clear_modify(), pmap_clear_reference(), and pmap_remove_write().
Additionally, this allows for avoiding the acquisition of the page
queues lock in some cases.

PowerPC/AIM:

moea*_page_exits_quick() and moea*_page_wired_mappings() will never be
called before pmap initialization is complete. Therefore, the check
for moea_initialized can be eliminated.

Push down the page queues lock inside of moea*_clear_bit(),
simplifying moea*_clear_modify() and moea*_clear_reference().

The last parameter to moea*_clear_bit() is never used. Eliminate it.

PowerPC/BookE:

Simplify mmu_booke_page_exists_quick()'s control flow.

Reviewed by: kib@


208846 05-Jun-2010 alc

Don't set PG_WRITEABLE in pmap_enter() unless the page is managed.

Correct a typo in a nearby comment on sparc64.


208688 01-Jun-2010 alc

In pmap_enter_locked(), don't require the vector page to be VPO_BUSY.


208574 26-May-2010 alc

Push down page queues lock acquisition in pmap_enter_object() and
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


208538 25-May-2010 raj

Initial loader(8) support for Flattened Device Tree.

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


208504 24-May-2010 alc

Roughly half of a typical pmap_mincore() implementation is machine-
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)


208453 23-May-2010 kib

Reorganize syscall entry and leave handling.

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


208175 16-May-2010 alc

On entry to pmap_enter(), assert that the page is busy. While I'm
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.


208052 14-May-2010 cognet

Catchup with new prototype for db_printf().


207954 12-May-2010 kevlo

The FA526 belongs to the ARM9TDMI family


207796 08-May-2010 alc

Push down the page queues into vm_page_cache(), vm_page_try_to_cache(), and
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.


207611 04-May-2010 kevlo

Add support for FA626TE.
Tested on GM8181 development board.


207554 03-May-2010 sobomax

Add new tunable 'net.link.ifqmaxlen' to set default send interface
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


207536 02-May-2010 mav

Import mvs(4) - Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA controllers
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.


207410 30-Apr-2010 kmacy

On Alan's advice, rather than do a wholesale conversion on a single
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


207269 27-Apr-2010 kib

Style: use #define<TAB> instead of #define<SPACE>.

Noted by: bde, pluknet gmail com
MFC after: 11 days


207155 24-Apr-2010 alc

Resurrect pmap_is_referenced() and use it in mincore(). Essentially,
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!


207152 24-Apr-2010 kib

Move the constants specifying the size of struct kinfo_proc into
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


207077 22-Apr-2010 thompsa

Change USB_DEBUG to #ifdef and allow it to be turned off. Previously this had
the illusion of a tunable setting but was always turned on regardless.

MFC after: 1 week


206404 08-Apr-2010 imp

Add BUS_SPACE_UNRESTRICTED and define it to be ~0, just like all the
other platforms.


206054 01-Apr-2010 mav

Oops! Wrong copy-paste in r206053.


206053 01-Apr-2010 mav

Fill extended ATA command registers in cPRD to support 48bit commands.


205864 29-Mar-2010 imp

Build modules for this config to make sure they stay buildable...


205705 26-Mar-2010 rpaulo

Pass the correct pointer to fled_cb().


205642 25-Mar-2010 nwhitehorn

Change the arguments of exec_setregs() so that it receives a pointer
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


205425 21-Mar-2010 cognet

Make sure we insert and remove the PV entries related to unmanaged kernel
mappings into the kernel pmap, not into the pmap related to the
pmap_enter_pv()/pmap_remove_pv() call.


205354 20-Mar-2010 imp

Add support for the Samsung S3C2xx0 family of ARM SoCs written by
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


205103 12-Mar-2010 ticso

fix type in comment


205028 11-Mar-2010 raj

Fix ARM cache handling yet more.

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


205027 11-Mar-2010 raj

Let detailed info about CPU features print on Marvell Sheeva CPU as well.

Provide missing entry in the cpu_classes[].

Reported by: Maks Verver
MFC after: 1 week


204764 05-Mar-2010 raj

Provide correct TCLK value for Kirkwood A1 silicon revision.

While there improve SOC ID output accordingly.

Obtained from: Semihalf
MFC after: 1 week


204476 28-Feb-2010 ticso

simplify hash calculation


204463 28-Feb-2010 ticso

remove debug leftover


204462 28-Feb-2010 ticso

Fix multicast hashes.
Atmel uses a simple xor hash instead of the typical crc based one.


204283 24-Feb-2010 raj

Do not force verbose and single mode in non-metadata boot case.

We want to go multi-user by default also in case of booting without loader(8).


204280 24-Feb-2010 brucec

Update the commented out option for omitting the sysctl descriptions; it
was committed as NO_SYSCTL_DESCR.

Approved by: rrs (mentor)


204198 22-Feb-2010 rpaulo

Fix previous commit: led_func() doesn't exist, it should be fled_cb().

Pointed out by: bz


204122 20-Feb-2010 kevlo

Show the cpu info for fa526

Submitted by: Yohanes Nugroho <yohanes at gmail dot com>


204121 20-Feb-2010 kevlo

Correct both FA526/FA626TE cpu ids since the cpu id is always
masked with 0xfffffff0


203974 16-Feb-2010 imp

The NetBSD Foundation has granted permission to remove clauses 3 and 4.

Obtained from: NetBSD


203938 15-Feb-2010 attilio

Adjust style (following the already existing rules) for the newly
introduced option DEADLKRES.

Reported by: danfe, julian, avg


203852 14-Feb-2010 kevlo

Correct cpu id for FA526.
While I'm here, add cpu id for FA626TE.


203758 10-Feb-2010 attilio

Add the options DEADLKRES (introducing the deadlock resolver thread) in
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


203752 10-Feb-2010 rpaulo

Turn on the front LED at boot time like we do with the Avila.


203637 07-Feb-2010 raj

Improve checking whether an ARM VA has a valid mapping before performing cache
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


203171 29-Jan-2010 marcel

When backtracing self, start with the current frame (i.e. the
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.


202634 19-Jan-2010 jhb

Move the examples for the 'hints' and 'env' keywords from various GENERIC
kernel configs into NOTES.

Reviewed by: imp


202353 15-Jan-2010 cognet

Do not free the dmamap if it is still busy.

Submitted by: Mark Tinguely
MFC after: 3 days


201534 04-Jan-2010 imp

Revert 200594. This file isn't intended for these sorts of things.


201469 04-Jan-2010 rpaulo

Remove CNS11XXNAS.hints.


201468 04-Jan-2010 rpaulo

Add support for Cavium Econa CNS11XX ARM boards. These boards were
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/...


201223 29-Dec-2009 rnoland

Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.

This replaces d_mmap() with the d_mmap2() implementation and also
changes the type of offset to vm_ooffset_t.

Purge d_mmap2().

All driver modules will need to be rebuilt since D_VERSION is also
bumped.

Reviewed by: jhb@
MFC after: Not in this lifetime...


200928 23-Dec-2009 rpaulo

Intel XScale hwpmc(4) support.

This brings hwpmc(4) support for 2nd and 3rd generation XScale cores.
Right now it's enabled by default to make sure we test this a bit.
When the time comes it can be disabled by default.
Tested on Gateworks boards.

A man page is coming.

Obtained from: //depot/user/rpaulo/xscalepmc/...


200594 16-Dec-2009 dougb

Add INCLUDE_CONFIG_FILE, and a note in comments about how to also
include the comments with CONFIGARGS


200275 08-Dec-2009 mav

Fix the build.


200171 06-Dec-2009 mav

MFp4:
Introduce ATA_CAM kernel option, turning ata(4) controller drivers into
cam(4) interface modules. When enabled, this options deprecates all ata(4)
peripheral drivers (ad, acd, ...) and interfaces and allows cam(4) drivers
(ada, cd, ...) and interfaces to be natively used instead.

As side effect of this, ata(4) mode setting code was completely rewritten
to make controller API more strict and permit above change. While doing
this, SATA revision was separated from PATA mode. It allows DMA-incapable
SATA devices to operate and makes hw.ata.atapi_dma tunable work again.

Also allow ata(4) controller drivers (except some specific or broken ones)
to handle larger data transfers. Previous constraint of 64K was artificial
and is not really required by PCI ATA BM specification or hardware.

Submitted by: nwitehorn (powerpc part)


200015 02-Dec-2009 thompsa

Add missing ath_ar9* ath hal entries.


200014 02-Dec-2009 thompsa

Remove unknown ath hal device entries.


199868 27-Nov-2009 alc

Simplify the invocation of vm_fault(). Specifically, eliminate the flag
VM_FAULT_DIRTY. The information provided by this flag can be trivially
inferred by vm_fault().

Discussed with: kib


199557 19-Nov-2009 jhb

- Initialize callout before it is used in atestop() during attach.
- Reorder detach so that ether_ifdetach() is called first. This removes
the race that ATE_FLAG_DETACHING closed, so that flag can be removed.
- Trim a duplicate clearing of IFF_DRV_RUNNING.

Reviewed by: imp


199537 19-Nov-2009 jhb

These drivers only set if_timer but never set if_watchdog. Just remove
the assignments to if_timer.


199135 10-Nov-2009 kib

Extract the code that records syscall results in the frame into MD
function cpu_set_syscall_retval().

Suggested by: marcel
Reviewed by: marcel, davidxu
PowerPC, ARM, ia64 changes: marcel
Sparc64 tested and reviewed by: marius, also sunv reviewed
MIPS tested by: gonzo
MFC after: 1 month


198944 05-Nov-2009 marcel

Fix gdb_cpu_getreg() to actually match GDB's register
definition.


198943 05-Nov-2009 marcel

Implement db_trace_thread() by calling db_stack_trace_cmd() and
passing a frame pointer that comes from the thread context. This
fixes DDB backtraces by not unwinding debugger functions first.


198942 05-Nov-2009 marcel

Implement db_trace_self() by calling db_stack_trace_cmd()
and not db_trace_thread().


198872 04-Nov-2009 alc

Eliminate an unnecessary vm include file.


198717 31-Oct-2009 mav

MFp4:
- Remove most of direct relations between ATA(4) peripherial and controller
levels. It makes logic more transparent and is a mandatory step to wrap
ATA(4) controller level into ATA-native CAM SIM.
- Tune AHCI and SATA2 SiI drivers memory allocation a bit to allow bigger
I/O transaction sizes without additional cost.


198507 27-Oct-2009 kib

In r197963, a race with thread being selected for signal delivery
while in kernel mode, and later changing signal mask to block the
signal, was fixed for sigprocmask(2) and ptread_exit(3). The same race
exists for sigreturn(2), setcontext(2) and swapcontext(2) syscalls.

Use kern_sigprocmask() instead of direct manipulation of td_sigmask to
reschedule newly blocked signals, closing the race.

Reviewed by: davidxu
Tested by: pho
MFC after: 1 month


198342 21-Oct-2009 marcel

Review previous change. It has no relation to the I-cache coherency
changes and thus unintentional.

Spotted by: rdivacky@


198341 21-Oct-2009 marcel

o Introduce vm_sync_icache() for making the I-cache coherent with
the memory or D-cache, depending on the semantics of the platform.
vm_sync_icache() is basically a wrapper around pmap_sync_icache(),
that translates the vm_map_t argumument to pmap_t.
o Introduce pmap_sync_icache() to all PMAP implementation. For powerpc
it replaces the pmap_page_executable() function, added to solve
the I-cache problem in uiomove_fromphys().
o In proc_rwmem() call vm_sync_icache() when writing to a page that
has execute permissions. This assures that when breakpoints are
written, the I-cache will be coherent and the process will actually
hit the breakpoint.
o This also fixes the Book-E PMAP implementation that was missing
necessary locking while trying to deal with the I-cache coherency
in pmap_enter() (read: mmu_booke_enter_locked).

The key property of this change is that the I-cache is made coherent
*after* writes have been done. Doing it in the PMAP layer when adding
or changing a mapping means that the I-cache is made coherent *before*
any writes happen. The difference is key when the I-cache prefetches.


198044 13-Oct-2009 jhb

Sync with other GENERIC kernel configs:
- Move USB serial drivers earlier to match their placement in other kernel
configs.
- Add descriptions to various USB drivers.
- Move the USB wireless drivers into a new section.
- Add ulscom to the list of USB serial drivers.


197933 10-Oct-2009 kib

Define architectural load bases for PIE binaries. Addresses were selected
by looking at the bases used for non-relocatable executables by gnu ld(1),
and adjusting it slightly.

Discussed with: bz
Reviewed by: kan
Tested by: bz (i386, amd64), bsam (linux)
MFC after: some time


197770 05-Oct-2009 stas

- Drop unused pmap_use_l1 function and comment out currently unused
pmap_dcache_wbinv_all/pmap_copy_page functions which we might want
to take advatage of later. This fixes the build with PMAP_DEBUG
defined.

Discussed with: cognet


197733 03-Oct-2009 rpaulo

Remove remaining bits of performance counter support.

Submitted by: Tom Judge <tom at tomjudge.com>


197729 03-Oct-2009 bz

Make sure that the primary native brandinfo always gets added
first and the native ia32 compat as middle (before other things).
o(ld)brandinfo as well as third party like linux, kfreebsd, etc.
stays on SI_ORDER_ANY coming last.

The reason for this is only to make sure that even in case we would
overflow the MAX_BRANDS sized array, the native FreeBSD brandinfo
would still be there and the system would be operational.

Reviewed by: kib
MFC after: 1 month


197704 02-Oct-2009 rpaulo

Remove performance counter headers. This code came from NetBSD, but our
hardware perf. counter support is different, so we don't need these
files.

Reviewed by: freebsd-arm (no comments)


197523 26-Sep-2009 rpaulo

Promote the cpu_class local variable to global and expose it in md_var.h

Reviewed by: freebsd-arm


197316 18-Sep-2009 alc

Add a new sysctl for reporting all of the supported page sizes.

Reviewed by: jhb
MFC after: 3 weeks


196994 08-Sep-2009 phk

Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating an
architecture specific include file containing the _ALIGN*
stuff which <sys/socket.h> needs.


196730 01-Sep-2009 kib

Reintroduce the r196640, after fixing the problem with my testing.

Remove the altkstacks, instead instantiate threads with kernel stack
allocated with the right size from the start. For the thread that has
kernel stack cached, verify that requested stack size is equial to the
actual, and reallocate the stack if sizes differ [1].

This fixes the bug introduced by r173361 that was committed several days
after r173004 and consisted of kthread_add(9) ignoring the non-default
kernel stack size.

Also, r173361 removed the caching of the kernel stacks for a non-first
thread in the process. Introduce separate kernel stack cache that keeps
some limited amount of preallocated kernel stacks to lower the latency
of thread allocation. Add vm_lowmem handler to prune the cache on
low memory condition. This way, system with reasonable amount of the
threads get lower latency of thread creation, while still not exhausting
significant portion of KVA for unused kstacks.

Submitted by: peter [1]
Discussed with: jhb, julian, peter
Reviewed by: jhb
Tested by: pho (and retested according to new test scenarious)
MFC after: 1 week


196648 29-Aug-2009 kib

Reverse r196640 and r196644 for now.


196640 29-Aug-2009 kib

Remove the altkstacks, instead instantiate threads with kernel stack
allocated with the right size from the start. For the thread that has
kernel stack cached, verify that requested stack size is equial to the
actual, and reallocate the stack if sizes differ [1].

This fixes the bug introduced by r173361 that was committed several days
after r173004 and consisted of kthread_add(9) ignoring the non-default
kernel stack size.

Also, r173361 removed the caching of the kernel stacks for a non-first
thread in the process. Introduce separate kernel stack cache that keeps
some limited amount of preallocated kernel stacks to lower the latency
of thread allocation. Add vm_lowmem handler to prune the cache on
low memory condition. This way, system with reasonable amount of the
threads get lower latency of thread creation, while still not exhausting
significant portion of KVA for unused kstacks.

Submitted by: peter [1]
Discussed with: jhb, julian, peter
Reviewed by: jhb
Tested by: pho
MFC after: 1 week


196605 27-Aug-2009 sam

revert r196600; didn't notice it'd been done already

Submitted by: jhay


196600 27-Aug-2009 sam

enable mesh by default


196536 25-Aug-2009 raj

Introduce SheevaPlug support.

- The device is based on Marvell 88F6281 system on chip.
- More info about the platform at http://www.plugcomputer.org

- To build the FreeBSD kernel:
make buildkernel TARGET_ARCH=arm KERNCONF=SHEEVAPLUG

- Installation notes at: http://wiki.freebsd.org/FreeBSDMarvell

Submitted by: Michal Hajduk
Obtained from: Semihalf


196533 25-Aug-2009 raj

Exclude common Kirkwood settings so they can be shared among various platforms
based on this SOC. This is a preliminary step for SheevaPlug support.

Submitted by: Michal Hajduk
Obtained from: Semihalf


196532 25-Aug-2009 raj

Properly handle initial state of power mgmt.

Modules on Marvell SOC can be selectively PM-disabled, and we must not access
disabled devices' registers (attempt to initialize them) unconditionally, as
this leads to the system hang. This patch introduces graceful handling of the
PM state during devices init.

Submitted by: Michal Hajduk
Obtained from: Semihalf


196531 25-Aug-2009 raj

Eliminate platform_pmap_init() to simplify Marvell bootstrap code.


196484 23-Aug-2009 cognet

KDB needs <machine/db_machdep.h>, so move it under #ifdef KDB.
While I'm there, remove dead code, we will never support acorn26.


196479 23-Aug-2009 cognet

No need to remove the same flag multiple times.


196246 15-Aug-2009 stas

- Proprely intialize UART parameters at probe stage, so uart(4)
will initialize the FIFO memory correctly on attach. Before
that this values was intialized in only in at91_usart_bus_attach
which is called after the uart(4) memory allocation happens.

Approved by: re (kib)
MFC after: 1 week


196193 13-Aug-2009 raj

Use correct wbinv operation in pmap_l2cache_wbinv_range().

Submitted by: Michal Hajduk
Reviewed by: stas
Approved by: re (kib)
Obtained from: Semihalf


196019 01-Aug-2009 rwatson

Merge the remainder of kern_vimage.c and vimage.h into vnet.c and
vnet.h, we now use jails (rather than vimages) as the abstraction
for virtualization management, and what remained was specific to
virtual network stacks. Minor cleanups are done in the process,
and comments updated to reflect these changes.

Reviewed by: bz
Approved by: re (vimage blanket)


195840 24-Jul-2009 jhb

Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to
a device pager (OBJT_DEVICE) object in that it uses fictitious pages to
provide aliases to other memory addresses. The primary difference is that
it uses an sglist(9) to determine the physical addresses for a given offset
into the object instead of invoking the d_mmap() method in a device driver.

Reviewed by: alc
Approved by: re (kensmith)
MFC after: 2 weeks


195798 21-Jul-2009 raj

Make dcache_inv_range() point to the proper routines on ARM9 and ARM9E/ARM10.

On some ARM variations CPU func dispatcher has the D-cache invalidate method
point to write-back invalidate, which is wrong, and can lead to a crash/panic
on affected platforms.

Spotted by: HPS
Reviewed by: cognet
Approved by: re (kib)


195779 20-Jul-2009 raj

ARM pmap fixes.

a) nocache-remap problem

When a page is remapped into a non-cacheable virtual memory region there
was no associated write-back invalidate operation performed. We remove
writeback of the original buffer size from bus_dmamem_alloc() and add
appropriate L1/L2 flush operation.

b) missing write-back invalidate operation

In pmap_kremove a page is removed so we must do a write-back
invalidate operation aligned to the page virtual address.

Submitted by: Michal Hajduk
Reviewed by: Mark Tinguely, rpaulo, stas
Approved by: re (kib)
Obtained from: Semihalf


195742 17-Jul-2009 rpaulo

Add IEEE80211_SUPPORT_MESH, following similar change to nanobsd and
other GENERIC kernels.

Approved by: re (kib)


195649 12-Jul-2009 alc

Add support to the virtual memory system for configuring machine-
dependent memory attributes:

Rename vm_cache_mode_t to vm_memattr_t. The new name reflects the
fact that there are machine-dependent memory attributes that have
nothing to do with controlling the cache's behavior.

Introduce vm_object_set_memattr() for setting the default memory
attributes that will be given to an object's pages.

Introduce and use pmap_page_{get,set}_memattr() for getting and
setting a page's machine-dependent memory attributes. Add full
support for these functions on amd64 and i386 and stubs for them on
the other architectures. The function pmap_page_set_memattr() is also
responsible for any other machine-dependent aspects of changing a
page's memory attributes, such as flushing the cache or updating the
direct map. The uses include kmem_alloc_contig(), vm_page_alloc(),
and the device pager:

kmem_alloc_contig() can now be used to allocate kernel memory with
non-default memory attributes on amd64 and i386.

vm_page_alloc() and the device pager will set the memory attributes
for the real or fictitious page according to the object's default
memory attributes.

Update the various pmap functions on amd64 and i386 that map pages to
incorporate each page's memory attributes in the mapping.

Notes: (1) Inherent to this design are safety features that prevent
the specification of inconsistent memory attributes by different
mappings on amd64 and i386. In addition, the device pager provides a
warning when a device driver creates a fictitious page with memory
attributes that are inconsistent with the real page that the
fictitious page is an alias for. (2) Storing the machine-dependent
memory attributes for amd64 and i386 as a dedicated "int" in "struct
md_page" represents a compromise between space efficiency and the ease
of MFCing these changes to RELENG_7.

In collaboration with: jhb

Approved by: re (kib)


195376 05-Jul-2009 sam

Cleanup ALIGNED_POINTER:
o add to platforms where it was missing (arm, i386, powerpc, sparc64, sun4v)
o define as "1" on amd64 and i386 where there is no restriction
o make the type returned consistent with ALIGN
o remove _ALIGNED_POINTER
o make associated comments consistent

Reviewed by: bde, imp, marcel
Approved by: re (kensmith)


195256 01-Jul-2009 raj

Map DPCPU pages into ARM kernel VA space.

DPCPU area was not properly mapped into kernel VA space, which caused page
fault on the first DPCPU access. This patch fixes the problem by mapping DPCPU
area into kernel VA space.

Submitted by: Michal Hajduk, Piotr Ziecik
Reviewed by: cognet, stas
Approved by: re (kib)
Obtained from: Semihalf


195060 26-Jun-2009 alc

Correct the #endif comment.

Noticed by: jmallett
Approved by: re (kib)


195049 26-Jun-2009 rwatson

Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/
IF_ADDR_UNLOCK() across network device drivers when accessing the
per-interface multicast address list, if_multiaddrs. This will
allow us to change the locking strategy without affecting our driver
programming interface or binary interface.

For two wireless drivers, remove unnecessary locking, since they
don't actually access the multicast address list.

Approved by: re (kib)
MFC after: 6 weeks


195033 26-Jun-2009 alc

This change is the next step in implementing the cache control functionality
required by video card drivers. Specifically, this change introduces
vm_cache_mode_t with an appropriate VM_CACHE_DEFAULT definition on all
architectures. In addition, this changes adds a vm_cache_mode_t parameter
to kmem_alloc_contig() and vm_phys_alloc_contig(). These will be the
interfaces for allocating mapped kernel memory and physical memory,
respectively, with non-default cache modes.

In collaboration with: jhb


194983 25-Jun-2009 sam

temporarily disable optional uarts; apparently we hang when probing them
(and they are not present)


194949 25-Jun-2009 raj

Enable all populated TWSI (I2C) controllers on Marvell SOCs.

Obtained from: Semihalf


194908 24-Jun-2009 cognet

Fix typo.


194906 24-Jun-2009 cognet

Fix typo.


194845 24-Jun-2009 raj

Introduce ata(4) support for Marvell integrated SATA controllers (found on
88F5xxx, 88F6xxx and MV78xxx system on chip devices).

Reviewed by: stas
Obtained from: Semihalf


194784 23-Jun-2009 jeff

Implement a facility for dynamic per-cpu variables.
- Modules and kernel code alike may use DPCPU_DEFINE(),
DPCPU_GET(), DPCPU_SET(), etc. akin to the statically defined
PCPU_*. Requires only one extra instruction more than PCPU_* and is
virtually the same as __thread for builtin and much faster for shared
objects. DPCPU variables can be initialized when defined.
- Modules are supported by relocating the module's per-cpu linker set
over space reserved in the kernel. Modules may fail to load if there
is insufficient space available.
- Track space available for modules with a one-off extent allocator.
Free may block for memory to allocate space for an extent.

Reviewed by: jhb, rwatson, kan, sam, grehan, marius, marcel, stas


194753 23-Jun-2009 sam

Now that we have UARTs running with fast interrupt handlers the ata
driver's i/o ops must be locked to avoid chaos. Extend the cambria
bus tag to support ata and add a spin lock. The ata driver is
hacked to use that instead of it's builtin hack for ixp425. Once
the ata driver is fixed to not be confused about byte order we can
generalize the cambria bus tag code and make it generally useful.

While here take advantage of our being ixp435-specific to remove
delays when switching between byte+word accesses and to eliminate
the 2us delay for the uarts (the spin lock overhead looks to do
this for us).


194752 23-Jun-2009 sam

use consistent style


194673 22-Jun-2009 sam

kill left over cruft


194671 22-Jun-2009 sam

enable optional GPS+RS485 uarts


194670 22-Jun-2009 sam

o add a bus space tag that forces a 2usec delay between r/w ops; this is
used for the optional GPS+RS485 uarts on the Gateworks Cambria boards
which otherwise are unreliable
o setup the hack bus space tag for the GPS+RS485 uarts
o program the gpio interrupts for the uarts to be edge-rising
o force timing on the expansion bus for the uarts to be "slow"

Thanks to Chris Lang of Gateworks for these tips.


194669 22-Jun-2009 sam

fix typo


194668 22-Jun-2009 sam

o remove hack to write UUE+RTOIE in the uart's IER; force them with hints
o honor hints for the rclk


194656 22-Jun-2009 sam

hook arm_post_filter to ACK GPIO interrupts; this fixes the interrupt
storm observed on the GPS+RS485 uarts on Gateworks Cambria boards

Reviewed by: cognet


194655 22-Jun-2009 sam

always define Cambria GPS+RS485 mappings as they are no longer conditional


194654 22-Jun-2009 sam

map the optional GPS and RS485 uart's on the Gateworks Cambria board
(may want to make these conditional)


194653 22-Jun-2009 sam

add ixp425_set_gpio to program the gpio interrupt type


194652 22-Jun-2009 sam

rewrite arm_get_next_irq to always make forward progress (should be optimized)


194651 22-Jun-2009 sam

kill stray whitespace


194650 22-Jun-2009 sam

move logic to ACK a GPIO to a separate function


194649 22-Jun-2009 sam

swap order in ddb show gpio printf


194648 22-Jun-2009 sam

make type use consistent


194609 21-Jun-2009 cognet

Disable write-back until I figure out what's wrong with it on the i81342.
There's no need to disable the MMU once we're done inflating the kernel.


194459 18-Jun-2009 thompsa

Track the kernel mapping of a physical page by a new entry in vm_page
structure. When the page is shared, the kernel mapping becomes a special
type of managed page to force the cache off the page mappings. This is
needed to avoid stale entries on all ARM VIVT caches, and VIPT caches
with cache color issue.

Submitted by: Mark Tinguely
Reviewed by: alc
Tested by: Grzegorz Bernacki, thompsa


194379 17-Jun-2009 sam

enable npe-a now that it works


194378 17-Jun-2009 sam

Add workaround to get IXP435 NPE-A working: reseting NPE-A after NPE-C
causes both to become inoperative; this apparently was done by the original
IAL code as a workaround for IMEM parity errors which we've not seen so
just disable the reset.

Note this problem does not occur on IXP425 boards. The linux driver does
fuse-resets on each NPE but in the order NPE-A < NPE-B < NPE-C (when probing
for which NPE's are present/operational); we may want to switch to a similar
scheme but for now disable the resets until we see an issue.


194325 17-Jun-2009 sam

correct data/instruction memory sizes for non-ixp425 parts (these
are only used to bounds-check writes when loading firmware)


194322 17-Jun-2009 sam

remove IAL vestige for defining the max data/instruction memory size;
instead of defining them according to ixp46x add new defines so we can
do this at run time


194321 17-Jun-2009 sam

o correct default miibase for NPE-B and NPE-C; these values are
normally taken from the hints file so this should have no effect
o set the port address "just in case"
o add NPE-A support to the tx done qmgr callback


194319 17-Jun-2009 sam

add ixp4xx_write_feature_bits


194072 12-Jun-2009 marcel

Move the memory layout definitions and logic from mvreg.h to mvwin.h
so that it isn't exposured unless needed. In particular this means
that it's easier to tune the memory layout based on board details.
While here, remove inclusion of <machine/intr.h> from mvreg.h. This
also contains exposure to SoC specifics in MI drivers, because NIRQ
depends on the SoC.


194044 12-Jun-2009 imp

devclass_find_free_unit(xxx, 0) is identical to -1 for most
applications (including this one). Switch to it since the former is a
racy interface.


194015 11-Jun-2009 avg

strict kobj signatures: number of fixes for arm architecture

no functional changes should result

Reviewed by: imp, current@
Approved by: jhb (mentor)


193934 10-Jun-2009 imp

Eliminate devclass_find_free_unit call here, since -1 gives the same
net behavior.


193847 09-Jun-2009 marcel

Pass the previously returned IRQ back to arm_get_next_irq() so that
the implementation can guarantee forward progress in the event of
a stuck interrupt or interrupt storm. This is especially critical
for fast interrupt handlers, as they can cause a hard hang in that
case. When first called, arm_get_next_irq() is passed -1.

Obtained from: Juniper Networks, Inc.


193846 09-Jun-2009 marcel

Disable interrupts to allow booting on firmware (e.g. U-Boot) that
has interrupts enabled and active.

Obtained from: Juniper Networks, Inc.


193712 08-Jun-2009 raj

Invalidate cache in pmap_remove_all() on ARM.

When pages are removed from virtual address space by calling pmap_remove_all()
CPU caches were not invalidated, which led to read corruption when another
page got mapped at this same virtual address at later time (the CPU was
retrieving stale contents).

Submitted by: Piotr Ziecik
Obtained from: Semihalf


193104 30-May-2009 sam

maintain existing style


193096 30-May-2009 attilio

When user_frac in the polling subsystem is low it is going to busy the
CPU for too long period than necessary. Additively, interfaces are kept
polled (in the tick) even if no more packets are available.
In order to avoid such situations a new generic mechanism can be
implemented in proactive way, keeping track of the time spent on any
packet and fragmenting the time for any tick, stopping the processing
as soon as possible.

In order to implement such mechanism, the polling handler needs to
change, returning the number of packets processed.
While the intended logic is not part of this patch, the polling KPI is
broken by this commit, adding an int return value and the new flag
IFCAP_POLLING_NOCOUNT (which will signal that the return value is
meaningless for the installed handler and checking should be skipped).

Bump __FreeBSD_version in order to signal such situation.

Reviewed by: emaste
Sponsored by: Sandvine Incorporated


193066 29-May-2009 jamie

Place hostnames and similar information fully under the prison system.
The system hostname is now stored in prison0, and the global variable
"hostname" has been removed, as has the hostname_mtx mutex. Jails may
have their own host information, or they may inherit it from the
parent/system. The proper way to read the hostname is via
getcredhostname(), which will copy either the hostname associated with
the passed cred, or the system hostname if you pass NULL. The system
hostname can still be accessed directly (and without locking) at
prison0.pr_host, but that should be avoided where possible.

The "similar information" referred to is domainname, hostid, and
hostuuid, which have also become prison parameters and had their
associated global variables removed.

Approved by: bz (mentor)


192901 27-May-2009 thompsa

Delete the old USB stack. The new stack has settled in and has all the
drivers/functionality and then some.


192660 23-May-2009 sam

accumulate npe statistics and expose them through dev.npe.X.stats


192599 22-May-2009 des

Expand $FreeBSD$


192323 18-May-2009 marcel

Add cpu_flush_dcache() for use after non-DMA based I/O so that a
possible future I-cache coherency operation can succeed. On ARM
for example the L1 cache can be (is) virtually mapped, which
means that any I/O that uses temporary mappings will not see the
I-cache made coherent. On ia64 a similar behaviour has been
observed. By flushing the D-cache, execution of binaries backed
by md(4) and/or NFS work reliably.
For Book-E (powerpc), execution over NFS exhibits SIGILL once in
a while as well, though cpu_flush_dcache() hasn't been implemented
yet.

Doing an explicit D-cache flush as part of the non-DMA based I/O
read operation eliminates the need to do it as part of the
I-cache coherency operation itself and as such avoids pessimizing
the DMA-based I/O read operations for which D-cache are already
flushed/invalidated. It also allows future optimizations whereby
the bcopy() followed by the D-cache flush can be integrated in a
single operation, which could be implemented using on-chips DMA
engines, by-passing the D-cache altogether.


192135 15-May-2009 imp

Fix name for driver to assign to the SPI device.


192064 13-May-2009 stas

- Set MAC address in ateinit, so it can be changed later.


192063 13-May-2009 stas

- Style(9) and consistency nitpicking.

Reviewed by: imp


192059 13-May-2009 gonzo

- Make SPI bus bridge be non-arch dependent by using more generic
name

Reviewed by: imp


192028 12-May-2009 stas

- Resurrect the debug printf message I accidentally dropped
in the previous commit.
- Use device_printf instead of printf.
- Put all printfs in the interrupt handler under bootverbose.


192027 12-May-2009 stas

- Eliminate extra register reads by using a variable to store
registers contents.
- Use memory barriers to preserve the order of buffer space operations.
This might be needed if we'll ever use this driver on architectures
where ordering is not guaranteed.


192018 12-May-2009 stas

- Implement detach path.
- Release memory and DMA resources on stop.
- Unload the associated DMA maps after transmit is complete.


191961 10-May-2009 stas

- Fix build with INVARIANTS enabled.


191960 10-May-2009 stas

- Fix multicast operation that I broke in previous commit.
- Do not enable multicast hash lookup if no multicast addresses
were configured or if promisc mode is enabled.


191959 10-May-2009 stas

- Fix promisc/multicast/broadcast parameters setting by introducing the
new ate_rxfilter function to set requested parameters. Use this function
on parameters change rather than reinitializing the chip.


191954 10-May-2009 kuriyama

- Use "device\t" and "options \t" for consistency.


191873 07-May-2009 alc

Define the kernel pmap in the same way on arm as on every other
architecture.

Eliminate an unused definition.

Tested by: cognet


191858 06-May-2009 cognet

Use the good hints for the NSLU, it should fix the network adapter.

PR: arm/134092
Submitted by: gavin


191817 05-May-2009 stas

- Add support for PXA270 cpu.

Submitted by: Jacques Fourie <jacques.fourie@gmail.com>


191438 23-Apr-2009 jhb

Reduce the number of bounce zones (and thus the number of bounce pages
used in some cases):
- Ignore DMA tag boundaries when allocating bounce pages. The boundaries
don't determine whether or not parts of a DMA request bounce. Instead,
they are just used to carve up segments.
- Allow tags with sub-page alignment to share bounce pages since bounce
pages are always page aligned.

Reviewed by: scottl (amd64)
MFC after: 1 month


191410 23-Apr-2009 stas

- Whitespace nitpicking.


191408 22-Apr-2009 stas

- Add the driver for AT91RM9200 CompactFlash controller. The driver
operates in the common memory mode and use polling mode to control
the status of operations as I don't have any board with interrupt
line routed yet. I'll add the GPIO interrupt driven mode as soon
as I get one.


191369 21-Apr-2009 stas

- Rename ds1672 and ds133x devices to "ds1672_rtc" and "ds133x_rtc"
respectivly. This will allow one to have a kernel with both devices
present and use it for multiple boards with different types of RTC
sitting on a bus.

Discussed with: imp


191322 20-Apr-2009 stas

- Give a warning and start the oscillator if it was not previously
runned.
- Rename ds1672 -> rtc to follow the other drivers.
- Refactor/simplify the code a bit.

MFC after: 2 weeks


191309 20-Apr-2009 rwatson

Don't conditionally define CACHE_LINE_SHIFT, as we anticipate sizing
a fair number of static data structures, making this an unlikely
option to try to change without also changing source code. [1]

Change default cache line size on ia64, sparc64, and sun4v to 128
bytes, as this was what rtld-elf was already using on those
platforms. [2]

Suggested by: bde [1], jhb [2]
MFC after: 2 weeks


191278 19-Apr-2009 rwatson

Add description and cautionary note regarding CACHE_LINE_SIZE.

MFC after: 2 weeks
Suggested by: alc


191276 19-Apr-2009 rwatson

For each architecture, define CACHE_LINE_SHIFT and a derived
CACHE_LINE_SIZE constant. These constants are intended to
over-estimate the cache line size, and be used at compile-time
when a run-time tuning alternative isn't appropriate or
available.

Defaults for all architectures are 64 bytes, except powerpc
where it is 128 bytes (used on G5 systems).

MFC after: 2 weeks
Discussed on: arch@


191228 17-Apr-2009 ticso

minor cleanup


191201 17-Apr-2009 jhb

Restore bus DMA bounce pages to an offset of 0 when they are released by
a tag that has BUS_DMA_KEEP_PG_OFFSET set. Otherwise the page could be
reused with a non-zero offset by a tag that doesn't have
BUS_DMA_KEEP_PG_OFFSET leading to data corruption.

Sleuthing by: avg
Reviewed by: scottl


191141 16-Apr-2009 raj

Minor style fixes and better comments.


191140 16-Apr-2009 raj

Adjust Marvell Discovery (MV78xxx) support to recognize newest chip revisions,
handle Z0 revision (early silicon) explicitly due to its quirks.

Obtained from: Marvell, Semihalf


191011 13-Apr-2009 kib

The bus_dmamap_load_uio(9) shall use pmap of the thread recorded in the
uio_td to extract pages from, instead of unconditionally use kernel
pmap.

Submitted by: Jason Harmening <jason.harmening gmail com> (amd64 version)
PR: amd64/133592
Reviewed by: scottl (original patch), jhb
MFC after: 2 weeks


190845 08-Apr-2009 raj

Minor description fix.


190844 08-Apr-2009 raj

Properly handle KDB entry in fatal abort. This lets KDB_UNATTENDED work on ARM.

Submitted by: Grzegorz Bernacki gjb ! semihalf dot com


190740 05-Apr-2009 thompsa

MFp4 //depot/projects/usb@159992

at91_udp.c does not exist anymore, it is now replaced by at91dci in
src/sys/dev/usb/controller. Also remove the ohci_atmelarm.c because it is also
included in src/sys/conf/files

Submitted by: Sylvestre Gallon


190708 05-Apr-2009 dchagin

Fix KBI breakage by r190520 which affects older linux.ko binaries:

1) Move the new field (brand_note) to the end of the Brandinfo structure.
2) Add a new flag BI_BRAND_NOTE that indicates that the brand_note pointer
is valid.
3) Use the brand_note field if the flag BI_BRAND_NOTE is set and as old
modules won't have the flag set, so the new field brand_note would be
ignored.

Suggested by: jhb
Reviewed by: jhb
Approved by: kib (mentor)
MFC after: 6 days


190705 04-Apr-2009 alc

Retire VM_PROT_READ_IS_EXEC. It was intended to be a micro-optimization,
but I see no benefit from it today.

VM_PROT_READ_IS_EXEC was only intended for use on processors that do not
distinguish between read and execute permission. On an mmap(2) or
mprotect(2), it automatically added execute permission if the caller
specified permissions included read permission. The hope was that this
would reduce the number of vm map entries needed to implement an address
space because there would be fewer neighboring vm map entries that differed
only in the presence or absence of VM_PROT_EXECUTE. (See vm/vm_mmap.c
revision 1.56.)

Today, I don't see any real applications that benefit from
VM_PROT_READ_IS_EXEC. In any case, vm map entries are now organized
as a self-adjusting binary search tree instead of an ordered list. So,
the need for coalescing vm map entries is not as great as it once was.


190634 01-Apr-2009 jhb

Remove some pointless mergeinfo that is the result of doing a local
'svn cp' and having svn create empty mergeinfo for the file.


190633 01-Apr-2009 piso

Implement an ipfw action to reassemble ip packets: reass.


190603 31-Mar-2009 cognet

Fix the userland, RAS, version of atomic_fetchadd_32 :
return the correct value, and do not store the wrong one in the supplied
pointer.

Submitted by: Mark Tinguely <tinguely casselton net>


190602 31-Mar-2009 cognet

Use Oxf0000000 instead of 0xff000000 to guess the physical address, relative
to the virtual one. I may had a reason at some point to use the later, but
can't remember which, and it can leads to issues.

Reported by: Guillaume Ballet <gballet gmail com>


190581 30-Mar-2009 mav

Integrate user/mav/ata branch:

Add ch_suspend/ch_resume methods for PCI controllers and implement them
for AHCI. Refactor AHCI channel initialization according to it.

Fix Port Multipliers operation. It is far from perfect yet, but works now.
Tested with JMicron JMB363 AHCI + SiI 3726 PMP pair.
Previous version was also tested with SiI 4726 PMP.

Hardware sponsored by: Vitsch Electronics / VEHosting.nl


190580 30-Mar-2009 sam

revert unintended change


190579 30-Mar-2009 sam

Hoist 802.11 encapsulation up into net80211:
o call ieee80211_encap in ieee80211_start so frames passed down to drivers
are already encapsulated
o remove ieee80211_encap calls in drivers
o fixup wi so it recreates the 802.3 head it requires from the 802.11
header contents
o move fast-frame aggregation from ath to net80211 (conditional on
IEEE80211_SUPPORT_SUPERG):
- aggregation is now done in ieee80211_start; it is enabled when the
packets/sec exceeds ieee80211_ffppsmin (net.wlan.ffppsmin) and frames
are held on a staging queue according to ieee80211_ffagemax
(net.wlan.ffagemax) to wait for a frame to combine with
- drivers must call back to age/flush the staging queue (ath does this
on tx done, at swba, and on rx according to the state of the tx queues
and/or the contents of the staging queue)
- remove fast-frame-related data structures from ath
- add ieee80211_ff_node_init and ieee80211_ff_node_cleanup to handle
per-node fast-frames state (we reuse 11n tx ampdu state)
o change ieee80211_encap calling convention to include an explicit vap
so frames coming through a WDS vap are recognized w/o setting M_WDS

With these changes any device able to tx/rx 3Kbyte+ frames can use fast-frames.

Reviewed by: thompsa, rpaulo, avatar, imp, sephe


190571 30-Mar-2009 sam

Remove ATH_SUPPORT_TDMA and use IEEE80211_SUPPORT_TDMA instead. It
doesn't make much sense to configure driver support w/o net80211.
Note this means ath now depends on opt_wlan.h.


190100 19-Mar-2009 thompsa

Remove the uscanner(4) driver, this follows the removal of the kernel scanner
driver in Linux 2.6. uscanner was just a simple wrapper around a fifo and
contained no logic, the default interface is now libusb (supported by sane).

Reviewed by: HPS


189926 17-Mar-2009 kib

Add AT_EXECPATH ELF auxinfo entry type. The value's a_ptr is a pointer
to the full path of the image that is being executed.
Increase AT_COUNT.

Remove no longer true comment about types used in Linux ELF binaries,
listed types contain FreeBSD-specific entries.

Reviewed by: kan


189771 13-Mar-2009 dchagin

Implement new way of branding ELF binaries by looking to a
".note.ABI-tag" section.

The search order of a brand is changed, now first of all the
".note.ABI-tag" is looked through.

Move code which fetch osreldate for ELF binary to check_note() handler.

PR: 118473
Approved by: kib (mentor)


189656 11-Mar-2009 sam

switch to !legacy usb stack


189652 10-Mar-2009 sam

configure flash support


189651 10-Mar-2009 sam

add IXP4XX_FLASH_SIZE config knob that can be used to override the default
flash size; this is necessary at the moment because we map all of flash at
boot, eventually we'll do this on the fly


189650 10-Mar-2009 sam

map CS0 on 2358 so flash is accessible


189645 10-Mar-2009 sam

mark device capable of vlan-size frames

Obtained from: netbsd


189642 10-Mar-2009 sam

turn off inclusion of FCS in rx'd frames; we don't use it anywhere and
dhclient gets annoyed when it receives FCS in frames via bpf


189641 10-Mar-2009 sam

o add missing bus_release_resource and bus_deactivate_resource that just
operate on the resource (we have no local resources to manage); this
fixes drivers that alloc/release resources in their probe method and
then do it again in attach
o while here add some prints to catch failures and massage style a bit


189633 10-Mar-2009 sam

bring in ddb "show gpio" support from Cambria branch


189632 10-Mar-2009 sam

Small cleanup of memory resource allocation from Cambria branch:
o encode need for A4 bus space tag hackery according to the memory
address; checking for "uart" breaks down with the GPS chip support
which is also a uart but does not require the same hackery
o encode the correct memory window instead of carving up all of i/o
space, potentially with a larger window than a device should have;
this likely should be handled in the drivers by using a proper bus
alloc call but since some drivers depend on the bus support to figure
this out we cannot simply mod them
o add optional GPS and RS485 support (conditionally as the support
isn't ready yet)


189630 10-Mar-2009 sam

catch up with r189306; handle delayed activation of resources

Submitted by: jhb


189609 09-Mar-2009 sam

add cfid and geom_redboot


189548 08-Mar-2009 sam

o mark unexpected callbacks more clearly
o unwrap some lines


189463 06-Mar-2009 sam

Cleanup virtual device mapping some more:
o improves understandability by replacing numerous relative address
calculations with fixed addresses; everything should now match up
more easily with the vm layout shown at the top of the file
o move the expansion bus chip select regions to be contiguous with
the expansion bus configuration area; this is not exploited right
now but allows map consolidation in the future
o leave a gap between the expansion bus regions and the pci config
space in case we want to map more exp bus cs regions

Reviewed by: imp, thompsa


189461 06-Mar-2009 sam

remove unneeded static mappings for NPE and MAC regions; these are
already mapped through the IO region so never used

Reviewed by: imp, thompsa


189460 06-Mar-2009 sam

enable tdma support by default; many people using these boards
are using them to setup tdma p2p links


189459 06-Mar-2009 sam

legacy USB is required on these platforms at the moment


189457 06-Mar-2009 sam

fix legacy usb configuration


189456 06-Mar-2009 sam

o simplify code in ixppcib_conf_setup
o fixup debug printfs


189126 27-Feb-2009 imp

Move to new usb stack that puts the front-end bus attachments with the
usb stack rather than with the rest of the processor support code.
Not sure that's a good idea, as we were moving away from it, but this
fixes the build in the mean time so we can have that discussion.


189020 24-Feb-2009 thompsa

Update paths for ehci_ixp4xx.c in the old and new stacks.


189019 24-Feb-2009 thompsa

Fix path and config name for ehci_mbus.c


188944 23-Feb-2009 thompsa

Change over the usb kernel options to the new stack (retaining existing
naming). The old usb stack can be compiled in my prefixing the name with 'o'.


188744 18-Feb-2009 sam

use mii instead of miibus so we don't drag in all phy support
(we only need ukphy which is brought in by mii)

MFC after: 1 week


188698 16-Feb-2009 marcel

Include Marvell EHCI HC driver for USB2.


188581 13-Feb-2009 cognet

Oops. ARM_RAS_END is ARM_TP_ADDRESS + 8, not 4.

Spotted out by: Mark Tinguely <tinguely at casselton d0t net>


188540 12-Feb-2009 cognet

To prevent various race conditions in the RAS code, store and restore the
values in ARM_RAS_START and ARM_RAS_END at context switch time.

MFC after: 1 week


188539 12-Feb-2009 cognet

Do not set thread0.td_frame to a bogus value, as it's going to overwrite the
thread0 pcb, while the board-dependant code already set a good trapframe.

Reported by: Mark Tinguely <tinguely at casselton d0t net>

MFC after: 1 week


188505 11-Feb-2009 sam

fix ARM_USE_SMALL_ALLOC after memory layout changes

Submitted by: cognet


188403 09-Feb-2009 cognet

The bounce zone sees its page number increased if multiple dma maps use it in
the same dma tag. However, it can happen multiple dma tags share the same
bounce zone too, so add a per-bounce zone map counter, and check it instead of
the dma tag map counter, to know if we have to alloc more pages.

Reported by: miwi
Reviewed by: scottl


188350 08-Feb-2009 imp

When bouncing pages, allow a new option to preserve the intra-page
offset. This is needed for the ehci hardware buffer rings that assume
this behavior.

This is an interim solution, and a more general one is being worked
on. This solution doesn't break anything that doesn't ask for it
directly. The mbuf and uio variants with this flag likely don't work
and haven't been tested.

Universe builds with these changes. I don't have a huge-memory
machine to test these changes with, but will be happy to work with
folks that do and hps if this changes turns out not to be sufficient.

Submitted by: alfred@ from Hans Peter Selasky's original


188112 04-Feb-2009 cognet

Erm... Report the buffer as being bounced even when it's the entire buffer,
or we would end up invalidating the cache line for what we just copied...

Reported by: thompsa
Pointy at to: cognet

MFC after: 3 days


188088 03-Feb-2009 sam

Add support for the StrataFlash on 2348 boards:
o add bus shim for cfi driver
o add static mapping for CS0 (we map all 16M as the cfi driver doesn't
support demand mapping)

Note this needs some tweaking to work for 2358 boards which is why the
CAMBRIA config is not touched.


188085 03-Feb-2009 sam

force atomic_cmpset_ptr types to match atomic_cmpset_32;
this matches what powerpc does

Submitted by: stass
MFC after: 2 weeks


188020 02-Feb-2009 cognet

Move a comment to where it belongs.

Spotted out by: Christoph Mallon <christoph d0t mallon AT gmx d0t de>


188019 02-Feb-2009 cognet

Remove unused variables.

Spotted out by: Christoph Mallon <christoph d0t mallon AT gmx d0t de>


187911 30-Jan-2009 thompsa

Increment total_bounced busdma stat as required.


187606 23-Jan-2009 imp

Move to having a caps flag. Newer versions of the AT91 family don't
need the bouncing, so save a few copies in that case. Also convert
4-bit code selection to using it.


187603 22-Jan-2009 imp

Don't over-commit the DMA. Use the passed in size of the transfer
rather than a fixed 512... This fixes the mount root problem on at91.
Prior to the SD card reorg, all data transfers were 512 bytes, so we
didn't notice.


187602 22-Jan-2009 imp

Migrate towards using at91_master_clock. Initialize the clocks for
the serial port class when we set the devclass since it is now
no-longer a compile time constant. Eliminate the pci include, as it
isn't relevant or necessary.


187601 22-Jan-2009 imp

Use at91_master_clock instead of AT91C_MASTER_CLOCK.


187600 22-Jan-2009 imp

Remove now-redundant declaration.


187599 22-Jan-2009 imp

Store at91_master_clock in a global variable as opposed to a compile
time constant. This allows us to potentially change it at runtime or
autodetect it early in the boot (the latter being much more likely to
have a good outcome).


187592 22-Jan-2009 cognet

Add a comment explaining what ARM_KERN_DIRECTMAP is all about.

Suggested by: raj


187548 21-Jan-2009 imp

o The f_max is really at91_master_clock / 2, not 30MHz, so compute it as such.
o Only set 4-bit caps on those boards that have 4-bit caps (this means that
because we don't set wire4 yet, this forces us to always use 1-bit bus).
o Don't test wire4 when setting up the bus width, since bad things will
happen if we do.

# This likely won't fix the busted at91 sd card support, but these are
# needful changes for correctness.


187476 20-Jan-2009 mav

Implement MMCBR_IVAR_CAPS. It should better be implemented, or results
can be unpredictable.

PR: arm/128987


187340 16-Jan-2009 cognet

Remove a duplicate #include.


187192 13-Jan-2009 thompsa

Restore the if_*var.h and if_*reg.h to their original names, they dont need to
be different.


186947 09-Jan-2009 raj

Check PCIE link status before accessing the bus.

Some 88F5182-based systems (Linkstation) have problems when PCIE is
accessed without any peripherals present.


186934 09-Jan-2009 raj

Rename Marvell ARM CPU specific file according to r186933.


186933 09-Jan-2009 raj

Fix confusing naming of Marvell ARM CPU specific routines.

- The contents of 'feroceon_cpufuncs' dispatch table was really dedicated for the
new Sheeva CPU (in 88F6xxx and MV-78xxx SOCs), and NOT Feroceon.

- Feroceon CPU (in 88F5xxx SOCs) appears as a regular ARM926EJ-S core and does
not require dedicated routines.

This will be accompanied by a file rename commit.


186932 09-Jan-2009 raj

Improve Marvell SOCs PCI/PCIE driver.

- Provide dedicated rmans for MEM and IO resources.

- Convert PCI IRQ routing info into a table (from callback approach), provide
config data for alternative DB- boards.

- Fix a wrong boundary check error in pcib_mbus_init_bar()

Obtained from: Semihalf


186909 08-Jan-2009 raj

Improve and extend Marvell SOCs platform code.

- Allow for setting per platform MPP/GPIO configuration in the kernel, so
that we can override all settings firmware might set.

- Set decode windows for the remaining on-chip peripherals: CESA, SATA and XOR.

- Improve handling of USB controllers so that all port are available on the
given SOC/platform (e.g. up to three on DB-78xxx), this includes rework of
USB decode windows set-up.

- Other minor fixes and cosmetics.

Obtained from: Semihalf


186901 08-Jan-2009 raj

Minor style(9) corrections.


186899 08-Jan-2009 raj

Adjust Marvell SOC support for A0 chip revision.

- Clean up TCLK handling so that it's dynamically recognized depending on
registers settings or chip version/revision. Update registers definitions.

- Teach SOC ident routine about A0 (initial silicon version for general
audience)

Obtained from: Marvell, Semihalf


186539 28-Dec-2008 bz

Include std.ixp425 for "cpu" and comment out duplicate memory map
options. Using the already included std.avila is not considered
to be entirely right (and the options slightly differ) but the best
match we currently have. Upcoming work should fit better.

Reorder another variable to match the layout of other configs.

Reviewed by: sam, warner (earlier version with options removed)


186525 27-Dec-2008 bz

In additions to the configs from r185478, which also enabled the
use of modules for arm, disable them by adding MODULES_OVERRIDE=""
here as well.

Reviewed by: sam
MFC after: 3 weeks


186524 27-Dec-2008 sam

arm is in DEFAULTS; remove dup

Submitted by: bz


186523 27-Dec-2008 bz

Removed duplicate
makeoptions MODULES_OVERRIDE=""


186461 23-Dec-2008 marcel

Add support for the FPA floating-point format on ARM. The
FPA floating-point format is identical to the VFP format,
but is always stored in big-endian.
Introduce _IEEE_WORD_ORDER to describe the byte-order of
the FP representation.

Obtained from: Juniper Networks, Inc


186441 23-Dec-2008 sam

move IXP4XX EHCI bus shim to the usb directory and rename


186420 23-Dec-2008 sam

NPE cleanups needed for ancillary drivers (e.g. crypto acceleration):
o check feature bits when probing NPE ethernet support
o move firmware loading logic from if_npe to core npe support
o allow multiple refs to core NPE driver
o while here fix hw.npe.debug tunable path


186419 23-Dec-2008 sam

kill NPE_PORTS_MAX, it's not used and likely will not be


186418 23-Dec-2008 sam

Fill in feature control support:
o add definitions for more bits, for masking out IXP465-specific bits,
and %b format string
o add ixp4xx_read_feature_bits to retrieve the mask of valid features
(aka fuse bits)
o add cpu_is_ixp42x() macro
o print feature bits at boot


186417 23-Dec-2008 sam

add IXP465 and generic IXP425 definition


186416 23-Dec-2008 sam

o enable TT and big-endian MMIO
o force a reset before ehci_init to get byte-select setup

LS, FS, and HS devices now work on the Cambria board


186352 20-Dec-2008 sam

Merge support for Gateworks Cambria boards:
o add support for IXP435 cpu's (e.g. 64 irq's)
o add support for Cambria-specific devices: npe, led's (front panel and
octal latch), ehci, mcu, ide cf
o redo memory mapping for xscale/ixp4xx boards: previously memory
was assumed aliased to 0x10000000 but this appears to be true only
for ixp425 systems and breaks operation on others; rework so memory
is assumed to start at 0
o rework NPE configuration support to use NPE id's instead of port #'s;
these changes also rename the associated MAC's to follow the NPE's
they are attached to
o update npe firmware to latest rev (same license) and update default fw
imageid's to match; in particular this adds NPE-A and crypto support
o re-style NPE fw handling code and add a console msg identifying the
attributes of the loaded fw
o fix numerous problems with handling failures during npe setup
o fix npe rx q setup; need to spin waiting for mailbox responses during
early boot stages as qmgr interrupts are not delivered; this fixes
the problem where all 8 traffic classifications were not tied to the
rx q (and eliminates the console msg "remember to fix rx q setup")
o add DELAY to npe MII wait logic for IXP435
o strip down builtin phys->virt address translation table in resource
handling to just those resources that require it and add a console msg
to alert people when this (kludge) table needs to be extended
o purge a bunch of dead netbsd-ism's
o cleanup avila led driver
o add Cambria support to boot2 and rework code for better multi-board support

Notes:
1. NPE-A doesn't work and causes NPE-C to stop working; it is disabled
in the hints
2. USB isn't working yet; controller communicates ok but device
discovery fails
3. Cambria support must be configured separately from IXP425 boards;
multi-board support is TBD

Sponsored by: Hobnob, Gateworks (board donation)
Reviewed by: imp


186240 17-Dec-2008 marcel

Make gpart the default partitioning class on all platforms.
Both ia64 and powerpc were using gpart exclusively already
so there's no change for those two.

Discussed on: arch@


186212 17-Dec-2008 imp

AT_DEBUG and AT_BRK were OBE like 10 years ago, so retire them.

Reviewed by: peter


185640 05-Dec-2008 raj

Avoid confusion and adjust link address range of Marvell Orion kernel so it is
the same as for Kirkwood and Discovery.


185639 05-Dec-2008 raj

Fix configuration of the PCI bridge. This got omitted in the initial import of
this code.


185539 02-Dec-2008 peter

Delete a bunch of empty mergeinfo records caused by local copies.


185522 01-Dec-2008 sam

Switch to ath hal source code. Note this removes the ath_hal
module; the ath module now brings in the hal support. Kernel
config files are almost backwards compatible; supplying

device ath_hal

gives you the same chip support that the binary hal did but you
must also include

options AH_SUPPORT_AR5416

to enable the extended format descriptors used by 11n parts.
It is now possible to control the chip support included in a
build by specifying exactly which chips are to be supported
in the config file; consult ath_hal(4) for information.


185513 01-Dec-2008 stas

- Fix spelling error in comments.

PR: arm/128891
Submitted by: Pavel Pankov <pankov_p@mail.ru>
Approved by: kib (mentor)


185494 30-Nov-2008 stas

- Get rid of unused variable in KTR checks. This allows ktr(4) enabled
ARM kernel to compile.

PR: arm/128897
Submitted by: Pankov Pavel <pankov_p@mail.ru>
Reviewed by: raj
Approved by: kib (mentor, implicit)
MFC after: 1 week


185492 30-Nov-2008 stas

- Get rid of extra include file, erroneously added by the
previous commit. This include file was required by the
first version of the patch.

Approved by: kib (mentor, implicit)


185491 30-Nov-2008 stas

- Obtain main clock frequency dynamically based on CKGR_MCFR register
contents.
- It is possible to override the dynamic configuration by using
AT91C_MAIN_CLOCK option in kernel config.

PR: arm/128961 (based on)
Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de>
Reviewed by: imp
Approved by: kib (mentor, implicit)


185478 30-Nov-2008 sam

enable use of modules but disable them by adding MODULES_OVERRIDE=""
in each config file until we can sort out issues in the modules tree

Reviewed by: imp
MFC after: 1 month


185477 30-Nov-2008 imp

opt_at91.h isn't needed here at all anymore, since the board init
routines have been split out. Remove it. This leaves only one
instance of it in the tree that will be going away soon.


185307 25-Nov-2008 imp

Convert BWCT and HL200 over to new board mechanism as well. The
TSC4370 config file wasn't committed to this tree, so I don't know if
my changes will work on it or not.


185305 25-Nov-2008 imp

Start to make it easier to add AT91RM9200 based boards:
o Copy kb920x_machdep.c to at91_machdep.c
o Move board_init to new board_kb920x.c
o rename ramsize to at91_ramsize and make it accessible to board_* files.
o Delete files.kb920x. We can do this selection with the new boards.
o Add a stub for the tsc4370 board init, which will be added in
a future commit.
o Add new 'devices' at91_board_kb920x and at91_board_tsc4370. More are
needed and will be added in future commits.

Reviewed by: stass, cognet


185300 25-Nov-2008 imp

Whitespace nit.


185288 25-Nov-2008 imp

Save boot args.


185287 25-Nov-2008 imp

more silly whitespace changes.


185270 25-Nov-2008 imp

Fix various whitespace botches, mostly having them at the end of a line.


185267 25-Nov-2008 imp

Replace disclaimer with the one from COPYRIGHT. Joint authors aggreed
to the change.


185266 25-Nov-2008 imp

Replace three magic constants with L1_S_SIZE, since that's what is
really meant in those places.


185265 25-Nov-2008 imp

Tweak the disclaimer section of the license to match COPYRIGHT, for
better or worse. Ok'd by folks that have additional copyrights to the
files in cases where there's joint authorship.


185169 22-Nov-2008 kib

Add sv_flags field to struct sysentvec with intention to provide description
of the ABI of the currently executing image. Change some places to test
the flags instead of explicit comparing with address of known sysentvec
structures to determine ABI features.

Discussed with: dchagin, imp, jhb, peter


185162 22-Nov-2008 kmacy

- bump __FreeBSD version to reflect added buf_ring, memory barriers,
and ifnet functions

- add memory barriers to <machine/atomic.h>
- update drivers to only conditionally define their own

- add lockless producer / consumer ring buffer
- remove ring buffer implementation from cxgb and update its callers

- add if_transmit(struct ifnet *ifp, struct mbuf *m) to ifnet to
allow drivers to efficiently manage multiple hardware queues
(i.e. not serialize all packets through one ifq)
- expose if_qflush to allow drivers to flush any driver managed queues

This work was supported by Bitgravity Inc. and Chelsio Inc.


185098 19-Nov-2008 raj

Improve error handling in pcib_mbus_identify().


185092 19-Nov-2008 raj

Improve style(9) and other cosmetics in Marvell SOCs code.


185091 19-Nov-2008 raj

Fix off-by-one error in mbus_attach().


185090 19-Nov-2008 raj

Enable PCI in Marvell kernel configs.


185089 19-Nov-2008 raj

PCI/PCI-Express support for Marvell systems.

Obtained from: Marvell, Semihalf


185049 18-Nov-2008 stas

- Fix two minor errors in at91 code.

PR: arm/128959
Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de>
Approved by: kib (mentor)


184730 06-Nov-2008 raj

ARM pmap style(9) and cosmetics.


184729 06-Nov-2008 raj

Auto-size kernel page tables allocation on Marvell systems.

This allows mini dumps to fully work for these platforms.

Obtained from: Juniper Networks, Semihalf


184728 06-Nov-2008 raj

Support kernel crash mini dumps on ARM architecture.

Obtained from: Juniper Networks, Semihalf


184452 29-Oct-2008 mav

Allow card reader bridge driver to report maximum supported transfer size.
sdhci supports up to 65535 blocks transfers, at91_mci - one block.

Enable multiblock operations disabled before to follow at91_mci driver
limitations.

Reviewed by: imp@


184310 26-Oct-2008 stas

- Add stream bus_space operations.

Reviewed by: cognet
Approved by: kib (mentor, implicit)
MFC after: 1 week


184309 26-Oct-2008 stas

- Add a missing NULL-pointer check.

Reviewed by: cognet
Approved by: kib (mentor, implicit)
MFC after: 3 days


184205 23-Oct-2008 des

Retire the MALLOC and FREE macros. They are an abomination unto style(9).

MFC after: 3 months


184193 23-Oct-2008 marcel

Add arm/conf/DEFAULTS and populate it with:
machine arm
device mem
options GEOM_BSD
options GEOM_MBR

Remove the first two from all kernel configuration files and
change geom_bsd and geom_mbr from standard to optional.


183958 16-Oct-2008 raj

Eliminate flushing of L2 cache in ARM context switch routines.

With VIPT L2 cache such syncing not only is redundant, but also a performance
penalty.

Pointed out by: cognet


183886 14-Oct-2008 sam

correct sizeof calculation

PR: arm/128095
Submitted by: Henning Petersen
MFC after: 1 week


183878 14-Oct-2008 raj

Initial support of loader(8) for ARM machines running U-Boot.

This uses the common U-Boot support lib (sys/boot/uboot, already used on
FreeBSD/powerpc), and assumes the underlying firmware has the modern API for
stand-alone apps enabled in the config (CONFIG_API).

Only netbooting is supported at the moment.

Obtained from: Marvell, Semihalf


183873 14-Oct-2008 raj

Add kernel config files for Marvell development boards.

FreeBSD 8-CURRENT was tested and run successfully on the following eval
boards and devices :

* DB-88F5182, DB-88F5281 (Orion based)

* DB-88F6281, RD-88F6281 (Kirkwood based)

* DB-78100 (Discovery based)

For more detailed info on build instructions and other examples please refer
to http://wiki.freebsd.org/FreeBSDMarvell

Obtained from: Marvell, Semihalf


183840 13-Oct-2008 raj

Introduce basic support for Marvell families of system-on-chip ARM devices:

* Orion
- 88F5181
- 88F5182
- 88F5281

* Kirkwood
- 88F6281

* Discovery
- MV78100

The above families of SOCs are built around CPU cores compliant with ARMv5TE
instruction set architecture definition. They share a number of integrated
peripherals. This commit brings support for the following basic elements:

* GPIO
* Interrupt controller
* L1, L2 cache
* Timers, watchdog, RTC
* TWSI (I2C)
* UART

Other peripherals drivers will be introduced separately.

Reviewed by: imp, marcel, stass (Thanks guys!)
Obtained from: Marvell, Semihalf


183839 13-Oct-2008 raj

One more L2 cache synchronization call that didn't make the previous commit.


183838 13-Oct-2008 raj

Provide L2 cache synchronization (write back + invalidation) on ARM.

Note the cpu_l2cache_wbinv_* routines are no-ops on systems not populated with
L2 caches.

Obtained from: Marvell, Semihalf


183836 13-Oct-2008 raj

Do not use cached page for temporary mapping in pmap_zero_page_generic()

The physical page which we clear is accessed via additional temp kernel
mapping for the period of zeroing operation. However in systems with virtual
d-cache (most ARMs) when write-allocate feature is enabled, we can have
modified but unflushed content pertaining to this physical page still in the
d-cache due to its primary (pre-existing) mapping. In such scenario that
cached content upon flush is likely to overwrite [portions of] the physical
page we want to zero here..

This is a general problem with multiple virtual mappings covering the same
physical page with write-allocate and virtual d-cache: there is inherent
potential for corruptions of this kind, which are not easily resolved; it is
best policy that such multiple mappings be not allowed.

Obtained from: Marvell, Semihalf


183835 13-Oct-2008 raj

Introduce low-level support for new Marvell core CPUs: 88FR131, 88FR571.

They are compliant with ARMv5TE and integrated on 88F6281 (Kirkwood) and
MV78100 (Discovery) system-on-chip families.

Obtained from: Marvell, Semihalf


183670 07-Oct-2008 imp

Use bus_get_dma_tag() instead of NULL here. Not really needed for atmel
at the moment, but it is more correct.


183557 02-Oct-2008 bms

Allow static hints to override kenv.


183527 01-Oct-2008 peter

Collect N identical (or near identical) mkdumpheader() implementations into
one, as threatened in the comment. Textdump magic can be passed in.


183479 30-Sep-2008 imp

Properly implement read only. Also, the caps implementation is wrong
here, so I'm backing it out.


183451 28-Sep-2008 imp

Implement MMCBR_IVAR_CAPS for AT91 MCI device.

Submitted by: mav@ (well, not this one, but the base impl was)


183429 28-Sep-2008 imp

White space nit.


183397 27-Sep-2008 ed

Replace all calls to minor() with dev2unit().

After I removed all the unit2minor()/minor2unit() calls from the kernel
yesterday, I realised calling minor() everywhere is quite confusing.
Character devices now only have the ability to store a unit number, not
a minor number. Remove the confusion by using dev2unit() everywhere.

This commit could also be considered as a bug fix. A lot of drivers call
minor(), while they should actually be calling dev2unit(). In -CURRENT
this isn't a problem, but it turns out we never had any problem reports
related to that issue in the past. I suspect not many people connect
more than 256 pieces of the same hardware.

Reviewed by: kib


183322 24-Sep-2008 kib

Change the static struct sysentvec and struct Elf_Brandinfo initializers
to the C99 style. At least, it is easier to read sysent definitions
that way, and search for the actual instances of sigcode etc.

Explicitely initialize sysentvec.sv_maxssiz that was missed in most
sysvecs.

No objection from: jhb
MFC after: 1 month


182946 11-Sep-2008 cognet

Bandaid: disable interrupts to make sure intr_enabled and the IER register
are in sync. I'm not sure why it is needed, and why it wouldn't be on other
arm platforms, but it prevents a lockup under heavy I/O.


182945 11-Sep-2008 cognet

Remove the unused field "pc_prvspace" from the MD fields for the struct
pcpu. There's not even a thing such as a "struct pcup".
While I'm there, remove a comment that makes no sense for arm.

Spotted out by: Mark Tinguely


182934 11-Sep-2008 raj

ARM nexus style(9) improvements.


182933 11-Sep-2008 raj

ARM interrupts improvements.

- Fix nexus_setup_intr() abuse of setting up multiple IRQs in one go. Calling
arm_setup_irqhandler() in loop is bogus, as there's just one cookie given
from the caller and it is overwritten in each iteration so that only the
last handler's cookie value prevails.

- Proper intr masking/unmasking handling: the IRQ source is masked at PIC level
only after the last handler has been removed from the list.

Reviewed by: cognet, imp, sam, stass
Obtained from: Grzegorz Bernacki gjb ! semihalf dot com


182932 11-Sep-2008 raj

IXP425: split handling of the two QMGR interrupts so they are separately
managed. Adjust ixpqmgr_{attach,detach} to comply with device_* interface.

Reviewed by: cognet, imp, sam, stass
Tested by: cognet


182859 08-Sep-2008 imp

Commit the no-brainer parts of my space saving kernel experiments. We
don't inline the locking primitives, and only grab those parts of mii
that we really need. Other space optimizations are too agressive for
the generic file (removing all of usb, and loading it as kernel
modules).


182852 07-Sep-2008 imp

Minor cleanup of this config file:
o It has been tested only on KB9202, KB9202A and KB9202B boards
o Better comments about hints
o option<space><tab>
o Add newer SX_NOINLINE option.
o Fix a few comments


182807 05-Sep-2008 imp

Turn some lame pseudo-code into a less lame comment.


182806 05-Sep-2008 imp

Kill bogus #if 0'd stuff for interrupts. They don't happen, and this
driver will need more serious help to work with an interrupt driven
path. There's many subtleties in driving the DMA engine with
interrupts in many configurations. Best to not "guess" what the right
way would be and mislead people.


182805 05-Sep-2008 imp

Kill vestiges of the special case code we once had in place for usb
memory allocation. It was change to include the range in the normal
memory area, so these ifdef'd out special cases are no longer useful
to keep around.


182803 05-Sep-2008 imp

Kill bogus #if 1. There's no need for it since usb works these days.


182555 31-Aug-2008 imp

Use a locally assigned address rather than stealing Atmel's which
might cause a conflict...


182524 31-Aug-2008 stas

- Fix comment.
- Set U/L bit of generated ethernet address to 1 to not
clash with Atmel assigned addresses.

Suggested by: yar
Approved by: kib (mentor)


182477 30-Aug-2008 stas

- Try to look for MAC address in all SA registers, not only in the
first one. U-boot, for example, uses the second register to store
MAC.[1]
- Use random MAC address if none configured instead of failing.

Submitted by: Bjorn Konig <bkoenig@alpha-tierchen.de> [1]
Reviewed by: imp
Approved by: kib (mentor)
MFC after: 1 week


182476 30-Aug-2008 stas

- Style fix.

Approved by: kib (mentor)
MFC after: 1 week


182086 23-Aug-2008 imp

Whitespace nit.


181884 19-Aug-2008 imp

Provide hooks into the GPIO lines and the ability to set/clear
interrupts from them. This should be more generalized, but is
sufficient for now.

Submitted by: Hans Petter Selasky


181883 19-Aug-2008 imp

Use the proper clock domain for the usb host controller.

Submitted by: Hans Petter Selasky


181882 19-Aug-2008 imp

Add IRQ line for usb device. I'm not 100% sure this is the right
place to add this connection, since the interrupt is for a GPIO pin,
but since we have no alternative at the moment...

Submitted by: Hans Petter Selasky


181875 19-Aug-2008 jhb

Export 'struct pcpu' to userland w/o requiring _KERNEL. A few ports
already define _KERNEL to get to this and I'm about to add hooks to
libkvm to access per-CPU data.

MFC after: 1 week


181803 17-Aug-2008 bz

Commit step 1 of the vimage project, (network stack)
virtualization work done by Marko Zec (zec@).

This is the first in a series of commits over the course
of the next few weeks.

Mark all uses of global variables to be virtualized
with a V_ prefix.
Use macros to map them back to their global names for
now, so this is a NOP change only.

We hope to have caught at least 85-90% of what is needed
so we do not invalidate a lot of outstanding patches again.

Obtained from: //depot/projects/vimage-commit2/...
Reviewed by: brooks, des, ed, mav, julian,
jamie, kris, rwatson, zec, ...
(various people I forgot, different versions)
md5 (with a bit of help)
Sponsored by: NLnet Foundation, The FreeBSD Foundation
X-MFC after: never
V_Commit_Message_Reviewed_By: more people than the patch


181303 04-Aug-2008 jhb

Add locking to the various iicbus(4) bridge drivers:
- Just grab Giant in the ixp425_iic(4) driver since this driver uses
a shared address/data register window pair to access the actual
I2C registers. None of the other ixp425 drivers lock access to these
shared address/data registers yet and that would need to be done before
this could use any meaningful locking.
- Add locking to the interrupt handler and 'iicbus_reset' methods of the
at91_twi(4) driver.
- Add locking to the pcf(4) driver. Other pcf(4) fixes include:
- Don't needlessly zero the softc.
- Use bus_foo rather than bus_space_foo and remove bus space tag and
handle from softc.
- The lpbb(4) driver just grabs Giant for now. This will be refined later
when ppbus(4) is locked.
- As was done with smbus earlier, move the DRIVER_MODULE() lines to match
the bus driver (either iicbus or iicbb) to the bridge driver into the
bridge drivers.

Tested by: sam (arm/ixp425)


181302 04-Aug-2008 cognet

Do not modify td->td_intr_nesting_level, it is now done in the MI code.
This fixes the cpu time being falsely reported as interrupt time.

MFC after: 3 days


181296 04-Aug-2008 raj

Fix ARM nocache allocator:

- let the loop iterate every page (as intended), and not some multiplies
(which led to a fake exhaustion of the ARM_NOCACHE_KVA_SIZE)

- eliminate using MIN(): it compared number of pages vs. address
(ARM_TP_ADDRESS), which was bogus

Reviewed by: cognet, imp
Obtained from: Piotr Ziecik kosmo ! semihalf dot com
MFC after: 3 days


181293 04-Aug-2008 cognet

Remove unneeded #include <stdlib.h> (?)

MFC after: 3 days


181253 03-Aug-2008 cognet

Add "add pc, whatever" as a branch instruction, we use it in memcpy().

MFC after: 3 days


181233 03-Aug-2008 ed

Disconnect drivers that haven't been ported to MPSAFE TTY yet.

As clearly mentioned on the mailing lists, there is a list of drivers
that have not been ported to the MPSAFE TTY layer yet. Remove them from
the kernel configuration files. This means people can now still use
these drivers if they explicitly put them in their kernel configuration
file, which is good.

People should keep in mind that after August 10, these drivers will not
work anymore. Even though owners of the hardware are capable of getting
these drivers working again, I will see if I can at least get them to a
compilable state (if time permits).


181229 03-Aug-2008 imp

Kernel config for the Linksys NSLU2. This is just a basic configuration,
with no support for the LED, buttons, realtime clock or flash support.


181223 03-Aug-2008 cognet

Handle ldr pc, [reg] in branch_taken().

Obtained from: NetBSD
MFC after: 3 days


181222 03-Aug-2008 cognet

Add blx as a branch instruction.

MFC after: 3 days


181219 02-Aug-2008 imp

Minor style nit.


181174 02-Aug-2008 cognet

Add yet another branch instruction.

Obtained from: NetBSD
MFC after: 3 days


181158 02-Aug-2008 ed

Make the at91 uart(4) driver compile again.

As of r178766 this driver didn't compile anymore, because it missed a
switch()-statement. I'm getting tired of seeing this driver being broken
for two months already. When I run `make universe', everything passes,
except the BWCT kernel configuration file.


181157 02-Aug-2008 imp

ixp425 parts aren't multicore, so remove the SMP option. They also
don't support the ioapic either, so remove that option too. These
were commented out, but could never be enabled, unlike the other
options in the file that are commented out.


181156 02-Aug-2008 imp

Conform to the options<space><tab> convention everywhere in this file.
This is just a white space change, no functional change.


181144 02-Aug-2008 cognet

Store the PC while context switching, for the benefits of DDB.


180693 22-Jul-2008 stas

- Whitespace fixes.

Approved by: gonzo
MFC after: 1 week


180584 18-Jul-2008 alc

Eliminate unused global variables. (These global variables became fields of
struct kva_md_info many years ago.)


180486 12-Jul-2008 ticso

fix multicast hash register definition


180209 03-Jul-2008 peter

Exclude .cvsignore files from $FreeBSD$ checking


179990 25-Jun-2008 ed

Remove the unused major/minor numbers from iodev and memdev.

Now that st_rdev is being automatically generated by the kernel, there
is no need to define static major/minor numbers for the iodev and
memdev. We still need the minor numbers for the memdev, however, to
distinguish between /dev/mem and /dev/kmem.

Approved by: philip (mentor)


179745 12-Jun-2008 kevlo

Fix a typo: i80321_pci_probe -> i81342_pci_probe


179701 10-Jun-2008 kevlo

Add the pxa_teardown_intr() bus method function to de-associate the
interrupt handler


179700 10-Jun-2008 kevlo

Pull all the code to deal with bus space methods into a shared set of
routines.


179693 09-Jun-2008 wkoszek

Since we create a DMA tag "mtag" for TX map with bus_dmamap_create(),
we must synchronize such a map against "mtag" with bus_dmamap_sync(),
not the tag designated for RX map.

Fix it.

Approved by: cognet


179664 09-Jun-2008 kevlo

Remove sa1_cache_clean_addr


179663 09-Jun-2008 kevlo

Unify arminit() and clean up


179595 06-Jun-2008 benno

Support for the XScale PXA255 SoC as found on the Gumstix Basix and Connex
boards. This is enough to net-boot to multiuser.

Also supported is the SMSC LAN91C111 parts used on the netCF, netDUO and netMMC
add-on boards.

I'll be putting some instructions on how to boot this on the Gumstix boards
online soon.

This is still fairly rough and will be refined over time but I felt it was
better to get this out there where other people can help out.


179375 28-May-2008 imp

Release the resources for the registers for the TWI device with
SYS_RES_MEMORY to match how we allocate them...

Noticed by: Ian Lepore


179229 23-May-2008 alc

The VM system no longer uses setPQL2(). Remove it and its helpers.


179081 18-May-2008 alc

Retire pmap_addr_hint(). It is no longer used.


178893 09-May-2008 alc

Add a stub for pmap_align_superpage() on machines that don't (yet)
implement pmap-level support for superpages.


178766 04-May-2008 peter

Expand kdb_alt_break a little, most commonly used with the option
ALT_BREAK_TO_DEBUGGER. In addition to "Enter ~ ctrl-B" (to enter the
debugger), there is now "Enter ~ ctrl-P" (force panic) and
"Enter ~ ctrl-R" (request clean reboot, ala ctrl-alt-del on syscons).

We've used variations of this at work. The force panic sequence is
best used with KDB_UNATTENDED for when you just want it to dump and
get on with it.

The reboot request is a safer way of getting into single user than
a power cycle. eg: you've hosed the ability to log in (pam, rtld, etc).
It gives init the reboot signal, which causes an orderly reboot.

I've taken my best guess at what the !x86 and non-sio code changes
should be.

This also makes sio release its spinlock before calling KDB/DDB.


178471 25-Apr-2008 jeff

- Add an integer argument to idle to indicate how likely we are to wake
from idle over the next tick.
- Add a new MD routine, cpu_wake_idle() to wakeup idle threads who are
suspended in cpu specific states. This function can fail and cause the
scheduler to fall back to another mechanism (ipi).
- Implement support for mwait in cpu_idle() on i386/amd64 machines that
support it. mwait is a higher performance way to synchronize cpus
as compared to hlt & ipis.
- Allow selecting the idle routine by name via sysctl machdep.idle. This
replaces machdep.cpu_idle_hlt. Only idle routines supported by the
current machine are permitted.

Sponsored by: Nokia


178429 22-Apr-2008 phk

Now that all platforms use genclock, shuffle things around slightly
for better structure.

Much of this is related to <sys/clock.h>, which should really have
been called <sys/calendar.h>, but unless and until we need the name,
the repocopy can wait.

In general the kernel does not know about minutes, hours, days,
timezones, daylight savings time, leap-years and such. All that
is theoretically a matter for userland only.

Parts of kernel code does however care: badly designed filesystems
store timestamps in local time and RTC chips almost universally
track time in a YY-MM-DD HH:MM:SS format, and sometimes in local
timezone instead of UTC. For this we have <sys/clock.h>

<sys/time.h> on the other hand, deals with time_t, timeval, timespec
and so on. These know only seconds and fractions thereof.

Move inittodr() and resettodr() prototypes to <sys/time.h>.
Retain the names as it is one of the few surviving PDP/VAX references.

Move startrtclock() to <machine/clock.h> on relevant platforms, it
is a MD call between machdep.c/clock.c. Remove references to it
elsewhere.

Remove a lot of unnecessary <sys/clock.h> includes.

Move the machdep.disable_rtc_set sysctl to subr_rtc.c where it belongs.
XXX: should be kern.disable_rtc_set really, it's not MD.


178372 21-Apr-2008 phk

Make genclock standard on all platforms.

Thanks to: grehan & marcel for platform support on ia64 and ppc.


178366 20-Apr-2008 cognet

On the AT91, we need to write on the EOI register after we handle an
interrupt. So, add a new function pointer, arm_post_filter, which defaults
to NULL, and which will be used as the post_filter arg for
intr_event_create(). Set it properly for the AT91, so that it boots again.

Reported by: hps


178354 20-Apr-2008 sam

Multi-bss (aka vap) support for 802.11 devices.

Note this includes changes to all drivers and moves some device firmware
loading to use firmware(9) and a separate module (e.g. ral). Also there
no longer are separate wlan_scan* modules; this functionality is now
bundled into the wlan module.

Supported by: Hobnob and Marvell
Reviewed by: many
Obtained from: Atheros (some bits)


178092 11-Apr-2008 jeff

- Add the interrupt vector number to intr_event_create so MI code can
lookup hard interrupt events by number. Ignore the irq# for soft intrs.
- Add support to cpuset for binding hardware interrupts. This has the
side effect of binding any ithread associated with the hard interrupt.
As per restrictions imposed by MD code we can only bind interrupts to
a single cpu presently. Interrupts can be 'unbound' by binding them
to all cpus.

Reviewed by: jhb
Sponsored by: Nokia


178001 08-Apr-2008 kevlo

Remove some long-dead code

Reviewed by: cognet


177944 05-Apr-2008 cognet

Remove bus_space_generic.c from the per-plarform files. Having it in the
per-cpu files should be enough.


177943 05-Apr-2008 cognet

Add bus_space_generic.c for the i81342 as well.


177940 05-Apr-2008 jhb

Add a MI intr_event_handle() routine for the non-INTR_FILTER case. This
allows all the INTR_FILTER #ifdef's to be removed from the MD interrupt
code.
- Rename the intr_event 'eoi', 'disable', and 'enable' hooks to
'post_filter', 'pre_ithread', and 'post_ithread' to be less x86-centric.
Also, add a comment describe what the MI code expects them to do.
- On amd64, i386, and powerpc this is effectively a NOP.
- On arm, don't bother masking the interrupt unless the ithread is
scheduled in the non-INTR_FILTER case to match what INTR_FILTER did.
Also, don't bother unmasking the interrupt in the post_filter case if
we never masked it. The INTR_FILTER case had been doing this by having
arm_unmask_irq for the post_filter (formerly 'eoi') hook.
- On ia64, stray interrupts are now masked for the non-INTR_FILTER case.
They were already masked in the INTR_FILTER case.
- On sparc64, use the a NULL pre_ithread hook and use intr_enable_eoi() for
both the 'post_filter' and 'post_ithread' hooks to match what the
non-INTR_FILTER code did.
- On sun4v, retire the ithread wrapper hack by using an appropriate
'post_ithread' hook instead (it's what 'post_ithread'/'enable' was
designed to do even in 5.x).

Glanced at by: piso
Reviewed by: marius
Requested by: marius [1], [5]
Tested on: amd64, i386, arm, sparc64


177920 04-Apr-2008 imp

Fix stupid typo


177916 04-Apr-2008 raj

Make kernel.tramp build properly on ARM9E.

Reviewed by: imp
Approved by: cognet (mentor)


177888 03-Apr-2008 raj

Now really add the bus_space_generic.c file...

Reviewed by: sam
Approved by: cognet (mentor)


177887 03-Apr-2008 raj

Refactor certain ARM bus space methods: instead of having multiple copies of
the same code introduce sys/arm/arm/bus_space_generic.c for a shared set of
routines.

Reviewed by: sam
Approved by: cognet (mentor)


177886 03-Apr-2008 raj

Fix AVILA build.

Reviewed by: sam
Approved by: cognet(mentor)


177883 03-Apr-2008 imp

Take the first baby step towards unifying and cleaning up arminit():
- Pull all the code to deal with the trampoline stuff into one
centeralized place and use it from everywhere.
- Some minor style tidiness

Reviewed by: tinguely


177874 03-Apr-2008 imp

KERNBASE + 0x00200000 is the same thing as KERNVIRTADDR on this
platform, so use the latter in preference to the former. This makes
the fake_preload setup be the same between kb920x_machdep.c and
avila_machdep.c....


177873 03-Apr-2008 imp

Remove unnecessary #define.


177662 27-Mar-2008 dfr

Add kernel module support for nfslockd and krpc. Use the module system
to detect (or load) kernel NLM support in rpc.lockd. Remove the '-k'
option to rpc.lockd and make kernel NLM the default. A user can still
force the use of the old user NLM by building a kernel without NFSLOCKD
and/or removing the nfslockd.ko module.


177661 27-Mar-2008 jb

When building a kernel module, define MAXCPU the same as SMP so
that modules work with and without SMP.


177508 22-Mar-2008 cognet

We need to prototype _start() as well, as we use it to test if we're running
from flash or from RAM.

Reported by: imp
MFC After: 3 days


177506 22-Mar-2008 sam

add hints to specify how NPE ports are mapped to MAC+PHY; these
could be commented out as they just duplicate the defaults that
are built into the code

Reviewed by: imp
MFC after: 1 week


177505 22-Mar-2008 sam

Improve mac+phy configuration so that hints can be used to describe
layouts different than the defaults:
o hint.npe.0.mac="A", "B", etc. specifies the window for MAC register accesses
o hint.npe.0.mii="A", "B", etc. specifies PHY registers
o hint.npe.1.phy=%d specifies the PHY to map to a port

This allows devices like NSLU to be setup w/o code changes and will
also be used for forthcoming support for more Avila boards.

Reviewed by: imp
MFC after 1 week


177461 20-Mar-2008 sam

add usb devices and more wlan stuff now that usb is functional

MFC after: 1 month


177456 20-Mar-2008 sam

map device 5; the optional USB controller on Gateworks 2348 boards
shows up here instead of the minipci slot at J4

Reviewed by: cognet, imp
MFC after: 1 week


177325 17-Mar-2008 jhb

Simplify the interrupt code a bit:
- Always include the ie_disable and ie_eoi methods in 'struct intr_event'
and collapse down to one intr_event_create() routine. The disable and
eoi hooks simply aren't used currently in the !INTR_FILTER case.
- Expand 'disab' to 'disable' in a few places.
- Use function casts for arm and i386:intr_eoi_src() instead of wrapper
routines since to trim one extra indirection.

Compiled on: {arm,amd64,i386,ia64,ppc,sparc64} x {FILTER, !FILTER}
Tested on: {amd64,i386} x {FILTER, !FILTER}


177253 16-Mar-2008 rwatson

In keeping with style(9)'s recommendations on macros, use a ';'
after each SYSINIT() macro invocation. This makes a number of
lightweight C parsers much happier with the FreeBSD kernel
source, including cflow's prcc and lxr.

MFC after: 1 month
Discussed with: imp, rink


177181 14-Mar-2008 jhb

Add preliminary support for binding interrupts to CPUs:
- Add a new intr_event method ie_assign_cpu() that is invoked when the MI
code wishes to bind an interrupt source to an individual CPU. The MD
code may reject the binding with an error. If an assign_cpu function
is not provided, then the kernel assumes the platform does not support
binding interrupts to CPUs and fails all requests to do so.
- Bind ithreads to CPUs on their next execution loop once an interrupt
event is bound to a CPU. Only shared ithreads are bound. We currently
leave private ithreads for drivers using filters + ithreads in the
INTR_FILTER case unbound.
- A new intr_event_bind() routine is used to bind an interrupt event to
a CPU.
- Implement binding on amd64 and i386 by way of the existing pic_assign_cpu
PIC method.
- For x86, provide a 'intr_bind(IRQ, cpu)' wrapper routine that looks up
an interrupt source and binds its interrupt event to the specified CPU.
MI code can currently (ab)use this by doing:

intr_bind(rman_get_start(irq_res), cpu);

however, I plan to add a truly MI interface (probably a bus_bind_intr(9))
where the implementation in the x86 nexus(4) driver would end up calling
intr_bind() internally.

Requested by: kmacy, gallatin, jeff
Tested on: {amd64, i386} x {regular, INTR_FILTER}


177105 12-Mar-2008 raj

Respect RF_SHAREABLE flag in ARM nexus_setup_intr()

Reviewed by: imp
Approved by: cognet (mentor)


177103 12-Mar-2008 raj

Improve ARM bus_dmamap_load_buffer() error handling.

Reviewed by: imp
Approved by: cognet (mentor)
Spotted by: Grzegorz Bernacki gjb AT semihalf DOT com


177091 12-Mar-2008 jeff

Remove kernel support for M:N threading.

While the KSE project was quite successful in bringing threading to
FreeBSD, the M:N approach taken by the kse library was never developed
to its full potential. Backwards compatibility will be provided via
libmap.conf for dynamically linked binaries and static binaries will
be broken.


176886 06-Mar-2008 cognet

MFi386:
revision 1.6
date: 2004/08/21 18:50:34; author: alc; state: Exp; lines: +3 -1
Properly free the temporary sf_buf in uiomove_fromphys() if a copyin or
copyout fails.

Obtained from: DragonFlyBSD

Spotted out by: Mark Tinguely
MFC After: 3 days


176885 06-Mar-2008 cognet

Remove unused pv_list_count from the vm_page, and pm_count from the struct
pmap.

Submitted by: Mark Tinguely


176820 05-Mar-2008 kevlo

Add rl(4) support


176759 03-Mar-2008 kevlo

Convert to be a 2-clause bsd-only license.

Pointed out by: rwatson


176589 26-Feb-2008 rwatson

Remove errant % in license comment.

MFC after: 3 days


176588 26-Feb-2008 rwatson

On the ixp425, when we fail to initialize the memory rman instance, the
panic message should read "memory", not "IRQ".

MFC after: 3 days


175983 05-Feb-2008 raj

ARM locore cosmetics.

Approved by: cognet (mentor)


175982 05-Feb-2008 raj

Improve ARM_TP_ADDRESS and RAS area.

De-hardcode usage of ARM_TP_ADDRESS and RAS local storage, and move this
special purpose page to a more convenient place i.e. after the vectors high
page, more towards the end of address space. Previous location (0xe000_0000)
caused grief if KVA was to go beyond the default limit.

Note that ARM world rebuilding is required after this change since the
location of ARM_TP_ADDRESS is shared between kernel and userland.

Submitted by: Grzegorz Bernacki (gjb AT semihalf dot com)
Reviewed by: imp
Approved by: cognet (mentor)


175840 31-Jan-2008 cognet

Bring in the nice work from Mark Tinguely on arm pmap.
The only downside is that it renames pmap_vac_me_harder() to pmap_fix_cache().
From Mark's email on -arm :
pmap_get_vac_flags(), pmap_vac_me_harder(), pmap_vac_me_kpmap(), and
pmap_vac_me_user() has been rewritten as pmap_fix_cache() to be more
efficient in the kernel map case. I also removed the reference to
the md.kro_mappings, md.krw_mappings, md.uro_mappings, and md.urw_mappings
counts.

In pmap_clearbit(), we can also skip over tests and writeback/invalidations
in the PVF_MOD and PVF_REF cases if those bits are not set in the pv_flag.
PVF_WRITE will turn caching back on and remove the PV_MOD bit.

In pmap_nuke_pv(), the vm_page_flag_clear(pg, PG_WRITEABLE) has been moved
to the pmap_fix_cache().

We can be more agressive in attempting to turn caching back on by calling
pmap_fix_cache() at times that may be appropriate to turn cache on
(a kernel mapping has been removed, a write has been removed or a read
has been removed and we know the mapping does not have multiple write
mappings to a page).

In pmap_remove_pages() the cpu_idcache_wbinv_all() is moved to happen
before the page tables are NULLed because the caches are virtually
indexed and virtually tagged.

In pmap_remove_all(), the pmap_remove_write(m) is added before the
page tables are NULLed because the caches are virtually indexed and
virtually tagged. This also removes the need for the caches fixing routine
(whichever is being used pmap_vac_me_harder() or pmap_fix_cache()) to be
called on any of these mappings.

In pmap_remove(), I simplified the cache cleaning process and removed
extra TLB removals. Basically if more than PMAP_REMOVE_CLEAN_LIST_SIZE
are removed, then just flush the entire cache.


175768 28-Jan-2008 ru

Add a wrapper function that bound checks writes to the dump device.


175418 17-Jan-2008 jhb

- Retire npe_defrag(), gem_defrag(), msk_defrag(), nfe_defrag(), and
re_defrag() and use m_collapse() instead.
- Replace a reference to ath_defrag() in a comment in if_wpi.c with
m_collapse().


175397 17-Jan-2008 cognet

Unbreak build by adding the missing parameter to pmap_enter().


175255 12-Jan-2008 cognet

Back when I committed the arm port, I've been asked to move
memcpy/memset/memcmp and friends from libkern/arm to arm/arm/support.S, and so
I did, but in the process, I didn't add the appropriate copyrights.
This is a major oversight from me, and I apology to the NetBSD people for it.

MFC After: 1 day


175120 07-Jan-2008 cognet

Add a missing \n.


175067 03-Jan-2008 alc

Add an access type parameter to pmap_enter(). It will be used to implement
superpage promotion.

Correct a style error in kmem_malloc(): pmap_enter()'s last parameter is
a Boolean.


175066 03-Jan-2008 imp

Use correct function name in panic message


175064 03-Jan-2008 imp

Modernize comment about diagnostic.


174938 27-Dec-2007 alc

Add configuration knobs for the superpage reservation system. Initially,
the reservation will only be enabled on amd64.


174898 25-Dec-2007 rwatson

Add a new 'why' argument to kdb_enter(), and a set of constants to use
for that argument. This will allow DDB to detect the broad category of
reason why the debugger has been entered, which it can use for the
purposes of deciding which DDB script to run.

Assign approximate why values to all current consumers of the
kdb_enter() interface.


174880 23-Dec-2007 stas

- Fix a typo in comments.

MFC after: 1 week
Approved by: cognet


174781 19-Dec-2007 imp

Actually program the interrupt controller for priorities. As we
support more AT91 platforms, we'll need to move this into some
platform init routine.


174700 17-Dec-2007 kevlo

Use M_NOWAIT instead of M_WAITOK to cause malloc() to return NULL

Reviewed by: imp


174661 16-Dec-2007 stas

- Don't return 0xffff if PHY id isn't equal 0. This allows PHYs with
non-zero addresses to be used.

Approved by: cognet
MFC after: 2 weeks


174540 11-Dec-2007 cognet

There's no need to call pmap_vac_me_harder() in pmap_protect(), as it
already happened in pmap_modify_pv().

Submitted by: Mark Tinguely <tinguely AT casselton DOT net>


174405 07-Dec-2007 jkoshy

Add stubs to unbreak LINT.


174402 07-Dec-2007 cognet

Fix style in previous commit.

Pointed out by: njl


174378 06-Dec-2007 cognet

Erm, add a missing else, we do not want to increase the mapping counters for
both kernel and userland when we create a pv for pmap_kernel.

Reported by: Mark Tinguely <tinguely AT casselton DOT net>
MFC After: 3 days


174195 02-Dec-2007 rwatson

Break out stack(9) from ddb(4):

- Introduce per-architecture stack_machdep.c to hold stack_save(9).
- Introduce per-architecture machine/stack.h to capture any common
definitions required between db_trace.c and stack_machdep.c.
- Add new kernel option "options STACK"; we will build in stack(9) if it is
defined, or also if "options DDB" is defined to provide compatibility
with existing users of stack(9).

Add new stack_save_td(9) function, which allows the capture of a stacktrace
of another thread rather than the current thread, which the existing
stack_save(9) was limited to. It requires that the thread be neither
swapped out nor running, which is the responsibility of the consumer to
enforce.

Update stack(9) man page.

Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v
Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)


174181 02-Dec-2007 cognet

Fix a potential bug in pmap :
We used to allocate the domains 0-14 for userland, and leave the domain 15
for the kernel. Now supersections requires the use of domain 0, so we
switched the kernel domain to 0, and use 1-15 for userland.
How it's done currently, the kernel domain could be allocated for a
userland process.
So switch back to the previous way we did things, set the first available
domain to 0, and just add 1 to get the real domain number in the struct pmap.

Reported by: Mark Tinguely <tinguely AT casselton DOT net>
MFC After: 3 days


174176 02-Dec-2007 cognet

Move the strongarm-specific files from conf/files.arm to sa11x0/files.sa11xO.

Submitted by: Rafal Jaworowski <raj AT semihalf DOT com>


174172 02-Dec-2007 cognet

Cleanup : make nexus standard, as it is mandatory anyway.
Garbage-collect unused nexus_io.c and nexus_io_asm.S

Submitted by: Rafal Jaworowski <raj AT semihalf DOT com>


174170 02-Dec-2007 cognet

Close a race.

The RAS implementation would set the end address, then the start
address. These were used by the kernel to restart a RAS sequence if
it was interrupted. When the thread switching code ran, it would
check these values and adjust the PC and clear them if it did.

However, there's a small flaw in this scheme. Thread T1, sets the end
address and gets preempted. Thread T2 runs and also does a RAS
operation. This resets end to zero. Thread T1 now runs again and
sets start and then begins the RAS sequence, but is preempted before
the RAS sequence executes its last instruction. The kernel code that
would ordinarily restart the RAS sequence doesn't because the PC isn't
between start and 0, so the PC isn't set to the start of the sequence.
So when T1 is resumed again, it is at the wrong location for RAS to
produce the correct results. This causes the wrong results for the
atomic sequence.

The window for the first race is 3 instructions. The window for the
second race is 5-10 instructions depending on the atomic operation.
This makes this failure fairly rare and hard to reproduce.

Mutexs are implemented in libthr using atomic operations. When the
above race would occur, a lock could get stuck locked, causing many
downstream problems, as you might expect.

Also, make sure to reset the start and end address when doing a syscall, or
a malicious process could set them before doing a syscall.

Reviewed by: imp, ups (thanks guys)
Pointy hat to: cognet
MFC After: 3 days


174058 28-Nov-2007 cognet

Fixes for ARM9/ARM10 :
Call uma_sel_align() there at well.
Set CPU_CONTROL_VECRELOC if we're using the high vectors page.

Submitted by: Rafal Jaworowski <raj AT semihalf DOT com>
MFC After: 1 week


174051 28-Nov-2007 cognet

Correct the logic : we can just invalidate the cache lines, and not
write-back them, only if PREWRITE is not set, and if the buffer is
cache-line aligned.

MFC After: 1 week


173999 27-Nov-2007 cognet

In atomic_fetchadd_32(), do not blindly increase the value of %3.
It should just contain the value we want to add, as if we're interrupted
between the add and the str, we will restart from the beginning. Just use
a register we can scratch instead.

MFC After: 1 week


173988 27-Nov-2007 jhb

Remove the 'needbounce' variable from the _bus_dmamap_load_buffer()
routine. It is not needed as the existing tests for segment coalescing
already handle bounced addresses and it prevents legal segment coalescing
in certain edge cases.

MFC after: 1 week
Reviewed by: scottl


173708 17-Nov-2007 alc

Prevent the leakage of wired pages in the following circumstances:
First, a file is mmap(2)ed and then mlock(2)ed. Later, it is truncated.
Under "normal" circumstances, i.e., when the file is not mlock(2)ed, the
pages beyond the EOF are unmapped and freed. However, when the file is
mlock(2)ed, the pages beyond the EOF are unmapped but not freed because
they have a non-zero wire count. This can be a mistake. Specifically,
it is a mistake if the sole reason why the pages are wired is because of
wired, managed mappings. Previously, unmapping the pages destroys these
wired, managed mappings, but does not reduce the pages' wire count.
Consequently, when the file is unmapped, the pages are not unwired
because the wired mapping has been destroyed. Moreover, when the vm
object is finally destroyed, the pages are leaked because they are still
wired. The fix is to reduce the pages' wired count by the number of
wired, managed mappings destroyed. To do this, I introduce a new pmap
function pmap_page_wired_mappings() that returns the number of managed
mappings to the given physical page that are wired, and I use this
function in vm_object_page_remove().

Reviewed by: tegge
MFC after: 6 weeks


173696 17-Nov-2007 cognet

Add a kernel config file for the Hot-e HL200 (AT91RM92 based).
Many thanks to John Nicholls from Thinklinx for sending sample hardware.


173615 14-Nov-2007 marcel

o Rename cpu_thread_setup() to cpu_thread_alloc() to better
communicate that it relates to (is called by) thread_alloc()
o Add cpu_thread_free() which is called from thread_free()
to counter-act cpu_thread_alloc().

i386: Have cpu_thread_free() call cpu_thread_clean() to
preserve behaviour.
ia64: Have cpu_thread_free() call mtx_destroy() for the
mutex initialized in cpu_thread_alloc().

PR: ia64/118024


173600 14-Nov-2007 julian

generally we are interested in what thread did something as
opposed to what process. Since threads by default have teh name of the
process unless over-written with more useful information, just print the
thread name instead.


173442 08-Nov-2007 cognet

Add entries for the L2 cache-related functions for armv5.

Spotted out by: Rafal Jaworowski


173361 05-Nov-2007 kib

Fix for the panic("vm_thread_new: kstack allocation failed") and
silent NULL pointer dereference in the i386 and sparc64 pmap_pinit()
when the kmem_alloc_nofault() failed to allocate address space. Both
functions now return error instead of panicing or dereferencing NULL.

As consequence, vmspace_exec() and vmspace_unshare() returns the errno
int. struct vmspace arg was added to vm_forkproc() to avoid dealing
with failed allocation when most of the fork1() job is already done.

The kernel stack for the thread is now set up in the thread_alloc(),
that itself may return NULL. Also, allocation of the first process
thread is performed in the fork1() to properly deal with stack
allocation failure. proc_linkup() is separated into proc_linkup()
called from fork1(), and proc_linkup0(), that is used to set up the
kernel process (was known as swapper).

In collaboration with: Peter Holm
Reviewed by: jhb


173336 04-Nov-2007 cognet

Remove a staled comment, NPE-C should work fine.

Reviewed by: sam


173249 01-Nov-2007 kevlo

__CPU_XSCALE_PXA2XX -> CPU_XSCALE_PXA2X0


173215 31-Oct-2007 kevlo

Don't define get_cachetype() for CPU_ARM9E unless it's going to be used.


173155 29-Oct-2007 imp

kill commented out line of code.


172993 25-Oct-2007 cognet

Add an option to be able to override the value of the AT91 master clock
frequency. It'd be better to be able to calculate it at runtime, but we need
the information very early, to setup the uart.


172992 25-Oct-2007 cognet

Move some KB920x-specific options into the KB920x file.


172989 25-Oct-2007 cognet

Oooops, get the end of the memory right.


172945 24-Oct-2007 cognet

KERNBASE should really be KERNVIRTADDR there too.

MFC after: 1 week


172944 24-Oct-2007 cognet

In ate_get_mac(), try to get the mac address in the right order, at least
in the same order as it's set in ate_set_mac.
I remember a discussion about this on -arm, but apparently nothing was done.
Warner, is this wrong ?

X-MFC After: proper review


172943 24-Oct-2007 cognet

Handle the case where PHYSADDR != KERNPHYSADDR (ie we do not load the kernel
at the beginning of the RAM).

MFC After: 1 week


172942 24-Oct-2007 cognet

Correct a comment, this was not true anymore.


172739 18-Oct-2007 imp

correct guard variable names.


172738 18-Oct-2007 imp

Merge support from p4 (from NetBSD) for arm9e and arm10, arm11 cores. Not
yet connected to the build, but reduces diffs to p4 repo.

Obtained from: NetBSD


172734 18-Oct-2007 imp

Merge definitions for ARM9E, ARM10 and ARM11 processors from p4 (which
got them from NetBSD).


172713 16-Oct-2007 cognet

Use the direct mapping, if available, for pmap_zero_page_xscale() as well.


172614 13-Oct-2007 cognet

Do not use __XSCALE__ to detect if pld/strd/ldrd is available, use
_ARM_ARCH_5E instead.

MFC After: 3 days


172613 13-Oct-2007 cognet

Define _ARM_ARCH_5E too, so that we know if pld/strd/ldrd are available.

MFC After: 3 days


172568 12-Oct-2007 kevlo

Spelling fix for interupt -> interrupt


172394 30-Sep-2007 marius

Make the PCI code aware of PCI domains (aka PCI segments) so we can
support machines having multiple independently numbered PCI domains
and don't support reenumeration without ambiguity amongst the
devices as seen by the OS and represented by PCI location strings.
This includes introducing a function pci_find_dbsf(9) which works
like pci_find_bsf(9) but additionally takes a domain number argument
and limiting pci_find_bsf(9) to only search devices in domain 0 (the
only domain in single-domain systems). Bge(4) and ofw_pcibus(4) are
changed to use pci_find_dbsf(9) instead of pci_find_bsf(9) in order
to no longer report false positives when searching for siblings and
dupe devices in the same domain respectively.
Along with this change the sole host-PCI bridge driver converted to
actually make use of PCI domain support is uninorth(4), the others
continue to use domain 0 only for now and need to be converted as
appropriate later on.
Note that this means that the format of the location strings as used
by pciconf(8) has been changed and that consumers of <sys/pciio.h>
potentially need to be recompiled.

Suggested by: jhb
Reviewed by: grehan, jhb, marcel
Approved by: re (kensmith), jhb (PCI maintainer hat)


172358 27-Sep-2007 cognet

Ok I hope I got it right this time.
After discussion with Sam, switch back to use firmware(9) instead of
having the firmware in hex format.
Put the binary firmware uuencoded into sys/contrib/dev/npe, and slap a
LICENSE file, as found on the Intel website.

Approved by: re (blanket), mux (mentor)
MFC After: 1 week


172357 27-Sep-2007 cognet

Now that Intel changed the license for the NPE firmware, import it directly
hexed into our tree, instead of requiring the user to download it.

Approved by: re (blanket)
MFC after: 1 week


172356 27-Sep-2007 cognet

Fix a comment to reflect the truth.

Spotted out by: Marius Nuennerich <marius.nuennerich AT gmx D0T de>
Approved by: re (blanket)


172317 25-Sep-2007 alc

Change the management of cached pages (PQ_CACHE) in two fundamental
ways:

(1) Cached pages are no longer kept in the object's resident page
splay tree and memq. Instead, they are kept in a separate per-object
splay tree of cached pages. However, access to this new per-object
splay tree is synchronized by the _free_ page queues lock, not to be
confused with the heavily contended page queues lock. Consequently, a
cached page can be reclaimed by vm_page_alloc(9) without acquiring the
object's lock or the page queues lock.

This solves a problem independently reported by tegge@ and Isilon.
Specifically, they observed the page daemon consuming a great deal of
CPU time because of pages bouncing back and forth between the cache
queue (PQ_CACHE) and the inactive queue (PQ_INACTIVE). The source of
this problem turned out to be a deadlock avoidance strategy employed
when selecting a cached page to reclaim in vm_page_select_cache().
However, the root cause was really that reclaiming a cached page
required the acquisition of an object lock while the page queues lock
was already held. Thus, this change addresses the problem at its
root, by eliminating the need to acquire the object's lock.

Moreover, keeping cached pages in the object's primary splay tree and
memq was, in effect, optimizing for the uncommon case. Cached pages
are reclaimed far, far more often than they are reactivated. Instead,
this change makes reclamation cheaper, especially in terms of
synchronization overhead, and reactivation more expensive, because
reactivated pages will have to be reentered into the object's primary
splay tree and memq.

(2) Cached pages are now stored alongside free pages in the physical
memory allocator's buddy queues, increasing the likelihood that large
allocations of contiguous physical memory (i.e., superpages) will
succeed.

Finally, as a result of this change long-standing restrictions on when
and where a cached page can be reclaimed and returned by
vm_page_alloc(9) are eliminated. Specifically, calls to
vm_page_alloc(9) specifying VM_ALLOC_INTERRUPT can now reclaim and
return a formerly cached page. Consequently, a call to malloc(9)
specifying M_NOWAIT is less likely to fail.

Discussed with: many over the course of the summer, including jeff@,
Justin Husted @ Isilon, peter@, tegge@
Tested by: an earlier version by kris@
Approved by: re (kensmith)


172300 22-Sep-2007 cognet

Make sure we do not call _arm_bzero() or _arm_memcpy() if the size is not at
least the minimum asked by the driver.

Approved by: re (blanket)


172299 22-Sep-2007 cognet

Add various macros for the ADMA unit.

Approved by: re (blanket)


172297 22-Sep-2007 cognet

Add a driver for the 7seg found on the CRB board, largely based on the
IQ31244 version.

Approved by: re (blanket)


172296 22-Sep-2007 cognet

Twist the RAS logic a bit to avoid branching.

MFC After: 1 week
Approved by: re (blanket)


172245 19-Sep-2007 cognet

Remove dead code.

Approved by: re (blanket)
Beer from: jadawin


172196 16-Sep-2007 imp

Kill bogus printf debugs.

Approved by: re@ (blanket)


172195 16-Sep-2007 imp

Kill overly verbose messages about setting bus width.

Approved by: re@ (blanket)


172189 15-Sep-2007 alc

It has been observed on the mailing lists that the different categories
of pages don't sum to anywhere near the total number of pages on amd64.
This is for the most part because uma_small_alloc() pages have never been
counted as wired pages, like their kmem_malloc() brethren. They should
be. This changes fixes that.

It is no longer necessary for the page queues lock to be held to free
pages allocated by uma_small_alloc(). I removed the acquisition and
release of the page queues lock from uma_small_free() on amd64 and ia64
weeks ago. This patch updates the other architectures that have
uma_small_alloc() and uma_small_free().

Approved by: re (kensmith)


172152 12-Sep-2007 cognet

It's probably time I learn C.
Fix a few while (!uart_getreg() & SR1_TNF) when
while (!(uart_getreg() & SR18TNF)) was really meant.
This driver should die anyway, it's awful, and uart_ns8250 should be fine
for the StrongArm 1110. I'll kill it later.

Submitted by: Mikhael Skvorts
Approved by: re (blanket)


172104 09-Sep-2007 cognet

In __bswap16_var(), make sure the 16 upper bits are cleared; while
optimizing, gcc4 doesn't always do so.

Reported by: Nathan Whitehorn
Approved by: re (blanket)


172046 04-Sep-2007 cognet

There's no need to re-read PCIR_COMMAND once we set it.

Approved by: re (blanket)


171890 18-Aug-2007 cognet

Just wbinv if both PREREAD and PREWRITE are set.
In PREREAD, just invalidate the cache lines, and do not write back them, if
the buffer is properly aligned.

Approved by: re (blanket)


171788 08-Aug-2007 cognet

Ooops, we need to define TD_LOCK here.

Approved by: re (blanket)
Pointy hat to: cognet


171781 07-Aug-2007 cognet

Add cast to silent gcc warnings.

Approved by: re (blanket)


171780 07-Aug-2007 cognet

Use the third argument of cpu_switch(), as done for i386/amd63, as it is
required for ULE.

Approved by: re (blanket)


171674 31-Jul-2007 imp

Add in all the USB devices and all the wireless goo. The KB9202 has
only USB 1.1 speeds available, but this shouldn't hurt. Now that we have
working usb support for this board, this is a natural followup.

Approved by: re (kensmith)


171673 31-Jul-2007 imp

Make USB work on the KB9202{,A,B} boards. This has been in p4 for about
7 months. You must have JP6 in the 1-2 position to supply power to the
USB devices, but I've used uftdi, uplcom and umass successfully. If you
have it in 2-3, then nothing will show up. Also, if you have the FQPA
packaging for the AT91RM9200 (like the KN9202 boards have), you will get
the following message

uhub0: device problem (IOERROR), disabling port 2

due to a hardware erratum. It is safe to ignore as it is about pins that
aren't brought out on the FQPA package and aren't proeprly terminated either.
Alas, there's no register to read to tell the FQPA from the BGA versions.

Submitted by: Daan Vreeken
Approved by: re (kensmith)


171672 31-Jul-2007 cognet

MFppc:
revision 1.66
date: 2007/07/31 06:23:26; author: marcel; state: Exp; lines: +2 -2
Fix backward compatibility of the "old" (i.e. FreeBSD6) lseek
syscall. It was broken when a new lseek syscall was introduced.
The problem is that we need to swap the 32-bit td_retval values
for the __syscall indirect syscall when the actual syscall has
a 32-bit return value. Hence, we need to exclude lseek(2). And
this means the "old" lseek(2) as well -- which we didn't.

Based on a patch from: grehan@

Approved by: re (blanket)


171631 27-Jul-2007 cognet

CRB config file.

Approved by: re (blanket)


171630 27-Jul-2007 cognet

XScale core 3 definitions.

Approved by: re (blanket)


171629 27-Jul-2007 cognet

Cleanup

Approved by: re (blanket)


171628 27-Jul-2007 cognet

Do not define NIRQ, it is already defined in include/intr.h

Approved by: re (blanket)


171627 27-Jul-2007 cognet

Share the timer and watchdog drivers with the i81342. It's the same,
except it uses different registers.

Approved by: re (blanket)


171626 27-Jul-2007 cognet

Add initial IOP342 support.
Thanks to Intel for providing sample hardware.

Approved by: re (blanket)


171625 27-Jul-2007 cognet

Say if the L2 cache is enabled or disabled as well.

Approved by: re (blanket)


171623 27-Jul-2007 cognet

Handle supersections and L2 cache.

Approved by: re (blanket)


171622 27-Jul-2007 cognet

Use supersection instead of standard sections to map the whole memory
when available.

Approved by: re (blanket)


171621 27-Jul-2007 cognet

Fix the cache mode description.

Approved by: re (blanket)


171620 27-Jul-2007 cognet

Properly handle supersections.
Make sure we cache entries in the L2 cache.

Approved by: re (blanket)


171619 27-Jul-2007 cognet

Bring in two bandaids to get the elf trampoline to work again, until I find
a proper solution.
- Add a dummy entry point which just calls the C entry points, and try to make
sure it's the first code in the binary.
- Copy a bit more than func_end to try to copy the whole load_kernel()
function. gcc4 puts code behind the func_end symbol.

Approved by: re (blanket)


171618 27-Jul-2007 cognet

Add a new set of functions to handle L2 cache. Make them no-op for every
CPU except Xscale core 3.

Approved by: re (blanket)


171617 27-Jul-2007 cognet

Import xscale core 3 cache management functions.

Approved by: re (blanket)


171616 27-Jul-2007 cognet

INTR_FILTER bits for arm

Approved by: re (blanket)


170827 16-Jun-2007 cognet

The iop34x has 128 interrupts.


170582 11-Jun-2007 cognet

Introduce pmap_kenter_supersection(), which maps 16MB super-sections into
the kernel pmap.
Document a bit more the behavior of the xscale core 3.


170574 11-Jun-2007 imp

Fix a spacing nit.


170502 10-Jun-2007 cognet

Initialize the dma tag's bounce_zone to NULL if we didn't allocate it.


170473 09-Jun-2007 marcel

Add kdb_cpu_sync_icache(), intended to synchronize instruction
caches with data caches after writing to memory. This typically
is required to make breakpoints work on ia64 and powerpc. For
those architectures the function is implemented.


170406 07-Jun-2007 cognet

There's no nobounce_dmamap on arm.


170388 06-Jun-2007 jeff

- PCPU_ADD is no longer spelled with LAZY_ in the middle.

Submitted by: attilio


170305 04-Jun-2007 jeff

- Change comments and asserts to reflect the removal of the global
scheduler lock.

Tested by: kris, current@
Tested on: i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc.
Discussed with: kris, attilio, kmacy, jhb, julian, bde (small parts each)


170291 04-Jun-2007 attilio

Rework the PCPU_* (MD) interface:
- Rename PCPU_LAZY_INC into PCPU_INC
- Add the PCPU_ADD interface which just does an add on the pcpu member
given a specific value.

Note that for most architectures PCPU_INC and PCPU_ADD are not safe.
This is a point that needs some discussions/work in the next days.

Reviewed by: alc, bde
Approved by: jeff (mentor)


170286 04-Jun-2007 marcel

Revert to the previous version where the return value of uart_getenv()
is being ignored. It's optional and the lack of environment variable
is not an error condition.


170277 04-Jun-2007 alc

Add the machine-specific definitions for configuring the new physical
memory allocator.

Approved by: re


170170 31-May-2007 attilio

Revert VMCNT_* operations introduction.
Probabilly, a general approach is not the better solution here, so we should
solve the sched_lock protection problems separately.

Requested by: alc
Approved by: jeff (mentor)


170162 31-May-2007 piso

In some particular cases (like in pccard and pccbb), the real device
handler is wrapped in a couple of functions - a filter wrapper and an
ithread wrapper. In this case (and just in this case), the filter
wrapper could ask the system to schedule the ithread and mask the
interrupt source if the wrapped handler is composed of just an ithread
handler: modify the "old" interrupt code to make it support
this situation, while the "new" interrupt code is already ok.

Discussed with: jhb


170109 29-May-2007 jhay

Remove the hardcoded IXP425_UART?_VBASE values in the
uart_ixp425_probe() and uart_cpu_getdev(). Change
uart_cpu_getdev() to use hints to find the console.

Reviewed by: marcel


170086 29-May-2007 yongari

Honor maxsegsz of less than a page size in a DMA tag. Previously it
used to return PAGE_SIZE without respect to restrictions of a DMA tag.
This affected all of the busdma load functions that use
_bus_dmamap_loader_buffer() as their back-end.

Reviewed by: scottl


170072 28-May-2007 alc

Eliminate some unused definitions that came from NetBSD.


170069 28-May-2007 jhay

We do not need to get the irq out of ivars in ixp425_setup_intr(). By
this time they have already been set. In fact trying to set it here too
breaks irqs for pci devices.


170068 28-May-2007 jhay

Optimize a bit more, both the Avila and Pronghorn Metro boards work with
GPIO_TYPE_EDG_RISING.

Reviewed by: sam


169954 24-May-2007 sam

Search for a proper ucode image to use by incrementing the minor
release number up to the max. This should eliminate the need to
tweak the default imageid define for later releases that are found
on the Intel web site.

MFC after: 1 month


169953 24-May-2007 sam

o add hints for avila boards; brings back i2c devices lost when iicbus
started using hints instead of wired down device enumeration
o add usb commented out; will enable when support works

MFC after: 1 month


169952 24-May-2007 sam

Move to hints for configuring numerous devices so we can eliminate various
quirky code: uarts, led, cf/ide, ixpqmgr, npe are now specified with hints.

May want to put some of these devices back in the code and just use hints
to override/specify configuration.

MFC after: 1 month


169950 24-May-2007 sam

Don't muck with the internal state of a uart during probe, all we
should setup is the class. This corrects an issue where enabling
uart1 on the avila board caused uart0 to stop working during boot
(no msgs generated by rc scripts were displayed).

Reviewed by: imp
MFC after: 3 weeks


169947 24-May-2007 sam

Fix interrupt setup; rev 1.3 switched the irq to GPIO_TYPE_ACT_LOW
but this does not work on avila boards; special case them to use
GPIO_TYPE_EDG_RISING.

MFC after: 3 weeks
Submitted by: jhay


169900 23-May-2007 cognet

Remove duplicate includes.

Submitted by: Cyril Nguyen Huu <cyril ci0 org>


169846 22-May-2007 kan

Allow FreeBSD's native ELF image activators to execute shared libraries the
same way it was enabled for Linux binares in linuxulator.

This allows binaries built with -pie. Many ports auto-detect -fPIE support
in GCC 4.2 and build binaries FreeBSD was unable to run.


169768 19-May-2007 cognet

Use __mcount() instead of _mcount() to reduce diffs with NetBSD.


169764 19-May-2007 cognet

Constify to please gcc 4.2.


169763 19-May-2007 cognet

Do not try to inline pmap_kremove(), as it's exported.


169761 19-May-2007 cognet

Do not try to inline bus_dmamap_sync_buf(), gcc 4.2 doesn't want to do so
because it uses alloca().
Initialize lastaddr in bus_dmamap_load_uio().


169756 19-May-2007 cognet

Switch the kernel's pmap domain from 15 to 0.
This should be a no-op, and this is needed for xscale core 3 supersections
support, as they are always part of the domain 0


169667 18-May-2007 jeff

- define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating
vmcnts. This can be used to abstract away pcpu details but also changes
to use atomics for all counters now. This means sched lock is no longer
responsible for protecting counts in the switch routines.

Contributed by: Attilio Rao <attilio@FreeBSD.org>


169291 05-May-2007 alc

Define every architecture as either VM_PHYSSEG_DENSE or
VM_PHYSSEG_SPARSE depending on whether the physical address space is
densely or sparsely populated with memory. The effect of this
definition is to determine which of two implementations of
vm_page_array and PHYS_TO_VM_PAGE() is used. The legacy
implementation is obtained by defining VM_PHYSSEG_DENSE, and a new
implementation that trades off time for space is obtained by defining
VM_PHYSSEG_SPARSE. For now, all architectures except for ia64 and
sparc64 define VM_PHYSSEG_DENSE. Defining VM_PHYSSEG_SPARSE on ia64
allows the entirety of my Itanium 2's memory to be used. Previously,
only the first 1 GB could be used. Defining VM_PHYSSEG_SPARSE on
sparc64 allows USIIIi-based systems to boot without crashing.

This change is a combination of Nathan Whitehorn's patch and my own
work in perforce.

Discussed with: kmacy, marius, Nathan Whitehorn
PR: 112194


169230 03-May-2007 kevlo

Remove sa1_cache_clean_addr. It isn't needed.


168281 02-Apr-2007 marcel

Don't expose the uart_ops structure directly, but instead have
it obtained through the uart_class structure. This allows us
to declare the uart_class structure as weak and as such allows
us to reference it even when it's not compiled-in.
It also allows is to get the uart_ops structure by name, which
makes it possible to implement the dt tag handling in uart_getenv().
The side-effect of all this is that we're using the uart_class
structure more consistently which means that we now also have
access to the size of the bus space block needed by the hardware
when we map the bus space, eliminating any hardcoding.


167950 27-Mar-2007 n_hibma

Revisit the watchdogs: Resetting the error to EINVAL after failing to set the
watchdog might hide the succesful arming of an earlier one. Accept that on
failing to arm any watchdog (because of non-supported timeouts) EOPNOTSUPP is
returned instead of the more appropriate EINVAL.

MFC after: 3 days


167935 27-Mar-2007 kevlo

Don't map mini-data cache page since ARM920T doesn't have it.


167858 23-Mar-2007 imp

Default to booting off the SD card. It is more useful, and a full
FreeBSD/arm installworld install is only 170MB. The smallest SD card
I could find at the store today was 512MB (and it was only $10 after
rebate), with a 2GB card for as low as $25.00...

Now that the IIC stuff has been sorted out, include that as well.
Include hints for the icee 16kb 16-bit i2c device. It should include
info about the temperature sensor as well, but that driver isn't quite
ready.

Add bpf for dhclient happiness.

MFC After: 1 week


167852 23-Mar-2007 imp

MFp4: A bunch of patches from myself and Tisco to improve the
robustness of IIC transactions when parts aren't present. This also
removes a bunch of debug. This also moves this driver to 7-1
addressing rather than 6-0 addressing, which is more inline with all
the other iic drivers in the tree. I've tested this for about a
million years on the systems at work.


167761 21-Mar-2007 kevlo

Fix a comment


167752 21-Mar-2007 kevlo

Remove __P


167570 14-Mar-2007 jhay

Map the second CS of the compact flash too. This allow us access to
the alternate status and the control registers. Remove the local
version of ata_reset.

Add support for the ADI Pronghorn Metro boards. They use CS3 and CS4
instead of Avila's CS1 and CS2.


167565 14-Mar-2007 jhay

Map the second CS of the compact flash too. This allow us access to
the alternate status and the control registers. Remove the local
version of ata_reset.

Add support for the ADI Pronghorn Metro boards. They use CS3 and CS4
instead of Avila's CS1 and CS2.

OKed by: sam, cognet


167429 11-Mar-2007 alc

Push down the implementation of PCPU_LAZY_INC() into the machine-dependent
header file. Reimplement PCPU_LAZY_INC() on amd64 and i386 making it
atomic with respect to interrupts.

Reviewed by: bde, jhb


167263 06-Mar-2007 piso

Wrap ixppcib_setup_intr() at 80.


167262 06-Mar-2007 piso

Wrap a BUS_SETUP_INTR() line at 80.


167261 06-Mar-2007 piso

o substitute INTR_FAST with FILTER in a panic message.
o wrap a BUS_SETUP_INTR() line at 80.


167255 06-Mar-2007 kevlo

Reverse this change. malloc() with M_WAITOK never fails.

Noted by: cognet, brian and thompsa


167219 05-Mar-2007 kevlo

Check for malloc return value


167135 01-Mar-2007 piso

Update bus_setup_intr().

Pointed by: Krassimir Slavchev


167082 27-Feb-2007 jhb

Use tsleep() rather than msleep() with a NULL mtx.


167069 27-Feb-2007 piso

Correct return code (int) for at91_rtc_intr() prototype.

Approved by: cognet


167009 26-Feb-2007 kevlo

Remove unused header file <machine/katelib.h>


167004 26-Feb-2007 cognet

Define FLASHADDR and LOADERRAMADDR for the Avila, so that we can boot a
kernel from the onboard flash.


167003 26-Feb-2007 cognet

Erm we can't change the value of arm_memcpy if we're running from flash.
Instead, make memcpy() check if we're running from flash, and avoid
using arm_memcpy if we're doing so.


166996 25-Feb-2007 cognet

Update for the new prototype of bus_setup_intr().


166974 25-Feb-2007 piso

Fix attach of at91_pio() after bus_setup_intr() modification.

Reported and tested by: Krassimir Slavchev


166901 23-Feb-2007 piso

o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Reviewed by: many
Approved by: re@


166820 19-Feb-2007 cognet

Add two new options, FLASHADDR, which defines the address the flash is
mapped at, and LOADERRAMADDR, the address at which the loader maps the ram at
at the time the kernel is booted.
They are used to detect if the kernel is booted from the onboard flash.
Define those for the IQ31244


166819 19-Feb-2007 cognet

Teach the kernel and the ELF trampoline how to boot from onboard flash.


166818 19-Feb-2007 cognet

There's no such thing as a GENERIC kernel on arm.

Spotted out by: csjp
MFC After: 3 days


166756 15-Feb-2007 luigi

Cleanup and document the implementation of firmware(9) based on
a version that i posted earlier on the -current mailing list,
and subsequent feedback received.

The core of the change is just in sys/firmware.h and kern/subr_firmware.c,
while other files are just adaptation of the clients to the ABI change
(const-ification of some parameters and hiding of internal info,
so this is fully compatible at the binary level).

In detail:
- reduce the amount of information exported to clients in struct firmware,
and constify the pointer;

- internally, document and simplify the implementation of the various
functions, and make sure error conditions are dealt with properly.

The diffs are large, but the code is really straightforward now (i hope).

Note also that there is a subtle issue with the implementation of
firmware_register(): currently, as in the previous version, we just
store a reference to the 'imagename' argument, but we should rather
copy it because there is no guarantee that this is a static string.
I realised this while testing this code, but i prefer to fix it in
a later commit -- there is no regression with respect to the past.

Note, too, that the version in RELENG_6 has various bugs including
missing locks around the module release calls, mishandling of modules
loaded by /boot/loader, and so on, so an MFC is absolutely necessary
there. I was just postponing it until this cleanup to avoid doing
things twice.

MFC after: 1 week


166697 14-Feb-2007 kevlo

Add KTR tracing


166695 14-Feb-2007 kevlo

style(9) cleanup.


166694 14-Feb-2007 kevlo

In sendsig:

- Add sigacts locking.
- Add a mutex to struct sigacts that protects all the members of the struct.
- Create and log events via the CTRx macros.

Reviewed by: cognet


166688 13-Feb-2007 cognet

Make sure the address is valid before mapping it.

MFC after: 1 week


166686 13-Feb-2007 kevlo

Fix typo: MacPPC -> ARM


166655 11-Feb-2007 cognet

Use uma_set_align().


166625 10-Feb-2007 mlaier

Fix small altq related copy and paste error.


166573 08-Feb-2007 imp

Add sanity check to make sure that the MAC address isn't all 0's. Bad
boot loaders can do this, and this leads to all kinds of ill effects
downstream. Also, minor formatting nits.


166551 07-Feb-2007 marcel

Evolve the ctlreq interface added to geom_gpt into a generic
partitioning class that supports multiple schemes. Current
schemes supported are APM (Apple Partition Map) and GPT.
Change all GEOM_APPLE anf GEOM_GPT options into GEOM_PART_APM
and GEOM_PART_GPT (resp).

The ctlreq interface supports verbs to create and destroy
partitioning schemes on a disk; to add, delete and modify
partitions; and to commit or undo changes made.


166532 06-Feb-2007 imp

at91_twi depends on the iicbus module to satisfy its symbols when
loaded, so make that explicit. Works for the monolithic kernel case,
won't work for the kldload case.


166510 05-Feb-2007 kevlo

<sys/sx.h> is unneeded.


166454 03-Feb-2007 kevlo

ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again.

Approved by: imp, cognet


166414 02-Feb-2007 kevlo

Remove a bogus i = 0

Approved by: cognet


166339 30-Jan-2007 kevlo

Use our own timer that piggybacks on npe_tick() callout instead of
if_watchdog/if_timer interface.

Approved by: sam, cognet


166248 26-Jan-2007 kevlo

Fix comments.

Approved by: cognet


166100 18-Jan-2007 marius

- Add a uart_rxready() and corresponding device-specific implementations
that can be used to check whether receive data is ready, i.e. whether
the subsequent call of uart_poll() should return a char, and unlike
uart_poll() doesn't actually receive data.
- Remove the device-specific implementations of uart_poll() and implement
uart_poll() in terms of uart_getc() and the newly added uart_rxready()
in order to minimize code duplication.
- In sunkbd(4) take advantage of uart_rxready() and use it to implement
the polled mode part of sunkbd_check() so we don't need to buffer a
potentially read char in the softc.
- Fix some mis-indentation in sunkbd_read_char().

Discussed with: marcel


166064 17-Jan-2007 cognet

Create bus dma tags for both the PCI bus and the IXP425 root bus. Set the
PCI bus' one as the default one, and explicitely use the other one for
non-PCI devices.
This is needed because the PCI bus can only address 64MB of RAM, while some
IXP425 boards have 128MB or more, and most of the PCI drivers do not bother
providing the parent dma tag.


166063 17-Jan-2007 cognet

- Add bounce pages for arm, largely based on the i386 implementation.
- Add a default parent dma tag, similar to what has been done for sparc64.
- Before invalidating the dcache in POSTREAD, save the bits which are in the
same cachelines than our buffers, but not part of it, and restore them after
the invalidation.


165799 05-Jan-2007 ticso

Hints are handled differently on -current
Don't include hints.at91rm9200 for now


165787 05-Jan-2007 ticso

MFp4: Use the next possible value for hz instead of defaulting to 128
Update tick value after modifying hz.


165786 05-Jan-2007 ticso

MFp4: Add missing atomic functions
Based on a patch by: des


165784 05-Jan-2007 ticso

MFp4: add BWCT kernel configuration


165783 05-Jan-2007 ticso

MFp4: Make at91_rtc optional to allow other RTC choices


165781 05-Jan-2007 ticso

MFp4: Read access require PDC to be setup first otherwise we might get
overrun errors.
Write access however need cmd first, so keep the existing order
for them.


165780 05-Jan-2007 ticso

MFp4: BWCT boards are using an 16MHz xtal


165779 05-Jan-2007 ticso

MFp4: Add VLAN_MTU support


165778 05-Jan-2007 ticso

MFp4: fix a race in transmit buffer handling


165713 01-Jan-2007 imp

MFp4: Fix bit name for SPI SR register


165712 01-Jan-2007 imp

MFp4: Remove watchdog timeout that appears to be unused.


165711 01-Jan-2007 imp

Merge from FreeBSD-tsf-6 by way of p4:
correct values for PIO registers

submitted by: patrick schweiger


165260 15-Dec-2006 n_hibma

Align the interfaces for the various watchdogs and make the interface
behave as expected.

Also:
- Return an error if WD_PASSIVE is passed in to the ioctl as only
WD_ACTIVE is implemented at the moment. See sys/watchdog.h for an
explanation of the difference between WD_ACTIVE and WD_PASSIVE.
- Remove the I_HAVE_TOTALLY_LOST_MY_SENSE_OF_HUMOR define. If you've
lost your sense of humor, than don't add a define.

Specific changes:

i80321_wdog.c
Don't roll your own passive watchdog tickle as this would defeat the
purpose of an active (userland) watchdog tickle.

ichwd.c / ipmi.c:
WD_ACTIVE means active patting of the watchdog by a userland process,
not whether the watchdog is active. See sys/watchdog.h.

kern_clock.c:
(software watchdog) Remove a check for WD_ACTIVE as this does not make
sense here. This reverts r1.181.


164970 07-Dec-2006 sam

Handle a missing NPE firmware file better; if it's missing print a
(somewhat) meaningful message and terminate the build. It'd be
nice to print a proper URL from which to fetch the file but that
seems problematic. Leave a suggested starting point in this file
(TBD: add it to the man page).

Submitted by: ru


164969 07-Dec-2006 cognet

Unbreak build for Skyeye: do not attempt to do any DMA, as Skyeye doesn't
emulate it.

Reported by: ru


164936 06-Dec-2006 julian

Threading cleanup.. part 2 of several.

Make part of John Birrell's KSE patch permanent..
Specifically, remove:
Any reference of the ksegrp structure. This feature was
never fully utilised and made things overly complicated.
All code in the scheduler that tried to make threaded programs
fair to unthreaded programs. Libpthread processes will already
do this to some extent and libthr processes already disable it.

Also:
Since this makes such a big change to the scheduler(s), take the opportunity
to rename some structures and elements that had to be moved anyhow.
This makes the code a lot more readable.

The ULE scheduler compiles again but I have no idea if it works.

The 4bsd scheduler still reqires a little cleaning and some functions that now do
ALMOST nothing will go away, but I thought I'd do that as a separate commit.

Tested by David Xu, and Dan Eischen using libthr and libpthread.


164874 04-Dec-2006 cognet

Do not forget to call pmap_free_l2_bucket() in pmap_remove_pages().
This can fix the pmap-related panics reported on arm.

MFC After: 3 days


164824 02-Dec-2006 cognet

Provide stream operations.


164790 01-Dec-2006 cognet

We can have no PV entry here if the previous mapping was unmanaged, and the new
one is unmanaged too, so update the KASSERT to reflect this.


164779 30-Nov-2006 cognet

In pmap_ts_referenced(), don't attempt to do anything if the page is
fictitious, and just return 0.


164778 30-Nov-2006 cognet

First bits of Xscale core 3 support (the VM bits are far from being optimal
yet).


164777 30-Nov-2006 cognet

Introduce CPU_XSCALE_CORE3, as XScale Core 3 is significally different than
regular Xscale (it has no mini data cache, has armv6-style 16MB
supersections, and can address 36bits).
Define it for i81342.


164763 30-Nov-2006 kevlo

Better i2c bit definitions.

Approved by: cognet


164760 30-Nov-2006 jb

Turn console printf buffering into a kernel option and only on
by default for sun4v where it is absolutely required.

This change moves the buffer from struct pcpu to the stack to avoid
using the critical section which created a LOR in a couple of cases
due to interaction with the tty code and kqueue. The LOR can't be
fixed with the critical section and the pcpu buffer can't be used
without the critical section.

Putting the buffer on the stack was my initial solution, but it was
pointed out that the stress on the stack might cause problems
depending on the call path. We don't have a way of creating tests
for those possible cases, so it's best to leave this as an option
for the time being. In time we may get enough data to enable this
option more generally.


164745 29-Nov-2006 imp

MFp4:
formatting nit


164744 29-Nov-2006 imp

Make this work a lot better:
Remove a lot of older cruft not needed.
Improve ISR support, but it is still unused since polling is faster
Properly initalize the speed register to get 90kb/s, not 400b/s.
Try to catch NACK
Allow 0 length read transfers to generate start/top pairs.


164741 29-Nov-2006 imp

MFp4:
correct data counts so that we clock enough data for the spi
transaction. This allows complete spi transactions to happen.


164508 22-Nov-2006 kevlo

Bring in status led support for /dev/led/gpioled on Avila.

Approved by: cognet


164503 22-Nov-2006 imp

MFp4: Make it work :-)
o Don't delay when checking the done bits. There's no gain other
than a small performance hit.
o calculate the clock divisors better (things are still way slow,
so maybe there's more here?)
o don't always fail reset. Always succeed instead.
o fix inverted logic around at91_twi_wait() return value
o remove debug code
o remove unneeded, unworking junk


164440 20-Nov-2006 kevlo

Match bus space unmap prototype.

Approved by: cognet


164432 20-Nov-2006 imp

MFp4: Tweak descriptions in preparation for porting to other members of
the AT91 arm9 family.


164428 19-Nov-2006 sam

config for Gateworks Avila board booting with NFS-mounted root on npe0

Reviewed by: cognet, imp
MFC after: 1 month


164426 19-Nov-2006 sam

Gateworks Avila board support:
o ixp425 support
o NPE network driver (requires Intel microcode)
o h/w qmgr support
o True IDE compact flash over expansion bus
o pci (ath and hifn795x parts tested)
o xscale watchdog timer
o ds1672 RTC on i2c bus
o ad7418 voltage + temp monitoring on i2c bus
o uart

Work done together with cognet, kevlo, and jmg. Parts of
the ixp425 support obtaine/derived from netbsd.

Reviewed by: cognet, imp
MFC after: 1 month


164425 19-Nov-2006 sam

change bus space unmap protoype

Reviewed by: cognet, imp
MFC After: 1 month


164424 19-Nov-2006 sam

correct bus space unmap prototype

Reviewed by: cognet, imp
MFC after: 1 month


164423 19-Nov-2006 sam

elaborate on stepping names; add intel terminology to help
people cross-referencing intel docs

Reviewed by: imp, cognet
MFC after: 1 month


164355 17-Nov-2006 cognet

Erm we really want to mask all interrupts in the range, just not the first
one.

Submitted by: ru


164351 17-Nov-2006 kevlo

Compile -- remove an unused global variable avail_end.

Approved by: cognet


164250 13-Nov-2006 ru

Fix a comment.


164229 12-Nov-2006 alc

Make pmap_enter() responsible for setting PG_WRITEABLE instead
of its caller. (As a beneficial side-effect, a high-contention
acquisition of the page queues lock in vm_fault() is eliminated.)


164198 11-Nov-2006 alc

Eliminate unused global variables.


164090 08-Nov-2006 alc

MFamd64/ia64/i386/sun4v
Use cnt.v_page_count, the actual count of available physical pages,
instead of vm_page_array_size to compute the maximum number of pv
entries.


164087 08-Nov-2006 cognet

Increate cnt.v_intr on interrupt.


164080 07-Nov-2006 cognet

Identify the xscale 81342.


164079 07-Nov-2006 cognet

In the ARM_USE_SMALL_ALLOC case, vm_page_t may have an address < KERNBASE,
so adjust the KASSERT to reflect this.


164059 07-Nov-2006 cognet

Add atomic_cmpset_acq_32.


163937 03-Nov-2006 imp

MFp4:
o Fix the packet statistics
o Make sure we set the FD bit when in full duplex
o Improve TX side efficency by eliminating a data copy for
unfragmented mbufs (the hardware can't do s/g).
o Minor busdma pedantry
o better comments in some places, more XXX in others
o Minor style nits.

This solves a problem I was seeing where I'd get no ethernet when not
booting with a NFS root. Well, unless I unplugged the cable and
plugged it back in first so I'd get the same up down up messages I get
for NFS root...

Thanks to sam and scottl for suggestions on making this driver more
efficient through better use of approrpiate APIs.


163871 01-Nov-2006 cognet

Do not include both <sys/types.h> and <sys/param.h>, it is a style bug as
sys/types.h is included in sys/param.h, so instead just move the
#include <sys/param.h> before the headers that need it.

Spotted out by: bde


163858 01-Nov-2006 jb

Add a cnputs() function to write a string to the console with
a lock to prevent interspersed strings written from different CPUs
at the same time.

To avoid putting a buffer on the stack or having to malloc one,
space is incorporated in the per-cpu structure. The buffer
size if 128 bytes; chosen because it's the next power of 2 size
up from 80 characters.

String writes to the console are buffered up the end of the line
or until the buffer fills. Then the buffer is flushed to all
console devices.

Existing low level console output via cnputc() is unaffected by
this change. ithread calls to log() are also unaffected to avoid
blocking those threads.

A minor change to the behaviour in a panic situation is that
console output will still be buffered, but won't be written to
a tty as before. This should prevent interspersed panic output
as a number of CPUs panic before we end up single threaded
running ddb.

Reviewed by: scottl, jhb
MFC after: 2 weeks


163810 30-Oct-2006 cognet

Include <sys/types.h>, to get definition for uint32_t.

Submitted by: David Sharp


163711 26-Oct-2006 jb

Remove the KSE option now that it's in DEFAULTS on these arches/machines.

The 'nooption' kernel config entry has to be used to turn KSE off now.
This isn't my preferred way of dealing with this, but I'll defer to
scottl's experience with the io/mem kernel option change and the grief
experienced over that.

Submitted by: scottl@


163709 26-Oct-2006 jb

Make KSE a kernel option, turned on by default in all GENERIC
kernel configs except sun4v (which doesn't process signals properly
with KSE).

Reviewed by: davidxu@


163694 25-Oct-2006 cognet

Let allow to teardown multiple irqs as well.


163693 25-Oct-2006 cognet

Setup multiple interrupts if needed.


163681 25-Oct-2006 imp

MFp4: Move the parameters that are basically dictated by the AT91
organization to that file.


163680 25-Oct-2006 imp

MFp4: Status register bits


163674 24-Oct-2006 cognet

Ooops, dump_avail[i] can be 0 if the RAM starts at 0x00000000, so check that
dump_avail[i + 1] is == 0 as a stop condition instead.
MFC after: 3 days


163553 21-Oct-2006 kevlo

style(9) cleanup.

Approved by: cognet


163551 21-Oct-2006 cognet

Ok I am an idiot. On 32 bits big-endian systems, it is needed to handle the
syscalls using __syscall but only actually returning 32bits, such as mmap(),
specially : they set the return value in td->td_retval[0], but the userland
functions will expect this in r1, and not in r0 as it is normally done, as it
is the LSB. So add a special case for all these syscalls (all except lseek,
which truly returns 64bits).

Many thanks to Peter Grehan for his patience while explaining me the issue.


163547 20-Oct-2006 cognet

Use __QUAD_LOWWORD for __syscall, to always use the good word, whatever the
endianness is.


163537 20-Oct-2006 cognet

There's no need to special-case lseek for arm/big-endian.


163526 20-Oct-2006 imp

MFp4: Working SPI driver.


163525 20-Oct-2006 imp

Commit WIP SSC driver, more work is needed here, but it configures
things OK.


163524 20-Oct-2006 imp

More register definitions.


163523 20-Oct-2006 imp

Progress commit for getting TWI working


163522 20-Oct-2006 imp

Add sysctl to export current state of rmii vs mii configuraiton.
Fix a typo in resource allocation.


163521 20-Oct-2006 imp

Add configuration of the SSC lines for second SSC.


163517 20-Oct-2006 imp

MMC/SD bridge driver (host adapter) for AT91RM9200's MCI interface.
This interface also appears in the AT91SAM9260 and '61 as well as the
AVR32 based micros from Atmel. We don't yet support write protect or
hot-swap in this bridge driver.


163449 17-Oct-2006 davidxu

o Add keyword volatile for user mutex owner field.
o Fix type consistent problem by using type long for old
umtx and wait channel.
o Rename casuptr to casuword.


163016 04-Oct-2006 jb

PR:
Submitted by:
Reviewed by:
Approved by:
Obtained from:
MFC after:
Security:
Move the relocation definitions to the common elf header so that DTrace
can use them on one architecture targeted to a different one.

Add the additional ELF types defines in Sun's "Linker and Libraries"
manual.


162954 02-Oct-2006 phk

First part of a little cleanup in the calendar/timezone/RTC handling.

Move relevant variables to <sys/clock.h> and fix #includes as necessary.

Use libkern's much more time- & spamce-efficient BCD routines.


162487 21-Sep-2006 kan

Use __builtin_va_start instead of __builtin_stdarg_start. GCC4 obsoletes
the former and __builtin_va_start was present in all GCC version 3.1 and
later.


162130 07-Sep-2006 imp

MFp4: first cut at getting I2C transfers working (generically). I'm
unsure if this driver correctly implements all the start/stop junk
right (but it did or didn't before I made this commit).


162129 07-Sep-2006 imp

MFp4: berndt pointed me at an errata that shows that the stat register
offsets were originally documented incorrectly. This fixes that. It
shouldn't affect anything other than error stat reporting.


161735 30-Aug-2006 cognet

Remove dead code, already defined in sys/cdef.h

Spotted out by: bde


161734 30-Aug-2006 cognet

Use ENTRY_NP for alternate entry points instead of ENTRY to avoid calling
mcount twice when profiling.

Spotted out by: bde


161727 29-Aug-2006 cognet

Use ENTRY instead of ALTENTRY, it doesn't exist on arm.


161705 28-Aug-2006 cognet

Ooops m->md.pvh_attrs can't be used to know if the page is writeable, because
it only remembers if the page is modified or referenced.

Bad review from: cognet


161704 28-Aug-2006 cognet

Relocate the vector page for AT91, to work around bugs with the LOW_VECTOR
code.


161675 28-Aug-2006 davidxu

Implement casuword32, compare and set user integer, thank Marcel Moolenarr
who wrote the IA64 version of casuword32.


161670 27-Aug-2006 cognet

Fill in dump_avail[] before pmap_boostrap() is called so that
ARM_USE_SMALL_ALLOC work.


161628 25-Aug-2006 alc

Eliminate unused definitions. (They came from NetBSD.)

Discussed with: cognet, grehan, marcel


161618 25-Aug-2006 cognet

Explicitely set the "allocbuffer" field to NULL when creating a new dmamap.


161617 25-Aug-2006 cognet

Do not create dma maps with bus_dmamap_create, as we call
bus_dmamem_alloc later which will overwrite the value, leading to a small
memory leak.


161592 24-Aug-2006 cognet

Finally bring it support for the i80219 XScale processor.

Submitted by: Max M. Boyarov <m.boyarov bsd by>


161591 24-Aug-2006 cognet

Use ELFDATA2MSB if we're building big endian.

Noticed by: Oleksandr Tymoshenko <gonzo freebsd org>


161334 15-Aug-2006 imp

add comment about why we include opt_global.h


161323 15-Aug-2006 cognet

Ooops we need to include <machine/vmparam.h> to get the definition of
KERNBASE and VM_MAXUSER_ADDRESS.
Remove the useless include of opt_global.h, as noticed by netchild@ (the one
in arm/elf_trampoline.c is legit, because this file is compiled outside the
kernel, and doesn't use the standard CFLAGS).


161138 09-Aug-2006 imp

Hook into the watchdog device, if present. Also, turn off the
watchdog timer stuff when we boot because the boot blocks are turning
it on...


161105 08-Aug-2006 cognet

Rewrite ARM_USE_SMALL_ALLOC so that instead of the current behavior, it maps
whole the physical memory, cached, using 1MB section mappings. This reduces
the address space available for user processes a bit, but given the amount of
memory a typical arm machine has, it is not (yet) a big issue.
It then provides a uma_small_alloc() that works as it does for architectures
which have a direct mapping.


161063 08-Aug-2006 kevlo

Remove a bogus i = 0.
Approved by: cognet


160889 01-Aug-2006 alc

Complete the transition from pmap_page_protect() to pmap_remove_write().
Originally, I had adopted sparc64's name, pmap_clear_write(), for the
function that is now pmap_remove_write(). However, this function is more
like pmap_remove_all() than like pmap_clear_modify() or
pmap_clear_reference(), hence, the name change.

The higher-level rationale behind this change is described in
src/sys/amd64/amd64/pmap.c revision 1.567. The short version is that I'm
trying to clean up and fix our support for execute access.

Reviewed by: marcel@ (ia64)


160801 28-Jul-2006 jhb

Retire SYF_ARGMASK and remove both SYF_MPSAFE and SYF_ARGMASK. sy_narg is
now back to just being an argument count.


160798 28-Jul-2006 jhb

Now that all system calls are MPSAFE, retire the SYF_MPSAFE flag used to
mark system calls as being MPSAFE:
- Stop conditionally acquiring Giant around system call invocations.
- Remove all of the 'M' prefixes from the master system call files.
- Remove support for the 'M' prefix from the script that generates the
syscall-related files from the master system call files.
- Don't explicitly set SYF_MPSAFE when registering nfssvc.


160773 27-Jul-2006 jhb

Unify the checking for lock misbehavior in the various syscall()
implementations and adjust some of the checks while I'm here:
- Add a new check to make sure we don't return from a syscall in a critical
section.
- Add a new explicit check before userret() to make sure we don't return
with any locks held. The advantage here is that we can include the
syscall number and name in syscall() whereas that info is not available
in userret().
- Drop the mtx_assert()'s of sched_lock and Giant. They are replaced by
the more general checks just added.

MFC after: 2 weeks


160740 27-Jul-2006 cognet

Define BYTE_MSF if we're compiling a big endian kernel, so that DDB can
correctly disassemble instructions on big endian.


160683 25-Jul-2006 cognet

Use virtual_avail instead of freemempos as the starting point of the available
physical memory, as the vm uses the memory between freemempos and
virtual_avail.

MFC After: 3 days


160655 25-Jul-2006 kevlo

Cleanup.
Approved by: cognet


160537 20-Jul-2006 alc

Implement pmap_clear_write().

Discussed with: cognet@


160533 20-Jul-2006 cognet

Fix ALT_BREAK_TO_DEBUGGER on the AT91 :
The core uart code expects the receive method to actually puts the
characters read into its buffers. For AT91, it's done in the ipend routine,
so also check if we have the alternate break sequence here.

MFC after: 3 days


160459 18-Jul-2006 cognet

Make sure we use REDUCE32 on the result of do_cksum(), as in_cksum_skip()
expects this. If we do not, this could result in wrong checksums.

MFC after: 1 day


160455 17-Jul-2006 cognet

If we can't defrag a packet, re-queue it instead of dropping it.


160453 17-Jul-2006 cognet

#if => #ifdef


160451 17-Jul-2006 cognet

at91_spi won't compile without spibus, so add it.


160393 15-Jul-2006 cognet

Oops bring back code that shouldn't have been removed by the previous
commit.


160392 15-Jul-2006 cognet

Make sure that if uma_small_alloc() gets called recursively, we just give up
and call kmem_malloc(), to avoid a deadlock.


160374 15-Jul-2006 cognet

Add a comment explaining why the OHCI mapping has been commented out.


160369 14-Jul-2006 imp

MFp4: this now depends on new spi bus stuff


160368 14-Jul-2006 imp

MFp4: tweaks


160366 14-Jul-2006 imp

MFp4: elevate quality of slow clock a little


160365 14-Jul-2006 imp

MFp4: paren police


160363 14-Jul-2006 imp

MFp4:
Introduce framework to configure the multiplexed pins on boot.

Since the USART supprots RS-485 multidrop mode, it allows the
TX pins to float. However, for RS-232 operations, we don't
want these pins to float. Instead, they should be pulled up
to avoid mismatches. Linux does something similar when it
configures the TX lines. This implies that we also allow the
RX lines to float rather than be in the state they are left in
by the boot loader. Since they are input pins, I think that
this is the right thing to do.

Plus minor for our board.


160362 14-Jul-2006 imp

MFp4:
Fix typo in RTC_CALR_MK.


160361 14-Jul-2006 imp

The TSC board uses a 16MHz base clock for the AT91RM9200, while the Kwikbyte
board uses a 10MHz base clock. Cope with this difference.


160359 14-Jul-2006 imp

Implement the set_time function. Rather pointless with this RTC, as it
resets when the core resets, but there may be some use for it...


160358 14-Jul-2006 imp

MF p4:

Adapt to forthcoming spi framework. The ioctls for SPI commands and such
belong in the higher level driver.


160357 14-Jul-2006 imp

Be sure to flush the cache after a partial read on timeout. Expand
comments about timeouts. Fix a style nit. Sometimes small messages
were getting corrupted.


160348 14-Jul-2006 imp

Move some of the common parameters into the std. files for this platform.
Also migrate from MD disk to NFS boot.


160343 14-Jul-2006 cognet

Remove prototype for the undefined function counterhandler().

Submitted by: kevlo


160332 14-Jul-2006 cognet

Add remote GDB bits for arm.


160312 12-Jul-2006 jhb

Simplify the pager support in DDB. Allowing different db commands to
install custom pager functions didn't actually happen in practice (they
all just used the simple pager and passed in a local quit pointer). So,
just hardcode the simple pager as the only pager and make it set a global
db_pager_quit flag that db commands can check when the user hits 'q' (or a
suitable variant) at the pager prompt. Also, now that it's easy to do so,
enable paging by default for all ddb commands. Any command that wishes to
honor the quit flag can do so by checking db_pager_quit. Note that the
pager can also be effectively disabled by setting $lines to 0.

Other fixes:
- 'show idt' on i386 and pc98 now actually checks the quit flag and
terminates early.
- 'show intr' now actually checks the quit flag and terminates early.


160282 12-Jul-2006 cognet

Comment out the mapping of the OHCI controller registers va == pa. This
address is in the userland address space. The proper thing is either to choose
a virtual address in the kernel address space beyond the KVA, or to use
pmap_mapdev().


160260 11-Jul-2006 cognet

Add a new flag to pmap_enter_locked() to say if it's OK to wait. If it is, and
we're unable to allocate the memory for a PTE, we'll wait until we can. If not,
we'll just return.
Use M_NOWAIT|M_USE_RESERVE to allocate PTEs, it is less aggressive than
M_NOWAIT alone.

Suggested by: alc


160072 02-Jul-2006 imp

Add support for configuring pins to be one of {GPIO, PERIPHERAL A or
PERIPHERAL B}, as well as direction of GPIO pin. Add defines for all
the pins.


160071 02-Jul-2006 imp

MFp4:

Make serial ports more robust and reliable. Make non-console ports
work. This might have broken skyeye stuff.

o Introduce ping-pong receive buffers.
o Use DMA to copy characters directly into memory.
o Support baud rates other than 115200
o Use 1 stop bit when 1 stop bit is requested (otherwise 2 were used,
which caused dropped characters when received in bursts).
o Use 1.5 stop bits for 5-bit bytes, and 2 stop bits otherwise when 2
stop bits were requested.
o Actually update line parameters.
o Fix comments
o Move init into attach
o Tweaks to TX interrupt registers to get them reliable and non-storming.
o harvest data in ipend since the latency between it and the callback
was too long. This likely is how it should be, I don't know why I deferred
things to the callback before.
o disable all interrupts in console init. We don't want interrupts until
we turn on an ISR.
o cosmetic tweaks
o Automatically detect of the TIMEOUT interrupt is supported. If so, use
it so we get better CPU utilization. Otherwise do a character at a time
RX. Good news here is that it seems we have enough CPU and low enough
fast interrupt latency to do this reliably.
o Don't read USART_CR. It is a write-only register.
o start to implement bus_ioctl. Do BAUD now...


159902 23-Jun-2006 cognet

Backout previous commit, Warner committed at91_pio.c...


159901 23-Jun-2006 cognet

There's no need to allocate that much phdr/shdr from the stack.


159900 23-Jun-2006 cognet

Add the arm9_setup() prototype.


159899 23-Jun-2006 cognet

Comment out at91_pio.c, it's not in CVS.


159868 22-Jun-2006 cognet

arm9_setup() is now needed even if we're not using a gzipped kernel, so move
it outside the #ifdef KZIP

Pointy Hat to: cognet


159849 21-Jun-2006 imp

Nitsville: the routine is called initarm, not init_arm, correct it in
a comment.


159834 21-Jun-2006 cognet

Don't forget to define uart_sa1110_vaddr.

Submitted by: kevlo


159814 20-Jun-2006 imp

Compute physmem so we can print it correctly on boot.
Slightly optimize while I'm here.


159795 20-Jun-2006 imp

Probe the memory size of the board better. Look at the bus width,
number of banks, rows and columns the SDRAMC is programmed to access
to determine the RAM size for the board, rather than hard-wiring it to
be 32MB. My company's board with 64MB now probes correctly, as does
the KB9202 with only 32MB. This means that to detect the right memory
size, our boot loader must correctly initialize these values. This is
a fairly safe assumption because the boot loader has to initialize
SDRAM already, and it isn't really possible to change this register
after we've accessed SDRAM.


159758 18-Jun-2006 cognet

Make sure the stack is properly aligned.
Enable the MMU when relocating as well, and use write-through cache.


159709 17-Jun-2006 imp

comment out twi for now: no iicbus in KB920X: it breaks booting


159708 17-Jun-2006 imp

Carefully note the RMII bit in the config register at attach time.
The boot loader is supposed to leave this bit set to the right value
for the board. If this bit was set at attach time, use it to init the
config register correctly.

Note: this means the boot loader has to properly initialize it.


159707 17-Jun-2006 imp

improve reporting of clocks


159651 15-Jun-2006 netchild

Remove COMPAT_43 from GENERIC (and other kernel configs). For amd64 there's
an explicit comment that it's needed for the linuxolator. This is not the
case anymore. For all other architectures there was only a "KEEP THIS".
I'm (and other people too) running a COMPAT_43-less kernel since it's not
necessary anymore for the linuxolator. Roman is running such a kernel for a
for longer time. No problems so far. And I doubt other (newer than ia32
or alpha) architectures really depend on it.

This may result in a small performance increase for some workloads.

If the removal of COMPAT_43 results in a not working program, please
recompile it and all dependencies and try again before reporting a
problem.

The only place where COMPAT_43 is needed (as in: does not compile without
it) is in the (outdated/not usable since too old) svr4 code.

Note: this does not remove the COMPAT_43TTY option.

Nagging by: rdivacky


159627 15-Jun-2006 ups

Remove mpte optimization from pmap_enter_quick().
There is a race with the current locking scheme and removing
it should have no measurable performance impact.
This fixes page faults leading to panics in pmap_enter_quick_locked()
on amd64/i386.

Reviewed by: alc,jhb,peter,ps


159557 12-Jun-2006 cognet

MFp4:
- Try hard to calculate a safe sp, so that the stack doesn't get smashed
while uncompressing or relocating the kernel.
- Bring in code needed to calculate the cacheline size etc, needed for
arm9_idcache_wbinv_all.


159556 12-Jun-2006 cognet

MFp4: Increase the L1 pagetable needed for the kernel from 8 to 22, to be
able to boot fat kernels.


159500 11-Jun-2006 alc

Remove pmap_pagedaemon_waken and update pmap_get_pv_entry() to match the
current interface with the machine-independent layer. Without this change,
the page daemon would only have been awakened the first time that the
number of pv entries went above the high water mark, not each time.


159499 11-Jun-2006 alc

Eliminate spl calls.


159474 10-Jun-2006 alc

Add a lock assertion. Remove dead (locking) code. Change some white
space.

Reviewed by: cognet@


159450 09-Jun-2006 alc

Add pmap locking to pmap_extract().

Tested by: cognet@


159387 07-Jun-2006 cognet

Oops it seems I forgot to remove ARM32_NEW_VM_LAYOUT from here.


159384 07-Jun-2006 alc

Add pmap locking to pmap_fault_fixup().

Add an assertion to pmap_vac_me_harder().

Tested by: cognet@


159378 07-Jun-2006 alc

Properly synchronize access to the pmap in pmap_extract_and_hold().

Eliminate an unneeded variable from pmap_extract_and_hold().

Tested by: cognet@


159371 07-Jun-2006 cognet

Now that we use pmap_mapdev_boostrap(), we can get ride of the got_mmu
hack.

Submitted by: kevlo


159365 07-Jun-2006 imp

Remove sa1_cache_clean_addr. It isn't needed.

Submitted by: kevlo


159359 06-Jun-2006 cognet

Convert the last offender, the SA1110 port, to ARM32_NEW_VM_LAYOUT, and
completely nuke the !ARM32_NEW_VM_LAYOUT case.


159358 06-Jun-2006 cognet

Remove a bogus, useless, "i++".


159352 06-Jun-2006 alc

Add partial pmap locking.

Tested by: cognet@


159325 06-Jun-2006 alc

Add partial pmap locking.

Eliminate the unused allpmaps list.

Tested by: cognet@


159322 06-Jun-2006 cognet

Make VERBOSE_INIT_ARM compile by fixing various printf formats, and add it
as an option.

Submitted by: Max N. Boyarov <m.boyarov at bsd dot by>


159321 05-Jun-2006 cognet

vm_page_alloc_contig() can sleep, so don't even think about using it
in the M_NOWAIT case.


159303 05-Jun-2006 alc

Introduce the function pmap_enter_object(). It maps a sequence of resident
pages from the same object. Use it in vm_map_pmap_enter() to reduce the
locking overhead of premapping objects.

Reviewed by: tegge@


159167 02-Jun-2006 cognet

Don't #error if no CPU is defined but we're not compiling the kernel.


159145 01-Jun-2006 cognet

Don't enable the FIQ in enable_interrupts() if F32_bit is not specified.
This has been committed by mistake.

Reported by: ssouhlal


159127 01-Jun-2006 alc

Introduce pmap_enter_locked() and use it to reimplement pmap_enter_quick().

Tested by: cognet@


159108 31-May-2006 cognet

Avoid a LOR by unlocking the vm_page_queue_mtx before calling uma_zalloc,
and freeing the allocated memory if another thread already did the same.


159107 31-May-2006 cognet

If our buffer is not aligned on the cache line size, write back/invalidate
the first and last cache line in PREREAD, and just invalidate the cache
lines in POSTREAD, instead of write-back/invalidating in POSTREAD, which
could lead to stale data overriding what has been transfered by DMA.


159101 31-May-2006 cognet

Ooops arm10 is armv5, not armv4.

Submitted by: kevlo


159100 31-May-2006 cognet

Include machine/cpuconf.h in pmap.h in order to get ARM_NMMUS defined,
to appease -Wundef.


159088 30-May-2006 cognet

Protect the mapping used for pmap_copy_page/pmap_zero_page with a
mutex.


159084 30-May-2006 cognet

To avoid problems, invalidate the data cache and disable the MMU once
we're done uncompressing the kernel.


159073 30-May-2006 cognet

In pmap_is_prefaultable(), assert that the pte isn't NULL if
pmap_get_pde_pte() returns TRUE.

Suggested by: ssouhlal


159070 30-May-2006 cognet

The Assabet has 32MB of RAM, not 16.

Submitted by: kevlo


159068 30-May-2006 benno

In pmap_mapdev we correctly round the address off to the nearest page
boundary, but we must also add the offset back on to the va we return.


159067 30-May-2006 cognet

Uncomment the call to cpu_idcache_wbinv_all() after the MMU has been
enabled. It has been commented out for a reason I forgot but I suspect
does not apply anymore.
Technically speaking it's not required to do it, has the data and the
instruction cache have been disabled in _start(). However, it may change
in the future, so I don't want to rely on this behavior.

Submitted by: kevlo


159047 29-May-2006 cognet

Nuke sa11x0_attach_args. It's a NetBSDIsm, and we have no use for it.

Submitted by: kevlo


158928 26-May-2006 cognet

Remove any reference to enable_mmu(), it's been gone for a long time.

Submitted by: kevlo


158854 23-May-2006 cognet

Use pmap_devmap_bootstrap(), instead of mapping the SACOM1 registers
with pmap_map_entry.
More use of macros instead of hardcoding the addr.

Submitted by: kevlo


158839 22-May-2006 cognet

Use macros instead of hardcoding the address for SACOM1. Also don't
pretend we're working with SACOM3, as we're really mapping SACOM1.

Submitted by: kevlo


158746 19-May-2006 cognet

We have an implementation of generic_bs_rr_1, so use it, as some drivers use
it.

Submitted by: kevlo


158740 19-May-2006 cognet

Comment out SYSCTL_OMIT_DESCR until it's committed.


158733 18-May-2006 cognet

Implement sa11x0_bs_unmap.
Submitted by: kevlo


158732 18-May-2006 cognet

Make this compile (UART_IPEND_* => SER_INT_*).


158593 15-May-2006 cognet

Add definitions for atomic_subtract_rel_32, atomic_add_rel_32 and
atomic_load_acq_32, needed for hwpmc.


158590 15-May-2006 benno

Display real/avail memory as per other platforms.

Approved by: cognet


158581 15-May-2006 cognet

Switch to a 64bit time_t, while it's not a big problem to do so.

Suggested by: imp


158531 13-May-2006 cognet

Resurrect Skyeye support :
Add a new option, SKYEYE_WORKAROUNDS, which as the name suggests adds
workarounds for things skyeye doesn't simulate. Specifically :
- Use USART0 instead of DBGU as the console, make it not use DMA, and manually provoke an interrupt when we're done in the transmit function.
- Skyeye maintains an internal counter for clock, but apparently there's
no way to access it, so hack the timecounter code to return a value which
is increased at every clock interrupts. This is gross, but I didn't find a
better way to implement timecounters without hacking Skyeye to get the
counter value.
- Force the write-back of PTEs once we're done writing them, even if they
are supposed to be write-through. I don't know why I have to do that.


158507 13-May-2006 imp

Tidy up a bit...


158445 11-May-2006 phk

Clean out sysctl machdep.* related defines.

The cmos clock related stuff should really be in MI code.


158432 11-May-2006 cognet

Get this to compile :
- The prototype of uart_bus_probe() hasn't been changed in cvs yet, so use the
old one.
- Add at91_pdcreg.h, needed by uart_dev_at91usart.c.


158396 10-May-2006 cognet

Move the call to cpu_setup() before the call to vm_ksubmap_init().
vm_ksubmap_init() calls pmap_copy_page(), which uses the mini data cache
to do the copy, but we're running uncaching before cpu_setup().
For some reason it hasn't been a problem so far, but it is for the
PXA255.

Spotted out by: benno


158319 05-May-2006 cognet

Setting the rid of the resource is a good idea, but we still need to return
the resource after.


157970 22-Apr-2006 cognet

MFother arches :
date: 2006/04/12 04:22:50; author: alc; state: Exp; lines: +14 -41
Retire pmap_track_modified(). We no longer need it because we do not
create managed mappings within the clean submap. To prevent regressions,
add assertions blocking the creation of managed mappings within the clean
submap.

Reviewed by: tegge


157891 20-Apr-2006 imp

When returning a resource that we've allocated with rman_reserve_resource,
go ahead and set the rid for that resource.


157726 13-Apr-2006 cognet

We need to adjust the bus handle if the resource is SYS_RES_MEMORY, NOT
SYS_RES_IOPORT.


157725 13-Apr-2006 cognet

Disable/enable fiqs as well as irqs.


157618 09-Apr-2006 cognet

MFp4: Use CPU_CONTROL_ROUNDROBIN for arm9, it seems to give marginally
better performances.


157616 09-Apr-2006 cognet

Not only disable/enable interrupts, do it for FIQs as well, when needed.


157615 09-Apr-2006 cognet

MFp4: Don't write-back the PTEs if they are mapped write-through, this was
apparently only needed because skyeye has bugs in its cache emulation.


157570 06-Apr-2006 cognet

MFp4: Catchup with recent UART changes.


157567 06-Apr-2006 cognet

Add a new option, XSCALE_DISABLE_CCNT, to not use the xscale ccnt as a
timecounter (because gxemul doesn't emule it yet).


157564 06-Apr-2006 imp

Add debug writes in error cases that, in theory, should never happen


157563 06-Apr-2006 imp

Connect twi to the FreeBSD iicbus infrastructure.


157562 06-Apr-2006 imp

Pull in numerous fixes from myself and cognet. With these fixes the
KB9202 eval board is finally stable with a nfs root.


157561 06-Apr-2006 imp

Remove unused bit definitions.
Minor style cleanup while I'm here.


157560 06-Apr-2006 imp

Optimize the TX side of the part by using the PDC to move bytes out to
the wire. This increases the speed considerably. Start to put
infrastructure in place to do RX side, but that requires more study
before it can be done.


157443 03-Apr-2006 peter

Remove the unused sva and eva arguments from pmap_remove_pages().


157156 26-Mar-2006 cognet

Implement pmap_object_init_pt() the way it is on sparc64/alpha, by doing
nothing except asserting the vm object is locked, and a device object,
instead of a useless printf.


157091 24-Mar-2006 imp

Skeleton support for the SSC device, which implements I2S interfaces,
amoung others.


157089 24-Mar-2006 imp

Skeleton PIO support.


157088 24-Mar-2006 imp

Add the sekelton of support for the Power Management Controller.


157087 24-Mar-2006 imp

Add rtc to files.at91


157086 24-Mar-2006 imp

Add RTC support. This may be of dubious value since the RTC is reset
to 1998 every reboot.


157029 22-Mar-2006 cognet

MFp4: Don't force single-user now we can go multi-user.
Call cninit() only after the pagetable has been set, as locore.S won't
map the system device for us anymore.


157027 22-Mar-2006 cognet

MFp4: More special casing of when vector_page == 0x00000000 :
catch attempts to write to vector_page earlier in pmap_fault_fixup(),
and deny it.


157025 22-Mar-2006 cognet

MFp4: If we're mapping the vector page (this will happen if we didn't
relocate it), do not attempt to call pmap_vac_me_harder() on the page.
At this point m will be NULL, and we know we won't have any cache
issues with this page.


157024 22-Mar-2006 cognet

MFp4: teach the KB920x bits how to know where the ELF trampoline puts the
strtab and the symtab.


157023 22-Mar-2006 cognet

MFp4: Handle break interrupts (it seems to only work for USART, not DBGU).


156833 18-Mar-2006 imp

MFp4:

Add bus attachment for the ohci device on this chip. The bus and hub
are detected correctly, but the children devices aren't detected
correctly for reasons unknown.


156832 18-Mar-2006 imp

Add ohci controller mapping.


156831 18-Mar-2006 imp

MFp4:

o update TODO list
o Better use of busdma
o mark RX dtors as COHERENT. This helps performance a lot by not requiring
so many EXPENSIVE cache flushes. The cost of accessing it non-cached
is much smaller.
o Copy data from Rx buffers to make IP header 4 byte aligned.
o CRC length included in reported length, so cope
o Don't free TX buffer twice
o Manage TX buffers better.
o Enable just the interrupts we want.
o Manage OACTIVE better

# Some of these done by cognet
# These changes let us get to # via NFS root.


156830 18-Mar-2006 imp

MFP4:
Gratuitously sort alphabetically.


156829 18-Mar-2006 imp

MFP4:

GC and fix definitions.

# some of this may have been done by cognet


156828 18-Mar-2006 imp

MFp4:

o Add memory barrier to bus space
o Allow for up to 3 IRQs per device
o Move to table driven population of children devices.
o Add support for usb ohci memory mapped controller resource allocation.
o Clean up a bunch of extra writes to disable interrupts that are now
done elsewhere.
o Force all system interrupt handlers be fast. We get deadlock if they
aren't.


156827 18-Mar-2006 imp

MFp4:

o Disable all interrupts that the ST can generate until we have an ISR
to service them.
o Correct clock calculation to make DELAY the right length...

Submitted by: cognet (#2)


156520 09-Mar-2006 cognet

MFp4: Forget the asm inlined version of in_cksum_hdr(). It doesn't work if
the pointer is unaligned, and it just doesn't worth it.


156212 02-Mar-2006 cognet

Use BUS_DMA_COHERENT.


156199 02-Mar-2006 cognet

Use 8 * sizeof(int) instead of hardcoding 32, for the unlikely case this
code ever get used on a plateform where sizeof(int) != 4.

Suggested by: jmg


156191 01-Mar-2006 cognet

Try to honor BUS_DMA_COHERENT : if the flag is set, normally allocate memory
with malloc() or contigmalloc() as usual, but try to re-map the allocated
memory into a VA outside the KVA, non-cached, thus making the calls to
bus_dmamap_sync() for these buffers useless.


156175 01-Mar-2006 cognet

Use a better panic message than lol.


156174 01-Mar-2006 cognet

Make sure we decrement p_lock before leaving prefetch_abort_handler()


156166 01-Mar-2006 cognet

userret() now only takes 2 parameters.


156094 27-Feb-2006 cognet

Get this to compile with the recent UART changes.


155922 22-Feb-2006 jhb

Close some races between procfs/ptrace and exit(2):
- Reorder the events in exit(2) slightly so that we trigger the S_EXIT
stop event earlier. After we have signalled that, we set P_WEXIT and
then wait for any processes with a hold on the vmspace via PHOLD to
release it. PHOLD now KASSERT()'s that P_WEXIT is clear when it is
invoked, and PRELE now does a wakeup if P_WEXIT is set and p_lock drops
to zero.
- Change proc_rwmem() to require that the processing read from has its
vmspace held via PHOLD by the caller and get rid of all the junk to
screw around with the vmspace reference count as we no longer need it.
- In ptrace() and pseudofs(), treat a process with P_WEXIT set as if it
doesn't exist.
- Only do one PHOLD in kern_ptrace() now, and do it earlier so it covers
FIX_SSTEP() (since on alpha at least this can end up calling proc_rwmem()
to clear an earlier single-step simualted via a breakpoint). We only
do one to avoid races. Also, by making the EINVAL error for unknown
requests be part of the default: case in the switch, the various
switch cases can now just break out to return which removes a _lot_ of
duplicated PRELE and proc unlocks, etc. Also, it fixes at least one bug
where a LWP ptrace command could return EINVAL with the proc lock still
held.
- Changed the locking for ptrace_single_step(), ptrace_set_pc(), and
ptrace_clear_single_step() to always be called with the proc lock
held (it was a mixed bag previously). Alpha and arm have to drop
the lock while the mess around with breakpoints, but other archs
avoid extra lock release/acquires in ptrace(). I did have to fix a
couple of other consumers in kern_kse and a few other places to
hold the proc lock and PHOLD.

Tested by: ps (1 mostly, but some bits of 2-4 as well)
MFC after: 1 week


155793 17-Feb-2006 imp

These files apply to all the atmel parts that freebsd is going to run on,
so name them more generically. If we do support the MMU-less ARM7 parts,
then we'll need to, at that time, expand the files we have.


155791 17-Feb-2006 imp

This file was obsolete when committed. Catchup and delete it.


155527 11-Feb-2006 imp

Use the correct address for the ohci device.


155455 08-Feb-2006 phk

Simplify system time accounting for profiling.

Rename struct thread's td_sticks to td_pticks, we will need the
other name for more appropriately named use shortly. Reduce it
from uint64_t to u_int.

Clear td_pticks whenever we enter the kernel instead of recording
its value as reference for userret(). Use the absolute value of
td->pticks in userret() and eliminate third argument.


155445 07-Feb-2006 cognet

Set the MAC address after we just read it at attach time, as it seems needed.


155443 07-Feb-2006 cognet

Set m_pkthdr.len and m_pkthdr.rcvif.


155437 07-Feb-2006 imp

This file isn't GENERIC, so change the header


155436 07-Feb-2006 imp

Rather than pull in all the phy, just pull in the lxt phy that we need
for this board (although our lxtphy driver isn't claiming it, but that's
a different problem).

This saves 57k in this kernel.


155405 06-Feb-2006 cognet

- Call mii_phy_probe() after we allocated an ifp. mii has this evil
hack where it assumes the first field of the driver softc is the struct
ifnet, and it copies its value in mii_phy_probe().
- In the interrupt handler, set the mbuf m_len field on packet receive.


155391 06-Feb-2006 cognet

Use memory clobbers, to be on the safe side.
Suggested by: jhb


155355 05-Feb-2006 cognet

Backout rev 1.12. It would have been a good thing, if gcc was smart enough
not to generate bad code.


155324 04-Feb-2006 imp

Import support for the Atmel AT91RM9200 CPU/Microcontroller. This SoC
is a ARM920T based CPU with a bunch of built-in peripherals. The
inital import supports the SPI bus, the TWI bus (although iicbus
integration is not complete), the uarts, the system timer and the
onboard ethernet. Support for the Kwikbyte KB9202
(http://www.kwikbyte.com) board is also included, although there's no
reason why the 9200 and the 9201 wouldn't also work. Primitive
support for running under the skyeye emulator is also provided
(although skyeye's support for the AT91RM9200 is a little weak).

The code has been structured so that other members of Atmel's arm family can
be supported in the future. The AT91SAM9260 is not presently supported
due to lack of hardware. The arm7tdmi families are also not supported
becasue they lack an MMU.

Many thanks to cognet@ for his help and assistance in bringing up this
board. He did much of the vm work and wrote parts of the uart and
system timer code as well as the bus space implementation.

The system boots to single user w/o problem, although the serial
console is a little slow and the ethernet driver is still in flux.

This work was sponsored by Timing Solutions, Corporation. I am
grateful to their support of the FreeBSD project in this manner.


155308 04-Feb-2006 cognet

Don't forget to set the address of the next descriptor to 0 when we're
zeroing a physical page, or we could end up re-zeroing portions of
memory we have zeroed before, which is clearly not wanted.


155306 04-Feb-2006 cognet

MFi386:
revision 1.288
date: 2006/02/04 14:11:33; author: wsalamon; state: Exp; lines: +4 -1
Hook up the audit system to system call entry and exit. System calls will
now be audited.

Obtained from: TrustedBSD Project
Approved by: rwatson (mentor)


155242 03-Feb-2006 imp

MFp4: Small cleanup of cpu messages at boot.


155241 03-Feb-2006 imp

Merge from p4: minor formatting nits.


154928 27-Jan-2006 cognet

Try harder not to recurse.


154712 23-Jan-2006 cognet

Donc recompute the io port address if it's already the good one.


154561 20-Jan-2006 cognet

Build a minimal pagetables, with only section mappings, mapped write through,
to speed up the decompression.


154128 09-Jan-2006 imp

By popular demand, move __HAVE_ACPI and __PCI_REROUTE_INTERRUPT into
param.h. Per request, I've placed these just after the
_NO_NAMESPACE_POLLUTION ifndef. I've not renamed anything yet, but
may since we don't need the __.

Submitted by: bde, jhb, scottl, many others.


154074 06-Jan-2006 jhb

Fix various places that were testing td_critnest to see if interrupts
should remain disabled during a trap or not to check
td_md.md_spinlock_count instead.


153955 01-Jan-2006 imp

Define __HAVE_ACPI and/or __PCI_REROUTE_INTERRUPT, as appropriate for
each platform. These will be used in the pci code in preference to
the complicated #ifdefs we have there now.


153940 31-Dec-2005 netchild

MI changes:
- provide an interface (macros) to the page coloring part of the VM system,
this allows to try different coloring algorithms without the need to
touch every file [1]
- make the page queue tuning values readable: sysctl vm.stats.pagequeue
- autotuning of the page coloring values based upon the cache size instead
of options in the kernel config (disabling of the page coloring as a
kernel option is still possible)

MD changes:
- detection of the cache size: only IA32 and AMD64 (untested) contains
cache size detection code, every other arch just comes with a dummy
function (this results in the use of default values like it was the
case without the autotuning of the page coloring)
- print some more info on Intel CPU's (like we do on AMD and Transmeta
CPU's)

Note to AMD owners (IA32 and AMD64): please run "sysctl vm.stats.pagequeue"
and report if the cache* values are zero (= bug in the cache detection code)
or not.

Based upon work by: Chad David <davidc@acns.ab.ca> [1]
Reviewed by: alc, arch (in 2004)
Discussed with: alc, Chad David, arch (in 2004)


153741 26-Dec-2005 sobomax

Remove kern.elf32.can_exec_dyn sysctl. Instead extend Brandinfo structure
with flags bitfield and set BI_CAN_EXEC_DYN flag for all brands that usually
allow executing elf dynamic binaries (aka shared libraries). When it is
requested to execute ET_DYN elf image check if this flag is on after we
know the elf brand allowing execution if so.

PR: kern/87615
Submitted by: Marcin Koziej <creep@desk.pl>


153666 22-Dec-2005 jhb

Tweak how the MD code calls the fooclock() methods some. Instead of
passing a pointer to an opaque clockframe structure and requiring the
MD code to supply CLKF_FOO() macros to extract needed values out of the
opaque structure, just pass the needed values directly. In practice this
means passing the pair (usermode, pc) to hardclock() and profclock() and
passing the boolean (usermode) to hardclock_cpu() and hardclock_process().
Other details:
- Axe clockframe and CLKF_FOO() macros on all architectures. Basically,
all the archs were taking a trapframe and converting it into a clockframe
one way or another. Now they can just extract the PC and usermode values
directly out of the trapframe and pass it to fooclock().
- Renamed hardclock_process() to hardclock_cpu() as the latter is more
accurate.
- On Alpha, we now run profclock() at hz (profhz == hz) rather than at
the slower stathz.
- On Alpha, for the TurboLaser machines that don't have an 8254
timecounter, call hardclock() directly. This removes an extra
conditional check from every clock interrupt on Alpha on the BSP.
There is probably room for even further pruning here by changing Alpha
to use the simplified timecounter we use on x86 with the lapic timer
since we don't get interrupts from the 8254 on Alpha anyway.
- On x86, clkintr() shouldn't ever be called now unless using_lapic_timer
is false, so add a KASSERT() to that affect and remove a condition
to slightly optimize the non-lapic case.
- Change prototypeof arm_handler_execute() so that it's first arg is a
trapframe pointer rather than a void pointer for clarity.
- Use KCOUNT macro in profclock() to lookup the kernel profiling bucket.

Tested on: alpha, amd64, arm, i386, ia64, sparc64
Reviewed by: bde (mostly)


153616 21-Dec-2005 cognet

Ooops, I removed the wrong bits.
This unbreak boot from a VA which is different from the PA.


153615 21-Dec-2005 cognet

Remove #undef DDB I shouldn't have committed.


153550 20-Dec-2005 cognet

- Disable the instruction cache very early, until it's time to enable it again.
- Revamp the code that jumps from physical to virtual address.


153549 20-Dec-2005 cognet

Make the elf trampoline disable the MMU, and link it at physical address,
to avoid bad surprises.


153279 09-Dec-2005 cognet

- Better use of the busdma API.
- Use spin locks instead of sleep locks.


153278 09-Dec-2005 cognet

Fix a harmless bug in the way we allocate the early PTEs.


153277 09-Dec-2005 cognet

The IQ80321 clock is 200MHz, but the IQ80321 is 198MHz, so add a kernel option
to override the frequency


153276 09-Dec-2005 cognet

A #define is not enough, we need to cast from u_long * to uint32_t *.


153275 09-Dec-2005 cognet

Define atomic_whatever_long


153273 09-Dec-2005 cognet

In copyout(), quad-align the source buffer, and use ldrd if possible.


153168 06-Dec-2005 ru

Drop _MACHINE_ARCH and _MACHINE defines (not to be confused with
MACHINE_ARCH and MACHINE). Their purpose was to be able to test
in cpp(1), but cpp(1) only understands integer type expressions.
Using such unsupported expressions introduced a number of subtle
bugs, which were discovered by compiling with -Wundef.


153113 05-Dec-2005 cognet

Try to use contigmalloc() even if M_NOWAIT has been specified.


153112 05-Dec-2005 cognet

Teach the elf trampoline how to deal with gzipped kernels.


152753 24-Nov-2005 ru

Add missing "struct" in i386/i386/machdep.c,v 1.497 by deischen@.


152743 24-Nov-2005 cognet

Use a magic number to know we were started from the elf wrapper.
Add a dummy _start function to make the non-elf version of the wrapper work.


152723 23-Nov-2005 cognet

MFP4: Bring in arm9 cache-related functions

Obtained from: NetBSD


152654 21-Nov-2005 cognet

Force pmap to write-back the pte cacheline after each pte modification,
even if the pte is supposed to be cached in write through mode (might be a
skyeye bug, I'll have to check).


152653 21-Nov-2005 cognet

Add an alternate ID for the arm920t (the real solution is to have
per-cpu class masks, but oh well).


152630 20-Nov-2005 alc

Eliminate pmap_init2(). It's no longer used.


152189 08-Nov-2005 cognet

There's no need to include <machine/asmacros.h> here.


152128 06-Nov-2005 cognet

MFi386 rev 1.536 (sort of)
Move what can be moved (UMA zones creation, pv_entry_* initialization) from
pmap_init2() to pmap_init().
Create a new function, pmap_postinit(), called from cpu_startup(), to do the
L1 tables allocation.
pmap_init2() is now empty for arm as well.


151897 31-Oct-2005 rwatson

Normalize a significant number of kernel malloc type names:

- Prefer '_' to ' ', as it results in more easily parsed results in
memory monitoring tools such as vmstat.

- Remove punctuation that is incompatible with using memory type names
as file names, such as '/' characters.

- Disambiguate some collisions by adding subsystem prefixes to some
memory types.

- Generally prefer lower case to upper case.

- If the same type is defined in multiple architecture directories,
attempt to use the same name in additional cases.

Not all instances were caught in this change, so more work is required to
finish this conversion. Similar changes are required for UMA zone names.


151658 25-Oct-2005 jhb

Reorganize the interrupt handling code a bit to make a few things cleaner
and increase flexibility to allow various different approaches to be tried
in the future.
- Split struct ithd up into two pieces. struct intr_event holds the list
of interrupt handlers associated with interrupt sources.
struct intr_thread contains the data relative to an interrupt thread.
Currently we still provide a 1:1 relationship of events to threads
with the exception that events only have an associated thread if there
is at least one threaded interrupt handler attached to the event. This
means that on x86 we no longer have 4 bazillion interrupt threads with
no handlers. It also means that interrupt events with only INTR_FAST
handlers no longer have an associated thread either.
- Renamed struct intrhand to struct intr_handler to follow the struct
intr_foo naming convention. This did require renaming the powerpc
MD struct intr_handler to struct ppc_intr_handler.
- INTR_FAST no longer implies INTR_EXCL on all architectures except for
powerpc. This means that multiple INTR_FAST handlers can attach to the
same interrupt and that INTR_FAST and non-INTR_FAST handlers can attach
to the same interrupt. Sharing INTR_FAST handlers may not always be
desirable, but having sio(4) and uhci(4) fight over an IRQ isn't fun
either. Drivers can always still use INTR_EXCL to ask for an interrupt
exclusively. The way this sharing works is that when an interrupt
comes in, all the INTR_FAST handlers are executed first, and if any
threaded handlers exist, the interrupt thread is scheduled afterwards.
This type of layout also makes it possible to investigate using interrupt
filters ala OS X where the filter determines whether or not its companion
threaded handler should run.
- Aside from the INTR_FAST changes above, the impact on MD interrupt code
is mostly just 's/ithread/intr_event/'.
- A new MI ddb command 'show intrs' walks the list of interrupt events
dumping their state. It also has a '/v' verbose switch which dumps
info about all of the handlers attached to each event.
- We currently don't destroy an interrupt thread when the last threaded
handler is removed because it would suck for things like ppbus(8)'s
braindead behavior. The code is present, though, it is just under
#if 0 for now.
- Move the code to actually execute the threaded handlers for an interrrupt
event into a separate function so that ithread_loop() becomes more
readable. Previously this code was all in the middle of ithread_loop()
and indented halfway across the screen.
- Made struct intr_thread private to kern_intr.c and replaced td_ithd
with a thread private flag TDP_ITHREAD.
- In statclock, check curthread against idlethread directly rather than
curthread's proc against idlethread's proc. (Not really related to intr
changes)

Tested on: alpha, amd64, i386, sparc64
Tested on: arm, ia64 (older version of patch by cognet and marcel)


151596 23-Oct-2005 cognet

Unbreak for !__XSCALE__.


151524 20-Oct-2005 cognet

Cleanup.


151415 17-Oct-2005 cognet

Use the clock count register as a timecounter, as it's more accurate.


151340 14-Oct-2005 jhb

Whitespace.


151334 14-Oct-2005 jhb

Change the userland atomic operations on arm to use memory operands for
the modified memory rather than using register operands that held a pointer
to the memory. The biggest effect is that we now correctly tell the
compiler that these functions change the memory that these functions
modify.

Reviewed by: cognet


151316 14-Oct-2005 davidxu

1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most
changes in MD code are trivial, before this change, trapsignal and
sendsig use discrete parameters, now they uses member fields of
ksiginfo_t structure. For sendsig, this change allows us to pass
POSIX realtime signal value to user code.

2. Remove cpu_thread_siginfo, it is no longer needed because we now always
generate ksiginfo_t data and feed it to libpthread.

3. Add p_sigqueue to proc structure to hold shared signals which were
blocked by all threads in the proc.

4. Add td_sigqueue to thread structure to hold all signals delivered to
thread.

5. i386 and amd64 now return POSIX standard si_code, other arches will
be fixed.

6. In this sigqueue implementation, pending signal set is kept as before,
an extra siginfo list holds additional siginfo_t data for signals.
kernel code uses psignal() still behavior as before, it won't be failed
even under memory pressure, only exception is when deleting a signal,
we should call sigqueue_delete to remove signal from sigqueue but
not SIGDELSET. Current there is no kernel code will deliver a signal
with additional data, so kernel should be as stable as before,
a ksiginfo can carry more information, for example, allow signal to
be delivered but throw away siginfo data if memory is not enough.
SIGKILL and SIGSTOP have fast path in sigqueue_add, because they can
not be caught or masked.
The sigqueue() syscall allows user code to queue a signal to target
process, if resource is unavailable, EAGAIN will be returned as
specification said.
Just before thread exits, signal queue memory will be freed by
sigqueue_flush.
Current, all signals are allowed to be queued, not only realtime signals.

Earlier patch reviewed by: jhb, deischen
Tested on: i386, amd64


150996 06-Oct-2005 cognet

Export PAGE_SIZE from genassym.c, and include assym.s in bcopy_page.S,
instead of <machine/param.h>.


150944 04-Oct-2005 cognet

Remove a never reached RET.


150943 04-Oct-2005 cognet

strd needs the destination to be double-word aligned, but the pointer passed
to savectx isn't always, so always use stmia, savectx isn't called enough
to need that kind of optimization.


150936 04-Oct-2005 cognet

dump_avail has nothing to do with ARM_USE_SMALL_ALLOC, so move its
declaration out of the #ifdef.


150919 04-Oct-2005 cognet

Remove duplicate entry for DDB.


150916 04-Oct-2005 cognet

Fix build when DDB isn't defined.


150893 03-Oct-2005 cognet

Bring in the good version of this file.


150873 03-Oct-2005 cognet

Add dma and aau.


150872 03-Oct-2005 cognet

Import dummy drivers for the i80321 DMA controller and AAU.
The DMA controller driver only knows how to do memory to memory copies, and
the AAU driver how to zero a chunk of memory.
Use them to process big (>=1KB) copying/zeroing.


150871 03-Oct-2005 cognet

Make mem.c know about the pages allocated with ARM_USE_SMALL_ALLOC.


150870 03-Oct-2005 cognet

Export the variables needed for the copy/zero API.


150869 03-Oct-2005 cognet

Make sure the interrupt is masked before processing it, or bad things
can happen.


150868 03-Oct-2005 cognet

If a thread already tries to allocate a new memory range, wait for it
instead of trying to do the same.


150867 03-Oct-2005 cognet

Provide a dump_avail[] variable, which contains the page ranges to be
dumped.

For iq31244_machdep.c, attempt to recognize hints provided by the elf
trampoline.


150865 03-Oct-2005 cognet

- Provide the kernel l1pt physical address, for userland.
- Use the new API for pmap_copy_page() and pmap_zero_page().
- Just write-back the pages in pmap_qenter(), and invalidate it in
pmap_qremove().
- Nuke the cache flushing in pmap_enter_quick(), it's not needed anymore.


150864 03-Oct-2005 cognet

Add a new API to let platform-specific ports provide functions for big
copy/zeroing.


150863 03-Oct-2005 cognet

Export the virtual and physical address in which the kernel was loaded,
needed for userland when reading kernel dumps.


150861 03-Oct-2005 cognet

Import a small ELF trampoline, in which the kernel is embedded, and that
is able to load the kernel into memory, symbol table included. This is
needed to be able to access the symbol table from DDB without a boot
loader.


150860 03-Oct-2005 cognet

*blush*
Don't try to dereference map if it's NULL.
While I'm there, increase the minimum value to write-back/invalidate the
whole dcache in bus_dmamap_sync().


150859 03-Oct-2005 cognet

Only save the registers that are used.


150858 03-Oct-2005 cognet

asm versions of in_cksum_hdr() and in_pseudo().


150856 03-Oct-2005 cognet

Implement savectx().

Obtained from: NetBSD


150855 03-Oct-2005 cognet

Kernel dump for arm, ripped from the ia64/amd64 version.


150627 27-Sep-2005 jhb

Add a new atomic_fetchadd() primitive that atomically adds a value to a
variable and returns the previous value of the variable.

Tested on: i386, alpha, sparc64, arm (cognet)
Reviewed by: arch@
Submitted by: cognet (arm)
MFC after: 1 week


150552 25-Sep-2005 cognet

Fix multiple abuses of __RMAN_RESOURCE_VISIBLE in the arm code.

Spotted out by: phk


149925 10-Sep-2005 marcel

Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint()
and db_md_list_watchpoints() to ddb/ddb.h.


149768 03-Sep-2005 alc

Pass a value of type vm_prot_t to pmap_enter_quick() so that it determine
whether the mapping should permit execute access.


149337 20-Aug-2005 stefanf

Move MINSIGSTKSZ from <machine/signal.h> to <machine/_limits.h> and rename
it to __MINSIGSTKSZ. Define MINSIGSTKSZ in <sys/signal.h>.

This is done in order to use MINSIGSTKSZ for the macro PTHREAD_STACK_MIN
in <pthread.h> (soon <limits.h>) without having to include the whole
<sys/signal.h> header.

Discussed with: bde


148666 03-Aug-2005 jeff

- Add support for saving stack traces and displaying them via printf(9)
and KTR.

Contributed by: Antoine Brodin <antoine.brodin@laposte.net>
Concept code from: Neal Fachan <neal@isilon.com>


148455 27-Jul-2005 imp

msdosfs_conv.c references cmos_wall_clock and adjkerntz. Since these
are 0 for arm, define them as such to make msdosfs_conv.c compile
again on arm.


148453 27-Jul-2005 jhb

Add extra constraints to tell the compiler that the memory be modified
in the arm __swp() and sparc64 casa() and casax() functions is actually
being used as an input and output and not just the value of the register
that points to the memory location. This was the underlying source of
the mbuf refcount problems on sparc64 a while back. For arm this should be
a nop because __swp() has a constraint to clobber all memory which can
probably be removed now.

Reviewed by: alc, cognet
MFC after: 1 week


148452 27-Jul-2005 jhb

Use a + constraint modifier for a register arg in __bswap16_var().

Reviewed by: cognet


148067 15-Jul-2005 jhb

Convert the atomic_ptr() operations over to operating on uintptr_t
variables rather than void * variables. This makes it easier and simpler
to get asm constraints and volatile keywords correct.

MFC after: 3 days
Tested on: i386, alpha, sparc64
Compiled on: ia64, powerpc, amd64
Kernel toolchain busted on: arm


147889 10-Jul-2005 davidxu

Validate if the value written into {FS,GS}.base is a canonical
address, writting non-canonical address can cause kernel a panic,
by restricting base values to 0..VM_MAXUSER_ADDRESS, ensuring
only canonical values get written to the registers.

Reviewed by: peter, Josepha Koshy < joseph.koshy at gmail dot com >
Approved by: re (scottl)


147591 24-Jun-2005 cognet

- Use a TAILQ instead of parsing the array to find a free dmamap.
- Inline busdma_alloc_dmamap, busdma_free_dmamap and bus_dmamap_sync_buf.

Approved by: re (blanket)


147555 23-Jun-2005 jhb

Fix a typo.

Approved by: re (scottl)


147545 23-Jun-2005 cognet

Remove the va == pa mapping.

Approved by: re (blanket)


147544 23-Jun-2005 cognet

Call kdb_trap() on fatal abort.

Approved by: re (blanket)


147543 23-Jun-2005 cognet

Implement db_frame() and use it to obtain the registers value.

Approved by: re (blanket)


147542 23-Jun-2005 cognet

Don't abuse UMA_SLAB_KMEM.

Approved by: re (blanket)


147504 20-Jun-2005 obrien

Add .cvsignore files just like in sys/<arch>/compiled, this keeps CVS from
questing kernel config files not in CVS.

Approved by: re(kensmith)


147417 16-Jun-2005 cognet

Try harder to detect if the allocated memory for L2 PTP comes from a 1MB
section or not.

Approved by: re (blanket)


147416 16-Jun-2005 cognet

Don't pass the kernel_pmap to pmap_fault_fixup() if the fault comes from
kernel mode, always use the curthread pmap instead. There are valid cases
were we can fault on a user address from the kernel without pcb_onfault
being set.

Approved by: re (blanket)


147249 10-Jun-2005 cognet

Remove the last use of pmap_initialized.


147217 10-Jun-2005 alc

Introduce a procedure, pmap_page_init(), that initializes the
vm_page's machine-dependent fields. Use this function in
vm_pageq_add_new_page() so that the vm_page's machine-dependent and
machine-independent fields are initialized at the same time.

Remove code from pmap_init() for initializing the vm_page's
machine-dependent fields.

Remove stale comments from pmap_init().

Eliminate the Boolean variable pmap_initialized from the alpha, amd64,
i386, and ia64 pmap implementations. Its use is no longer required
because of the above changes and earlier changes that result in physical
memory that is being mapped at initialization time being mapped without
pv entries.

Tested by: cognet, kensmith, marcel


147191 09-Jun-2005 jkoshy

MFP4:

- Implement sampling modes and logging support in hwpmc(4).

- Separate MI and MD parts of hwpmc(4) and allow sharing of
PMC implementations across different architectures.
Add support for P4 (EMT64) style PMCs to the amd64 code.

- New pmcstat(8) options: -E (exit time counts) -W (counts
every context switch), -R (print log file).

- pmc(3) API changes, improve our ability to keep ABI compatibility
in the future. Add more 'alias' names for commonly used events.

- bug fixes & documentation.


147171 09-Jun-2005 cognet

Use tabs, not spaces.

Reported by: ru


147168 09-Jun-2005 cognet

Add ata stuff.


147166 09-Jun-2005 cognet

- MFp4: modify slightly the arm intr API, there's arm CPUs with more than 32
interrupts.
- Implement teardown methods where appropriate.


147114 07-Jun-2005 cognet

Add a new arm-specific option, ARM_USE_SMALL_ALLOC. If defined, it provides
an implementation of uma_small_alloc() which tries to preallocate memory
1MB per 1MB, and maps it into a section mapping.


146948 03-Jun-2005 cognet

Bring in bits I forgot while importing write back support for arm9.


146932 03-Jun-2005 cognet

Remove a useless printf.


146794 29-May-2005 marcel

Create nexus in configure_first() instead of in configure(). This
makes sure that sysinit tasks that run after configure_first(),
but before configure() have a nexus to hang devices off.


146790 29-May-2005 marcel

Call cninit_finish() and set cold to 0 in configure_final() instead
of in configure(). Call cninit_finish() before setting cold to 0.
This is how it's done for other platforms. Be alike to avoid problems.


146734 29-May-2005 nyan

Remove bus_{mem,p}io.h and related code for a micro-optimization on i386
and amd64. The optimization is a trivial on recent machines.

Reviewed by: -arch (imp, marcel, dfr)


146668 27-May-2005 cognet

Remove pmap_deactivate(), we do not use it.


146649 26-May-2005 cognet

s/_KLD_MODULE/KLD_MODULE/


146648 26-May-2005 cognet

Don't enable interrupts in the dispatcher, there's no need to do so.


146647 26-May-2005 cognet

Don't call vm_page_dirty() in pmap_nuke_pv(), it's not the place to do so, and
it leads to funny things, such as pmap_remove_all() marking the page as dirty.


146619 25-May-2005 cognet

Remove bits specific to CPUs we won't support (< armv4).


146618 25-May-2005 cognet

Increase the refresh rate.


146605 24-May-2005 cognet

MFp4: Setup arm9 to write back by default.

Obtained from: NetBSD


146604 24-May-2005 cognet

Remove kcopy(), we don't use it.


146600 24-May-2005 cognet

We need to decrease p->p_lock after vm_fault() has been called.


146599 24-May-2005 cognet

Correctly setup the UND stack in cpu_set_upcall(), and the trapframe in
cpu_thread_setup(), as done in cpu_fork().


146597 24-May-2005 cognet

- Try to avoid calling malloc() in bus_dmamap_create() and bus_dmamem_alloc()
for the dmamap by using static dmamaps.
- Don't do anything for BUS_DMASYNC_PREREAD and BUS_DMASYNC_POSTWRITE in
bus_dmamap_sync(), it's not needed anymore.


146596 24-May-2005 cognet

Write back affected pages in pmap_qremove() as well. This removes the need
to change the DACR when switching to a kernel thread, thus making
userland thread => kernel thread => same userland thread switch cheaper by
totally avoiding data cache and TLB invalidation.


146595 24-May-2005 cognet

Use a more sane value for HZ.


146594 24-May-2005 cognet

Use asm versions of in_cksum() and friends.


146592 24-May-2005 cognet

Asm version of bswap16().

Obtained from: NetBSD


146591 24-May-2005 cognet

Make sure we clean the RAS start address once we're done.
This fixes the random segfaults which occurs at high interrupts rate.


146122 11-May-2005 cognet

Don't forget to copy the TP when forking, or bad things will happen to the
child process if it tries to use threads.


145594 27-Apr-2005 cognet

Allocating the memory for the kernel stack one time is enough.


145452 23-Apr-2005 cognet

Don't use fusufault in casuptr(), as it assumes the current PCB will be
stored in r2, which can't be easily done with casuptr(). Introduce
casuptrfault instead.


145433 23-Apr-2005 davidxu

Change cpu_set_kse_upcall to more generic style, so we can reuse it
in other codes. Add cpu_set_user_tls, use it to tweak user register
and setup user TLS. I ever wanted to merge it into cpu_set_kse_upcall,
but since cpu_set_kse_upcall is also used by M:N threads which may
not need this feature, so I wrote a separated cpu_set_user_tls.


145332 20-Apr-2005 marcel

Add empty header (except of the multiple-inclusion protection) to
get hwpmc(4) to compile on this platform.


145253 18-Apr-2005 imp

Break out the definition of bus_space_{tag,handle}_t and a few other types
into _bus.h to help with name space polution from including all of bus.h.
In a few days, I'll commit changes to the MI code to take advantage of thse
sepration (after I've made sure that these changes don't break anything in
the main tree, I've tested in my trees, but you never know...).

Suggested by: bde (in 2002 or 2003 I think)
Reviewed in principle by: jhb


145071 14-Apr-2005 cognet

Unbreak the vector_page == 0x00000000 case. Map the vector page L1PT into the
kernel domain for each pmap, as we don't update the page table when we're
switching to a kernel thread, but we do however update the DACR.


145017 13-Apr-2005 cognet

pmap_update() is gone.


144971 12-Apr-2005 jhb

Use PCPU_LAZY_INC() for cnt.v_{intr,trap,syscalls} rather than atomic
operations in some places and simple non-per CPU math in others.


144967 12-Apr-2005 cognet

We have an asm version of bcmp(), so we could use it as well.


144763 07-Apr-2005 cognet

Don't announce the range SDRAM_START-freemempos until I figure out what's
going on, it produces random memory corruption.


144762 07-Apr-2005 cognet

pmap_update() is gone.


144761 07-Apr-2005 cognet

Import a basic implementation of the restartable atomic sequences to provide
atomic operations to userland (this is OK for UP only, but SMP is still so
far away).


144760 07-Apr-2005 cognet

- Try harder to report dirty page.
- Garbage-collect pmap_update(), it became quite useless.


144637 04-Apr-2005 jhb

Divorce critical sections from spinlocks. Critical sections as denoted by
critical_enter() and critical_exit() are now solely a mechanism for
deferring kernel preemptions. They no longer have any affect on
interrupts. This means that standalone critical sections are now very
cheap as they are simply unlocked integer increments and decrements for the
common case.

Spin mutexes now use a separate KPI implemented in MD code: spinlock_enter()
and spinlock_exit(). This KPI is responsible for providing whatever MD
guarantees are needed to ensure that a thread holding a spin lock won't
be preempted by any other code that will try to lock the same lock. For
now all archs continue to block interrupts in a "spinlock section" as they
did formerly in all critical sections. Note that I've also taken this
opportunity to push a few things into MD code rather than MI. For example,
critical_fork_exit() no longer exists. Instead, MD code ensures that new
threads have the correct state when they are created. Also, we no longer
try to fixup the idlethreads for APs in MI code. Instead, each arch sets
the initial curthread and adjusts the state of the idle thread it borrows
in order to perform the initial context switch.

This change is largely a big NOP, but the cleaner separation it provides
will allow for more efficient alternative locking schemes in other parts
of the kernel (bare critical sections rather than per-CPU spin mutexes
for per-CPU data for example).

Reviewed by: grehan, cognet, arch@, others
Tested on: i386, alpha, sparc64, powerpc, arm, possibly more


143857 20-Mar-2005 cognet

Bring in a version of float.h more correct for softfloat.


143773 17-Mar-2005 cognet

Bring back some of the cleanups and fixes jmg did in the TS7200 port.


143728 17-Mar-2005 cognet

Use PCIR_BARS instead of PCIR_MAPS.


143724 16-Mar-2005 cognet

Introduce a new function, pmap_wb_page(), which check all userland mappings for
a given page and, if the pmap is the current pmap, write back the associated
cache line.
Use pmap_wb_page in pmap_qenter() instead of inconditionally
write back/invalidating the data cache.


143682 16-Mar-2005 jmg

MFp4: add in making fiq's work by coping to the correct page incase we have
the vectors relocated high..


143681 16-Mar-2005 jmg

fix up white space, I had a simple comment fix, but I might as well do the
rest while I'm here...


143671 16-Mar-2005 jmg

make bus_dmamem_alloc always allocate a new map like we are suppose to..
This was found when I tried to run the usb code on my arm board...

Approved by: cognet


143655 15-Mar-2005 jmg

fix arm wrt to busdma...

also wrap the two macros that have bare if's w/ do {} while(0) so that
my epe driver doesn't get a warning about braces around confused else...


143598 14-Mar-2005 scottl

Refactor the bus_dma header files so that the interface is described in
sys/bus_dma.h instead of being copied in every single arch. This slightly
reorders a flag that was specific to AXP and thus changes the ABI there.
The interface still relies on bus_space definitions found in <machine/bus.h>
so it cannot be included on its own yet, but that will be fixed at a later
date. Add an MD <machine/bus_dma.h> for ever arch for consistency and to
allow for future MD augmentation of the API. sparc64 makes heavy use of
this right now due to its different bus_dma implemenation.


143294 08-Mar-2005 mux

Fixup KTR traces.


143284 08-Mar-2005 mux

Use __func__ in the KTR_BUSDMA traces. This avoids copy and paste
errors like in the bus_dmamap_load_mbuf_sg() case where we were wrongly
displaying the function name as bus_dmamap_load_mbuf.


143199 07-Mar-2005 mux

Fix typo.


143193 06-Mar-2005 cognet

Use [ldr|str]t instead of [ldr|str] when accessing ARM_TP_ADDRESS.


143192 06-Mar-2005 cognet

Make sure ARM_TP_ADDRESS is accessible right now by calling pmap_fault_fixup,
as we can't rely on a trap happening, as it is done normally.
While I'm there, uncomment the call to cpu_dcache_wbinv_range() in
pmap_kenter_internal, as we don't call cpu_dcache_wbinv_all() there anymore.


143175 06-Mar-2005 cognet

Unlike NetBSD's bcopy(), our bcopy allows the two strings to overlap, even in
kernel. So bring in the userland version, instead of just calling memcpy.


143116 03-Mar-2005 cognet

Handle endianness correctly.

Spotted out by: jmg


143063 02-Mar-2005 joerg

netchild's mega-patch to isolate compiler dependencies into a central
place.

This moves the dependency on GCC's and other compiler's features into
the central sys/cdefs.h file, while the individual source files can
then refer to #ifdef __COMPILER_FEATURE_FOO where they by now used to
refer to #if __GNUC__ > 3.1415 && __BARC__ <= 42.

By now, GCC and ICC (the Intel compiler) have been actively tested on
IA32 platforms by netchild. Extension to other compilers is supposed
to be possible, of course.

Submitted by: netchild
Reviewed by: various developers on arch@, some time ago


142955 01-Mar-2005 cognet

In cpu_throw(), correctly calculate td->td_md.md_tp.
In cpu_switch(), set the DACR even if we're switching to a kernel thread.


142947 01-Mar-2005 cognet

Introduce realmem.


142570 26-Feb-2005 cognet

Instead of using sysarch() to store-retrieve the tp, add a magic address,
ARM_TP_ADDRESS, where the tp will be stored. On CPUs that support it, a cache
line will be allocated and locked for this address, so that it will never go
to RAM. On CPUs that does not, a page is allocated for it (it will be a bit
slower, and is wrong for SMP, but should be fine for UP).
The tp is still stored in the mdthread struct, and at each context switch,
ARM_TP_ADDRESS gets updated.

Suggested by: davidxu


142528 26-Feb-2005 cognet

Add the field in the md part of the struct thread required by ARM_[GET|SET]_TP.


142519 25-Feb-2005 cognet

Implement two new sysarch for arm, ARM_GET_TP and ARM_SET_TP, to work around
the lack of tls on arm.


142518 25-Feb-2005 cognet

Make sure casuptr() reset pcb->pcb_onfault when returning.


142145 20-Feb-2005 cognet

MFp4: get the code that set the pc correctly to work, remove a few IQ31244
specific mappings from locore.S, re-organize iq31244_machdep.c to work with
the new locore.S

Spotted out by: jmg


142116 20-Feb-2005 cognet

Removing the #endif as well sounds like a good idea.


142115 20-Feb-2005 cognet

In cpufunc_control, uncomment the code responsible for returning the old
state of the control register.


142107 19-Feb-2005 ru

Use a common multi-inclusion protection, and add such a
protection to alpha/include/exec.h.


142050 18-Feb-2005 cognet

Support high vectors for arm9.

Obtained from: NetBSD


141820 13-Feb-2005 cognet

Define NIRQ to 64 for CPU_ARM9, because Cirrus Logic EP93XX cores provides
64 irqs.
This should be re-thought later.


141819 13-Feb-2005 cognet

Remove unused prototype.


141817 13-Feb-2005 cognet

Remove redondant includes.


141813 13-Feb-2005 cognet

Don't prototype pmap_kenter().


141551 09-Feb-2005 jmg

move pmap.h after vm.h include... some of the headers from pmap.h depend
upon vm.h


141378 06-Feb-2005 njl

Finish the job of sorting all includes and fix the build by including
malloc.h before proc.h on sparc64. Noticed by das@

Compiled on: alpha, amd64, i386, pc98, sparc64


141249 04-Feb-2005 njl

Sort includes a little so that bus.h comes before cpu.h (for device_t).


141237 04-Feb-2005 njl

Add an implementation of cpu_est_clockrate(9). This function estimates the
current clock frequency for the given CPU id in units of Hz.


141094 01-Feb-2005 njl

Sort functions.


140683 23-Jan-2005 cognet

Make sure we can boot both with and without MMU enabled.


140682 23-Jan-2005 cognet

Define bus_dmamap_load_buffer before bus_dmamap_load to make gcc happy.


140680 23-Jan-2005 cognet

Fix compile for !KTR.


140533 20-Jan-2005 cognet

Remove references to non-existing symbols DO_corb and got_mmu.
While I'm there, remove dead code.


140478 19-Jan-2005 cognet

Fix compile for __ARMEB__.


140462 19-Jan-2005 cognet

MFpowerpc: Work around the problem of returning a 32 bits value from
__syscall() on a 32 bits big-endian arch.

Spotted out by: grehan


140425 18-Jan-2005 cognet

Start to support the big endian case as well.


140350 16-Jan-2005 cognet

Add a new sysctl, hw.sevenseg.freq, to control the update frequency.


140349 16-Jan-2005 cognet

Erm, don't forget to store the mbuf in the dmamap in bus_dmamap_load_mbuf_sg(),
so that bus_dmamap_sync() knows what to invalidate. This makes em(4) work again.
While I'm there, remove the unused "first" variable.


140313 15-Jan-2005 cognet

Add support for KTR_BUSDMA.


140312 15-Jan-2005 cognet

Add the prototype for bus_dmamap_load_mbuf_sg().

Spotted out by: scottl


140310 15-Jan-2005 cognet

MFi386: add bus_dmamap_load_mbuf_sg().


140309 15-Jan-2005 cognet

Add the 7 seg display.


140308 15-Jan-2005 cognet

Add support for the IQ31244 7 seg display.

Obtained from: NetBSD


140307 15-Jan-2005 cognet

Start the license statement with /*-


140305 15-Jan-2005 cognet

Use device_set_desc().


140304 15-Jan-2005 cognet

Add the i80321 watchdog.


140303 15-Jan-2005 cognet

Add a driver for the i80321 watchdog.

Obtained from: NetBSD


140001 10-Jan-2005 cognet

Add support for ptrace() and gdb breakpoints.


140000 10-Jan-2005 cognet

Don't assume pmap_update() will cpwait for us, pmap_update will disappear soon.


139735 05-Jan-2005 imp

Start all license statements with /*-


139241 23-Dec-2004 alc

Modify pmap_enter_quick() so that it expects the page queues to be locked
on entry and it assumes the responsibility for releasing the page queues
lock if it must sleep.

Remove a bogus comment from pmap_enter_quick().

Using the first change, modify vm_map_pmap_enter() so that the page queues
lock is acquired and released once, rather than each time that a page
is mapped.


139117 21-Dec-2004 cognet

- The IQ80321 has a jumper which changes the PCI device id from 4 to 8 for the
GigE controller, so handle this.
- Use the outbound window 0 if the PCI mem requested is in its range, instead
of inconditionally use the outbound window 1.
This should be enough to get FreeBSD/arm to work on the IQ80321 board as well.

Reported and tested by: Jia-Shiun Li <jiashiun at gmail dot com>


139022 18-Dec-2004 cognet

Update the StrongArm port to match the current code.
- Implement arm_mask_irqs and arm_unmask_irqs
- Provide the available physical address range after pmap_bootstrap allocated
things, instead or before, or bad things happen.


139021 18-Dec-2004 cognet

Make sure gcc doesn't generate something such as swp r3, r4, [r3] for __swp,
as it has unpredictable results.


138897 15-Dec-2004 alc

In the common case, pmap_enter_quick() completes without sleeping.
In such cases, the busying of the page and the unlocking of the
containing object by vm_map_pmap_enter() and vm_fault_prefault() is
unnecessary overhead. To eliminate this overhead, this change
modifies pmap_enter_quick() so that it expects the object to be locked
on entry and it assumes the responsibility for busying the page and
unlocking the object if it must sleep. Note: alpha, amd64, i386 and
ia64 are the only implementations optimized by this change; arm,
powerpc, and sparc64 still conservatively busy the page and unlock the
object within every pmap_enter_quick() call.

Additionally, this change is the first case where we synchronize
access to the page's PG_BUSY flag and busy field using the containing
object's lock rather than the global page queues lock. (Modifications
to the page's PG_BUSY flag and busy field have asserted both locks for
several weeks, enabling an incremental transition.)


138857 14-Dec-2004 cognet

Enable interrupts once the active ones have been masked.


138856 14-Dec-2004 cognet

Update the sp after popping the regs.
This is a good candidate for the golden pointy hat awards.


138751 12-Dec-2004 cognet

Save a few more cycles in cpu_switch() and cpu_throw().


138710 11-Dec-2004 cognet

Fix style.


138709 11-Dec-2004 cognet

Add entries to trace syscalls with KTR.


138683 11-Dec-2004 cognet

Fix compilation with INVARIANTS.


138665 10-Dec-2004 cognet

s/RETEQ/RETeq/.


138525 07-Dec-2004 cognet

Include <sys/signalvar.h> for trapsignal().


138417 05-Dec-2004 cognet

Make sure to map the whole kernel into 1MB pages. Try to use the remaining
memory for things such as the kernel stack.


138415 05-Dec-2004 cognet

Reactivate the use of the minidata cache.


138414 05-Dec-2004 cognet

Do not change the page directory and do not flush the TLB when switching to
a kernel thread.


138413 05-Dec-2004 cognet

Remove an unused field from the struct pv_entry.
While I'm there, fix style.


138328 02-Dec-2004 cognet

Include <sys/signalvar.h> for trapsignal().


138129 27-Nov-2004 das

Don't include sys/user.h merely for its side-effect of recursively
including other headers.


138022 23-Nov-2004 cognet

Enable interrupts as soon as the pending interrupts have been masked.


138021 23-Nov-2004 cognet

Use ns8250.


137977 21-Nov-2004 cognet

Cleanup.


137976 21-Nov-2004 cognet

Set the frame pointer to 0 in fork_trampoline().


137975 21-Nov-2004 cognet

Implement breakpoints and single stepping on arm.

Obtained from: NetBSD


137941 20-Nov-2004 cognet

Remove useless code.


137940 20-Nov-2004 cognet

Implement enough to be able to enter and leave DDB.


137939 20-Nov-2004 cognet

Get the kernel stack right now that the u-area is gone.


137919 20-Nov-2004 das

Remove UAREA_PAGES and USPACE definitions. The definitions of
USPACE_SVC_STACK_TOP, USPACE_SVC_STACK_BOTTOM, USPACE_UNDEF_STACK_TOP,
and USPACE_UNDEF_STACK_BOTTOM look wrong to me, so I'm leaving them
alone.

Reviewed by: arch@


137918 20-Nov-2004 das

Remove some references to U area here while trying not to break
anything. Someone with ARM hardware could do a lot more to untangle
this code.

Reviewed by: arch@


137917 20-Nov-2004 das

Remove references to U area and garbage collect includes.

Reviewed by: arch@


137912 20-Nov-2004 das

U areas are going away, so don't allocate one for process 0.

Reviewed by: arch@


137903 20-Nov-2004 cognet

Increase cnt.v_syscall and cnt.v_trap when needed.


137838 18-Nov-2004 cognet

Move KERNPHYSADDR and KERNVIRTADDR from std.i80321 to std.iq31244.
Use the correct KERNPHYSADDR.


137760 16-Nov-2004 cognet

Simplify a bit bus_dmamap_load_buffer by removing the "first" parameter, use
nseg == -1 instead.

Obtained from: NetBSD


137758 15-Nov-2004 cognet

MFi386:
- inlina bus_dmamap_load_buffer
- Directly pass the pmap to bus_dmamap_load_buffer, instead of the struct thread


137665 13-Nov-2004 cognet

Remove debugging printf.


137664 13-Nov-2004 cognet

Don't forget to clear the PG_WRITEABLE flag when appropriate.


137663 13-Nov-2004 cognet

Use uma_prealloc() on the l2table_zone to prevent a LOR at startup.


137629 12-Nov-2004 cognet

Implement interrupt counting, so that vmstat -i work.


137552 10-Nov-2004 cognet

Don't forget to include opt_vm.h.


137551 10-Nov-2004 cognet

Convert the IQ31244 code to use ARM32_NEW_VM_LAYOUT.


137549 10-Nov-2004 cognet

Invalidate the data cache in pmap_qremove() instead of in pmap_kenter(),
and in pmap_enter_quick() instead of pmap_enter().


137498 10-Nov-2004 trhodes

Remove __P here too.

Ok'ed by: cognet


137463 09-Nov-2004 cognet

Use the RET macro.


137462 09-Nov-2004 cognet

Import a RET macro, that will use bx if the arch supports it.

Obtained from: NetBSD


137372 08-Nov-2004 alc

Introduce two new options, "CPU private" and "no wait", to sf_buf_alloc().
Change the spelling of the "catch" option to be consistent with the new
options. Implement the "no wait" option. An implementation of the "CPU
private" for i386 will be committed at a later date.


137363 07-Nov-2004 cognet

Add device mem in config files.


137362 07-Nov-2004 cognet

Import md bits for mem(4) on arm.
While I'm there, cleanup a bit pmap.h.


137341 07-Nov-2004 cognet

Remove useless code.


137282 05-Nov-2004 cognet

Disable interrupts for atomic_cmpset_32, this one is just not atomic.
Don't export it to userland.


137275 05-Nov-2004 cognet

Copy the syscall args in a tmp variable instead of directly using the
trapframe, as it can be modified in the syscall.
Call thread_user_enter() when appropriate.


137274 05-Nov-2004 cognet

Save a few cycles in context switch.
Update comments to reflect reality.


137273 05-Nov-2004 cognet

If we're still running at the physical address, jump to the virtual address
instead before calling initarm().
This removes the need to map virtual == physical in initarm().


137272 05-Nov-2004 cognet

Be more verbose about cache capacities.


137271 05-Nov-2004 cognet

Implement casuptr.


137270 05-Nov-2004 cognet

Call pmap_pte_init_arm9 instead of pmap_pte_init_generic if
ARM9_CACHE_WRITE_THROUGH is defined.


137264 05-Nov-2004 cognet

In cpu_critical_fork_exit(), make sure to set td_md.md_critnest so that
interrupts will be enabled.

Spotted out by: jhb


137229 04-Nov-2004 cognet

Protect the function declarations with #ifdef _KERNEL.


137228 04-Nov-2004 cognet

Directly use __pcpu for PCPU_* instead of pcpup.


137227 04-Nov-2004 cognet

Decrease KSTACK_PAGES and UAREA_PAGES.


137226 04-Nov-2004 cognet

Use interrupts_disable() and interrupts_restore() as intr_disable() and
intr_restore() instead of re-implement it.


137224 04-Nov-2004 cognet

Don't barf if no CPU type is defined while compiling kernel modules.


137223 04-Nov-2004 cognet

Implement get_cyclecount().


137222 04-Nov-2004 cognet

Try to implement atomic operations using swp, instead of disabling interrupts.


137216 04-Nov-2004 cognet

Use casts to enforce the return type of bswap16() and bswap32().


137215 04-Nov-2004 cognet

Implement cpu_thread_siginfo() and set_mcontext().
Nuke getframe(), and choose which stack to use directly in sendsig().


137214 04-Nov-2004 cognet

Implement cpu_set_upcall and cpu_set_upcall_kse.
Calculate td_frame and td_pcb the right way in cpu_thread_setup.


137211 04-Nov-2004 cognet

Get kernel modules to work.


137137 02-Nov-2004 andre

Reduce annoying SCSI probing delay from 15 to 5 seconds in all GENRIC kernels.

Discussed on: -current


137117 01-Nov-2004 jhb

- Change the ddb paging "support" to use a variable (db_lines_per_page) to
control the number of lines per page rather than a constant. The variable
can be examined and changed in ddb as '$lines'. Setting the variable to
0 will effectively turn off paging.
- Change db_putchar() to force out pending whitespace before outputting
newlines and carriage returns so that one can rub out content on the
current line via '\r \r' type strings.
- Change the simple pager to rub out the --More-- prompt explicitly when
the routine exits.
- Add some aliases to the simple pager to make it more compatible with
more(1): 'e' and 'j' do a single line. 'd' does half a page, and
'f' does a full page.

MFC after: 1 month
Inspired by: kris


136743 21-Oct-2004 cognet

We want to ignore BUS_DMASYNC_POSTWRITE, not BUS_DMASYNC_POSTREAD.
Spotted out by: mux
Pointy hat to: cognet


136383 11-Oct-2004 cognet

Use a default MD_ROOT_SIZE of 65535.


136382 11-Oct-2004 cognet

Use MD_ROOT_SIZE, instead of our own macro.


136033 01-Oct-2004 cognet

Add optimized version of the bswap macroes for constants if __OPTIMIZED__ is
defined.


136032 01-Oct-2004 cognet

There's no need to turn on MALLOC_PROFILE by default.


135881 28-Sep-2004 cognet

Calling fuword from fuword32 with bl and without returning after is really a bad
idea.
Any way I get a customized CVS template with "Pointy hat to: cognet"
pre-filled ?


135880 28-Sep-2004 cognet

Always invalidate the whole data cache in pmap_enter() for now.
It should not be needed.


135879 28-Sep-2004 cognet

Remove dead code.


135675 23-Sep-2004 cognet

Add the config file for the IQ31244 board.


135674 23-Sep-2004 cognet

Use the new KERNVIRTADDR and PHYSADDR options.
Add KDB.


135669 23-Sep-2004 cognet

Import partial support for the IQ31244 eval board (i80321 CPU). IQ80321 might
work out of the box too, but I have no hardware to test.
It works well enough to go multiuser. Network works, SATA does not, as I have
no drive to test.
Thanks to Intel for sending such a board.

Obtained from: NetBSD


135668 23-Sep-2004 cognet

Add Xscale common headers.


135667 23-Sep-2004 cognet

Big cleanup: get ride of the whole spl level logic, as FreeBSD doesn't use
it anymore.


135666 23-Sep-2004 cognet

Now that we have pmap_growkernel(), use more KVA.


135665 23-Sep-2004 cognet

Remove the empty definition of struct osigcontext, as it will never be used.


135664 23-Sep-2004 cognet

Remove the pcb32_cstate field of struct pcb.


135663 23-Sep-2004 cognet

Declare sigcode and szsigcode.


135662 23-Sep-2004 cognet

Define VM_PROT_READ_IS_EXEC.


135661 23-Sep-2004 cognet

Implement _mcount().

Obtained from: NetBSD


135660 23-Sep-2004 cognet

Define STACKALIGNBYTES and STACKALIGN.


135659 23-Sep-2004 cognet

We are using _mcount, not __mcount.
Remove the !__ELF__ case.


135658 23-Sep-2004 cognet

Use sf_bufs for uiomove_fromphys().


135657 23-Sep-2004 cognet

On Xscale, use the minicache for the kernel stack.


135656 23-Sep-2004 cognet

Make sure to call cred_update_thread() if needed.
Add partial support for KTRACE.


135655 23-Sep-2004 cognet

Implement cpu_throw().

Obtained from: NetBSD


135654 23-Sep-2004 cognet

Remove unused macroes.
Add user, btrap, etrap, bintr and eintrt in the GPROF case.


135653 23-Sep-2004 cognet

Implement sigreturn().


135652 23-Sep-2004 cognet

Add the hw.machine sysctl.


135651 23-Sep-2004 cognet

Remove definitions related to the pmap cache state, and add TDF_NEEDRESCHED.


135650 23-Sep-2004 cognet

Add new functions to know which irqs are pending, and to mask and unmask
interrupts, as these are CPU specific.
If the interrupt handler is not marked as INTR_FAST, don't unmask the
interrupt until it as been serviced.


135649 23-Sep-2004 cognet

Rename macroes, as we don't need to mess with alignment faults.
Call ast() if TDF_NEEDRESCHED is set too, not just TDF_ASTPENDING.


135648 23-Sep-2004 cognet

Use sigcode.


135647 23-Sep-2004 cognet

In db_stack_trace_cmd, remove the "pc" variable, we don't need it.


135646 23-Sep-2004 cognet

Use the right path for xscale files.


135645 23-Sep-2004 cognet

Remove bus_space_vaddr(), it does not exists in FreeBSD.


135644 23-Sep-2004 cognet

Don't attempt to manage our own segment list, and just remember the buffers
provided.

Obtained from: NetBSD


135643 23-Sep-2004 cognet

Use the right path for the bcopyinout_xscale.S file.


135642 23-Sep-2004 cognet

Add MD syscalls to sync the icache and to drain the write buffer.

Obtained from: NetBSD


135641 23-Sep-2004 cognet

Implement pmap_growkernel() and pmap_extract_and_hold().
Remove the cache state logic : right now, it provides more problems than it
helps.
Add helper functions for mapping devices while bootstrapping.
Reorganize the code a bit, and remove dead code.

Obtained from: NetBSD (partially)


135640 23-Sep-2004 cognet

Map the kernel very early if needed.
Implement sigcode.


135529 20-Sep-2004 jhb

- Add support for "paging" in stack trace output. That is, when you do
a stack trace from ddb, the output will pause with a '--More--' prompt
every 18 lines. If you hit Enter, it will print another line and prompt
again. If you hit space it will output another page and then prompt.
If you hit 'q' or 'x' it will abort the rest of the stack trace.
- Fix the sparc64 userland stack trace to honor the total count of lines
to print. This is useful if your trace happens to walk back onto
0xdeadc0de and gets stuck in an endless loop.

MFC after: 1 month
Tested on: i386, alpha, sparc64


134934 08-Sep-2004 scottl

Fix a problem with tag->boundary inheritence that has existed since day one
and was propagated to nearly every platform. The boundary of the child needs
to consider the boundary of the parent and pick the minimum of the two, not
the maximum. However, if either is 0 then pick the appropriate one.
This bug was exposed by a recent change to ATA, which should now be fixed by
this change. The alignment and maxsegsz tag attributes likely also need
a similar review in the near future.

This is a MT5 candidate.

Reviewed by: marcel
Submitted by: sos (in part)


134791 05-Sep-2004 julian

Refactor a bunch of scheduler code to give basically the same behaviour
but with slightly cleaned up interfaces.

The KSE structure has become the same as the "per thread scheduler
private data" structure. In order to not make the diffs too great
one is #defined as the other at this time.

The KSE (or td_sched) structure is now allocated per thread and has no
allocation code of its own.

Concurrency for a KSEGRP is now kept track of via a simple pair of counters
rather than using KSE structures as tokens.

Since the KSE structure is different in each scheduler, kern_switch.c
is now included at the end of each scheduler. Nothing outside the
scheduler knows the contents of the KSE (aka td_sched) structure.

The fields in the ksegrp structure that are to do with the scheduler's
queueing mechanisms are now moved to the kg_sched structure.
(per ksegrp scheduler private data structure). In other words how the
scheduler queues and keeps track of threads is no-one's business except
the scheduler's. This should allow people to write experimental
schedulers with completely different internal structuring.

A scheduler call sched_set_concurrency(kg, N) has been added that
notifies teh scheduler that no more than N threads from that ksegrp
should be allowed to be on concurrently scheduled. This is also
used to enforce 'fainess' at this time so that a ksegrp with
10000 threads can not swamp a the run queue and force out a process
with 1 thread, since the current code will not set the concurrency above
NCPU, and both schedulers will not allow more than that many
onto the system run queue at a time. Each scheduler should eventualy develop
their own methods to do this now that they are effectively separated.

Rejig libthr's kernel interface to follow the same code paths as
linkse for scope system threads. This has slightly hurt libthr's performance
but I will work to recover as much of it as I can.

Thread exit code has been cleaned up greatly.
exit and exec code now transitions a process back to
'standard non-threaded mode' before taking the next step.
Reviewed by: scottl, peter
MFC after: 1 week


134398 27-Aug-2004 marcel

Move the kernel-specific logic to adjust frompc from MI to MD. For
these two reasons:
1. On ia64 a function pointer does not hold the address of the first
instruction of a functions implementation. It holds the address
of a function descriptor. Hence the user(), btrap(), eintr() and
bintr() prototypes are wrong for getting the actual code address.
2. The logic forces interrupt, trap and exception entry points to
be layed-out contiguously. This can not be achieved on ia64 and is
generally just bad programming.

The MCOUNT_FROMPC_USER macro is used to set the frompc argument to
some kernel address which represents any frompc that falls outside
the kernel text range. The macro can expand to ~0U to bail out in
that case.
The MCOUNT_FROMPC_INTR macro is used to set the frompc argument to
some kernel address to represent a call to a trap or interrupt
handler. This to avoid that the trap or interrupt handler appear to
be called from everywhere in the call graph. The macro can expand
to ~0U to prevent adjusting frompc. Note that the argument is selfpc,
not frompc.

This commit defines the macros on all architectures equivalently to
the original code in sys/libkern/mcount.c. People can take it from
here...

Compile-tested on: alpha, amd64, i386, ia64 and sparc64
Boot-tested on: i386


133464 11-Aug-2004 marcel

Add __elfN(dump_thread). This function is called from __elfN(coredump)
to allow dumping per-thread machine specific notes. On ia64 we use this
function to flush the dirty registers onto the backingstore before we
write out the PRSTATUS notes.

Tested on: alpha, amd64, i386, ia64 & sparc64
Not tested on: arm, powerpc


133453 10-Aug-2004 alc

Add a comment describing pmap_extract_and_hold() noting that the protection
check still needs implementation on arm.


133237 06-Aug-2004 cognet

Use the new prototype for the zone constructor.


133143 04-Aug-2004 alc

- Push down the acquisition and release of Giant into pmap_enter_quick()
on those architectures without pmap locking.
- Eliminate the acquisition and release of Giant in vm_map_pmap_enter().


133084 03-Aug-2004 mux

Instead of calling ia32_pause() conditionally on __i386__ or __amd64__
being defined, define and use a new MD macro, cpu_spinwait(). It only
expands to something on i386 and amd64, so the compiled code should be
identical.

Name of the macro found by: jhb
Reviewed by: jhb


133012 02-Aug-2004 cognet

*blush*
Fix htonl and htons.


133011 02-Aug-2004 cognet

Fix comments.

Spotted out by: mux


132899 30-Jul-2004 alc

- Push down the acquisition and release of Giant into pmap_protect() on
those architectures without pmap locking.
- Eliminate the acquisition and release of Giant from vm_map_protect().

(Translation: mprotect(2) runs to completion without touching Giant on
alpha, amd64, i386 and ia64.)


132834 29-Jul-2004 cognet

Don't use cast as lvalue.


132702 27-Jul-2004 rwatson

Correct typo in prior commit: s/cd/td/


132700 27-Jul-2004 rwatson

Pass a thread argument into cpu_critical_{enter,exit}() rather than
dereference curthread. It is called only from critical_{enter,exit}(),
which already dereferences curthread. This doesn't seem to affect SMP
performance in my benchmarks, but improves MySQL transaction throughput
by about 1% on UP on my Xeon.

Head nodding: jhb, bmilekic


132560 22-Jul-2004 alc

MFi386 revision 1.421
- Use kmem_alloc_nofault() rather than kmem_alloc_pageable() in
pmap_mapdev(). See revision 1.140 of kern/sys_pipe.c for a detailed
rationale.


132516 21-Jul-2004 cognet

Do not declare curpcb.


132514 21-Jul-2004 cognet

Use the kernel pmap if no thread is provided.


132513 21-Jul-2004 cognet

Define pmap_page_is_mapped().


132503 21-Jul-2004 cognet

Do not use NULL as a malloc type for contigmalloc().


132482 21-Jul-2004 marcel

Unify db_stack_trace_cmd(). All it did was look up the thread given
the thread ID and call db_trace_thread().
Since arm has all the logic in db_stack_trace_cmd(), rename the
new DB_COMMAND function to db_stack_trace to avoid conflicts on
arm.
While here, have db_stack_trace parse its own arguments so that
we can use a more natural radix for IDs. If the ID is not a thread
ID, or more precisely when no thread exists with the ID, try if
there's a process with that ID and return the first thread in it.
This makes it easier to print stack traces from the ps output.

requested by: rwatson@
tested on: amd64, i386, ia64


132474 20-Jul-2004 cognet

Implement ptrace_set_pc().
Add a stub for ptrace_clear_single_step().


132473 20-Jul-2004 cognet

Remove astpending, it has not been used for a long time.


132472 20-Jul-2004 cognet

Uncomment the vector relocation code.


132471 20-Jul-2004 cognet

Nuke disable_intr() and enable_intr(), as it already exists elsewhere.


132402 19-Jul-2004 cognet

Make kdb_backtrace() sort of work.


132383 19-Jul-2004 das

Make FLT_ROUNDS correctly reflect the dynamic rounding mode.


132119 13-Jul-2004 cognet

In pmap_remove_pages(), when the pv_list is entry, we want to clean the
PG_WRITEABLE flag, not the PG_REFERENCED flag.

Submitted by: alc


132082 13-Jul-2004 alc

Push down the acquisition and release of the page queues lock into
pmap_remove_pages(). (The implementation of pmap_remove_pages() is
optional. If pmap_remove_pages() is unimplemented, the acquisition and
release of the page queues lock is unnecessary.)

Remove spl calls from the alpha, arm, and ia64 pmap_remove_pages().


132059 12-Jul-2004 cognet

Update to kdb.


132058 12-Jul-2004 cognet

Remove the kbd_trap() declaration.


132057 12-Jul-2004 cognet

Protect setjmp.h with #ifndef _MACHINE_SETJMP_H_.


132056 12-Jul-2004 cognet

Forward declare "struct pcb", so that one does not need to include
<machine/pcb.h> before including <machine/pmap.h>.


132055 12-Jul-2004 cognet

Implement a stub breakpoint().


132054 12-Jul-2004 cognet

Implement makectx().


132053 12-Jul-2004 cognet

Prototype makectx().


132052 12-Jul-2004 cognet

Import bus_memio.h and bus_pio.h for arm.


132051 12-Jul-2004 cognet

Import a kdb.h for arm, which contains stubs right now.


131837 08-Jul-2004 cognet

Define NSFBUFS and use it.


131658 05-Jul-2004 alc

Correct pmap_extract()'s return type. It should be vm_paddr_t, not
vm_offset_t.


131496 02-Jul-2004 cognet

ithread_schedule() now only takes one argument.


131495 02-Jul-2004 cognet

Define __RMAN_RESOURCE_VISIBLE where appropriate.


131231 28-Jun-2004 cognet

Remove unused includes.

Spotted out by: pjd


130745 19-Jun-2004 cognet

Fix compilation for Xscale.


130734 19-Jun-2004 cognet

Include sys/module.h.


130733 19-Jun-2004 cognet

I happened to have a sys/pool.h file in my tree, but most people do not,
so nuke this useless include.


130645 17-Jun-2004 cognet

Nuke dead code.


130644 17-Jun-2004 cognet

Nuke bus_space_mmap(), as it does not exist in FreeBSD.


130585 16-Jun-2004 phk

Do the dreaded s/dev_t/struct cdev */
Bump __FreeBSD_version accordingly.


130164 06-Jun-2004 phk

Remove filename+line number from panic messages.


130028 03-Jun-2004 tjr

Remove checks for curthread == NULL - it can't happen.


130023 03-Jun-2004 tjr

Move TDF_DEADLKTREAT into td_pflags (and rename it accordingly) to avoid
having to acquire sched_lock when manipulating it in lockmgr(), uiomove(),
and uiomove_fromphys().

Reviewed by: jhb


129750 26-May-2004 tmm

Retire cpu_sched_exit(); it is not used any more.


129580 22-May-2004 mux

Remove two debugging printf().

On behalf of: cognet


129444 19-May-2004 bde

Moved most of the "MI" definitions and declarations from <machine/profile.h>
to <sys/gmon.h>. Cleaned them up a little by not attempting to ifdef
for incomplete and out of date support for GUPROF in userland, as in
the sparc64 version.


129393 18-May-2004 stefanf

<stdint.h> should define WINT_M{AX,IN} independent from whether WCHAR_MIN is
defined. Otherwise first including <wchar.h> and then <stdint.h> leads to no
WINT_M{AX,IN} at all.

PR: 64956
Approved by: das (mentor)


129282 16-May-2004 peter

Make a small revision to the api between the elf linker core and the
elf_reloc() backends for two reasons. First, to support the possibility
of there being two elf linkers in the kernel (eg: amd64), and second, to
pass the relocbase explicitly (for relocating .o format kld files).


129254 14-May-2004 cognet

Implement bcopy, memcpy and memcmp in support.S.


129250 14-May-2004 cognet

Implement bzero et memset in support.S


129227 14-May-2004 cognet

This is FreeBSD/arm, not FreeBSD/i386

Submitted by: ru


129220 14-May-2004 cognet

Define uart_sa1110_ops and uart_sa1110_classe in .c files instead of spamming
uart_cpu.h


129212 14-May-2004 cognet

Implement enough of an uart driver to get serial console working.


129198 14-May-2004 cognet

Import FreeBSD/arm kernel bits.
It only supports sa1110 (on simics) right now, but xscale support should come
soon.
Some of the initial work has been provided by :
Stephane Potvin <sepotvin at videotron.ca>
Most of this comes from NetBSD.


128940 04-May-2004 cognet

Don't declare osigset_t, as it is done in sys/_sigset.h.


128938 04-May-2004 cognet

Add some endianess-related functions and macros.


128937 04-May-2004 cognet

Add the Elf32_Auxinfo declaretion.
Define AT_*.
(Maybe some of this could go in a MI header ?)


128936 04-May-2004 cognet

Define __double_t and __float_t.


127914 05-Apr-2004 imp

Remove advertising clause from University of California Regent's license,
per letter dated July 22, 1999.

Approved by: core


127239 20-Mar-2004 marcel

Introduce the cpumask_t type. The purpose of the type is to create a
level of abstraction for any and all CPU mask and CPU bitmap variables
so that platforms have the ability to break free from the hard limit
of 32 CPUs, simply because we don't have more bits in an u_int. Note
that the type is not supposed to solve massive parallelism, where
the number of CPUs can be larger than the width of the widest integral
type. As such, cpumask_t is not supposed to be a compound type. If
such would be necessary in the future, we can deal with the issues
then and there. For now, it can be assumed that the type is integral
and unsigned.

With this commit, all MD definitions start off as u_int. This allows
us to phase-in cpumask_t at our leasure without breaking anything.
Once cpumask_t is used consistently, platforms can switch to wider
(or smaller) types if such would be beneficial (or not; whatever :-)

Compile-tested on: i386


120422 25-Sep-2003 peter

Add sysentvec->sv_fixlimits() hook so that we can catch cases on 64 bit
systems where the data/stack/etc limits are too big for a 32 bit process.

Move the 5 or so identical instances of ELF_RTLD_ADDR() into imgact_elf.c.

Supply an ia32_fixlimits function. Export the clip/default values to
sysctl under the compat.ia32 heirarchy.

Have mmap(0, ...) respect the current p->p_limits[RLIMIT_DATA].rlim_max
value rather than the sysctl tweakable variable. This allows mmap to
place mappings at sensible locations when limits have been reduced.

Have the imgact_elf.c ld-elf.so.1 placement algorithm use the same
method as mmap(0, ...) now does.

Note that we cannot remove all references to the sysctl tweakable
maxdsiz etc variables because /etc/login.conf specifies a datasize
of 'unlimited'. And that causes exec etc to fail since it can no
longer find space to mmap things.


118382 03-Aug-2003 obrien

Style sync.


115164 19-May-2003 kan

sys/sys/limits.h:

- Fix visibilty test for LONG_BIT and WORD_BIT. `#if defined(__FOO_VISIBLE)'
is alays wrong because __FOO_VISIBLE is always defined (to 0 for
invisibility).

sys/<arch>/include/limits.h
sys/<arch>/include/_limits.h:

- Style fixes.

Submitted by: bde
Reviewed by: bsdmike
Approved by: re (scottl)


114678 04-May-2003 kan

Style fixes.
Remove DBL_DIG, DBL_MIN, DBL_MAX and their FLT_ counterparts, they
were marked for deprecation ever since SUSv1 at least.
Only define ULLONG_MIN/MAX and LLONG_MAX if long long type is
supported.
Restore a lost comment in MI _limits.h file and remove it from
sys/limits.h where it does not belong.


114216 29-Apr-2003 kan

Deprecate machine/limits.h in favor of new sys/limits.h.
Change all in-tree consumers to include <sys/limits.h>

Discussed on: standards@
Partially submitted by: Craig Rodrigues <rodrigc@attbi.com>


113941 23-Apr-2003 kan

Add a new sys/limits.h file which in turn depends on machine/_limits.h
to get actual constant values. This is in preparation for machine/limits.h
retirement.

Discussed on: standards@
Submitted by: Craig Rodrigues <rodrigc@attbi.com> (*)
Modified by: kan


112569 25-Mar-2003 jake

- Add vm_paddr_t, a physical address type. This is required for systems
where physical addresses larger than virtual addresses, such as i386s
with PAE.
- Use this to represent physical addresses in the MI vm system and in the
i386 pmap code. This also changes the paddr parameter to d_mmap_t.
- Fix printf formats to handle physical addresses >4G in the i386 memory
detection code, and due to kvtop returning vm_paddr_t instead of u_long.

Note that this is a name change only; vm_paddr_t is still the same as
vm_offset_t on all currently supported platforms.

Sponsored by: DARPA, Network Associates Laboratories
Discussed with: re, phk (cdevsw change)


108175 22-Dec-2002 tjr

MB_LEN_MAX is not MD, move it to the MI limits.h.


105014 13-Oct-2002 mike

Add standards visibility conditionals. Change any uses of sigset_t to
struct __sigset to avoid depending on objects from <sys/signal.h>.


103436 17-Sep-2002 peter

Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports. As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL. It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha


102874 03-Sep-2002 mike

Now that _BSD_CLK_TCK_ and _BSD_CLOCKS_PER_SEC_ are the same on all
architectures, move the definition directly into <time.h> and finish
the removal of <machine/ansi.h>.


102429 26-Aug-2002 mike

Since arm and powerpc aren't far enough to set stathz, take a
preemptive strike and change _BSD_CLK_TCK_ and _BSD_CLOCKS_PER_SEC_
to 128.

Approved by: benno


102315 23-Aug-2002 mike

Move several MI types from <machine/_types.h> to <sys/_types.h>.
These types are unlikely to ever become very MD. They include:
clockid_t, ct_rune_t, fflags_t, intrmask_t, mbstate_t, off_t, pid_t,
rune_t, socklen_t, timer_t, wchar_t, and wint_t.

While moving them, make a few adjustments (submitted by bde):
o __ct_rune_t needs to be precisely `int', not necessarily __int32_t,
since the arg type of the ctype functions is int.
o __rune_t, __wchar_t and __wint_t inherit this via a typedef of
__ct_rune_t.
o Some minor wording changes in the comment blocks for ct_rune_t and
mbstate_t.

Submitted by: bde (partially)


102227 21-Aug-2002 mike

o Merge <machine/ansi.h> and <machine/types.h> into a new header
called <machine/_types.h>.
o <machine/ansi.h> will continue to live so it can define MD clock
macros, which are only MD because of gratuitous differences between
architectures.
o Change all headers to make use of this. This mainly involves
changing:
#ifdef _BSD_FOO_T_
typedef _BSD_FOO_T_ foo_t;
#undef _BSD_FOO_T_
#endif
to:
#ifndef _FOO_T_DECLARED
typedef __foo_t foo_t;
#define _FOO_T_DECLARED
#endif

Concept by: bde
Reviewed by: jake, obrien


100882 29-Jul-2002 mike

Create a new header <machine/_stdint.h> for storing MD parts of
<stdint.h>. Previously, parts were defined in <machine/ansi.h> and
<machine/limits.h>. This resulted in two problems:
(1) Defining macros in <machine/ansi.h> gets in the way of that
header only defining types.
(2) Defining C99 limits in <machine/limits.h> adds pollution to
<limits.h>.


99733 10-Jul-2002 mike

Remove label_t and physadr, which seem to have never been used in
FreeBSD.

Submitted by: bde


99630 09-Jul-2002 mike

Remove an unused type.


99594 08-Jul-2002 mike

Move __offsetof() macro from <machine/ansi.h> to <sys/cdefs.h>. It's
hardly MD, since all our platforms share the same macro. It's not
really compiler dependent either, but this helps in reducing
<machine/ansi.h> to only type definitions.


98710 23-Jun-2002 iedowse

Make vm_pindex_t 64-bit on all platforms. This is necessary to avoid
overflows with the large file sizes that UFS2 permits.

Reviewed by: dillon, alc, tegge


96606 14-May-2002 phk

Move MI stuff out of MD param.h files.

It can all still be overridden in the MD files should need suddenly arise.


96604 14-May-2002 phk

Remove the unused definitions of ctod() and dotc().


96319 10-May-2002 obrien

Sync with the other platforms.


93092 24-Mar-2002 obrien

Guard against redefining __gnuc_va_list.


92812 20-Mar-2002 alfred

Remove __P.


87575 09-Dec-2001 obrien

We need machine/{signal,ucontext}.h to build a cross GCC compiler.
So craft the proper versions of these and commit em.


87574 09-Dec-2001 obrien

Following sys/i386/include/ansi.h rev 1.33, add additional integer types
in <machine/ansi.h> and that are required by <sys/stdint.h>.


87571 09-Dec-2001 obrien

We need machine/types.h to build a cross GCC compiler.
(copied from src/sys/i386/include/types.h rev 1.23, except for the label_t
size, which is '10' everywhere BUT on i386)


87567 09-Dec-2001 obrien

machine/limits.h
(taken from i386/include/limits.h rev 1.19)


87158 01-Dec-2001 mike

o Stop abusing MD headers with non-MD types.
o Hide nonstandard functions and types in <netinet/in.h> when
_POSIX_SOURCE is defined.
o Add some missing types (required by POSIX.1-200x) to <netinet/in.h>.
o Restore vendor ID from Rev 1.1 in <netinet/in.h> and make use of new
__FBSDID() macro.
o Fix some miscellaneous issues in <arpa/inet.h>.
o Correct final argument for the inet_ntop() function (POSIX.1-200x).
o Get rid of the namespace pollution from <sys/types.h> in
<arpa/inet.h>.

Reviewed by: fenner
Partially submitted by: bde


85335 23-Oct-2001 mike

Remove funky right justification.

Pointed out by: bde


85187 19-Oct-2001 obrien

Try two on the preprocessing logic.

Reviewed by: ru


85183 19-Oct-2001 obrien

Blah, fix braino where ru had to remind me of proper preprocessor syntax.
Bad fingers, no cookie.


85108 18-Oct-2001 obrien

My attempts at minimizing the number of #def's got me in trouble.


84783 10-Oct-2001 ps

Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader
tunable.

Reviewed by: peter
MFC after: 2 weeks


82530 30-Aug-2001 mike

o Remove some GCCisms in src/powerpc/include/endian.h.
o Unify <machine/endian.h>'s across all architectures.
o Make bswapXX() functions use a different spelling of u_int16_t and
friends to reduce namespace pollution. The bswapXX() functions
don't actually exist, but we'll probably import these at some
point. Atleast one driver (if_de) depends on bswapXX() for big
endian cases.
o Deprecate byteorder(3) prototypes from <sys/types.h>, these are
now prototyped indirectly in <arpa/inet.h>.
o Deprecate in_addr_t and in_port_t typedefs in <sys/types.h>, these
are now typedef'd in <arpa/inet.h>.
o Change byteorder(3) prototypes to use standards compliant uint32_t
(spelled __uint32_t to reduce namespace pollution).
o Document new preferred headers and standards compliance.

Discussed with: bde
PR: 29946
Reviewed by: bmilekic


79053 01-Jul-2001 imp

Don't need the .keep_me files. Obrien and I committed past each other.

Add 0-9 to the list of possible kernel names at matsushita-san's
suggestion.

Submitted by: Makoto MATSUSHITA-san <matusita@jp.FreeBSD.org>


79032 30-Jun-2001 obrien

Add .cvsignore so that CVS stop's complaining about people's kernel build dirs.


79030 30-Jun-2001 obrien

Ensure sys/${MACHINE}/compile/FOO exists

Reviewed by: arch, imp, peter, and the USENIX terminal room secret kernel cabal


77931 09-Jun-2001 obrien

Fix style of defines.


76785 18-May-2001 obrien

Make _BSD_TIME_T_ (time_t) an `int' rather than `long'. This will help
flag errors where programmers assume time_t is a long, which it is not on
64-bit platforms.

Submitted by: bde


76784 18-May-2001 obrien

Style changes -- revert ordering to mostly two revs ago.
Embellish some comments, fix tab'ing.

Requested by: bde


76701 16-May-2001 obrien

Consistently define the rune types.
Follow NetBSD's lead and add a _BSD_MBSTATE_T_ type.


76700 16-May-2001 obrien

Move the int typedefs to the top so they can be used in defining other types.
Ensure every platform has __offsetof.
Make multiple inclusion detection consistent with other
<platform>/include/*.h files.


72569 17-Feb-2001 ume

Correct disordering which is corresponding to bde's fix to
i386/include/ansi.h.


72510 15-Feb-2001 ume

Correct 2nd argument of getnameinfo(3) to socklen_t.

Reviewed by: itojun


72358 11-Feb-2001 markm

RIP <machine/lock.h>.

Some things needed bits of <i386/include/lock.h> - cy.c now has its
own (only) copy of the COM_(UN)LOCK() macros, and IMASK_(UN)LOCK()
has been moved to <i386/include/apic.h> (AKA <machine/apic.h>).
Reviewed by: jhb


71576 24-Jan-2001 jasone

Convert all simplelocks to mutexes and remove the simplelock implementations.


70786 08-Jan-2001 obrien

Remove seconds types we don't use that came in thru the NetBSD heiratage.


70651 04-Jan-2001 obrien

StrongARM platform-specific definitions.