Skip to content

Commit a5ab9f2

Browse files
committed
Merge tag 'v6.18.9' into 6.18-main
This is the 6.18.9 stable release # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmmGD88ACgkQONu9yGCS # aT4Dzg/7B0reWNjECymqvB0pYJ41qx1ppf1xeZQ7xoCTgWHROqEX/bV3BiOQbeFE # yK2nt3zK5Eaq/1jOzLlSUi8qkGWz3QmplGbOsGoX0uv3mqtoBEzhWx7mvzF+1fg7 # a6l3lvqSfh3ZA8WMV+H7kD5wUrGauZH0Azud5RWraLy/9qS3KWlFbJ0iC5x6vl/m # 6c+rMYZmOoM5ciW9vDAn3iKebYzaS21uGglf6LAj0thIn1U/I+DwYt1o+aqySfyK # i1dZaM5AkD+IjNtAqw0e0240S2WoR/p7QdjBrGk9VWr/K0UrhalNvlCMRbRqczy4 # YObBUFH6Kl+ozNAK/ybSmLF4tA+dGSJILE6orm34Y1iZpwM99QzjY+SNljuCKjdn # ECrfgH9k7bXWlBQp8kUlqaTEZ6F3B97bRdHhnFzy20WY4J0jAjop/Ll7NfIC7S+/ # Epd1ldecD6nPDC2SNtXziMTT0xZa0CmG2U2f1YPwOl3p/qo+hL62TknjGwGV8ZZh # RNYaw2tKgPvsdycUGT4yDigKzlE6wG6tTA70dhl+m7/J4U17QEULeRlk6t+dQI/F # 5qtnOz+xrRuGKYqeaGGEeU7s2pPYv4fOscGZulmAfRqDeqfWllkO0ldNZ00V19gi # hXD/T1piXaBtOm+v4X6NlmL5HBv7PQxcOveHVl/zlngSlQM/Yts= # =hNgx # -----END PGP SIGNATURE----- # gpg: Signature made Fri Feb 6 16:59:11 2026 CET # gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E # gpg: Can't check signature: No public key
2 parents bc80e9e + adb851e commit a5ab9f2

File tree

133 files changed

+1283
-782
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+1283
-782
lines changed

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 18
4-
SUBLEVEL = 8
4+
SUBLEVEL = 9
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

@@ -1590,7 +1590,8 @@ MRPROPER_FILES += include/config include/generated \
15901590
certs/x509.genkey \
15911591
vmlinux-gdb.py \
15921592
rpmbuild \
1593-
rust/libmacros.so rust/libmacros.dylib
1593+
rust/libmacros.so rust/libmacros.dylib \
1594+
rust/libpin_init_internal.so rust/libpin_init_internal.dylib
15941595

15951596
# clean - Delete most, but leave enough to build external modules
15961597
#

arch/arm64/configs/defconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,6 @@ CONFIG_PINCTRL_LPASS_LPI=m
662662
CONFIG_PINCTRL_SC7280_LPASS_LPI=m
663663
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
664664
CONFIG_PINCTRL_SM8250_LPASS_LPI=m
665-
CONFIG_PINCTRL_SM8350_LPASS_LPI=m
666665
CONFIG_PINCTRL_SM8450_LPASS_LPI=m
667666
CONFIG_PINCTRL_SC8280XP_LPASS_LPI=m
668667
CONFIG_PINCTRL_SM8550_LPASS_LPI=m

arch/riscv/include/asm/compat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#ifndef __ASM_COMPAT_H
33
#define __ASM_COMPAT_H
44

5-
#define COMPAT_UTS_MACHINE "riscv\0\0"
5+
#define COMPAT_UTS_MACHINE "riscv32\0\0"
66

77
/*
88
* Architecture specific compatibility types

drivers/bluetooth/hci_ldisc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,8 @@ static int hci_uart_register_dev(struct hci_uart *hu)
685685
return err;
686686
}
687687

688+
set_bit(HCI_UART_PROTO_INIT, &hu->flags);
689+
688690
if (test_bit(HCI_UART_INIT_PENDING, &hu->hdev_flags))
689691
return 0;
690692

@@ -712,8 +714,6 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id)
712714

713715
hu->proto = p;
714716

715-
set_bit(HCI_UART_PROTO_INIT, &hu->flags);
716-
717717
err = hci_uart_register_dev(hu);
718718
if (err) {
719719
return err;

drivers/firewire/core-transaction.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,20 +134,14 @@ static void split_transaction_timeout_callback(struct timer_list *timer)
134134
}
135135
}
136136

137-
static void start_split_transaction_timeout(struct fw_transaction *t,
138-
struct fw_card *card)
137+
// card->transactions.lock should be acquired in advance for the linked list.
138+
static void start_split_transaction_timeout(struct fw_transaction *t, unsigned int delta)
139139
{
140-
unsigned long delta;
141-
142140
if (list_empty(&t->link) || WARN_ON(t->is_split_transaction))
143141
return;
144142

145143
t->is_split_transaction = true;
146144

147-
// NOTE: This can be without irqsave when we can guarantee that __fw_send_request() for
148-
// local destination never runs in any type of IRQ context.
149-
scoped_guard(spinlock_irqsave, &card->split_timeout.lock)
150-
delta = card->split_timeout.jiffies;
151145
mod_timer(&t->split_timeout_timer, jiffies + delta);
152146
}
153147

@@ -168,13 +162,20 @@ static void transmit_complete_callback(struct fw_packet *packet,
168162
break;
169163
case ACK_PENDING:
170164
{
165+
unsigned int delta;
166+
171167
// NOTE: This can be without irqsave when we can guarantee that __fw_send_request() for
172168
// local destination never runs in any type of IRQ context.
173169
scoped_guard(spinlock_irqsave, &card->split_timeout.lock) {
174170
t->split_timeout_cycle =
175171
compute_split_timeout_timestamp(card, packet->timestamp) & 0xffff;
172+
delta = card->split_timeout.jiffies;
176173
}
177-
start_split_transaction_timeout(t, card);
174+
175+
// NOTE: This can be without irqsave when we can guarantee that __fw_send_request() for
176+
// local destination never runs in any type of IRQ context.
177+
scoped_guard(spinlock_irqsave, &card->transactions.lock)
178+
start_split_transaction_timeout(t, delta);
178179
break;
179180
}
180181
case ACK_BUSY_X:

drivers/gpio/gpio-brcmstb.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,10 @@ static struct brcmstb_gpio_bank *brcmstb_gpio_hwirq_to_bank(
301301
struct brcmstb_gpio_priv *priv, irq_hw_number_t hwirq)
302302
{
303303
struct brcmstb_gpio_bank *bank;
304-
int i = 0;
305304

306-
/* banks are in descending order */
307-
list_for_each_entry_reverse(bank, &priv->bank_list, node) {
308-
i += bank->chip.gc.ngpio;
309-
if (hwirq < i)
305+
list_for_each_entry(bank, &priv->bank_list, node) {
306+
if (hwirq >= bank->chip.gc.offset &&
307+
hwirq < (bank->chip.gc.offset + bank->chip.gc.ngpio))
310308
return bank;
311309
}
312310
return NULL;

drivers/gpio/gpio-pca953x.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,8 @@ static void pca953x_irq_shutdown(struct irq_data *d)
911911
clear_bit(hwirq, chip->irq_trig_fall);
912912
clear_bit(hwirq, chip->irq_trig_level_low);
913913
clear_bit(hwirq, chip->irq_trig_level_high);
914+
915+
pca953x_irq_mask(d);
914916
}
915917

916918
static void pca953x_irq_print_chip(struct irq_data *data, struct seq_file *p)

drivers/gpio/gpio-rockchip.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <linux/of.h>
1919
#include <linux/of_address.h>
2020
#include <linux/of_irq.h>
21-
#include <linux/pinctrl/consumer.h>
2221
#include <linux/pinctrl/pinconf-generic.h>
2322
#include <linux/platform_device.h>
2423
#include <linux/regmap.h>
@@ -164,12 +163,6 @@ static int rockchip_gpio_set_direction(struct gpio_chip *chip,
164163
unsigned long flags;
165164
u32 data = input ? 0 : 1;
166165

167-
168-
if (input)
169-
pinctrl_gpio_direction_input(chip, offset);
170-
else
171-
pinctrl_gpio_direction_output(chip, offset);
172-
173166
raw_spin_lock_irqsave(&bank->slock, flags);
174167
rockchip_gpio_writel_bit(bank, offset, data, bank->gpio_regs->port_ddr);
175168
raw_spin_unlock_irqrestore(&bank->slock, flags);
@@ -593,7 +586,6 @@ static int rockchip_gpiolib_register(struct rockchip_pin_bank *bank)
593586
gc->ngpio = bank->nr_pins;
594587
gc->label = bank->name;
595588
gc->parent = bank->dev;
596-
gc->can_sleep = true;
597589

598590
ret = gpiochip_add_data(gc, bank);
599591
if (ret) {

drivers/gpio/gpio-virtuser.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,10 +1684,10 @@ static void gpio_virtuser_device_config_group_release(struct config_item *item)
16841684
{
16851685
struct gpio_virtuser_device *dev = to_gpio_virtuser_device(item);
16861686

1687-
guard(mutex)(&dev->lock);
1688-
1689-
if (gpio_virtuser_device_is_live(dev))
1690-
gpio_virtuser_device_deactivate(dev);
1687+
scoped_guard(mutex, &dev->lock) {
1688+
if (gpio_virtuser_device_is_live(dev))
1689+
gpio_virtuser_device_deactivate(dev);
1690+
}
16911691

16921692
mutex_destroy(&dev->lock);
16931693
ida_free(&gpio_virtuser_ida, dev->id);

drivers/gpio/gpiolib-acpi-core.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,6 +1104,7 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
11041104
unsigned int pin = agpio->pin_table[i];
11051105
struct acpi_gpio_connection *conn;
11061106
struct gpio_desc *desc;
1107+
u16 word, shift;
11071108
bool found;
11081109

11091110
mutex_lock(&achip->conn_lock);
@@ -1158,10 +1159,22 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
11581159

11591160
mutex_unlock(&achip->conn_lock);
11601161

1161-
if (function == ACPI_WRITE)
1162-
gpiod_set_raw_value_cansleep(desc, !!(*value & BIT(i)));
1163-
else
1164-
*value |= (u64)gpiod_get_raw_value_cansleep(desc) << i;
1162+
/*
1163+
* For the cases when OperationRegion() consists of more than
1164+
* 64 bits calculate the word and bit shift to use that one to
1165+
* access the value.
1166+
*/
1167+
word = i / 64;
1168+
shift = i % 64;
1169+
1170+
if (function == ACPI_WRITE) {
1171+
gpiod_set_raw_value_cansleep(desc, value[word] & BIT_ULL(shift));
1172+
} else {
1173+
if (gpiod_get_raw_value_cansleep(desc))
1174+
value[word] |= BIT_ULL(shift);
1175+
else
1176+
value[word] &= ~BIT_ULL(shift);
1177+
}
11651178
}
11661179

11671180
out:

0 commit comments

Comments
 (0)