Message ID | 20220906071457.28881-1-animesh.manna@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] drm/i915/pps: added get_pps_idx() hook as part of pps_get_register() cleanup | expand |
On Tue, 06 Sep 2022, Animesh Manna <animesh.manna@intel.com> wrote: > Simplified pps_get_register() which use get_pps_idx() hook to derive the > pps instance and get_pps_idx() will be initialized at pps_init(). Please use the imperative mood, i.e. "add" in subject, "simplify" here. Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > Signed-off-by: Animesh Manna <animesh.manna@intel.com> > --- > drivers/gpu/drm/i915/display/intel_display_types.h | 1 + > drivers/gpu/drm/i915/display/intel_pps.c | 12 ++++++------ > 2 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h > index 0da9b208d56e..b78b29951241 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > @@ -1693,6 +1693,7 @@ struct intel_dp { > u8 (*preemph_max)(struct intel_dp *intel_dp); > u8 (*voltage_max)(struct intel_dp *intel_dp, > const struct intel_crtc_state *crtc_state); > + int (*get_pps_idx)(struct intel_dp *intel_dp); > > /* Displayport compliance testing */ > struct intel_dp_compliance compliance; > diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c > index 21944f5bf3a8..4e770218e29f 100644 > --- a/drivers/gpu/drm/i915/display/intel_pps.c > +++ b/drivers/gpu/drm/i915/display/intel_pps.c > @@ -362,15 +362,10 @@ static void intel_pps_get_registers(struct intel_dp *intel_dp, > struct pps_registers *regs) > { > struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); > - int pps_idx = 0; > + int pps_idx = intel_dp->get_pps_idx(intel_dp); > > memset(regs, 0, sizeof(*regs)); > > - if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) > - pps_idx = bxt_power_sequencer_idx(intel_dp); > - else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) > - pps_idx = vlv_power_sequencer_pipe(intel_dp); > - > regs->pp_ctrl = PP_CONTROL(pps_idx); > regs->pp_stat = PP_STATUS(pps_idx); > regs->pp_on = PP_ON_DELAYS(pps_idx); > @@ -1432,6 +1427,11 @@ void intel_pps_init(struct intel_dp *intel_dp) > intel_dp->pps.initializing = true; > INIT_DELAYED_WORK(&intel_dp->pps.panel_vdd_work, edp_panel_vdd_work); > > + if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) > + intel_dp->get_pps_idx = bxt_power_sequencer_idx; > + else if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) > + intel_dp->get_pps_idx = vlv_power_sequencer_pipe; > + > pps_init_timestamps(intel_dp); > > with_intel_pps_lock(intel_dp, wakeref) {
Greeting, FYI, we noticed the following commit (built with gcc-11): commit: 9049e3541669439ad54fd8eea147a1447a648af6 ("[Intel-gfx] [PATCH 1/2] drm/i915/pps: added get_pps_idx() hook as part of pps_get_register() cleanup") url: https://github.com/intel-lab-lkp/linux/commits/Animesh-Manna/drm-i915-pps-added-get_pps_idx-hook-as-part-of-pps_get_register-cleanup/20220906-152024 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip patch link: https://lore.kernel.org/intel-gfx/20220906071457.28881-1-animesh.manna@intel.com in testcase: phoronix-test-suite version: with following parameters: need_x: true test: jxrendermark-1.2.4 option_a: 12pt Text Grayscale option_b: 1024x1024 cpufreq_governor: performance test-description: The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added. test-url: http://www.phoronix-test-suite.com/ on test machine: 12 threads 1 sockets Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (Coffee Lake) with 32G memory caused below changes (please refer to attached dmesg/kmsg for entire log/backtrace): If you fix the issue, kindly add following tag | Reported-by: kernel test robot <yujie.liu@intel.com> | Link: https://lore.kernel.org/r/202209211544.660c8485-yujie.liu@intel.com [ 25.085807][ T263] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 25.093813][ T124] i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin. Disabling runtime power management. [ 25.101389][ T263] #PF: supervisor instruction fetch in kernel mode [ 25.101390][ T263] #PF: error_code(0x0010) - not-present page [ 25.101391][ T263] PGD 0 [ 25.113339][ T124] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915 [ 25.119622][ T263] P4D 0 [ 25.119623][ T263] Oops: 0010 [#1] SMP PTI [ 25.148480][ T263] CPU: 6 PID: 263 Comm: systemd-udevd Not tainted 6.0.0-rc4-00599-g9049e3541669 #1 [ 25.157520][ T263] Hardware name: Dell Inc. OptiPlex 7060/0C96W1, BIOS 1.4.2 06/11/2019 [ 25.165518][ T263] RIP: 0010:0x0 [ 25.168806][ T263] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 25.176294][ T263] RSP: 0018:ffffc90000db3958 EFLAGS: 00010246 [ 25.182148][ T263] RAX: 0000000000000000 RBX: ffffc90000db397c RCX: 0000000000000002 [ 25.189892][ T263] RDX: ffff888879125100 RSI: ffffc90000db397c RDI: ffff888874292170 [ 25.197638][ T263] RBP: ffff8888767b0000 R08: 0000000000000000 R09: ffffffff82858240 [ 25.205378][ T263] R10: ffffffffffffffff R11: ffff8881010d3fcd R12: ffff888874292170 [ 25.213120][ T263] R13: ffff8888767b0000 R14: ffff888874292170 R15: 0000000000000000 [ 25.220862][ T263] FS: 00007f51727748c0(0000) GS:ffff888853d80000(0000) knlGS:0000000000000000 [ 25.229550][ T263] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 25.235921][ T263] CR2: ffffffffffffffd6 CR3: 0000000105a1a001 CR4: 00000000003706e0 [ 25.243667][ T263] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 25.251444][ T263] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 25.259293][ T263] Call Trace: [ 25.262404][ T263] <TASK> [ 25.265171][ T263] intel_pps_get_registers (drivers/gpu/drm/i915/display/intel_pps.c:365) i915 [ 25.270930][ T263] intel_pps_readout_hw_state (drivers/gpu/drm/i915/display/intel_pps.c:1110) i915 [ 25.277023][ T263] ? intel_display_power_grab_async_put_ref (arch/x86/include/asm/bitops.h:240 include/asm-generic/bitops/instrumented-non-atomic.h:142 drivers/gpu/drm/i915/display/intel_display_power.c:454) i915 [ 25.284319][ T263] pps_init_delays (drivers/gpu/drm/i915/display/intel_pps.c:1180 drivers/gpu/drm/i915/display/intel_pps.c:1251) i915 [ 25.289464][ T263] intel_pps_init (drivers/gpu/drm/i915/display/intel_pps.c:1442 (discriminator 2)) i915 [ 25.294526][ T263] intel_edp_init_connector (drivers/gpu/drm/i915/display/intel_dp.c:5228) i915 [ 25.300443][ T263] ? pm_qos_update_target (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 include/trace/events/power.h:454 kernel/power/qos.c:137) [ 25.305531][ T263] intel_dp_init_connector (drivers/gpu/drm/i915/display/intel_dp.c:5416) i915 [ 25.311453][ T263] intel_ddi_init (drivers/gpu/drm/i915/display/intel_ddi.c:3844 drivers/gpu/drm/i915/display/intel_ddi.c:4500) i915 [ 25.316606][ T263] intel_setup_outputs (drivers/gpu/drm/i915/display/intel_display.c:7998) i915 [ 25.322184][ T263] intel_modeset_init_nogem (drivers/gpu/drm/i915/display/intel_display.c:8782) i915 [ 25.328199][ T263] i915_driver_probe (drivers/gpu/drm/i915/i915_driver.c:931) i915 [ 25.333594][ T263] ? i915_pci_probe (drivers/gpu/drm/i915/i915_pci.c:1318) i915 [ 25.338823][ T263] local_pci_probe (drivers/pci/pci-driver.c:324) [ 25.343236][ T263] pci_call_probe (drivers/pci/pci-driver.c:392) [ 25.347639][ T263] ? kernfs_create_link (fs/kernfs/symlink.c:48) [ 25.352470][ T263] pci_device_probe (drivers/pci/pci-driver.c:461) [ 25.357041][ T263] really_probe (drivers/base/dd.c:560 drivers/base/dd.c:639) [ 25.361271][ T263] ? pm_runtime_barrier (arch/x86/include/asm/paravirt.h:596 arch/x86/include/asm/qspinlock.h:57 include/linux/spinlock.h:202 include/linux/spinlock_api_smp.h:158 include/linux/spinlock.h:399 drivers/base/power/runtime.c:1410) [ 25.366100][ T263] __driver_probe_device (drivers/base/dd.c:778) [ 25.371102][ T263] driver_probe_device (drivers/base/dd.c:808) [ 25.375848][ T263] __driver_attach (drivers/base/dd.c:1191) [ 25.380332][ T263] ? __device_attach_driver (drivers/base/dd.c:1135) [ 25.385674][ T263] ? __device_attach_driver (drivers/base/dd.c:1135) [ 25.391019][ T263] bus_for_each_dev (drivers/base/bus.c:301) [ 25.395504][ T263] bus_add_driver (drivers/base/bus.c:618) [ 25.399991][ T263] driver_register (drivers/base/driver.c:240) [ 25.404478][ T263] i915_init (drivers/gpu/drm/i915/i915_driver.c:1788) i915 [ 25.409012][ T263] ? 0xffffffffa06c4000 [ 25.412980][ T263] do_one_initcall (init/main.c:1296) [ 25.417463][ T263] ? __cond_resched (kernel/sched/core.c:8317) [ 25.421946][ T263] ? kmem_cache_alloc_trace (mm/slub.c:3245 mm/slub.c:3251 mm/slub.c:3282) [ 25.427291][ T263] do_init_module (kernel/module/main.c:2457) [ 25.431694][ T263] __do_sys_finit_module (kernel/module/main.c:2956) [ 25.436692][ T263] do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80) [ 25.440921][ T263] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120) [ 25.446609][ T263] RIP: 0033:0x7f51715ee229 [ 25.450837][ T263] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 3f 4c 2b 00 f7 d8 64 89 01 48 All code ======== 0: 00 f3 add %dh,%bl 2: c3 retq 3: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) a: 00 00 00 d: 0f 1f 40 00 nopl 0x0(%rax) 11: 48 89 f8 mov %rdi,%rax 14: 48 89 f7 mov %rsi,%rdi 17: 48 89 d6 mov %rdx,%rsi 1a: 48 89 ca mov %rcx,%rdx 1d: 4d 89 c2 mov %r8,%r10 20: 4d 89 c8 mov %r9,%r8 23: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 28: 0f 05 syscall 2a:* 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax <-- trapping instruction 30: 73 01 jae 0x33 32: c3 retq 33: 48 8b 0d 3f 4c 2b 00 mov 0x2b4c3f(%rip),%rcx # 0x2b4c79 3a: f7 d8 neg %eax 3c: 64 89 01 mov %eax,%fs:(%rcx) 3f: 48 rex.W Code starting with the faulting instruction =========================================== 0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 6: 73 01 jae 0x9 8: c3 retq 9: 48 8b 0d 3f 4c 2b 00 mov 0x2b4c3f(%rip),%rcx # 0x2b4c4f 10: f7 d8 neg %eax 12: 64 89 01 mov %eax,%fs:(%rcx) 15: 48 rex.W [ 25.470070][ T263] RSP: 002b:00007fffa9a6cac8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 25.478241][ T263] RAX: ffffffffffffffda RBX: 0000555d50475120 RCX: 00007f51715ee229 [ 25.485984][ T263] RDX: 0000000000000000 RSI: 00007f5171f07265 RDI: 0000000000000017 [ 25.493728][ T263] RBP: 00007f5171f07265 R08: 0000000000000000 R09: 00007fffa9a6d040 [ 25.501470][ T263] R10: 0000000000000017 R11: 0000000000000246 R12: 0000000000000000 [ 25.509212][ T263] R13: 0000555d5046b550 R14: 0000000000020000 R15: 0000555d4f1c2cbc [ 25.516958][ T263] </TASK> [ 25.519811][ T263] Modules linked in: i915(+) drm_buddy intel_gtt drm_display_helper sd_mod t10_pi crc64_rocksoft_generic ttm crc64_rocksoft crc64 intel_rapl_msr intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul drm_kms_helper crc32_pclmul crc32c_intel ghash_clmulni_intel mei_wdt intel_wmi_thunderbolt wmi_bmof syscopyarea sysfillrect ahci sysimgblt rapl fb_sys_fops intel_cstate libahci mei_me intel_uncore i2c_designware_platform libata drm mei i2c_designware_core idma64 intel_pch_thermal wmi video intel_pmc_core acpi_pad [ 25.570311][ T263] CR2: 0000000000000000 [ 25.574287][ T263] ---[ end trace 0000000000000000 ]--- If you fix the issue, kindly add following tag | Reported-by: kernel test robot <yujie.liu@intel.com> | Link: https://lore.kernel.org/r/202209211544.660c8485-yujie.liu@intel.com To reproduce: git clone https://github.com/intel/lkp-tests.git cd lkp-tests sudo bin/lkp install job.yaml # job file is attached in this email bin/lkp split-job --compatible job.yaml # generate the yaml file for lkp run sudo bin/lkp run generated-yaml-file # if come across any failure that blocks the test, # please remove ~/.lkp and /lkp dir to run from a clean state.
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index 0da9b208d56e..b78b29951241 100644 --- a/drivers/gpu/drm/i915/display/intel_display_types.h +++ b/drivers/gpu/drm/i915/display/intel_display_types.h @@ -1693,6 +1693,7 @@ struct intel_dp { u8 (*preemph_max)(struct intel_dp *intel_dp); u8 (*voltage_max)(struct intel_dp *intel_dp, const struct intel_crtc_state *crtc_state); + int (*get_pps_idx)(struct intel_dp *intel_dp); /* Displayport compliance testing */ struct intel_dp_compliance compliance; diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c index 21944f5bf3a8..4e770218e29f 100644 --- a/drivers/gpu/drm/i915/display/intel_pps.c +++ b/drivers/gpu/drm/i915/display/intel_pps.c @@ -362,15 +362,10 @@ static void intel_pps_get_registers(struct intel_dp *intel_dp, struct pps_registers *regs) { struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); - int pps_idx = 0; + int pps_idx = intel_dp->get_pps_idx(intel_dp); memset(regs, 0, sizeof(*regs)); - if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) - pps_idx = bxt_power_sequencer_idx(intel_dp); - else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) - pps_idx = vlv_power_sequencer_pipe(intel_dp); - regs->pp_ctrl = PP_CONTROL(pps_idx); regs->pp_stat = PP_STATUS(pps_idx); regs->pp_on = PP_ON_DELAYS(pps_idx); @@ -1432,6 +1427,11 @@ void intel_pps_init(struct intel_dp *intel_dp) intel_dp->pps.initializing = true; INIT_DELAYED_WORK(&intel_dp->pps.panel_vdd_work, edp_panel_vdd_work); + if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) + intel_dp->get_pps_idx = bxt_power_sequencer_idx; + else if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) + intel_dp->get_pps_idx = vlv_power_sequencer_pipe; + pps_init_timestamps(intel_dp); with_intel_pps_lock(intel_dp, wakeref) {
Simplified pps_get_register() which use get_pps_idx() hook to derive the pps instance and get_pps_idx() will be initialized at pps_init(). Signed-off-by: Animesh Manna <animesh.manna@intel.com> --- drivers/gpu/drm/i915/display/intel_display_types.h | 1 + drivers/gpu/drm/i915/display/intel_pps.c | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-)