]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
6 years agoImplement list_safe_reset_next() function macro in the LinuxKPI.
Hans Petter Selasky [Mon, 19 Feb 2018 16:31:19 +0000 (16:31 +0000)]
Implement list_safe_reset_next() function macro in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agostand/lua: Store menu entries in an "entries" table
Kyle Evans [Mon, 19 Feb 2018 16:25:43 +0000 (16:25 +0000)]
stand/lua: Store menu entries in an "entries" table

Instead of directly listing them in menu.welcome and menu.boot_options,
store them at menu.welcome.entries and welcome.boot_options.entries.

This will come into play later when we need to re-order the welcome menu if
boot_single is specified.

6 years agostand/lua: Remove some unused local declarations
Kyle Evans [Mon, 19 Feb 2018 15:49:27 +0000 (15:49 +0000)]
stand/lua: Remove some unused local declarations

Menus are actually defined as entries in the 'menu' table. These local
declarations have not been used in the history of our in-tree lua scripts,
so give them the boot.

6 years agoSet internal error returns for OF_peer(), OF_child(), and OF_parent() to
Nathan Whitehorn [Mon, 19 Feb 2018 15:49:14 +0000 (15:49 +0000)]
Set internal error returns for OF_peer(), OF_child(), and OF_parent() to
zero, matching the IEEE 1275 standard. Since these internal error paths
have never, to my knowledge, been taken, behavior is unchanged.

Reported by: gonzo
MFC after: 2 weeks

6 years agostand/lua: Menu style.lua(9) nits
Kyle Evans [Mon, 19 Feb 2018 15:47:09 +0000 (15:47 +0000)]
stand/lua: Menu style.lua(9) nits

6 years agostand/lua: Rename bootserial for clarity
Kyle Evans [Mon, 19 Feb 2018 15:42:20 +0000 (15:42 +0000)]
stand/lua: Rename bootserial for clarity

6 years agostand/lua: Defer kernel/module loading until boot or menu escape
Kyle Evans [Mon, 19 Feb 2018 14:21:56 +0000 (14:21 +0000)]
stand/lua: Defer kernel/module loading until boot or menu escape

Loading the kernel and modules can be really slow. Loading before the menu
draws and every time one changes kernel/boot environment is even more
painful.

Defer loading until we either boot, auto-boot, or escape to loader prompt.
We still need to deal with configuration changes as the boot environment
changes, but this is generally much quicker.

This commit strips all ELF loading out of config.load/config.reload so that
these are purely for configuration. config.loadelf has been created to deal
with kernel/module loads. Unloading logic has been ripped out, as we won't
need to deal with it in the menu anymore.

Discussed in part with: allanjude

6 years agoRemove unused variables and sysctl declaration.
Andrey V. Elsukov [Mon, 19 Feb 2018 12:20:51 +0000 (12:20 +0000)]
Remove unused variables and sysctl declaration.

MFC after: 1 week

6 years agoCheck packet length to do not make out of bounds access. Also save ah_nxt
Andrey V. Elsukov [Mon, 19 Feb 2018 11:14:38 +0000 (11:14 +0000)]
Check packet length to do not make out of bounds access. Also save ah_nxt
value to use it later, since ah pointer can become invalid.

Reported by: Maxime Villard <max at m00nbsd dot net>
MFC after: 5 days

6 years agorelax an assert in zfsctl_snapdir_lookup to match r323578
Andriy Gapon [Mon, 19 Feb 2018 08:55:22 +0000 (08:55 +0000)]
relax an assert in zfsctl_snapdir_lookup to match r323578

Since r323578 we may remove the last reference to a covered vnode with
vrele() instead of vput().  So, v_usecount may be decremented before
the vnode is locked and zfsctl_snapdir_lookup may "catch" the vnode
with v_usecount of zero and v_holdcnt of one.

PR: 225795
Reported by: asomers
MFC after: 1 week

6 years agoWhen stepping the radix tree in the LinuxKPI make sure we
Hans Petter Selasky [Mon, 19 Feb 2018 06:11:58 +0000 (06:11 +0000)]
When stepping the radix tree in the LinuxKPI make sure we
clear the least significant bits, so that no entries are
skipped.

MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoMFV r329552: less v530.
Xin LI [Mon, 19 Feb 2018 05:10:22 +0000 (05:10 +0000)]
MFV r329552: less v530.

MFC after: 2 weeks

6 years agoVendor import of less v530.
Xin LI [Mon, 19 Feb 2018 04:47:31 +0000 (04:47 +0000)]
Vendor import of less v530.

6 years agostand/lua: reload previously loaded kernel at config-load/reload
Kyle Evans [Mon, 19 Feb 2018 03:59:26 +0000 (03:59 +0000)]
stand/lua: reload previously loaded kernel at config-load/reload

r329550 introduced config.kernel_loaded. config.load() doesn't provide a
means of overriding the kernel to load, but that likely isn't necessary as
it will not be a common case. When loading the kernel, just attempt to load
the kernel previously loaded and specified in config.kernel_loaded.

If we haven't loaded a kernel yet, config.kernel_loaded will be unset/nil
and the "default"/first kernel found will be loaded. If we've loaded a
kernel, we'll try to load that same kernel again and fallback to the default
kernel if we need to.

This in also in support of upcoming boot environment support.

6 years agostand/lua: Store the loaded kernel as config.kernel_loaded
Kyle Evans [Mon, 19 Feb 2018 03:52:02 +0000 (03:52 +0000)]
stand/lua: Store the loaded kernel as config.kernel_loaded

'nil' means the 'first kernel found in module_path', which is the same
interpretation as passing 'nil' to loadkernel.

Otherwise, it denotes the name of a kernel that we've successfully loaded.
When reloaded later, we will still need to do the full search again to
locate the actual kernel in case things have changed, so just the name is
good enough.

This is in support of upcoming boot environment support. vfs.root.mountfrom
and currdev will be changed, then we will reload configuration and attempt
to reload the currently chosen kernel unless we shouldn't.

6 years agostand/lua: Clear the screen before prompting for passwords
Kyle Evans [Mon, 19 Feb 2018 02:09:10 +0000 (02:09 +0000)]
stand/lua: Clear the screen before prompting for passwords

In the worst case scenario, we have no passwords to prompt for and we end up
just clearing the screen twice before we draw the menu or proceed with boot.

In the best case scenario, we don't try drawing password prompts amidst a
bunch of kernel/module loading.

6 years agostand/lua: Addres style.lua(9) concern
Kyle Evans [Mon, 19 Feb 2018 02:01:49 +0000 (02:01 +0000)]
stand/lua: Addres style.lua(9) concern

6 years agostand/lua: Allow menu items to be conditionally (in)visible
Kyle Evans [Mon, 19 Feb 2018 01:59:41 +0000 (01:59 +0000)]
stand/lua: Allow menu items to be conditionally (in)visible

This will be used to conditionally show/hide the boot environment menu.

6 years agoBuild at45d and mx25l SPI flash drivers as modules.
Ian Lepore [Mon, 19 Feb 2018 01:49:19 +0000 (01:49 +0000)]
Build at45d and mx25l SPI flash drivers as modules.

6 years agoAdd ofw_bus_if.h to SRCS.
Ian Lepore [Mon, 19 Feb 2018 01:39:02 +0000 (01:39 +0000)]
Add ofw_bus_if.h to SRCS.

6 years agoAdd modules/spi as a gathering point for SPI-related modules, analagous to
Ian Lepore [Mon, 19 Feb 2018 01:32:27 +0000 (01:32 +0000)]
Add modules/spi as a gathering point for SPI-related modules, analagous to
modules/i2c for i2c/iicbus modules.  Build spibus as a module.

6 years agoCreate style.lua(9)
Kyle Evans [Mon, 19 Feb 2018 01:25:52 +0000 (01:25 +0000)]
Create style.lua(9)

This covers the lua style guidelines we've generally agreed on so far. It
will be revised as work continues and we run into more scenarios that need
specified.

Discussed with: cem, jilles
Differential Revision: https://reviews.freebsd.org/D14423

6 years agoFix process exit vs reap race introduced in r329449
Mateusz Guzik [Mon, 19 Feb 2018 00:54:08 +0000 (00:54 +0000)]
Fix process exit vs reap race introduced in r329449

The race manifested itself mostly in terms of crashes with "spin lock
held too long".

Relevant parts of respective code paths:

exit: reap:
PROC_LOCK(p);
PROC_SLOCK(p);
p->p_state == PRS_ZOMBIE
PROC_UNLOCK(p);
PROC_LOCK(p);
/* exit work */
if (p->p_state == PRS_ZOMBIE) /* true */
proc_reap()
free proc
/* more exit work */
PROC_SUNLOCK(p);

Thus a still exiting process is reaped.

Prior to the change the zombie check was followed by slock/sunlock trip
which prevented the problem.

Even code prior to this commit has a bug: the proc is still accessed for
statistic collection purposes. However, the severity is rather small and
the bug may be fixed in a future commit.

Reported by: many
Tested by: allanjude

6 years agoBuild ofw_iicbus as a module if OPT_FDT is defined.
Ian Lepore [Mon, 19 Feb 2018 00:47:03 +0000 (00:47 +0000)]
Build ofw_iicbus as a module if OPT_FDT is defined.

6 years agomtx: add mtx_spin_wait_unlocked
Mateusz Guzik [Mon, 19 Feb 2018 00:38:14 +0000 (00:38 +0000)]
mtx: add mtx_spin_wait_unlocked

The primitive can be used to wait for the lock to be released. Intended
usage is for locks in structures which are about to be freed.

The benefit is the avoided interrupt enable/disable trip + atomic op to
grab the lock and shorter wait if the lock is held (since there is no
worry someone will contend on the lock, re-reads can be more aggressive).

Briefly discussed with:  kib

6 years agoProvide public declarations for ofw_spibus_driver and ofw_spibus_devclass
Ian Lepore [Sun, 18 Feb 2018 23:35:23 +0000 (23:35 +0000)]
Provide public declarations for ofw_spibus_driver and ofw_spibus_devclass
so other drivers can refer to them in DRIVER_MODULE() decls.

6 years agoPrint more info for -v runs and temp hack for usb vs uhub
Warner Losh [Sun, 18 Feb 2018 23:16:16 +0000 (23:16 +0000)]
Print more info for -v runs and temp hack for usb vs uhub

Despite best efforts to regularize, there's a few tables in the system
that still report they are for bus usb when they are really for bus
uhub (where usb devices attach). Add a temporary workaround for this
until these places have been eliminated (likely my fault).

Second, when running verbose, describe what we're doing when
searching. This output can be quite long, but says exactly what's
going on (this output is to stdout, so it's useless for scripting).

6 years agoProvide a public function to acquire a gpio pin by giving the property name
Ian Lepore [Sun, 18 Feb 2018 23:08:43 +0000 (23:08 +0000)]
Provide a public function to acquire a gpio pin by giving the property name
and index.  A private function to do exactly that already existed, so this
renames gpio_pin_get_by_ofw_impl() to gpio_pin_get_by_ofw_propidx() and
provides a declaration for it in a public header.

Previously there were functions to get a pin by property name (assuming
there would only be one pin defined for the name), or by index (asuming
the property has the standard name "gpios").  It turns out there are
devicetree bindings that describe properties with names other than "gpios"
which can describe multiple pins.  Hence the need to retrieve the Nth item
from a named property.

6 years agoAdd the MODULE_DEPEND()s needed so that the kernel linker can resolve all
Ian Lepore [Sun, 18 Feb 2018 23:01:33 +0000 (23:01 +0000)]
Add the MODULE_DEPEND()s needed so that the kernel linker can resolve all
the symbols at load time when iicbus is not compiled into the kernel.

6 years agoAdd iic_recover_bus.c, now part of iicbus. This should have been added
Ian Lepore [Sun, 18 Feb 2018 22:57:04 +0000 (22:57 +0000)]
Add iic_recover_bus.c, now part of iicbus.  This should have been added
as part of r320463.

6 years agoArrange SRCS= as 1 file per line, alphabetical, so it's easier to maintain.
Ian Lepore [Sun, 18 Feb 2018 22:54:19 +0000 (22:54 +0000)]
Arrange SRCS= as 1 file per line, alphabetical, so it's easier to maintain.
Whitespace only, no functional changes.

6 years agoexit: get rid of PROC_SLOCK when checking a process to report, take #2
Mateusz Guzik [Sun, 18 Feb 2018 21:07:15 +0000 (21:07 +0000)]
exit: get rid of PROC_SLOCK when checking a process to report, take #2

The suspension counter needs synchronisation through slock, but we don't
need it to check if inspecting the counter is necessary to begin with.
In the common case it is not, thus avoid the lock if possible.

Reviewed by: kib
Tested by: pho

6 years agoGive the imx_i2c driver its own name, set up its relationship to ofw_iicbus.
Ian Lepore [Sun, 18 Feb 2018 20:08:35 +0000 (20:08 +0000)]
Give the imx_i2c driver its own name, set up its relationship to ofw_iicbus.
Previously it called itself 'iichb' to link up with the EARLY_DRIVER_MODULE
declaration in ofw_iicbus.c.

6 years agoFix broken assertion in r329520.
Mariusz Zaborski [Sun, 18 Feb 2018 20:04:39 +0000 (20:04 +0000)]
Fix broken assertion in r329520.

Reported by: pho@ lwhsu@

6 years agoAllow i2c hardware drivers to declare their own relationships to ofw_iicbus
Ian Lepore [Sun, 18 Feb 2018 19:33:28 +0000 (19:33 +0000)]
Allow i2c hardware drivers to declare their own relationships to ofw_iicbus
rather than relying on a set of canned EARLY_DRIVER_MODULE() statements in
the ofw_iicbus source.  This means hw drivers will no longer be required to
use one of a few predefined driver names.  They will also now be able to
decide themselves if they want to use DRIVER_MODULE or EARLY_DRIVER_MODULE
and to set which pass to attach on for early modules.

Mainly, this adds extern declarations for the driver and devclass variables.
It also renames ofwiicbus_devclass to ofw_iicbus_devclass to be consistant
with the way we use ofw_ prefixes on this stuff.

6 years agoCorrect/improve the descriptions if kern.ipc.(shmsegs,sema,msqids).
Brooks Davis [Sun, 18 Feb 2018 19:19:36 +0000 (19:19 +0000)]
Correct/improve the descriptions if kern.ipc.(shmsegs,sema,msqids).

The description of kern.ipc.shmsegs was wrong since 2005.  I updated the
others (which were more correct) to match.

PR: 225933
Reviewed by: cem
MFC after: 3 days
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D14391

6 years agoOptimise xchg() to use atomic_swap_32() and atomic_swap_64().
Hans Petter Selasky [Sun, 18 Feb 2018 18:46:56 +0000 (18:46 +0000)]
Optimise xchg() to use atomic_swap_32() and atomic_swap_64().

Suggested by: kib@
MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoFix implementation of xchg() function macro in the LinuxKPI.
Hans Petter Selasky [Sun, 18 Feb 2018 17:37:23 +0000 (17:37 +0000)]
Fix implementation of xchg() function macro in the LinuxKPI.
The exchange operation must be atomic.

MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoImprove command lifecycle debugging and detection of problems.
Scott Long [Sun, 18 Feb 2018 16:41:34 +0000 (16:41 +0000)]
Improve command lifecycle debugging and detection of problems.

Sponsored by: Netflix

6 years agoDon't include DMAR map entry zone items in kernel dumps.
Mark Johnston [Sun, 18 Feb 2018 16:03:50 +0000 (16:03 +0000)]
Don't include DMAR map entry zone items in kernel dumps.

Such items may be allocated in the I/O path used by the dumper,
potentially causing the dump to fail. Since there is some precedent
in the DMAR driver for avoiding this problem using _NODUMP, apply
this workaround to the zone as well.

Reported and tested by: mmacy
Reviewed by: kib
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D14422

6 years agoUse the fdeget_locked function instead of the fget_locked in the
Mariusz Zaborski [Sun, 18 Feb 2018 15:27:24 +0000 (15:27 +0000)]
Use the fdeget_locked function instead of the fget_locked in the
sys_capability.

Reviewed by: pjd@ (earlier version)
Discussed with: mjg@

6 years agoImplement support for radix_tree_for_each_slot() and radix_tree_exception()
Hans Petter Selasky [Sun, 18 Feb 2018 12:54:21 +0000 (12:54 +0000)]
Implement support for radix_tree_for_each_slot() and radix_tree_exception()
in the LinuxKPI and use unsigned long type for the radix tree index.

MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoefi: Do not pad the efi devpath structure
Emmanuel Vadot [Sun, 18 Feb 2018 11:17:39 +0000 (11:17 +0000)]
efi: Do not pad the efi devpath structure

This solve problem when booting with efi on armv7
Reviewed by: imp, tsoome
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D14415

6 years agoImplement the KMEM_CACHE() function macro in the LinuxKPI.
Hans Petter Selasky [Sun, 18 Feb 2018 09:52:30 +0000 (09:52 +0000)]
Implement the KMEM_CACHE() function macro in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoMake the vm_fault structure in the LinuxKPI compatible with
Hans Petter Selasky [Sun, 18 Feb 2018 09:31:01 +0000 (09:31 +0000)]
Make the vm_fault structure in the LinuxKPI compatible with
newer versions of the Linux kernel. No functional change.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoImplement the rcu_dereference_raw() function macro.
Hans Petter Selasky [Sun, 18 Feb 2018 09:10:14 +0000 (09:10 +0000)]
Implement the rcu_dereference_raw() function macro.
Make sure all RCU dereferencing use the READ_ONCE() function macro.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoImplement __GFP_BITS_SHIFT and __GFP_BITS_MASK macros in the LinuxKPI.
Hans Petter Selasky [Sun, 18 Feb 2018 08:58:20 +0000 (08:58 +0000)]
Implement __GFP_BITS_SHIFT and __GFP_BITS_MASK macros in the LinuxKPI.
Add compile time asserts to catch conflicts with native defines.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoImplement __list_del_entry() helper functions in the LinuxKPI.
Hans Petter Selasky [Sun, 18 Feb 2018 08:47:15 +0000 (08:47 +0000)]
Implement __list_del_entry() helper functions in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoImplement file_inode() and call_mmap() helper functions in the LinuxKPI.
Hans Petter Selasky [Sun, 18 Feb 2018 08:40:07 +0000 (08:40 +0000)]
Implement file_inode() and call_mmap() helper functions in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoRefactor dentry structure into its own header file in the LinuxKPI similary
Hans Petter Selasky [Sun, 18 Feb 2018 08:29:25 +0000 (08:29 +0000)]
Refactor dentry structure into its own header file in the LinuxKPI similary
to Linux. No functional change. Implement d_inode() helper function.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoUpdate the ktime type in the LinuxKPI to be a signed 64-bit integer similarly
Hans Petter Selasky [Sun, 18 Feb 2018 08:05:40 +0000 (08:05 +0000)]
Update the ktime type in the LinuxKPI to be a signed 64-bit integer similarly
to Linux, to avoid compilation issues. Implement ktime_get_real_seconds().

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks

6 years agoMFV r324198: 8081 Compiler warnings in zdb
Alexander Motin [Sun, 18 Feb 2018 04:00:29 +0000 (04:00 +0000)]
MFV r324198: 8081 Compiler warnings in zdb

illumos/illumos-gate@3f7978d02b206a6ebc5652c91aa9f42da6fbe00c
https://github.com/illumos/illumos-gate/commit/3f7978d02b206a6ebc5652c91aa9f42da6fbe00c

https://www.illumos.org/issues/8081
  zdb(8) is full of minor problems that generate compiler warnings. On FreeBSD,
  which uses -WError, the only way to build it is to disable all compiler
  warnings. This makes it much harder to detect newly introduced bugs. We should
  cleanup all the warnings.

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Author: Alan Somers <asomers@gmail.com>

6 years agoBuild modules specific to imx5/imx6 only when building those kernels.
Ian Lepore [Sun, 18 Feb 2018 02:48:54 +0000 (02:48 +0000)]
Build modules specific to imx5/imx6 only when building those kernels.

This adds sys/modules/imx with a SUBDIR makefile to make the whole
collection of modules that are specific to these SoCs.  Initially, that
"whole collection" consists of the if_ffec and imx_i2c drivers.

The if_ffec driver is referenced in its existing home in ../ffec rather
than moving it into the imx directory, because it's used by powerpc too,
but it is no longer built for all armv6/7 systems.

The imx_i2c driver is newly added as a module.

6 years agoAdd a detach method so that this can be a kldunload-friendly module.
Ian Lepore [Sun, 18 Feb 2018 02:01:41 +0000 (02:01 +0000)]
Add a detach method so that this can be a kldunload-friendly module.

6 years agoMFV r323911:
Alexander Motin [Sun, 18 Feb 2018 01:42:17 +0000 (01:42 +0000)]
MFV r323911:
8502 illumos#7955 broke delegated datasets when libshare is not present

illumos/illumos-gate@1c18e8fbd8db41a9fb39bd3ef7a18ee71ece20da
https://github.com/illumos/illumos-gate/commit/1c18e8fbd8db41a9fb39bd3ef7a18ee71ece20da

https://www.illumos.org/issues/8502
  The code in lib/libzfs/common/libzfs_mount.c already basically handles
  the case when libshare is not installed. We just need to not fail in
  zfs_init_libshare_impl.  I tested this in lx and things work as
  expected. I also tested there trying to set sharenfs and sharesmb on
  the delegated dataset. Neither is allowed from within a zone.  The
  spew of msgs from a native zone is not ZFS specific. I see the same
  spew simply running the share command.

Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Yuri Pankov <yuripv@gmx.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Author: Jerry Jelinek <jerry.jelinek@joyent.com>

6 years agostand/lua: More style nits, config.lua
Kyle Evans [Sun, 18 Feb 2018 01:35:46 +0000 (01:35 +0000)]
stand/lua: More style nits, config.lua

Some other points I think we need to be consistent on:
- Spacing around string concatenation (always)
- Test against 'nil' explicitly rather than relying on 'not' for things that
  reasonably won't be returning a boolean. e.g. loader.getenv

Eventually this will all get formalized somewhere.

6 years agoliblua: Fix missing '}' in lutil.c after r329499
Kyle Evans [Sun, 18 Feb 2018 01:31:18 +0000 (01:31 +0000)]
liblua: Fix missing '}' in lutil.c after r329499

6 years agolua loader: Auto detect eligible list of kernels to boot
Conrad Meyer [Sun, 18 Feb 2018 01:16:37 +0000 (01:16 +0000)]
lua loader: Auto detect eligible list of kernels to boot

Reviewed by: imp, kevans
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14419

6 years agoLua loader: Add barebones "lfs" module
Conrad Meyer [Sun, 18 Feb 2018 01:15:25 +0000 (01:15 +0000)]
Lua loader: Add barebones "lfs" module

Add a Lua FileSystem module, an emulation of a subset of the permissively
licensed (MIT) Lua library of the same name[0], to our loader's Lua
environment.

[0]: https://github.com/keplerproject/luafilesystem/

Reviewed by: kevans
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14418

6 years agointerp_lua: Register io/loader with regular Lua module system
Conrad Meyer [Sun, 18 Feb 2018 01:13:58 +0000 (01:13 +0000)]
interp_lua: Register io/loader with regular Lua module system

Reviewed by: kevans
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14421

6 years agostand/lua: Remove some debugging bits that snuck in... gr...
Kyle Evans [Sun, 18 Feb 2018 01:01:15 +0000 (01:01 +0000)]
stand/lua: Remove some debugging bits that snuck in... gr...

6 years agostand/lua: Fix module_path handling with multiple kernels
Kyle Evans [Sun, 18 Feb 2018 00:56:12 +0000 (00:56 +0000)]
stand/lua: Fix module_path handling with multiple kernels

Once we've successfully loaded a kernel, we add its directory to
module_path. If we switch kernels with the kernel selector, we again prepend
the kernel directory to the current module_path and end up with multiple
kernel paths, potentially with mismatched kernel/modules, added to
module_path.

Fix it by caching module_path at load() time and using the cached version
whenever we load a new kernel.

6 years agostand/lua: Fix verbiage and some typos
Kyle Evans [Sun, 18 Feb 2018 00:44:09 +0000 (00:44 +0000)]
stand/lua: Fix verbiage and some typos

"other_kernel" is decidedly not spelled "other_kern"

6 years agoFix fallout from the import of fresh dts source files from linux 4.15. It
Ian Lepore [Sun, 18 Feb 2018 00:02:09 +0000 (00:02 +0000)]
Fix fallout from the import of fresh dts source files from linux 4.15.  It
appears that node names no longer include leading zeroes in the @address
qualifiers, so we have to search for the nodes involved in interrupt fixup
using both flavors of name to be compatible with old and new .dtb files.

(You know you're in a bad place when you're applying a workaround to code
that exists only as a workaround for another problem.)

6 years agoDon't call sdhci_cleanup_slot() if sdhci_init_slot() never got called.
Ian Lepore [Sat, 17 Feb 2018 23:39:10 +0000 (23:39 +0000)]
Don't call sdhci_cleanup_slot() if sdhci_init_slot() never got called.
Also, do callout_init() very early in attach, so that callout_drain()
can be called in detach without worrying about whether it ever got init'd.

6 years agoDo not try to deallocate memory that wasn't allocated (you'd think that
Ian Lepore [Sat, 17 Feb 2018 23:23:27 +0000 (23:23 +0000)]
Do not try to deallocate memory that wasn't allocated (you'd think that
would be safe, but the function also tries to destroy mutexes that never
got created).

I guess this can only happen when imx_ehci_detach() is called on the
error-exit path from imx_ehci_attach(), and that path never got exercised
before today.

6 years agoImplement spin_trylock_irq() function macro in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 22:45:15 +0000 (22:45 +0000)]
Implement spin_trylock_irq() function macro in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoStub more lockdep function macros in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 22:41:20 +0000 (22:41 +0000)]
Stub more lockdep function macros in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoImplement get_task_pid() function macro in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 22:33:26 +0000 (22:33 +0000)]
Implement get_task_pid() function macro in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoliblua: Emulate DIR, opendir, fdopendir, closedir
Conrad Meyer [Sat, 17 Feb 2018 22:18:39 +0000 (22:18 +0000)]
liblua: Emulate DIR, opendir, fdopendir, closedir

In a similar fashion to FILE, provide thin shims for the standard directory
manipulation functions.

Reviewed by: imp
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14417

6 years agoliblua: Clean up io/loader C module registration
Conrad Meyer [Sat, 17 Feb 2018 22:17:21 +0000 (22:17 +0000)]
liblua: Clean up io/loader C module registration

Utilize registration APIs Lua provides to make module definition a little
cleaner.

Discussed with: imp
Sponsored by: Dell EMC Isilon

6 years agoAllow the put_user() function macro to put constant values by using the
Hans Petter Selasky [Sat, 17 Feb 2018 21:47:15 +0000 (21:47 +0000)]
Allow the put_user() function macro to put constant values by using the
existing __put_user() macro.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoImplement BUILD_BUG_ON_INVALID() function macro in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 21:40:19 +0000 (21:40 +0000)]
Implement BUILD_BUG_ON_INVALID() function macro in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoAdd support for printk_ratelimit() function macro and improve the existing
Hans Petter Selasky [Sat, 17 Feb 2018 21:25:19 +0000 (21:25 +0000)]
Add support for printk_ratelimit() function macro and improve the existing
printk_ratelimited() function macro to return a boolean stating if there
was a printout, true, or not, false.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoMerge AIM and Book-E PCPU fields
Justin Hibbits [Sat, 17 Feb 2018 20:59:12 +0000 (20:59 +0000)]
Merge AIM and Book-E PCPU fields

This is part of a long-term goal of merging Book-E and AIM into a single GENERIC
kernel.  As more work is done, the struct may be optimized further.

Reviewed by: nwhitehorn

6 years agoAdd support for kref_read() function in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 20:56:35 +0000 (20:56 +0000)]
Add support for kref_read() function in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoAdd support for mmgrab() function in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 20:52:54 +0000 (20:52 +0000)]
Add support for mmgrab() function in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoAdd support for __percpu and __weak macros in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 20:50:18 +0000 (20:50 +0000)]
Add support for __percpu and __weak macros in the LinuxKPI.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoMove the IRQ_RETVAL() and irqreturn definitions to irqreturn.h in the
Hans Petter Selasky [Sat, 17 Feb 2018 20:37:21 +0000 (20:37 +0000)]
Move the IRQ_RETVAL() and irqreturn definitions to irqreturn.h in the
LinuxKPI to be compatible with Linux. No functional change.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoAdd checks for valid IRQ tag before setting up or tearing down an interrupt
Hans Petter Selasky [Sat, 17 Feb 2018 20:09:43 +0000 (20:09 +0000)]
Add checks for valid IRQ tag before setting up or tearing down an interrupt
handler in the LinuxKPI. This is needed when the interrupt handler is disabled
before freeing the interrupt.

MFC after: 1 week
Submitted by: Johannes Lundberg <johalun0@gmail.com>
Sponsored by: Mellanox Technologies

6 years agoaw_mmc: Only change the clock if it has really changed
Emmanuel Vadot [Sat, 17 Feb 2018 18:30:25 +0000 (18:30 +0000)]
aw_mmc: Only change the clock if it has really changed

This also seems to fix problem when booting Pine64 from the mmc.

Tested On: Pine64
Tested On: Pine64-LTS

6 years agoRevert r329448.
Mateusz Guzik [Sat, 17 Feb 2018 17:23:43 +0000 (17:23 +0000)]
Revert r329448.

Turns out is is actually racy, reproducible with stress2/misc/truss.sh

Requested by: kib

6 years agoRemove unused bus_autoconf section from usb.ko.
Hans Petter Selasky [Sat, 17 Feb 2018 14:44:03 +0000 (14:44 +0000)]
Remove unused bus_autoconf section from usb.ko.

Sponsored by: Mellanox Technologies

6 years agoRemove obsolete tool, bus_autoconf, which is replaced by devmatch(8).
Hans Petter Selasky [Sat, 17 Feb 2018 14:40:28 +0000 (14:40 +0000)]
Remove obsolete tool, bus_autoconf, which is replaced by devmatch(8).

6 years agoFix USB driver matching in devmatch(8).
Hans Petter Selasky [Sat, 17 Feb 2018 14:34:47 +0000 (14:34 +0000)]
Fix USB driver matching in devmatch(8).

Multiple drivers can match on the same USB device and the order of loading
decides which driver gets the device. Use the supplied mask value as an
indication of priority, so that vendor specific device drivers are loaded
before more generic ones.

Sponsored by: Mellanox Technologies

6 years agostand/lua: dumpModules => lsModules
Kyle Evans [Sat, 17 Feb 2018 14:30:39 +0000 (14:30 +0000)]
stand/lua: dumpModules => lsModules

rgrimes@ notes that this behavior is more befitting of the latter name than
the former, and I'm inclined to agree.

Reported by: rgrimes

6 years agoFix handling of "one_nomatch" shell variable to preserve its contents
Hans Petter Selasky [Sat, 17 Feb 2018 13:32:29 +0000 (13:32 +0000)]
Fix handling of "one_nomatch" shell variable to preserve its contents
appearing as a single argument passed to devmatch(8).

Don't depend on "sort" utility from usr/bin which might not be
available when devd is started.

Sponsored by: Mellanox Technologies

6 years agoInvoke devmatch rc.d script directly instead of depending on "service"
Hans Petter Selasky [Sat, 17 Feb 2018 13:13:55 +0000 (13:13 +0000)]
Invoke devmatch rc.d script directly instead of depending on "service"
which is installed in usr/sbin and might not be available at the time
devd is started.

Sponsored by: Mellanox Technologies

6 years agoRevert redundant parts of r329440 after recent devmatch(8) changes.
Hans Petter Selasky [Sat, 17 Feb 2018 12:38:46 +0000 (12:38 +0000)]
Revert redundant parts of r329440 after recent devmatch(8) changes.

Sponsored by: Mellanox Technologies

6 years agoCapsicumize uuidgen.
Mariusz Zaborski [Sat, 17 Feb 2018 12:32:53 +0000 (12:32 +0000)]
Capsicumize uuidgen.

6 years agoIntroduce channel flags in libcasper.
Mariusz Zaborski [Sat, 17 Feb 2018 12:22:29 +0000 (12:22 +0000)]
Introduce channel flags in libcasper.

Instead of passing flags (which describe a type of nvlist)
every send/recv we remember them in channel.
It's enough for use to extract them only during unwrap.
This simplify use of Casper.

Reviewed by: bruffer@, bcr@ (both man page)
Differential Revision: https://reviews.freebsd.org/D14196 (man page)

6 years agoUndo LOCK_PROFILING pessimisation after r313454 and r313455
Mateusz Guzik [Sat, 17 Feb 2018 12:07:09 +0000 (12:07 +0000)]
Undo LOCK_PROFILING pessimisation after r313454 and r313455

With the option used to compile the kernel both sx and rw shared ops would
always go to the slow path which added avoidable overhead even when the
facility is disabled.

Furthermore the increased time spent doing uncontested shared lock acquire
would be bogusly added to total wait time, somewhat skewing the results.

Restore old behaviour of going there only when profiling is enabled.

This change is a no-op for kernels without LOCK_PROFILING (which is the
default).

6 years agoexit: stop doing PROC_SLOCK just to call proc_reap
Mateusz Guzik [Sat, 17 Feb 2018 09:03:11 +0000 (09:03 +0000)]
exit: stop doing PROC_SLOCK just to call proc_reap

It immediately does PROC_SUNLOCK anyway and the lock plays no role.

6 years agoexit: get rid of PROC_SLOCK when checking a process to report
Mateusz Guzik [Sat, 17 Feb 2018 08:48:45 +0000 (08:48 +0000)]
exit: get rid of PROC_SLOCK when checking a process to report

All accessed fields are protected with already held process lock.

6 years agoCompile fix for GCC in the LinuxKPI.
Hans Petter Selasky [Sat, 17 Feb 2018 08:12:35 +0000 (08:12 +0000)]
Compile fix for GCC in the LinuxKPI.

Older versions of GCC don't allow flexible array members in a union.
Use a zero length array instead.

MFC after: 1 week
Reported by: jbeich@
Sponsored by: Mellanox Technologies

6 years agoImplement --hints to read hints file directly
Warner Losh [Sat, 17 Feb 2018 06:57:43 +0000 (06:57 +0000)]
Implement --hints to read hints file directly

In testing, it's often useful to copy a few files into a directory and
kldxref them to ensure that particular cases are handled correctly.
Add --hints (-h) to facilitate this testing and enable future
automated testing.

Sponsored by: Netflix

6 years agoPass in the NOMATCH event to devmatch
Warner Losh [Sat, 17 Feb 2018 06:57:38 +0000 (06:57 +0000)]
Pass in the NOMATCH event to devmatch

In devd/devmatch.conf, we need to pass the event to the devmatch
serivce. It gets passed to devmatch -p for matching. We always pass
this, unlike hps' original patch, so we kill two birds with one stone
and only match modules to the event passed in.

Submitted by: hps@
Sponsored by: Netflix

6 years agoAdd option to parse NOMATCH event and suggest modules to load
Warner Losh [Sat, 17 Feb 2018 06:57:34 +0000 (06:57 +0000)]
Add option to parse NOMATCH event and suggest modules to load

Add --nomatch/-p to search for individual drivers based on a NOMATCH
event from devd.

Submitted by: hps (earlier version)
Sponsored by: Netflix

6 years agoTweak the 'I' flagged value
Warner Losh [Sat, 17 Feb 2018 06:57:30 +0000 (06:57 +0000)]
Tweak the 'I' flagged value

'I' was omitting 'zero' values. This is not quite correct, and was put
in as a hack but not documented. Remove it. If we find what the hack
was really needed for, we'll either fix the need for it, or invent a
new flagged value type.

Submitted by: hps@
Sponsored by: Netflix

6 years agoImplement 'T' field matching.
Warner Losh [Sat, 17 Feb 2018 06:57:25 +0000 (06:57 +0000)]
Implement 'T' field matching.

Implement 'T' field matching. This is needed to prevent false
positives. However, it's not general enough. It only handles one field
and there's a ton of edge cases even with that it likely wouldn't
handle. To do it more generally and also eliminate a lot of the
hackiness that's in this program now, we'd need to creating
directories for lookups ala awk, pearl, python, etc. It appears to be
sufficient, though, to get my keyboard loaded on boot.

Sponsored by: Netflix