From: Alexander Lobakin <bloodyreaper(a)yandex.ru>
commit e131a5634830047923c694b4ce0c3b31745ff01b upstream.
gro_cells lib is used by different encapsulating netdevices, such as
geneve, macsec, vxlan etc. to speed up decapsulated traffic processing.
CPU tag is a sort of "encapsulation", and we can use the same mechs to
greatly improve overall DSA performance.
skbs are passed to the GRO layer after removing CPU tags, so we don't
need any new packet offload types as it was firstly proposed by me in
the first GRO-over-DSA variant [1].
The size of struct gro_cells is sizeof(void *), so hot struct
dsa_slave_priv becomes only 4/8 bytes bigger, and all critical fields
remain in one 32-byte cacheline.
The other positive side effect is that drivers for network devices
that can be shipped as CPU ports of DSA-driven switches can now use
napi_gro_frags() to pass skbs to kernel. Packets built that way are
completely non-linear and are likely being dropped without GRO.
This was tested on to-be-mainlined-soon Ethernet driver that uses
napi_gro_frags(), and the overall performance was on par with the
variant from [1], sometimes even better due to minimal overhead.
net.core.gro_normal_batch tuning may help to push it to the limit
on particular setups and platforms.
iperf3 IPoE VLAN NAT TCP forwarding (port1.218 -> port0) setup
on 1.2 GHz MIPS board:
5.7-rc2 baseline:
[ID] Interval Transfer Bitrate Retr
[ 5] 0.00-120.01 sec 9.00 GBytes 644 Mbits/sec 413 sender
[ 5] 0.00-120.00 sec 8.99 GBytes 644 Mbits/sec receiver
Iface RX packets TX packets
eth0 7097731 7097702
port0 426050 6671829
port1 6671681 425862
port1.218 6671677 425851
With this patch:
[ID] Interval Transfer Bitrate Retr
[ 5] 0.00-120.01 sec 12.2 GBytes 870 Mbits/sec 122 sender
[ 5] 0.00-120.00 sec 12.2 GBytes 870 Mbits/sec receiver
Iface RX packets TX packets
eth0 9474792 9474777
port0 455200 353288
port1 9019592 455035
port1.218 353144 455024
v2:
- Add some performance examples in the commit message;
- No functional changes.
[1] https://lore.kernel.org/netdev/20191230143028.27313-1-alobakin@dlink.ru/
Signed-off-by: Alexander Lobakin <bloodyreaper(a)yandex.ru>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
---
This patch radically increase network performance on DSA setup.
Please include this patch into stable releases.
I have done following tests:
NAT is a tested Espressobin board (ARM64 Marvell Armada 3720 SoC with
Marvell 88E6141 DSA switch) which was configured for IPv4 masquerade.
WAN and LAN are another two static boxes on which was running iperf3.
4.19.179 without e131a5634830047923c694b4ce0c3b31745ff01b
WAN --> NAT --> LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 440 MBytes 369 Mbits/sec 12 sender
[ 5] 0.00-10.00 sec 437 MBytes 367 Mbits/sec receiver
WAN <-- NAT <-- LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 390 MBytes 327 Mbits/sec 90 sender
[ 5] 0.00-10.01 sec 388 MBytes 326 Mbits/sec receiver
4.19.179 with e131a5634830047923c694b4ce0c3b31745ff01b
WAN --> NAT --> LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 616 MBytes 516 Mbits/sec 18 sender
[ 5] 0.00-10.00 sec 613 MBytes 515 Mbits/sec receiver
WAN <-- NAT <-- LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 573 MBytes 480 Mbits/sec 32 sender
[ 5] 0.00-10.01 sec 570 MBytes 478 Mbits/sec receiver
5.4.103 without e131a5634830047923c694b4ce0c3b31745ff01b
WAN --> NAT --> LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 454 MBytes 380 Mbits/sec 62 sender
[ 5] 0.00-10.00 sec 451 MBytes 378 Mbits/sec receiver
WAN <-- NAT <-- LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 425 MBytes 356 Mbits/sec 155 sender
[ 5] 0.00-10.01 sec 422 MBytes 354 Mbits/sec receiver
5.4.103 with e131a5634830047923c694b4ce0c3b31745ff01b
WAN --> NAT --> LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 604 MBytes 506 Mbits/sec 8 sender
[ 5] 0.00-10.00 sec 601 MBytes 504 Mbits/sec receiver
WAN <-- NAT <-- LAN
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 578 MBytes 485 Mbits/sec 79 sender
[ 5] 0.00-10.01 sec 575 MBytes 482 Mbits/sec receiver
---
net/dsa/Kconfig | 1 +
net/dsa/dsa.c | 2 +-
net/dsa/dsa_priv.h | 3 +++
net/dsa/slave.c | 10 +++++++++-
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
index 29e2bd5cc5af..7dce11ab2806 100644
--- a/net/dsa/Kconfig
+++ b/net/dsa/Kconfig
@@ -9,6 +9,7 @@ menuconfig NET_DSA
tristate "Distributed Switch Architecture"
depends on HAVE_NET_DSA
depends on BRIDGE || BRIDGE=n
+ select GRO_CELLS
select NET_SWITCHDEV
select PHYLINK
select NET_DEVLINK
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
index 43120a3fb06f..ca80f86995e6 100644
--- a/net/dsa/dsa.c
+++ b/net/dsa/dsa.c
@@ -238,7 +238,7 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
if (dsa_skb_defer_rx_timestamp(p, skb))
return 0;
- netif_receive_skb(skb);
+ gro_cells_receive(&p->gcells, skb);
return 0;
}
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
index bf9947c577b6..d8e850724d13 100644
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -11,6 +11,7 @@
#include <linux/netdevice.h>
#include <linux/netpoll.h>
#include <net/dsa.h>
+#include <net/gro_cells.h>
enum {
DSA_NOTIFIER_AGEING_TIME,
@@ -68,6 +69,8 @@ struct dsa_slave_priv {
struct pcpu_sw_netstats *stats64;
+ struct gro_cells gcells;
+
/* DSA port data, such as switch, port index, etc. */
struct dsa_port *dp;
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index f734ce0bcb56..06f8874d53ee 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -1431,6 +1431,11 @@ int dsa_slave_create(struct dsa_port *port)
free_netdev(slave_dev);
return -ENOMEM;
}
+
+ ret = gro_cells_init(&p->gcells, slave_dev);
+ if (ret)
+ goto out_free;
+
p->dp = port;
INIT_LIST_HEAD(&p->mall_tc_list);
INIT_WORK(&port->xmit_work, dsa_port_xmit_work);
@@ -1443,7 +1448,7 @@ int dsa_slave_create(struct dsa_port *port)
ret = dsa_slave_phy_setup(slave_dev);
if (ret) {
netdev_err(master, "error %d setting up slave phy\n", ret);
- goto out_free;
+ goto out_gcells;
}
dsa_slave_notify(slave_dev, DSA_PORT_REGISTER);
@@ -1462,6 +1467,8 @@ int dsa_slave_create(struct dsa_port *port)
phylink_disconnect_phy(p->dp->pl);
rtnl_unlock();
phylink_destroy(p->dp->pl);
+out_gcells:
+ gro_cells_destroy(&p->gcells);
out_free:
free_percpu(p->stats64);
free_netdev(slave_dev);
@@ -1482,6 +1489,7 @@ void dsa_slave_destroy(struct net_device *slave_dev)
dsa_slave_notify(slave_dev, DSA_PORT_UNREGISTER);
unregister_netdev(slave_dev);
phylink_destroy(dp->pl);
+ gro_cells_destroy(&p->gcells);
free_percpu(p->stats64);
free_netdev(slave_dev);
}
--
2.20.1
From: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
I'm announcing the release of the 5.11.5 kernel.
All users of the 5.11 kernel series must upgrade.
The updated 5.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.11.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2
arch/ia64/kernel/signal.c | 3 -
drivers/base/power/runtime.c | 62 ++++++++++++---------
drivers/block/rsxx/core.c | 8 +-
drivers/char/tpm/tpm_tis_core.c | 30 ++++++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 -
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 -
drivers/gpu/drm/amd/amdgpu/nv.c | 6 +-
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 15 ++++-
drivers/infiniband/core/cm.c | 5 +
drivers/infiniband/hw/mlx5/devx.c | 4 +
drivers/infiniband/sw/rxe/Kconfig | 1
drivers/iommu/dma-iommu.c | 15 ++---
drivers/iommu/intel/pasid.h | 4 -
drivers/iommu/tegra-smmu.c | 72 ++++++++++++++++++++++++-
drivers/md/dm-bufio.c | 4 +
drivers/md/dm-verity-fec.c | 23 ++++---
drivers/net/ethernet/realtek/r8169_main.c | 2
fs/btrfs/block-group.c | 33 +++++++++++
fs/btrfs/block-group.h | 9 +++
fs/btrfs/ctree.h | 5 +
fs/btrfs/delayed-inode.c | 2
fs/btrfs/file.c | 5 +
fs/btrfs/free-space-cache.c | 14 ++--
fs/btrfs/inode.c | 40 ++++++++++++-
fs/btrfs/ioctl.c | 19 ++++++
fs/btrfs/raid56.c | 21 +++----
fs/btrfs/reflink.c | 18 ++++++
fs/btrfs/scrub.c | 9 ++-
fs/btrfs/super.c | 4 -
fs/btrfs/tree-checker.c | 16 +----
fs/btrfs/xattr.c | 31 +++++++++-
fs/btrfs/zoned.c | 4 -
fs/io_uring.c | 3 +
include/crypto/hash.h | 8 +-
include/linux/crypto.h | 9 ++-
include/sound/intel-nhlt.h | 5 +
kernel/trace/ring_buffer.c | 11 +++
scripts/recordmcount.c | 2
security/tomoyo/network.c | 2
sound/hda/intel-nhlt.c | 54 +++++++++++++++---
sound/pci/ctxfi/cthw20k2.c | 2
sound/pci/hda/patch_realtek.c | 13 ++++
sound/usb/clock.c | 8 +-
sound/usb/mixer.c | 11 +++
sound/usb/mixer_maps.c | 10 +++
sound/usb/pcm.c | 12 +++-
sound/usb/quirks.c | 2
48 files changed, 506 insertions(+), 139 deletions(-)
Alex Deucher (1):
drm/amdgpu: Only check for S0ix if AMD_PMC is configured
Andrea Fagiani (1):
ALSA: usb-audio: use Corsair Virtuoso mapping for Corsair Virtuoso SE
Ard Biesheuvel (1):
crypto - shash: reduce minimum alignment of shash_desc structure
Asher.Song (1):
drm/amdgpu:disable VCN for Navi12 SKU
Boris Burkov (1):
btrfs: fix spurious free_space_tree remount warning
Chen Jun (1):
ftrace: Have recordmcount use w8 to read relp->r_info in arm64_is_fake_mcount
Chris Chiu (1):
ALSA: hda/realtek: Enable headset mic of Acer SWIFT with ALC256
Colin Ian King (1):
ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits
Dan Carpenter (2):
btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl
rsxx: Return -EFAULT if copy_to_user() fails
Evan Quan (1):
drm/amd/pm: correct Arcturus mmTHM_BACO_CNTL register address
Filipe Manana (4):
btrfs: fix race between writes to swap files and scrub
btrfs: fix race between swap file activation and snapshot creation
btrfs: fix stale data exposure after cloning a hole with NO_HOLES enabled
btrfs: fix warning when creating a directory with smack enabled
Greg Kroah-Hartman (1):
Linux 5.11.5
Heiner Kallweit (1):
r8169: fix resuming from suspend on RTL8105e if machine runs on battery
Ira Weiny (1):
btrfs: fix raid6 qstripe kmap
Jarkko Sakkinen (1):
tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality()
Jens Axboe (2):
io_uring: ignore double poll add on the same waitqueue head
ia64: don't call handle_signal() unless there's actually a signal queued
Josef Bacik (2):
btrfs: avoid double put of block group when emptying cluster
btrfs: tree-checker: do not error out if extent ref hash doesn't match
Julian Braha (1):
RDMA/rxe: Fix missing kconfig dependency on CRYPTO
Kevin Wang (1):
drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie
Lu Baolu (1):
iommu: Don't use lazy flush for untrusted device
Lukasz Majczak (1):
tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality()
Mikulas Patocka (1):
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
Milan Broz (1):
dm verity: fix FEC for RS roots unaligned to block size
Naohiro Aota (1):
btrfs: zoned: use sector_t for zone sectors
Nicolas MURE (1):
ALSA: usb-audio: Fix Pioneer DJM devices URB_CONTROL request direction to set samplerate
Nicolin Chen (1):
iommu/tegra-smmu: Fix mc errors on tegra124-nyan
Nikolay Borisov (3):
btrfs: fix race between extent freeing/allocation when using bitmaps
btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
Pierre-Louis Bossart (1):
ALSA: hda: intel-nhlt: verify config type
Rafael J. Wysocki (1):
PM: runtime: Update device status before letting suppliers suspend
Saeed Mahameed (1):
RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep
Steven Rostedt (VMware) (1):
ring-buffer: Force before_stamp and write_stamp to be different on discard
Takashi Iwai (3):
ALSA: usb-audio: Don't abort even if the clock rate differs
ALSA: usb-audio: Drop bogus dB range in too low level
ALSA: usb-audio: Allow modifying parameters with succeeding hw_params calls
Tetsuo Handa (1):
tomoyo: recognize kernel threads correctly
YueHaibing (1):
IB/mlx5: Add missing error code
Zenghui Yu (1):
iommu/vt-d: Fix status code for Allocate/Free PASID command
From: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
I'm announcing the release of the 5.4.104 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2
arch/arm64/kernel/ptrace.c | 2
drivers/base/power/runtime.c | 62 ++++++++++++++++------------
drivers/block/rsxx/core.c | 8 ++-
drivers/char/tpm/tpm_tis_core.c | 30 +++++++++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 -
drivers/infiniband/hw/mlx5/devx.c | 4 +
drivers/infiniband/sw/rxe/Kconfig | 1
drivers/md/dm-bufio.c | 4 +
drivers/md/dm-verity-fec.c | 23 +++++-----
drivers/net/ethernet/realtek/r8169_main.c | 2
fs/btrfs/delayed-inode.c | 2
fs/btrfs/file.c | 5 +-
fs/btrfs/ioctl.c | 19 ++++++++
fs/btrfs/raid56.c | 58 +++++++++++---------------
fs/btrfs/xattr.c | 31 ++++++++++++--
include/crypto/hash.h | 8 +--
include/linux/crypto.h | 9 ++--
include/sound/intel-nhlt.h | 5 ++
scripts/recordmcount.c | 2
sound/hda/intel-nhlt.c | 54 ++++++++++++++++++++----
sound/pci/ctxfi/cthw20k2.c | 2
tools/usb/usbip/libsrc/usbip_host_common.c | 2
23 files changed, 231 insertions(+), 108 deletions(-)
Antonio Borneo (1):
usbip: tools: fix build error for multiple definition
Ard Biesheuvel (1):
crypto - shash: reduce minimum alignment of shash_desc structure
Chen Jun (1):
ftrace: Have recordmcount use w8 to read relp->r_info in arm64_is_fake_mcount
Colin Ian King (1):
ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits
Dan Carpenter (2):
btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl
rsxx: Return -EFAULT if copy_to_user() fails
David Sterba (1):
btrfs: raid56: simplify tracking of Q stripe presence
Filipe Manana (1):
btrfs: fix warning when creating a directory with smack enabled
Greg Kroah-Hartman (1):
Linux 5.4.104
Heiner Kallweit (1):
r8169: fix resuming from suspend on RTL8105e if machine runs on battery
Ira Weiny (1):
btrfs: fix raid6 qstripe kmap
Jarkko Sakkinen (1):
tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality()
Julian Braha (1):
RDMA/rxe: Fix missing kconfig dependency on CRYPTO
Kevin Wang (1):
drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie
Lukasz Majczak (1):
tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality()
Mikulas Patocka (1):
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
Milan Broz (1):
dm verity: fix FEC for RS roots unaligned to block size
Nikolay Borisov (2):
btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
Pierre-Louis Bossart (1):
ALSA: hda: intel-nhlt: verify config type
Rafael J. Wysocki (1):
PM: runtime: Update device status before letting suppliers suspend
Timothy E Baldwin (1):
arm64: ptrace: Fix seccomp of traced syscall -1 (NO_SYSCALL)
YueHaibing (1):
IB/mlx5: Add missing error code
This is the start of the stable review cycle for the 5.10.22 release.
There are 42 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 10 Mar 2021 12:27:05 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.22-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 5.10.22-rc1
Heiner Kallweit <hkallweit1(a)gmail.com>
r8169: fix resuming from suspend on RTL8105e if machine runs on battery
Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp>
tomoyo: recognize kernel threads correctly
Catalin Marinas <catalin.marinas(a)arm.com>
of: unittest: Fix build on architectures without CONFIG_OF_ADDRESS
Neil Armstrong <narmstrong(a)baylibre.com>
Revert "arm64: dts: amlogic: add missing ethernet reset ID"
Zenghui Yu <yuzenghui(a)huawei.com>
iommu/vt-d: Fix status code for Allocate/Free PASID command
Dan Carpenter <dan.carpenter(a)oracle.com>
rsxx: Return -EFAULT if copy_to_user() fails
Chen Jun <chenjun102(a)huawei.com>
ftrace: Have recordmcount use w8 to read relp->r_info in arm64_is_fake_mcount
Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com>
ALSA: hda: intel-nhlt: verify config type
YueHaibing <yuehaibing(a)huawei.com>
IB/mlx5: Add missing error code
Julian Braha <julianbraha(a)gmail.com>
RDMA/rxe: Fix missing kconfig dependency on CRYPTO
Saeed Mahameed <saeedm(a)nvidia.com>
RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep
Colin Ian King <colin.king(a)canonical.com>
ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
mm: Remove examples from enum zone_type comment
Ard Biesheuvel <ardb(a)kernel.org>
arm64: mm: Set ZONE_DMA size based on early IORT scan
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
of: unittest: Add test for of_dma_get_max_cpu_address()
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
of/address: Introduce of_dma_get_max_cpu_address()
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
arm64: mm: Move zone_dma_bits initialization into zone_sizes_init()
Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
arm64: mm: Move reserve_crashkernel() into mem_init()
Ard Biesheuvel <ardb(a)kernel.org>
crypto - shash: reduce minimum alignment of shash_desc structure
Kevin Wang <kevin1.wang(a)amd.com>
drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie
Asher.Song <Asher.Song(a)amd.com>
drm/amdgpu:disable VCN for Navi12 SKU
Milan Broz <gmazyland(a)gmail.com>
dm verity: fix FEC for RS roots unaligned to block size
Mikulas Patocka <mpatocka(a)redhat.com>
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
Jens Axboe <axboe(a)kernel.dk>
io_uring: ignore double poll add on the same waitqueue head
Steven Rostedt (VMware) <rostedt(a)goodmis.org>
ring-buffer: Force before_stamp and write_stamp to be different on discard
Rafael J. Wysocki <rafael.j.wysocki(a)intel.com>
PM: runtime: Update device status before letting suppliers suspend
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix warning when creating a directory with smack enabled
Nikolay Borisov <nborisov(a)suse.com>
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
Nikolay Borisov <nborisov(a)suse.com>
btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
Dan Carpenter <dancarpenter(a)oracle.com>
btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl
Nikolay Borisov <nborisov(a)suse.com>
btrfs: fix race between extent freeing/allocation when using bitmaps
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix stale data exposure after cloning a hole with NO_HOLES enabled
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix race between swap file activation and snapshot creation
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix race between writes to swap files and scrub
Ira Weiny <ira.weiny(a)intel.com>
btrfs: fix raid6 qstripe kmap
Josef Bacik <josef(a)toxicpanda.com>
btrfs: avoid double put of block group when emptying cluster
Jarkko Sakkinen <jarkko(a)kernel.org>
tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality()
Lukasz Majczak <lma(a)semihalf.com>
tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality()
Takashi Iwai <tiwai(a)suse.de>
ALSA: usb-audio: Drop bogus dB range in too low level
Andrea Fagiani <andfagiani(a)gmail.com>
ALSA: usb-audio: use Corsair Virtuoso mapping for Corsair Virtuoso SE
Chris Chiu <chris.chiu(a)canonical.com>
ALSA: hda/realtek: Enable headset mic of Acer SWIFT with ALC256
-------------
Diffstat:
Makefile | 4 +-
arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 2 -
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 2 -
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 3 --
arch/arm64/mm/init.c | 22 ++++----
drivers/acpi/arm64/iort.c | 55 ++++++++++++++++++++
drivers/base/power/runtime.c | 62 ++++++++++++++---------
drivers/block/rsxx/core.c | 8 +--
drivers/char/tpm/tpm_tis_core.c | 30 +++++++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 +-
drivers/gpu/drm/amd/amdgpu/nv.c | 6 ++-
drivers/infiniband/core/cm.c | 5 +-
drivers/infiniband/hw/mlx5/devx.c | 4 +-
drivers/infiniband/sw/rxe/Kconfig | 1 +
drivers/iommu/intel/pasid.h | 4 +-
drivers/md/dm-bufio.c | 4 ++
drivers/md/dm-verity-fec.c | 23 +++++----
drivers/net/ethernet/realtek/r8169_main.c | 2 +
drivers/of/address.c | 42 +++++++++++++++
drivers/of/unittest.c | 21 ++++++++
fs/btrfs/block-group.c | 33 +++++++++++-
fs/btrfs/block-group.h | 9 ++++
fs/btrfs/ctree.h | 5 ++
fs/btrfs/delayed-inode.c | 2 +-
fs/btrfs/file.c | 5 +-
fs/btrfs/free-space-cache.c | 14 ++---
fs/btrfs/inode.c | 40 +++++++++++++--
fs/btrfs/ioctl.c | 19 ++++++-
fs/btrfs/raid56.c | 21 ++++----
fs/btrfs/reflink.c | 18 +++++++
fs/btrfs/scrub.c | 9 +++-
fs/btrfs/xattr.c | 31 ++++++++++--
fs/io_uring.c | 3 ++
include/crypto/hash.h | 8 +--
include/linux/acpi_iort.h | 4 ++
include/linux/crypto.h | 9 ++--
include/linux/mmzone.h | 20 --------
include/linux/of.h | 7 +++
include/sound/intel-nhlt.h | 5 ++
kernel/trace/ring_buffer.c | 11 ++++
scripts/recordmcount.c | 2 +-
security/tomoyo/network.c | 2 +-
sound/hda/intel-nhlt.c | 54 ++++++++++++++++----
sound/pci/ctxfi/cthw20k2.c | 2 +-
sound/pci/hda/patch_realtek.c | 13 +++++
sound/usb/mixer.c | 11 ++++
sound/usb/mixer_maps.c | 10 ++++
47 files changed, 532 insertions(+), 139 deletions(-)
From: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
This is the start of the stable review cycle for the 5.11.5 release.
There are 44 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 10 Mar 2021 12:27:05 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.11.5-rc1…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.11.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 5.11.5-rc1
Heiner Kallweit <hkallweit1(a)gmail.com>
r8169: fix resuming from suspend on RTL8105e if machine runs on battery
Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp>
tomoyo: recognize kernel threads correctly
Naohiro Aota <naohiro.aota(a)wdc.com>
btrfs: zoned: use sector_t for zone sectors
Zenghui Yu <yuzenghui(a)huawei.com>
iommu/vt-d: Fix status code for Allocate/Free PASID command
Lu Baolu <baolu.lu(a)linux.intel.com>
iommu: Don't use lazy flush for untrusted device
Nicolin Chen <nicoleotsuka(a)gmail.com>
iommu/tegra-smmu: Fix mc errors on tegra124-nyan
Dan Carpenter <dan.carpenter(a)oracle.com>
rsxx: Return -EFAULT if copy_to_user() fails
Jens Axboe <axboe(a)kernel.dk>
ia64: don't call handle_signal() unless there's actually a signal queued
Chen Jun <chenjun102(a)huawei.com>
ftrace: Have recordmcount use w8 to read relp->r_info in arm64_is_fake_mcount
Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com>
ALSA: hda: intel-nhlt: verify config type
YueHaibing <yuehaibing(a)huawei.com>
IB/mlx5: Add missing error code
Julian Braha <julianbraha(a)gmail.com>
RDMA/rxe: Fix missing kconfig dependency on CRYPTO
Saeed Mahameed <saeedm(a)nvidia.com>
RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep
Nicolas MURE <nicolas.mure2019(a)gmail.com>
ALSA: usb-audio: Fix Pioneer DJM devices URB_CONTROL request direction to set samplerate
Colin Ian King <colin.king(a)canonical.com>
ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits
Ard Biesheuvel <ardb(a)kernel.org>
crypto - shash: reduce minimum alignment of shash_desc structure
Kevin Wang <kevin1.wang(a)amd.com>
drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie
Alex Deucher <alexander.deucher(a)amd.com>
drm/amdgpu: Only check for S0ix if AMD_PMC is configured
Asher.Song <Asher.Song(a)amd.com>
drm/amdgpu:disable VCN for Navi12 SKU
Evan Quan <evan.quan(a)amd.com>
drm/amd/pm: correct Arcturus mmTHM_BACO_CNTL register address
Milan Broz <gmazyland(a)gmail.com>
dm verity: fix FEC for RS roots unaligned to block size
Mikulas Patocka <mpatocka(a)redhat.com>
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
Jens Axboe <axboe(a)kernel.dk>
io_uring: ignore double poll add on the same waitqueue head
Steven Rostedt (VMware) <rostedt(a)goodmis.org>
ring-buffer: Force before_stamp and write_stamp to be different on discard
Rafael J. Wysocki <rafael.j.wysocki(a)intel.com>
PM: runtime: Update device status before letting suppliers suspend
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix warning when creating a directory with smack enabled
Nikolay Borisov <nborisov(a)suse.com>
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
Boris Burkov <boris(a)bur.io>
btrfs: fix spurious free_space_tree remount warning
Nikolay Borisov <nborisov(a)suse.com>
btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
Dan Carpenter <dancarpenter(a)oracle.com>
btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl
Nikolay Borisov <nborisov(a)suse.com>
btrfs: fix race between extent freeing/allocation when using bitmaps
Josef Bacik <josef(a)toxicpanda.com>
btrfs: tree-checker: do not error out if extent ref hash doesn't match
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix stale data exposure after cloning a hole with NO_HOLES enabled
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix race between swap file activation and snapshot creation
Filipe Manana <fdmanana(a)suse.com>
btrfs: fix race between writes to swap files and scrub
Ira Weiny <ira.weiny(a)intel.com>
btrfs: fix raid6 qstripe kmap
Josef Bacik <josef(a)toxicpanda.com>
btrfs: avoid double put of block group when emptying cluster
Jarkko Sakkinen <jarkko(a)kernel.org>
tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality()
Lukasz Majczak <lma(a)semihalf.com>
tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality()
Takashi Iwai <tiwai(a)suse.de>
ALSA: usb-audio: Allow modifying parameters with succeeding hw_params calls
Takashi Iwai <tiwai(a)suse.de>
ALSA: usb-audio: Drop bogus dB range in too low level
Takashi Iwai <tiwai(a)suse.de>
ALSA: usb-audio: Don't abort even if the clock rate differs
Andrea Fagiani <andfagiani(a)gmail.com>
ALSA: usb-audio: use Corsair Virtuoso mapping for Corsair Virtuoso SE
Chris Chiu <chris.chiu(a)canonical.com>
ALSA: hda/realtek: Enable headset mic of Acer SWIFT with ALC256
-------------
Diffstat:
Makefile | 4 +-
arch/ia64/kernel/signal.c | 3 +-
drivers/base/power/runtime.c | 62 +++++++++++++---------
drivers/block/rsxx/core.c | 8 +--
drivers/char/tpm/tpm_tis_core.c | 30 +++++++++--
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 +-
drivers/gpu/drm/amd/amdgpu/nv.c | 6 ++-
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 15 ++++--
drivers/infiniband/core/cm.c | 5 +-
drivers/infiniband/hw/mlx5/devx.c | 4 +-
drivers/infiniband/sw/rxe/Kconfig | 1 +
drivers/iommu/dma-iommu.c | 15 +++---
drivers/iommu/intel/pasid.h | 4 +-
drivers/iommu/tegra-smmu.c | 72 +++++++++++++++++++++++++-
drivers/md/dm-bufio.c | 4 ++
drivers/md/dm-verity-fec.c | 23 ++++----
drivers/net/ethernet/realtek/r8169_main.c | 2 +
fs/btrfs/block-group.c | 33 +++++++++++-
fs/btrfs/block-group.h | 9 ++++
fs/btrfs/ctree.h | 5 ++
fs/btrfs/delayed-inode.c | 2 +-
fs/btrfs/file.c | 5 +-
fs/btrfs/free-space-cache.c | 14 ++---
fs/btrfs/inode.c | 40 ++++++++++++--
fs/btrfs/ioctl.c | 19 ++++++-
fs/btrfs/raid56.c | 21 ++++----
fs/btrfs/reflink.c | 18 +++++++
fs/btrfs/scrub.c | 9 +++-
fs/btrfs/super.c | 4 +-
fs/btrfs/tree-checker.c | 16 ++----
fs/btrfs/xattr.c | 31 +++++++++--
fs/btrfs/zoned.c | 4 +-
fs/io_uring.c | 3 ++
include/crypto/hash.h | 8 +--
include/linux/crypto.h | 9 ++--
include/sound/intel-nhlt.h | 5 ++
kernel/trace/ring_buffer.c | 11 ++++
scripts/recordmcount.c | 2 +-
security/tomoyo/network.c | 2 +-
sound/hda/intel-nhlt.c | 54 +++++++++++++++----
sound/pci/ctxfi/cthw20k2.c | 2 +-
sound/pci/hda/patch_realtek.c | 13 +++++
sound/usb/clock.c | 8 +--
sound/usb/mixer.c | 11 ++++
sound/usb/mixer_maps.c | 10 ++++
sound/usb/pcm.c | 12 +++--
sound/usb/quirks.c | 2 +-
48 files changed, 507 insertions(+), 140 deletions(-)
This is a note to let you know that I've just added the patch titled
usb: xhci-mtk: improve bandwidth scheduling with TT
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-next branch.
The patch will show up in the next release of the linux-next tree
(usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release
during the merge window.
If you have any questions about this process, please let me know.
>From 99ea56bd89aa3a644d6af34301a0b0f3f5f92314 Mon Sep 17 00:00:00 2001
From: Chunfeng Yun <chunfeng.yun(a)mediatek.com>
Date: Mon, 8 Mar 2021 10:51:51 +0800
Subject: usb: xhci-mtk: improve bandwidth scheduling with TT
When the USB headset is plug into an external hub, sometimes
can't set config due to not enough bandwidth, so need improve
LS/FS INT/ISOC bandwidth scheduling with TT.
Fixes: 54f6a8af3722 ("usb: xhci-mtk: skip dropping bandwidth of unchecked endpoints")
Cc: stable <stable(a)vger.kernel.org>
Signed-off-by: Yaqii Wu <yaqii.wu(a)mediatek.com>
Signed-off-by: Chunfeng Yun <chunfeng.yun(a)mediatek.com>
Link: https://lore.kernel.org/r/2f30e81400a59afef5f8231c98149169c7520519.16151706…
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/host/xhci-mtk-sch.c | 74 ++++++++++++++++++++++++++-------
drivers/usb/host/xhci-mtk.h | 6 ++-
2 files changed, 64 insertions(+), 16 deletions(-)
diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index 5891f56c64da..8950d1f10a7f 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -378,6 +378,31 @@ static void update_bus_bw(struct mu3h_sch_bw_info *sch_bw,
sch_ep->allocated = used;
}
+static int check_fs_bus_bw(struct mu3h_sch_ep_info *sch_ep, int offset)
+{
+ struct mu3h_sch_tt *tt = sch_ep->sch_tt;
+ u32 num_esit, tmp;
+ int base;
+ int i, j;
+
+ num_esit = XHCI_MTK_MAX_ESIT / sch_ep->esit;
+ for (i = 0; i < num_esit; i++) {
+ base = offset + i * sch_ep->esit;
+
+ /*
+ * Compared with hs bus, no matter what ep type,
+ * the hub will always delay one uframe to send data
+ */
+ for (j = 0; j < sch_ep->cs_count; j++) {
+ tmp = tt->fs_bus_bw[base + j] + sch_ep->bw_cost_per_microframe;
+ if (tmp > FS_PAYLOAD_MAX)
+ return -ERANGE;
+ }
+ }
+
+ return 0;
+}
+
static int check_sch_tt(struct usb_device *udev,
struct mu3h_sch_ep_info *sch_ep, u32 offset)
{
@@ -402,7 +427,7 @@ static int check_sch_tt(struct usb_device *udev,
return -ERANGE;
for (i = 0; i < sch_ep->cs_count; i++)
- if (test_bit(offset + i, tt->split_bit_map))
+ if (test_bit(offset + i, tt->ss_bit_map))
return -ERANGE;
} else {
@@ -432,7 +457,7 @@ static int check_sch_tt(struct usb_device *udev,
cs_count = 7; /* HW limit */
for (i = 0; i < cs_count + 2; i++) {
- if (test_bit(offset + i, tt->split_bit_map))
+ if (test_bit(offset + i, tt->ss_bit_map))
return -ERANGE;
}
@@ -448,24 +473,44 @@ static int check_sch_tt(struct usb_device *udev,
sch_ep->num_budget_microframes = sch_ep->esit;
}
- return 0;
+ return check_fs_bus_bw(sch_ep, offset);
}
static void update_sch_tt(struct usb_device *udev,
- struct mu3h_sch_ep_info *sch_ep)
+ struct mu3h_sch_ep_info *sch_ep, bool used)
{
struct mu3h_sch_tt *tt = sch_ep->sch_tt;
u32 base, num_esit;
+ int bw_updated;
+ int bits;
int i, j;
num_esit = XHCI_MTK_MAX_ESIT / sch_ep->esit;
+ bits = (sch_ep->ep_type == ISOC_OUT_EP) ? sch_ep->cs_count : 1;
+
+ if (used)
+ bw_updated = sch_ep->bw_cost_per_microframe;
+ else
+ bw_updated = -sch_ep->bw_cost_per_microframe;
+
for (i = 0; i < num_esit; i++) {
base = sch_ep->offset + i * sch_ep->esit;
- for (j = 0; j < sch_ep->num_budget_microframes; j++)
- set_bit(base + j, tt->split_bit_map);
+
+ for (j = 0; j < bits; j++) {
+ if (used)
+ set_bit(base + j, tt->ss_bit_map);
+ else
+ clear_bit(base + j, tt->ss_bit_map);
+ }
+
+ for (j = 0; j < sch_ep->cs_count; j++)
+ tt->fs_bus_bw[base + j] += bw_updated;
}
- list_add_tail(&sch_ep->tt_endpoint, &tt->ep_list);
+ if (used)
+ list_add_tail(&sch_ep->tt_endpoint, &tt->ep_list);
+ else
+ list_del(&sch_ep->tt_endpoint);
}
static int check_sch_bw(struct usb_device *udev,
@@ -535,7 +580,7 @@ static int check_sch_bw(struct usb_device *udev,
if (!tt_offset_ok)
return -ERANGE;
- update_sch_tt(udev, sch_ep);
+ update_sch_tt(udev, sch_ep, 1);
}
/* update bus bandwidth info */
@@ -548,15 +593,16 @@ static void destroy_sch_ep(struct usb_device *udev,
struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep)
{
/* only release ep bw check passed by check_sch_bw() */
- if (sch_ep->allocated)
+ if (sch_ep->allocated) {
update_bus_bw(sch_bw, sch_ep, 0);
+ if (sch_ep->sch_tt)
+ update_sch_tt(udev, sch_ep, 0);
+ }
- list_del(&sch_ep->endpoint);
-
- if (sch_ep->sch_tt) {
- list_del(&sch_ep->tt_endpoint);
+ if (sch_ep->sch_tt)
drop_tt(udev);
- }
+
+ list_del(&sch_ep->endpoint);
kfree(sch_ep);
}
diff --git a/drivers/usb/host/xhci-mtk.h b/drivers/usb/host/xhci-mtk.h
index cbb09dfea62e..f42769c69249 100644
--- a/drivers/usb/host/xhci-mtk.h
+++ b/drivers/usb/host/xhci-mtk.h
@@ -20,13 +20,15 @@
#define XHCI_MTK_MAX_ESIT 64
/**
- * @split_bit_map: used to avoid split microframes overlay
+ * @ss_bit_map: used to avoid start split microframes overlay
+ * @fs_bus_bw: array to keep track of bandwidth already used for FS
* @ep_list: Endpoints using this TT
* @usb_tt: usb TT related
* @tt_port: TT port number
*/
struct mu3h_sch_tt {
- DECLARE_BITMAP(split_bit_map, XHCI_MTK_MAX_ESIT);
+ DECLARE_BITMAP(ss_bit_map, XHCI_MTK_MAX_ESIT);
+ u32 fs_bus_bw[XHCI_MTK_MAX_ESIT];
struct list_head ep_list;
struct usb_tt *usb_tt;
int tt_port;
--
2.30.1
This is a note to let you know that I've just added the patch titled
usb: xhci-mtk: remove or operator for setting schedule parameters
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-next branch.
The patch will show up in the next release of the linux-next tree
(usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release
during the merge window.
If you have any questions about this process, please let me know.
>From f6e1ab32bf6843c592ac6e241f89caf90b132b76 Mon Sep 17 00:00:00 2001
From: Chunfeng Yun <chunfeng.yun(a)mediatek.com>
Date: Mon, 8 Mar 2021 10:51:50 +0800
Subject: usb: xhci-mtk: remove or operator for setting schedule parameters
Side effect may happen if use or operator to set schedule parameters
when the parameters are already set before. Set them directly due to
other bits are reserved.
Fixes: 54f6a8af3722 ("usb: xhci-mtk: skip dropping bandwidth of unchecked endpoints")
Cc: stable <stable(a)vger.kernel.org>
Signed-off-by: Chunfeng Yun <chunfeng.yun(a)mediatek.com>
Link: https://lore.kernel.org/r/d287899e6beb2fc1bfb8900c75a872f628ecde55.16151706…
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/host/xhci-mtk-sch.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index b45e5bf08997..5891f56c64da 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -643,7 +643,7 @@ int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev,
*/
if (usb_endpoint_xfer_int(&ep->desc)
|| usb_endpoint_xfer_isoc(&ep->desc))
- ep_ctx->reserved[0] |= cpu_to_le32(EP_BPKTS(1));
+ ep_ctx->reserved[0] = cpu_to_le32(EP_BPKTS(1));
return 0;
}
@@ -730,10 +730,10 @@ int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
list_move_tail(&sch_ep->endpoint, &sch_bw->bw_ep_list);
ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index);
- ep_ctx->reserved[0] |= cpu_to_le32(EP_BPKTS(sch_ep->pkts)
+ ep_ctx->reserved[0] = cpu_to_le32(EP_BPKTS(sch_ep->pkts)
| EP_BCSCOUNT(sch_ep->cs_count)
| EP_BBM(sch_ep->burst_mode));
- ep_ctx->reserved[1] |= cpu_to_le32(EP_BOFFSET(sch_ep->offset)
+ ep_ctx->reserved[1] = cpu_to_le32(EP_BOFFSET(sch_ep->offset)
| EP_BREPEAT(sch_ep->repeat));
xhci_dbg(xhci, " PKTS:%x, CSCOUNT:%x, BM:%x, OFFSET:%x, REPEAT:%x\n",
--
2.30.1