]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
9 years agoIf target name starts with "naa.", set it as WWNN for CTL port.
mav [Wed, 4 Mar 2015 14:12:38 +0000 (14:12 +0000)]
If target name starts with "naa.", set it as WWNN for CTL port.

MFC after: 1 week
Sponsored by: iXsystems, Inc.

9 years agoFix handling of queued text and logout requests.
mav [Wed, 4 Mar 2015 12:12:46 +0000 (12:12 +0000)]
Fix handling of queued text and logout requests.

While it may have little sense, text and logout requests can be queued.
If they are, they consume cmdsn, so we should increment our conn_cmdsn.

MFC after: 1 week

9 years agoFix deadlock in IPv6 PCB code.
ae [Wed, 4 Mar 2015 11:20:01 +0000 (11:20 +0000)]
Fix deadlock in IPv6 PCB code.

When several threads are trying to send datagram to the same destination,
but fragmentation is disabled and datagram size exceeds link MTU,
ip6_output() calls pfctlinput2(PRC_MSGSIZE). It does notify all
sockets wanted to know MTU to this destination. And since all threads
hold PCB lock while sending, taking the lock for each PCB in the
in6_pcbnotify() leads to deadlock.

RFC 3542 p.11.3 suggests notify all application wanted to receive
IPV6_PATHMTU ancillary data for each ICMPv6 packet too big message.
But it doesn't require this, when we don't receive ICMPv6 message.

Change ip6_notify_pmtu() function to be able use it directly from
ip6_output() to notify only one socket, and to notify all sockets
when ICMPv6 packet too big message received.

PR: 197059
Differential Revision: https://reviews.freebsd.org/D1949
Reviewed by: no objection from #network
Obtained from: Yandex LLC
MFC after: 1 week
Sponsored by: Yandex LLC

9 years agoDefine PTR_ALIGN() macro which will be needed coming Mellanox driver
hselasky [Wed, 4 Mar 2015 09:58:39 +0000 (09:58 +0000)]
Define PTR_ALIGN() macro which will be needed coming Mellanox driver
releases.

Sponsored by: Mellanox Technologies
MFC after: 3 days

9 years agoUpdates for the Mellanox ethernet driver
hselasky [Wed, 4 Mar 2015 09:30:03 +0000 (09:30 +0000)]
Updates for the Mellanox ethernet driver

> List of fixes:
  * use correct format for GID printouts
  * double array indexing
  * spelling in printouts
  * void pointer arithmetic
  * allow more receive rings
  * correct maximum number of transmit rings
  * use "const" instead of "static" for constants
  * check for invalid VLAN tags
  * check for lack of IRQ resources
> Added more hardware specific defines
> Added more verbose printouts of firmware status codes

Sponsored by: Mellanox Technologies
MFC after: 3 days

9 years agoAllow USB modules to be built in parallel.
hselasky [Wed, 4 Mar 2015 09:17:03 +0000 (09:17 +0000)]
Allow USB modules to be built in parallel.

9 years agoAdd myself (whu) to committers-src.dot.
whu [Wed, 4 Mar 2015 09:05:20 +0000 (09:05 +0000)]
Add myself (whu) to committers-src.dot.

Approved by: royger (mentor)

9 years agoAdd ethernet MAC DDR flush hookups for QCA955x.
adrian [Wed, 4 Mar 2015 03:52:50 +0000 (03:52 +0000)]
Add ethernet MAC DDR flush hookups for QCA955x.

Tested:

* AP135

9 years agoAdd DDR flush registers for QCA955x.
adrian [Wed, 4 Mar 2015 03:51:54 +0000 (03:51 +0000)]
Add DDR flush registers for QCA955x.

9 years agoFix both arge0 and arge1 to work correctly on the AP135.
adrian [Wed, 4 Mar 2015 03:48:11 +0000 (03:48 +0000)]
Fix both arge0 and arge1 to work correctly on the AP135.

* Force the arge0 interface to not use a PHY for speed negotiation
  for now.  It'd be nice to do it, but right now the RGMII interface
  to the switch needs to stay at 1000/full in order to match what
  the switch side of the port is programmed as.

  So until that's all sorted out, disconnect arge0 from the PHY
  and leave it at fixed at 1000/full.

  I noticed this when I tried using a busted ethernet cable that
  forced the PHY to negotiate 100/full.  The switch was fine and
  it negotiated to 100/full, but then arge0 saw the link update
  and set the speed to 100/full when the switch side of that
  hook up was set to 1000/full.  Tsk.

* When using argemdio, the mdio device resets and initialises
  the MAC, /not/ the arge_attach (or, as I discovered, arge_init.)
  So arge1 wasn't being fully initialised and thus no traffic
  would ever flow.

  So until I tidy up that mess, just create an argemdio bus for
  arge1.  It's totally fine; it won't do anything or find anything
  attached to it.

Tested:

* AP135 reference board - both arge0 and arge1 now work.

9 years agoFix typo in dropped-packets attribute (missing s).
marcel [Wed, 4 Mar 2015 02:56:32 +0000 (02:56 +0000)]
Fix typo in dropped-packets attribute (missing s).

Pointed-out by: allanjude (excellent catch!)

9 years agoUpdate ThunderX SATA quirk
emaste [Wed, 4 Mar 2015 02:17:36 +0000 (02:17 +0000)]
Update ThunderX SATA quirk

  Add quirk to ThunderX AHCI forcing only 1 MSI-X interrupt.
  Shorten Thunder quirk description to avoid printing 'SATA' twice.

Obtained from: Semihalf
Sponsored by: The FreeBSD Foundation

9 years agoAdd a new safetly belt to freebsd-update to prevent a user doing a minor update ...
allanjude [Tue, 3 Mar 2015 23:20:18 +0000 (23:20 +0000)]
Add a new safetly belt to freebsd-update to prevent a user doing a minor update (-pX) while having an unfinished major upgrade (9.x to 9.y)
Safetly belt can be disabled with the -F flag

Additionally, add the --not-running-from-cron flag they bypasses the TTY requirement, and allows freebsd-update to be invoked by orchestration frameworks, scripts, or otherwise.

PR: 196760
Differential Revision: https://reviews.freebsd.org/D1550
Reviewed by: cperciva, delphij
Approved by: bcr (mentor), rodrigc (src)
MFC after: 1 month
Relnotes: yes
Sponsored by: ScaleEngine Inc.

9 years agoAdd density code for DAT-72, and notes on DAT-160.
ken [Tue, 3 Mar 2015 22:49:07 +0000 (22:49 +0000)]
Add density code for DAT-72, and notes on DAT-160.

As it turns out, the density code for DAT-160 (0x48) is the same
as for SDLT220.  Since the SDLT values are already in the table,
we will leave them in place.

Thanks to Harald Schmalzbauer for confirming the DAT-72 density code.

lib/libmt/mtlib.c:
Add DAT-72 density code, and commented out DAT-160 density
code.  Explain why DAT-160 is commented out.  Add notes
explaining where the bpi values for these formats came from.

usr.bin/mt/mt.1:
Add DAT-72 density code, and add a note explaining that
the SDLTTapeI(110) density code (0x48) is the same as
DAT-160.

Sponsored by: Spectra Logic
MFC after: 3 weeks

9 years agosh: Fix more compiler warnings related to variable declarations.
jilles [Tue, 3 Mar 2015 21:21:43 +0000 (21:21 +0000)]
sh: Fix more compiler warnings related to variable declarations.

9 years agoUpdate .Dd, sync usage() for -F. Missed in previous change.
pluknet [Tue, 3 Mar 2015 20:23:59 +0000 (20:23 +0000)]
Update .Dd, sync usage() for -F.  Missed in previous change.

9 years agoAdd and document an option to cause syslogd to run in the
rpaulo [Tue, 3 Mar 2015 20:07:59 +0000 (20:07 +0000)]
Add and document an option to cause syslogd to run in the
foreground.

This allows a separate process to monitor when and how
syslogd exits. That process can then restart syslogd if needed.

Differential Revision: https://reviews.freebsd.org/D1985
Submitted by: Ravi Pokala
Reviewed by: allanjude (man page)

9 years agoSort and remove unnecessary headers.
loos [Tue, 3 Mar 2015 17:20:19 +0000 (17:20 +0000)]
Sort and remove unnecessary headers.

9 years agoCreate nd6_ns_output_fib() function with extra argument fibnum. Use it
ae [Tue, 3 Mar 2015 10:50:03 +0000 (10:50 +0000)]
Create nd6_ns_output_fib() function with extra argument fibnum. Use it
to initialize mbuf's fibnum. Uninitialized fibnum value can lead to
panic in the routing code. Currently we use only RT_DEFAULT_FIB value
for initialization.

Differential Revision: https://reviews.freebsd.org/D1998
Reviewed by: hrs (previous version)
Sponsored by: Yandex LLC

9 years agoAdd quirk for USB 3.0 controllers which don't support 64-bit DMA.
hselasky [Tue, 3 Mar 2015 10:21:54 +0000 (10:21 +0000)]
Add quirk for USB 3.0 controllers which don't support 64-bit DMA.

MFC after: 3 days
Submitted by: Gary Jennejohn <gljennjohn@gmail.com>

9 years agoFix the pl011 driver to work when the uart will write in zero cycles. This
andrew [Tue, 3 Mar 2015 09:48:19 +0000 (09:48 +0000)]
Fix the pl011 driver to work when the uart will write in zero cycles. This
is the case, depending on the options, in some of the ARM hardware
simulators. In these cases we don't get an interrupt so will need to
schedule the task to write more data to the uart.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

9 years agoLower warnings to please gcc 4.2
bapt [Tue, 3 Mar 2015 07:51:36 +0000 (07:51 +0000)]
Lower warnings to please gcc 4.2

9 years agoNonce has to be non-NULL for DAD even if net.inet6.ip6.dad_enhanced=0.
hrs [Tue, 3 Mar 2015 04:28:19 +0000 (04:28 +0000)]
Nonce has to be non-NULL for DAD even if net.inet6.ip6.dad_enhanced=0.

9 years agoCheck the return value of config_intrhook_establish().
kevlo [Tue, 3 Mar 2015 02:08:17 +0000 (02:08 +0000)]
Check the return value of config_intrhook_establish().

9 years agoMake periphdriver_register() take XPT lock when modifying the periph_drivers
trasz [Mon, 2 Mar 2015 22:48:11 +0000 (22:48 +0000)]
Make periphdriver_register() take XPT lock when modifying the periph_drivers
array.

This fixes a panic that sometimes occured when kldloading ctl.ko.

Reviewed by: mav@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation

9 years agoMove duplicate code to a new public function.
loos [Mon, 2 Mar 2015 22:28:47 +0000 (22:28 +0000)]
Move duplicate code to a new public function.

This new function can be used by other drivers to reserve the use of GPIO
pins.

Anyway, the use of ofw_gpiobus_parse_gpios() is preferred when possible.

Requested by: Michal Meloun

9 years agoRemove gperf(7) if gperf is not installed
bapt [Mon, 2 Mar 2015 22:13:33 +0000 (22:13 +0000)]
Remove gperf(7) if gperf is not installed

9 years agoAdd a "module" to build the dtb files for all supported imx6 systems.
ian [Mon, 2 Mar 2015 22:12:56 +0000 (22:12 +0000)]
Add a "module" to build the dtb files for all supported imx6 systems.

9 years agoUpdate libucl to git version 8d3b186
bapt [Mon, 2 Mar 2015 21:41:09 +0000 (21:41 +0000)]
Update libucl to git version 8d3b186

9 years agoReally update to 8d3b186
bapt [Mon, 2 Mar 2015 21:36:45 +0000 (21:36 +0000)]
Really update to 8d3b186

9 years agoUpdate libucl to git version 8d3b186
bapt [Mon, 2 Mar 2015 21:35:31 +0000 (21:35 +0000)]
Update libucl to git version 8d3b186

9 years agoAdd quirk to disable 64-bit XHCI DMA after r276717.
hselasky [Mon, 2 Mar 2015 20:42:06 +0000 (20:42 +0000)]
Add quirk to disable 64-bit XHCI DMA after r276717.

Requested by: Gary Jennejohn <gljennjohn@gmail.com>
MFC after: 3 days

9 years agoRevert r279338. The casts are apparently bogus, despite the fact that
ian [Mon, 2 Mar 2015 20:40:25 +0000 (20:40 +0000)]
Revert r279338.  The casts are apparently bogus, despite the fact that
they've been working in i386 (where this change came from).

9 years agoUpdate Exynos5 XHCI attach code after r276717.
hselasky [Mon, 2 Mar 2015 20:38:17 +0000 (20:38 +0000)]
Update Exynos5 XHCI attach code after r276717.

MFC after: 3 days

9 years agoFix warnings/errors when building vmm.ko with gcc:
neel [Mon, 2 Mar 2015 20:13:49 +0000 (20:13 +0000)]
Fix warnings/errors when building vmm.ko with gcc:

- fix warning about comparison of 'uint8_t v_tpr >= 0' always being true.

- fix error triggered by an empty clobber list in the inline assembly for
  "clgi" and "stgi"

- fix error when compiling "vmload %rax", "vmrun %rax" and "vmsave %rax". The
  gcc assembler does not like the explicit operand "%rax" while the clang
  assembler requires specifying the operand "%rax". Fix this by encoding the
  instructions using the ".byte" directive.

Reported by: julian
MFC after: 1 week

9 years agogive others fair warning that _SPARE2 isn't just cxgb, but used by large
jmg [Mon, 2 Mar 2015 20:05:16 +0000 (20:05 +0000)]
give others fair warning that _SPARE2 isn't just cxgb, but used by large
number of other subsystems, so you probably don't want _SPARE2..

ktr needs an overhaul to really only compile in the ones you want,
we've long passed the 31 bits it provides..

Sponsored by: transip.nl

9 years agoFix group membership of cloned interfaces when one is moved by
hrs [Mon, 2 Mar 2015 20:00:03 +0000 (20:00 +0000)]
Fix group membership of cloned interfaces when one is moved by
if_vmove().

In if_vmove(), if_detach_internal() and if_attach_internal() were
called in series to detach and reattach the interface.  When
detaching, if_delgroup() was called and the interface leaves all of
the group membership.  And then upon attachment, if_addgroup(ifp,
IFG_ALL) was called and it joined only "all" group again.

This had a problem. Normally, a cloned interface automatically joins
a group whose name is ifc_name of the cloner in addition to "all"
upon creation.  However, if_vmove() removed the membership and did
not restore upon attachment.

Differential Revision: https://reviews.freebsd.org/D1859

9 years agoFix white spaces.
jkim [Mon, 2 Mar 2015 19:14:58 +0000 (19:14 +0000)]
Fix white spaces.

9 years agoMake fuse(4) respect FOPEN_DIRECT_IO. This is required for correct
trasz [Mon, 2 Mar 2015 19:04:27 +0000 (19:04 +0000)]
Make fuse(4) respect FOPEN_DIRECT_IO.  This is required for correct
operation of GlusterFS.

PR: 192701
Submitted by: harsha at harshavardhana.net
Reviewed by: kib@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation

9 years agoProperly evaluate XZ_CMD from the chroot.
gjb [Mon, 2 Mar 2015 18:10:58 +0000 (18:10 +0000)]
Properly evaluate XZ_CMD from the chroot.

Sponsored by: The FreeBSD Foundation

9 years agoChange the sa(4) driver to check for long position support on
ken [Mon, 2 Mar 2015 18:09:49 +0000 (18:09 +0000)]
Change the sa(4) driver to check for long position support on
SCSI-2 devices.

Some older tape devices claim to be SCSI-2, but actually do support
long position information.  (Long position information includes
the current file mark.)  For example, the COMPAQ SuperDLT1.

So we now only disable the check on SCSI-1 and older devices.

sys/cam/scsi/scsi_sa.c:
In saregister(), only disable fetching long position
information on SCSI-1 and older drives.  Update the
comment to explain why.

Confirmed by: dvl
Sponsored by: Spectra Logic
MFC after: 3 weeks

9 years agoo Add more room for EFI boot blocks
br [Mon, 2 Mar 2015 18:08:39 +0000 (18:08 +0000)]
o Add more room for EFI boot blocks
o Specify the filename as argument

Differential Revision: https://reviews.freebsd.org/D1999
Reviewed by: emaste@

9 years agoUse xz(1) to compress FreeBSD/arm images.
gjb [Mon, 2 Mar 2015 18:04:57 +0000 (18:04 +0000)]
Use xz(1) to compress FreeBSD/arm images.

Sponsored by: The FreeBSD Foundation

9 years agoImplement Enhanced DAD algorithm for IPv6 described in
hrs [Mon, 2 Mar 2015 17:30:26 +0000 (17:30 +0000)]
Implement Enhanced DAD algorithm for IPv6 described in
draft-ietf-6man-enhanced-dad-13.

This basically adds a random nonce option (RFC 3971) to NS messages
for DAD probe to detect a looped back packet.  This looped back packet
prevented DAD on some pseudo-interfaces which aggregates multiple L2 links
such as lagg(4).

The length of the nonce is set to 6 bytes.  This algorithm can be disabled by
setting net.inet6.ip6.dad_enhanced sysctl to 0 in a per-vnet basis.

Reported by: hiren
Reviewed by: ae
Differential Revision: https://reviews.freebsd.org/D1835

9 years agoRemove pregenerated text version of the texinfo documentation
bapt [Mon, 2 Mar 2015 17:25:03 +0000 (17:25 +0000)]
Remove pregenerated text version of the texinfo documentation

9 years agoInstall manpage version of texinfo documentation for binutils
bapt [Mon, 2 Mar 2015 17:24:04 +0000 (17:24 +0000)]
Install manpage version of texinfo documentation for binutils

9 years agoGenerate manpage out of the texinfo files using texi2mdoc
bapt [Mon, 2 Mar 2015 17:20:34 +0000 (17:20 +0000)]
Generate manpage out of the texinfo files using texi2mdoc

9 years agoUpdate mandoc to cvs snaphot from 20150302
bapt [Mon, 2 Mar 2015 16:58:57 +0000 (16:58 +0000)]
Update mandoc to cvs snaphot from 20150302

Use the new unsupp warning level to detect the unsupported manpages in man(1)

9 years agoRemove WIP code
bapt [Mon, 2 Mar 2015 16:48:00 +0000 (16:48 +0000)]
Remove WIP code

9 years agoImport CVS snapshot of mandoc as of 20150302
bapt [Mon, 2 Mar 2015 16:45:41 +0000 (16:45 +0000)]
Import CVS snapshot of mandoc as of 20150302

9 years agoInstall old texinfo pages in the form of mdoc(7) pages
bapt [Mon, 2 Mar 2015 11:49:01 +0000 (11:49 +0000)]
Install old texinfo pages in the form of mdoc(7) pages

9 years agoConvert texinfo to mdoc(7) using texi2mdoc
bapt [Mon, 2 Mar 2015 11:48:00 +0000 (11:48 +0000)]
Convert texinfo to mdoc(7) using texi2mdoc

9 years agoAdd support for the AP135 2.0 reference platform.
adrian [Mon, 2 Mar 2015 02:27:25 +0000 (02:27 +0000)]
Add support for the AP135 2.0 reference platform.

This is a QCA9558 SoC (2ghz 3x3) with an atheros 11ac PCIe 5GHz 3x3
NIC and an AR8327 gigabit ethernet switch.

TODO:

* The AR8327 gigabit switch support bugfixes are forthcoming.
* 11ac support and 11ac NIC support

9 years agoBring over the initial QCA955x SoC support framework.
adrian [Mon, 2 Mar 2015 02:24:46 +0000 (02:24 +0000)]
Bring over the initial QCA955x SoC support framework.

This is enough to bring up the basic SoC support.

What works thus far:

* The mips74k core, pll setup, and UART (or else well, stuff would
  be really difficult..)
* both USB 2.0 EHCI controllers
* on-board 2GHz 3x3 wifi (the other variant has 2GHz/5GHz wifi on-chip);
* arge0 - not yet sure why arge1 isn't firing off interrupts and thus
  handling traffic, but I will soon figure it out and fix it here.

Tested:

* AP135 reference design, QCA9558 SoC, pretending to be an 11n
  2GHz AP.

TODO:

* There's an interrupt mux hooking up devices to IP2 and IP3 - but it's
  not a read-and-clear or write-to-clear register.  So, trying to use it
  naively like I have been ends up with massive interrupt storms.
  For now the things that share those interrupts can just take them as
  shared interrupts and try to play nice.

* There's two PCIe root complexes /and/ one of them can actually be
  a PCIe device endpoint.  Yes, you heard right.  I have to teach the
  AR724x PCIe bridge code to handle multiple instances with multiple
  memory/irq regions, and then there'll be RC support, but EP support
  isn't on my TODO list.

* I'm not sure why arge1 isn't up and running.  I'll go figure that
  out soon and fix it here.

Thankyou to Qualcomm Atheros for providing me with hardware and
an abundance of documentation about these things.

9 years agoLay some groundwork for having this stuff hang off of AHB rather than
adrian [Mon, 2 Mar 2015 02:14:44 +0000 (02:14 +0000)]
Lay some groundwork for having this stuff hang off of AHB rather than
the CPU nexus.

* Add ahb as a possible bus attachment
* Lay a comment down to remind me or whoever else ends up trying
  to debug why the EEPROM isn't mapped in as to what's going on.

9 years ago[QCA955x] make the USB EHCI interrupts shareable.
adrian [Mon, 2 Mar 2015 02:08:43 +0000 (02:08 +0000)]
[QCA955x] make the USB EHCI interrupts shareable.

There's two EHCI controllers in the QCA955x SoCs - they have different
interrupts available via various demux registers, but they both tie to
IP3.

So for now, allow them to be sharable so they can hang off of IP3.

9 years agoAdd initial QCA955x support to if_arge.c.
adrian [Mon, 2 Mar 2015 01:53:47 +0000 (01:53 +0000)]
Add initial QCA955x support to if_arge.c.

Tested:

* AP135 development board, QCA9558 SoC.

9 years agoAdd a MII mode for SGMII.
adrian [Mon, 2 Mar 2015 01:23:59 +0000 (01:23 +0000)]
Add a MII mode for SGMII.

This appears on the AR934x and later chips, although it's not
something that's programmed via the arge0/arge1 register space.
It's just cosmetic.

9 years agosh: Fix more compiler warnings.
jilles [Sun, 1 Mar 2015 22:32:23 +0000 (22:32 +0000)]
sh: Fix more compiler warnings.

9 years agoMissed local diff.
nwhitehorn [Sun, 1 Mar 2015 21:47:38 +0000 (21:47 +0000)]
Missed local diff.

9 years agosh: Fix compiler warnings related to duplicate or missing declarations.
jilles [Sun, 1 Mar 2015 21:46:55 +0000 (21:46 +0000)]
sh: Fix compiler warnings related to duplicate or missing declarations.

9 years agonandfs_meta_bread() calls bread() which can set bp to NULL in some
imp [Sun, 1 Mar 2015 21:41:37 +0000 (21:41 +0000)]
nandfs_meta_bread() calls bread() which can set bp to NULL in some
error cases. Calling brelse() with a NULL pointer is not allowed,
so only call brelse() when the bp is non-NULL.

Reported by: Maxime Villard (reported as uninitialized variable)

9 years agoDon't leak 'used' in a few error cases.
imp [Sun, 1 Mar 2015 21:41:35 +0000 (21:41 +0000)]
Don't leak 'used' in a few error cases.

Reported by: Maxime Villard

9 years agoUnlock the main lock before returning rather than after to eliminate
imp [Sun, 1 Mar 2015 21:41:33 +0000 (21:41 +0000)]
Unlock the main lock before returning rather than after to eliminate
dead code that shouldn't have been dead.

Reported by: Maxime Villard

9 years agoInitialize NX stack capabilities and direct map status in pmap like on AIM.
nwhitehorn [Sun, 1 Mar 2015 21:23:23 +0000 (21:23 +0000)]
Initialize NX stack capabilities and direct map status in pmap like on AIM.

9 years agoMerge r278429 from ppc64:
nwhitehorn [Sun, 1 Mar 2015 21:20:18 +0000 (21:20 +0000)]
Merge r278429 from ppc64:

Fix an extremely subtle concurrency bug triggered by running on 32-thread
POWER8 systems. During thread switch, there was a very small window when
the stack pointer was set to the stack pointer of the outgoing thread, but
after the lock on that thread had already been released.

If, during that window, the outgoing thread were rescheduled on another CPU
and begin execution and an exception were taken on the original CPU, the
trap handler and the outgoing thread would simultaneously execute on the same
stack, causing memory corruption. Fix this by making sure to release the
old thread only after cpu_switch() is done with its stack.

MFC after: 2 weeks

9 years agoRecord the dependency to x86bios in vga_pci
dumbbell [Sun, 1 Mar 2015 20:54:29 +0000 (20:54 +0000)]
Record the dependency to x86bios in vga_pci

This fixes the build of XEN and XBOX kernels on i386, which was broken
in r279487.

While here, do not build vga_pci_repost() on PC98.

Reported by: bz@

9 years agoGive compilers a stronger hint to inline the functions
kargl [Sun, 1 Mar 2015 20:32:47 +0000 (20:32 +0000)]
Give compilers a stronger hint to inline the functions
pzero[f], qzero[f], pone[f], and qone[f].  While here
fix the function declarations in accordance with style(9).

9 years agoAR8327: Disable energy-efficient ethernet support in the PHYs.
adrian [Sun, 1 Mar 2015 20:32:35 +0000 (20:32 +0000)]
AR8327: Disable energy-efficient ethernet support in the PHYs.

I noticed that openwrt/linux does this, citing "instability", so
until they figure out why I'm going to disable it here as well.

Tested:

* QCA AP135 - QCA955x SoC + AR8327 switch.

9 years agoWhen j0() and j1() were converted to j0f() and j1f(), the threshold
kargl [Sun, 1 Mar 2015 20:26:03 +0000 (20:26 +0000)]
When j0() and j1() were converted to j0f() and j1f(), the threshold
values for the different invervals were not converted correctly.
Adjust the threshold values to values, which should agree with the
comments.

Reported by: cognet (j1f only)
Discussed with: pfg, bde
Reviewed by: bde

9 years agoBump the port mask on the AR8327 ethernet switch from 0x3f to 0x7f.
adrian [Sun, 1 Mar 2015 20:22:28 +0000 (20:22 +0000)]
Bump the port mask on the AR8327 ethernet switch from 0x3f to 0x7f.

So, it turns out that the AR8327 has 7 ports internally:

* GMAC0 / external (CPU) MAC0
* GMAC1 / port1 -> GMAC5 / port5: external switch port PHYs
* GMAC6 / external (CPU) MAC1

Now, depending upon how things are wired up, the second CPU port (MAC1)
can be wired to either the switch (port6), or through port5's PHY, bypassing
the GMAC+switch entirely.  Ie, it can pretend to be a boring PHY, saving
system designers from having to include a separate PHY for a "WAN" port.

Here's the rub - the AP135 board (QCA955x SoC) hooks up arge0 to
the second CPU port on the AR8327, but it's hooked up as RGMII.
So, in order to hook it up to the rest of the switch, it isn't configured
as a separate PHY - OpenWRT has it setup as connected via RGMII to
GMAC6 and (I'm guessing) it's set to be a WAN port by configuring up
port-based VLANs or something.

Thus, with a port mask of 0x3f, GMAC6 was never allowed to receive traffic
from any other port.  It could transmit fine, but not receive anything.

So, now it works enough for me to continue doing board bootstrapping.
Note, this isn't enough to make the QCA955x + AR8327 work - there's
a bunch of uncommitted work to both the platform SoC (interrupt handling,
ethernet, etc) and the ethernet switch (register access space, setup, etc)
that needs to happen.  However, this particular change is also relevant to
other SoCs, like the AR934x and AR7161, both of which can be glued to
this switch.

Tested:

* AP135 development board

TODO:

* Figure out whether I can somehow abuse another port mode to have this
  be a pass-through PHY, or whether I should just create some more boot
  time hints to explicitly set up port-based isolation so this works
  in a more useful way by default.

9 years agoMake the "automounted" flag work for FUSE filesystems.
trasz [Sun, 1 Mar 2015 18:26:26 +0000 (18:26 +0000)]
Make the "automounted" flag work for FUSE filesystems.

PR: 192852
Submitted by: taku at tackymt.homeip.net (earlier version)
MFC after: 1 month
Sponsored by: The FreeBSD Foundation

9 years agovt(4): Add support to "downgrade" from eg. vt_fb to vt_vga
dumbbell [Sun, 1 Mar 2015 12:54:22 +0000 (12:54 +0000)]
vt(4): Add support to "downgrade" from eg. vt_fb to vt_vga

The main purpose of this feature is to be able to unload a KMS driver.

When going back from the current vt(4) backend to the previous backend,
the previous backend is reinitialized with the special VDF_DOWNGRADE
flag set. Then the current driver is terminated with the new "vd_fini"
callback.

In the case of vt_fb and vt_vga, this allows the former to pass the
vgapci device vt_fb used to vt_vga so the device can be rePOSTed.

Differential Revision: https://reviews.freebsd.org/D687

9 years agovgapci: New vga_pci_repost() function
dumbbell [Sun, 1 Mar 2015 12:47:36 +0000 (12:47 +0000)]
vgapci: New vga_pci_repost() function

This can be used to restore the VGA mode after a KMS driver is unloaded.

Differential Revision: https://reviews.freebsd.org/D687

9 years agoFix the dtrace ARM atomic compare-and-set functions. These functions are
andrew [Sun, 1 Mar 2015 10:04:14 +0000 (10:04 +0000)]
Fix the dtrace ARM atomic compare-and-set functions. These functions are
expected to return the data in the memory location pointed at by target
after the operation. The FreeBSD atomic functions previously used return
either 0 or 1 to indicate if the comparison succeeded or not respectively.

With this change these functions only support ARMv6 and later are supported
by these functions.

Sponsored by: ABT Systems Ltd

9 years agoAdd very initial QCA955x awareness to the GPIO code.
adrian [Sun, 1 Mar 2015 07:00:34 +0000 (07:00 +0000)]
Add very initial QCA955x awareness to the GPIO code.

There's a lot more to come - the QCA955x has a bunch more GPIO MUX
configuration, reminiscent of what the ARM chips let you do - but
it'll have to come later.

9 years agoFlesh out some more QCA955x ethernet PLL setup.
adrian [Sun, 1 Mar 2015 06:59:32 +0000 (06:59 +0000)]
Flesh out some more QCA955x ethernet PLL setup.

9 years agoAdd Ethernet PLL values for the QCA955x.
adrian [Sun, 1 Mar 2015 06:54:59 +0000 (06:54 +0000)]
Add Ethernet PLL values for the QCA955x.

These are the same as the AR934x.

Obtained from: Linux openwrt

9 years agoMake QCA955X_GMAC_REG_ETH_CFG defined like most other registers like this.
adrian [Sun, 1 Mar 2015 06:52:23 +0000 (06:52 +0000)]
Make QCA955X_GMAC_REG_ETH_CFG defined like most other registers like this.

9 years agoAdd QCA955x support to the EHCI setup path.
adrian [Sun, 1 Mar 2015 06:05:01 +0000 (06:05 +0000)]
Add QCA955x support to the EHCI setup path.

Tested:

* QCA AP135 development board, USB rootfs.

9 years agoUse RW_NEW rather than calling bzero().
alc [Sun, 1 Mar 2015 05:18:02 +0000 (05:18 +0000)]
Use RW_NEW rather than calling bzero().

9 years agoCorrect a typo.
rstone [Sun, 1 Mar 2015 02:45:46 +0000 (02:45 +0000)]
Correct a typo.

X-MFC-With: r279458

9 years agoFree up the IPI slot used by IPI_STOP_HARD.
neel [Sun, 1 Mar 2015 02:31:27 +0000 (02:31 +0000)]
Free up the IPI slot used by IPI_STOP_HARD.

Change the numeric value of IPI_STOP_HARD so it doesn't occupy a valid IPI
slot. This can be done because IPI_STOP_HARD is actually delivered via NMI.

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D1983

9 years agoTeach pciconf how to dump out SR-IOV capability
rstone [Sun, 1 Mar 2015 00:59:35 +0000 (00:59 +0000)]
Teach pciconf how to dump out SR-IOV capability

Differential Revision: https://reviews.freebsd.org/D1639
Reviewed by: jhb
MFC after: 1 month
Sponsored by: Sandvine Inc.

9 years agoValidate the schema that the PF driver passed to us
rstone [Sun, 1 Mar 2015 00:59:28 +0000 (00:59 +0000)]
Validate the schema that the PF driver passed to us

Differential Revision: https://reviews.freebsd.org/D90
Reviewed by: emaste
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoDocument the interface for defining a configuration schema
rstone [Sun, 1 Mar 2015 00:59:21 +0000 (00:59 +0000)]
Document the interface for defining a configuration schema

Differential Revision: https://reviews.freebsd.org/D89
Reviewed by: wblock, emaste, allanjude
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd an rc.d script to invoke iovctl(8) during boot
rstone [Sun, 1 Mar 2015 00:58:23 +0000 (00:58 +0000)]
Add an rc.d script to invoke iovctl(8) during boot

Differential Revision: https://reviews.freebsd.org/D88
Reviewed by: wblock, emaste, allanjude
MFC after: 1 month
Relnotes: yes
Sponsored by: Sandvine Inc.

9 years agoAdd main() for iovctl and hook iovctl into build
rstone [Sun, 1 Mar 2015 00:52:41 +0000 (00:52 +0000)]
Add main() for iovctl and hook iovctl into build

Differential Revision: https://reviews.freebsd.org/D87
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd functions for parsing the iovctl config file
rstone [Sun, 1 Mar 2015 00:52:34 +0000 (00:52 +0000)]
Add functions for parsing the iovctl config file

Add two functions for parsing the iovctl config file.  The config
file is parsed using libucl[1], which accepts most YAML files and
a superset of JSON.  The first function is an ad-hoc parser that
searches the file for the PF.DEVICE configuration value.  We need
to know that value in order to fetch the schema from the kernel,
and we need the schema in order to be able to fully parse the file.

The second function parses the config file and validates it
against a schema.  This function will exit with an error message
if any validation error occurs.  If it succeeds, the configuration
is returned as an nvlist suitable for passing to the kernel.

[1] https://github.com/vstakhov/libucl

Differential Revision: https://reviews.freebsd.org/D86
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd iovctl functions for validating config
rstone [Sun, 1 Mar 2015 00:52:28 +0000 (00:52 +0000)]
Add iovctl functions for validating config

Add an function to iovctl that validates the configuration against
a schema.  This function is able to assume that the parser has
done most of the validation already and it's only responsible for
applying default VF values specified in the config file, confirming
that all required parameters have been set and that no invalid VF
numbers have been specified.

Differential Revision: https://reviews.freebsd.org/D85
Reviewed by: bcr
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd manpage documenting iovctl config file format.
rstone [Sun, 1 Mar 2015 00:52:21 +0000 (00:52 +0000)]
Add manpage documenting iovctl config file format.

Differential Revision: https://reviews.freebsd.org/D84
Reviewed by: emaste, bcr, wblock
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd a manpage for iovctl(8)
rstone [Sun, 1 Mar 2015 00:52:15 +0000 (00:52 +0000)]
Add a manpage for iovctl(8)

Differential Revision: https://reviews.freebsd.org/D83
Reviewed by: wblock
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoRevert r279454. The new directory didn't get added to svn properly.
rstone [Sun, 1 Mar 2015 00:44:15 +0000 (00:44 +0000)]
Revert r279454.  The new directory didn't get added to svn properly.

Pointy hat to: rstone

9 years agoAdd main() for iovctl and hook iovctl into build
rstone [Sun, 1 Mar 2015 00:41:17 +0000 (00:41 +0000)]
Add main() for iovctl and hook iovctl into build

Differential Revision: https://reviews.freebsd.org/D87
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoPass SR-IOV configuration to kernel using an nvlist
rstone [Sun, 1 Mar 2015 00:40:57 +0000 (00:40 +0000)]
Pass SR-IOV configuration to kernel using an nvlist

Pass all SR-IOV configuration to the kernel using an nvlist.  The
main benefit that this offers is flexibility.  It allows a driver
to accept any number of parameters of any type supported by the
SR-IOV configuration infrastructure with having to make any
changes outside of the driver.

It also offers the user very fine-grained control over the
configuration of the VFs -- if they want, they can have different
configuration applied to every VF.

Differential Revision: https://reviews.freebsd.org/D82
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd function to validate the consistency of SR-IOV config
rstone [Sun, 1 Mar 2015 00:40:51 +0000 (00:40 +0000)]
Add function to validate the consistency of SR-IOV config

Add a function that validates that the user-provided SR-IOV
configuration is valid.  This includes basic checks that the
structure of the configuration is correct (e.g. all required
configuration nodes are present) as well as validating against
a configuration schema.

The schema validation consists of:
 - Ensuring that all required config parameters are present.
 - If the schema defines a default value for a parameter,
   adding the default value if the parameter is not set.
 - Ensuring that no parameters are specified in the config
   that are not defined in the schema.
 - Ensuring that have the correct type defined in the schema.
 - Ensuring that no configuration nodes are present for devices
   that do not exist.  For example, if 2 VFs are configured,
   then we validate that a node called VF-5 does not exist.

Differential Revision: https://reviews.freebsd.org/D81
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd infrastructure for exporting config schema from PF drivers
rstone [Sun, 1 Mar 2015 00:40:42 +0000 (00:40 +0000)]
Add infrastructure for exporting config schema from PF drivers

Differential Revision: https://reviews.freebsd.org/D80
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAdd interface to destroy SR-IOV VFs
rstone [Sun, 1 Mar 2015 00:40:34 +0000 (00:40 +0000)]
Add interface to destroy SR-IOV VFs

Differential Revision: https://reviews.freebsd.org/D79
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoAllocate PCI I/O memory spaces for VFs
rstone [Sun, 1 Mar 2015 00:40:26 +0000 (00:40 +0000)]
Allocate PCI I/O memory spaces for VFs

When creating VFs, we must size each SR-IOV BAR on the PF and
allocate a configuous I/O memory window large enough for every VF.
However, the window only needs to be aligned to a boundary equal
to the size of the window for a single VF.

When a VF attempts to allocate an I/O memory resource, we must
intercept the request in the pci driver and pass it off to the
SR-IOV code, which will allocate the correct window from the
pre-allocated memory space for the PF.

Inform the pci driver about the size and address of the BARs on
the VF when the VF is created.  This is required by pciconf -b and
bhyve.

Differential Revision: https://reviews.freebsd.org/D78
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.

9 years agoEmulate the Device ID and Vendor ID registers for VFs
rstone [Sun, 1 Mar 2015 00:40:19 +0000 (00:40 +0000)]
Emulate the Device ID and Vendor ID registers for VFs

The SR-IOV standard requires VFs to read all-ones when the VID
and DID registers are read.  The VMM (hypervisor) is required to
emulate them instead.  Make pci_read_config() do this emulation.

Change pci_user.c to use pci_read_config() to read config space
registers instead of going directly to the pcib so that the
emulated VID/DID registers work correctly on VFs.  This is
required both for pciconf and bhyve PCI passthrough.

Differential Revision: https://reviews.freebsd.org/D77
Reviewed by: jhb
MFC after:  1 month
Sponsored by: Sandvine Inc.