Commit graph

19133 commits

Author SHA1 Message Date
Joerg Wunsch
60889b2a61
usbconfig: actually set the exit code in usage()
Oversight in previous commit: usage() had been turned to accept
an "exitcode" parameter, but it hasn't been used.

MFC after:	2 weeks

(cherry picked from commit 1654b51455)
2022-01-18 22:12:48 +01:00
Joerg Wunsch
800bc81676
usbconfig: implement a -v option
Implement a -v option to usbconfig(8), as a shortcut for the most
frequently needed commands dump_device_desc, dump_curr_config_desc,
and show_ifdrv.

While here, implement a real -h option that has been promised by the
man page.

Use <sysexits.h> to declare the utility return codes.

Reviewed by:	hselasky
Differential Revision:	https://reviews.freebsd.org/D33586
MFC after:	2 weeks

(cherry picked from commit d69b9cc26d)
2022-01-18 22:12:43 +01:00
Joerg Wunsch
313f267bb0
usbconfig: documentation fixes, mainly for -i option
* in usage(), clearly mark -i interface as optional
* both, -u busnum and -a devaddr are optional as well
* various minor man page fixes
* clearly mark those two commands that actually use -i ifaceidx
* remove unused bitfield tag got_iface
* fix indentation level according to review comment

Differential Revision:	https://reviews.freebsd.org/D33579/
Reviewed by:	hselasky
MFC after:	2 weeks

(cherry picked from commit cae1884d47)
2022-01-18 22:12:35 +01:00
Joerg Wunsch
a423411a1c
usbconfig: use getopt(3) for option handling
This makes option handling consistent with other utilities as well as
Posix rules. By that, it's no longer important whether option name and
its argument are separated by a space or not, so -d5.3 works the same
as -d 5.3.

Also, recognize either /dev/ugen or ugen as prefix to the -d argument.

Note that this removes the undocumented feature that allowed to
specify multiple -d n.m options interleaved with commands referring to
that particular device in a single run.

(cherry picked from commit ae450e6de9)
2022-01-18 22:12:00 +01:00
Corvin Köhne
ff1e10c8f6 bhyve: dynamically register FwCtl ports
Qemu's FwCfg uses the same ports as Bhyve's FwCtl. Static allocated
ports wouldn't allow to switch between Qemu's FwCfg and Bhyve's
FwCtl.

Reviewed by:    markj
MFC after:      2 weeks
Sponsored by:   Beckhoff Automation GmbH & Co. KG
Differential Revision:  https://reviews.freebsd.org/D33496

(cherry picked from commit 9fe79f2f2b)
2022-01-17 13:53:28 +01:00
Corvin Köhne
5775540d36 bhyve: add more slop to 64 bit BARs
Bhyve allocates small 64 bit BARs below 4 GB and generates ACPI tables
based on this allocation. If the guest decides to relocate those BARs
above 4 GB, it could lead to mismatching ACPI tables. Especially
when using OVMF with enabled bus enumeration it could cause
issues. OVMF relocates all 64 bit BARs above 4 GB. The guest OS
may be unable to recover from this situation and disables some PCI
devices because their BARs are located outside of the MMIO space
reported by ACPI. Avoid this situation by giving the guest more
space for relocating BARs.

Let's be paranoid. The available space for BARs below 4 GB is 512 MB
large. Use a slop of 512 MB. It'll allow the guest to relocate all
BARs below 4 GB to an address above 4 GB. We could run into issues
when we exceeding the memlimit above 4 GB. However, this space has
a size of 32 GB. Even when using many PCI device with large BARs
like framebuffer or when using multiple PCI busses, it's very
unlikely that we run out of space due to the large slop.
Additionally, this situation will occur on startup and not at runtime
which is much better.

Reviewed by:    markj
MFC after:      2 weeks
Sponsored by:   Beckhoff Automation GmbH & Co. KG
Differential Revision:  https://reviews.freebsd.org/D33118

(cherry picked from commit 7d55d29508)
2022-01-17 13:53:22 +01:00
Corvin Köhne
e6674c8f7f bhyve: allow reading of fwctl signature multiple times
At the moment, you only have one single chance to read the fwctl
signature. At boot bhyve is in the state IDENT_WAIT. It's then
possible to switch to IDENT_SEND. After bhyve sends the signature,
it switches to REQ. From now on it's impossible to switch back to
IDENT_SEND to read the signature. For that reason, only a single
driver can read the signature. A guest can't use two drivers to
identify that fwctl is present. It gets even worse when using
OVMF. OVMF uses a library to access fwctl. Therefore, every single
OVMF driver would try to read the signature. Currently, only a
single OVMF driver accesses the fwctl. So, there's no issue with
it yet. However, no OS driver would have a chance to detect fwctl when
using OVMF because it's signature was already consumed by OVMF.

Reviewed by:    markj
MFC after:      2 weeks
Sponsored by:   Beckhoff Automation GmbH & Co. KG
Differential Revision:  https://reviews.freebsd.org/D31981

(cherry picked from commit 8ec366ec6c)
2022-01-17 13:53:17 +01:00
Corvin Köhne
104c83a999 bhyve: enumerate BARs by size
E.g. Framebuffers can require large space and BARs need to be aligned
by their size. If BARs aren't allocated by size, it'll cause much
fragmentation of the MMIO space. Reduce fragmentation by ordering
the BAR allocation on their size to reduce the risk of
OUT_OF_MMIO_SPACE issues.

Reviewed by:	markj
MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D28278

(cherry picked from commit 01f9362ef4)
2022-01-17 13:53:10 +01:00
Konstantin Belousov
c1df4eef12 msdosfs: clusterfree() is used only in error handling cases
(cherry picked from commit 65990b68a2)
2022-01-14 20:11:02 +02:00
Corvin Köhne
16bd6661a9 bhyve: emulate reads of MSI-X capabilities for passthru devices
Reads of the MSI-X capabilites aren't emulated by passthru devices
yet. The guest will read the host MSI-X capabilites which could
cause issues.

Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D32686
Sponsored by:	Beckhoff Automation GmbH & Co. KG

(cherry picked from commit fe66bcf9ff)
2022-01-14 15:18:08 +01:00
Corvin Köhne
6448a0a51a bhyve: keep physical and virtual COMMAND reg in sync
On startup all virtual BARs are registered.
Additionally, the encoding bit in the virtual cmd register is set.
After that, the passthru emulation overwrites the virtual cmd register with
the physical one.
This could lead to a mismatch between registered BARs and the encoding
bits in the cmd register.
Instead of writing the physical to the virtual cmd register,
write the virtual to the physical cmd register to solve this issue.

Reviewed by:	  markj
Differential Revision:	https://reviews.freebsd.org/D32687
Sponsored by:	Beckhoff Automation GmbH & Co. KG

(cherry picked from commit 2eb2079554)
2022-01-14 15:18:08 +01:00
Corvin Köhne
f281bda11a bhyve: use a fixed 32 bit BAR base address
OVMF always uses 0xC0000000 as base address for 32 bit PCI MMIO space.
For that reason, we should use that address too.

Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D31051
Sponsored by:	Beckhoff Automation GmbH & Co. KG

(cherry picked from commit 5cf21e48cc)

bhyve: Fix compile

We need err.h

Fixes:	5cf21e48cc ("bhyve: use a fixed 32 bit BAR base address")
Sponsored by:	Bechoff Automation GmbH & Co. KG

(cherry picked from commit fc7207c877)
2022-01-14 15:18:03 +01:00
Corvin Köhne
366b4fc2d5 bhyve: move 64 bit BAR location to match OVMF assumptions
OVMF will fail, if large 64 bit BARs are used. GCD-Map doesn't cover
64 bit addresses of BARs.
OVMF assumes that 64 bit addresses of BARS are located on next 32 GB
boundary behind Top of High RAM.

This patch moves 64 bit BARs on next 32 GB boundary behind Top of High
RAM to match OVMF assumptions.

Differential Revision:	https://reviews.freebsd.org/D27970
Sponsored by: Beckhoff Automation GmbH & Co. KG

(cherry picked from commit 4a4053e1b0)
2022-01-14 15:17:32 +01:00
Corvin Köhne
e5fb2bbad2 bhyve: do not explicitly map fbuf framebuffer
Allocating a BAR will call baraddr which maps the framebuffer. No need
to allocate it explicitly on init.

Reviewed by:     grehan
Sponsored by:    Beckhoff Autmation GmbH & Co. KG
Differential Revision:    https://reviews.freebsd.org/D32596

(cherry picked from commit 5085153ae4)
2022-01-14 15:17:28 +01:00
Corvin Köhne
aa5eea98b9 bhyve: use physical lobits for BARs of passthru devices
Tell the guest whether a BAR uses prefetched memory or not for
passthru devices by using the same lobits as the physical device.

Reviewed by:	 grehan
Sponsored by:	 Beckhoff Autmation GmbH & Co. KG
Differential Revision:	  https://reviews.freebsd.org/D32685

(cherry picked from commit e87a6f3ef2)
2022-01-14 15:17:18 +01:00
Corvin Köhne
99cc129ea4 bhyve: ignore low bits of CFGADR
Bhyve could emulate wrong PCI registers.
In the best case, the guest reads wrong registers and the device driver would
report some errors.
In the worst case, the guest writes to wrong PCI registers and could brick
hardware when using PCI passthrough.

According to Intels specification, low bits of CFGADR should be
ignored. Some OS like linux may rely on it. Otherwise, bhyve could
emulate a wrong PCI register.

E.g.
If linux would like to read 2 bytes from offset 0x02, following would
happen.
linux:
	outl 0x80000002 at CFGADR
	inw  at CFGDAT + 2
bhyve:
	cfgoff = 0x80000002 & 0xFF = 0x02
	coff   = cfgoff + (port - CFGDAT) = 0x02 + 0x02 = 0x04
Bhyve would emulate the register at offset 0x04 not 0x02.

Reviewed By: #bhyve, grehan
Differential Revision: https://reviews.freebsd.org/D31819
Sponsored by:	       Beckhoff Automation GmbH & Co. KG

(cherry picked from commit 1b0e2f0b60)
2022-01-14 14:51:44 +01:00
Bjoern A. Zeeb
7ea16192a0 bhyve: passthru: enable BARs before possibly mmap(2)ing them
The first time we start bhyve with a passthru device everything is fine
as on boot we do enable BARs.  If a driver (unload) inside bhyve disables
the BAR(s) as some Linux drivers do, we need to make sure we re-enable
them on next bhyve start.

If we are trying to mmap a disabled BAR for MSI-X (PCIOCBARMMAP)
the kernel will give us an EBUSY.
While we were re-enabling the BAR(s) in the current code loop
cfginit() was writing the changes out too late to the real hardware.

Move the call to init_msix_table() after the register on the real
hardware was updated.  That way the kernel will be happy and the
mmap will succeed and bhyve will start.
Also simplify the code given the last argument to init_msix_table()
is unused we do not need to do checks for each bar. [1]

Some passthru devices only support MSI instead of MSI-X. For those
devices the initialization of MSI-X table will fail. Re-add (or in
the MFC case keep) the check erroneously removed in the initial commit. [2]

PR:		260148
Pointed out by:	markj [1]
Sponsored by:	The FreeBSD Foundation
Reviewed by:	markj
Differential Revision: https://reviews.freebsd.org/D33628
Submitted by:	(C.Koehne beckhoff.com) [2]
Reviewed by:	manu, bz
Differential Revision:	https://reviews.freebsd.org/D33728

(cherry picked from commit f1442847c9)
(cherry picked from commit 338a1be836)
2022-01-09 02:38:58 +00:00
Mark Johnston
fa3cc60e6d bhyve: Map the right BAR in init_msix_table()
The PBA and MSI-X table can reside in different BARs.

Reported by:	Andy Fiddaman <andy@omniosce.org>
Reviewed by:	jhb
Fixes:		7fa2335347 ("bhyve: Map the MSI-X table unconditionally for passthrough")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 76b45e688a)
2022-01-08 10:22:08 -05:00
Mark Johnston
0ea87a8fbc bhyve: Correct unmapping of the MSI-X table BAR
The starting address passed to mprotect was wrong, so in the case where
the last page containing the table is not the last page of the BAR, the
wrong region would be unmapped.

Reported by:	Andy Fiddaman <andy@omniosce.org>
Reviewed by:	jhb
Fixes:		7fa2335347 ("bhyve: Map the MSI-X table unconditionally for passthrough")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 4558c11f1b)
2022-01-08 10:21:58 -05:00
Hans Petter Selasky
05dfe5a5e4 service(8): Fix typo in man page.
Differential revision:  https://reviews.freebsd.org/D32582
Submitted by:   christos@
Sponsored by:   NVIDIA Networking

(cherry picked from commit 66d795ec19)
(cherry picked from commit 808108da32)
2022-01-07 14:22:46 +01:00
Toomas Soome
1d15c6b3e5 bhyve smbios type 3 structure is incorrect
If you look at the SMBIOS specification, we'll find something is
missing. In particular at offset 0Dh is supposed to be the OEM-defined
field. This should go between security and height. It is not legal to
actually skip this and will lead to other folks not properly
interpreting later parts of the table.

https://www.illumos.org/issues/14312

Reviewed by:	jhb
Submitted by:	Robert Mustacchi <rm@fingolfin.org>
Obtained from:	ilumos
Differential Revision: https://reviews.freebsd.org/D33682

(cherry picked from 04f55b5b0e)
2022-01-06 13:37:09 +02:00
Emmanuel Vadot
2c7441c86e pkgbase: Add a FreeBSD-pkg-bootstrap package
And put pkg and its keys in it.
It's easier for small image to depend on this package rather than the
larger utilities one.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33458

(cherry picked from commit ec0ea6efa1)
2022-01-05 18:23:53 +01:00
Emmanuel Vadot
967a990f76 pkgbase: Put certctl in the FreeBSD-caroot package
There is no reason that this shouldn't be there.
Change the dependency of caroot from utilities to openssl as it's
the only command that it uses not in runtime.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33458

(cherry picked from commit 380073af3a)
2022-01-05 18:23:53 +01:00
Emmanuel Vadot
629c89d951 pkgbase: Create a FreeBSD-newsyslog package
This allow one to install it without having to install FreeBSD-utilities.
While here put some newsyslog.d file in their own package.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33456

(cherry picked from commit 26ea904caa)
2022-01-05 18:23:52 +01:00
Emmanuel Vadot
e7a69f5613 pkgbase: Create a FreeBSD-syslogd package
This allow one to not install syslogd and use syslog-ng or any other
syslog daemon.
While here put some syslog.d file in their own package.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33455

(cherry picked from commit 25367c806b)
2022-01-05 18:23:52 +01:00
Emmanuel Vadot
d11dfcf2b0 pkgbase: Create a FreeBSD-periodic package
While here put the periodic files for some utilities in their own
packages.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33454

(cherry picked from commit b3d14eaccc)
2022-01-05 18:23:52 +01:00
Emmanuel Vadot
317c92dd63 pkgbase: Create a FreeBSD-mtree package
And put the mtree binary and files in it.
Useful to create small mfsroot using /etc/rc.d/var without
having to install FreeBSD-utilities.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33442

(cherry picked from commit dcf9d46a3f)
2022-01-05 18:23:52 +01:00
Emmanuel Vadot
d9a4b7b7bd pkgbase: Create a FreeBSD-tcpd package
And put the tcp-wrapper utilities in it.

Reviewed by:	emaste
MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33439

(cherry picked from commit 078b764da3)
2022-01-05 18:23:52 +01:00
Emmanuel Vadot
b2d245a0b0 pkgbase: Put more binaries/lib in runtime
Move some needed binaries/libs from FreeBSD-utilities to FreeBSD_runtime.
This is everything needed to boot to multiuser with FreeBSD-rc installed.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33435

(cherry picked from commit 93c4369096)
2022-01-05 18:23:51 +01:00
Emmanuel Vadot
2480a7ae9e pkgbase: Put autofs config files in the FreeBSD-autofs package
Reviewed by:	emaste
MFC after:      2 weeks
Sponsored by:   Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33434

(cherry picked from commit eb14f050a3)
2022-01-05 18:23:51 +01:00
Emmanuel Vadot
26c7445164 pkgbase: Put yellow pages programs to its own package
YP is less and less used, split them to users have the choice to not
install them.

MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33441

(cherry picked from commit 5abb10faa1)
2022-01-05 18:23:51 +01:00
Emmanuel Vadot
04fb6e4380 pkgbase: Move back mlxcontrol in the default package
mlxcontrol(8) is a tool for mlx(4) raid card and isn't related to
Mellanox card.

Reported by:	jhb

(cherry picked from commit 06cce53d56)
2022-01-05 18:23:51 +01:00
Emmanuel Vadot
e6e5d8e7aa pkgbase: Remove libefivar package and add a efi-tools one
Put all the efi related tools into FreeBSD-efi-tools.

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

(cherry picked from commit d8d41d3b84)
2022-01-05 18:23:50 +01:00
Emmanuel Vadot
f5ab36c2e1 pkgbase: Create a FreeBSD-kerberos package
This allows users to install or not kerberos related utilities
and libs.

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

(cherry picked from commit a30235a4c3)
2022-01-05 18:23:50 +01:00
Emmanuel Vadot
a4e8cac918 pkgbase: Create a mlx-tools package
mlx* are only useful for users who have a Mellanox card.
Create a package for it so users that don't have this card can
avoid having this program.

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

(cherry picked from commit 80645e1ce5)
2022-01-05 18:23:49 +01:00
Emmanuel Vadot
8fe89b718a pkgbase: Create a cxgbe-tools package
cxgbetool is only useful for users who have a Chelsio card.
Create a package for it so users that don't have this card can
avoid having this program.

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

(cherry picked from commit b8876cac2d)
2022-01-05 18:23:49 +01:00
Cy Schubert
189fdfd6b7 ntp: Revert "Disable stack gap for ntpd during build."
This reverts commit af949c590b because
889b56c8cd fixes the underlying problem.

(cherry picked from commit 733a832fb5)
2022-01-03 15:04:06 -08:00
Emmanuel Vadot
52ce808aba bsdinstall: zfsboot: Prompt user for zpool name if the pool already exists
If one install FreeBSD on multiple disks (say 13 and CURRENT) the first created
pool will always be used.
Prompt the user for a new pool name if we detect that the default or supplied one
already exists.

Reviewed by:	imp
MFC after:      2 weeks
Sponsored by:   Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33331

(cherry picked from commit 9935b0e8ea)
2021-12-30 10:10:05 +01:00
Emmanuel Vadot
477fbe6732 bsdinstall: bootconfig: Try to clean old efi boot entries
If one install FreeBSD on the same machine multiple times in a row or
on different harddrive they have a lot of 'FreeBSD' efi boot entries added.
With this patch we now do :
- If there is no 'FreeBSD' entry we add one like before
- If there is one or more entries we ask the user if they want to delete
  them all and add a new one
  - If they say yes we do that
  - If they say no we prompt them an inputbox so they can enter a different
    entry name if they want, it defaults to 'FreeBSD'

Reviewed by:	bapt, imp
MFC after:	2 weeks
Sponsored by:	Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D33330

(cherry picked from commit 40c928e7b8)
2021-12-30 10:09:57 +01:00
Vitaliy Gusev
6d4d4e531d bhyve: Only snapshot initialized VirtIO queues
If the virtio device is not fully initialized, then suspend fails with:

  vi_pci_snapshot_queues: invalid address: vq->vq_desc
  Failed to snapshot virtio-rnd; ret=14

Reviewed by:	jhb

(cherry picked from commit d079fc197a)
2021-12-26 19:15:00 -05:00
Florian Walpen
30c3a5f248 Add idle priority scheduling privilege group to MAC/priority
(cherry picked from commit a9545eede4)
2021-12-19 04:42:51 +02:00
Florian Walpen
984b9d89f8 MAC/priority module for realtime privilege group
PR:	239125

(cherry picked from commit bf2fa8d9d1)
2021-12-19 04:42:51 +02:00
Andrew Turner
efa2061377 Only change the fadt revision in acpidump on i386
There is a workaround in acpidump for an old IBM laptop. This is being
hit on a modern arm64 system causing acpidump to use the wrong field
when reading a later address.

As the laptop has a 32-bit CPU the only FreeBSD support for it is i386.
As such limit the workaround to that architecture.

Reviewed by:	emaste, jkim, jhb (all earlier version)
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32573

(cherry picked from commit 01593a0ff9)
2021-12-14 10:58:01 +00:00
Mateusz Piotrowski
4bad5bb129 inetd: Use the synopsis from the manual page
Also, document -s in the usage message.

MFC after:	7 days

(cherry picked from commit 648b9ce80e)
2021-12-13 02:10:26 +01:00
Mike Karels
e5d4e532a0 mountd: deprecate exports to a network without mask
The exports file format allows export to a network using an explicit
mask or prefix length (CIDR).  It also allows a network with just
a dotted address, in which case the historical mask was used.
Deprecate this usage, and warn when it is used.  Document that this
is deprecated.

(cherry picked from commit 92aebdeaff)
2021-12-10 10:26:37 -06:00
Michael Tuexen
30cc621895 tcpdrop: tweak comments
Sponsored by:	Netflix, Inc.

(cherry picked from commit c2b53b107e)
2021-12-10 11:45:33 +01:00
Michael Tuexen
4ab3d3d91f tcpdrop: explicitly choose TCP as the transport protocol
Sponsored by:	Netflix, Inc.

(cherry picked from commit 8ea363c8c6)
2021-12-10 11:45:05 +01:00
Michael Tuexen
cec14fd194 tcpdrop: allow TCP connections to be filtered by cc-algo
In addition to filtering by stack and state, allow filtering
by the congestion control module used.  Choose the command line
options to be consistent with the ones of sockstat.

Sponsored by:	Netflix, Inc.

(cherry picked from commit 31537ea583)
2021-12-10 11:44:23 +01:00
Michael Tuexen
d749a2e870 tcpdrop: update man page, since the fastack stack has been removed
Sponsored by:	Netflix, Inc.

(cherry picked from commit 7ef45bd3cf)
2021-12-10 11:43:52 +01:00
Michael Tuexen
61deed379f tcpdrop: use a better name of a variable.
No functional change intended.

Sponsored by:	Netflix, Inc.

(cherry picked from commit 300914a0ff)
2021-12-10 11:42:34 +01:00