summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Vivi <rodrigo.vivi@intel.com>2025-09-22 08:55:39 -0400
committerRodrigo Vivi <rodrigo.vivi@intel.com>2025-09-22 08:55:39 -0400
commitad268da34c2fc9b90a9498385d16a72f4b3e836f (patch)
treeb906d4728446c5bbdf092b9cc7505a726c1df0fb
parentdcd6d0597830b4deecf8d1b104e923bf4452c693 (diff)
parente9b01b51c8625afc2f18bf3a91db2b8f2c68a751 (diff)
Merge remote-tracking branch 'drm-intel/topic/core-for-CI' into drm-tip
-rw-r--r--drivers/ata/libata-core.c16
-rw-r--r--drivers/net/phy/phy.c7
-rw-r--r--drivers/pci/msi/msi.c4
-rw-r--r--drivers/thermal/intel/therm_throt.c8
-rw-r--r--drivers/thunderbolt/Kconfig18
-rw-r--r--drivers/thunderbolt/tb.c2
-rw-r--r--drivers/thunderbolt/tb.h9
-rw-r--r--drivers/thunderbolt/tunnel.c8
-rw-r--r--drivers/thunderbolt/usb4.c2
-rw-r--r--include/linux/lockdep_types.h4
-rw-r--r--kernel/hung_task.c2
-rw-r--r--kernel/locking/lockdep.c11
-rw-r--r--kernel/panic.c15
-rw-r--r--kernel/watchdog.c4
-rw-r--r--lib/Kconfig.debug10
-rw-r--r--mm/slub.c2
-rw-r--r--net/sched/sch_generic.c7
17 files changed, 89 insertions, 40 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index ff53f5f029b4..8218b1f5c75b 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2210,7 +2210,7 @@ static bool ata_identify_page_supported(struct ata_device *dev, u8 page)
* for drives which implement this ATA level or above.
*/
if (ata_id_major_version(dev->id) >= 10)
- ata_dev_warn(dev,
+ ata_dev_notice(dev,
"ATA Identify Device Log not supported\n");
dev->quirks |= ATA_QUIRK_NO_ID_DEV_LOG;
return false;
@@ -2281,7 +2281,7 @@ static void ata_dev_config_ncq_send_recv(struct ata_device *dev)
unsigned int err_mask;
if (!ata_log_supported(dev, ATA_LOG_NCQ_SEND_RECV)) {
- ata_dev_warn(dev, "NCQ Send/Recv Log not supported\n");
+ ata_dev_notice(dev, "NCQ Send/Recv Log not supported\n");
return;
}
err_mask = ata_read_log_page(dev, ATA_LOG_NCQ_SEND_RECV,
@@ -2305,8 +2305,8 @@ static void ata_dev_config_ncq_non_data(struct ata_device *dev)
unsigned int err_mask;
if (!ata_log_supported(dev, ATA_LOG_NCQ_NON_DATA)) {
- ata_dev_warn(dev,
- "NCQ Non-Data Log not supported\n");
+ ata_dev_notice(dev,
+ "NCQ Non-Data Log not supported\n");
return;
}
err_mask = ata_read_log_page(dev, ATA_LOG_NCQ_NON_DATA,
@@ -2997,14 +2997,14 @@ int ata_dev_configure(struct ata_device *dev)
if (ata_id_is_cfa(id)) {
/* CPRM may make this media unusable */
if (id[ATA_ID_CFA_KEY_MGMT] & 1)
- ata_dev_warn(dev,
+ ata_dev_notice(dev,
"supports DRM functions and may not be fully accessible\n");
snprintf(revbuf, 7, "CFA");
} else {
snprintf(revbuf, 7, "ATA-%d", ata_id_major_version(id));
/* Warn the user if the device has TPM extensions */
if (ata_id_has_tpm(id))
- ata_dev_warn(dev,
+ ata_dev_notice(dev,
"supports DRM functions and may not be fully accessible\n");
}
@@ -3161,8 +3161,8 @@ int ata_dev_configure(struct ata_device *dev)
}
if ((dev->quirks & ATA_QUIRK_FIRMWARE_WARN) && print_info) {
- ata_dev_warn(dev, "WARNING: device requires firmware update to be fully functional\n");
- ata_dev_warn(dev, " contact the vendor or visit http://ata.wiki.kernel.org\n");
+ ata_dev_notice(dev, "WARNING: device requires firmware update to be fully functional\n");
+ ata_dev_notice(dev, " contact the vendor or visit http://ata.wiki.kernel.org\n");
}
return 0;
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index c02da57a4da5..764bcb0212fa 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1357,7 +1357,7 @@ static void phy_error_precise(struct phy_device *phydev,
*/
void phy_error(struct phy_device *phydev)
{
- WARN_ON(1);
+ pr_notice_once("%s\n", __func__);
phy_process_error(phydev);
}
EXPORT_SYMBOL(phy_error);
@@ -1622,11 +1622,8 @@ void phy_stop(struct phy_device *phydev)
enum phy_state old_state;
if (!phy_is_started(phydev) && phydev->state != PHY_DOWN &&
- phydev->state != PHY_ERROR) {
- WARN(1, "called from state %s\n",
- phy_state_to_str(phydev->state));
+ phydev->state != PHY_ERROR)
return;
- }
mutex_lock(&phydev->lock);
old_state = phydev->state;
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 34d664139f48..0030f9c89f9c 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -426,8 +426,10 @@ int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
if (maxvec < minvec)
return -ERANGE;
- if (WARN_ON_ONCE(dev->msi_enabled))
+ if (dev->msi_enabled) {
+ pci_info(dev, "can't enable MSI, already enabled\n");
return -EINVAL;
+ }
/* Test for the availability of MSI support */
if (!pci_msi_domain_supports(dev, 0, ALLOW_LEGACY))
diff --git a/drivers/thermal/intel/therm_throt.c b/drivers/thermal/intel/therm_throt.c
index debc94e2dc16..94f393d60f9e 100644
--- a/drivers/thermal/intel/therm_throt.c
+++ b/drivers/thermal/intel/therm_throt.c
@@ -345,10 +345,10 @@ static void __maybe_unused throttle_active_work(struct work_struct *work)
avg /= ARRAY_SIZE(state->temp_samples);
if (state->average > avg) {
- pr_warn("CPU%d: %s temperature is above threshold, cpu clock is throttled (total events = %lu)\n",
- this_cpu,
- state->level == CORE_LEVEL ? "Core" : "Package",
- state->count);
+ pr_notice("CPU%d: %s temperature is above threshold, cpu clock is throttled (total events = %lu)\n",
+ this_cpu,
+ state->level == CORE_LEVEL ? "Core" : "Package",
+ state->count);
state->rate_control_active = true;
}
diff --git a/drivers/thunderbolt/Kconfig b/drivers/thunderbolt/Kconfig
index 0abdb69ee9f4..8bf4ecf7f76e 100644
--- a/drivers/thunderbolt/Kconfig
+++ b/drivers/thunderbolt/Kconfig
@@ -18,6 +18,24 @@ menuconfig USB4
if USB4
+config USB4_PCIE_TUNNELING
+ bool "Allow PCI Express tunneling over USB4 fabric"
+ depends on PCI
+ default y
+ help
+ USB4 and Thunderbolt devices typically include PCIe switch
+ with a number of PCIe endpoints such as USB host controllers,
+ GPUs and network adapters. These are made available to the
+ host system through PCIe tunneling. These can use DMA and
+ therefore have access to the host memory which is typically
+ guarded by an IOMMU. This option allows disabling PCIe
+ tunneling completely.
+
+ For devices to be usable it is recommended to say Y here.
+
+ Note this only works with systems that use Software Based
+ Connection Manager (this is most USB4 hosts).
+
config USB4_DEBUGFS_WRITE
bool "Enable write by debugfs to configuration spaces (DANGEROUS)"
help
diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c
index c14ab1fbeeaf..0514a673471a 100644
--- a/drivers/thunderbolt/tb.c
+++ b/drivers/thunderbolt/tb.c
@@ -3364,7 +3364,7 @@ struct tb *tb_probe(struct tb_nhi *nhi)
if (!tb)
return NULL;
- if (tb_acpi_may_tunnel_pcie())
+ if (tb_may_tunnel_pcie())
tb->security_level = TB_SECURITY_USER;
else
tb->security_level = TB_SECURITY_NOPCIE;
diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h
index f503bad86413..7d5c673412f4 100644
--- a/drivers/thunderbolt/tb.h
+++ b/drivers/thunderbolt/tb.h
@@ -1518,6 +1518,15 @@ static inline int tb_acpi_power_on_retimers(struct tb_port *port) { return 0; }
static inline int tb_acpi_power_off_retimers(struct tb_port *port) { return 0; }
#endif
+static inline bool tb_may_tunnel_pcie(void)
+{
+#ifdef CONFIG_USB4_PCIE_TUNNELING
+ return tb_acpi_may_tunnel_pcie();
+#else
+ return false;
+#endif
+}
+
#ifdef CONFIG_DEBUG_FS
void tb_debugfs_init(void);
void tb_debugfs_exit(void);
diff --git a/drivers/thunderbolt/tunnel.c b/drivers/thunderbolt/tunnel.c
index d52efe3f658c..6b85da2eea60 100644
--- a/drivers/thunderbolt/tunnel.c
+++ b/drivers/thunderbolt/tunnel.c
@@ -130,7 +130,7 @@ static unsigned int tb_available_credits(const struct tb_port *port,
size_t ndp;
usb3 = tb_acpi_may_tunnel_usb3() ? sw->max_usb3_credits : 0;
- pcie = tb_acpi_may_tunnel_pcie() ? sw->max_pcie_credits : 0;
+ pcie = tb_may_tunnel_pcie() ? sw->max_pcie_credits : 0;
if (tb_acpi_is_xdomain_allowed()) {
spare = min_not_zero(sw->max_dma_credits, dma_credits);
@@ -553,7 +553,7 @@ bool tb_tunnel_reserved_pci(struct tb_port *port, int *reserved_up,
if (WARN_ON_ONCE(!port->remote))
return false;
- if (!tb_acpi_may_tunnel_pcie())
+ if (!tb_may_tunnel_pcie())
return false;
if (tb_port_get_link_generation(port) < 4)
@@ -1720,7 +1720,7 @@ static unsigned int tb_dma_available_credits(const struct tb_port *port)
int credits;
credits = tb_available_credits(port, NULL);
- if (tb_acpi_may_tunnel_pcie())
+ if (tb_may_tunnel_pcie())
credits -= sw->max_pcie_credits;
credits -= port->dma_credits;
@@ -2031,7 +2031,7 @@ static int tb_usb3_consumed_bandwidth(struct tb_tunnel *tunnel,
int *consumed_up, int *consumed_down)
{
struct tb_port *port = tb_upstream_port(tunnel->dst_port->sw);
- int pcie_weight = tb_acpi_may_tunnel_pcie() ? TB_PCI_WEIGHT : 0;
+ int pcie_weight = tb_may_tunnel_pcie() ? TB_PCI_WEIGHT : 0;
/*
* PCIe tunneling, if enabled, affects the USB3 bandwidth so
diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c
index fdae76c8f728..b3d22873e837 100644
--- a/drivers/thunderbolt/usb4.c
+++ b/drivers/thunderbolt/usb4.c
@@ -276,7 +276,7 @@ int usb4_switch_setup(struct tb_switch *sw)
* Only enable PCIe tunneling if the parent router supports it
* and it is not disabled.
*/
- if (tb_acpi_may_tunnel_pcie() &&
+ if (tb_may_tunnel_pcie() &&
tb_switch_find_port(parent, TB_TYPE_PCIE_DOWN)) {
val |= ROUTER_CS_5_PTO;
/*
diff --git a/include/linux/lockdep_types.h b/include/linux/lockdep_types.h
index eae115a26488..fd524e8d5061 100644
--- a/include/linux/lockdep_types.h
+++ b/include/linux/lockdep_types.h
@@ -252,8 +252,8 @@ struct held_lock {
unsigned int check:1; /* see lock_acquire() comment */
unsigned int hardirqs_off:1;
unsigned int sync:1;
- unsigned int references:11; /* 32 bits */
- unsigned int pin_count;
+ unsigned int pin_count:11; /* 32 bits */
+ unsigned int references;
};
#else /* !CONFIG_LOCKDEP */
diff --git a/kernel/hung_task.c b/kernel/hung_task.c
index 8708a1205f82..2e7c4eea6def 100644
--- a/kernel/hung_task.c
+++ b/kernel/hung_task.c
@@ -223,6 +223,8 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
console_verbose();
hung_task_show_lock = true;
hung_task_call_panic = true;
+ } else {
+ add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
}
/*
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 2d4c5bab5af8..b9edc0339273 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -5623,11 +5623,14 @@ static struct pin_cookie __lock_pin_lock(struct lockdep_map *lock)
if (match_held_lock(hlock, lock)) {
/*
- * Grab 16bits of randomness; this is sufficient to not
- * be guessable and still allows some pin nesting in
- * our u32 pin_count.
+ * Grab 6bits of randomness; this is barely sufficient
+ * to not be guessable and still allows some 32 levels
+ * of pin nesting in our u11 pin_count.
*/
- cookie.val = 1 + (sched_clock() & 0xffff);
+ cookie.val = 1 + (sched_clock() & 0x3f);
+ if (DEBUG_LOCKS_WARN_ON(hlock->pin_count + cookie.val >= 1 << 11))
+ return NIL_COOKIE;
+
hlock->pin_count += cookie.val;
return cookie;
}
diff --git a/kernel/panic.c b/kernel/panic.c
index 72fcbb5a071b..7e1cd220b2cf 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -422,13 +422,6 @@ void vpanic(const char *fmt, va_list args)
buf[len - 1] = '\0';
pr_emerg("Kernel panic - not syncing: %s\n", buf);
-#ifdef CONFIG_DEBUG_BUGVERBOSE
- /*
- * Avoid nested stack-dumping if a panic occurs during oops processing
- */
- if (!test_taint(TAINT_DIE) && oops_in_progress <= 1)
- dump_stack();
-#endif
/*
* If kgdb is enabled, give it a chance to run before we stop all
@@ -460,6 +453,14 @@ void vpanic(const char *fmt, va_list args)
sys_info(panic_print);
+#ifdef CONFIG_DEBUG_BUGVERBOSE
+ /*
+ * Avoid nested stack-dumping if a panic occurs during oops processing
+ */
+ if (!test_taint(TAINT_DIE) && oops_in_progress <= 1)
+ dump_stack();
+#endif
+
kmsg_dump_desc(KMSG_DUMP_PANIC, buf);
/*
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 80b56c002c7f..beda49b200bb 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -242,6 +242,8 @@ void watchdog_hardlockup_check(unsigned int cpu, struct pt_regs *regs)
if (hardlockup_panic)
nmi_panic(regs, "Hard LOCKUP");
+ else
+ add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
per_cpu(watchdog_hardlockup_warned, cpu) = true;
} else {
@@ -830,6 +832,8 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
add_taint(TAINT_SOFTLOCKUP, LOCKDEP_STILL_OK);
if (softlockup_panic)
panic("softlockup: hung tasks");
+ else
+ add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
}
return HRTIMER_RESTART;
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index dc0e0c6ed075..9c189668e6f6 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1420,12 +1420,20 @@ config PROVE_LOCKING
config PROVE_RAW_LOCK_NESTING
bool "Enable raw_spinlock - spinlock nesting checks" if !ARCH_SUPPORTS_RT
depends on PROVE_LOCKING
- default y if ARCH_SUPPORTS_RT
+ default n
help
Enable the raw_spinlock vs. spinlock nesting checks which ensure
that the lock nesting rules for PREEMPT_RT enabled kernels are
not violated.
+ NOTE: There are known nesting problems. So if you enable this
+ option expect lockdep splats until these problems have been fully
+ addressed which is work in progress. This config switch allows to
+ identify and analyze these problems. It will be removed and the
+ check permanently enabled once the main issues have been fixed.
+
+ If unsure, select N.
+
config LOCK_STAT
bool "Lock usage statistics"
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
diff --git a/mm/slub.c b/mm/slub.c
index d257141896c9..dd8617df1bc6 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -946,7 +946,7 @@ static void print_section(char *level, char *text, u8 *addr,
unsigned int length)
{
metadata_access_enable();
- print_hex_dump(level, text, DUMP_PREFIX_ADDRESS,
+ print_hex_dump(level, text, DUMP_PREFIX_OFFSET,
16, 1, kasan_reset_tag((void *)addr), length, 1);
metadata_access_disable();
}
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 1e008a228ebd..e44e449127d2 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -531,7 +531,12 @@ static void dev_watchdog(struct timer_list *t)
oldest_start = trans_start;
}
- if (unlikely(timedout_ms)) {
+ /* The noise is pissing off our CI and upstream doesn't
+ * move on the bug report:
+ *
+ * https://bugzilla.kernel.org/show_bug.cgi?id=196399
+ */
+ if (unlikely(timedout_ms) && 0) {
trace_net_dev_xmit_timeout(dev, i);
netdev_crit(dev, "NETDEV WATCHDOG: CPU: %d: transmit queue %u timed out %u ms\n",
raw_smp_processor_id(),