diff -u linux-oem-6.5-6.5.0/debian.oem/changelog linux-oem-6.5-6.5.0/debian.oem/changelog --- linux-oem-6.5-6.5.0/debian.oem/changelog +++ linux-oem-6.5-6.5.0/debian.oem/changelog @@ -1,3 +1,22 @@ +linux-oem-6.5 (6.5.0-1022.23) jammy; urgency=medium + + * jammy/linux-oem-6.5: 6.5.0-1022.23 -proposed tracker (LP: #2063441) + + * The keyboard does not work after latest kernel update (LP: #2060727) + - Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID + - Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID + + * Fix random HuC/GuC initialization failure of Intel i915 driver + (LP: #2061049) + - drm/i915/guc: Dump perf_limit_reasons for debug + - drm/i915/huc: Allow for very slow HuC loading + + * Fix acpi_power_meter accessing IPMI region before it's ready (LP: #2059263) + - ACPI: IPMI: Add helper to wait for when SMI is selected + - hwmon: (acpi_power_meter) Ensure IPMI space handler is ready on Dell systems + + -- Timo Aaltonen Thu, 25 Apr 2024 14:15:27 +0300 + linux-oem-6.5 (6.5.0-1020.21) jammy; urgency=medium * jammy/linux-oem-6.5: 6.5.0-1020.21 -proposed tracker (LP: #2059705) diff -u linux-oem-6.5-6.5.0/debian.oem/tracking-bug linux-oem-6.5-6.5.0/debian.oem/tracking-bug --- linux-oem-6.5-6.5.0/debian.oem/tracking-bug +++ linux-oem-6.5-6.5.0/debian.oem/tracking-bug @@ -1 +1 @@ -2059705 s2024.03.04-1 +2063441 2024.04.01-6 diff -u linux-oem-6.5-6.5.0/debian/changelog linux-oem-6.5-6.5.0/debian/changelog --- linux-oem-6.5-6.5.0/debian/changelog +++ linux-oem-6.5-6.5.0/debian/changelog @@ -1,3 +1,22 @@ +linux-oem-6.5 (6.5.0-1022.23) jammy; urgency=medium + + * jammy/linux-oem-6.5: 6.5.0-1022.23 -proposed tracker (LP: #2063441) + + * The keyboard does not work after latest kernel update (LP: #2060727) + - Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID + - Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID + + * Fix random HuC/GuC initialization failure of Intel i915 driver + (LP: #2061049) + - drm/i915/guc: Dump perf_limit_reasons for debug + - drm/i915/huc: Allow for very slow HuC loading + + * Fix acpi_power_meter accessing IPMI region before it's ready (LP: #2059263) + - ACPI: IPMI: Add helper to wait for when SMI is selected + - hwmon: (acpi_power_meter) Ensure IPMI space handler is ready on Dell systems + + -- Timo Aaltonen Thu, 25 Apr 2024 14:15:27 +0300 + linux-oem-6.5 (6.5.0-1020.21) jammy; urgency=medium * jammy/linux-oem-6.5: 6.5.0-1020.21 -proposed tracker (LP: #2059705) diff -u linux-oem-6.5-6.5.0/debian/control linux-oem-6.5-6.5.0/debian/control --- linux-oem-6.5-6.5.0/debian/control +++ linux-oem-6.5-6.5.0/debian/control @@ -70,7 +70,7 @@ XS-Testsuite: autopkgtest #XS-Testsuite-Depends: gcc-4.7 binutils -Package: linux-oem-6.5-headers-6.5.0-1020 +Package: linux-oem-6.5-headers-6.5.0-1022 Build-Profiles: Architecture: all Multi-Arch: foreign @@ -80,20 +80,20 @@ Description: Header files related to Linux kernel version 6.5.0 This package provides kernel header files for version 6.5.0, for sites that want the latest kernel headers. Please read - /usr/share/doc/linux-oem-6.5-headers-6.5.0-1020/debian.README.gz for details + /usr/share/doc/linux-oem-6.5-headers-6.5.0-1022/debian.README.gz for details -Package: linux-oem-6.5-tools-6.5.0-1020 +Package: linux-oem-6.5-tools-6.5.0-1022 Build-Profiles: Architecture: amd64 Section: devel Priority: optional Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common -Description: Linux kernel version specific tools for version 6.5.0-1020 +Description: Linux kernel version specific tools for version 6.5.0-1022 This package provides the architecture dependant parts for kernel version locked tools (such as perf and x86_energy_perf_policy) for - version 6.5.0-1020 on + version 6.5.0-1022 on 64 bit x86. - You probably want to install linux-tools-6.5.0-1020-. + You probably want to install linux-tools-6.5.0-1022-. Package: linux-oem-6.5-tools-host Build-Profiles: @@ -107,17 +107,17 @@ -Package: linux-image-unsigned-6.5.0-1020-oem +Package: linux-image-unsigned-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional Provides: linux-image, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64], ${linux:rprovides} -Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-6.5.0-1020-oem +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-6.5.0-1022-oem Recommends: grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | lilo [amd64] | flash-kernel [armhf arm64] | grub-efi-arm64 [arm64] | grub-efi-arm [armhf] | grub-ieee1275 [ppc64el], initramfs-tools | linux-initramfs-tool Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] -Conflicts: linux-image-6.5.0-1020-oem -Suggests: fdutils, linux-oem-6.5-tools, linux-headers-6.5.0-1020-oem +Conflicts: linux-image-6.5.0-1022-oem +Suggests: fdutils, linux-oem-6.5-tools, linux-headers-6.5.0-1022-oem Description: Linux kernel image for version 6.5.0 on 64 bit x86 SMP This package contains the unsigned Linux kernel image for version 6.5.0 on 64 bit x86 SMP. @@ -130,7 +130,7 @@ the linux-oem meta-package, which will ensure that upgrades work correctly, and that supporting packages are also installed. -Package: linux-modules-6.5.0-1020-oem +Package: linux-modules-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel @@ -150,12 +150,12 @@ the linux-oem meta-package, which will ensure that upgrades work correctly, and that supporting packages are also installed. -Package: linux-modules-extra-6.5.0-1020-oem +Package: linux-modules-extra-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional -Depends: ${misc:Depends}, ${shlibs:Depends}, linux-modules-6.5.0-1020-oem, wireless-regdb +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-modules-6.5.0-1022-oem, wireless-regdb Description: Linux kernel extra modules for version 6.5.0 on 64 bit x86 SMP This package contains the Linux kernel extra modules for version 6.5.0 on 64 bit x86 SMP. @@ -172,21 +172,21 @@ the linux-oem meta-package, which will ensure that upgrades work correctly, and that supporting packages are also installed. -Package: linux-headers-6.5.0-1020-oem +Package: linux-headers-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: devel Priority: optional -Depends: ${misc:Depends}, linux-oem-6.5-headers-6.5.0-1020, ${shlibs:Depends} +Depends: ${misc:Depends}, linux-oem-6.5-headers-6.5.0-1022, ${shlibs:Depends} Provides: linux-headers, linux-headers-3.0 Description: Linux kernel headers for version 6.5.0 on 64 bit x86 SMP This package provides kernel header files for version 6.5.0 on 64 bit x86 SMP. . This is for sites that want the latest kernel headers. Please read - /usr/share/doc/linux-headers-6.5.0-1020/debian.README.gz for details. + /usr/share/doc/linux-headers-6.5.0-1022/debian.README.gz for details. -Package: linux-oem-6.5-lib-rust-6.5.0-1020-oem +Package: linux-oem-6.5-lib-rust-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Multi-Arch: foreign @@ -197,7 +197,7 @@ This package provides kernel library files for version 6.5.0, that allow to compile out-of-tree kernel modules written in Rust. -Package: linux-image-unsigned-6.5.0-1020-oem-dbgsym +Package: linux-image-unsigned-6.5.0-1022-oem-dbgsym Build-Profiles: Architecture: amd64 Section: devel @@ -214,31 +214,31 @@ is uncompressed, and unstripped. This package also includes the unstripped modules. -Package: linux-tools-6.5.0-1020-oem +Package: linux-tools-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: devel Priority: optional -Depends: ${misc:Depends}, linux-oem-6.5-tools-6.5.0-1020 -Description: Linux kernel version specific tools for version 6.5.0-1020 +Depends: ${misc:Depends}, linux-oem-6.5-tools-6.5.0-1022 +Description: Linux kernel version specific tools for version 6.5.0-1022 This package provides the architecture dependant parts for kernel version locked tools (such as perf and x86_energy_perf_policy) for - version 6.5.0-1020 on + version 6.5.0-1022 on 64 bit x86. -Package: linux-cloud-tools-6.5.0-1020-oem +Package: linux-cloud-tools-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: devel Priority: optional -Depends: ${misc:Depends}, linux-oem-6.5-cloud-tools-6.5.0-1020 -Description: Linux kernel version specific cloud tools for version 6.5.0-1020 +Depends: ${misc:Depends}, linux-oem-6.5-cloud-tools-6.5.0-1022 +Description: Linux kernel version specific cloud tools for version 6.5.0-1022 This package provides the architecture dependant parts for kernel - version locked tools for cloud for version 6.5.0-1020 on + version locked tools for cloud for version 6.5.0-1022 on 64 bit x86. -Package: linux-buildinfo-6.5.0-1020-oem +Package: linux-buildinfo-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel @@ -252,18 +252,18 @@ You likely do not want to install this package. -Package: linux-modules-ipu6-6.5.0-1020-oem +Package: linux-modules-ipu6-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional Depends: ${misc:Depends}, - linux-image-6.5.0-1020-oem | linux-image-unsigned-6.5.0-1020-oem, + linux-image-6.5.0-1022-oem | linux-image-unsigned-6.5.0-1022-oem, Built-Using: ${linux:BuiltUsing} -Description: Linux kernel ipu6 modules for version 6.5.0-1020 +Description: Linux kernel ipu6 modules for version 6.5.0-1022 This package provides the Linux kernel ipu6 modules for version - 6.5.0-1020. + 6.5.0-1022. . You likely do not want to install this package directly. Instead, install the one of the linux-modules-ipu6-oem* meta-packages, @@ -271,18 +271,18 @@ also installed. -Package: linux-modules-ivsc-6.5.0-1020-oem +Package: linux-modules-ivsc-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional Depends: ${misc:Depends}, - linux-image-6.5.0-1020-oem | linux-image-unsigned-6.5.0-1020-oem, + linux-image-6.5.0-1022-oem | linux-image-unsigned-6.5.0-1022-oem, Built-Using: ${linux:BuiltUsing} -Description: Linux kernel ivsc modules for version 6.5.0-1020 +Description: Linux kernel ivsc modules for version 6.5.0-1022 This package provides the Linux kernel ivsc modules for version - 6.5.0-1020. + 6.5.0-1022. . You likely do not want to install this package directly. Instead, install the one of the linux-modules-ivsc-oem* meta-packages, @@ -290,18 +290,18 @@ also installed. -Package: linux-modules-iwlwifi-6.5.0-1020-oem +Package: linux-modules-iwlwifi-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional Depends: ${misc:Depends}, - linux-image-6.5.0-1020-oem | linux-image-unsigned-6.5.0-1020-oem, + linux-image-6.5.0-1022-oem | linux-image-unsigned-6.5.0-1022-oem, Built-Using: ${linux:BuiltUsing} -Description: Linux kernel iwlwifi modules for version 6.5.0-1020 +Description: Linux kernel iwlwifi modules for version 6.5.0-1022 This package provides the Linux kernel iwlwifi modules for version - 6.5.0-1020. + 6.5.0-1022. . You likely do not want to install this package directly. Instead, install the one of the linux-modules-iwlwifi-oem* meta-packages, @@ -309,18 +309,18 @@ also installed. -Package: linux-modules-usbio-6.5.0-1020-oem +Package: linux-modules-usbio-6.5.0-1022-oem Build-Profiles: Architecture: amd64 Section: kernel Priority: optional Depends: ${misc:Depends}, - linux-image-6.5.0-1020-oem | linux-image-unsigned-6.5.0-1020-oem, + linux-image-6.5.0-1022-oem | linux-image-unsigned-6.5.0-1022-oem, Built-Using: ${linux:BuiltUsing} -Description: Linux kernel usbio modules for version 6.5.0-1020 +Description: Linux kernel usbio modules for version 6.5.0-1022 This package provides the Linux kernel usbio modules for version - 6.5.0-1020. + 6.5.0-1022. . You likely do not want to install this package directly. Instead, install the one of the linux-modules-usbio-oem* meta-packages, diff -u linux-oem-6.5-6.5.0/drivers/gpu/drm/i915/gt/uc/intel_huc.c linux-oem-6.5-6.5.0/drivers/gpu/drm/i915/gt/uc/intel_huc.c --- linux-oem-6.5-6.5.0/drivers/gpu/drm/i915/gt/uc/intel_huc.c +++ linux-oem-6.5-6.5.0/drivers/gpu/drm/i915/gt/uc/intel_huc.c @@ -6,6 +6,7 @@ #include #include "gt/intel_gt.h" +#include "gt/intel_rps.h" #include "intel_guc_reg.h" #include "intel_huc.h" #include "intel_huc_print.h" @@ -447,17 +448,68 @@ return partial ? "clear media" : "all workloads"; } +/* + * Use a longer timeout for debug builds so that problems can be detected + * and analysed. But a shorter timeout for releases so that user's don't + * wait forever to find out there is a problem. Note that the only reason + * an end user should hit the timeout is in case of extreme thermal throttling. + * And a system that is that hot during boot is probably dead anyway! + */ +#if defined(CONFIG_DRM_I915_DEBUG_GEM) +#define HUC_LOAD_RETRY_LIMIT 20 +#else +#define HUC_LOAD_RETRY_LIMIT 3 +#endif + int intel_huc_wait_for_auth_complete(struct intel_huc *huc, enum intel_huc_authentication_type type) { struct intel_gt *gt = huc_to_gt(huc); - int ret; + struct intel_uncore *uncore = gt->uncore; + ktime_t before, after, delta; + int ret, count; + u64 delta_ms; + u32 before_freq; + + /* + * The KMD requests maximum frequency during driver load, however thermal + * throttling can force the frequency down to minimum (although the board + * really should never get that hot in real life!). IFWI issues have been + * seen to cause sporadic failures to grant the higher frequency. And at + * minimum frequency, the authentication time can be in the seconds range. + * Note that there is a limit on how long an individual wait_for() can wait. + * So wrap it in a loop. + */ + before_freq = intel_rps_read_actual_frequency(>->rps); + before = ktime_get(); + for (count = 0; count < HUC_LOAD_RETRY_LIMIT; count++) { + ret = __intel_wait_for_register(gt->uncore, + huc->status[type].reg, + huc->status[type].mask, + huc->status[type].value, + 2, 1000, NULL); + if (!ret) + break; + + huc_dbg(huc, "auth still in progress, count = %d, freq = %dMHz, status = 0x%08X\n", + count, intel_rps_read_actual_frequency(>->rps), + huc->status[type].reg.reg); + } + after = ktime_get(); + delta = ktime_sub(after, before); + delta_ms = ktime_to_ms(delta); - ret = __intel_wait_for_register(gt->uncore, - huc->status[type].reg, - huc->status[type].mask, - huc->status[type].value, - 2, 50, NULL); + if (delta_ms > 50) { + huc_warn(huc, "excessive auth time: %lldms! [status = 0x%08X, count = %d, ret = %d]\n", + delta_ms, huc->status[type].reg.reg, count, ret); + huc_warn(huc, "excessive auth time: [freq = %dMHz, before = %dMHz, perf_limit_reasons = 0x%08X]\n", + intel_rps_read_actual_frequency(>->rps), before_freq, + intel_uncore_read(uncore, intel_gt_perf_limit_reasons_reg(gt))); + } else { + huc_dbg(huc, "auth took %lldms, freq = %dMHz, before = %dMHz, status = 0x%08X, count = %d, ret = %d\n", + delta_ms, intel_rps_read_actual_frequency(>->rps), + before_freq, huc->status[type].reg.reg, count, ret); + } /* mark the load process as complete even if the wait failed */ delayed_huc_load_complete(huc); diff -u linux-oem-6.5-6.5.0/drivers/hwmon/acpi_power_meter.c linux-oem-6.5-6.5.0/drivers/hwmon/acpi_power_meter.c --- linux-oem-6.5-6.5.0/drivers/hwmon/acpi_power_meter.c +++ linux-oem-6.5-6.5.0/drivers/hwmon/acpi_power_meter.c @@ -884,6 +884,22 @@ strcpy(acpi_device_class(device), ACPI_POWER_METER_CLASS); device->driver_data = resource; +#if IS_REACHABLE(CONFIG_ACPI_IPMI) + /* + * On Dell systems several methods of acpi_power_meter access + * variables in IPMI region, so wait until IPMI space handler is + * installed by acpi_ipmi and also wait until SMI is selected to make + * the space handler fully functional. + */ + if (dmi_match(DMI_SYS_VENDOR, "Dell Inc.")) { + struct acpi_device *ipi_device = acpi_dev_get_first_match_dev("IPI0001", NULL, -1); + + if (ipi_device && acpi_wait_for_acpi_ipmi()) + dev_warn(&device->dev, "Waiting for ACPI IPMI timeout"); + acpi_dev_put(ipi_device); + } +#endif + res = read_capabilities(resource); if (res) goto exit_free; diff -u linux-oem-6.5-6.5.0/drivers/input/keyboard/atkbd.c linux-oem-6.5-6.5.0/drivers/input/keyboard/atkbd.c --- linux-oem-6.5-6.5.0/drivers/input/keyboard/atkbd.c +++ linux-oem-6.5-6.5.0/drivers/input/keyboard/atkbd.c @@ -824,6 +824,11 @@ "keyboard reset failed on %s\n", ps2dev->serio->phys); + if (atkbd_skip_getid(atkbd)) { + atkbd->id = 0xab83; + goto deactivate_kbd; + } + /* * Then we check the keyboard ID. We should get 0xab83 under normal conditions. * Some keyboards report different values, but the first byte is always 0xab or @@ -832,10 +837,10 @@ */ param[0] = param[1] = 0xa5; /* initialize with invalid values */ - if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { + if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { /* - * If the get ID command was skipped or failed, we check if we can at least set + * If the get ID command failed, we check if we can at least set * the LEDs on the keyboard. This should work on every keyboard out there. * It also turns the LEDs off, which we want anyway. */ @@ -858,6 +863,7 @@ return -1; } +deactivate_kbd: /* * Make sure nothing is coming from the keyboard and disturbs our * internal state. diff -u linux-oem-6.5-6.5.0/include/acpi/acpi_bus.h linux-oem-6.5-6.5.0/include/acpi/acpi_bus.h --- linux-oem-6.5-6.5.0/include/acpi/acpi_bus.h +++ linux-oem-6.5-6.5.0/include/acpi/acpi_bus.h @@ -813,11 +813,16 @@ { acpi_dev_put(adev); } + +int acpi_wait_for_acpi_ipmi(void); + #else /* CONFIG_ACPI */ static inline int register_acpi_bus_type(void *bus) { return 0; } static inline int unregister_acpi_bus_type(void *bus) { return 0; } +static inline int acpi_wait_for_acpi_ipmi(void) { return 0; } + #endif /* CONFIG_ACPI */ #endif /*__ACPI_BUS_H__*/ only in patch2: unchanged: --- linux-oem-6.5-6.5.0.orig/drivers/acpi/acpi_ipmi.c +++ linux-oem-6.5-6.5.0/drivers/acpi/acpi_ipmi.c @@ -22,6 +22,8 @@ /* the IPMI timeout is 5s */ #define IPMI_TIMEOUT (5000) #define ACPI_IPMI_MAX_MSG_LENGTH 64 +/* 2s should be suffient for SMI being selected */ +#define ACPI_IPMI_SMI_SELECTION_TIMEOUT (2 * HZ) struct acpi_ipmi_device { /* the device list attached to driver_data.ipmi_devices */ @@ -54,6 +56,7 @@ * to this selected global IPMI system interface. */ struct acpi_ipmi_device *selected_smi; + struct completion smi_selection_done; }; struct acpi_ipmi_msg { @@ -463,8 +466,10 @@ if (temp->handle == handle) goto err_lock; } - if (!driver_data.selected_smi) + if (!driver_data.selected_smi) { driver_data.selected_smi = ipmi_device; + complete(&driver_data.smi_selection_done); + } list_add_tail(&ipmi_device->head, &driver_data.ipmi_devices); mutex_unlock(&driver_data.ipmi_lock); @@ -578,6 +583,20 @@ return status; } +int acpi_wait_for_acpi_ipmi(void) +{ + long ret; + + ret = wait_for_completion_interruptible_timeout(&driver_data.smi_selection_done, + ACPI_IPMI_SMI_SELECTION_TIMEOUT); + + if (ret <= 0) + return -ETIMEDOUT; + + return 0; +} +EXPORT_SYMBOL_GPL(acpi_wait_for_acpi_ipmi); + static int __init acpi_ipmi_init(void) { int result; @@ -586,6 +605,8 @@ if (acpi_disabled) return 0; + init_completion(&driver_data.smi_selection_done); + status = acpi_install_address_space_handler(ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_IPMI, &acpi_ipmi_space_handler, only in patch2: unchanged: --- linux-oem-6.5-6.5.0.orig/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c +++ linux-oem-6.5-6.5.0/drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c @@ -184,7 +184,7 @@ * in the seconds range. However, there is a limit on how long an * individual wait_for() can wait. So wrap it in a loop. */ - before_freq = intel_rps_read_actual_frequency(&uncore->gt->rps); + before_freq = intel_rps_read_actual_frequency(>->rps); before = ktime_get(); for (count = 0; count < GUC_LOAD_RETRY_LIMIT; count++) { ret = wait_for(guc_load_done(uncore, &status, &success), 1000); @@ -192,7 +192,7 @@ break; guc_dbg(guc, "load still in progress, count = %d, freq = %dMHz, status = 0x%08X [0x%02X/%02X]\n", - count, intel_rps_read_actual_frequency(&uncore->gt->rps), status, + count, intel_rps_read_actual_frequency(>->rps), status, REG_FIELD_GET(GS_BOOTROM_MASK, status), REG_FIELD_GET(GS_UKERNEL_MASK, status)); } @@ -204,7 +204,7 @@ u32 bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, status); guc_info(guc, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz, ret = %d\n", - status, delta_ms, intel_rps_read_actual_frequency(&uncore->gt->rps), ret); + status, delta_ms, intel_rps_read_actual_frequency(>->rps), ret); guc_info(guc, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n", REG_FIELD_GET(GS_MIA_IN_RESET, status), bootrom, ukernel, @@ -251,12 +251,14 @@ if (ret == 0) ret = -ENXIO; } else if (delta_ms > 200) { - guc_warn(guc, "excessive init time: %lldms! [freq = %dMHz, before = %dMHz, status = 0x%08X, count = %d, ret = %d]\n", - delta_ms, intel_rps_read_actual_frequency(&uncore->gt->rps), - before_freq, status, count, ret); + guc_warn(guc, "excessive init time: %lldms! [status = 0x%08X, count = %d, ret = %d]\n", + delta_ms, status, count, ret); + guc_warn(guc, "excessive init time: [freq = %dMHz, before = %dMHz, perf_limit_reasons = 0x%08X]\n", + intel_rps_read_actual_frequency(>->rps), before_freq, + intel_uncore_read(uncore, intel_gt_perf_limit_reasons_reg(gt))); } else { guc_dbg(guc, "init took %lldms, freq = %dMHz, before = %dMHz, status = 0x%08X, count = %d, ret = %d\n", - delta_ms, intel_rps_read_actual_frequency(&uncore->gt->rps), + delta_ms, intel_rps_read_actual_frequency(>->rps), before_freq, status, count, ret); }