This is the start of the stable review cycle for the 6.1.32 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 Sat, 03 Jun 2023 13:19:19 +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/v6.x/stable-review/patch-6.1.32-rc1…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 6.1.32-rc1
Yanteng Si <siyanteng(a)loongson.cn>
tools headers UAPI: Sync the linux/in.h with the kernel sources
Paul Blakey <paulb(a)nvidia.com>
netfilter: ctnetlink: Support offloaded conntrack entry deletion
Gautham R. Shenoy <gautham.shenoy(a)amd.com>
cpufreq: amd-pstate: Add ->fast_switch() callback
Wyes Karny <wyes.karny(a)amd.com>
cpufreq: amd-pstate: Update policy->cur in amd_pstate_adjust_perf()
Anuj Gupta <anuj20.g(a)samsung.com>
block: fix bio-cache for passthru IO
Ido Schimmel <idosch(a)nvidia.com>
Revert "thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function"
Ruihan Li <lrh2000(a)pku.edu.cn>
bluetooth: Add cmd validity checks at the start of hci_sock_ioctl()
Mario Limonciello <mario.limonciello(a)amd.com>
drm/amd: Don't allow s0ix on APUs older than Raven
Hariprasad Kelam <hkelam(a)marvell.com>
octeontx2-af: Add validation for lmac type
Claudiu Beznea <claudiu.beznea(a)microchip.com>
dmaengine: at_xdmac: restore the content of grws register
Claudiu Beznea <claudiu.beznea(a)microchip.com>
dmaengine: at_xdmac: do not resume channels paused by consumers
Claudiu Beznea <claudiu.beznea(a)microchip.com>
dmaengine: at_xdmac: disable/enable clock directly on suspend/resume
Zhu Yanjun <yanjun.zhu(a)linux.dev>
RDMA/rxe: Fix the error "trying to register non-static key in rxe_cleanup_task"
Johannes Berg <johannes.berg(a)intel.com>
wifi: iwlwifi: mvm: fix potential memory leak
Haim Dreyfuss <haim.dreyfuss(a)intel.com>
wifi: iwlwifi: mvm: support wowlan info notification version 2
Eric Huang <echuang(a)realtek.com>
wifi: rtw89: correct 5 MHz mask setting
David Epping <david.epping(a)missinglinkelectronics.com>
net: phy: mscc: enable VSC8501/2 RGMII RX clock
Yunsheng Lin <linyunsheng(a)huawei.com>
page_pool: fix inconsistency for page_pool_ring_[un]lock()
Qingfang DENG <qingfang.deng(a)siflower.com.cn>
net: page_pool: use in_softirq() instead
Yan Zhao <yan.y.zhao(a)intel.com>
vfio/type1: check pfn valid before converting to struct page
Tian Lan <tian.lan(a)twosigma.com>
blk-mq: fix race condition in active queue accounting
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Incorrectly handling copied_seq
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Wake up polling after data copy
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: TCP data stall on recv before accept
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Handle fin correctly
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Improved check for empty queue
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Reschedule is now done through backlog
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Convert schedule_work into delayed_work
John Fastabend <john.fastabend(a)gmail.com>
bpf, sockmap: Pass skb ownership through read_skb
Henning Schild <henning.schild(a)siemens.com>
gpio-f7188x: fix chip name and pin count on Nuvoton chip
Shay Drory <shayd(a)nvidia.com>
net/mlx5: E-switch, Devcom, sync devcom events and devcom comp register
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: strp: preserve decryption status of skbs when needed
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: strp: factor out copying skb data
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: strp: force mixed decrypted records into copy mode
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: strp: fix determining record length in copy mode
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: strp: set the skb->len of detached / CoW'ed skbs
Jakub Kicinski <kuba(a)kernel.org>
tls: rx: device: fix checking decryption status
Mario Limonciello <mario.limonciello(a)amd.com>
platform/x86/amd/pmf: Fix CnQF and auto-mode after resume
Jeremy Sowden <jeremy(a)azazel.net>
selftests/bpf: Fix pkg-config call building sign-file
Sudeep Holla <sudeep.holla(a)arm.com>
firmware: arm_ffa: Fix usage of partition info get count flag
Nicolas Dichtel <nicolas.dichtel(a)6wind.com>
ipv{4,6}/raw: fix output xfrm lookup wrt protocol
Jakub Sitnicki <jakub(a)cloudflare.com>
inet: Add IP_LOCAL_PORT_RANGE socket option
-------------
Diffstat:
Makefile | 4 +-
block/blk-map.c | 2 +-
block/blk-mq-tag.c | 12 +-
drivers/cpufreq/amd-pstate.c | 45 ++++-
drivers/dma/at_xdmac.c | 60 +++++-
drivers/firmware/arm_ffa/driver.c | 3 +-
drivers/gpio/Kconfig | 2 +-
drivers/gpio/gpio-f7188x.c | 28 +--
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 7 +-
drivers/infiniband/sw/rxe/rxe_qp.c | 7 +-
drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 8 +
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 1 +
.../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 9 +-
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 209 ++++++++++++++++-----
drivers/net/phy/mscc/mscc.h | 1 +
drivers/net/phy/mscc/mscc_main.c | 54 +++---
drivers/net/wireless/intel/iwlwifi/fw/api/d3.h | 37 +++-
drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 35 +++-
drivers/net/wireless/realtek/rtw89/rtw8852c.c | 9 +-
drivers/platform/x86/amd/pmf/core.c | 32 +++-
drivers/vfio/vfio_iommu_type1.c | 5 +
include/linux/skbuff.h | 10 +
include/linux/skmsg.h | 3 +-
include/net/inet_sock.h | 4 +
include/net/ip.h | 5 +-
include/net/page_pool.h | 18 --
include/net/tcp.h | 10 +
include/net/tls.h | 1 +
include/uapi/linux/in.h | 2 +
net/bluetooth/hci_sock.c | 28 +++
net/core/page_pool.c | 34 +++-
net/core/skmsg.c | 81 ++++----
net/core/sock_map.c | 3 +-
net/ipv4/inet_connection_sock.c | 25 ++-
net/ipv4/inet_hashtables.c | 2 +-
net/ipv4/ip_sockglue.c | 30 ++-
net/ipv4/raw.c | 5 +-
net/ipv4/tcp.c | 11 +-
net/ipv4/tcp_bpf.c | 79 +++++++-
net/ipv4/udp.c | 9 +-
net/ipv6/raw.c | 3 +-
net/netfilter/nf_conntrack_netlink.c | 8 -
net/sctp/socket.c | 2 +-
net/tls/tls.h | 5 +
net/tls/tls_device.c | 22 +--
net/tls/tls_strp.c | 185 ++++++++++++++----
net/unix/af_unix.c | 7 +-
tools/include/uapi/linux/in.h | 1 +
tools/testing/selftests/bpf/Makefile | 2 +-
50 files changed, 881 insertions(+), 287 deletions(-)
From: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
When configuring a pin as an output pin with a value of logic 0, we
end up as having a value of logic 1 on the output pin. Setting a
logic 0 a second time (or more) after that will correctly output a
logic 0 on the output pin.
By default, all GPIO pins are configured as inputs. When we enter
sc16is7xx_gpio_direction_output() for the first time, we first set the
desired value in IOSTATE, and then we configure the pin as an output.
The datasheet states that writing to IOSTATE register will trigger a
transfer of the value to the I/O pin configured as output, so if the
pin is configured as an input, nothing will be transferred.
Therefore, set the direction first in IODIR, and then set the desired
value in IOSTATE.
This is what is done in NXP application note AN10587.
Fixes: dfeae619d781 ("serial: sc16is7xx")
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Reviewed-by: Lech Perczak <lech.perczak(a)camlingroup.com>
Tested-by: Lech Perczak <lech.perczak(a)camlingroup.com>
---
drivers/tty/serial/sc16is7xx.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index ad6b9d613b33..2fa09baf28e3 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -1340,9 +1340,18 @@ static int sc16is7xx_gpio_direction_output(struct gpio_chip *chip,
state |= BIT(offset);
else
state &= ~BIT(offset);
- sc16is7xx_port_write(port, SC16IS7XX_IOSTATE_REG, state);
+
+ /*
+ * If we write IOSTATE first, and then IODIR, the output value is not
+ * transferred to the corresponding I/O pin.
+ * The datasheet states that each register bit will be transferred to
+ * the corresponding I/O pin programmed as output when writing to
+ * IOSTATE. Therefore, configure direction first with IODIR, and then
+ * set value after with IOSTATE.
+ */
sc16is7xx_port_update(port, SC16IS7XX_IODIR_REG, BIT(offset),
BIT(offset));
+ sc16is7xx_port_write(port, SC16IS7XX_IOSTATE_REG, state);
return 0;
}
--
2.30.2
From: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Some variants in this series of UART controllers have GPIO pins that
are shared between GPIO and modem control lines.
The pin mux mode (GPIO or modem control lines) can be set for each
ports (channels) supported by the variant.
This adds a property to the device tree to set the GPIO pin mux to
modem control lines on selected ports if needed.
Cc: <stable(a)vger.kernel.org> # 6.1.x
Signed-off-by: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Acked-by: Conor Dooley <conor.dooley(a)microchip.com>
Reviewed-by: Lech Perczak <lech.perczak(a)camlingroup.com>
---
.../bindings/serial/nxp,sc16is7xx.txt | 46 +++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt b/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt
index 0fa8e3e43bf8..1a7e4bff0456 100644
--- a/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt
+++ b/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt
@@ -23,6 +23,9 @@ Optional properties:
1 = active low.
- irda-mode-ports: An array that lists the indices of the port that
should operate in IrDA mode.
+- nxp,modem-control-line-ports: An array that lists the indices of the port that
+ should have shared GPIO lines configured as
+ modem control lines.
Example:
sc16is750: sc16is750@51 {
@@ -35,6 +38,26 @@ Example:
#gpio-cells = <2>;
};
+ sc16is752: sc16is752@53 {
+ compatible = "nxp,sc16is752";
+ reg = <0x53>;
+ clocks = <&clk20m>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+ nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
+ gpio-controller; /* Port 0 as GPIOs */
+ #gpio-cells = <2>;
+ };
+
+ sc16is752: sc16is752@54 {
+ compatible = "nxp,sc16is752";
+ reg = <0x54>;
+ clocks = <&clk20m>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+ nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
+ };
+
* spi as bus
Required properties:
@@ -59,6 +82,9 @@ Optional properties:
1 = active low.
- irda-mode-ports: An array that lists the indices of the port that
should operate in IrDA mode.
+- nxp,modem-control-line-ports: An array that lists the indices of the port that
+ should have shared GPIO lines configured as
+ modem control lines.
Example:
sc16is750: sc16is750@0 {
@@ -70,3 +96,23 @@ Example:
gpio-controller;
#gpio-cells = <2>;
};
+
+ sc16is752: sc16is752@1 {
+ compatible = "nxp,sc16is752";
+ reg = <1>;
+ clocks = <&clk20m>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+ nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
+ gpio-controller; /* Port 0 as GPIOs */
+ #gpio-cells = <2>;
+ };
+
+ sc16is752: sc16is752@2 {
+ compatible = "nxp,sc16is752";
+ reg = <2>;
+ clocks = <&clk20m>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+ nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
+ };
--
2.30.2
From: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Bit SRESET (3) is cleared when a reset operation is completed. Having
the IOCONTROL register as non-volatile will always read SRESET as 1,
which is incorrect.
Also, if IOCONTROL register is not a volatile register, the upcoming
patch "serial: sc16is7xx: fix regression with GPIO configuration"
doesn't work when setting some shared GPIO lines as modem control
lines.
Therefore mark IOCONTROL register as a volatile register.
Cc: <stable(a)vger.kernel.org> # 6.1.x
Signed-off-by: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Reviewed-by: Lech Perczak <lech.perczak(a)camlingroup.com>
Tested-by: Lech Perczak <lech.perczak(a)camlingroup.com>
---
drivers/tty/serial/sc16is7xx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index faa51a58671f..0c903d44429c 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -488,6 +488,7 @@ static bool sc16is7xx_regmap_volatile(struct device *dev, unsigned int reg)
case SC16IS7XX_TXLVL_REG:
case SC16IS7XX_RXLVL_REG:
case SC16IS7XX_IOSTATE_REG:
+ case SC16IS7XX_IOCONTROL_REG:
return true;
default:
break;
--
2.30.2
From: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
The sc16is7xx_config_rs485() function is called only for the second
port (index 1, channel B), causing initialization problems for the
first port.
For the sc16is7xx driver, port->membase and port->mapbase are not set,
and their default values are 0. And we set port->iobase to the device
index. This means that when the first device is registered using the
uart_add_one_port() function, the following values will be in the port
structure:
port->membase = 0
port->mapbase = 0
port->iobase = 0
Therefore, the function uart_configure_port() in serial_core.c will
exit early because of the following check:
/*
* If there isn't a port here, don't do anything further.
*/
if (!port->iobase && !port->mapbase && !port->membase)
return;
Typically, I2C and SPI drivers do not set port->membase and
port->mapbase.
The max310x driver sets port->membase to ~0 (all ones). By
implementing the same change in this driver, uart_configure_port() is
now correctly executed for all ports.
Fixes: dfeae619d781 ("serial: sc16is7xx")
Cc: <stable(a)vger.kernel.org> # 6.1.x
Signed-off-by: Hugo Villeneuve <hvilleneuve(a)dimonoff.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen(a)linux.intel.com>
Reviewed-by: Lech Perczak <lech.perczak(a)camlingroup.com>
Tested-by: Lech Perczak <lech.perczak(a)camlingroup.com>
---
drivers/tty/serial/sc16is7xx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index abad091baeea..faa51a58671f 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -1436,6 +1436,7 @@ static int sc16is7xx_probe(struct device *dev,
s->p[i].port.fifosize = SC16IS7XX_FIFO_SIZE;
s->p[i].port.flags = UPF_FIXED_TYPE | UPF_LOW_LATENCY;
s->p[i].port.iobase = i;
+ s->p[i].port.membase = (void __iomem *)~0;
s->p[i].port.iotype = UPIO_PORT;
s->p[i].port.uartclk = freq;
s->p[i].port.rs485_config = sc16is7xx_config_rs485;
--
2.30.2