This commit introduced a divide-by-zero crash on plugging in an external display to the system. Below is the crash.
[ 122.320882] divide error: 0000 [#1] PREEMPT SMP [ 122.320893] Modules linked in: rfcomm i2c_dev uinput snd_soc_hdac_hdmi snd_soc_dmic aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd btusb uvcvideo snd_soc_skl snd_soc_skl_ipc snd_hda_ext_core videobuf2_vmalloc snd_hda_core btrtl videobuf2_memops btbcm videobuf2_v4l2 btintel videobuf2_core bluetooth snd_soc_ssm456 7 fuse cfg80211 nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables r8152 mii joydev snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device ppp_asyn c ppp_generic slhc tun [ 122.321004] CPU: 3 PID: 9307 Comm: DrmThread Tainted: G U 4.6.0-rc3-00039-g11f59d6 #420 [ 122.321008] Hardware name: xxxxxxxxxxxxx, BIOS xxxxx.7820.64.0 03/17/2016 [ 122.321011] task: ffff880071c58e40 ti: ffff880272afc000 task.ti: ffff880272afc000 [ 122.321014] RIP: 0010:[<ffffffffac93c3b8>] [<ffffffffac93c3b8>] skl_update_pipe_wm+0x384/0x814 [ 122.321022] RSP: 0018:ffff880272affa18 EFLAGS: 00010202 [ 122.321025] RAX: 0000000000000000 RBX: ffff8802750a01be RCX: 0000000000010000 [ 122.321028] RDX: 0000000000000000 RSI: 0000000000000004 RDI: 00000000750a01c6 [ 122.321031] RBP: ffff880272affad0 R08: ffff88026c6f7780 R09: ffff8802750a5000 [ 122.321033] R10: ffff880274aea800 R11: 00000000000005a0 R12: ffff880274aea7fc [ 122.321036] R13: 0000000000000000 R14: ffff880274add000 R15: ffff880269571000 [ 122.321039] FS: 00007f8b04a30700(0000) GS:ffff88027ed80000(0000) knlGS:0000000000000000 [ 122.321042] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 122.321045] CR2: 00007f97a0f33000 CR3: 0000000075b08000 CR4: 00000000003406e0 [ 122.321047] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 122.321050] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 122.321053] Stack: [ 122.321056] ffff880274a81598 0000000000000001 ffff880272affa80 ffffffffac9b6973 [ 122.321066] ffff8802750a5000 ffff8802750a5000 ffff88026c6f7780 ffff88026c6f7780 [ 122.321077] ffff8802750a34e8 0000000000000004 0000000000000000 00000000000001ae [ 122.321087] Call Trace: [ 122.321092] [<ffffffffac9b6973>] ? intel_dp_aux_transfer+0x169/0x1d8 [ 122.321096] [<ffffffffac93cbbe>] skl_update_wm+0xf8/0x652 [ 122.321108] [<ffffffffac9790eb>] ? gen9_write32+0x1ba/0x1cc [ 122.321112] [<ffffffffac93debc>] intel_update_watermarks+0x1e/0x20 [ 122.321119] [<ffffffffac994f98>] haswell_crtc_enable+0x359/0x786 [ 122.321123] [<ffffffffac9984b1>] intel_atomic_commit+0x85e/0xff3 [ 122.321127] [<ffffffffac925f75>] ? drm_atomic_check_only+0x3f0/0x55c [ 122.321130] [<ffffffffac92612e>] drm_atomic_commit+0x4d/0x52 [ 122.321135] [<ffffffffac907e06>] drm_atomic_helper_set_config+0x53/0x9e [ 122.321138] [<ffffffffac9183f1>] drm_mode_set_config_internal+0x5e/0xf8 [ 122.321142] [<ffffffffac91c4b1>] drm_mode_setcrtc+0x3e3/0x465 [ 122.321145] [<ffffffffac90f60d>] drm_ioctl+0x274/0x3ce [ 122.321149] [<ffffffffac91c0ce>] ? drm_mode_setplane+0x158/0x158 [ 122.321153] [<ffffffffac6bf6b6>] ? seccomp_phase1+0xf2/0x1ca [ 122.321170] [<ffffffffac714b8f>] ? remove_vma+0x60/0x68 [ 122.321179] [<ffffffffac73dde6>] vfs_ioctl+0x18/0x34 [ 122.321187] [<ffffffffac73e362>] do_vfs_ioctl+0x4a2/0x4c5 [ 122.321199] [<ffffffffac746c18>] ? __fget+0x77/0x83 [ 122.321203] [<ffffffffac73e3dc>] SyS_ioctl+0x57/0x79 [ 122.321207] [<ffffffffac6017a0>] do_syscall_64+0x4c/0x5b [ 122.321212] [<ffffffffacc735fc>] entry_SYSCALL64_slow_path+0x25/0x25 [ 122.321215] Code: f6 4c 89 c7 e8 28 d0 ff ff 89 c0 31 d2 89 df 48 0f af 45 a0 66 42 03 7c 6d c0 48 8b 75 a8 4c 8b 45 80 4c 01 ee 66 41 89 5c b4 0c <48> f7 75 98 8d 1c 07 66 41 89 5c b4 0e 49 8b 40 10 81 b8 8c 00 [ 122.321481] RIP [<ffffffffac93c3b8>] skl_update_pipe_wm+0x384/0x814 [ 122.321488] RSP <ffff880272affa18> [ 122.321491] ---[ end trace a66fed013d3c5bdf ]--- [ 122.321978] Kernel panic - not syncing: Fatal exception [ 122.321999] Kernel Offset: 0x2b600000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) [ 122.324445] ACPI MEMORY or I/O RESET_REG. Thanks, RK -----Original Message----- From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf Of Matt Roper Sent: Monday, March 07, 2016 5:06 PM To: intel-gfx@lists.freedesktop.org Cc: Kumar, Shobhit Subject: [Intel-gfx] [PATCH 4/8] drm/i915/skl+: Use scaling amount for plane data rate calculation (v3) From: "Kumar, Mahesh" <mahesh1.ku...@intel.com<mailto:mahesh1.ku...@intel.com>> if downscaling is enabled plane data rate increases according to scaling amount. take scaling amount under consideration while calculating plane data rate v2: Address Matt's comments, where data rate was overridden because of missing else. v3 (by Matt): - Add braces to 'else' branch to match kernel coding style - Adjust final calculation now that skl_plane_downscale_amount() returns 16.16 fixed point value instead of a decimal fixed point Cc: matthew.d.ro...@intel.com<mailto:matthew.d.ro...@intel.com> Signed-off-by: Kumar, Mahesh <mahesh1.ku...@intel.com<mailto:mahesh1.ku...@intel.com>> Reviewed-by(v2): Matt Roper <matthew.d.ro...@intel.com<mailto:matthew.d.ro...@intel.com>> Signed-off-by: Matt Roper <matthew.d.ro...@intel.com<mailto:matthew.d.ro...@intel.com>> --- drivers/gpu/drm/i915/intel_pm.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index e828bde..041db5d3 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -2974,6 +2974,8 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate, { struct intel_plane_state *intel_pstate = to_intel_plane_state(pstate); struct drm_framebuffer *fb = pstate->fb; + struct intel_plane *intel_plane = to_intel_plane(pstate->plane); + uint32_t down_scale_amount, data_rate; uint32_t width = 0, height = 0; width = drm_rect_width(&intel_pstate->src) >> 16; @@ -2985,15 +2987,20 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate, /* for planar format */ if (fb->pixel_format == DRM_FORMAT_NV12) { if (y) /* y-plane data rate */ - return width * height * + data_rate = width * height * drm_format_plane_cpp(fb->pixel_format, 0); else /* uv-plane data rate */ - return (width / 2) * (height / 2) * + data_rate = (width / 2) * (height / 2) * drm_format_plane_cpp(fb->pixel_format, 1); + } else { + /* for packed formats */ + data_rate = width * height * + drm_format_plane_cpp(fb->pixel_format, 0); } - /* for packed formats */ - return width * height * drm_format_plane_cpp(fb->pixel_format, 0); + down_scale_amount = skl_plane_downscale_amount(intel_plane); + + return data_rate * down_scale_amount >> 16; } /* -- 2.1.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org<mailto:Intel-gfx@lists.freedesktop.org> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx