From nobody Wed Dec 17 21:26:41 2025 Received: from mout.web.de (mout.web.de [212.227.15.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E975D79EA; Mon, 6 Oct 2025 12:09:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752600; cv=none; b=NFM3AShYkkK3OipBiP/WJRqyoh2r42X81mQkApHK3NFYCoxAWPXVi1nIVGuK4ftMoH3IGNFKprjlgWuyQ0mjkMGJ7fE7oZMdc6XmpbkGYCkTwP7+WlhphGV3q52V0radnXFIzLL3dXZFap1DojRVf1TbCeoImgNPr2R/rf8Y0Vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752600; c=relaxed/simple; bh=wLOwkkcujKvsrluRZvFTAl4mKaHbK7SU15aPs2NgEnM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YR0posZtEfcqXbe28daGYK/69FjYMYB2rH6Yb9ikvZbwziBZqb3vt/mu9Wksg0xhyrsmTeJrtiyxREXKM4TZ94lrrIZ1kUE05N4KHHRmv8Bvhi8RJYGIqmeFNgEEQtaxI6deQiTkgHCpRLNgzJj4TTjgqlYS456HFK+Z5GsXLMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b=wxWeq7FR; arc=none smtp.client-ip=212.227.15.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b="wxWeq7FR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1759752589; x=1760357389; i=spasswolf@web.de; bh=2QGmngSUhQQcgbs2ImJWBmwZoPwLWpDcxEjwTdJk3AY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=wxWeq7FRheFybnD6c/BYrw4Eckm68aKYsHeWuG8jeQev/LG3f3a092DVXGaaxk6u fWAna1sJuwNVx+9nn0n+gv/rzQqi+rqwg6Qv+w6H8vynFXQsu3AIBk7t53I0tfD3F kNLm+V6FI1jVhiG+m5LwBP6q6u2zKBAfU/NXousFTTwTwdYQAciSDXXIPwQrLrjFo ZY6mZ9VxFkxtmQUNQbJmiZqhIYhqOW8LYowJlZ3PVmnV75T46tYbKOBkU6U/f+Ai0 r2CJnv5BZnEXneTEaGkIiuGD86C2vxVFwxdndmwz5j0slOKAVFbhVidW/XCt7q7K4 2oUTQ8uaVQV1257PgA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from localhost.localdomain ([95.223.134.88]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1M1JF8-1v7Ozf1BzW-004GA0; Mon, 06 Oct 2025 14:09:49 +0200 From: Bert Karwatzki To: linux-kernel@vger.kernel.org Cc: Bert Karwatzki , linux-next@vger.kernel.org, linux-stable@vger.kernel.org, regressions@lists.linux.dev, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, Mario Limonciello , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Rafael J . Wysocki" Subject: [REGRESSION 01/04] Crash during resume of pcie bridge Date: Mon, 6 Oct 2025 14:09:40 +0200 Message-ID: <20251006120944.7880-2-spasswolf@web.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251006120944.7880-1-spasswolf@web.de> References: <20251006120944.7880-1-spasswolf@web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:w9/gdy+hqZzuZ1j5hO58pdyAsgTwnTtPrCX4+vJAo6HeU/LVAbF 6sqJVGaOPeF685Q1M7jOM6MxtXJia2eYZjT380uTIhyXy9gLrLwSuX2dKtWoYZ8YNMOz4v7 hURTyr4j3rJcZ7QSiG8P6v9VpONjdHqn6mK8OqhkUXbP+4J6ZiSgpLLLRoLmaJZrCWYthUg mvXWHrV0VBBArJ9Z+pFPQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Kh11+aVAebw=;TJ5QRilpmoL9yzvq7gIZM3hj/6v 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 4HTrInZcQmaI/LUcjBDPKFaPEqg/QnIXAIsdcw Content-Type: text/plain; charset="utf-8" To further debug the issue I inserted calls to dev_info() and printk() into the amdgpu suspend/resume code, and the acpi and pcie hotplug resume code. This is the the patch used in kernel version=20 6.17.0-rc6-next-20250917-gpudebug-00021-gab98d880e3c8 (see list in previous= mail) (on top of next-20250917) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index a984ccd4a2a0..bc365c0dbe2f 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -514,46 +514,60 @@ static void acpi_bus_notify(acpi_handle handle, u32 t= ype, void *data) =20 switch (type) { case ACPI_NOTIFY_BUS_CHECK: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_CHECK\n", __func__, __LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_BUS_CHECK event\n"); break; =20 case ACPI_NOTIFY_DEVICE_CHECK: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK\n", __func__, __LINE__= ); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK event\n"); break; =20 case ACPI_NOTIFY_DEVICE_WAKE: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_WAKE\n", __func__, __LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_WAKE event\n"); return; =20 case ACPI_NOTIFY_EJECT_REQUEST: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_EJECT_REQUEST\n", __func__, __LINE_= _); acpi_handle_debug(handle, "ACPI_NOTIFY_EJECT_REQUEST event\n"); break; =20 case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK_LIGHT\n", __func__, __= LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK_LIGHT event\n"); /* TBD: Exactly what does 'light' mean? */ return; =20 case ACPI_NOTIFY_FREQUENCY_MISMATCH: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_FREQUENCY_MISMATCH\n", __func__, __= LINE__); acpi_handle_err(handle, "Device cannot be configured due " "to a frequency mismatch\n"); return; =20 case ACPI_NOTIFY_BUS_MODE_MISMATCH: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_MODE_MISMATCH\n", __func__, __L= INE__); acpi_handle_err(handle, "Device cannot be configured due " "to a bus mode mismatch\n"); return; =20 case ACPI_NOTIFY_POWER_FAULT: + printk(KERN_INFO "%s %d: ACPI_NOTIFY_POWER_FAULT\n", __func__, __LINE__); acpi_handle_err(handle, "Device has suffered a power fault\n"); return; =20 default: + printk(KERN_INFO "%s %d: acpi unknown event type\n", __func__, __LINE__); acpi_handle_debug(handle, "Unknown event type 0x%x\n", type); return; } =20 adev =3D acpi_get_acpi_dev(handle); + if (adev) + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); + else + printk(KERN_INFO "%s %d: adev =3D NULL\n", __func__, __LINE__); + =09 =20 if (adev && ACPI_SUCCESS(acpi_hotplug_schedule(adev, type))) return; diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index 4e0583274b8f..9a7dc432b50d 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c @@ -539,6 +539,7 @@ static void acpi_pm_notify_handler(acpi_handle handle, = u32 val, void *not_used) if (!adev) return; =20 + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); mutex_lock(&acpi_pm_notifier_lock); =20 if (adev->wakeup.flags.notifier_present) { diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 5ff343096ece..0f6a16856119 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@ -1167,6 +1167,7 @@ void acpi_os_wait_events_complete(void) * Make sure the GPE handler or the fixed event handler is not used * on another CPU after removal. */ + printk(KERN_INFO "%s %d\n", __func__, __LINE__); if (acpi_sci_irq_valid()) synchronize_hardirq(acpi_sci_irq); flush_workqueue(kacpid_wq); @@ -1184,6 +1185,7 @@ static void acpi_hotplug_work_fn(struct work_struct *= work) { struct acpi_hp_work *hpw =3D container_of(work, struct acpi_hp_work, work= ); =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); acpi_os_wait_events_complete(); acpi_device_hotplug(hpw->adev, hpw->src); kfree(hpw); @@ -1192,6 +1194,7 @@ static void acpi_hotplug_work_fn(struct work_struct *= work) acpi_status acpi_hotplug_schedule(struct acpi_device *adev, u32 src) { struct acpi_hp_work *hpw; + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 acpi_handle_debug(adev->handle, "Scheduling hotplug event %u for deferred handling\n", diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 065abe56f440..d53be7e0388d 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -251,6 +251,7 @@ static int acpi_scan_check_and_detach(struct acpi_devic= e *adev, void *p) { struct acpi_scan_handler *handler =3D adev->handler; uintptr_t flags =3D (uintptr_t)p; + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 acpi_dev_for_each_child_reverse(adev, acpi_scan_check_and_detach, p); =20 @@ -314,6 +315,7 @@ static void acpi_scan_check_subtree(struct acpi_device = *adev) { uintptr_t flags =3D ACPI_SCAN_CHECK_FLAG_STATUS; =20 + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); acpi_scan_check_and_detach(adev, (void *)flags); } =20 @@ -369,6 +371,7 @@ static int acpi_scan_rescan_bus(struct acpi_device *ade= v) { struct acpi_scan_handler *handler =3D adev->handler; int ret; + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 if (handler && handler->hotplug.scan_dependent) ret =3D handler->hotplug.scan_dependent(adev); @@ -385,6 +388,7 @@ static int acpi_scan_device_check(struct acpi_device *a= dev) { struct acpi_device *parent; =20 + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); acpi_scan_check_subtree(adev); =20 if (!acpi_device_is_present(adev)) @@ -412,19 +416,24 @@ static int acpi_scan_device_check(struct acpi_device = *adev) static int acpi_scan_bus_check(struct acpi_device *adev) { acpi_scan_check_subtree(adev); + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 return acpi_scan_rescan_bus(adev); } =20 static int acpi_generic_hotplug_event(struct acpi_device *adev, u32 type) { + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); switch (type) { case ACPI_NOTIFY_BUS_CHECK: + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); return acpi_scan_bus_check(adev); case ACPI_NOTIFY_DEVICE_CHECK: + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); return acpi_scan_device_check(adev); case ACPI_NOTIFY_EJECT_REQUEST: case ACPI_OST_EC_OSPM_EJECT: + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); if (adev->handler && !adev->handler->hotplug.enabled) { dev_info(&adev->dev, "Eject disabled\n"); return -EPERM; @@ -441,6 +450,7 @@ void acpi_device_hotplug(struct acpi_device *adev, u32 = src) u32 ost_code =3D ACPI_OST_SC_NON_SPECIFIC_FAILURE; int error =3D -ENODEV; =20 + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); lock_device_hotplug(); mutex_lock(&acpi_scan_lock); =20 @@ -466,9 +476,10 @@ void acpi_device_hotplug(struct acpi_device *adev, u32= src) * There may be additional notify handlers for device objects * without the .event() callback, so ignore them here. */ - if (notify) + if (notify) { + dev_info(&adev->dev, "%s %d: calling notify =3D %px\n", __func__, __LIN= E__, (void *) notify); error =3D notify(adev, src); - else + } else goto out; } switch (error) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd= /amdgpu/amdgpu_acpi.c index 6c62e27b9800..4f00e15e7759 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c @@ -168,6 +168,7 @@ static union acpi_object *amdgpu_atif_call(struct amdgp= u_atif *atif, atif_arg_elements[1].integer.value =3D 0; } =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); status =3D acpi_evaluate_object(atif->handle, NULL, &atif_arg, &buffer); obj =3D (union acpi_object *)buffer.pointer; @@ -559,6 +560,7 @@ static union acpi_object *amdgpu_atcs_call(struct amdgp= u_atcs *atcs, atcs_arg_elements[1].integer.value =3D 0; } =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); status =3D acpi_evaluate_object(atcs->handle, NULL, &atcs_arg, &buffer); =20 /* Fail only if calling the method fails and ATIF is supported */ @@ -608,6 +610,7 @@ static int amdgpu_atcs_verify_interface(struct amdgpu_a= tcs *atcs) size_t size; int err =3D 0; =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); info =3D amdgpu_atcs_call(atcs, ATCS_FUNCTION_VERIFY_INTERFACE, NULL); if (!info) return -EIO; @@ -682,6 +685,7 @@ int amdgpu_acpi_pcie_notify_device_ready(struct amdgpu_= device *adev) if (!atcs->functions.pcie_dev_rdy) return -EINVAL; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); info =3D amdgpu_atcs_call(atcs, ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICAT= ION, NULL); if (!info) return -EIO; @@ -733,6 +737,7 @@ int amdgpu_acpi_pcie_performance_request(struct amdgpu_= device *adev, params.pointer =3D &atcs_input; =20 while (retry--) { + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); info =3D amdgpu_atcs_call(atcs, ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST, = ¶ms); if (!info) return -EIO; @@ -798,6 +803,7 @@ int amdgpu_acpi_power_shift_control(struct amdgpu_devic= e *adev, params.length =3D sizeof(struct atcs_pwr_shift_input); params.pointer =3D &atcs_input; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); info =3D amdgpu_atcs_call(atcs, ATCS_FUNCTION_POWER_SHIFT_CONTROL, ¶m= s); if (!info) { DRM_ERROR("ATCS PSC update failed\n"); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c b/drivers/gpu= /drm/amd/amdgpu/amdgpu_atpx_handler.c index 3893e6fc2f03..ed3063f09007 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c @@ -123,6 +123,7 @@ static union acpi_object *amdgpu_atpx_call(acpi_handle = handle, int function, atpx_arg_elements[1].integer.value =3D 0; } =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); status =3D acpi_evaluate_object(handle, NULL, &atpx_arg, &buffer); =20 /* Fail only if calling the method fails and ATPX is supported */ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c b/drivers/gpu/drm/amd= /amdgpu/amdgpu_bios.c index 00e96419fcda..542d039cfd42 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c @@ -272,6 +272,7 @@ static int amdgpu_atrm_call(acpi_handle atrm_handle, ui= nt8_t *bios, atrm_arg_elements[1].type =3D ACPI_TYPE_INTEGER; atrm_arg_elements[1].integer.value =3D len; =20 + printk(KERN_INFO "%s %d\n", __func__, __LINE__); status =3D acpi_evaluate_object(atrm_handle, NULL, &atrm_arg, &buffer); if (ACPI_FAILURE(status)) { DRM_ERROR("failed to evaluate ATRM got %s\n", acpi_format_exception(stat= us)); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_device.c index 0fdfde3dcb9f..bab504d1d24d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -5194,6 +5194,7 @@ int amdgpu_device_suspend(struct drm_device *dev, boo= l notify_clients) struct amdgpu_device *adev =3D drm_to_adev(dev); int r =3D 0; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); if (dev->switch_power_state =3D=3D DRM_SWITCH_POWER_OFF) return 0; =20 @@ -5208,6 +5209,7 @@ int amdgpu_device_suspend(struct drm_device *dev, boo= l notify_clients) return r; } =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); if (amdgpu_acpi_smart_shift_update(adev, AMDGPU_SS_DEV_D3)) dev_warn(adev->dev, "smart shift update failed\n"); =20 @@ -5286,6 +5288,7 @@ int amdgpu_device_resume(struct drm_device *dev, bool= notify_clients) struct amdgpu_device *adev =3D drm_to_adev(dev); int r =3D 0; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); if (amdgpu_sriov_vf(adev)) { r =3D amdgpu_virt_request_full_gpu(adev, true); if (r) @@ -5379,6 +5382,7 @@ int amdgpu_device_resume(struct drm_device *dev, bool= notify_clients) amdgpu_vram_mgr_clear_reset_blocks(adev); adev->in_suspend =3D false; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); if (amdgpu_acpi_smart_shift_update(adev, AMDGPU_SS_DEV_D0)) dev_warn(adev->dev, "smart shift update failed\n"); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index ece251cbe8c3..165bd79fce82 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2795,6 +2795,7 @@ static int amdgpu_pmops_runtime_suspend(struct device= *dev) struct drm_device *drm_dev =3D pci_get_drvdata(pdev); struct amdgpu_device *adev =3D drm_to_adev(drm_dev); int ret, i; + dev_info(dev, "%s %d\n", __func__, __LINE__); =20 if (adev->pm.rpm_mode =3D=3D AMDGPU_RUNPM_NONE) { pm_runtime_forbid(dev); @@ -2874,6 +2875,7 @@ static int amdgpu_pmops_runtime_resume(struct device = *dev) struct drm_device *drm_dev =3D pci_get_drvdata(pdev); struct amdgpu_device *adev =3D drm_to_adev(drm_dev); int ret; + dev_info(dev, "%s %d\n", __func__, __LINE__); =20 if (adev->pm.rpm_mode =3D=3D AMDGPU_RUNPM_NONE) return -EINVAL; diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/gfx_v10_0.c index 8841d7213de4..576ff827d80c 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -7475,6 +7475,7 @@ static int gfx_v10_0_hw_init(struct amdgpu_ip_block *= ip_block) { int r; struct amdgpu_device *adev =3D ip_block->adev; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 if (!amdgpu_emu_mode) gfx_v10_0_init_golden_registers(adev); @@ -7529,6 +7530,7 @@ static int gfx_v10_0_hw_init(struct amdgpu_ip_block *= ip_block) static int gfx_v10_0_hw_fini(struct amdgpu_ip_block *ip_block) { struct amdgpu_device *adev =3D ip_block->adev; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 cancel_delayed_work_sync(&adev->gfx.idle_work); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/gmc_v10_0.c index d7499be8c4bf..fd4062e97e11 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c @@ -983,6 +983,7 @@ static int gmc_v10_0_hw_init(struct amdgpu_ip_block *ip= _block) { struct amdgpu_device *adev =3D ip_block->adev; int r; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 adev->gmc.flush_pasid_uses_kiq =3D !amdgpu_emu_mode; =20 @@ -1029,6 +1030,7 @@ static void gmc_v10_0_gart_disable(struct amdgpu_devi= ce *adev) static int gmc_v10_0_hw_fini(struct amdgpu_ip_block *ip_block) { struct amdgpu_device *adev =3D ip_block->adev; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 gmc_v10_0_gart_disable(adev); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c b/drivers/gpu/drm/amd/a= mdgpu/jpeg_v3_0.c index d1a011c40ba2..a181c9965282 100644 --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c @@ -174,6 +174,7 @@ static int jpeg_v3_0_hw_init(struct amdgpu_ip_block *ip= _block) { struct amdgpu_device *adev =3D ip_block->adev; struct amdgpu_ring *ring =3D adev->jpeg.inst->ring_dec; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 adev->nbio.funcs->vcn_doorbell_range(adev, ring->use_doorbell, (adev->doorbell_index.vcn.vcn_ring0_1 << 1), 0); @@ -212,6 +213,7 @@ static int jpeg_v3_0_suspend(struct amdgpu_ip_block *ip= _block) { int r; =20 + dev_info(ip_block->adev->dev, "%s %d\n", __func__, __LINE__); r =3D jpeg_v3_0_hw_fini(ip_block); if (r) return r; @@ -232,6 +234,7 @@ static int jpeg_v3_0_resume(struct amdgpu_ip_block *ip_= block) { int r; =20 + dev_info(ip_block->adev->dev, "%s %d\n", __func__, __LINE__); r =3D amdgpu_jpeg_resume(ip_block->adev); if (r) return r; diff --git a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c b/drivers/gpu/drm/amd/a= mdgpu/navi10_ih.c index 4cd325149b63..f33f5e2e6e53 100644 --- a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/navi10_ih.c @@ -320,6 +320,7 @@ static int navi10_ih_irq_init(struct amdgpu_device *ade= v) u32 ih_chicken; int ret; int i; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 /* disable irqs */ ret =3D navi10_ih_toggle_interrupts(adev, false); @@ -385,6 +386,7 @@ static int navi10_ih_irq_init(struct amdgpu_device *ade= v) */ static void navi10_ih_irq_disable(struct amdgpu_device *adev) { + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); force_update_wptr_for_self_int(adev, 0, 8, false); navi10_ih_toggle_interrupts(adev, false); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v5_2.c index 3bd44c24f692..78f60da4f498 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c @@ -697,6 +697,7 @@ static int sdma_v5_2_gfx_resume(struct amdgpu_device *a= dev) { int i, r; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); for (i =3D 0; i < adev->sdma.num_instances; i++) { r =3D sdma_v5_2_gfx_resume_instance(adev, i, false); if (r) @@ -819,6 +820,7 @@ static int sdma_v5_2_start(struct amdgpu_device *adev) int r =3D 0; struct amdgpu_ip_block *ip_block; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); if (amdgpu_sriov_vf(adev)) { sdma_v5_2_ctx_switch_enable(adev, false); sdma_v5_2_enable(adev, false); @@ -1404,6 +1406,7 @@ static int sdma_v5_2_hw_fini(struct amdgpu_ip_block *= ip_block) if (amdgpu_sriov_vf(adev)) return 0; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); sdma_v5_2_ctx_switch_enable(adev, false); sdma_v5_2_enable(adev, false); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v3_0.c index d9cf8f0feeb3..b31062f212b5 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c @@ -367,6 +367,7 @@ static int vcn_v3_0_hw_init(struct amdgpu_ip_block *ip_= block) struct amdgpu_device *adev =3D ip_block->adev; struct amdgpu_ring *ring; int i, j, r; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 if (amdgpu_sriov_vf(adev)) { r =3D vcn_v3_0_start_sriov(adev); @@ -441,6 +442,7 @@ static int vcn_v3_0_hw_fini(struct amdgpu_ip_block *ip_= block) { struct amdgpu_device *adev =3D ip_block->adev; int i; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 for (i =3D 0; i < adev->vcn.num_vcn_inst; ++i) { struct amdgpu_vcn_inst *vinst =3D &adev->vcn.inst[i]; @@ -474,6 +476,7 @@ static int vcn_v3_0_suspend(struct amdgpu_ip_block *ip_= block) struct amdgpu_device *adev =3D ip_block->adev; int r, i; =20 + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); r =3D vcn_v3_0_hw_fini(ip_block); if (r) return r; @@ -498,6 +501,7 @@ static int vcn_v3_0_resume(struct amdgpu_ip_block *ip_b= lock) { struct amdgpu_device *adev =3D ip_block->adev; int r, i; + dev_info(adev->dev, "%s %d\n", __func__, __LINE__); =20 for (i =3D 0; i < adev->vcn.num_vcn_inst; i++) { r =3D amdgpu_vcn_resume(ip_block->adev, i); diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpip= hp_glue.c index 5b1f271c6034..e56ab308da20 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -484,6 +484,7 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) struct pci_dev *dev; struct pci_bus *bus =3D slot->bus; struct acpiphp_func *func; + printk(KERN_INFO "%s %d\n", __func__, __LINE__); =20 if (bridge && bus->self && hotplug_is_native(bus->self)) { /* @@ -494,10 +495,14 @@ static void enable_slot(struct acpiphp_slot *slot, bo= ol bridge) * as a Thunderbolt host controller. */ for_each_pci_bridge(dev, bus) { - if (PCI_SLOT(dev->devfn) =3D=3D slot->device) + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); + if (PCI_SLOT(dev->devfn) =3D=3D slot->device) { + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); acpiphp_native_scan_bridge(dev); + } } } else { + printk(KERN_INFO "%s %d\n", __func__, __LINE__); LIST_HEAD(add_list); int max, pass; =20 @@ -505,11 +510,15 @@ static void enable_slot(struct acpiphp_slot *slot, bo= ol bridge) max =3D acpiphp_max_busnr(bus); for (pass =3D 0; pass < 2; pass++) { for_each_pci_bridge(dev, bus) { - if (PCI_SLOT(dev->devfn) !=3D slot->device) + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); + if (PCI_SLOT(dev->devfn) !=3D slot->device) { + printk(KERN_INFO "%s %d\n", __func__, __LINE__); continue; + } =20 max =3D pci_scan_bridge(bus, dev, max, pass); if (pass && dev->subordinate) { + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); check_hotplug_bridge(slot, dev); pcibios_resource_survey_bus(dev->subordinate); __pci_bus_size_bridges(dev->subordinate, @@ -526,6 +535,7 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) =20 list_for_each_entry(dev, &bus->devices, bus_list) { /* Assume that newly added devices are powered on already. */ + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); if (!pci_dev_is_added(dev)) dev->current_state =3D PCI_D0; } @@ -544,6 +554,7 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) } pci_dev_put(dev); } + printk(KERN_INFO "%s %d\n", __func__, __LINE__); } =20 /** @@ -702,31 +713,43 @@ static void acpiphp_check_bridge(struct acpiphp_bridg= e *bridge) if (bridge->is_going_away) return; =20 - if (bridge->pci_dev) + if (bridge->pci_dev) { + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); pm_runtime_get_sync(&bridge->pci_dev->dev); + } =20 + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); list_for_each_entry(slot, &bridge->slots, node) { struct pci_bus *bus =3D slot->bus; struct pci_dev *dev, *tmp; + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); =20 if (slot_no_hotplug(slot)) { - ; /* do nothing */ + /* do nothing */ + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); } else if (device_status_valid(get_slot_status(slot))) { /* remove stale devices if any */ list_for_each_entry_safe_reverse(dev, tmp, - &bus->devices, bus_list) + &bus->devices, bus_list) { + dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); if (PCI_SLOT(dev->devfn) =3D=3D slot->device) trim_stale_devices(dev); + } =20 /* configure all functions */ + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); enable_slot(slot, true); } else { + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); disable_slot(slot); } } =20 - if (bridge->pci_dev) + if (bridge->pci_dev) { pm_runtime_put(&bridge->pci_dev->dev); + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); + } + dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); } =20 /* @@ -760,6 +783,7 @@ static void acpiphp_sanitize_bus(struct pci_bus *bus) void acpiphp_check_host_bridge(struct acpi_device *adev) { struct acpiphp_bridge *bridge =3D NULL; + dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 acpi_lock_hp_context(); if (adev->hp) { @@ -799,6 +823,7 @@ static void hotplug_event(u32 type, struct acpiphp_cont= ext *context) switch (type) { case ACPI_NOTIFY_BUS_CHECK: /* bus re-enumerate */ + printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_CHECK\n", __func__, __LINE__); acpi_handle_debug(handle, "Bus check in %s()\n", __func__); if (bridge) acpiphp_check_bridge(bridge); @@ -809,6 +834,7 @@ static void hotplug_event(u32 type, struct acpiphp_cont= ext *context) =20 case ACPI_NOTIFY_DEVICE_CHECK: /* device check */ + printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK\n", __func__, __LINE__= ); acpi_handle_debug(handle, "Device check in %s()\n", __func__); if (bridge) { acpiphp_check_bridge(bridge); @@ -824,19 +850,23 @@ static void hotplug_event(u32 type, struct acpiphp_co= ntext *context) =20 case ACPI_NOTIFY_EJECT_REQUEST: /* request device eject */ + printk(KERN_INFO "%s %d: ACPI_NOTIFY_EJECT_REQUEST\n", __func__, __LINE_= _); acpi_handle_debug(handle, "Eject request in %s()\n", __func__); acpiphp_disable_and_eject_slot(slot); break; } =20 pci_unlock_rescan_remove(); + printk(KERN_INFO "%s %d:\n", __func__, __LINE__); if (bridge) put_bridge(bridge); + printk(KERN_INFO "%s %d:\n", __func__, __LINE__); } =20 static int acpiphp_hotplug_notify(struct acpi_device *adev, u32 type) { struct acpiphp_context *context; + dev_info(&adev->dev, "%s %d: %s =3D %px\n", __func__, __LINE__, __func__,= (void *) acpiphp_hotplug_notify); =20 context =3D acpiphp_grab_context(adev); if (!context) diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp= _core.c index f59baa912970..8f90f91c0a07 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c @@ -266,6 +266,7 @@ static void pciehp_disable_interrupt(struct pcie_device= *dev) * Disable hotplug interrupt so that it does not trigger * immediately when the downstream link goes down. */ + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); if (pme_is_native(dev)) pcie_disable_interrupt(get_service_data(dev)); } @@ -273,6 +274,7 @@ static void pciehp_disable_interrupt(struct pcie_device= *dev) #ifdef CONFIG_PM_SLEEP static int pciehp_suspend(struct pcie_device *dev) { + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); /* * If the port is already runtime suspended we can keep it that * way. @@ -287,6 +289,7 @@ static int pciehp_suspend(struct pcie_device *dev) static int pciehp_resume_noirq(struct pcie_device *dev) { struct controller *ctrl =3D get_service_data(dev); + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); =20 /* pci_restore_state() just wrote to the Slot Control register */ ctrl->cmd_started =3D jiffies; @@ -317,6 +320,7 @@ static int pciehp_resume_noirq(struct pcie_device *dev) static int pciehp_resume(struct pcie_device *dev) { struct controller *ctrl =3D get_service_data(dev); + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); =20 if (pme_is_native(dev)) pcie_enable_interrupt(ctrl); @@ -328,6 +332,7 @@ static int pciehp_resume(struct pcie_device *dev) =20 static int pciehp_runtime_suspend(struct pcie_device *dev) { + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); pciehp_disable_interrupt(dev); return 0; } @@ -335,6 +340,7 @@ static int pciehp_runtime_suspend(struct pcie_device *d= ev) static int pciehp_runtime_resume(struct pcie_device *dev) { struct controller *ctrl =3D get_service_data(dev); + dev_info(&dev->device, "%s %d\n", __func__, __LINE__); =20 /* pci_restore_state() just wrote to the Slot Control register */ ctrl->cmd_started =3D jiffies; This gives as output when crashing (only the last few lines, which don not appear in /var/log/kern.log, but are captured with netconsole) The processess involved here are the following: T254: [irq/40-ACPI:Event] (this is a threaded interrupt handler for ACPI ev= ents) The other two processes are [kworker/mm_percpu_wq] workqueues. 2025-09-30T02:25:57.704378+02:00 [T254]evmisc-0132 ev_queue_notify_reques: = Dispatching Notify on [GPP0] (Device) Value 0x00 (Bus Check) Node 000000001= 7caa1c9 2025-09-30T02:25:57.704378+02:00 [T61442]acpi_bus_notify 517: ACPI_NOTIFY_B= US_CHECK 2025-09-30T02:25:57.704378+02:00 [T61442]acpi device:00: acpi_bus_notify 56= 7#012 SUBSYSTEM=3Dacpi#012 DEVICE=3D+acpi:device:00 2025-09-30T02:25:57.704378+02:00 [T61442]acpi device:00: acpi_hotplug_sched= ule 1197#012 SUBSYSTEM=3Dacpi#012 DEVICE=3D+acpi:device:00 2025-09-30T02:25:57.704378+02:00 [T77816]acpi_hotplug_work_fn 1188 2025-09-30T02:25:57.704378+02:00 [T77816]acpi_os_wait_events_complete 1170 2025-09-30T02:25:57.704378+02:00 [T77816]acpi device:00: acpi_device_hotplu= g 453#012 SUBSYSTEM=3Dacpi#012 DEVICE=3D+acpi:device:00 2025-09-30T02:25:57.704378+02:00 [T77816]acpi device:00: acpi_device_hotplu= g 480: calling notify =3D ffffffffb8a24fc0#012 SUBSYSTEM=3Dacpi#012 DEVICE= =3D+acpi:device:00 2025-09-30T02:25:57.704378+02:00 [T77816]acpi device:00: acpiphp_hotplug_no= tify 869: acpiphp_hotplug_notify =3D ffffffffb8a24fc0#012 SUBSYSTEM=3Dacpi#= 012 DEVICE=3D+acpi:device:00 2025-09-30T02:25:57.704378+02:00 [T77816]hotplug_event 826: ACPI_NOTIFY_BUS= _CHECK 2025-09-30T02:25:57.704378+02:00 [T77816]pcieport 0000:00:01.1: acpiphp_che= ck_bridge 717#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 So the problem as appears to be happening inside of acpiphp_check_bridge(): static void acpiphp_check_bridge(struct acpiphp_bridge *bridge) { struct acpiphp_slot *slot; /* Bail out if the bridge is going away. */ if (bridge->is_going_away) return; if (bridge->pci_dev) { dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); // This i= s the last reported line. pm_runtime_get_sync(&bridge->pci_dev->dev); } dev_info(&bridge->pci_dev->dev, "%s %d\n", __func__, __LINE__); // This li= ne is not reported during a crash. Bert Karwatzki From nobody Wed Dec 17 21:26:41 2025 Received: from mout.web.de (mout.web.de [212.227.15.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B33B21FF1BF; Mon, 6 Oct 2025 12:09:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752601; cv=none; b=dVRyfMHrQu6FsZ61JJ5n7YlNpINlNWSHqjOI+bKAulqEz23bC/eMiiR/DMmNN9Zv9I2cm431zNbm5pHspezK3fuwekypDEM+eLv3sA9wN9VjBFbqc1anUv7Wuss4wGLHVjiF6o+azmc4m66wNPrilFCmwkCcGI03whjqcPBrfGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752601; c=relaxed/simple; bh=DSYgXcHamOXVeBdcgtnClxPl3hrCqiebkarm5Ggia2Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CvM3zl5tseC80QXMgQ7XF1M0AF5OhPF9c7ya0yqmfJbMv6nkbjg8bbfXpVabaSgH/zgAfhM6BdrCxbvKka/Lbo4O0l1ab3bQxyYhouyssDbDDoGlN4r0WySSanyU7Kdy0gGERjd0M1sxDYLRCY9ZRpXjMz8ITtcNGFDyMu7FAo8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b=C+AQMfl2; arc=none smtp.client-ip=212.227.15.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b="C+AQMfl2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1759752591; x=1760357391; i=spasswolf@web.de; bh=JLB8PIbw+N0LUkNlfemzeyl2cSVv1Y33puUJfyYXRrQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=C+AQMfl24FpVECbRXpddNfjmKQohob1whjIudoW/HX2GBf04Gsig46lcd36lB0ia GNVw5wIqwa4kOsPHBaNxK5J9obbjk7+PvqArJtw2UX2r3OzxPA+AwB6VPNAgfdTe7 1qSbTGrk8gwD1aerGOPKFpYszfUbch44SyGTp6L9wwJSvRFv+OF9l1m0VKqCiW52r QIsQ8Po+i3JRTEoPM5a0qW4XDHkVyD8aE1jfijnRD6zR1IFDpnekcexzXBc8flgx0 k+NVGfCLB5js0bbHESvUTwDopWSec5/6z9d0aAXWw50OfZWN+R378zM2lcVFtlYXl +TpIYELYZZkaeN7EvQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from localhost.localdomain ([95.223.134.88]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MVrbl-1ugCqJ31Yz-00QPsx; Mon, 06 Oct 2025 14:09:50 +0200 From: Bert Karwatzki To: linux-kernel@vger.kernel.org Cc: Bert Karwatzki , linux-next@vger.kernel.org, linux-stable@vger.kernel.org, regressions@lists.linux.dev, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, Mario Limonciello , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Rafael J . Wysocki" Subject: [REGRESSION 02/04] Crash during resume of pcie bridge Date: Mon, 6 Oct 2025 14:09:41 +0200 Message-ID: <20251006120944.7880-3-spasswolf@web.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251006120944.7880-1-spasswolf@web.de> References: <20251006120944.7880-1-spasswolf@web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:mF1VfaeKK6Z0Q7Jw66XZvY88uyjqZSABj9lCKeKBY58OQ7X6jQG k9kJd9W1euWlNlEBez7Ihlq+cMHHA51z9aEudxhkrboMWDY3juh4QqhHYSWZ+ZGtEo2rU3K anlYwoWjTfPfappcP4Tzs5Lr37noUhKURXb+X9t842shwtjabkMaE4yLe6ScMJ8cSLCe95k cdLJdPzDTaplWN2zUWCVA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:oKa04mgs+9Q=;ZjuoQV5xeRtJtVfzqyMnZ09zO4P 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 Content-Type: text/plain; charset="utf-8" The next step is to monitor pm_runtime_get_sync(), rpm_resume() and __pm_ru= ntime_resume(). Here we need to use conditional debugging output or else we get messages at= a rate of about a million lines per minute. These is the additional debugging used in 6.17.0-rc6-next-20250917-gpudebug-00024-g5c6b49b810db diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 7420b9851fe0..895898c3cd56 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -787,12 +787,18 @@ static int rpm_resume(struct device *dev, int rpmflag= s) struct device *parent =3D NULL; int retval =3D 0; =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); trace_rpm_resume(dev, rpmflags); =20 repeat: if (dev->power.runtime_error) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D -EINVAL; } else if (dev->power.disable_depth > 0) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (dev->power.runtime_status =3D=3D RPM_ACTIVE && dev->power.last_status =3D=3D RPM_ACTIVE) retval =3D 1; @@ -808,31 +814,45 @@ static int rpm_resume(struct device *dev, int rpmflag= s) * rather than cancelling it now only to restart it again in the near * future. */ + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.request =3D RPM_REQ_NONE; if (!dev->power.timer_autosuspends) pm_runtime_deactivate_timer(dev); =20 if (dev->power.runtime_status =3D=3D RPM_ACTIVE) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D 1; goto out; } =20 if (dev->power.runtime_status =3D=3D RPM_RESUMING || dev->power.runtime_status =3D=3D RPM_SUSPENDING) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); DEFINE_WAIT(wait); =20 if (rpmflags & (RPM_ASYNC | RPM_NOWAIT)) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (dev->power.runtime_status =3D=3D RPM_SUSPENDING) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.deferred_resume =3D true; if (rpmflags & RPM_NOWAIT) retval =3D -EINPROGRESS; } else { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D -EINPROGRESS; } goto out; } =20 if (dev->power.irq_safe) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); spin_unlock(&dev->power.lock); =20 cpu_relax(); @@ -856,6 +876,8 @@ static int rpm_resume(struct device *dev, int rpmflags) spin_lock_irq(&dev->power.lock); } finish_wait(&dev->power.wait_queue, &wait); + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); goto repeat; } =20 @@ -865,22 +887,32 @@ static int rpm_resume(struct device *dev, int rpmflag= s) * the resume will actually succeed. */ if (dev->power.no_callbacks && !parent && dev->parent) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); spin_lock_nested(&dev->parent->power.lock, SINGLE_DEPTH_NESTING); if (dev->parent->power.disable_depth > 0 || dev->parent->power.ignore_children || dev->parent->power.runtime_status =3D=3D RPM_ACTIVE) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); atomic_inc(&dev->parent->power.child_count); spin_unlock(&dev->parent->power.lock); retval =3D 1; goto no_callback; /* Assume success. */ } spin_unlock(&dev->parent->power.lock); + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); } =20 /* Carry out an asynchronous or a synchronous resume. */ if (rpmflags & RPM_ASYNC) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.request =3D RPM_REQ_RESUME; if (!dev->power.request_pending) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.request_pending =3D true; queue_work(pm_wq, &dev->power.work); } @@ -894,6 +926,8 @@ static int rpm_resume(struct device *dev, int rpmflags) * necessary. Not needed if dev is irq-safe; then the * parent is permanently resumed. */ + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); parent =3D dev->parent; if (dev->power.irq_safe) goto skip_parent; @@ -909,6 +943,8 @@ static int rpm_resume(struct device *dev, int rpmflags) */ if (!parent->power.disable_depth && !parent->power.ignore_children) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); rpm_resume(parent, 0); if (parent->power.runtime_status !=3D RPM_ACTIVE) retval =3D -EBUSY; @@ -919,10 +955,14 @@ static int rpm_resume(struct device *dev, int rpmflag= s) if (retval) goto out; =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); goto repeat; } skip_parent: =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (dev->power.no_callbacks) goto no_callback; /* Assume success. */ =20 @@ -933,11 +973,15 @@ static int rpm_resume(struct device *dev, int rpmflag= s) dev_pm_disable_wake_irq_check(dev, false); retval =3D rpm_callback(callback, dev); if (retval) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); __update_runtime_status(dev, RPM_SUSPENDED); pm_runtime_cancel_pending(dev); dev_pm_enable_wake_irq_check(dev, false); } else { no_callback: + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); __update_runtime_status(dev, RPM_ACTIVE); pm_runtime_mark_last_busy(dev); if (parent) @@ -949,7 +993,11 @@ static int rpm_resume(struct device *dev, int rpmflags) rpm_idle(dev, RPM_ASYNC); =20 out: + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (parent && !dev->power.irq_safe) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); spin_unlock_irq(&dev->power.lock); =20 pm_runtime_put(parent); @@ -959,6 +1007,8 @@ static int rpm_resume(struct device *dev, int rpmflags) =20 trace_rpm_return_int(dev, _THIS_IP_, retval); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); return retval; } =20 @@ -1181,17 +1231,27 @@ int __pm_runtime_resume(struct device *dev, int rpm= flags) { unsigned long flags; int retval; + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); =20 might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe && dev->power.runtime_status !=3D RPM_ACTIVE); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (rpmflags & RPM_GET_PUT) atomic_inc(&dev->power.usage_count); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); spin_lock_irqsave(&dev->power.lock, flags); + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D rpm_resume(dev, rpmflags); spin_unlock_irqrestore(&dev->power.lock, flags); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); return retval; } EXPORT_SYMBOL_GPL(__pm_runtime_resume); diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index d88d6b6ccf5b..0888b0d5ec73 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h @@ -508,6 +508,8 @@ static inline int pm_runtime_get(struct device *dev) */ static inline int pm_runtime_get_sync(struct device *dev) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s\n", __func__); return __pm_runtime_resume(dev, RPM_GET_PUT); } =20 With this there is no crash after 60h uptime with ~3093 GPP0 notifies, prob= ably the printk()s are mitigating the crash in some way (i.e. there's a race and the= printk()s are slowing down only one side ...). It would be nice if we could get a crash while all the printk()s are in pla= ce, but I'm not sure if we can ... Stopped 6.17.0-rc6-next-20250917-gpudebug-00024-g5c6b49b810db after 60h and= 3093 GPP0 notifies without crash. Bert Karwatzki From nobody Wed Dec 17 21:26:41 2025 Received: from mout.web.de (mout.web.de [212.227.15.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA7BA27A45C; Mon, 6 Oct 2025 12:10:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752609; cv=none; b=o2iixzONjevNGb4Sl7FNxWyydW5YO3l0iDbms4rrcVj4wK2bu+Z0Gnp3yRgML6yfgAhmAaGw1eFeLPL89w1auk1NBz2ZwxG2D9RmtIqX2rBa6LEasiGZRFxJYXiDeiVb2lFV/2EZ18TVOTCze/RzxA11t9RJIs9t+aCgLJrQgys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752609; c=relaxed/simple; bh=OMcjzqyHYFvX5Cr2mXN6248km4EoR9oE5IXrLXSuDck=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hq1bPxmNGSEwbx+S+7wtU3qZZG4KBTnqP/2LnMp5GYQOw2OkapZw/akzfj3X1mhwvLVlb5UMUfOFXpUgctfle7K9vf/ozdUHnaK+BYQ/A3VY3q4ZMq6I7Q2HNDC6m7F1q0JSF6qkf3UbolZ2TgQelqdR73ftQXJsYl4h0dnC5Io= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b=R94u915o; arc=none smtp.client-ip=212.227.15.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b="R94u915o" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1759752592; x=1760357392; i=spasswolf@web.de; bh=QL8VZtyw0/u7Oq0yLpGopt+0WuV9B2HS01+h5w8UVjM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=R94u915ovAfRv/qUBdXCjbbRrFNYSlNt9EzlYsj+lRuNQE5sjOmE5XDBZg7zTryg GhWJ0Bqr/XSXYxOrXSPhJd1miES3jKFRrvk5Hz/rSg8da07h6iSBNq0okrSIvygvi GoF0obiLijyZoXi+a3CK78iQkL2bOTr2OE5+gCHoBONZ65e332TwUsowNLJWTSFlv b+2XZWKRR8Aad/TPklwH6SF+kMjRPpH/xJYZMTfAnfYde0ugmtDpEeNbh3BFb1uG6 5VSzOIktikcDwdUYIZw3PojjfbBzOVQVHfC4ZvAX836RDLLFvbHdSdRLXe7Oyg68K R5EAyuRwv1b8dYNG4w== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from localhost.localdomain ([95.223.134.88]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MLijs-1uoDBX43ge-00J1t8; Mon, 06 Oct 2025 14:09:52 +0200 From: Bert Karwatzki To: linux-kernel@vger.kernel.org Cc: Bert Karwatzki , linux-next@vger.kernel.org, linux-stable@vger.kernel.org, regressions@lists.linux.dev, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, Mario Limonciello , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Rafael J . Wysocki" Subject: [REGRESSION 03/04] Crash during resume of pcie bridge Date: Mon, 6 Oct 2025 14:09:42 +0200 Message-ID: <20251006120944.7880-4-spasswolf@web.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251006120944.7880-1-spasswolf@web.de> References: <20251006120944.7880-1-spasswolf@web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:m8dS2t/6d4noACAWJlbqVgv+fXwTk6g6gZPWiuU+qDT94px7sO/ szlPXfCeeGBB3DrT4pAnzh/+mUpzIzOzmFchwMkXnvsJq79PjN/G/j2ZdKBYk97ElODnfYz JsS2KpVok4iOr4dXRPdzm/dT4y3EWsx/01oCqqihYWmmzkZ5Eh0aAHU0b8wTCCKjKbOHvN+ u63N+GwdqI283JFFvBrOQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:1UyTuLUOY/A=;P2N4qUvBtWyFugn5wXDck97uqyu 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 tRNMg2DWu0XJfzkZiqiPaACAGOurPKEFBrerM9 Content-Type: text/plain; charset="utf-8" In order to get a working crash I removed some of the monitoring again: diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index bc365c0dbe2f..a984ccd4a2a0 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -514,60 +514,46 @@ static void acpi_bus_notify(acpi_handle handle, u32 t= ype, void *data) =20 switch (type) { case ACPI_NOTIFY_BUS_CHECK: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_CHECK\n", __func__, __LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_BUS_CHECK event\n"); break; =20 case ACPI_NOTIFY_DEVICE_CHECK: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK\n", __func__, __LINE__= ); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK event\n"); break; =20 case ACPI_NOTIFY_DEVICE_WAKE: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_WAKE\n", __func__, __LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_WAKE event\n"); return; =20 case ACPI_NOTIFY_EJECT_REQUEST: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_EJECT_REQUEST\n", __func__, __LINE_= _); acpi_handle_debug(handle, "ACPI_NOTIFY_EJECT_REQUEST event\n"); break; =20 case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK_LIGHT\n", __func__, __= LINE__); acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK_LIGHT event\n"); /* TBD: Exactly what does 'light' mean? */ return; =20 case ACPI_NOTIFY_FREQUENCY_MISMATCH: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_FREQUENCY_MISMATCH\n", __func__, __= LINE__); acpi_handle_err(handle, "Device cannot be configured due " "to a frequency mismatch\n"); return; =20 case ACPI_NOTIFY_BUS_MODE_MISMATCH: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_MODE_MISMATCH\n", __func__, __L= INE__); acpi_handle_err(handle, "Device cannot be configured due " "to a bus mode mismatch\n"); return; =20 case ACPI_NOTIFY_POWER_FAULT: - printk(KERN_INFO "%s %d: ACPI_NOTIFY_POWER_FAULT\n", __func__, __LINE__); acpi_handle_err(handle, "Device has suffered a power fault\n"); return; =20 default: - printk(KERN_INFO "%s %d: acpi unknown event type\n", __func__, __LINE__); acpi_handle_debug(handle, "Unknown event type 0x%x\n", type); return; } =20 adev =3D acpi_get_acpi_dev(handle); - if (adev) - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); - else - printk(KERN_INFO "%s %d: adev =3D NULL\n", __func__, __LINE__); - =09 =20 if (adev && ACPI_SUCCESS(acpi_hotplug_schedule(adev, type))) return; diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index 9a7dc432b50d..4e0583274b8f 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c @@ -539,7 +539,6 @@ static void acpi_pm_notify_handler(acpi_handle handle, = u32 val, void *not_used) if (!adev) return; =20 - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); mutex_lock(&acpi_pm_notifier_lock); =20 if (adev->wakeup.flags.notifier_present) { diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 0f6a16856119..5ff343096ece 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@ -1167,7 +1167,6 @@ void acpi_os_wait_events_complete(void) * Make sure the GPE handler or the fixed event handler is not used * on another CPU after removal. */ - printk(KERN_INFO "%s %d\n", __func__, __LINE__); if (acpi_sci_irq_valid()) synchronize_hardirq(acpi_sci_irq); flush_workqueue(kacpid_wq); @@ -1185,7 +1184,6 @@ static void acpi_hotplug_work_fn(struct work_struct *= work) { struct acpi_hp_work *hpw =3D container_of(work, struct acpi_hp_work, work= ); =20 - printk(KERN_INFO "%s %d\n", __func__, __LINE__); acpi_os_wait_events_complete(); acpi_device_hotplug(hpw->adev, hpw->src); kfree(hpw); @@ -1194,7 +1192,6 @@ static void acpi_hotplug_work_fn(struct work_struct *= work) acpi_status acpi_hotplug_schedule(struct acpi_device *adev, u32 src) { struct acpi_hp_work *hpw; - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 acpi_handle_debug(adev->handle, "Scheduling hotplug event %u for deferred handling\n", diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index d53be7e0388d..065abe56f440 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -251,7 +251,6 @@ static int acpi_scan_check_and_detach(struct acpi_devic= e *adev, void *p) { struct acpi_scan_handler *handler =3D adev->handler; uintptr_t flags =3D (uintptr_t)p; - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 acpi_dev_for_each_child_reverse(adev, acpi_scan_check_and_detach, p); =20 @@ -315,7 +314,6 @@ static void acpi_scan_check_subtree(struct acpi_device = *adev) { uintptr_t flags =3D ACPI_SCAN_CHECK_FLAG_STATUS; =20 - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); acpi_scan_check_and_detach(adev, (void *)flags); } =20 @@ -371,7 +369,6 @@ static int acpi_scan_rescan_bus(struct acpi_device *ade= v) { struct acpi_scan_handler *handler =3D adev->handler; int ret; - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 if (handler && handler->hotplug.scan_dependent) ret =3D handler->hotplug.scan_dependent(adev); @@ -388,7 +385,6 @@ static int acpi_scan_device_check(struct acpi_device *a= dev) { struct acpi_device *parent; =20 - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); acpi_scan_check_subtree(adev); =20 if (!acpi_device_is_present(adev)) @@ -416,24 +412,19 @@ static int acpi_scan_device_check(struct acpi_device = *adev) static int acpi_scan_bus_check(struct acpi_device *adev) { acpi_scan_check_subtree(adev); - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); =20 return acpi_scan_rescan_bus(adev); } =20 static int acpi_generic_hotplug_event(struct acpi_device *adev, u32 type) { - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); switch (type) { case ACPI_NOTIFY_BUS_CHECK: - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); return acpi_scan_bus_check(adev); case ACPI_NOTIFY_DEVICE_CHECK: - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); return acpi_scan_device_check(adev); case ACPI_NOTIFY_EJECT_REQUEST: case ACPI_OST_EC_OSPM_EJECT: - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); if (adev->handler && !adev->handler->hotplug.enabled) { dev_info(&adev->dev, "Eject disabled\n"); return -EPERM; @@ -450,7 +441,6 @@ void acpi_device_hotplug(struct acpi_device *adev, u32 = src) u32 ost_code =3D ACPI_OST_SC_NON_SPECIFIC_FAILURE; int error =3D -ENODEV; =20 - dev_info(&adev->dev, "%s %d\n", __func__, __LINE__); lock_device_hotplug(); mutex_lock(&acpi_scan_lock); =20 @@ -476,10 +466,9 @@ void acpi_device_hotplug(struct acpi_device *adev, u32= src) * There may be additional notify handlers for device objects * without the .event() callback, so ignore them here. */ - if (notify) { - dev_info(&adev->dev, "%s %d: calling notify =3D %px\n", __func__, __LIN= E__, (void *) notify); + if (notify) error =3D notify(adev, src); - } else + else goto out; } switch (error) { diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 895898c3cd56..27cce7f1b1d3 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -142,6 +142,8 @@ EXPORT_SYMBOL_GPL(pm_runtime_suspended_time); */ static void pm_runtime_deactivate_timer(struct device *dev) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (dev->power.timer_expires > 0) { hrtimer_try_to_cancel(&dev->power.suspend_timer); dev->power.timer_expires =3D 0; @@ -787,8 +789,6 @@ static int rpm_resume(struct device *dev, int rpmflags) struct device *parent =3D NULL; int retval =3D 0; =20 - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); trace_rpm_resume(dev, rpmflags); =20 repeat: @@ -815,7 +815,7 @@ static int rpm_resume(struct device *dev, int rpmflags) * future. */ if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); + dev_info(dev, "%s %d dev =3D %px\n", __func__, __LINE__, dev); dev->power.request =3D RPM_REQ_NONE; if (!dev->power.timer_autosuspends) pm_runtime_deactivate_timer(dev); @@ -1231,22 +1231,16 @@ int __pm_runtime_resume(struct device *dev, int rpm= flags) { unsigned long flags; int retval; - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); =20 might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe && dev->power.runtime_status !=3D RPM_ACTIVE); =20 - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); if (rpmflags & RPM_GET_PUT) atomic_inc(&dev->power.usage_count); =20 - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); spin_lock_irqsave(&dev->power.lock, flags); if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); + dev_info(dev, "%s %d dev =3D %px\n", __func__, __LINE__, dev); retval =3D rpm_resume(dev, rpmflags); spin_unlock_irqrestore(&dev->power.lock, flags); =20 diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpip= hp_glue.c index e56ab308da20..e21255b97251 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -484,7 +484,6 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) struct pci_dev *dev; struct pci_bus *bus =3D slot->bus; struct acpiphp_func *func; - printk(KERN_INFO "%s %d\n", __func__, __LINE__); =20 if (bridge && bus->self && hotplug_is_native(bus->self)) { /* @@ -495,14 +494,11 @@ static void enable_slot(struct acpiphp_slot *slot, bo= ol bridge) * as a Thunderbolt host controller. */ for_each_pci_bridge(dev, bus) { - dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); if (PCI_SLOT(dev->devfn) =3D=3D slot->device) { - dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); acpiphp_native_scan_bridge(dev); } } } else { - printk(KERN_INFO "%s %d\n", __func__, __LINE__); LIST_HEAD(add_list); int max, pass; =20 @@ -510,15 +506,12 @@ static void enable_slot(struct acpiphp_slot *slot, bo= ol bridge) max =3D acpiphp_max_busnr(bus); for (pass =3D 0; pass < 2; pass++) { for_each_pci_bridge(dev, bus) { - dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); if (PCI_SLOT(dev->devfn) !=3D slot->device) { - printk(KERN_INFO "%s %d\n", __func__, __LINE__); continue; } =20 max =3D pci_scan_bridge(bus, dev, max, pass); if (pass && dev->subordinate) { - dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); check_hotplug_bridge(slot, dev); pcibios_resource_survey_bus(dev->subordinate); __pci_bus_size_bridges(dev->subordinate, @@ -535,7 +528,6 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) =20 list_for_each_entry(dev, &bus->devices, bus_list) { /* Assume that newly added devices are powered on already. */ - dev_info(&dev->dev, "%s %d\n", __func__, __LINE__); if (!pci_dev_is_added(dev)) dev->current_state =3D PCI_D0; } @@ -554,7 +546,6 @@ static void enable_slot(struct acpiphp_slot *slot, bool= bridge) } pci_dev_put(dev); } - printk(KERN_INFO "%s %d\n", __func__, __LINE__); } =20 /** @@ -823,7 +814,6 @@ static void hotplug_event(u32 type, struct acpiphp_cont= ext *context) switch (type) { case ACPI_NOTIFY_BUS_CHECK: /* bus re-enumerate */ - printk(KERN_INFO "%s %d: ACPI_NOTIFY_BUS_CHECK\n", __func__, __LINE__); acpi_handle_debug(handle, "Bus check in %s()\n", __func__); if (bridge) acpiphp_check_bridge(bridge); @@ -834,7 +824,6 @@ static void hotplug_event(u32 type, struct acpiphp_cont= ext *context) =20 case ACPI_NOTIFY_DEVICE_CHECK: /* device check */ - printk(KERN_INFO "%s %d: ACPI_NOTIFY_DEVICE_CHECK\n", __func__, __LINE__= ); acpi_handle_debug(handle, "Device check in %s()\n", __func__); if (bridge) { acpiphp_check_bridge(bridge); @@ -850,23 +839,19 @@ static void hotplug_event(u32 type, struct acpiphp_co= ntext *context) =20 case ACPI_NOTIFY_EJECT_REQUEST: /* request device eject */ - printk(KERN_INFO "%s %d: ACPI_NOTIFY_EJECT_REQUEST\n", __func__, __LINE_= _); acpi_handle_debug(handle, "Eject request in %s()\n", __func__); acpiphp_disable_and_eject_slot(slot); break; } =20 pci_unlock_rescan_remove(); - printk(KERN_INFO "%s %d:\n", __func__, __LINE__); if (bridge) put_bridge(bridge); - printk(KERN_INFO "%s %d:\n", __func__, __LINE__); } =20 static int acpiphp_hotplug_notify(struct acpi_device *adev, u32 type) { struct acpiphp_context *context; - dev_info(&adev->dev, "%s %d: %s =3D %px\n", __func__, __LINE__, __func__,= (void *) acpiphp_hotplug_notify); =20 context =3D acpiphp_grab_context(adev); if (!context) diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index 0888b0d5ec73..d88d6b6ccf5b 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h @@ -508,8 +508,6 @@ static inline int pm_runtime_get(struct device *dev) */ static inline int pm_runtime_get_sync(struct device *dev) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s\n", __func__); return __pm_runtime_resume(dev, RPM_GET_PUT); } =20 This is the message from 6.17.0-rc6-next-20250917-gpudebug-00028-gf99cf81b1= da7 crashing, captured via netconsole: 2025-10-06T04:52:35.932429+02:00 [T248]evmisc-0132 ev_queue_notify_reques: = Dispatching Notify on [GPP0] (Device) Value 0x00 (Bus Check) Node 000000006= 9c9623b 2025-10-06T04:52:35.932429+02:00 [T177395]pcieport 0000:00:01.1: acpiphp_ch= eck_bridge 708#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [T177395]pcieport 0000:00:01.1: __pm_runti= me_resume 1243 dev =3D ffff97c001c930c8#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+p= ci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: rpm_resume = 818 dev =3D ffff97c001c930c8#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:= 01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: pm_runtime_= deactivate_timer 146#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: rpm_resume = 930#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: rpm_resume = 959#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: rpm_resume = 818 dev =3D ffff97c001c930c8#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:= 01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: pm_runtime_= deactivate_timer 146#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 2025-10-06T04:52:35.932429+02:00 [177395]pcieport 0000:00:01.1: rpm_resume = 965#012 SUBSYSTEM=3Dpci#012 DEVICE=3D+pci:0000:00:01.1 So the crash seems to happen in this part of rpm_resume(): [...] skip_parent: if (!strcmp(dev_name(dev), "0000:00:01.1")) dev_info(dev, "%s %d\n", __func__, __LINE__); // this is the last reporte= d line if (dev->power.no_callbacks) goto no_callback; /* Assume success. */ __update_runtime_status(dev, RPM_RESUMING); callback =3D RPM_GET_CALLBACK(dev, runtime_resume); dev_pm_disable_wake_irq_check(dev, false); retval =3D rpm_callback(callback, dev); if (retval) { if (!strcmp(dev_name(dev), "0000:00:01.1")) dev_info(dev, "%s %d\n", __func__, __LINE__); __update_runtime_status(dev, RPM_SUSPENDED); pm_runtime_cancel_pending(dev); dev_pm_enable_wake_irq_check(dev, false); } else { no_callback: if (!strcmp(dev_name(dev), "0000:00:01.1")) dev_info(dev, "%s %d\n", __func__, __LINE__); [...] Bert Karwatzki From nobody Wed Dec 17 21:26:41 2025 Received: from mout.web.de (mout.web.de [212.227.15.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C0F627CB35; Mon, 6 Oct 2025 12:10:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752612; cv=none; b=i93wigzag/XPCIQZOFCDZ1lIZ4cd++kDLVk8LQR61a5AWSFdLyzqRIGFcJzTgA8WoSDGnIoJV8/FfXlsH4zJsjvo87AsHBCphK6F4Yy1JvrD0kwUecvNwXBBd6QP7yroQ43IMnW5epzY0xCLvzL+iAjCyCoTt6Vs4WpxLo687hg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759752612; c=relaxed/simple; bh=x6yPRPDpJD1ql7OMC854mk/tDZ8LbOk3qCqdy7g553g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bx2fxnuDVVdxmvEuQmn5y8LM3JiwC+/6qpQLQQ+HfSAiVdQQktEqwD7wJOS2XeaQmWxZMaUjCUKc8MYdGFB4sFjo8t2vv/LurKSSRjz8rMFw466tOPzQf/983y0FsJJ9wQ5aAbVtjp4uF//knhJ/CZawViGN5GTauxH1cl9xsLM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b=tf8mpKrI; arc=none smtp.client-ip=212.227.15.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=spasswolf@web.de header.b="tf8mpKrI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1759752593; x=1760357393; i=spasswolf@web.de; bh=XGzRVf02gTBD3S5SnDTLmspy+qED18SH6HSZJHztyKg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=tf8mpKrIlsk0P07/Z01P6keU4qTA1qIVZh+B3u86TjA6TUi7ZztdT0Zi7auLq6iJ PkiY5naJsaSHabM8UM+qfTvF84AbzVwT5Tg0KTKDE2plLWybpb5H78ay+v2B92TUx m9VogZx4r9StwDk8Xh3z0FO4QJ5kOx38as0hwOFD4K75CtayMGIHx7ad/BMWNohIp cs+uGR0tm2gkeYsJCR0IGLCugnT5D0zb2Xruv6q/YsJM1Qis1vSdflZdy6M1/HwHa OWaNx3RezQrqBk1uHCnkNCuETjZYl1/4aoqps/wyedosiUT6wMaMwfow+O3Zcqry7 bb8/eTdmE7XOqQvBSA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from localhost.localdomain ([95.223.134.88]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MWiA0-1uly8X0Xay-00YNyg; Mon, 06 Oct 2025 14:09:53 +0200 From: Bert Karwatzki To: linux-kernel@vger.kernel.org Cc: Bert Karwatzki , linux-next@vger.kernel.org, linux-stable@vger.kernel.org, regressions@lists.linux.dev, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, Mario Limonciello , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Rafael J . Wysocki" Subject: [REGRESSION 04/04] Crash during resume of pcie bridge Date: Mon, 6 Oct 2025 14:09:43 +0200 Message-ID: <20251006120944.7880-5-spasswolf@web.de> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251006120944.7880-1-spasswolf@web.de> References: <20251006120944.7880-1-spasswolf@web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:FG1MSxGaf1Kex6prA/XwXmhc98V9DcWAHkr6vhcUabn7eKomQ6M gesYkAMgYq8MxGfrt1iQJBvPeWfxsI7o100GV5wBE7xGjF+cCRKsiJHtj3C6P/8ZuWW5iLt AtkiqZErmcitrTrye9FLx+EPsapZXpgRM8EAR2dMe8hvi020xbVqohDIm9GZ2Y3oiRtfEW0 CQp73WNZ6vSR2GB9tFQFg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:q5m2nSVIEqc=;8+GFE8iwWxJYR9t4oyT8iSvBDJN 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 Y2F+l/gX2Rj3Mhz3U= Content-Type: text/plain; charset="utf-8" To further close in on the crash we'll continue testing with=20 6.17.0-rc6-next-20250917-gpudebug-00029-ge797f42363d1 which adds more dev_info()s to the critical part of rpm_resume() and remove= s some unneeded ones: commit e797f42363d101b146971ec4d7e6c90bcc4064cd Author: Bert Karwatzki Date: Mon Oct 6 12:17:16 2025 +0200 power: runtime: and more dev_info()s to rpm_resume() =20 Signed-off-by: Bert Karwatzki diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 27cce7f1b1d3..c99dac998047 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -793,12 +793,8 @@ static int rpm_resume(struct device *dev, int rpmflags) =20 repeat: if (dev->power.runtime_error) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D -EINVAL; } else if (dev->power.disable_depth > 0) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); if (dev->power.runtime_status =3D=3D RPM_ACTIVE && dev->power.last_status =3D=3D RPM_ACTIVE) retval =3D 1; @@ -887,32 +883,22 @@ static int rpm_resume(struct device *dev, int rpmflag= s) * the resume will actually succeed. */ if (dev->power.no_callbacks && !parent && dev->parent) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); spin_lock_nested(&dev->parent->power.lock, SINGLE_DEPTH_NESTING); if (dev->parent->power.disable_depth > 0 || dev->parent->power.ignore_children || dev->parent->power.runtime_status =3D=3D RPM_ACTIVE) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); atomic_inc(&dev->parent->power.child_count); spin_unlock(&dev->parent->power.lock); retval =3D 1; goto no_callback; /* Assume success. */ } spin_unlock(&dev->parent->power.lock); - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); } =20 /* Carry out an asynchronous or a synchronous resume. */ if (rpmflags & RPM_ASYNC) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.request =3D RPM_REQ_RESUME; if (!dev->power.request_pending) { - if (!strcmp(dev_name(dev), "0000:00:01.1")) - dev_info(dev, "%s %d\n", __func__, __LINE__); dev->power.request_pending =3D true; queue_work(pm_wq, &dev->power.work); } @@ -929,8 +915,11 @@ static int rpm_resume(struct device *dev, int rpmflags) if (!strcmp(dev_name(dev), "0000:00:01.1")) dev_info(dev, "%s %d\n", __func__, __LINE__); parent =3D dev->parent; - if (dev->power.irq_safe) + if (dev->power.irq_safe) { + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); goto skip_parent; + } =20 spin_unlock(&dev->power.lock); =20 @@ -966,12 +955,22 @@ static int rpm_resume(struct device *dev, int rpmflag= s) if (dev->power.no_callbacks) goto no_callback; /* Assume success. */ =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); __update_runtime_status(dev, RPM_RESUMING); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); callback =3D RPM_GET_CALLBACK(dev, runtime_resume); =20 + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d callback =3D %0x\n", __func__, __LINE__, (void *) c= allback); dev_pm_disable_wake_irq_check(dev, false); + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); retval =3D rpm_callback(callback, dev); + if (!strcmp(dev_name(dev), "0000:00:01.1")) + dev_info(dev, "%s %d\n", __func__, __LINE__); if (retval) { if (!strcmp(dev_name(dev), "0000:00:01.1")) dev_info(dev, "%s %d\n", __func__, __LINE__); This test is currently running (booted 13:05, 6.10.2025) and I'll expect a = crash after at least 24h of runtime. Bert Karwatzki