Commit graph

39912 commits

Author SHA1 Message Date
Adrian Chadd
cd32ac640b Add support for qualcomm clock nodes the the IPQ4018/IPQ4019 clock tree.
Summary: I've tested this with cpufreq_dt, SPI and USB.  They all seem to work fine.

Test Plan: * IPQ4018, boot

Subscribers: imp, andrew

Differential Revision: https://reviews.freebsd.org/D33665
2021-12-27 13:02:31 -08:00
Adrian Chadd
e34a491b35 qcom_clk: add the qualcomm clock nodes for the IPQ4018
These clock nodes are used by the IPQ4018/IPQ4019 and derivatives.
They're also used by other 32 and 64 bit qualcomm parts; so it's
best to put these nodes here in a single qcom_clk driver and add
to it as we grow new Qualcomm SoC support.

Tested:

* IPQ4018, boot

Differential Revision: https://reviews.freebsd.org/D33665
2021-12-27 13:02:30 -08:00
Alexander Motin
3b4c543322 sound: Remove CTLFLAG_NEEDGIANT from some sysctls.
While there, remove some dead code.

MFC after:	2 weeks
2021-12-26 20:39:32 -05:00
Alexander Motin
6237a1cc2d acpi_support: Remove CTLFLAG_NEEDGIANT from sysctls.
MFC after:	2 weeks
2021-12-26 19:37:08 -05:00
Alexander Motin
3e68d2c52b acpica: Remove CTLFLAG_NEEDGIANT from most sysctls.
MFC after:	2 weeks
2021-12-26 19:18:55 -05:00
Adrian Chadd
a82907ed13 clk: rename clknode_try_freq to clknode_test_freq
This brings it in line with what the clk_*_freq routines are named.
2021-12-26 06:16:02 -08:00
Adrian Chadd
9df53d07e6 clk: add call for nodes to get the programmed/decided frequency passed back
Summary:

The existing call can only really be used for a node wishing to
configure its parent, but as we don't pass in a pointer to the freq,
we can't set it to what it would be for a DRY_RUN pass.

So for clock nodes that wish to try setting parent frequencies to see
which would be the best for its own target frequency, we really do need
a way to call in and pass in a flag /and/ a pointer to freq so it can be
updated for us as the clock tree is recursed through.

Reviewers: manu

Approved by: manu

Subscribers: imp

Differential Revision: https://reviews.freebsd.org/D33445
2021-12-26 04:18:53 -08:00
Gleb Smirnoff
f64dc2ab5b tcp: TCP output method can request tcp_drop
The advanced TCP stacks (bbr, rack) may decide to drop a TCP connection
when they do output on it.  The default stack never does this, thus
existing framework expects tcp_output() always to return locked and
valid tcpcb.

Provide KPI extension to satisfy demands of advanced stacks.  If the
output method returns negative error code, it means that caller must
call tcp_drop().

In tcp_var() provide three inline methods to call tcp_output():
- tcp_output() is a drop-in replacement for the default stack, so that
  default stack can continue using it internally without modifications.
  For advanced stacks it would perform tcp_drop() and unlock and report
  that with negative error code.
- tcp_output_unlock() handles the negative code and always converts
  it to positive and always unlocks.
- tcp_output_nodrop() just calls the method and leaves the responsibility
  to drop on the caller.

Sweep over the advanced stacks and use new KPI instead of using HPTS
delayed drop queue for that.

Reviewed by:		rrs, tuexen
Differential revision:	https://reviews.freebsd.org/D33370
2021-12-26 08:48:19 -08:00
Gleb Smirnoff
40fa3e40b5 tcp: mechanically substitute call to tfb_tcp_output to new method.
Made with sed(1) execution:

sed -Ef sed -i "" $(grep --exclude tcp_var.h -lr tcp_output sys/)

sed:
s/tp->t_fb->tfb_tcp_output\(tp\)/tcp_output(tp)/
s/to tfb_tcp_output\(\)/to tcp_output()/

Reviewed by:		rrs, tuexen
Differential revision:	https://reviews.freebsd.org/D33366
2021-12-26 08:47:59 -08:00
Alexander Motin
22405bb2e4 pccbb: Remove Giant mention in comments.
MFC after:	2 weeks
2021-12-25 21:51:48 -05:00
Alexander Motin
1886cef69b hwpmc: Remove CTLFLAG_NEEDGIANT from sysctl.
MFC after:	2 weeks
2021-12-25 21:40:14 -05:00
Alexander Motin
c214c2c004 uart: Remove CTLFLAG_NEEDGIANT from sysctl.
MFC after:	2 weeks
2021-12-25 21:30:02 -05:00
Alexander Motin
54daceab55 xen/blkfront: Remove CTLFLAG_NEEDGIANT from sysctl.
It only converts bit field into string.  It does not need locking.

MFC after:	1 week
2021-12-25 21:24:24 -05:00
Alexander Motin
6c101ed7a3 amdtemp: Remove CTLFLAG_NEEDGIANT from sysctls.
It seems to be needed only to serialize very old K8 registers access.
Introduce separate lock for that and remove Giant dependency.

MFC after:	2 weeks
2021-12-25 21:03:54 -05:00
Michal Meloun
1a74d77f85 extres/clk: Add a method to detect the HW state of the clock gate.
- add method to read gate enable/disable staust from HW
- show gate status in sysctl clock dump

MFC after:	1 week
2021-12-24 19:42:44 +01:00
Michal Meloun
72a2f3b5e2 extres/clk: Improve sysctl dump of clocks.
Always recalculate the frequency, the cache is lazily initialized so it is not always up to date.
While I'm in mark sysctl as MPSAFE.

Discussed with:	manu, adrian
MFC after:	1 week
2021-12-24 19:42:01 +01:00
John Baldwin
752e211e64 cxgbei: Don't fail task setup if the socket is disconnected.
When the initiator is reconnecting to the target, the connection may
temporarily be marked disconnected or not have an associated socket.
New I/O requests received by the initiator in this state should not
fail with ECONNRESET as that results in an I/O error back to userland.
Instead, they need to still succeed so that CAM can queue the requests
and send them once the connection is re-established.

Setting up DDP for zero-copy receive requires a socket, so just punt
on using DDP for these transfers.

Reported by:	Jithesh Arakkan @ Chelsio
Sponsored by:	Chelsio Communications
2021-12-23 14:14:07 -08:00
Jessica Clarke
a34d3ca6ef re: Avoid subobject overread when setting IDRn
IDR0-IDR5 can be read byte-by-byte but must be written to as 4-byte
words. The current code to do this is rather clunky and ends up reading
past the end of the union's eaddr member due to MAC addresses only being
6 bytes. In practice this ends up being fine because the align_dummy
member will pad the union to a multiple of 4 bytes, but this is dodgy,
and on CHERI with subobject bounds enforcement enabled, as is done in
CheriBSD's pure-capability kernel, will trap.

Instead, make the buffer in use the right size, just use an array of
uint32_t's rather than a char buffer that's then cast to uint32_t * to
simplify it in the process, and zero-initialise it first to avoid
reading uninitialised data in the trailing bytes.

Found by:	CHERI
Reviewed by:	jhb
Differential Revision:	https://reviews.freebsd.org/D33617
2021-12-23 20:19:31 +00:00
Adrian Chadd
4abe6533e9 qcom_tlmm: add initial gpio/pinmux controller (TLMM)
The qualcomm TLMM (top level mode manager) is their gpio/pinmux hardware
controller.

Although the pinmux is generic enough to use for the IPQ/APQ series
chips, I'm directly calling the IPQ4018 routines to expedite bring-up.

Notably, I'm not yet implementing the interrupt support - it's not
required at this stage of bring-up.

Differential Revision: https://reviews.freebsd.org/D33554
2021-12-23 10:41:41 -08:00
Gordon Bergling
d34632a235 sound(4): Fix a typo in a source code comment
- s/aggresively/aggressively/

MFC after:	3 days
2021-12-22 10:18:35 +01:00
Gordon Bergling
be0b80b845 enetc(4): Fix a typo in a source code comment
- s/decriptors/descriptors/

MFC after:	3 days
2021-12-22 10:01:54 +01:00
John Baldwin
762f1dcb1c ccr: Replace 'blkcipher' with just 'cipher'.
ccr(4) can handle requests for AES-CTR (a stream cipher), not just
block ciphers, so make the function and structure names more generic.

Sponsored by:	Chelsio Communications
2021-12-21 12:33:26 -08:00
Ram Kishore Vegesna
cba757ef2a ocs_fc: Populate subvendor and subdevice ids.
Enable serialnumber reporting.

Reviewed by: mav
MFC after: 3 days
2021-12-21 12:41:51 +05:30
Edward Tomasz Napierala
3861bafb68 firewire(4): Fix "set but not used" warnings
Sponsored By:	EPSRC
2021-12-20 11:24:21 +00:00
Andriy Gapon
46e0c03795 twsi: use twsi_error() to handle wrong bus status when starting
MFC after:	1 week
2021-12-19 12:05:52 +02:00
Andriy Gapon
e5268c3d43 twsi: fix handling of consecuitve write messages in transaction
Make sure to reset 'message_done' flag when jumping from a message to the
next one within the same interrupt handler call.  This happens only when
a write with no-stop flag message is followed by a write with no-start
flag message.
Without this fix the second message would be prematurely "completed"
without waiting for an ACK (or NACK) for its first byte and without
sending subsequent bytes (if any).

Fixes:		ff1e8581 twsi: support more message combinations in transfers
MFC after:	4 days
2021-12-19 12:05:52 +02:00
Michael Tuexen
e363f832cf if_oce: fix epoch handling
Thanks to gallatin@ for suggesting the patch.

PR:			260330
Reported by:		Vincent Milum Jr.
Reviewed by:		gallatin, glebius
Tested by:		Vincent Milum Jr.
MFC after:		3 days
Differential Revision:	https://reviews.freebsd.org/D33395
2021-12-18 23:43:00 +01:00
Hans Petter Selasky
8b60419b79 usb(4): Fix build on 32-bit platforms after 0ec590d24e.
Cast pointer to "long" for now, to match the fueword() prototype.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
2021-12-18 21:31:58 +01:00
Hans Petter Selasky
34077a8ed3 usb(4): Fix build after 45b48cbc2b.
Make sure local variable is initialized when COMPAT_32BIT is not defined.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
2021-12-18 21:31:03 +01:00
Mateusz Guzik
4bae659941 safexcel: plug set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-18 13:29:32 +00:00
Mateusz Guzik
f48ab7cc48 iicbus: plug set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-18 13:14:04 +00:00
Brooks Davis
ea972feea2 usb: remove COMPAT_32BIT ifdefs
Now that we have proper 32-bit compat support, remove COMPAT_32BIT
ifdefs to allow 32-bit code to use the 64-bit layout of USB ioctl
structs and struct usb_fs_endpoint.

This includes the removal of redundant alignment directives that had
no effect in practice.

Reviewed by:	hselasky, jrtc27 (prior version)
2021-12-17 21:28:39 +00:00
Brooks Davis
0ec590d24e usb: add 32-bit compat for FIFOs
Unlike most 32-bit compatability code, this isn't just a simple thunk
in the ioctl code.  An ioctl (USB_FS_INIT) is used to install a
pointer to an array of usb_fs_endpoint structs which are then used
by the ugen fifo code.  These struct contains an array of pointers
which requires translation.  We change the interfaces around
struct usb_fs_endpoint as follows:
 - We store the size of struct usb_fs_endpoint in struct usb_fifo
   in the USB_FS_INIT handler so we know the ABI of the userspace
   array.
 - APIs to manipulate userspace struct usb_fs_endpoint objects now
   take a struct usb_fifo and an index rather than a pointer to
   the object.  This allows most code to remain oblivious to the
   different struct usb_fs_endpoint sizes.
 - Add ugen_fs_copyin() which copies the struct usb_fs_endpoint
   from userspace, thunking it to the native size if required.
 - Uses of struct usb_fs_endpoint's ppBuffer member are now
   via ugen_fs_getbuffer() which produces a native pointer.
 - Updates to userspace are now handled by ugen_fs_update().

For clarity, single, fixed-sized members now are accessed with
fueword/suword rather than copyin/copyout.

Reviewed by:	hselasky, jrtc27 (prior version)
2021-12-17 21:28:14 +00:00
Brooks Davis
45b48cbc2b usb: real freebsd32 support for most ioctls
Use thunks or alternative access methods to support ioctls without
the COMPAT_32BIT hacks that store pointers in uint64_t's on 32-bit
platforms.  This should allow a normal i386 libusb to work.

On CheriBSD, the sizes of the structs will differ between CheriABI
(the default) and freebsd64 no matter what so we need proper compat
support there.  This change paves the way.

Reviewed by:	hselasky, jrtc27 (prior version)
2021-12-17 21:28:13 +00:00
Alexander Motin
9aba757e92 ahci(4): Allow enclosure emulation without hardware.
After 53f5ac1310 allowed SATA device mapping to enclosure slots,
it may have sense to provide enclosure device emulation even without
real hardware interface like SGPIO just for purposes of physical
device location tracking (still assuming straight cabling).

MFC after:	1 week
Sponsored by:	iXsystems, Inc.
2021-12-17 15:34:43 -05:00
Mark Johnston
8fcf230c13 qat: Address -Wunused-but-set-variable warnings
MFC after:	1 week
2021-12-17 13:10:22 -05:00
Hans Petter Selasky
2fcd7d380b snd_uaudio(4): Loosen up the USB MIDI permissions.
This makes USB MIDI more userfriendly for desktop users.

PR:		260489
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2021-12-17 11:54:19 +01:00
Hubert Mazur
3e5fe3d5bf pcf85063: Set RTC device to work in 24h mode
Sometimes the device did not set default hour mode setting correctly,
which lead to conversion errors. Explicitly set device to work in 24h
mode by clearing flag in register, instead of allowing defaults.

Reviewed by:		imp
Obtained from:		Semihalf
Sponsored by:		Alstom Group
Differential revision:	https://reviews.freebsd.org/D33497
2021-12-17 11:07:07 +01:00
Mateusz Guzik
858ed097c4 ida: plug set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-16 13:23:30 +00:00
Mateusz Guzik
e7236a7ddf xen: plug some of set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-15 13:46:17 +00:00
Mateusz Guzik
cec04a5d71 mwl: plug some of set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-15 12:35:38 +00:00
Warner Losh
2426adf4f4 ata-promise: kill lenght, it's set but never used
Sponsored by:		Netflix
2021-12-14 16:53:09 -07:00
Warner Losh
f581847a72 hyperv: scanning locking is using the bus mtx
The scanning code uses Giant to coordinate its accesses to newbus as
well as to synchronize a little state within hyperv's vmbus. Switch to
the new bus_topo_* functions instead of referring to Giant explicitly.

Sponsored by:		Netflix
Reviewed by:		jhb
Differential Revision:	https://reviews.freebsd.org/D31840
2021-12-14 16:53:09 -07:00
Warner Losh
31b35400cf pccard: Remove more of the PC Card infrastructure
Remove more of the pccard infrasturcture. CardBus Yenta driver (cbb)
still references the remaining bits. It needs some additiona work to
remove 16-bit support still, so it remains.

Sponsored by:		Netflix
2021-12-14 15:27:47 -07:00
Alexander Motin
483e464ed4 isp(4): Allow more than 2 ports to read WWNs from NVRAM.
It appears at least on QLE2694L cards 3rd and 4th ports follow the
same NVRAM addressing logic as the first two.  In lack of proper
documentation this guess is as good as it can be.

MFC after:	1 week
Sponsored by:	iXsystems, Inc.
2021-12-14 13:26:44 -05:00
Adrian Chadd
05860ffdb4 cpufreq: Support operating-mode-v2 tables with no voltages
Summary:

The linux device tree documentation for this states that
for v1 voltages are required, but for v2 voltages are optional.

So, handle that here - if there's no regulator/supply provided
for a v1 opmode then error out; but keep it optional for v2.
Then just don't both doing any regulator calls if it's not configured.

This isn't the best/final solution - mmel@ has suggested that
this should be flipped around a bit and print warnings if
we get an opp-microvolt property but we don't have a regulator.

Subscribers: imp
Reviewed by: mmel, jrtc27, manu

Test Plan: * IPQ4018, with no voltage tables; the freq set is called appropriately.

Differential Revision: https://reviews.freebsd.org/D33140
2021-12-14 09:49:17 -08:00
Mateusz Guzik
35273e2099 iwm: plug some of set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-14 17:06:56 +00:00
Mateusz Guzik
06c95f1fac bhnd: plug set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-14 14:59:09 +00:00
Mateusz Guzik
88646c4e5f virtio: plug some of set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-14 14:38:42 +00:00
Mateusz Guzik
17ad5b249d sis: plug set-but-not-used vars
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2021-12-14 14:31:10 +00:00