Commit graph

39190 commits

Author SHA1 Message Date
Kyle Evans
06248c8215 kern: random: collect ~16x less from fast-entropy sources
Previously, we were collecting at a base rate of:

64 bits x 32 pools x 10 Hz = 2.5 kB/s

This change drops it to closer to 64-ish bits per pool per second, to
work a little better with entropy providers in virtualized environments
without compromising the security goals of Fortuna.

(cherry picked from commit 5e79bba562)
2021-10-06 01:44:07 -05:00
Kyle Evans
40f9f2279c kern: random: drop read_rate and associated functionality
Refer to discussion in PR 230808 for a less incomplete discussion, but
the gist of this change is that we currently collect orders of magnitude
more entropy than we need.

The excess comes from bytes being read out of /dev/*random.  The default
rate at which we collect entropy without the read_rate increase is
already more than we need to recover from a compromise of an internal
state.

For stable/13, the read_rate_increment symbol remains as a stub to avoid
breaking loadable random modules.

(cherry picked from commit 6895cade94)
2021-10-06 01:41:18 -05:00
Gordon Bergling
7172006900 smsc(4): Fix a typo in a comment
- s/setings/settings/

(cherry picked from commit 9599d8141f)
2021-10-06 08:21:05 +02:00
Gordon Bergling
d00fdb9736 vnic: Fix a typo in a comment
- s/setings/settings/

(cherry picked from commit fafb1c574d)
2021-10-06 08:20:41 +02:00
Gordon Bergling
d58ccf3ba4 evdev: Fix a typo in a commit
- s/prefered/preferred/

(cherry picked from commit efd8749fe5)
2021-10-06 08:20:20 +02:00
Gordon Bergling
badbe6a4a8 netvsc: Fix a typo in a comment
- s/prefered/preferred/

(cherry picked from commit 9ebd651b58)
2021-10-06 08:19:58 +02:00
Ed Maste
9130e0ace0 mgb: sync with version in main
This is a combination of 7 commits.

mgb: update Microchip URLs

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 6b25b4a73f)

mgb: enable multicast in mgb_init

Receive Filtering Engine (RFE) configuration is not yet implemented,
and mgb intended to enable all broadcast, multicast, and unicast.
However, MGB_RFE_ALLOW_MULTICAST was missed (MGB_RFE_ALLOW_UNICAST was
included twice).

MFC after:	1 week
Fixes:		8890ab7758 ("Introduce if_mgb driver...")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit ecac5c2928)

mgb: Do not KASSERT on error in mgb_init

There's not much we can do if mii_mediachg() fails, but KASSERT is not
appropriate.

MFC after:	1 week
Fixes:		8890ab7758 ("Introduce if_mgb driver...")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 8b889b8953)

mgb: Staticize devclass and iflib structs (as is typical)

MFC after:	1 week
Fixes:		8890ab7758 ("Introduce if_mgb driver...")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit c83ae596f3)

mgb: Apply some style(9)

Add parens around return values, rewrap lines

MFC after:	1 week
Fixes:		8890ab7758 ("Introduce if_mgb driver...")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 820da5820e)

mgb: Fix DEBUG (and LINT) build

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 5f07d7fe40)

mgb: Fix nop admin interrupt handling

Previously mgb_admin_intr printed a diagnostic message if no interrupt
status bits were set, but it's not valid to call device_printf() from a
filter.  Just drop the message as it has no user-facing value.

Also return FILTER_STRAY in this case - there is nothing further for
the driver to do.

Reviewed by:	kbowling
MFC after:	1 week
Fixes:		8890ab7758 ("Introduce if_mgb driver...")
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32231

(cherry picked from commit 1ad2d87778)
2021-10-05 14:57:21 -04:00
David Bright
52e1406947 ntb_hw_intel: fix xeon NTB gen3 bar disable logic
In NTB gen3 driver, it was supposed to disable NTB bar access by
default, but due to incorrect register access method, the bar disable
logic does not work as expected. Those registers should be modified
through NTB bar0 rather than PCI configuration space.

Besides, we'd better to protect ourselves from a bad buddy node so
ingress disable logic should be implemented together.

Submitted by:   Austin Zhang (austin.zhang@dell.com)
Sponsored by:   Dell EMC

(cherry picked from commit e3cf7ebc1d)
2021-10-04 06:53:26 -07:00
Greg V
c39bfe4713 vt: call driver's postswitch when panicking on ttyv0
In vt_kms, the postswitch callback restores fbdev mode when
panicking or entering the debugger. This ensures that even when
a graphical applicatino was running on the first tty, simple framebuffer
mode would be restored and the panic would be visible instead
of the frozen GUI. But vt wouldn't call the postswitch callback
when we're already on the first tty, so running a GUI on it
would prevent you from reading any panics.

Reviewed by:	tsoome
Differential Revision: https://reviews.freebsd.org/D29961

(cherry picked from commit c937a405bd)
2021-10-04 00:46:49 +03:00
Alexander Motin
b7fde5e82b ioat(4): Remove Giant from ioat_test enable/disable.
MFC after:	1 month

(cherry picked from commit 71bf3900b7)
2021-10-03 21:14:25 -04:00
Alexander Motin
36e67f5bad pcib(4): Switch from callout to timeout_task.
This allows to avoid blocking on Giant in callout context, moving to
already existing dedicated taskqueue_pci_hp thread.

MFC after:	1 month

(cherry picked from commit fa3b03d378)
2021-10-03 21:13:24 -04:00
Alexander Motin
03d748e924 vt(4): Mark callouts MP-safe.
The code explicitly takes Giant when it accesses keyboard, and I see
no reason to take it globally by callout(9).

MFC after:	1 month

(cherry picked from commit da69c67526)
2021-10-03 21:11:59 -04:00
Alexander Motin
50570c6479 bnxt(4): Mark sysctls MP-safe.
MFC after:	1 month

(cherry picked from commit 9895a2073f)
2021-10-03 21:10:43 -04:00
Alexander Motin
d2f4b7bc1c bxe(4): Mark sysctls and callout MP-safe.
MFC after:	1 month

(cherry picked from commit 4081c895e5)
2021-10-03 21:10:02 -04:00
Alexander Motin
fe830ad79a mge(4): Mark sysctls and callout MP-safe.
MFC after:	1 month

(cherry picked from commit 6b2ff27cb9)
2021-10-03 21:09:24 -04:00
Kevin Bowling
456b1d96e8 ixgbe: whitespace cleanup pass
Reviewed by:	markj
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D32131

(cherry picked from commit 15d077995b)
2021-10-02 18:32:19 -07:00
Kevin Bowling
4418b03c67 ixgbe: Rename 'struct adapter' to 'struct ixgbe_softc'
Rename the 'struct adapter' to 'struct ixgbe_softc' to avoid type
ambiguity in things like kgdb.

Reviewed by:	markj
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D32131

(cherry picked from commit b1d5caf3c7)
2021-10-02 18:32:01 -07:00
Wenzhuo Lu
4cb203d8f3 e1000: fix K1 configuration
This patch is for the following updates to the K1 configurations:
Tx idle period for entering K1 should be 128 ns.
Minimum Tx idle period in K1 should be 256 ns.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>

PR:		258153
Reviewed by:	erj
Tested by:	iron.udjin@gmail.com
Approved by:	imp
Obtained from:	DPDK (6f934fa24dfd437c90ead96bc7598ee77a117ede)
MFC after:	1 week

(cherry picked from commit d5ad2f2a67)
2021-09-29 17:22:59 -07:00
Gordon Bergling
5559896136 pcm(4): Fix a common typo in source code comments
- s/prefered/preferred/

(cherry picked from commit 513ee901ee)
2021-09-29 19:18:55 +02:00
Alexander Motin
df86667641 ipmi(4): Limit maximum watchdog pre-timeout interval.
Previous code by default setting pre-timeout interval to 120 seconds
made impossible to set timeout interval below that, resulting in error
0xcc (Invalid data field in Request) at least on Supermicro boards.

To fix that limit maximum pre-timeout interval to ~1/4 of the timeout
interval, that sounds like a reasonable default: not too short to fire
too late, but also not too long to give many false reports.

MFC after:	2 weeks

(cherry picked from commit 6c2d440416)
2021-09-28 20:43:18 -04:00
Kevin Bowling
e265ddaac1 e1000: Fix tabstop width in if_em.h
Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D32145

(cherry picked from commit 21ab8c75c9)
2021-09-28 09:56:51 -07:00
Sean Bruno
dc3c7c1106 uart: Add PCI ID for intel 100 Series/C230 Series AMT
Reviewed by:	kib
Tested by:	kbowling
Differential Revision:	https://reviews.freebsd.org/D32146

(cherry picked from commit fb640be4e9)
2021-09-28 09:56:50 -07:00
Kevin Bowling
594a25fa43 e1000: Re-arm link changes
A change to MSI-X link handler was somehow causing issues on
MSI-based em(4) NICs.

Revert the change based on user reports and testing.

PR:		258551
Reported by:	Franco Fichtner <franco@opnsense.org>, t_uemura@macome.co.jp
Reviewed by:	markj, Franco Fichtner <franco@opnsense.org>
Tested by:	t_uemura@macome.co.jp
MFC after:	1 day

(cherry picked from commit 450c3f8b3d)
2021-09-28 09:55:59 -07:00
Kevin Bowling
717bed4f6f e1000: Rename 'struct adapter' to 'struct e1000_sc'
Rename the 'struct adapter' to 'struct e1000_sc' to avoid type ambiguity
in things like kgdb.

Reviewed by:	jhb, markj
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D32129

(cherry picked from commit dc92605154)
2021-09-28 09:55:59 -07:00
Kevin Bowling
1f80b2b78d e1000: Consistently use FALLTHROUGH
Approved by:	imp
MFC after:	1 week

(cherry picked from commit e05d9788b7)
2021-09-28 09:55:59 -07:00
Kevin Bowling
e6f324c15f e1000: Use C99 bool types
Approved by:	imp
MFC after:	1 week

(cherry picked from commit 1bbdc25fc1)
2021-09-28 09:55:53 -07:00
Kevin Bowling
9c6432dc4b e1000: Fix up HW vlan ops
2796f7ca:
* Don't reset the entire adapter for vlan changes, fix up the problems
* Add some functions for vlan filter (vfta) manipulation
* Don't muck with the vfta if we aren't doing HW vlan filtering
* Disable interrupts when manipulating vfta on lem(4)-class NICs
* On the I350 there is a specification update (2.4.20) in which the
suggested workaround is to write to the vfta 10 times (if at first you
don't succeed, try, try again). Our shared code has the goods, use it
* Increase a VF's frame receive size in the case of vlans

From the referenced PR, this reduced vlan configuration from minutes
to seconds with hundreds or thousands of vlans and prevents wedging the
adapter with needless adapter reinitialization for each vlan ID.

PR:		230996
Reviewed by:	markj
Tested by:	Ozkan KIRIK <ozkan.kirik@gmail.com>
Differential Revision:	https://reviews.freebsd.org/D30002

22b20b45:
e1000: Fix variable typo

Forgot to git add this in last commit

Reported by:	jenkins
Fixes:		2796f7cab1

(cherry picked from commit 2796f7cab1)
(cherry picked from commit 22b20b45c9)
2021-09-28 09:31:52 -07:00
Kornel Duleba
dcd0d08b69 mvneta: Fix MTU update sequence
After MTU is updated we might start using allocating RX buffers from different pool. (MJUM9BYTES vs MCLBYTES)
Because of that we need to update the RX buffer size in hardware.
Previously it was done only when the interface was up, which is incorrect since MTU can be changed at any time.

Differential revision:	https://reviews.freebsd.org/D31724
Sponsored by:		Stormshield
Obtained from:		Semihalf
MFC after:		2 weeks
Reviewed by:		wma

(cherry picked from commit 5438ef47e3)
2021-09-28 09:35:41 +02:00
Kornel Duleba
28df957acb if_cdce: Add support for setting RX filtering
We can now set promisc and allmulti modes.
Filtering of given multicast addresses is not supported.
Changing the mode is done by sending a command described in:
"USB CDC Subclass Specification for Ethernet Devices v1.2, section 6.2.4".
This means that at least in theory this feature should work with all
modems that are using this driver.

This fixes Huawei E3372h-320 running new firmware in "HiLink" mode.
Previously it would reset a few seconds after its mode was changed
with "usb_modeswitch".
Setting RX filter to default value at the end of attach function
fixed that.

Sponsored by:		Stormshield
Obtained from:		Semihalf
Differential revision:	https://reviews.freebsd.org/D31766
MFC after:		2 weeks
Reviewed by:		hps

(cherry picked from commit f0c393f781)
2021-09-28 09:03:48 +02:00
John-Mark Gurney
87e560496f ued may be NULL here which will cause a panic... reproducable by
simply doing a usbconfig reset on a device which doesn't reset itself
properly...

(cherry picked from commit 3d5104182c)
2021-09-28 09:03:48 +02:00
John-Mark Gurney
973fb85188 Add support for link status, media and VLAN MTU (if supported) to if_cdce...
This makes it more usable in that dhclient will autolaunch from devd
now when cdce devices are plugged in..  It also sets the baudrate, but
this isn't exported via tools, and CDCE doesn't have a good way to
specify the media type, so there isn't a good way to tell userland
what the speed is currently...

Reviewed by:		hps
Relnotes:		yes
Differential Revision:	https://reviews.freebsd.org/D30625

(cherry picked from commit b43d600c83)
2021-09-28 09:03:48 +02:00
Kornel Duleba
fea962297f umodem: Add Huawei E3372h-320 device id
After switching the dongle to the Huawei alternate mode(modem mode)
with usb_modeswitch the serial interfaces had all of their ids set to
0xFF.
After modifying umodem to work with that it attached successfully and
I've managed to configure device with standard AT commands to get
internet connection.

(cherry picked from commit 28d5498268)
2021-09-28 09:03:48 +02:00
Andrew Turner
273fef1f9b Only use byte register access in legacy virtio pci
Some simulators don't implement arbitrary sized memory access to the
virtio PCI registers. Follow Linux and use single byte accesses to read
and write to these registers.

Reviewed by:	bryanv, emaste (previous version)
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D31424

(cherry picked from commit 89c085b899)
2021-09-27 09:36:38 +01:00
Vincenzo Maffione
d61f959961 netmap: monitor: add a flag to distinguish packet direction
The netmap monitor intercepts any TX/RX packets on the monitored
port. However, before this change there was no way to tell
whether an intercepted packet was being transmitted or received
on the monitored port.
A TXMON flag in the netmap slot has been added for this purpose.

(cherry picked from commit 660a47cb99)
2021-09-26 14:00:04 +00:00
Ed Maste
9352de39c3 vt: bound buffer access in redraw optimization
PR:		248628
Reported by:	oleg
Reviewed by:	cem, oleg (both earlier)
Fixes:		ee97b2336a ("Speed up vt(4) by keeping...")
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D32059

(cherry picked from commit dbc7ca5945)
2021-09-25 14:14:12 -04:00
Piotr Pawel Stefaniak
a7ce2cf0ff Update a sysctl name to nbuffers_pcpu in hwpmc.4 and pmcstat.c
This change was missed in r333509 (e6b475e0af).

(cherry picked from commit 0939f965d8)
2021-09-25 10:34:38 +02:00
Kevin Bowling
3f45d625bd e1000: Catch up commit with DPDK
Various syncs with the e1000 shared code from DPDK:
"cid-gigabit.2020.06.05.tar.gz released by ND"

Approved by:	imp
Obtained from:	DPDK
MFC after:	1 week

(cherry picked from commit 984d1616be)
2021-09-23 18:33:32 -07:00
Wenzhuo Lu
9e44dd372e e1000: prevent ULP flow if cable connected
Enabling ulp on link down when cable is connect caused an infinite
loop of linkup/down indications in the NDIS driver.
After discussed, correct flow is to enable ULP only when cable is
disconnected.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>

Approved by:	imp
Obtained from:	DPDK (4bff263d54d299269966365f9697941eecaa241b)
MFC after:	1 week

(cherry picked from commit 40fa6e53f5)
2021-09-23 18:33:10 -07:00
Andrzej Ostruszka
b9fadaa375 e1000: clean LTO warnings
During LTO build compiler reports some 'false positive' warnings about
variables being possibly used uninitialized.  This patch silences these
warnings.

Exemplary compiler warning to suppress (with LTO enabled):
error: 'link' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
  if (link) {

Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>

Approved by:	imp
Obtained from:	DPDK (46136031f19107f4e9b6b3a952cb7f57877a7f0f)
MFC after:	1 week

(cherry picked from commit 089cdb3990)
2021-09-23 18:32:52 -07:00
Yong Wang
713e66e37d e1000: fix multicast setting in VF
In function e1000_update_mc_addr_list_vf(), "msgbuf[0]" is used prior
to initialization at "msgbuf[0] |= E1000_VF_SET_MULTICAST_OVERFLOW".
And "msgbuf[0]" is overwritten at "msgbuf[0] = E1000_VF_SET_MULTICAST".

Fix it by moving the second line prior to the first one that mentioned
above.

Fixes: dffbaf7880a8 ("e1000: revert fix for multicast in VF")
Cc: stable@dpdk.org

Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>

Approved by:	imp
Obtained from:	DPDK (f58ca2f9ef6)
MFC after:	1 week

(cherry picked from commit ecf2a89a99)
2021-09-23 18:32:35 -07:00
Chengwen Feng
a026f32940 e1000: fix timeout for shadow RAM write
This fixes the timed out for shadow RAM write EEWR can't be detected.

Fixes: 5a32a257f957 ("e1000: more NICs in base driver")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>

Approved by:	imp
Obtained from:	DPDK (4a8ab48ec47b3616272e50620b8e1a9599358ea6)
MFC after:	1 week

(cherry picked from commit f6517a7e69)
2021-09-23 18:31:53 -07:00
Guinan Sun
f2f50e5e27 e1000: cleanup pre-processor tags
The codes has been exposed correctly, so remove pre-processor tags.

Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (a50e998a0fd94e5db508710868a3417b1846425c)
MFC after:	1 week

(cherry picked from commit 9c4a0fabc8)
2021-09-23 18:31:34 -07:00
Guinan Sun
86b4f2f60e e1000: introduce DPGFR register
Defined DPGFR, Dynamic Power Gate Force Control Register.

Signed-off-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (1469e5aceffbdcebe834292aadb40b1bd1602867)
MFC after:	1 week

(cherry picked from commit 7fb2111413)
2021-09-23 18:31:07 -07:00
Guinan Sun
270d34d745 e1000: expose FEXTNVM registers and masks
Adding defines for FEXTNVM8 and FEXTNVM12 registers with new masks for
future use.

Signed-off-by: Nir Efrati <nir.efrati@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (6d208ec099cd870a73c6b444b350a82c7a26c5e4)
MFC after:	1 week

(cherry picked from commit de965d042f)
2021-09-23 18:30:29 -07:00
Guinan Sun
b81b96fee2 e1000: add missed define for VFTA
VLAN filtering using the VFTA (VLAN Filter Table Array) and
should be initialized prior to setting rx mode.

Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (fc9933953c90e99970aa867c38f9c6e6c5d0488d)
MFC after:	1 week

(cherry picked from commit a8bb4ab7cf)
2021-09-23 18:30:12 -07:00
Guinan Sun
5bff1c8058 e1000: increase timeout for ME ULP exit
Due timing issues in WHL and since recovery by host is
not always supported, increased timeout for Manageability Engine(ME)
to finish Ultra Low Power(ULP) exit flow for Nahum before timer expiration.

Signed-off-by: Nir Efrati <nir.efrati@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (cf1f3ca45d33e793ca581200b4000c39a798113e)
MFC after:	1 week

(cherry picked from commit e8e3171d99)
2021-09-23 18:29:39 -07:00
Guinan Sun
41ff2b03ae e1000: add missing register defines
Added defines for the EEC, SHADOWINF and FLFWUPDATE registers needed for
the nvmupd_validate_offset function to correctly validate the NVM update
offset.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (2c7fe65ab9a31e6ebf438dad7ccc59bcde83a89f)
MFC after:	1 week

(cherry picked from commit 09888d4bc1)
2021-09-23 18:29:25 -07:00
Guinan Sun
7a3d9ce718 e1000: add PCIm function state
Added define to pcim function state.

Signed-off-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (7ee1a3b273c7f321b50e6ba17c3d9537b1b08347)
MFC after:	1 week

(cherry picked from commit a6f0cc373f)
2021-09-23 18:26:35 -07:00
Guinan Sun
3e14760241 e1000: expose MAC functions
Now the functions are being accessed outside of the file, we need
to properly expose them for silicon families to use.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (df01c0ee277d51f81d7d72501dba97550d3b6c4a)
MFC after:	1 week

(cherry picked from commit d1c37752e2)
2021-09-23 18:26:21 -07:00
Guinan Sun
b06245701c e1000: update for i210 slow system clock
This code is required for the update for system clock.

Signed-off-by: Todd Fujinaka <todd.fujinaka@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>

Approved by:	imp
Obtained from:	DPDK (3f0188c8f29847038bc9f306b2570ace57e3811c)
MFC after:	1 week

(cherry picked from commit 1883a6ff3b)
2021-09-23 18:23:06 -07:00