[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init
== Series Details == Series: series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init URL : https://patchwork.freedesktop.org/series/53185/ State : success == Summary == CI Bug Log - changes from CI_DRM_5216_full -> Patchwork_10936_full Summary --- **SUCCESS** No regressions found. Known issues Here are the changes found in Patchwork_10936_full that come from known issues: ### IGT changes ### Issues hit * igt@drm_import_export@import-close-race-flink: - shard-skl: PASS -> TIMEOUT [fdo#108667] * igt@gem_exec_whisper@normal: - shard-skl: PASS -> TIMEOUT [fdo#108592] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - shard-skl: PASS -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-a-crc-primary-rotation-180: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +3 * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-glk: PASS -> FAIL [fdo#103232] +1 * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_flip_tiling@flip-to-y-tiled: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff: - shard-apl: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite: - shard-glk: PASS -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@fbc-stridechange: - {shard-iclb}: PASS -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] * igt@kms_frontbuffer_tracking@fbcpsr-stridechange: - {shard-iclb}: PASS -> FAIL [fdo#105683] * igt@kms_panel_fitting@legacy: - shard-skl: NOTRUN -> FAIL [fdo#105456] * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max: - shard-glk: PASS -> FAIL [fdo#108145] * igt@kms_plane_lowres@pipe-b-tiling-yf: - shard-apl: PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +6 * igt@kms_plane_multiple@atomic-pipe-a-tiling-x: - shard-apl: PASS -> FAIL [fdo#103166] +2 * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-glk: PASS -> FAIL [fdo#103166] +1 - {shard-iclb}: NOTRUN -> FAIL [fdo#103166] +1 * igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90: - {shard-iclb}: PASS -> FAIL [fdo#103925] * igt@kms_setmode@basic: - shard-apl: PASS -> FAIL [fdo#99912] - shard-skl: NOTRUN -> FAIL [fdo#99912] * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +3 * igt@pm_backlight@fade_with_suspend: - shard-skl: NOTRUN -> FAIL [fdo#107847] * igt@pm_rpm@legacy-planes: - {shard-iclb}: PASS -> DMESG-WARN [fdo#108654] * igt@pm_rpm@system-suspend-execbuf: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107807] - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] / [fdo#108840] * igt@pm_rps@min-max-config-loaded: - {shard-iclb}: NOTRUN -> FAIL [fdo#102250] * {igt@runner@aborted}: - {shard-iclb}: NOTRUN -> FAIL [fdo#108756] Possible fixes * igt@gem_eio@in-flight-1us: - shard-glk: INCOMPLETE [fdo#103359] / [k.org#198133] -> PASS * igt@kms_color@pipe-c-ctm-0-5: - shard-skl: FAIL [fdo#108682] -> PASS * igt@kms_cursor_crc@cursor-128x42-random: - shard-glk: FAIL [fdo#103232] -> PASS * igt@kms_cursor_crc@cursor-64x21-random: - shard-skl: FAIL [fdo#103232] -> PASS * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: FAIL [fdo#104873] -> PASS * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible: - shard-glk: FAIL [fdo#105363] -> PASS * igt@kms_flip@flip-vs-expired-vblank: - shard-glk: FAIL [fdo#102887] / [fdo#105363] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move: - shard-glk: FAIL [fdo#103167] -> PASS +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move: - shard-apl: FAIL [fdo#103167] -> PASS * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move: - {shard-iclb}: FAIL [fdo#103167] -> PASS +1 * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
Re: [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id following atomic guidelines (rev2)
Hi, > -Original Message- > From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf Of > Rodrigo Vivi > Sent: torstai 29. marraskuuta 2018 8.18 > To: Souza, Jose > Cc: intel-gfx@lists.freedesktop.org > Subject: Re: [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id > following atomic guidelines (rev2) > > On Wed, Nov 28, 2018 at 02:13:12PM -0800, Souza, Jose wrote: > > On Wed, 2018-11-28 at 21:02 +, Patchwork wrote: > > > == Series Details == > > > > > > Series: drm/i915/psr: Get pipe id following atomic guidelines (rev2) > > > URL : https://patchwork.freedesktop.org/series/53132/ > > > State : failure > > > > > > == Summary == > > > > > > CI Bug Log - changes from CI_DRM_5216 -> Patchwork_10934 > > > > > > > > > Summary > > > --- > > > > > > **FAILURE** > > > > > > Serious unknown changes coming with Patchwork_10934 absolutely > > > need to be > > > verified manually. > > > > > > If you think the reported changes have nothing to do with the > > > changes > > > introduced in Patchwork_10934, please notify your bug team to > > > allow them > > > to document this new failure mode, which will reduce false > > > positives in CI. > > > > > > External URL: > > > https://patchwork.freedesktop.org/api/1.0/series/53132/revisions/2/m > > > box/ > > > > > > Possible new issues > > > --- > > > > > > Here are the unknown changes that may have been introduced in > > > Patchwork_10934: > > > > > > ### IGT changes ### > > > > > > Possible regressions > > > > > > * igt@i915_selftest@live_sanitycheck: > > > - fi-apl-guc: PASS -> DMESG-WARN > > > > > > * {igt@runner@aborted}: > > > - fi-apl-guc: NOTRUN -> FAIL > > > > Both are pretty much non related with display, what do you think > > Rodrigo? It is a merge blocker? > > I got addicted to see all green on CI. So I always prefer to trigger a > retest. So > anyone following the link that is merged with the patch doens't have to > understand and analyze why it was merged with BAT failure. > > I just triggered the re-test for this patch. Martin, Arek, fyi, not preferred? > > Thanks, > Rodrigo. > > > > > > > > > > > > Known issues > > > > > > > > > Here are the changes found in Patchwork_10934 that come from known > > > issues: > > > > > > ### IGT changes ### > > > > > > Issues hit > > > > > > * igt@i915_selftest@live_hangcheck: > > > - fi-kbl-7560u: PASS -> INCOMPLETE [fdo#108044] > > > > > > * igt@kms_pipe_crc_basic@read-crc-pipe-a: > > > - fi-byt-clapper: PASS -> FAIL [fdo#107362] > > > > > > > > > {name}: This element is suppressed. This means it is ignored when > > > computing > > > the status of the difference (SUCCESS, WARNING, or > > > FAILURE). > > > > > > [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 > > > [fdo#108044]: https://bugs.freedesktop.org/show_bug.cgi?id=108044 > > > > > > > > > Participating hosts (50 -> 44) > > > -- > > > > > > Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt- > > > squawks fi-bsw-cyan fi-ctg-p8600 > > > > > > > > > Build changes > > > - > > > > > > * Linux: CI_DRM_5216 -> Patchwork_10934 > > > > > > CI_DRM_5216: 2236cef56d19627516af1f1b19b155d65fbc9834 @ > > > git://anongit.freedesktop.org/gfx-ci/linux > > > IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ > > > git://anongit.freedesktop.org/xorg/app/intel-gpu-tools > > > Patchwork_10934: 2ebde49b2d0906d8106b020a2b0480bc5f552a01 @ > > > git://anongit.freedesktop.org/gfx-ci/linux > > > > > > > > > == Linux commits == > > > > > > 2ebde49b2d09 drm/i915/psr: Get pipe id following atomic guidelines > > > > > > == Logs == > > > > > > For more details see: > > > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10934/ > > > ___ > Intel-gfx mailing list > 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
Re: [Intel-gfx] [PATCH v2] Return only active connectors for get_resources ioctl
On Wed, 2018-11-28 at 22:21 +0100, Daniel Vetter wrote: > On Wed, Nov 28, 2018 at 09:51:13PM +0100, Daniel Vetter wrote: > > On Wed, Nov 28, 2018 at 03:55:58PM +0200, Stanislav Lisovskiy > > wrote: > > > Currently kernel might allocate different connector ids > > > for the same outputs in case of DP MST, which seems to > > > confuse userspace. There are can be different connector > > > ids in the list, which could be assigned to the same > > > output, while being in different states. > > > This results in issues, like external displays staying > > > blank after quick unplugging and plugging back(bug #106250). > > > Returning only active DP connectors fixes the issue. > > > > > > v2: Removed caps from the title > > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 > > > Signed-off-by: Stanislav Lisovskiy > > > > > > --- > > > drivers/gpu/drm/drm_mode_config.c | 16 +++- > > > 1 file changed, 11 insertions(+), 5 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_mode_config.c > > > b/drivers/gpu/drm/drm_mode_config.c > > > index ee80788f2c40..ec5b2b08a45e 100644 > > > --- a/drivers/gpu/drm/drm_mode_config.c > > > +++ b/drivers/gpu/drm/drm_mode_config.c > > > @@ -143,6 +143,7 @@ int drm_mode_getresources(struct drm_device > > > *dev, void *data, > > > drm_connector_list_iter_begin(dev, _iter); > > > count = 0; > > > connector_id = u64_to_user_ptr(card_res- > > > >connector_id_ptr); > > > + DRM_DEBUG_KMS("GetResources: writing connectors start"); > > > drm_for_each_connector_iter(connector, _iter) { > > > /* only expose writeback connectors if userspace > > > understands them */ > > > if (!file_priv->writeback_connectors && > > > @@ -150,15 +151,20 @@ int drm_mode_getresources(struct drm_device > > > *dev, void *data, > > > continue; > > > > > > if (drm_lease_held(file_priv, connector- > > > >base.id)) { > > > - if (count < card_res->count_connectors > > > && > > > - put_user(connector->base.id, > > > connector_id + count)) { > > > - drm_connector_list_iter_end( > > > n_iter); > > > - return -EFAULT; > > > + if (connector->connector_type != > > > DRM_MODE_CONNECTOR_DisplayPort || > > > + connector->status != > > > connector_status_disconnected) { > > > + if (count < card_res- > > > >count_connectors && > > > + put_user(connector->base.id, > > > connector_id + count)) { > > > + drm_connector_list_iter_ > > > end(_iter); > > > + return -EFAULT; > > > + } > > > + DRM_DEBUG_KMS("GetResources: > > > connector %s", connector->name); > > > + count++; > > > > I tried to read the bug and I have no idea what's going on here. > > Userspace > > is supposed to shut off outputs that are disconnected, whether > > that's DP, > > DP MST or something else shouldn't matter. New connectors can > > come as > > they see fit. Also not really something special. > > > > Why do we need to dynamically hide an output here? Note that this > > also > > affects normal DP ports, which I have no idea is actually what you > > want to > > do or not. This bug is real and easily reproducible with recent drm-tip. Unplugging and then quickly plugging back periodically leaves both my external displays connected to the docking station blank, there are also many duplicate bugs for this, which I simply didn't track. This patch at least fixes that annoying thing. The userspace seems to get confused when we are returning two different connector ids, one in disconnected state and another in connected state for the same output. This results in userspace believing that nothing had changed and drm_mode_setcrtc call is not required( I have done traces confirming that theory). This could be also fixed in userspace by checking connectors more carefully - that fix I've also implemented for Intel DDX and attached to the bug, however seems that this happens also for Wayland. > > For entertainment and other reasons, testing the below diff would be > interesting. > > > diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c > b/drivers/gpu/drm/i915/intel_dp_mst.c > index 4de247ddf05f..e1b66396c83b 100644 > --- a/drivers/gpu/drm/i915/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/intel_dp_mst.c > @@ -499,6 +499,8 @@ static void > intel_dp_register_mst_connector(struct drm_connector *connector) > drm_fb_helper_add_one_connector(_priv->fbdev- > >helper, > connector); > > + list_move(>head, >dev- > >mode_config.connector_list); > + > drm_connector_register(connector); > } > -- Best Regards, Lisovskiy Stanislav ___ Intel-gfx mailing list
[Intel-gfx] ✗ Fi.CI.BAT: failure for Support 64 bpp half float formats
== Series Details == Series: Support 64 bpp half float formats URL : https://patchwork.freedesktop.org/series/53212/ State : failure == Summary == Applying: drm/fourcc: Add 64 bpp half float formats Applying: drm: Add optional PIXEL_NORMALIZE_RANGE property to drm_plane Applying: drm/i915: Implement half float formats and pixel normalize property Using index info to reconstruct a base tree... M drivers/gpu/drm/i915/intel_display.c M drivers/gpu/drm/i915/intel_drv.h M drivers/gpu/drm/i915/intel_sprite.c Falling back to patching base and 3-way merge... Auto-merging drivers/gpu/drm/i915/intel_sprite.c CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/intel_sprite.c Auto-merging drivers/gpu/drm/i915/intel_drv.h Auto-merging drivers/gpu/drm/i915/intel_display.c error: Failed to merge in the changes. Patch failed at 0003 drm/i915: Implement half float formats and pixel normalize property Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 1/3] drm/fourcc: Add 64 bpp half float formats
Add 64 bpp 16:16:16:16 half float pixel formats. Each 16 bit component is formatted in IEEE-754 half-precision float (binary16) 1:5:10 MSb-sign:exponent:fraction form. An 'is_fp' attribute is added to drm_format_info so that drivers can easily distinguish these formats from those that might contain uint pixel data. This patch attempts to address the feedback provided when 2 of these formats were previosly proposed: https://patchwork.kernel.org/patch/10072545/ Signed-off-by: Kevin Strasser Cc: Tina Zhang Cc: Uma Shankar Cc: Shashank Sharma Cc: Ville Syrjälä Cc: David Airlie Cc: Daniel Vetter Cc: dri-de...@lists.freedesktop.org --- drivers/gpu/drm/drm_fourcc.c | 4 include/drm/drm_fourcc.h | 3 +++ include/uapi/drm/drm_fourcc.h | 6 ++ 3 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c index f523948..a7b969a 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -198,6 +198,10 @@ const struct drm_format_info *__drm_format_info(u32 format) { .format = DRM_FORMAT_ABGR,.depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, { .format = DRM_FORMAT_RGBA,.depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, { .format = DRM_FORMAT_BGRA,.depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, + { .format = DRM_FORMAT_XRGB16161616H, .depth = 48, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_fp = true }, + { .format = DRM_FORMAT_XBGR16161616H, .depth = 48, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_fp = true }, + { .format = DRM_FORMAT_ARGB16161616H, .depth = 64, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true, .is_fp = true }, + { .format = DRM_FORMAT_ABGR16161616H, .depth = 64, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true, .is_fp = true }, { .format = DRM_FORMAT_RGB888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, { .format = DRM_FORMAT_BGR888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, { .format = DRM_FORMAT_XRGB_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h index bcb389f..2c5aa19 100644 --- a/include/drm/drm_fourcc.h +++ b/include/drm/drm_fourcc.h @@ -133,6 +133,9 @@ struct drm_format_info { /** @is_yuv: Is it a YUV format? */ bool is_yuv; + + /** @is_fp: Is it a floating point format? */ + bool is_fp; }; /** diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h index e7e48f1f..530bce4 100644 --- a/include/uapi/drm/drm_fourcc.h +++ b/include/uapi/drm/drm_fourcc.h @@ -144,6 +144,12 @@ extern "C" { #define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ #define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ +/* 64 bpp RGB IEEE-754 half-precision float (binary16) */ +#define DRM_FORMAT_XBGR16161616H fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */ +#define DRM_FORMAT_ABGR16161616H fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ +#define DRM_FORMAT_XRGB16161616H fourcc_code('X', 'R', '4', 'H') /* [63:0] x:R:G:B 16:16:16:16 little endian */ +#define DRM_FORMAT_ARGB16161616H fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */ + /* packed YCbCr */ #define DRM_FORMAT_YUYVfourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */ #define DRM_FORMAT_YVYUfourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */ -- 2.7.4 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/3] drm: Add optional PIXEL_NORMALIZE_RANGE property to drm_plane
Add an optional property to allow applications to indicate what range their floating point pixel data is normalized to. Drivers are free to choose what ranges they want to support and can attach this property to each plane that actually supports floating point formats Signed-off-by: Kevin Strasser Cc: Uma Shankar Cc: Shashank Sharma Cc: Ville Syrjälä Cc: David Airlie Cc: Daniel Vetter Cc: dri-de...@lists.freedesktop.org --- drivers/gpu/drm/drm_atomic.c| 2 ++ drivers/gpu/drm/drm_atomic_uapi.c | 4 +++ drivers/gpu/drm/drm_color_mgmt.c| 68 + drivers/gpu/drm/drm_crtc_internal.h | 1 + include/drm/drm_color_mgmt.h| 9 + include/drm/drm_plane.h | 14 6 files changed, 98 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 1706ed1..1f520ef 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -624,6 +624,8 @@ static void drm_atomic_plane_print_state(struct drm_printer *p, drm_get_color_encoding_name(state->color_encoding)); drm_printf(p, "\tcolor-range=%s\n", drm_get_color_range_name(state->color_range)); + drm_printf(p, "\tpixel-normalize-range=%s\n", + drm_get_pixel_normalize_range_name(state->pixel_normalize_range)); if (plane->funcs->atomic_print_state) plane->funcs->atomic_print_state(p, state); diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index 86ac339..e79a23cd 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -566,6 +566,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane, state->color_encoding = val; } else if (property == plane->color_range_property) { state->color_range = val; + } else if (property == plane->pixel_normalize_range_property) { + state->pixel_normalize_range = val; } else if (plane->funcs->atomic_set_property) { return plane->funcs->atomic_set_property(plane, state, property, val); @@ -621,6 +623,8 @@ drm_atomic_plane_get_property(struct drm_plane *plane, *val = state->color_encoding; } else if (property == plane->color_range_property) { *val = state->color_range; + } else if (property == plane->pixel_normalize_range_property) { + *val = state->pixel_normalize_range; } else if (plane->funcs->atomic_get_property) { return plane->funcs->atomic_get_property(plane, state, property, val); } else { diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c index 581cc37..b1e2a0a 100644 --- a/drivers/gpu/drm/drm_color_mgmt.c +++ b/drivers/gpu/drm/drm_color_mgmt.c @@ -472,3 +472,71 @@ int drm_plane_create_color_properties(struct drm_plane *plane, return 0; } EXPORT_SYMBOL(drm_plane_create_color_properties); + +static const char * const pixel_normalize_range_name[] = { + [DRM_PIXEL_NORMALIZE_RANGE_0_1] = "0.0 - 1.0", + [DRM_PIXEL_NORMALIZE_RANGE_0_255] = "0.0 - 255.0", +}; + +/** + * drm_get_pixel_normalize_range_name - return a string for pixel normalize + * range + * @range: pixel normalize range to compute name of + * + * In contrast to the other drm_get_*_name functions this one here returns a + * const pointer and hence is threadsafe. + */ +const char *drm_get_pixel_normalize_range_name(enum drm_pixel_normalize_range range) +{ + if (WARN_ON(range >= ARRAY_SIZE(pixel_normalize_range_name))) + return "unknown"; + + return pixel_normalize_range_name[range]; +} + +/** + * drm_plane_create_pixel_normalize_range_property - pixel normalize range + * property + * @plane: plane object + * @supported_ranges: bitfield indicating supported normalize ranges + * @default_range: default normalize range + * + * Create and attach plane specific PIXEL_NORMALIZE_RANGE property to @plane. + * The supported ranges should be provided in supported_ranges bitmask. Eeach + * bit set in the bitmask indicates that its number as enum value is supported. + */ +int drm_plane_create_pixel_normalize_range_property(struct drm_plane *plane, + u32 supported_ranges, enum drm_pixel_normalize_range default_range) +{ + struct drm_property *prop; + struct drm_prop_enum_list enum_list[DRM_PIXEL_NORMALIZE_RANGE_MAX]; + int i, len = 0; + + if (WARN_ON(supported_ranges == 0 || + (supported_ranges & -BIT(DRM_PIXEL_NORMALIZE_RANGE_MAX)) != 0 || + (supported_ranges & BIT(default_range)) == 0)) + return -EINVAL; + + for (i = 0; i < DRM_PIXEL_NORMALIZE_RANGE_MAX; i++) { + if ((supported_ranges & BIT(i)) == 0) + continue; + + enum_list[len].type = i; +
[Intel-gfx] [PATCH 0/3] Support 64 bpp half float formats
This series defines new formats and adds a plane property to be used for floating point framebuffer content. Implementation is then added to i915. I have shared an IGT branch which adds test coverage for the new formats: https://github.com/strassek/xorg-intel-gpu-tools/tree/fp16 Kevin Strasser (3): drm/fourcc: Add 64 bpp half float formats drm: Add optional PIXEL_NORMALIZE_RANGE property to drm_plane drm/i915: Implement half float formats and pixel normalize property drivers/gpu/drm/drm_atomic.c | 2 + drivers/gpu/drm/drm_atomic_uapi.c| 4 ++ drivers/gpu/drm/drm_color_mgmt.c | 67 +++ drivers/gpu/drm/drm_crtc_internal.h | 1 + drivers/gpu/drm/drm_fourcc.c | 4 ++ drivers/gpu/drm/i915/i915_reg.h | 15 - drivers/gpu/drm/i915/intel_display.c | 47 drivers/gpu/drm/i915/intel_drv.h | 5 ++ drivers/gpu/drm/i915/intel_sprite.c | 82 ++-- include/drm/drm_color_mgmt.h | 9 +++ include/drm/drm_fourcc.h | 3 + include/drm/drm_plane.h | 14 + include/uapi/drm/drm_fourcc.h| 6 ++ 13 files changed, 252 insertions(+), 7 deletions(-) -- 2.17.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 3/3] drm/i915: Implement half float formats and pixel normalize property
64 bpp half float formats are supported on hdr planes only and are subject to the following restrictions: * 90/270 rotation not supported * Yf Tiling not supported * Frame Buffer Compression not supported * Color Keying not supported The behavior of pixel normalize with non-float formats is currently undefined. As such, the pixel normalize register is enabled iff the framebuffer contains floating point pixel data. Signed-off-by: Kevin Strasser Cc: Uma Shankar Cc: Shashank Sharma Cc: Ville Syrjälä Cc: David Airlie Cc: Daniel Vetter Cc: dri-de...@lists.freedesktop.org --- drivers/gpu/drm/i915/i915_reg.h | 15 ++- drivers/gpu/drm/i915/intel_display.c | 48 + drivers/gpu/drm/i915/intel_drv.h | 5 +++ drivers/gpu/drm/i915/intel_sprite.c | 82 +--- 4 files changed, 143 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 47baf2fe..871d293 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -6563,6 +6563,10 @@ enum { #define _PLANE_KEYMAX_1_A 0x701a0 #define _PLANE_KEYMAX_2_A 0x702a0 #define PLANE_KEYMAX_ALPHA(a) ((a) << 24) +#define _PLANE_PIXEL_NORMALIZE_1_A 0x701a8 +#define _PLANE_PIXEL_NORMALIZE_2_A 0x702a8 +#define PLANE_PIXEL_NORMALIZE_ENABLE (1 << 31) +#define PLANE_PIXEL_NORMALIZE_FACTOR_MASK0x #define _PLANE_AUX_DIST_1_A0x701c0 #define _PLANE_AUX_DIST_2_A0x702c0 #define _PLANE_AUX_OFFSET_1_A 0x701c4 @@ -6786,7 +6790,16 @@ enum { #define PLANE_COLOR_CTL(pipe, plane) \ _MMIO_PLANE(plane, _PLANE_COLOR_CTL_1(pipe), _PLANE_COLOR_CTL_2(pipe)) -#/* SKL new cursor registers */ +#define _PLANE_PIXEL_NORMALIZE_1_B 0x711a8 +#define _PLANE_PIXEL_NORMALIZE_2_B 0x712a8 +#define _PLANE_PIXEL_NORMALIZE_1(pipe) \ + _PIPE(pipe, _PLANE_PIXEL_NORMALIZE_1_A, _PLANE_PIXEL_NORMALIZE_1_B) +#define _PLANE_PIXEL_NORMALIZE_2(pipe) \ + _PIPE(pipe, _PLANE_PIXEL_NORMALIZE_2_A, _PLANE_PIXEL_NORMALIZE_2_B) +#define PLANE_PIXEL_NORMALIZE(pipe, plane) \ + _MMIO_PLANE(plane, _PLANE_PIXEL_NORMALIZE_1(pipe), _PLANE_PIXEL_NORMALIZE_2(pipe)) + +/* SKL new cursor registers */ #define _CUR_BUF_CFG_A 0x7017c #define _CUR_BUF_CFG_B 0x7117c #define CUR_BUF_CFG(pipe) _MMIO_PIPE(pipe, _CUR_BUF_CFG_A, _CUR_BUF_CFG_B) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e9f4e22..cbacb4b 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -2618,6 +2618,18 @@ int skl_format_to_fourcc(int format, bool rgb_order, bool alpha) return DRM_FORMAT_RGB565; case PLANE_CTL_FORMAT_NV12: return DRM_FORMAT_NV12; + case PLANE_CTL_FORMAT_XRGB_16161616F: + if (rgb_order) { + if (alpha) + return DRM_FORMAT_ABGR16161616H; + else + return DRM_FORMAT_XBGR16161616H; + } else { + if (alpha) + return DRM_FORMAT_ARGB16161616H; + else + return DRM_FORMAT_XRGB16161616H; + } default: case PLANE_CTL_FORMAT_XRGB_: if (rgb_order) { @@ -3505,6 +3517,12 @@ static u32 skl_plane_ctl_format(uint32_t pixel_format) return PLANE_CTL_FORMAT_YUV422 | PLANE_CTL_YUV422_VYUY; case DRM_FORMAT_NV12: return PLANE_CTL_FORMAT_NV12; + case DRM_FORMAT_XBGR16161616H: + case DRM_FORMAT_ABGR16161616H: + return PLANE_CTL_FORMAT_XRGB_16161616F | PLANE_CTL_ORDER_RGBX; + case DRM_FORMAT_XRGB16161616H: + case DRM_FORMAT_ARGB16161616H: + return PLANE_CTL_FORMAT_XRGB_16161616F; default: MISSING_CASE(pixel_format); } @@ -3680,6 +3698,32 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state, return plane_color_ctl; } +u32 icl_plane_pixel_normalize(uint32_t pixel_format, + enum drm_pixel_normalize_range range) +{ + /* 1.0 in half float */ + u16 half_float_1 = 0x3c00; + /* 3.92E-3 in half float */ + u16 half_float_255 = 0x1c04; + + switch (pixel_format) { + case DRM_FORMAT_XRGB16161616H: + case DRM_FORMAT_XBGR16161616H: + case DRM_FORMAT_ARGB16161616H: + case DRM_FORMAT_ABGR16161616H: + switch (range) { + case DRM_PIXEL_NORMALIZE_RANGE_0_1: + return PLANE_PIXEL_NORMALIZE_ENABLE | half_float_1; + case DRM_PIXEL_NORMALIZE_RANGE_0_255: + return
[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id following atomic guidelines (rev3)
== Series Details == Series: drm/i915/psr: Get pipe id following atomic guidelines (rev3) URL : https://patchwork.freedesktop.org/series/53132/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5220 -> Patchwork_10945 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_10945 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10945, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://patchwork.freedesktop.org/api/1.0/series/53132/revisions/3/mbox/ Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10945: ### IGT changes ### Possible regressions * igt@gem_close_race@basic-threads: - fi-bsw-kefka: PASS -> INCOMPLETE Known issues Here are the changes found in Patchwork_10945 that come from known issues: ### IGT changes ### Issues hit * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: PASS -> DMESG-WARN [fdo#102614] Possible fixes * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence: - fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 Participating hosts (49 -> 44) -- Additional (1): fi-byt-j1900 Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5220 -> Patchwork_10945 CI_DRM_5220: b3a448de6828d0bd0397318d15ec143a3dfb553a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10945: 6f9263b860081021f1915f2a547d3cf9b3e0bcd7 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 6f9263b86008 drm/i915/psr: Get pipe id following atomic guidelines == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10945/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id following atomic guidelines (rev2)
On Wed, Nov 28, 2018 at 02:13:12PM -0800, Souza, Jose wrote: > On Wed, 2018-11-28 at 21:02 +, Patchwork wrote: > > == Series Details == > > > > Series: drm/i915/psr: Get pipe id following atomic guidelines (rev2) > > URL : https://patchwork.freedesktop.org/series/53132/ > > State : failure > > > > == Summary == > > > > CI Bug Log - changes from CI_DRM_5216 -> Patchwork_10934 > > > > > > Summary > > --- > > > > **FAILURE** > > > > Serious unknown changes coming with Patchwork_10934 absolutely need > > to be > > verified manually. > > > > If you think the reported changes have nothing to do with the > > changes > > introduced in Patchwork_10934, please notify your bug team to allow > > them > > to document this new failure mode, which will reduce false > > positives in CI. > > > > External URL: > > https://patchwork.freedesktop.org/api/1.0/series/53132/revisions/2/mbox/ > > > > Possible new issues > > --- > > > > Here are the unknown changes that may have been introduced in > > Patchwork_10934: > > > > ### IGT changes ### > > > > Possible regressions > > > > * igt@i915_selftest@live_sanitycheck: > > - fi-apl-guc: PASS -> DMESG-WARN > > > > * {igt@runner@aborted}: > > - fi-apl-guc: NOTRUN -> FAIL > > Both are pretty much non related with display, what do you think > Rodrigo? It is a merge blocker? I got addicted to see all green on CI. So I always prefer to trigger a retest. So anyone following the link that is merged with the patch doens't have to understand and analyze why it was merged with BAT failure. I just triggered the re-test for this patch. Thanks, Rodrigo. > > > > > > > Known issues > > > > > > Here are the changes found in Patchwork_10934 that come from known > > issues: > > > > ### IGT changes ### > > > > Issues hit > > > > * igt@i915_selftest@live_hangcheck: > > - fi-kbl-7560u: PASS -> INCOMPLETE [fdo#108044] > > > > * igt@kms_pipe_crc_basic@read-crc-pipe-a: > > - fi-byt-clapper: PASS -> FAIL [fdo#107362] > > > > > > {name}: This element is suppressed. This means it is ignored when > > computing > > the status of the difference (SUCCESS, WARNING, or > > FAILURE). > > > > [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 > > [fdo#108044]: https://bugs.freedesktop.org/show_bug.cgi?id=108044 > > > > > > Participating hosts (50 -> 44) > > -- > > > > Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt- > > squawks fi-bsw-cyan fi-ctg-p8600 > > > > > > Build changes > > - > > > > * Linux: CI_DRM_5216 -> Patchwork_10934 > > > > CI_DRM_5216: 2236cef56d19627516af1f1b19b155d65fbc9834 @ > > git://anongit.freedesktop.org/gfx-ci/linux > > IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ > > git://anongit.freedesktop.org/xorg/app/intel-gpu-tools > > Patchwork_10934: 2ebde49b2d0906d8106b020a2b0480bc5f552a01 @ > > git://anongit.freedesktop.org/gfx-ci/linux > > > > > > == Linux commits == > > > > 2ebde49b2d09 drm/i915/psr: Get pipe id following atomic guidelines > > > > == Logs == > > > > For more details see: > > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10934/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/psr: Get pipe id following atomic guidelines (rev3)
== Series Details == Series: drm/i915/psr: Get pipe id following atomic guidelines (rev3) URL : https://patchwork.freedesktop.org/series/53132/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915/psr: Get pipe id following atomic guidelines -drivers/gpu/drm/i915/selftests/../i915_drv.h:3566:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3567:16: warning: expression using sizeof(void) ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/cnl: Fix the formulae for register offsets (rev2)
== Series Details == Series: drm/i915/cnl: Fix the formulae for register offsets (rev2) URL : https://patchwork.freedesktop.org/series/52960/ State : success == Summary == CI Bug Log - changes from CI_DRM_5220 -> Patchwork_10944 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/52960/revisions/2/mbox/ Known issues Here are the changes found in Patchwork_10944 that come from known issues: ### IGT changes ### Issues hit * igt@kms_frontbuffer_tracking@basic: - {fi-icl-u3}:PASS -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b: - fi-blb-e6850: PASS -> INCOMPLETE [fdo#107718] Possible fixes * igt@gem_exec_suspend@basic-s4-devices: - fi-ivb-3520m: FAIL [fdo#108880] -> PASS * igt@kms_chamelium@hdmi-hpd-fast: - {fi-kbl-7500u}: FAIL [fdo#108769] -> PASS * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence: - fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 [fdo#108769]: https://bugs.freedesktop.org/show_bug.cgi?id=108769 [fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880 Participating hosts (49 -> 43) -- Additional (1): fi-byt-j1900 Missing(7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-pnv-d510 Build changes - * Linux: CI_DRM_5220 -> Patchwork_10944 CI_DRM_5220: b3a448de6828d0bd0397318d15ec143a3dfb553a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10944: 70af57c2affce2b9eaa8dfbd777a6d4395d2ce79 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 70af57c2affc drm/i915/cnl: Fix the formulae for register offsets == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10944/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Fix the HDMI hot plug disconnection failure (rev4)
== Series Details == Series: drm/i915: Fix the HDMI hot plug disconnection failure (rev4) URL : https://patchwork.freedesktop.org/series/50477/ State : success == Summary == CI Bug Log - changes from CI_DRM_5220 -> Patchwork_10943 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/50477/revisions/4/mbox/ Known issues Here are the changes found in Patchwork_10943 that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_suspend@basic-s3: - fi-blb-e6850: PASS -> INCOMPLETE [fdo#107718] Possible fixes * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence: - fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +1 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718 Participating hosts (49 -> 44) -- Additional (1): fi-byt-j1900 Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5220 -> Patchwork_10943 CI_DRM_5220: b3a448de6828d0bd0397318d15ec143a3dfb553a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10943: 74baf446cd7cf1e0493a37fa34381575e7b79f94 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 74baf446cd7c drm/i915: Fix the HDMI hot plug disconnection failure (v4) == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10943/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v2] drm/i915/cnl: Fix the formulae for register offsets
For gen10+ the offsets for Slice PG cntl/ EU PG cntl donot scale well for higher slices. v2: Use _PICK instead of formulae(Jani) Cc: Jani Nikula Cc: Rodrigo Vivi Cc: Lucs De Marchi Cc: Daniele Ceraolo Spurio Signed-off-by: Radhakrishna Sripada --- drivers/gpu/drm/i915/i915_reg.h | 54 - 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 47baf2fe8f71..3b8ee7dd9b62 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -8662,18 +8662,60 @@ enum { #define CHV_EU311_PG_ENABLE (1 << 1) #define GEN9_SLICE_PGCTL_ACK(slice)_MMIO(0x804c + (slice) * 0x4) -#define GEN10_SLICE_PGCTL_ACK(slice) _MMIO(0x804c + ((slice) / 3) * 0x34 + \ - ((slice) % 3) * 0x4) + +#define _CNL_SLICE0_PGCTL_ACK 0x804c +#define _CNL_SLICE1_PGCTL_ACK 0x8050 +#define _CNL_SLICE2_PGCTL_ACK 0x8054 +#define _CNL_SLICE3_PGCTL_ACK 0x8080 +#define _CNL_SLICE4_PGCTL_ACK 0x8084 +#define _CNL_SLICE5_PGCTL_ACK 0x8088 + +#define GEN10_SLICE_PGCTL_ACK(slice) _MMIO(_PICK(slice, \ + _CNL_SLICE0_PGCTL_ACK, \ + _CNL_SLICE1_PGCTL_ACK, \ + _CNL_SLICE2_PGCTL_ACK, \ + _CNL_SLICE3_PGCTL_ACK, \ + _CNL_SLICE4_PGCTL_ACK, \ + _CNL_SLICE5_PGCTL_ACK)) + #define GEN9_PGCTL_SLICE_ACK (1 << 0) #define GEN9_PGCTL_SS_ACK(subslice) (1 << (2 + (subslice) * 2)) #define GEN10_PGCTL_VALID_SS_MASK(slice) ((slice) == 0 ? 0x7F : 0x1F) #define GEN9_SS01_EU_PGCTL_ACK(slice) _MMIO(0x805c + (slice) * 0x8) -#define GEN10_SS01_EU_PGCTL_ACK(slice) _MMIO(0x805c + ((slice) / 3) * 0x30 + \ - ((slice) % 3) * 0x8) + +#define _CNL_SLICE0_SS01_EU_PGCTL_ACK 0x805c +#define _CNL_SLICE1_SS01_EU_PGCTL_ACK 0x8064 +#define _CNL_SLICE2_SS01_EU_PGCTL_ACK 0x806c +#define _CNL_SLICE3_SS01_EU_PGCTL_ACK 0x808c +#define _CNL_SLICE4_SS01_EU_PGCTL_ACK 0x8094 +#define _CNL_SLICE5_SS01_EU_PGCTL_ACK 0x809c + +#define GEN10_SS01_EU_PGCTL_ACK(slice) _MMIO(_PICK(slice, \ + _CNL_SLICE0_SS01_EU_PGCTL_ACK, \ + _CNL_SLICE1_SS01_EU_PGCTL_ACK, \ + _CNL_SLICE2_SS01_EU_PGCTL_ACK, \ + _CNL_SLICE3_SS01_EU_PGCTL_ACK, \ + _CNL_SLICE4_SS01_EU_PGCTL_ACK, \ + _CNL_SLICE5_SS01_EU_PGCTL_ACK)) + #define GEN9_SS23_EU_PGCTL_ACK(slice) _MMIO(0x8060 + (slice) * 0x8) -#define GEN10_SS23_EU_PGCTL_ACK(slice) _MMIO(0x8060 + ((slice) / 3) * 0x30 + \ - ((slice) % 3) * 0x8) + +#define _CNL_SLICE0_SS23_EU_PGCTL_ACK 0x8060 +#define _CNL_SLICE1_SS23_EU_PGCTL_ACK 0x8068 +#define _CNL_SLICE2_SS23_EU_PGCTL_ACK 0x8070 +#define _CNL_SLICE3_SS23_EU_PGCTL_ACK 0x8090 +#define _CNL_SLICE4_SS23_EU_PGCTL_ACK 0x8098 +#define _CNL_SLICE5_SS23_EU_PGCTL_ACK 0x80a0 + +#define GEN10_SS23_EU_PGCTL_ACK(slice) _MMIO(_PICK(slice, \ + _CNL_SLICE0_SS23_EU_PGCTL_ACK, \ + _CNL_SLICE1_SS23_EU_PGCTL_ACK, \ + _CNL_SLICE2_SS23_EU_PGCTL_ACK, \ + _CNL_SLICE3_SS23_EU_PGCTL_ACK, \ + _CNL_SLICE4_SS23_EU_PGCTL_ACK, \ + _CNL_SLICE5_SS23_EU_PGCTL_ACK)) + #define GEN9_PGCTL_SSA_EU08_ACK (1 << 0) #define GEN9_PGCTL_SSA_EU19_ACK (1 << 2) #define GEN9_PGCTL_SSA_EU210_ACK (1 << 4) -- 2.9.3 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display is still connected. This is because the HDMI DDC lines are disconnected a little bit later after the hot-plug interrupt triggered thus an immediate edid fetch can be made. This problem has been identified by more than one customer recently. Use digital port live states to authorize the edid read at HDMI detection point will ensure most of the display related software states updated and rest of them will be renewed accordingly when the port is connected. v2: Fix the formatting issue v3: Use digital port states to authorize the edid read v4: Add comments on issue histories and rationale of the fix (Chris W) Cc: Jani Nikula Cc: Chris Chiu Cc: Chris Wilson Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - if (IS_ICELAKE(dev_priv) && + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && !intel_digital_port_connected(encoder)) goto out; -- 2.7.4 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v6 3/6] drm/dp_mst: Start tracking per-port VCPI allocations
On Wed, 2018-11-28 at 09:17 +0100, Daniel Vetter wrote: > On Tue, Nov 27, 2018 at 08:44:14PM -0500, Lyude Paul wrote: > > On Tue, 2018-11-27 at 20:44 +0100, Daniel Vetter wrote: > > > > We could do this the other way around so it looks like this maybe > > > > struct kref; /* manages kfree() */ > > struct topology_kref; /* corresonds to lifetime in topology */ > > > > Then only expose functions for the normal kref to drivers, so that any > > possible confusion is still limited to drm_dp_mst_topology.c > > I like this bikeshed a lot. Since we need a bunch of the plain > kref_get/put internally, probably still good to have a wrapper. For that > the port_malloc_get/put() still sounds good to me - port_kfree_get/put > sounds confusing, since it's not the kfree we're refcounting, but the > memory allocation. > > Another option would be to add _topology to the public get/put functions, > but that makes for a fairly long function name :-/ bleh. Looked at not using a malloc() prefix in the naming but it's definitely still more confusing without one. I really do question if we really want the canonical naming prefix for the MST helpers to be drm_dp_mst_topology. It would be very nice to have this freed so we could do something like this: drm_dp_mst_topology_get_mstb() /* _kref */ drm_dp_mst_topology_put_mstb() /* _kref */ drm_dp_mst_get_mstb_malloc() /* */ drm_dp_mst_put_mstb_malloc() /* */ drm_dp_mst_topology_get_port() /* _kref */ drm_dp_mst_topology_put_port() /* _kref */ drm_dp_mst_get_port_malloc() /* */ drm_dp_mst_put_port_malloc() /* */ Additionally, I had an epiphany and figured out a seriously dead-simple rule that answers "what ref to use where" in the MST helper code: Let's start with a topology like this: |- mst_primary |- port #1 |- port #2 |- port #3 |- mstb #1 |- port #4 |- mstb #2 |- port #5 |- port #6 |- mstb #3 |- port #7 |- mstb #4 |- port #8 |- port #9 If mstb #1 was removed from the topology, ports 4-9 and mstbs 2-4 must lose their topology references. Simply put: each port holds a topology reference to it's mstb (if there is one), and each mstb holds a topology reference to it's ports. Now, let's allocate some payloads on the topology: |- mst_primary |- port #1 |- port #2 |- port #3 |- mstb #1 |- port #4 |- mstb #2 (has payload) |- port #5 |- port #6 |- mstb #3 |- port #7 |- mstb #4 (has payload) |- port #8 |- port #9 So, now if we remove mstb #1 any payloads under it need to be freed. Since mstb #4's and #2's parents no longer exist in the topology however, we must go back up the tree to find our last living relative. So: mstb #4 → port #7 → mstb #3 → port #6 → mstb #1 → port #3 for payload 1 mstb #4 → port #4 → mstb #1 → port #3 for payload 2 Going off this we can come up with the rule for malloc refs: each port holds a malloc ref to it's parent mstb, and each mstb holds a malloc ref to it's parent port (if there is one). So, it's just the reverse of the topology ref rule. Now just add refs for payloads and other stuff, and we're good. Hooray! Now I can also use this in any docs I write too :) > -Daniel > > > > > > -Daniel > > > > > > > > > > > Piles of comments below. > > > > > > > > > > > > Cheers, Daniel > > > > > > > > > > > > > - Use the small changes to drm_dp_put_port() to add even more > > > > > > > error > > > > > > >checking to make misusage of the helpers more obvious. I > > > > > > > added > > > > > > > this > > > > > > >after having to chase down various use-after-free conditions > > > > > > > that > > > > > > >started popping up from the new helpers so no one else has to > > > > > > >troubleshoot that. > > > > > > > - Move some accidental DRM_DEBUG_KMS() calls to > > > > > > > DRM_DEBUG_ATOMIC() > > > > > > > - Update documentation again, note that find/release() should > > > > > > > both > > > > > > > not > > > > > > > be > > > > > > >called on the same port in a single atomic check phase (but > > > > > > > multiple > > > > > > >calls to one or the other is OK) > > > > > > > > > > > > > > Changes since v4: > > > > > > > - Don't skip the atomic checks for VCPI allocations if no new > > > > > > > VCPI > > > > > > >allocations happen in a state. This makes the next change I'm > > > > > > > about > > > > > > >to list here a lot easier to implement. > > > > > > > - Don't ignore VCPI allocations on destroyed ports, instead > > > > > > > ensure > > > > > > > that > > > > > > >when ports are destroyed and still have VCPI allocations in > > > > > > > the > > > > > > >topology state, the only state changes allowed are releasing > > > > > > > said > > > > > > >ports'
[Intel-gfx] ✓ Fi.CI.IGT: success for HDCP1.4 fixes (rev9)
== Series Details == Series: HDCP1.4 fixes (rev9) URL : https://patchwork.freedesktop.org/series/38978/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10932_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10932_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10932_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10932_full: ### IGT changes ### Warnings * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: SKIP -> PASS Known issues Here are the changes found in Patchwork_10932_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-skl: NOTRUN -> INCOMPLETE [fdo#106887] * igt@gem_softpin@noreloc-s3: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107773] * igt@i915_suspend@shrink: - shard-skl: NOTRUN -> DMESG-WARN [fdo#108784] * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - shard-snb: NOTRUN -> DMESG-WARN [fdo#107956] - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_color@pipe-a-legacy-gamma: - shard-apl: PASS -> FAIL [fdo#104782] / [fdo#108145] * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +3 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-skl: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x21-random: - shard-skl: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_flip@flip-vs-fences: - shard-kbl: PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +22 * igt@kms_flip_tiling@flip-to-y-tiled: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +1 * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt: - shard-apl: PASS -> INCOMPLETE [fdo#103927] * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-hsw: PASS -> DMESG-WARN [fdo#102614] +1 * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: - shard-glk: PASS -> FAIL [fdo#103167] +4 * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary: - shard-skl: NOTRUN -> FAIL [fdo#105682] +1 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary: - shard-skl: PASS -> FAIL [fdo#105682] * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +4 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen: - {shard-iclb}: PASS -> FAIL [fdo#103167] +3 * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane@plane-position-covered-pipe-a-planes: - {shard-iclb}: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane@plane-position-covered-pipe-b-planes: - shard-glk: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-apl: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-c-tiling-yf: - shard-kbl: NOTRUN -> FAIL [fdo#103166] - shard-skl: NOTRUN -> FAIL [fdo#103166] / [fdo#107815] * igt@kms_rotation_crc@primary-rotation-180: - shard-snb: NOTRUN -> FAIL [fdo#103925] * igt@kms_setmode@basic: - shard-hsw:
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/dp-mst-helper: Remove hotplug callback
== Series Details == Series: drm/dp-mst-helper: Remove hotplug callback URL : https://patchwork.freedesktop.org/series/53192/ State : success == Summary == CI Bug Log - changes from CI_DRM_5217 -> Patchwork_10942 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53192/revisions/1/mbox/ Known issues Here are the changes found in Patchwork_10942 that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_create@basic-files: - fi-bsw-n3050: PASS -> FAIL [fdo#108656] * igt@gem_exec_suspend@basic-s4-devices: - fi-ivb-3520m: PASS -> FAIL [fdo#108880] * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: PASS -> FAIL [fdo#103167] Possible fixes * igt@kms_chamelium@hdmi-hpd-fast: - {fi-kbl-7500u}: FAIL [fdo#108769] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656 [fdo#108769]: https://bugs.freedesktop.org/show_bug.cgi?id=108769 [fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880 Participating hosts (49 -> 44) -- Additional (1): fi-pnv-d510 Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5217 -> Patchwork_10942 CI_DRM_5217: 3b8acd938b1edc326fb69d377cbceca8791df177 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10942: 0825ba70571a92893a699ac3762b1b1aaa240ac3 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 0825ba70571a drm/dp-mst-helper: Remove hotplug callback == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10942/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/dp-mst-helper: Remove hotplug callback
== Series Details == Series: drm/dp-mst-helper: Remove hotplug callback URL : https://patchwork.freedesktop.org/series/53192/ State : warning == Summary == $ dim checkpatch origin/drm-tip 0825ba70571a drm/dp-mst-helper: Remove hotplug callback -:167: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch author 'Daniel Vetter ' total: 0 errors, 1 warnings, 0 checks, 119 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for HuC Updates [BXT,SKL,KBL,GLK] GuC [GLK] (rev2)
== Series Details == Series: HuC Updates [BXT,SKL,KBL,GLK] GuC [GLK] (rev2) URL : https://patchwork.freedesktop.org/series/53191/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5217 -> Patchwork_10940 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_10940 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10940, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://patchwork.freedesktop.org/api/1.0/series/53191/revisions/2/mbox/ Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10940: ### IGT changes ### Possible regressions * igt@i915_selftest@live_guc: - fi-bdw-gvtdvm: PASS -> FAIL +15 Warnings * igt@kms_addfb_basic@addfb25-bad-modifier: - fi-bdw-gvtdvm: PASS -> SKIP +229 Participating hosts (49 -> 23) -- Missing(26): fi-kbl-soraka fi-cnl-u fi-icl-u2 fi-snb-2520m fi-icl-u3 fi-blb-e6850 fi-byt-n2820 fi-hsw-4770r fi-bdw-5557u fi-bsw-n3050 fi-byt-j1900 fi-bwr-2160 fi-ilk-650 fi-ctg-p8600 fi-hsw-4770 fi-gdg-551 fi-ivb-3770 fi-elk-e7500 fi-ivb-3520m fi-ilk-m540 fi-hsw-4200u fi-hsw-peppy fi-byt-squawks fi-bsw-cyan fi-bsw-kefka fi-byt-clapper Build changes - * Linux: CI_DRM_5217 -> Patchwork_10940 CI_DRM_5217: 3b8acd938b1edc326fb69d377cbceca8791df177 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10940: 1a987393fb1ba3fb72a8d3202f57a3776c067a68 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 1a987393fb1b HAX enable HuC for CI 4fdcb5ba00ae firmware/guc/glk: Load GuC v11.98 for Geminilake. afc0b5259f0b firmware/huc/GLK: Load HuC for GLK a6b97b520d1d firmware/huc/KBL: Update HuC for KBL 495993ba9aed firmware/huc/SKL: Update HuC versiom for SKL 2f174cb3de1c firmware/huc/BXT: Update the HuC version == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10940/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915/icl: Release TC ports when unloading or suspending driver (rev2)
== Series Details == Series: series starting with [1/3] drm/i915/icl: Release TC ports when unloading or suspending driver (rev2) URL : https://patchwork.freedesktop.org/series/52195/ State : failure == Summary == Applying: drm/i915/icl: Release TC ports when unloading or suspending driver error: corrupt patch at line 8 error: could not build fake ancestor Patch failed at 0001 drm/i915/icl: Release TC ports when unloading or suspending driver Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for HuC Updates [BXT,SKL,KBL,GLK] GuC [GLK] (rev2)
== Series Details == Series: HuC Updates [BXT,SKL,KBL,GLK] GuC [GLK] (rev2) URL : https://patchwork.freedesktop.org/series/53191/ State : warning == Summary == $ dim checkpatch origin/drm-tip 2f174cb3de1c firmware/huc/BXT: Update the HuC version 495993ba9aed firmware/huc/SKL: Update HuC versiom for SKL a6b97b520d1d firmware/huc/KBL: Update HuC for KBL afc0b5259f0b firmware/huc/GLK: Load HuC for GLK 4fdcb5ba00ae firmware/guc/glk: Load GuC v11.98 for Geminilake. 1a987393fb1b HAX enable HuC for CI -:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one total: 0 errors, 1 warnings, 0 checks, 8 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2)
== Series Details == Series: series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2) URL : https://patchwork.freedesktop.org/series/53184/ State : success == Summary == CI Bug Log - changes from CI_DRM_5217 -> Patchwork_10939 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53184/revisions/2/mbox/ Known issues Here are the changes found in Patchwork_10939 that come from known issues: ### IGT changes ### Issues hit * igt@i915_selftest@live_contexts: - fi-bsw-kefka: PASS -> DMESG-FAIL [fdo#108626] / [fdo#108656] * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: PASS -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence: - fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#108626]: https://bugs.freedesktop.org/show_bug.cgi?id=108626 [fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656 Participating hosts (49 -> 42) -- Missing(7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5217 -> Patchwork_10939 CI_DRM_5217: 3b8acd938b1edc326fb69d377cbceca8791df177 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10939: c878df13f9c00451f7281d105e0f2246cd65748c @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == c878df13f9c0 drm/i915/fec: Disable FEC state. 303f000edcd4 i915/dp/fec: Configure the Forward Error Correction bits. 2cb9fde528c3 drm/i915/fec: Set FEC_READY in FEC_CONFIGURATION 9211bdb6b64b i915/dp/fec: Add fec_enable to the crtc state. 2f4fb87c9b59 drm/i915/dsc: Enable and disable appropriate power wells for VDSC 1cfac339f7ea drm/i915/dp: Disable DSC in source by disabling DSS CTL bits ca153c0dbe0a drm/i915/dp: Configure Display stream splitter registers during DSC enable ad3fbff47ade drm/i915/dp: Populate DSC PPS SDP and send PPS infoframes 909a40d71447 drm/i915/dp: Use the existing write_infoframe() for DSC PPS SDPs f078f264482d drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling 0541a790e095 drm/i915/dsc: Add a power domain for VDSC on eDP/MIPI DSI 5a207b28b067 drm/i915/dp: Enable/Disable DSC in DP Sink f0efd1a5bded drm/i915/dsc: Compute Rate Control parameters for DSC 682f70ba2e90 drm/i915/dsc: Define & Compute VESA DSC params 7e99dcca72b9 drm/i915/dp: Do not enable PSR2 if DSC is enabled 3251c57ea8f7 drm/i915/dp: Compute DSC pipe config in atomic check 6cc046b0e53f drm/i915/dp: Add DSC params and DSC config to intel_crtc_state == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10939/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for Return only active connectors for get_resources ioctl
== Series Details == Series: Return only active connectors for get_resources ioctl URL : https://patchwork.freedesktop.org/series/53163/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10931_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_10931_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10931_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10931_full: ### IGT changes ### Possible regressions * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-untiled: - shard-skl: NOTRUN -> FAIL Warnings * igt@kms_lease@lease_unleased_connector: - shard-apl: PASS -> SKIP * igt@perf_pmu@rc6: - shard-kbl: PASS -> SKIP * igt@tools_test@tools_test: - shard-snb: PASS -> SKIP Known issues Here are the changes found in Patchwork_10931_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-skl: NOTRUN -> INCOMPLETE [fdo#106887] * igt@gem_softpin@softpin: - shard-apl: PASS -> INCOMPLETE [fdo#103927] * igt@i915_suspend@shrink: - shard-skl: NOTRUN -> DMESG-WARN [fdo#108784] * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +16 * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - shard-snb: NOTRUN -> DMESG-WARN [fdo#107956] - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_cursor_crc@cursor-128x128-offscreen: - shard-glk: PASS -> DMESG-WARN [fdo#105763] / [fdo#106538] +2 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-skl: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x21-random: - shard-skl: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-xtiled: - {shard-iclb}: PASS -> WARN [fdo#108336] * igt@kms_flip@flip-vs-expired-vblank: - shard-skl: NOTRUN -> FAIL [fdo#105363] * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-glk: PASS -> FAIL [fdo#105363] * igt@kms_flip_tiling@flip-to-y-tiled: - shard-skl: PASS -> FAIL [fdo#107931] * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-gtt: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] +3 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen: - shard-skl: NOTRUN -> FAIL [fdo#105682] +2 * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: - shard-glk: PASS -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary: - shard-skl: NOTRUN -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary: - shard-skl: PASS -> FAIL [fdo#105682] * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +5 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc: - {shard-iclb}: PASS -> FAIL [fdo#103167] * igt@kms_frontbuffer_tracking@psr-suspend: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#106978] / [fdo#107773] * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#103166] / [fdo#107724] * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_multiple@atomic-pipe-a-tiling-x: - shard-glk: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-apl:
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Tue, 13 Nov 2018 13:07:46 +0200 Jani Nikula wrote: > On Mon, 12 Nov 2018, Guang Bai wrote: > > Actually I'm still working on it right now with > > DRM_MODE_CONNECTOR_HDMIA/HDMIB, recommended by James, I'm able to > > differentiate the HDMI or DP even the encoder type is the > > "INTEL_OUTPUT_DDI", I still have the "trybot" intermittent test > > failures with new DRM connector types. Even worse, there is phantom > > "intel_encoder_hotplug()" call following the correct one: > > When connecting both DP and HDMI on the platform, unplug the DP, the > > "i915_hotplug_work_func()" first calls the "intel_encoder_hotplug()" > > with DP encoder, then calls again with HDMI encoder. > > I haven't identified if the work function get queued twice or itself > > is incorrectly identifying wrong encoder hotplut status. Will try to > > get everything cleaned up ASAP. > > Frankly I liked the simplicity of [1] over the patch in this thread. > It fixed the real-world use case Chris Chiu has, but I understand > that it still failed the slow unplug HDMI test case you have. The > problem is, we have zero visibility to the test case you have. Is it > automated or manual? Can we see the specs or source code for the test > case? > > If we have to consider the live status unreliable, it's possible to > devise a pathological test case that will always fail, regardless of > what we do in the driver. Does the test case reflect real world usage? > > Also Cc: Ville for input. > > BR, > Jani. > Hi Jani, Ville & Chris (Chiu): Sorry for the late reply as I have beening bumping around different projects and also spent sometime to investigate [v2] failures with testing the codes on trybot 1. My testcase: I have one+ customer KBL laptop and uBuntu16.04 running, slowly unplug the HDMI cable (wiggling), the issue can be reproduced very easily - Just check kernel HDMI-A-1 connecting states 2. I belive Chris is using roughly the same test case? 3. I don't like the [v2] solution either since it's *not* clean and have intermittent trybot/patchwork failures 4. with latest drm-tip codes, I'm able to workout a very clean solution [v3] today and it passes the patchwork tests - Would you like to try it out and also review the change? Thanks, Guang > > > [1] > http://patchwork.freedesktop.org/patch/msgid/20180925071836.24711-1-jani.nik...@intel.com > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2)
== Series Details == Series: series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2) URL : https://patchwork.freedesktop.org/series/53184/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915/dp: Add DSC params and DSC config to intel_crtc_state -drivers/gpu/drm/i915/selftests/../i915_drv.h:3566:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3567:16: warning: expression using sizeof(void) Commit: drm/i915/dp: Compute DSC pipe config in atomic check +drivers/gpu/drm/i915/intel_dp.c:1896:23: warning: expression using sizeof(void) +drivers/gpu/drm/i915/intel_dp.c:1916:25: warning: expression using sizeof(void) +drivers/gpu/drm/i915/intel_dp.c:1916:25: warning: expression using sizeof(void) +drivers/gpu/drm/i915/intel_dp.c:1938:58: warning: expression using sizeof(void) +drivers/gpu/drm/i915/intel_dp.c:1938:58: warning: expression using sizeof(void) Commit: drm/i915/dp: Do not enable PSR2 if DSC is enabled Okay! Commit: drm/i915/dsc: Define & Compute VESA DSC params +drivers/gpu/drm/i915/intel_vdsc.c:352:17: warning: expression using sizeof(void) +./include/uapi/linux/perf_event.h:147:56: warning: cast truncates bits from constant value (8000 becomes 0) Commit: drm/i915/dsc: Compute Rate Control parameters for DSC Okay! Commit: drm/i915/dp: Enable/Disable DSC in DP Sink Okay! Commit: drm/i915/dsc: Add a power domain for VDSC on eDP/MIPI DSI Okay! Commit: drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling -drivers/gpu/drm/i915/selftests/../i915_drv.h:3567:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3569:16: warning: expression using sizeof(void) Commit: drm/i915/dp: Use the existing write_infoframe() for DSC PPS SDPs Okay! Commit: drm/i915/dp: Populate DSC PPS SDP and send PPS infoframes Okay! Commit: drm/i915/dp: Configure Display stream splitter registers during DSC enable Okay! Commit: drm/i915/dp: Disable DSC in source by disabling DSS CTL bits -drivers/gpu/drm/i915/selftests/../i915_drv.h:3569:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3570:16: warning: expression using sizeof(void) Commit: drm/i915/dsc: Enable and disable appropriate power wells for VDSC Okay! Commit: i915/dp/fec: Add fec_enable to the crtc state. Okay! Commit: drm/i915/fec: Set FEC_READY in FEC_CONFIGURATION Okay! Commit: i915/dp/fec: Configure the Forward Error Correction bits. Okay! Commit: drm/i915/fec: Disable FEC state. Okay! ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2)
== Series Details == Series: series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state (rev2) URL : https://patchwork.freedesktop.org/series/53184/ State : warning == Summary == $ dim checkpatch origin/drm-tip 6cc046b0e53f drm/i915/dp: Add DSC params and DSC config to intel_crtc_state -:49: CHECK:BOOL_MEMBER: Avoid using bool structure members because of possible alignment issues - see: https://lkml.org/lkml/2017/11/21/384 #49: FILE: drivers/gpu/drm/i915/intel_drv.h:948: + bool compression_enable; -:50: CHECK:BOOL_MEMBER: Avoid using bool structure members because of possible alignment issues - see: https://lkml.org/lkml/2017/11/21/384 #50: FILE: drivers/gpu/drm/i915/intel_drv.h:949: + bool dsc_split; total: 0 errors, 0 warnings, 2 checks, 22 lines checked 3251c57ea8f7 drm/i915/dp: Compute DSC pipe config in atomic check 7e99dcca72b9 drm/i915/dp: Do not enable PSR2 if DSC is enabled 682f70ba2e90 drm/i915/dsc: Define & Compute VESA DSC params -:68: WARNING:BAD_SIGN_OFF: Non-standard signature: Co-developed-by: #68: Co-developed-by: Manasi Navare -:119: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #119: new file mode 100644 total: 0 errors, 2 warnings, 0 checks, 497 lines checked f0efd1a5bded drm/i915/dsc: Compute Rate Control parameters for DSC 5a207b28b067 drm/i915/dp: Enable/Disable DSC in DP Sink 0541a790e095 drm/i915/dsc: Add a power domain for VDSC on eDP/MIPI DSI f078f264482d drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling -:391: WARNING:LONG_LINE: line over 100 characters #391: FILE: drivers/gpu/drm/i915/intel_vdsc.c:897: + rc_range_params_dword[i / 2] |= (u32)(((vdsc_cfg->rc_range_params[i].range_bpg_offset << total: 0 errors, 1 warnings, 0 checks, 426 lines checked 909a40d71447 drm/i915/dp: Use the existing write_infoframe() for DSC PPS SDPs ad3fbff47ade drm/i915/dp: Populate DSC PPS SDP and send PPS infoframes ca153c0dbe0a drm/i915/dp: Configure Display stream splitter registers during DSC enable 1cfac339f7ea drm/i915/dp: Disable DSC in source by disabling DSS CTL bits 2f4fb87c9b59 drm/i915/dsc: Enable and disable appropriate power wells for VDSC 9211bdb6b64b i915/dp/fec: Add fec_enable to the crtc state. -:126: CHECK:BOOL_MEMBER: Avoid using bool structure members because of possible alignment issues - see: https://lkml.org/lkml/2017/11/21/384 #126: FILE: drivers/gpu/drm/i915/intel_drv.h:956: + bool fec_enable; total: 0 errors, 0 warnings, 1 checks, 65 lines checked 2cb9fde528c3 drm/i915/fec: Set FEC_READY in FEC_CONFIGURATION 303f000edcd4 i915/dp/fec: Configure the Forward Error Correction bits. c878df13f9c0 drm/i915/fec: Disable FEC state. ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Fix the HDMI hot plug disconnection failure (rev3)
== Series Details == Series: drm/i915: Fix the HDMI hot plug disconnection failure (rev3) URL : https://patchwork.freedesktop.org/series/50477/ State : success == Summary == CI Bug Log - changes from CI_DRM_5217 -> Patchwork_10938 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/50477/revisions/3/mbox/ Known issues Here are the changes found in Patchwork_10938 that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_create@basic-files: - fi-bsw-n3050: PASS -> FAIL [fdo#108656] * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: PASS -> DMESG-WARN [fdo#102614] - fi-byt-clapper: PASS -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence: - fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] Possible fixes * igt@kms_chamelium@hdmi-hpd-fast: - {fi-kbl-7500u}: FAIL [fdo#108769] -> PASS {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656 [fdo#108769]: https://bugs.freedesktop.org/show_bug.cgi?id=108769 Participating hosts (49 -> 44) -- Additional (1): fi-pnv-d510 Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5217 -> Patchwork_10938 CI_DRM_5217: 3b8acd938b1edc326fb69d377cbceca8791df177 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10938: 365b3fb384daa0f192de6e2414182d323e8422a4 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 365b3fb384da drm/i915: Fix the HDMI hot plug disconnection failure (v3) == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10938/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for Return only active connectors for get_resources ioctl (rev3)
== Series Details == Series: Return only active connectors for get_resources ioctl (rev3) URL : https://patchwork.freedesktop.org/series/53163/ State : success == Summary == CI Bug Log - changes from CI_DRM_5217 -> Patchwork_10937 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53163/revisions/3/mbox/ Known issues Here are the changes found in Patchwork_10937 that come from known issues: ### IGT changes ### Issues hit * igt@gem_ctx_create@basic-files: - fi-bsw-kefka: PASS -> FAIL [fdo#108656] * igt@gem_exec_suspend@basic-s4-devices: - fi-ivb-3520m: PASS -> FAIL [fdo#108880] * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: PASS -> FAIL [fdo#103167] * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c: - fi-cfl-8109u: PASS -> INCOMPLETE [fdo#106070] / [fdo#108126] * {igt@runner@aborted}: - {fi-icl-u3}:NOTRUN -> FAIL [fdo#108315] Possible fixes * igt@kms_chamelium@hdmi-hpd-fast: - {fi-kbl-7500u}: FAIL [fdo#108769] -> PASS Warnings * igt@i915_selftest@live_contexts: - {fi-icl-u3}:DMESG-FAIL [fdo#108569] -> INCOMPLETE [fdo#108315] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#106070]: https://bugs.freedesktop.org/show_bug.cgi?id=106070 [fdo#108126]: https://bugs.freedesktop.org/show_bug.cgi?id=108126 [fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656 [fdo#108769]: https://bugs.freedesktop.org/show_bug.cgi?id=108769 [fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880 Participating hosts (49 -> 44) -- Additional (1): fi-pnv-d510 Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5217 -> Patchwork_10937 CI_DRM_5217: 3b8acd938b1edc326fb69d377cbceca8791df177 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10937: 14116c78b12f59eb6e2b7de6f07730fa261360d6 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 14116c78b12f Return only active connectors for get_resources ioctl == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10937/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id following atomic guidelines (rev2)
On Wed, 2018-11-28 at 21:02 +, Patchwork wrote: > == Series Details == > > Series: drm/i915/psr: Get pipe id following atomic guidelines (rev2) > URL : https://patchwork.freedesktop.org/series/53132/ > State : failure > > == Summary == > > CI Bug Log - changes from CI_DRM_5216 -> Patchwork_10934 > > > Summary > --- > > **FAILURE** > > Serious unknown changes coming with Patchwork_10934 absolutely need > to be > verified manually. > > If you think the reported changes have nothing to do with the > changes > introduced in Patchwork_10934, please notify your bug team to allow > them > to document this new failure mode, which will reduce false > positives in CI. > > External URL: > https://patchwork.freedesktop.org/api/1.0/series/53132/revisions/2/mbox/ > > Possible new issues > --- > > Here are the unknown changes that may have been introduced in > Patchwork_10934: > > ### IGT changes ### > > Possible regressions > > * igt@i915_selftest@live_sanitycheck: > - fi-apl-guc: PASS -> DMESG-WARN > > * {igt@runner@aborted}: > - fi-apl-guc: NOTRUN -> FAIL Both are pretty much non related with display, what do you think Rodrigo? It is a merge blocker? > > > Known issues > > > Here are the changes found in Patchwork_10934 that come from known > issues: > > ### IGT changes ### > > Issues hit > > * igt@i915_selftest@live_hangcheck: > - fi-kbl-7560u: PASS -> INCOMPLETE [fdo#108044] > > * igt@kms_pipe_crc_basic@read-crc-pipe-a: > - fi-byt-clapper: PASS -> FAIL [fdo#107362] > > > {name}: This element is suppressed. This means it is ignored when > computing > the status of the difference (SUCCESS, WARNING, or > FAILURE). > > [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 > [fdo#108044]: https://bugs.freedesktop.org/show_bug.cgi?id=108044 > > > Participating hosts (50 -> 44) > -- > > Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt- > squawks fi-bsw-cyan fi-ctg-p8600 > > > Build changes > - > > * Linux: CI_DRM_5216 -> Patchwork_10934 > > CI_DRM_5216: 2236cef56d19627516af1f1b19b155d65fbc9834 @ > git://anongit.freedesktop.org/gfx-ci/linux > IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ > git://anongit.freedesktop.org/xorg/app/intel-gpu-tools > Patchwork_10934: 2ebde49b2d0906d8106b020a2b0480bc5f552a01 @ > git://anongit.freedesktop.org/gfx-ci/linux > > > == Linux commits == > > 2ebde49b2d09 drm/i915/psr: Get pipe id following atomic guidelines > > == Logs == > > For more details see: > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10934/ signature.asc Description: This is a digitally signed message part ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/dp-mst-helper: Remove hotplug callback
When everyone implements it exactly the same way, among all 4 implementations, there's not really a need to overwrite this at all. Aside: drm_kms_helper_hotplug_event is pretty much core functionality at this point. Probably should move it there. Signed-off-by: Daniel Vetter --- .../drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c| 9 - drivers/gpu/drm/drm_dp_mst_topology.c | 7 --- drivers/gpu/drm/i915/intel_dp_mst.c| 10 -- drivers/gpu/drm/nouveau/dispnv50/disp.c| 8 drivers/gpu/drm/radeon/radeon_dp_mst.c | 9 - include/drm/drm_dp_mst_helper.h| 2 -- 6 files changed, 4 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index d02c32a1039c..9fdeca096407 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -396,14 +396,6 @@ static void dm_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, drm_connector_put(connector); } -static void dm_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr) -{ - struct amdgpu_dm_connector *master = container_of(mgr, struct amdgpu_dm_connector, mst_mgr); - struct drm_device *dev = master->base.dev; - - drm_kms_helper_hotplug_event(dev); -} - static void dm_dp_mst_register_connector(struct drm_connector *connector) { struct drm_device *dev = connector->dev; @@ -420,7 +412,6 @@ static void dm_dp_mst_register_connector(struct drm_connector *connector) static const struct drm_dp_mst_topology_cbs dm_mst_cbs = { .add_connector = dm_dp_add_mst_connector, .destroy_connector = dm_dp_destroy_mst_connector, - .hotplug = dm_dp_mst_hotplug, .register_connector = dm_dp_mst_register_connector }; diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 08978ad72f33..639552918b44 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -33,6 +33,7 @@ #include #include #include +#include /** * DOC: dp mst helper @@ -1650,7 +1651,7 @@ static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr, for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { drm_dp_add_port(mstb, mgr->dev, >reply.u.link_addr.ports[i]); } - (*mgr->cbs->hotplug)(mgr); + drm_kms_helper_hotplug_event(mgr->dev); } } else { mstb->link_address_sent = false; @@ -2423,7 +2424,7 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr) drm_dp_update_port(mstb, _stat); DRM_DEBUG_KMS("Got CSN: pn: %d ldps:%d ddps: %d mcs: %d ip: %d pdt: %d\n", msg.u.conn_stat.port_number, msg.u.conn_stat.legacy_device_plug_status, msg.u.conn_stat.displayport_device_plug_status, msg.u.conn_stat.message_capability_status, msg.u.conn_stat.input_port, msg.u.conn_stat.peer_device_type); - (*mgr->cbs->hotplug)(mgr); + drm_kms_helper_hotplug_event(mgr->dev); } else if (msg.req_type == DP_RESOURCE_STATUS_NOTIFY) { drm_dp_send_up_ack_reply(mgr, mgr->mst_primary, msg.req_type, seqno, false); @@ -3120,7 +3121,7 @@ static void drm_dp_destroy_connector_work(struct work_struct *work) send_hotplug = true; } if (send_hotplug) - (*mgr->cbs->hotplug)(mgr); + drm_kms_helper_hotplug_event(mgr->dev); } static struct drm_private_state * diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 4de247ddf05f..f05427b74e34 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -517,20 +517,10 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, drm_connector_put(connector); } -static void intel_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr) -{ - struct intel_dp *intel_dp = container_of(mgr, struct intel_dp, mst_mgr); - struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); - struct drm_device *dev = intel_dig_port->base.base.dev; - - drm_kms_helper_hotplug_event(dev); -} - static const struct drm_dp_mst_topology_cbs mst_cbs = { .add_connector = intel_dp_add_mst_connector, .register_connector = intel_dp_register_mst_connector, .destroy_connector = intel_dp_destroy_mst_connector, - .hotplug = intel_dp_mst_hotplug, }; static struct intel_dp_mst_encoder * diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index
[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/2] drm/i915: Add kbl A0 to preproduction detection list
== Series Details == Series: series starting with [1/2] drm/i915: Add kbl A0 to preproduction detection list URL : https://patchwork.freedesktop.org/series/53162/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10930_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10930_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10930_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10930_full: ### IGT changes ### Warnings * igt@kms_plane@plane-panning-bottom-right-pipe-a-planes: - shard-snb: PASS -> SKIP +1 * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: SKIP -> PASS Known issues Here are the changes found in Patchwork_10930_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_softpin@noreloc-s3: - {shard-iclb}: NOTRUN -> INCOMPLETE [fdo#107713] - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107773] * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - shard-snb: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_color@pipe-b-legacy-gamma: - shard-apl: PASS -> FAIL [fdo#104782] * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +2 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-skl: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_flip_tiling@flip-to-y-tiled: - shard-skl: PASS -> FAIL [fdo#107931] * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff: - shard-apl: PASS -> FAIL [fdo#103167] * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: - shard-glk: PASS -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite: - {shard-iclb}: PASS -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_plane@plane-position-covered-pipe-a-planes: - shard-apl: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane@plane-position-covered-pipe-c-planes: - {shard-iclb}: PASS -> FAIL [fdo#103166] * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_multiple@atomic-pipe-a-tiling-x: - shard-glk: PASS -> FAIL [fdo#103166] * igt@kms_rotation_crc@primary-rotation-180: - shard-snb: NOTRUN -> FAIL [fdo#103925] * igt@kms_setmode@basic: - shard-hsw: PASS -> FAIL [fdo#99912] * igt@pm_rpm@system-suspend-modeset: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107807] Possible fixes * igt@kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing: - shard-apl: INCOMPLETE [fdo#103927] -> PASS +1 * igt@kms_ccs@pipe-a-crc-primary-basic: - shard-skl: FAIL [fdo#107725] -> PASS * igt@kms_color@pipe-a-ctm-max: - shard-apl: FAIL [fdo#108147] -> PASS * igt@kms_color@pipe-b-degamma: - shard-apl: FAIL [fdo#104782] -> PASS * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-apl: FAIL [fdo#103191] / [fdo#103232] -> PASS +1 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-glk: FAIL [fdo#103232] -> PASS +2 * igt@kms_cursor_crc@cursor-256x85-onscreen: - shard-apl: FAIL [fdo#103232] -> PASS +2 * igt@kms_draw_crc@draw-method-xrgb-pwrite-untiled: - shard-skl: FAIL [fdo#108472] -> PASS * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-skl: FAIL [fdo#105363] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-apl: FAIL [fdo#103167] -> PASS +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move: - {shard-iclb}: FAIL [fdo#103167] -> PASS +3 * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc: - shard-glk: FAIL [fdo#103167] -> PASS *
Re: [Intel-gfx] [PATCH 1/3] drm/i915/icl: Release TC ports when unloading or suspending driver
On Wed, 2018-11-28 at 13:34 +0200, Imre Deak wrote: > On Wed, Nov 07, 2018 at 04:05:52PM -0800, José Roberto de Souza > wrote: > > When suspending or unloading the driver, it needs to release the > > TC ports so HW can change it state without wait for driver > > handshake. > > According to > https://bugs.freedesktop.org/show_bug.cgi?id=108070#c26 > > this patch should fix the bug reported at > https://bugs.freedesktop.org/show_bug.cgi?id=108070#c17 > > but, I can't see how the change here would fix the corresponding > problem > described in > https://bugs.freedesktop.org/show_bug.cgi?id=108070#c18 > > Would you explain? > > I think there are more fundamental problems in TypeC HPD handling as > we > discussed earlier here on the list, which should be fixed first: > > - Switching to/from type C mode from the interrupt handler without > considering if we have an active mode or an ongoing AUX transfer. Yes that is still missing, I plan to work on that after I deliver a few tasks. Also I read the emails in discussion that you started about that. > > - Not having any way for handling the case where we'd do a modeset > after > an HPD disconnect interrupt, like in the case of > common-hpd-after-suspend in the bug report. For what I understood about this test it will suspend, disconnect chamelium board from source, wakeup and check if connector state match, as we did not marked port as safe before suspending we are left in a invalid state where PD firmware do not trigger a interruption after wakeup. > > More comments below: > > > Cc: Imre Deak > > Cc: Ville Syrjälä > > Signed-off-by: José Roberto de Souza > > --- > > drivers/gpu/drm/i915/i915_drv.c | 1 + > > drivers/gpu/drm/i915/i915_drv.h | 1 + > > drivers/gpu/drm/i915/i915_irq.c | 1 + > > drivers/gpu/drm/i915/intel_dp.c | 19 +++ > > drivers/gpu/drm/i915/intel_drv.h | 1 + > > drivers/gpu/drm/i915/intel_hotplug.c | 9 + > > 6 files changed, 32 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.c > > b/drivers/gpu/drm/i915/i915_drv.c > > index acb516308262..14331c396278 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.c > > +++ b/drivers/gpu/drm/i915/i915_drv.c > > @@ -1911,6 +1911,7 @@ static int i915_drm_suspend(struct drm_device > > *dev) > > > > intel_runtime_pm_disable_interrupts(dev_priv); > > intel_hpd_cancel_work(dev_priv); > > + intel_hpd_suspend(dev_priv); > > What about runtime suspend? We won't receive HPD interrupts after > that > either, so we'd need to disconnect in that case too according to the > spec. Oh my bad I was thinking that the regular suspend would handle this too but I was wrong. So I will add a intel_hpd_suspend() call to intel_runtime_suspend() leaving the i915_drv.c changes as this. diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index b1d23c73c147..948914a79c67 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -1905,6 +1905,7 @@ static int i915_drm_suspend(struct drm_device *dev) intel_runtime_pm_disable_interrupts(dev_priv); intel_hpd_cancel_work(dev_priv); + intel_hpd_suspend(dev_priv); intel_suspend_encoders(dev_priv); @@ -2909,6 +2910,7 @@ static int intel_runtime_suspend(struct device *kdev) intel_uc_suspend(dev_priv); intel_runtime_pm_disable_interrupts(dev_priv); + intel_hpd_suspend(dev_priv); intel_uncore_suspend(dev_priv); Also I will drop the next patch as we don't call intel_hpd_cancel_work() in intel_runtime_suspend() path. > > And how are we handling resume then where we'll be in a disconnected > state due to the change in this patch and would continue to do a > modeset (to restore the mode we had before suspend). The drm_kms_helper_poll_enable() calls will trigger the call to the detection function of the connectors that will call intel_digital_port_connected() thal will call ICL TC functions that will take care of update everything. > > > > > intel_suspend_encoders(dev_priv); > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h > > b/drivers/gpu/drm/i915/i915_drv.h > > index 0c8438de3c1b..96d5ddc36f4e 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.h > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > @@ -2792,6 +2792,7 @@ enum hpd_pin intel_hpd_pin_default(struct > > drm_i915_private *dev_priv, > >enum port port); > > bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum > > hpd_pin pin); > > void intel_hpd_enable(struct drm_i915_private *dev_priv, enum > > hpd_pin pin); > > +void intel_hpd_suspend(struct drm_i915_private *dev_priv); > > > > /* i915_irq.c */ > > static inline void i915_queue_hangcheck(struct drm_i915_private > > *dev_priv) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c > > b/drivers/gpu/drm/i915/i915_irq.c > > index d7e47d6082de..23084d227e2a 100644 > > --- a/drivers/gpu/drm/i915/i915_irq.c > > +++
Re: [Intel-gfx] [PATCH v5 4/5] drm: Add library for shmem backed GEM objects
Daniel Vetter writes: > On Tue, Nov 27, 2018 at 12:38:44PM -0800, Eric Anholt wrote: >> Daniel Vetter writes: >> >> > On Mon, Nov 26, 2018 at 04:36:21PM -0800, Eric Anholt wrote: >> >> Noralf Trønnes writes: >> >> > +static void drm_gem_shmem_vm_close(struct vm_area_struct *vma) >> >> > +{ >> >> > + struct drm_gem_object *obj = vma->vm_private_data; >> >> > + struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); >> >> > + >> >> > + drm_gem_shmem_put_pages(shmem); >> >> > + drm_gem_vm_close(vma); >> >> > +} >> >> > + >> >> > +const struct vm_operations_struct drm_gem_shmem_vm_ops = { >> >> > + .fault = drm_gem_shmem_fault, >> >> > + .open = drm_gem_vm_open, >> >> > + .close = drm_gem_shmem_vm_close, >> >> > +}; >> >> > +EXPORT_SYMBOL_GPL(drm_gem_shmem_vm_ops); >> >> >> >> I just saw a warning from drm_gem_shmem_put_pages() for >> >> !shmem->pages_use_count -- I think drm_gem_vm_open() needs to >> >> drm_gem_shmem_get_pages(). >> > >> > Yeah we need a drm_gem_shmem_vm_open here. >> >> Adding one of those fixed my refcounting issues, so I've sent out a v6 >> with it. > > Just realized that I've reviewed this patch already, spotted that vma > management issue there too. Plus a pile of other things. From reading that > other thread discussion with Noralf concluded with "not yet ready for > prime time" unfortunately :-/ I saw stuff about how it wasn't usable for SPI because SPI does weird things with DMA mapping. Was there something else? signature.asc Description: PGP signature ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Return only active connectors for get_resources ioctl (rev3)
== Series Details == Series: Return only active connectors for get_resources ioctl (rev3) URL : https://patchwork.freedesktop.org/series/53163/ State : warning == Summary == $ dim checkpatch origin/drm-tip 14116c78b12f Return only active connectors for get_resources ioctl -:26: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #26: > > > diff --git a/drivers/gpu/drm/drm_mode_config.c > > > b/drivers/gpu/drm/drm_mode_config.c -:90: ERROR:MISSING_SIGN_OFF: Missing Signed-off-by: line(s) total: 1 errors, 1 warnings, 0 checks, 16 lines checked ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 5/6] firmware/guc/glk: Load GuC v11.98 for Geminilake.
From: John Spotswood load the v11.98 guC on geminilake. v2: rebased. v3: Change subject prefix. (Anusha) Cc: Tomi Sarvela Cc: Jani Saarinen Signed-off-by: Anusha Srivatsa Signed-off-by: John Spotswood --- drivers/gpu/drm/i915/intel_guc_fw.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_guc_fw.c b/drivers/gpu/drm/i915/intel_guc_fw.c index a67144ee5ceb..55900937882a 100644 --- a/drivers/gpu/drm/i915/intel_guc_fw.c +++ b/drivers/gpu/drm/i915/intel_guc_fw.c @@ -39,6 +39,9 @@ #define KBL_FW_MAJOR 9 #define KBL_FW_MINOR 39 +#define GLK_FW_MAJOR 11 +#define GLK_FW_MINOR 98 + #define GUC_FW_PATH(platform, major, minor) \ "i915/" __stringify(platform) "_guc_ver" __stringify(major) "_" __stringify(minor) ".bin" @@ -51,6 +54,9 @@ MODULE_FIRMWARE(I915_BXT_GUC_UCODE); #define I915_KBL_GUC_UCODE GUC_FW_PATH(kbl, KBL_FW_MAJOR, KBL_FW_MINOR) MODULE_FIRMWARE(I915_KBL_GUC_UCODE); +#define I915_GLK_GUC_UCODE GUC_FW_PATH(glk, GLK_FW_MAJOR, GLK_FW_MINOR) +MODULE_FIRMWARE(I915_GLK_GUC_UCODE); + static void guc_fw_select(struct intel_uc_fw *guc_fw) { struct intel_guc *guc = container_of(guc_fw, struct intel_guc, fw); @@ -77,6 +83,10 @@ static void guc_fw_select(struct intel_uc_fw *guc_fw) guc_fw->path = I915_KBL_GUC_UCODE; guc_fw->major_ver_wanted = KBL_FW_MAJOR; guc_fw->minor_ver_wanted = KBL_FW_MINOR; + } else if (IS_GEMINILAKE(dev_priv)) { + guc_fw->path = I915_GLK_GUC_UCODE; + guc_fw->major_ver_wanted = GLK_FW_MAJOR; + guc_fw->minor_ver_wanted = GLK_FW_MINOR; } else { dev_info(dev_priv->drm.dev, "%s: No firmware known for this platform!\n", -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 6/6] HAX enable HuC for CI
From: Anusha Srivatsa Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/i915_params.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h index 7e56c516c815..fa65edeb0202 100644 --- a/drivers/gpu/drm/i915/i915_params.h +++ b/drivers/gpu/drm/i915/i915_params.h @@ -45,7 +45,7 @@ struct drm_printer; param(int, disable_power_well, -1) \ param(int, enable_ips, 1) \ param(int, invert_brightness, 0) \ - param(int, enable_guc, 0) \ + param(int, enable_guc, 2) \ param(int, guc_log_level, -1) \ param(char *, guc_firmware_path, NULL) \ param(char *, huc_firmware_path, NULL) \ -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 3/6] firmware/huc/KBL: Update HuC for KBL
From: Anusha Srivatsa We have an update of HuC for KBL. Load the latest version. cc: Rodrigo Vivi Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_huc_fw.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_huc_fw.c b/drivers/gpu/drm/i915/intel_huc_fw.c index 4c4f21731d36..1fa10e327a2d 100644 --- a/drivers/gpu/drm/i915/intel_huc_fw.c +++ b/drivers/gpu/drm/i915/intel_huc_fw.c @@ -30,9 +30,9 @@ #define SKL_HUC_FW_MINOR 8 #define SKL_BLD_NUM 2893 -#define KBL_HUC_FW_MAJOR 02 -#define KBL_HUC_FW_MINOR 00 -#define KBL_BLD_NUM 1810 +#define KBL_HUC_FW_MAJOR 03 +#define KBL_HUC_FW_MINOR 01 +#define KBL_BLD_NUM 2893 #define HUC_FW_PATH(platform, major, minor, bld_num) \ "i915/" __stringify(platform) "_huc_ver" __stringify(major) "_" \ -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 4/6] firmware/huc/GLK: Load HuC for GLK
From: Anusha Srivatsa Load Huc for GLK. Cc: Rodrigo Vivi Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_huc_fw.c | 12 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_huc_fw.c b/drivers/gpu/drm/i915/intel_huc_fw.c index 1fa10e327a2d..634bafb77d79 100644 --- a/drivers/gpu/drm/i915/intel_huc_fw.c +++ b/drivers/gpu/drm/i915/intel_huc_fw.c @@ -34,6 +34,10 @@ #define KBL_HUC_FW_MINOR 01 #define KBL_BLD_NUM 2893 +#define GLK_HUC_FW_MAJOR 03 +#define GLK_HUC_FW_MINOR 01 +#define GLK_BLD_NUM 2893 + #define HUC_FW_PATH(platform, major, minor, bld_num) \ "i915/" __stringify(platform) "_huc_ver" __stringify(major) "_" \ __stringify(minor) "_" __stringify(bld_num) ".bin" @@ -50,6 +54,10 @@ MODULE_FIRMWARE(I915_BXT_HUC_UCODE); KBL_HUC_FW_MINOR, KBL_BLD_NUM) MODULE_FIRMWARE(I915_KBL_HUC_UCODE); +#define I915_GLK_HUC_UCODE HUC_FW_PATH(glk, GLK_HUC_FW_MAJOR, \ + GLK_HUC_FW_MINOR, GLK_BLD_NUM) +MODULE_FIRMWARE(I915_GLK_HUC_UCODE); + static void huc_fw_select(struct intel_uc_fw *huc_fw) { struct intel_huc *huc = container_of(huc_fw, struct intel_huc, fw); @@ -76,6 +84,10 @@ static void huc_fw_select(struct intel_uc_fw *huc_fw) huc_fw->path = I915_KBL_HUC_UCODE; huc_fw->major_ver_wanted = KBL_HUC_FW_MAJOR; huc_fw->minor_ver_wanted = KBL_HUC_FW_MINOR; + } else if (IS_GEMINILAKE(dev_priv)) { + huc_fw->path = I915_GLK_HUC_UCODE; + huc_fw->major_ver_wanted = GLK_HUC_FW_MAJOR; + huc_fw->minor_ver_wanted = GLK_HUC_FW_MINOR; } else { DRM_WARN("%s: No firmware known for this platform!\n", intel_uc_fw_type_repr(huc_fw->type)); -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/6] firmware/huc/SKL: Update HuC versiom for SKL
From: Anusha Srivatsa We have an update of huC for SKL. Load the latest verion. Cc: Rodrigo Vivi Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_huc_fw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_huc_fw.c b/drivers/gpu/drm/i915/intel_huc_fw.c index 9612227b3c44..4c4f21731d36 100644 --- a/drivers/gpu/drm/i915/intel_huc_fw.c +++ b/drivers/gpu/drm/i915/intel_huc_fw.c @@ -27,8 +27,8 @@ #define BXT_BLD_NUM 2893 #define SKL_HUC_FW_MAJOR 01 -#define SKL_HUC_FW_MINOR 07 -#define SKL_BLD_NUM 1398 +#define SKL_HUC_FW_MINOR 8 +#define SKL_BLD_NUM 2893 #define KBL_HUC_FW_MAJOR 02 #define KBL_HUC_FW_MINOR 00 -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 1/6] firmware/huc/BXT: Update the HuC version
From: Anusha Srivatsa We have an update for HuC for BXT. Load the latest version. Cc: Rodrigo Vivi Signed-off-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_huc_fw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_huc_fw.c b/drivers/gpu/drm/i915/intel_huc_fw.c index f93d2384d482..9612227b3c44 100644 --- a/drivers/gpu/drm/i915/intel_huc_fw.c +++ b/drivers/gpu/drm/i915/intel_huc_fw.c @@ -23,8 +23,8 @@ */ #define BXT_HUC_FW_MAJOR 01 -#define BXT_HUC_FW_MINOR 07 -#define BXT_BLD_NUM 1398 +#define BXT_HUC_FW_MINOR 8 +#define BXT_BLD_NUM 2893 #define SKL_HUC_FW_MAJOR 01 #define SKL_HUC_FW_MINOR 07 -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 0/6] HuC Updates [BXT,SKL,KBL,GLK] GuC [GLK]
Adding PR - The following changes since commit 1baa34868b2c0a004dc595b20678145e3fff83e7: Merge branch 'nxp_mc' of https://github.com/NXP/linux-firmware (2018-10-26 08:13:19 -0400) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-firmware firmware_updates for you to fetch changes up to 908244c9c196116069fc6ba43573192ad08ea3af: firmware/guc/GLK: Add GuC Support for GLK (2018-11-28 10:40:38 -0800) Anusha Srivatsa (5): firmware/huc/BXT: Update the HuC version firmware/huc/SKL: Update HuC versiom for SKL firmware/huc/KBL: Update HuC for KBL firmware/huc/GLK: Load HuC for GLK HAX enable HuC for CI John Spotswood (1): firmware/guc/glk: Load GuC v11.98 for Geminilake. drivers/gpu/drm/i915/i915_params.h | 2 +- drivers/gpu/drm/i915/intel_guc_fw.c | 10 ++ drivers/gpu/drm/i915/intel_huc_fw.c | 26 +++--- 3 files changed, 30 insertions(+), 8 deletions(-) -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v3)
Quoting Guang Bai (2018-11-28 21:18:13) > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display is still connected. This is because > the HDMI DDC lines are disconnected a little bit later after the hot-plug > interrupt triggered thus an immediate edid fetch can be made. Use digital > port live states to authorize the edid read. You should at least comment upon why we don't historically do this and why you now believe that it is safe. -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v14 02/17] drm/i915/dp: Compute DSC pipe config in atomic check
DSC params like the enable, compressed bpp, slice count and dsc_split are added to the intel_crtc_state. These parameters are set based on the requested mode and available link parameters during the pipe configuration in atomic check phase. These values are then later used to populate the remaining DSC and RC parameters before enbaling DSC in atomic commit. v15: * Rebase over drm-tip v14: Remove leftovers, use dsc_bpc, refine dsc_compute_config (Ville) v13: * Compute DSC bpc only when DSC is req to be enabled (Ville) v12: * Override bpp with dsc dpcd color depth (Manasi) v11: * Const crtc_state, reject DSC on DP without FEC (Ville) * Dont set dsc_split to false (Ville) v10: * Add a helper for dp_dsc support (Ville) * Set pipe_config to max bpp, link params for DSC for now (Ville) * Compute bpp - use dp dsc support helper (Ville) v9: * Rebase on top of drm-tip that now uses fast_narrow config for edp (Manasi) v8: * Check for DSC bpc not 0 (manasi) v7: * Fix indentation in compute_m_n (Manasi) v6 (From Gaurav): * Remove function call of intel_dp_compute_dsc_params() and invoke intel_dp_compute_dsc_params() in the patch where it is defined to fix compilation warning (Gaurav) v5: Add drm_dsc_cfg in intel_crtc_state (Manasi) v4: * Rebase on refactoring of intel_dp_compute_config on tip (Manasi) * Add a comment why we need to check PSR while enabling DSC (Gaurav) v3: * Check PPR > max_cdclock to use 2 VDSC instances (Ville) v2: * Add if-else for eDP/DP (Gaurav) Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Cc: Gaurav K Singh Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa Reviewed-by: Ville Syrjala Acked-by: Jani Nikula --- drivers/gpu/drm/i915/intel_display.c | 2 +- drivers/gpu/drm/i915/intel_display.h | 3 +- drivers/gpu/drm/i915/intel_dp.c | 192 --- 3 files changed, 172 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index d07fa4456150..18ab713f9a6b 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -6736,7 +6736,7 @@ static void compute_m_n(unsigned int m, unsigned int n, } void -intel_link_compute_m_n(int bits_per_pixel, int nlanes, +intel_link_compute_m_n(u16 bits_per_pixel, int nlanes, int pixel_clock, int link_clock, struct intel_link_m_n *m_n, bool constant_n) diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h index a7ceb8f904f7..3ec704c93d6e 100644 --- a/drivers/gpu/drm/i915/intel_display.h +++ b/drivers/gpu/drm/i915/intel_display.h @@ -440,10 +440,9 @@ struct intel_link_m_n { (__i)++) \ for_each_if(crtc) -void intel_link_compute_m_n(int bpp, int nlanes, +void intel_link_compute_m_n(u16 bpp, int nlanes, int pixel_clock, int link_clock, struct intel_link_m_n *m_n, bool constant_n); - bool is_ccs_modifier(u64 modifier); #endif diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 70ae3d57316b..a2780733768a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -47,6 +47,8 @@ /* DP DSC small joiner has 2 FIFOs each of 640 x 6 bytes */ #define DP_DSC_MAX_SMALL_JOINER_RAM_BUFFER 61440 +#define DP_DSC_MIN_SUPPORTED_BPC 8 +#define DP_DSC_MAX_SUPPORTED_BPC 10 /* DP DSC throughput values used for slice count calculations KPixels/s */ #define DP_DSC_PEAK_PIXEL_RATE 272 @@ -1708,6 +1710,26 @@ struct link_config_limits { int min_bpp, max_bpp; }; +static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp, +const struct intel_crtc_state *pipe_config) +{ + struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); + + /* FIXME: FEC needed for external DP until then reject DSC on DP */ + if (!intel_dp_is_edp(intel_dp)) + return false; + + return INTEL_GEN(dev_priv) >= 10 && + pipe_config->cpu_transcoder != TRANSCODER_A; +} + +static bool intel_dp_supports_dsc(struct intel_dp *intel_dp, + const struct intel_crtc_state *pipe_config) +{ + return intel_dp_source_supports_dsc(intel_dp, pipe_config) && + drm_dp_sink_supports_dsc(intel_dp->dsc_dpcd); +} + static int intel_dp_compute_bpp(struct intel_dp *intel_dp, struct intel_crtc_state *pipe_config) { @@ -1842,14 +1864,115 @@ intel_dp_compute_link_config_fast(struct intel_dp *intel_dp, return false; } +static int intel_dp_dsc_compute_bpp(struct intel_dp *intel_dp, u8 dsc_max_bpc) +{ + int i, num_bpc; + u8 dsc_bpc[3] = {0}; + + num_bpc = drm_dp_dsc_sink_supported_input_bpcs(intel_dp->dsc_dpcd, +
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v3)
On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display is still connected. This is because the HDMI DDC lines are disconnected a little bit later after the hot-plug interrupt triggered thus an immediate edid fetch can be made. Use digital port live states to authorize the edid read. v2: Fix the formatting issue v3: Use digital port states to authorize the edid read Cc: Jani Nikula Cc: Chris Chiu Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b3e8f2..8cf7c78b8cdd 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - if (IS_ICELAKE(dev_priv) && + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && !intel_digital_port_connected(encoder)) goto out; -- 2.17.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PULL v2] drm-misc-fixes
Hi Dave, Here's the updated PR with the mst destroy patch reverted. drm-misc-fixes-2018-11-28-1: - mst: Don't try to validate ports while destroying them (Lyude) - Revert: Don't try to validate ports while destroying them (Lyude) - core: Don't set device to master unless set_master succeeds (Sergio) - meson: Do vblank_on/off on enable/disable (Neil) - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) Cc: Lyude Paul Cc: Sergio Correia Cc: Neil Armstrong Cheers, Sean For completeness, here's my summary from the v1: --- Hi Dave, Happy meson week! A bunch of stellar fixes coming in this week from Lyude, and a couple others plugging holes in meson and core. drm-misc-fixes-2018-11-28: - mst: Don't try to validate ports while destroying them (Lyude) - core: Don't set device to master unless set_master succeeds (Sergio) - meson: Do vblank_on/off on enable/disable (Neil) - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) Cc: Lyude Paul Cc: Sergio Correia Cc: Neil Armstrong Cheers, Sean --- The following changes since commit 2e6e902d185027f8e3cb8b7305238f7e35d6a436: Linux 4.20-rc4 (2018-11-25 14:19:31 -0800) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-misc tags/drm-misc-fixes-2018-11-28-1 for you to fetch changes up to 9765635b30756eb74e05e260ac812659c296cd28: Revert "drm/dp_mst: Skip validating ports during destruction, just ref" (2018-11-28 16:22:17 -0500) - mst: Don't try to validate ports while destroying them (Lyude) - Revert: Don't try to validate ports while destroying them (Lyude) - core: Don't set device to master unless set_master succeeds (Sergio) - meson: Do vblank_on/off on enable/disable (Neil) - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) Cc: Lyude Paul Cc: Sergio Correia Cc: Neil Armstrong Christian Hewitt (1): drm/meson: add support for 1080p25 mode Lyude Paul (4): drm/dp_mst: Skip validating ports during destruction, just ref drm/meson: Enable fast_io in meson_dw_hdmi_regmap_config drm/meson: Fix OOB memory accesses in meson_viu_set_osd_lut() Revert "drm/dp_mst: Skip validating ports during destruction, just ref" Neil Armstrong (1): drm/meson: Fixes for drm_crtc_vblank_on/off support Sergio Correia (1): drm: set is_master to 0 upon drm_new_set_master() failure drivers/gpu/drm/drm_auth.c| 2 ++ drivers/gpu/drm/meson/meson_crtc.c| 27 +-- drivers/gpu/drm/meson/meson_dw_hdmi.c | 1 + drivers/gpu/drm/meson/meson_venc.c| 4 drivers/gpu/drm/meson/meson_viu.c | 12 ++-- 5 files changed, 38 insertions(+), 8 deletions(-) -- Sean Paul, Software Engineer, Google / Chromium OS ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init
== Series Details == Series: series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init URL : https://patchwork.freedesktop.org/series/53185/ State : success == Summary == CI Bug Log - changes from CI_DRM_5216 -> Patchwork_10936 Summary --- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53185/revisions/1/mbox/ Known issues Here are the changes found in Patchwork_10936 that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_suspend@basic-s4-devices: - {fi-kbl-7500u}: PASS -> DMESG-WARN [fdo#105128] / [fdo#107139] * {igt@runner@aborted}: - {fi-icl-u3}:NOTRUN -> FAIL [fdo#108866 ] Warnings * igt@i915_selftest@live_contexts: - {fi-icl-u3}:DMESG-FAIL [fdo#108569] -> INCOMPLETE [fdo#108315] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#105128]: https://bugs.freedesktop.org/show_bug.cgi?id=105128 [fdo#107139]: https://bugs.freedesktop.org/show_bug.cgi?id=107139 [fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108866 ]: https://bugs.freedesktop.org/show_bug.cgi?id=108866 Participating hosts (50 -> 43) -- Missing(7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-pnv-d510 Build changes - * Linux: CI_DRM_5216 -> Patchwork_10936 CI_DRM_5216: 2236cef56d19627516af1f1b19b155d65fbc9834 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10936: ae4f82c5d364231a64f059987ea6cc7ffe0a01b7 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == ae4f82c5d364 drm/i915: Pipeline PDP updates for Braswell 08ed6c2f4294 drm/i915/selftests: Reorder request allocation vs vma pinning 89921a7696e3 drm/i915/selftests: Terminate hangcheck sanitycheck forcibly 7046de4f256b drm/i915: Allocate a common scratch page 0b963406d978 drm/i915/ringbuffer: Clear semaphore sync registers on ring init == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10936/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915/psr: Get pipe id following atomic guidelines
On Tue, Nov 27, 2018 at 11:28:38PM -0800, José Roberto de Souza wrote: > As stated in struct drm_encoder, crtc field should only be used > by non-atomic drivers. > > So here caching the pipe id in intel_psr_enable() what is way more > simple and efficient than at every call to > intel_psr_flush()/invalidate() get the > drm.mode_config.connection_mutex lock to safely be able to get the > pipe id by reading drm_connector_state.crtc. > > This should fix the null pointer dereference crash below as the > previous way to get the pipe id was prone to race conditions. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105959 > Cc: Dhinakaran Pandiyan > Cc: Rodrigo Vivi > Signed-off-by: José Roberto de Souza > --- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_psr.c | 19 --- > 2 files changed, 5 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index f763b30f98d9..9ea39b82836f 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -494,6 +494,7 @@ struct i915_psr { > bool sink_support; > bool prepared, enabled; > struct intel_dp *dp; > + enum pipe pipe; > bool active; > struct work_struct work; > unsigned busy_frontbuffer_bits; > diff --git a/drivers/gpu/drm/i915/intel_psr.c > b/drivers/gpu/drm/i915/intel_psr.c > index 572e626eadff..11a520074f06 100644 > --- a/drivers/gpu/drm/i915/intel_psr.c > +++ b/drivers/gpu/drm/i915/intel_psr.c > @@ -705,6 +705,7 @@ void intel_psr_enable(struct intel_dp *intel_dp, > dev_priv->psr.psr2_enabled = intel_psr2_enabled(dev_priv, crtc_state); > dev_priv->psr.busy_frontbuffer_bits = 0; > dev_priv->psr.prepared = true; > + dev_priv->psr.pipe = to_intel_crtc(crtc_state->base.crtc)->pipe; A step in the right direction. And would be nice if someone could eventually move the psr state to be a per-crtc thing rather than a global thing. > > if (psr_global_enabled(dev_priv->psr.debug)) > intel_psr_enable_locked(dev_priv, crtc_state); > @@ -1012,9 +1013,6 @@ static void intel_psr_work(struct work_struct *work) > void intel_psr_invalidate(struct drm_i915_private *dev_priv, > unsigned frontbuffer_bits, enum fb_op_origin origin) > { > - struct drm_crtc *crtc; > - enum pipe pipe; > - > if (!CAN_PSR(dev_priv)) > return; > > @@ -1027,10 +1025,7 @@ void intel_psr_invalidate(struct drm_i915_private > *dev_priv, > return; > } > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > - pipe = to_intel_crtc(crtc)->pipe; > - > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv->psr.pipe); > dev_priv->psr.busy_frontbuffer_bits |= frontbuffer_bits; > > if (frontbuffer_bits) > @@ -1055,9 +1050,6 @@ void intel_psr_invalidate(struct drm_i915_private > *dev_priv, > void intel_psr_flush(struct drm_i915_private *dev_priv, >unsigned frontbuffer_bits, enum fb_op_origin origin) > { > - struct drm_crtc *crtc; > - enum pipe pipe; > - > if (!CAN_PSR(dev_priv)) > return; > > @@ -1070,10 +1062,7 @@ void intel_psr_flush(struct drm_i915_private *dev_priv, > return; > } > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > - pipe = to_intel_crtc(crtc)->pipe; > - > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv->psr.pipe); > dev_priv->psr.busy_frontbuffer_bits &= ~frontbuffer_bits; > > /* By definition flush = invalidate + flush */ > @@ -1087,7 +1076,7 @@ void intel_psr_flush(struct drm_i915_private *dev_priv, >* but it makes more sense write to the current active >* pipe. >*/ > - I915_WRITE(CURSURFLIVE(pipe), 0); > + I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); > } > > if (!dev_priv->psr.active && !dev_priv->psr.busy_frontbuffer_bits) > -- > 2.19.2 > > ___ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2] Return only active connectors for get_resources ioctl
On Wed, Nov 28, 2018 at 10:21:33PM +0100, Daniel Vetter wrote: > On Wed, Nov 28, 2018 at 09:51:13PM +0100, Daniel Vetter wrote: > > On Wed, Nov 28, 2018 at 03:55:58PM +0200, Stanislav Lisovskiy wrote: > > > Currently kernel might allocate different connector ids > > > for the same outputs in case of DP MST, which seems to > > > confuse userspace. There are can be different connector > > > ids in the list, which could be assigned to the same > > > output, while being in different states. > > > This results in issues, like external displays staying > > > blank after quick unplugging and plugging back(bug #106250). > > > Returning only active DP connectors fixes the issue. > > > > > > v2: Removed caps from the title > > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 > > > Signed-off-by: Stanislav Lisovskiy > > > --- > > > drivers/gpu/drm/drm_mode_config.c | 16 +++- > > > 1 file changed, 11 insertions(+), 5 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_mode_config.c > > > b/drivers/gpu/drm/drm_mode_config.c > > > index ee80788f2c40..ec5b2b08a45e 100644 > > > --- a/drivers/gpu/drm/drm_mode_config.c > > > +++ b/drivers/gpu/drm/drm_mode_config.c > > > @@ -143,6 +143,7 @@ int drm_mode_getresources(struct drm_device *dev, > > > void *data, > > > drm_connector_list_iter_begin(dev, _iter); > > > count = 0; > > > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > > > + DRM_DEBUG_KMS("GetResources: writing connectors start"); > > > drm_for_each_connector_iter(connector, _iter) { > > > /* only expose writeback connectors if userspace understands > > > them */ > > > if (!file_priv->writeback_connectors && > > > @@ -150,15 +151,20 @@ int drm_mode_getresources(struct drm_device *dev, > > > void *data, > > > continue; > > > > > > if (drm_lease_held(file_priv, connector->base.id)) { > > > - if (count < card_res->count_connectors && > > > - put_user(connector->base.id, connector_id + count)) > > > { > > > - drm_connector_list_iter_end(_iter); > > > - return -EFAULT; > > > + if (connector->connector_type != > > > DRM_MODE_CONNECTOR_DisplayPort || > > > + connector->status != > > > connector_status_disconnected) { > > > + if (count < card_res->count_connectors && > > > + put_user(connector->base.id, connector_id + > > > count)) { > > > + drm_connector_list_iter_end(_iter); > > > + return -EFAULT; > > > + } > > > + DRM_DEBUG_KMS("GetResources: connector %s", > > > connector->name); > > > + count++; > > > > I tried to read the bug and I have no idea what's going on here. Userspace > > is supposed to shut off outputs that are disconnected, whether that's DP, > > DP MST or something else shouldn't matter. New connectors can come as > > they see fit. Also not really something special. > > > > Why do we need to dynamically hide an output here? Note that this also > > affects normal DP ports, which I have no idea is actually what you want to > > do or not. > > For entertainment and other reasons, testing the below diff would be > interesting. Now also with real locking: diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 4de247ddf05f..1b83567aa922 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -494,11 +494,16 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo static void intel_dp_register_mst_connector(struct drm_connector *connector) { struct drm_i915_private *dev_priv = to_i915(connector->dev); + struct drm_mode_config *config = >dev->mode_config; if (dev_priv->fbdev) drm_fb_helper_add_one_connector(_priv->fbdev->helper, connector); + spin_lock_irq(>connector_list_lock); + list_move(>head, >connector_list); + spin_unlock_irq(>connector_list_lock); + drm_connector_register(connector); } -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2] Return only active connectors for get_resources ioctl
On Wed, Nov 28, 2018 at 09:51:13PM +0100, Daniel Vetter wrote: > On Wed, Nov 28, 2018 at 03:55:58PM +0200, Stanislav Lisovskiy wrote: > > Currently kernel might allocate different connector ids > > for the same outputs in case of DP MST, which seems to > > confuse userspace. There are can be different connector > > ids in the list, which could be assigned to the same > > output, while being in different states. > > This results in issues, like external displays staying > > blank after quick unplugging and plugging back(bug #106250). > > Returning only active DP connectors fixes the issue. > > > > v2: Removed caps from the title > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 > > Signed-off-by: Stanislav Lisovskiy > > --- > > drivers/gpu/drm/drm_mode_config.c | 16 +++- > > 1 file changed, 11 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_mode_config.c > > b/drivers/gpu/drm/drm_mode_config.c > > index ee80788f2c40..ec5b2b08a45e 100644 > > --- a/drivers/gpu/drm/drm_mode_config.c > > +++ b/drivers/gpu/drm/drm_mode_config.c > > @@ -143,6 +143,7 @@ int drm_mode_getresources(struct drm_device *dev, void > > *data, > > drm_connector_list_iter_begin(dev, _iter); > > count = 0; > > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > > + DRM_DEBUG_KMS("GetResources: writing connectors start"); > > drm_for_each_connector_iter(connector, _iter) { > > /* only expose writeback connectors if userspace understands > > them */ > > if (!file_priv->writeback_connectors && > > @@ -150,15 +151,20 @@ int drm_mode_getresources(struct drm_device *dev, > > void *data, > > continue; > > > > if (drm_lease_held(file_priv, connector->base.id)) { > > - if (count < card_res->count_connectors && > > - put_user(connector->base.id, connector_id + count)) > > { > > - drm_connector_list_iter_end(_iter); > > - return -EFAULT; > > + if (connector->connector_type != > > DRM_MODE_CONNECTOR_DisplayPort || > > + connector->status != > > connector_status_disconnected) { > > + if (count < card_res->count_connectors && > > + put_user(connector->base.id, connector_id + > > count)) { > > + drm_connector_list_iter_end(_iter); > > + return -EFAULT; > > + } > > + DRM_DEBUG_KMS("GetResources: connector %s", > > connector->name); > > + count++; > > I tried to read the bug and I have no idea what's going on here. Userspace > is supposed to shut off outputs that are disconnected, whether that's DP, > DP MST or something else shouldn't matter. New connectors can come as > they see fit. Also not really something special. > > Why do we need to dynamically hide an output here? Note that this also > affects normal DP ports, which I have no idea is actually what you want to > do or not. For entertainment and other reasons, testing the below diff would be interesting. diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 4de247ddf05f..e1b66396c83b 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -499,6 +499,8 @@ static void intel_dp_register_mst_connector(struct drm_connector *connector) drm_fb_helper_add_one_connector(_priv->fbdev->helper, connector); + list_move(>head, >dev->mode_config.connector_list); + drm_connector_register(connector); } -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Mark up early pre-production Kabylakes
== Series Details == Series: drm/i915: Mark up early pre-production Kabylakes URL : https://patchwork.freedesktop.org/series/53161/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10929_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10929_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10929_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10929_full: ### IGT changes ### Warnings * igt@perf_pmu@rc6: - shard-kbl: PASS -> SKIP Known issues Here are the changes found in Patchwork_10929_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@gem_render_tiled_blits@basic: - shard-apl: PASS -> INCOMPLETE [fdo#103927] * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +4 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-skl: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-256x85-sliding: - shard-glk: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: PASS -> FAIL [fdo#104873] * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-skl: PASS -> FAIL [fdo#102670] / [fdo#106081] * igt@kms_flip@flip-vs-expired-vblank: - shard-kbl: PASS -> FAIL [fdo#102887] / [fdo#105363] * igt@kms_flip_tiling@flip-to-y-tiled: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc: - shard-apl: PASS -> FAIL [fdo#103167] * igt@kms_frontbuffer_tracking@fbc-1p-rte: - shard-glk: PASS -> FAIL [fdo#103167] / [fdo#105682] * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu: - shard-glk: PASS -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite: - {shard-iclb}: PASS -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c: - shard-skl: PASS -> FAIL [fdo#103191] / [fdo#107362] * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] * igt@kms_plane_multiple@atomic-pipe-a-tiling-x: - shard-apl: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - {shard-iclb}: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane_scaling@pipe-c-scaler-with-rotation: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] * igt@kms_setmode@basic: - shard-hsw: PASS -> FAIL [fdo#99912] * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +4 * igt@pm_rpm@dpms-mode-unset-non-lpsp: - shard-skl: NOTRUN -> INCOMPLETE [fdo#107807] * igt@pm_rpm@system-suspend-execbuf: - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] / [fdo#108840] * igt@pm_rpm@universal-planes: - shard-skl: PASS -> INCOMPLETE [fdo#107807] +2 Possible fixes * igt@drm_import_export@import-close-race-flink: - shard-skl: TIMEOUT [fdo#108667] -> PASS *
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init
== Series Details == Series: series starting with [1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init URL : https://patchwork.freedesktop.org/series/53185/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915/ringbuffer: Clear semaphore sync registers on ring init Okay! Commit: drm/i915: Allocate a common scratch page -drivers/gpu/drm/i915/selftests/../i915_drv.h:3566:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3568:16: warning: expression using sizeof(void) Commit: drm/i915/selftests: Terminate hangcheck sanitycheck forcibly Okay! Commit: drm/i915/selftests: Reorder request allocation vs vma pinning Okay! Commit: drm/i915: Pipeline PDP updates for Braswell Okay! ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/psr: Get pipe id following atomic guidelines (rev2)
== Series Details == Series: drm/i915/psr: Get pipe id following atomic guidelines (rev2) URL : https://patchwork.freedesktop.org/series/53132/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5216 -> Patchwork_10934 Summary --- **FAILURE** Serious unknown changes coming with Patchwork_10934 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10934, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://patchwork.freedesktop.org/api/1.0/series/53132/revisions/2/mbox/ Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10934: ### IGT changes ### Possible regressions * igt@i915_selftest@live_sanitycheck: - fi-apl-guc: PASS -> DMESG-WARN * {igt@runner@aborted}: - fi-apl-guc: NOTRUN -> FAIL Known issues Here are the changes found in Patchwork_10934 that come from known issues: ### IGT changes ### Issues hit * igt@i915_selftest@live_hangcheck: - fi-kbl-7560u: PASS -> INCOMPLETE [fdo#108044] * igt@kms_pipe_crc_basic@read-crc-pipe-a: - fi-byt-clapper: PASS -> FAIL [fdo#107362] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#108044]: https://bugs.freedesktop.org/show_bug.cgi?id=108044 Participating hosts (50 -> 44) -- Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 Build changes - * Linux: CI_DRM_5216 -> Patchwork_10934 CI_DRM_5216: 2236cef56d19627516af1f1b19b155d65fbc9834 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4735: b05c028ccdb6ac8e8d8499a041bb14dfe358ee26 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10934: 2ebde49b2d0906d8106b020a2b0480bc5f552a01 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 2ebde49b2d09 drm/i915/psr: Get pipe id following atomic guidelines == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10934/ ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state
== Series Details == Series: series starting with [CI,v13,01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state URL : https://patchwork.freedesktop.org/series/53184/ State : failure == Summary == Applying: drm/i915/dp: Add DSC params and DSC config to intel_crtc_state Applying: drm/i915/dp: Compute DSC pipe config in atomic check Using index info to reconstruct a base tree... M drivers/gpu/drm/i915/intel_display.c M drivers/gpu/drm/i915/intel_display.h Falling back to patching base and 3-way merge... Auto-merging drivers/gpu/drm/i915/intel_display.h CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/intel_display.h Auto-merging drivers/gpu/drm/i915/intel_display.c error: Failed to merge in the changes. Patch failed at 0002 drm/i915/dp: Compute DSC pipe config in atomic check Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2] Return only active connectors for get_resources ioctl
On Wed, Nov 28, 2018 at 03:55:58PM +0200, Stanislav Lisovskiy wrote: > Currently kernel might allocate different connector ids > for the same outputs in case of DP MST, which seems to > confuse userspace. There are can be different connector > ids in the list, which could be assigned to the same > output, while being in different states. > This results in issues, like external displays staying > blank after quick unplugging and plugging back(bug #106250). > Returning only active DP connectors fixes the issue. > > v2: Removed caps from the title > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 > Signed-off-by: Stanislav Lisovskiy > --- > drivers/gpu/drm/drm_mode_config.c | 16 +++- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/drm_mode_config.c > b/drivers/gpu/drm/drm_mode_config.c > index ee80788f2c40..ec5b2b08a45e 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -143,6 +143,7 @@ int drm_mode_getresources(struct drm_device *dev, void > *data, > drm_connector_list_iter_begin(dev, _iter); > count = 0; > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > + DRM_DEBUG_KMS("GetResources: writing connectors start"); > drm_for_each_connector_iter(connector, _iter) { > /* only expose writeback connectors if userspace understands > them */ > if (!file_priv->writeback_connectors && > @@ -150,15 +151,20 @@ int drm_mode_getresources(struct drm_device *dev, void > *data, > continue; > > if (drm_lease_held(file_priv, connector->base.id)) { > - if (count < card_res->count_connectors && > - put_user(connector->base.id, connector_id + count)) > { > - drm_connector_list_iter_end(_iter); > - return -EFAULT; > + if (connector->connector_type != > DRM_MODE_CONNECTOR_DisplayPort || > + connector->status != > connector_status_disconnected) { > + if (count < card_res->count_connectors && > + put_user(connector->base.id, connector_id + > count)) { > + drm_connector_list_iter_end(_iter); > + return -EFAULT; > + } > + DRM_DEBUG_KMS("GetResources: connector %s", > connector->name); > + count++; I tried to read the bug and I have no idea what's going on here. Userspace is supposed to shut off outputs that are disconnected, whether that's DP, DP MST or something else shouldn't matter. New connectors can come as they see fit. Also not really something special. Why do we need to dynamically hide an output here? Note that this also affects normal DP ports, which I have no idea is actually what you want to do or not. -Daniel > } > - count++; > } > } > card_res->count_connectors = count; > + DRM_DEBUG_KMS("GetResources: writing connectors end - count %d", count); > drm_connector_list_iter_end(_iter); > > return ret; > -- > 2.17.1 > > ___ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [v4 3/3] drm/i915: Attach colorspace property and enable modeset
Hi Uma, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on drm-intel/for-linux-next] [also build test WARNING on next-20181128] [cannot apply to v4.20-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Uma-Shankar/Add-Colorspace-connector-property-interface/20181128-083317 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): >> drivers/gpu/drm/i915/intel_hdmi.c:493:51: warning: mixing different enum >> types drivers/gpu/drm/i915/intel_hdmi.c:493:51: unsigned int enum absolute_colorimetry_list versus drivers/gpu/drm/i915/intel_hdmi.c:493:51: unsigned int enum hdmi_colorimetry include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y vim +493 drivers/gpu/drm/i915/intel_hdmi.c 460 461 static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder, 462 const struct intel_crtc_state *crtc_state, 463 const struct drm_connector_state *conn_state) 464 { 465 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(>base); 466 const struct drm_display_mode *adjusted_mode = 467 _state->base.adjusted_mode; 468 struct drm_connector *connector = _hdmi->attached_connector->base; 469 bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported || 470 connector->display_info.color_formats & DRM_COLOR_FORMAT_YCRCB420; 471 union hdmi_infoframe frame; 472 int ret; 473 474 ret = drm_hdmi_avi_infoframe_from_display_mode(, 475 adjusted_mode, 476 is_hdmi2_sink); 477 if (ret < 0) { 478 DRM_ERROR("couldn't fill AVI infoframe\n"); 479 return; 480 } 481 482 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) 483 frame.avi.colorspace = HDMI_COLORSPACE_YUV420; 484 else if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR444) 485 frame.avi.colorspace = HDMI_COLORSPACE_YUV444; 486 else 487 frame.avi.colorspace = HDMI_COLORSPACE_RGB; 488 489 if (conn_state->colorspace == COLORIMETRY_DEFAULT) { 490 /* Set ITU 709 as default for HDMI */ 491 frame.avi.colorimetry = COLORIMETRY_ITU_709; 492 } else if (conn_state->colorspace < COLORIMETRY_XV_YCC_601) { > 493 frame.avi.colorimetry = conn_state->colorspace; 494 } else { 495 frame.avi.colorimetry = HDMI_COLORIMETRY_EXTENDED; 496 /* 497 * Starting from extended list where COLORIMETRY_XV_YCC_601 498 * is the first extended mode and its value is 0 as per HDMI 499 * specification. 500 */ 501 frame.avi.extended_colorimetry = conn_state->colorspace - 502 COLORIMETRY_XV_YCC_601; 503 } 504 505 drm_hdmi_avi_infoframe_quant_range(, adjusted_mode, 506 crtc_state->limited_color_range ? 507 HDMI_QUANTIZATION_RANGE_LIMITED : 508 HDMI_QUANTIZATION_RANGE_FULL, 509 intel_hdmi->rgb_quant_range_selectable, 510 is_hdmi2_sink); 511 512 drm_hdmi_avi_infoframe_content_type(, 513 conn_state); 514 515 /* TODO: handle pixel repetition for YCBCR420 outputs */ 516 intel_write_infoframe(encoder, crtc_state, 517); 518 } 519 --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/psr: Get pipe id following atomic guidelines (rev2)
== Series Details == Series: drm/i915/psr: Get pipe id following atomic guidelines (rev2) URL : https://patchwork.freedesktop.org/series/53132/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915/psr: Get pipe id following atomic guidelines -drivers/gpu/drm/i915/selftests/../i915_drv.h:3566:16: warning: expression using sizeof(void) +drivers/gpu/drm/i915/selftests/../i915_drv.h:3567:16: warning: expression using sizeof(void) ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 4/4] drm/edid: Add display_info.rgb_quant_range_selectable
On Wed, Nov 28, 2018 at 12:19 PM Eric Anholt wrote: > > Ville Syrjala writes: > > > From: Ville Syrjälä > > > > Move the CEA-861 QS bit handling entirely into the edid code. No > > need to bother the drivers with this. > > > > Cc: Alex Deucher > > Cc: "Christian König" > > Cc: "David (ChunMing) Zhou" > > Cc: amd-...@lists.freedesktop.org > > Cc: Eric Anholt (supporter:DRM DRIVERS FOR VC4) > > Signed-off-by: Ville Syrjälä > > For vc4, > Acked-by: Eric Anholt > > Looks like a nice cleanup! for radeon: Acked-by: Alex Deucher ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PULL] drm-misc-fixes
On Wed, Nov 28, 2018 at 3:04 PM Sean Paul wrote: > > > Hi Dave, > Happy meson week! A bunch of stellar fixes coming in this week from Lyude, > and a > couple others plugging holes in meson and core. > > > drm-misc-fixes-2018-11-28: > - mst: Don't try to validate ports while destroying them (Lyude) ICYMIRC, Lyude noticed a new issue with this patch, so we're going to revert and re-send. Please drop for now, Sean > - core: Don't set device to master unless set_master succeeds (Sergio) > - meson: Do vblank_on/off on enable/disable (Neil) > - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) > - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) > > Cc: Lyude Paul > Cc: Sergio Correia > Cc: Neil Armstrong > > Cheers, Sean > > > The following changes since commit 2e6e902d185027f8e3cb8b7305238f7e35d6a436: > > Linux 4.20-rc4 (2018-11-25 14:19:31 -0800) > > are available in the Git repository at: > > git://anongit.freedesktop.org/drm/drm-misc tags/drm-misc-fixes-2018-11-28 > > for you to fetch changes up to 31e1ab494559fb46de304cc6c2aed1528f94b298: > > drm/meson: add support for 1080p25 mode (2018-11-26 16:14:28 -0500) > > > - mst: Don't try to validate ports while destroying them (Lyude) > - core: Don't set device to master unless set_master succeeds (Sergio) > - meson: Do vblank_on/off on enable/disable (Neil) > - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) > - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) > > Cc: Lyude Paul > Cc: Sergio Correia > Cc: Neil Armstrong > > > Christian Hewitt (1): > drm/meson: add support for 1080p25 mode > > Lyude Paul (3): > drm/dp_mst: Skip validating ports during destruction, just ref > drm/meson: Enable fast_io in meson_dw_hdmi_regmap_config > drm/meson: Fix OOB memory accesses in meson_viu_set_osd_lut() > > Neil Armstrong (1): > drm/meson: Fixes for drm_crtc_vblank_on/off support > > Sergio Correia (1): > drm: set is_master to 0 upon drm_new_set_master() failure > > drivers/gpu/drm/drm_auth.c| 2 ++ > drivers/gpu/drm/drm_dp_mst_topology.c | 15 +-- > drivers/gpu/drm/meson/meson_crtc.c| 27 +-- > drivers/gpu/drm/meson/meson_dw_hdmi.c | 1 + > drivers/gpu/drm/meson/meson_venc.c| 4 > drivers/gpu/drm/meson/meson_viu.c | 12 ++-- > 6 files changed, 51 insertions(+), 10 deletions(-) > > -- > Sean Paul, Software Engineer, Google / Chromium OS ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 4/5] drm/i915/selftests: Reorder request allocation vs vma pinning
Impose a restraint that we have all vma pinned for a request prior to its allocation. This is to simplify request construction, and should facilitate unravelling the lock interdependencies later. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/selftests/huge_pages.c | 31 +++-- .../gpu/drm/i915/selftests/intel_hangcheck.c | 123 +- drivers/gpu/drm/i915/selftests/intel_lrc.c| 86 ++-- 3 files changed, 119 insertions(+), 121 deletions(-) diff --git a/drivers/gpu/drm/i915/selftests/huge_pages.c b/drivers/gpu/drm/i915/selftests/huge_pages.c index 26c065c8d2c0..a0c7cbc212ba 100644 --- a/drivers/gpu/drm/i915/selftests/huge_pages.c +++ b/drivers/gpu/drm/i915/selftests/huge_pages.c @@ -972,7 +972,6 @@ static int gpu_write(struct i915_vma *vma, { struct i915_request *rq; struct i915_vma *batch; - int flags = 0; int err; GEM_BUG_ON(!intel_engine_can_store_dword(engine)); @@ -981,14 +980,14 @@ static int gpu_write(struct i915_vma *vma, if (err) return err; - rq = i915_request_alloc(engine, ctx); - if (IS_ERR(rq)) - return PTR_ERR(rq); - batch = gpu_write_dw(vma, dword * sizeof(u32), value); - if (IS_ERR(batch)) { - err = PTR_ERR(batch); - goto err_request; + if (IS_ERR(batch)) + return PTR_ERR(batch); + + rq = i915_request_alloc(engine, ctx); + if (IS_ERR(rq)) { + err = PTR_ERR(rq); + goto err_batch; } err = i915_vma_move_to_active(batch, rq, 0); @@ -996,21 +995,21 @@ static int gpu_write(struct i915_vma *vma, goto err_request; i915_gem_object_set_active_reference(batch->obj); - i915_vma_unpin(batch); - i915_vma_close(batch); - err = engine->emit_bb_start(rq, - batch->node.start, batch->node.size, - flags); + err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE); if (err) goto err_request; - err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE); + err = engine->emit_bb_start(rq, + batch->node.start, batch->node.size, + 0); +err_request: if (err) i915_request_skip(rq, err); - -err_request: i915_request_add(rq); +err_batch: + i915_vma_unpin(batch); + i915_vma_close(batch); return err; } diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c index a48fbe2557ea..b767fab9ce1f 100644 --- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c +++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c @@ -102,52 +102,87 @@ static u64 hws_address(const struct i915_vma *hws, return hws->node.start + offset_in_page(sizeof(u32)*rq->fence.context); } -static int emit_recurse_batch(struct hang *h, - struct i915_request *rq) +static int move_to_active(struct i915_vma *vma, + struct i915_request *rq, + unsigned int flags) +{ + int err; + + err = i915_vma_move_to_active(vma, rq, 0); + if (err) + return err; + + if (!i915_gem_object_has_active_reference(vma->obj)) { + i915_gem_object_get(vma->obj); + i915_gem_object_set_active_reference(vma->obj); + } + + return 0; +} + +static struct i915_request * +hang_create_request(struct hang *h, struct intel_engine_cs *engine) { struct drm_i915_private *i915 = h->i915; struct i915_address_space *vm = - rq->gem_context->ppgtt ? - >gem_context->ppgtt->vm : - >ggtt.vm; + h->ctx->ppgtt ? >ctx->ppgtt->vm : >ggtt.vm; + struct i915_request *rq = NULL; struct i915_vma *hws, *vma; unsigned int flags; u32 *batch; int err; + if (i915_gem_object_is_active(h->obj)) { + struct drm_i915_gem_object *obj; + void *vaddr; + + obj = i915_gem_object_create_internal(h->i915, PAGE_SIZE); + if (IS_ERR(obj)) + return ERR_CAST(obj); + + vaddr = i915_gem_object_pin_map(obj, + i915_coherent_map_type(h->i915)); + if (IS_ERR(vaddr)) { + i915_gem_object_put(obj); + return ERR_CAST(vaddr); + } + + i915_gem_object_unpin_map(h->obj); + i915_gem_object_put(h->obj); + + h->obj = obj; + h->batch = vaddr; + } + vma = i915_vma_instance(h->obj, vm, NULL); if (IS_ERR(vma)) - return PTR_ERR(vma); + return ERR_CAST(vma); hws = i915_vma_instance(h->hws,
[Intel-gfx] [PATCH 5/5] drm/i915: Pipeline PDP updates for Braswell
Currently we face a severe problem on Braswell that manifests as invalid ppGTT accesses. The code tries to maintain the PDP (page directory pointers) inside the context in two ways, direct write into the context and a pipelined LRI update. The direct write into the context is fundamentally racy as it is unserialised with any access (read or write) the GPU is doing. By asserting that Braswell is not used with vGPU (currently an unsupported platform) we can eliminate the dangerous direct write into the context image and solely use the pipelined update. However, the LRI of the PDP fouls up the GPU, causing it to freeze and take out the machine with "forcewake ack timeouts". This seems possible to workaround by preventing the GPU from sleeping (via means of disabling the power-state management interface, i.e. forcing each ring to remain awake) around the update. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108656 References: https://bugs.freedesktop.org/show_bug.cgi?id=108714 Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin --- drivers/gpu/drm/i915/intel_lrc.c | 143 --- 1 file changed, 76 insertions(+), 67 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index c60a1c2233e0..071022acbb4d 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -363,31 +363,12 @@ execlists_context_schedule_out(struct i915_request *rq, unsigned long status) trace_i915_request_out(rq); } -static void -execlists_update_context_pdps(struct i915_hw_ppgtt *ppgtt, u32 *reg_state) -{ - ASSIGN_CTX_PDP(ppgtt, reg_state, 3); - ASSIGN_CTX_PDP(ppgtt, reg_state, 2); - ASSIGN_CTX_PDP(ppgtt, reg_state, 1); - ASSIGN_CTX_PDP(ppgtt, reg_state, 0); -} - static u64 execlists_update_context(struct i915_request *rq) { - struct i915_hw_ppgtt *ppgtt = rq->gem_context->ppgtt; struct intel_context *ce = rq->hw_context; - u32 *reg_state = ce->lrc_reg_state; - - reg_state[CTX_RING_TAIL+1] = intel_ring_set_tail(rq->ring, rq->tail); - /* -* True 32b PPGTT with dynamic page allocation: update PDP -* registers and point the unallocated PDPs to scratch page. -* PML4 is allocated during ppgtt init, so this is not needed -* in 48-bit mode. -*/ - if (!i915_vm_is_48bit(>vm)) - execlists_update_context_pdps(ppgtt, reg_state); + ce->lrc_reg_state[CTX_RING_TAIL + 1] = + intel_ring_set_tail(rq->ring, rq->tail); /* * Make sure the context image is complete before we submit it to HW. @@ -1233,6 +1214,64 @@ execlists_context_pin(struct intel_engine_cs *engine, return __execlists_context_pin(engine, ctx, ce); } +static int emit_pdps(struct i915_request *rq) +{ + const struct intel_engine_cs * const engine = rq->engine; + struct i915_hw_ppgtt * const ppgtt = rq->gem_context->ppgtt; + const unsigned int num_rings = INTEL_INFO(rq->i915)->num_rings; + struct intel_engine_cs *other; + enum intel_engine_id id; + u32 *cs; + int i; + + if (!(ppgtt->pd_dirty_rings & intel_engine_flag(engine))) + return 0; + + cs = intel_ring_begin(rq, 4 * (GEN8_3LVL_PDPES + num_rings) + 8); + if (IS_ERR(cs)) + return PTR_ERR(cs); + + /* +* Force the GPU (not just the local engine/powerwell!) to remain awake, +* or else we may kill the machine with "timed out waiting for +* forcewake ack request". +*/ + + *cs++ = MI_LOAD_REGISTER_IMM(num_rings); + for_each_engine(other, rq->i915, id) { + *cs++ = i915_mmio_reg_offset(RING_PSMI_CTL(other->mmio_base)); + *cs++ = _MASKED_BIT_ENABLE(GEN6_PSMI_SLEEP_MSG_DISABLE); + } + + *cs++ = MI_LOAD_REGISTER_IMM(2 * GEN8_3LVL_PDPES); + for (i = GEN8_3LVL_PDPES; i--; ) { + const dma_addr_t pd_daddr = i915_page_dir_dma_addr(ppgtt, i); + + *cs++ = i915_mmio_reg_offset(GEN8_RING_PDP_UDW(engine, i)); + *cs++ = upper_32_bits(pd_daddr); + *cs++ = i915_mmio_reg_offset(GEN8_RING_PDP_LDW(engine, i)); + *cs++ = lower_32_bits(pd_daddr); + } + *cs++ = MI_NOOP; + + /* Posting read to flush the mmio before letting the GPU sleep again */ + *cs++ = MI_STORE_REGISTER_MEM_GEN8 | MI_SRM_LRM_GLOBAL_GTT; + *cs++ = i915_mmio_reg_offset(GEN8_RING_PDP_LDW(engine, 0)); + *cs++ = i915_ggtt_offset(engine->i915->gt.scratch); + *cs++ = 0; + + *cs++ = MI_LOAD_REGISTER_IMM(num_rings); + for_each_engine(other, rq->i915, id) { + *cs++ = i915_mmio_reg_offset(RING_PSMI_CTL(other->mmio_base)); + *cs++ = _MASKED_BIT_DISABLE(GEN6_PSMI_SLEEP_MSG_DISABLE); + } + + intel_ring_advance(rq, cs); + + ppgtt->pd_dirty_rings &= ~intel_engine_flag(engine); + return 0;
[Intel-gfx] [PATCH 1/5] drm/i915/ringbuffer: Clear semaphore sync registers on ring init
Ensure that the sync registers are cleared every time we restart the ring to avoid stale values from creeping in from random neutrinos. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index e18a64d41843..82c844488755 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -529,6 +529,13 @@ static int init_ring_common(struct intel_engine_cs *engine) intel_engine_reset_breadcrumbs(engine); + if (HAS_LEGACY_SEMAPHORES(engine->i915)) { + I915_WRITE(RING_SYNC_0(engine->mmio_base), 0); + I915_WRITE(RING_SYNC_1(engine->mmio_base), 0); + if (HAS_VEBOX(dev_priv)) + I915_WRITE(RING_SYNC_2(engine->mmio_base), 0); + } + /* Enforce ordering by reading HEAD register back */ I915_READ_HEAD(engine); -- 2.20.0.rc1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH 2/5] drm/i915: Allocate a common scratch page
Currently we allocate a scratch page for each engine, but since we only ever write into it for post-sync operations, it is not exposed to userspace nor do we care for coherency. As we then do not care about its contents, we can use one page for all, reducing our allocations and avoid complications by not assuming per-engine isolation. For later use, it simplifies engine initialisation (by removing the allocation that required struct_mutex!) and means that we can always rely on there being a scratch page. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin --- drivers/gpu/drm/i915/i915_drv.h | 7 drivers/gpu/drm/i915/i915_gem.c | 50 - drivers/gpu/drm/i915/i915_gpu_error.c | 2 +- drivers/gpu/drm/i915/intel_engine_cs.c | 42 - drivers/gpu/drm/i915/intel_lrc.c| 17 +++-- drivers/gpu/drm/i915/intel_ringbuffer.c | 33 +--- drivers/gpu/drm/i915/intel_ringbuffer.h | 5 --- 7 files changed, 71 insertions(+), 85 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 645c2bbdcdfa..b1203a0eaa5b 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1994,6 +1994,8 @@ struct drm_i915_private { struct delayed_work idle_work; ktime_t last_init_time; + + struct i915_vma *scratch; } gt; /* perform PHY state sanity checks? */ @@ -3719,4 +3721,9 @@ static inline int intel_hws_csb_write_index(struct drm_i915_private *i915) return I915_HWS_CSB_WRITE_INDEX; } +static inline u32 i915_scratch_offset(const struct drm_i915_private *i915) +{ + return i915_ggtt_offset(i915->gt.scratch); +} + #endif diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index c55b1f75c980..417c265fd93c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -5529,6 +5529,44 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915) goto out_ctx; } +static int +i915_gem_init_scratch(struct drm_i915_private *i915, unsigned int size) +{ + struct drm_i915_gem_object *obj; + struct i915_vma *vma; + int ret; + + obj = i915_gem_object_create_stolen(i915, size); + if (!obj) + obj = i915_gem_object_create_internal(i915, size); + if (IS_ERR(obj)) { + DRM_ERROR("Failed to allocate scratch page\n"); + return PTR_ERR(obj); + } + + vma = i915_vma_instance(obj, >ggtt.vm, NULL); + if (IS_ERR(vma)) { + ret = PTR_ERR(vma); + goto err_unref; + } + + ret = i915_vma_pin(vma, 0, 0, PIN_GLOBAL | PIN_HIGH); + if (ret) + goto err_unref; + + i915->gt.scratch = vma; + return 0; + +err_unref: + i915_gem_object_put(obj); + return ret; +} + +static void i915_gem_fini_scratch(struct drm_i915_private *i915) +{ + i915_vma_unpin_and_release(>gt.scratch, 0); +} + int i915_gem_init(struct drm_i915_private *dev_priv) { int ret; @@ -5575,12 +5613,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv) goto err_unlock; } - ret = i915_gem_contexts_init(dev_priv); + ret = i915_gem_init_scratch(dev_priv, + IS_GEN2(dev_priv) ? SZ_256K : PAGE_SIZE); if (ret) { GEM_BUG_ON(ret == -EIO); goto err_ggtt; } + ret = i915_gem_contexts_init(dev_priv); + if (ret) { + GEM_BUG_ON(ret == -EIO); + goto err_scratch; + } + ret = intel_engines_init(dev_priv); if (ret) { GEM_BUG_ON(ret == -EIO); @@ -5653,6 +5698,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv) err_context: if (ret != -EIO) i915_gem_contexts_fini(dev_priv); +err_scratch: + i915_gem_fini_scratch(dev_priv); err_ggtt: err_unlock: intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); @@ -5704,6 +5751,7 @@ void i915_gem_fini(struct drm_i915_private *dev_priv) intel_uc_fini(dev_priv); i915_gem_cleanup_engines(dev_priv); i915_gem_contexts_fini(dev_priv); + i915_gem_fini_scratch(dev_priv); mutex_unlock(_priv->drm.struct_mutex); intel_cleanup_gt_powersave(dev_priv); diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index a6885a59568b..07465123c166 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c @@ -1571,7 +1571,7 @@ static void gem_record_rings(struct i915_gpu_state *error) if (HAS_BROKEN_CS_TLB(i915)) ee->wa_batchbuffer = i915_error_object_create(i915, - engine->scratch); +
[Intel-gfx] [PATCH 3/5] drm/i915/selftests: Terminate hangcheck sanitycheck forcibly
If all else fails and we are stuck eternally waiting for the undying request, abandon all hope. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/selftests/intel_hangcheck.c | 12 +--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c index defe671130ab..a48fbe2557ea 100644 --- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c +++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c @@ -308,6 +308,7 @@ static int igt_hang_sanitycheck(void *arg) goto unlock; for_each_engine(engine, i915, id) { + struct igt_wedge_me w; long timeout; if (!intel_engine_can_store_dword(engine)) @@ -328,9 +329,14 @@ static int igt_hang_sanitycheck(void *arg) i915_request_add(rq); - timeout = i915_request_wait(rq, - I915_WAIT_LOCKED, - MAX_SCHEDULE_TIMEOUT); + timeout = 0; + igt_wedge_on_timeout(, i915, HZ / 10 /* 100ms timeout*/) + timeout = i915_request_wait(rq, + I915_WAIT_LOCKED, + MAX_SCHEDULE_TIMEOUT); + if (i915_terminally_wedged(>gpu_error)) + timeout = -EIO; + i915_request_put(rq); if (timeout < 0) { -- 2.20.0.rc1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✓ Fi.CI.IGT: success for Return only active connectors for GET_RESOURCES
== Series Details == Series: Return only active connectors for GET_RESOURCES URL : https://patchwork.freedesktop.org/series/53159/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10928_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10928_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10928_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10928_full: ### IGT changes ### Warnings * igt@kms_lease@lease_unleased_connector: - shard-apl: PASS -> SKIP Known issues Here are the changes found in Patchwork_10928_full that come from known issues: ### IGT changes ### Issues hit * igt@debugfs_test@read_all_entries_display_off: - shard-skl: NOTRUN -> INCOMPLETE [fdo#104108] * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@gem_linear_blits@interruptible: - shard-glk: PASS -> INCOMPLETE [fdo#103359] / [k.org#198133] * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-skl: NOTRUN -> INCOMPLETE [fdo#106887] * igt@gem_softpin@noreloc-s3: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107773] +1 * igt@i915_suspend@shrink: - shard-skl: NOTRUN -> DMESG-WARN [fdo#108784] * igt@i915_suspend@sysfs-reader: - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] +1 * igt@kms_atomic_transition@plane-toggle-modeset-transition: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +4 * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_color@pipe-b-legacy-gamma: - shard-apl: PASS -> FAIL [fdo#104782] * igt@kms_cursor_crc@cursor-128x128-offscreen: - shard-glk: PASS -> DMESG-WARN [fdo#105763] / [fdo#106538] +2 * igt@kms_cursor_crc@cursor-256x256-offscreen: - shard-skl: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-256x85-onscreen: - shard-glk: PASS -> FAIL [fdo#103232] +1 * igt@kms_cursor_crc@cursor-64x21-sliding: - shard-apl: PASS -> FAIL [fdo#103232] +1 * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy: - shard-hsw: PASS -> FAIL [fdo#105767] * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render: - shard-apl: PASS -> FAIL [fdo#103167] +3 * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt: - shard-glk: PASS -> FAIL [fdo#103167] * igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@psr-suspend: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#106978] / [fdo#107773] * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c: - shard-skl: PASS -> FAIL [fdo#103191] / [fdo#107362] * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane@plane-position-covered-pipe-c-planes: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-apl: PASS -> FAIL [fdo#103166] +1 - {shard-iclb}: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-a-tiling-yf: - shard-glk: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-c-tiling-yf: - shard-skl: NOTRUN -> FAIL [fdo#103166] / [fdo#107815] * igt@kms_plane_scaling@pipe-c-scaler-with-rotation: - {shard-iclb}: NOTRUN ->
[Intel-gfx] [CI v13 16/17] i915/dp/fec: Configure the Forward Error Correction bits.
From: Anusha Srivatsa If FEC is supported, the corresponding DP_TP_CTL register bits have to be configured. The driver has to program the FEC_ENABLE in DP_TP_CTL[30] register and wait till FEC_STATUS in DP_TP_CTL[28] is 1. Also add the warn message to make sure that the control register is already active while enabling FEC. v2: - Change commit message. Configure fec state after link training (Manasi, Gaurav) - Remove redundent checks (Manasi) - Remove the registers that get added automagically (Anusha) v3: s/intel_dp_set_fec_state()/intel_dp_enable_fec_state() (Gaurav) v4: rebased. v5: - Move the code to the proper spot, according to spec.(Ville) - Use fec state as a check too. v6: Pass intel_encoder, instead of intel_dp. (Ville) v7: Remove unwanted comments (Manasi) Cc: dri-de...@lists.freedesktop.org Cc: Gaurav K Singh Cc: Jani Nikula Cc: Ville Syrjala Cc: Manasi Navare Signed-off-by: Anusha Srivatsa Reviewed-by: Manasi Navare --- drivers/gpu/drm/i915/i915_reg.h | 2 ++ drivers/gpu/drm/i915/intel_ddi.c | 23 +++ 2 files changed, 25 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index eadd880b0ef6..d3ef97915455 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -9198,6 +9198,7 @@ enum skl_power_gate { #define _DP_TP_CTL_B 0x64140 #define DP_TP_CTL(port) _MMIO_PORT(port, _DP_TP_CTL_A, _DP_TP_CTL_B) #define DP_TP_CTL_ENABLE (1 << 31) +#define DP_TP_CTL_FEC_ENABLE (1 << 30) #define DP_TP_CTL_MODE_SST(0 << 27) #define DP_TP_CTL_MODE_MST(1 << 27) #define DP_TP_CTL_FORCE_ACT (1 << 25) @@ -9216,6 +9217,7 @@ enum skl_power_gate { #define _DP_TP_STATUS_A0x64044 #define _DP_TP_STATUS_B0x64144 #define DP_TP_STATUS(port) _MMIO_PORT(port, _DP_TP_STATUS_A, _DP_TP_STATUS_B) +#define DP_TP_STATUS_FEC_ENABLE_LIVE (1 << 28) #define DP_TP_STATUS_IDLE_DONE(1 << 25) #define DP_TP_STATUS_ACT_SENT (1 << 24) #define DP_TP_STATUS_MODE_STATUS_MST (1 << 23) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 4c74bbe1cf73..12acdb08a750 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -3112,6 +3112,27 @@ static void intel_dp_sink_set_fec_ready(struct intel_dp *intel_dp, DRM_DEBUG_KMS("Failed to set FEC_READY in the sink\n"); } +static void intel_ddi_enable_fec(struct intel_encoder *encoder, +const struct intel_crtc_state *crtc_state) +{ + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + enum port port = encoder->port; + u32 val; + + if (!crtc_state->fec_enable) + return; + + val = I915_READ(DP_TP_CTL(port)); + val |= DP_TP_CTL_FEC_ENABLE; + I915_WRITE(DP_TP_CTL(port), val); + + if (intel_wait_for_register(dev_priv, DP_TP_STATUS(port), + DP_TP_STATUS_FEC_ENABLE_LIVE, + DP_TP_STATUS_FEC_ENABLE_LIVE, + 1)) + DRM_ERROR("Timed out waiting for FEC Enable Status\n"); +} + static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) @@ -3157,6 +3178,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, if (port != PORT_A || INTEL_GEN(dev_priv) >= 9) intel_dp_stop_link_train(intel_dp); + intel_ddi_enable_fec(encoder, crtc_state); + icl_enable_phy_clock_gating(dig_port); if (!is_mst) -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 15/17] drm/i915/fec: Set FEC_READY in FEC_CONFIGURATION
From: Anusha Srivatsa If the panel supports FEC, the driver has to set the FEC_READY bit in the dpcd register: FEC_CONFIGURATION. This has to happen before link training. v2: s/intel_dp_set_fec_ready/intel_dp_sink_set_fec_ready - change commit message. (Gaurav) v3: rebased. (r-b Manasi) v4: Use fec crtc state, before setting FEC_READY bit. (Anusha) v5: Move to intel_ddi.c - Make the function static (Anusha) v6: Dont pass state as a separate argument (Ville) v7: (From Manasi) * Correct the debug print (Ville) Cc: dri-de...@lists.freedesktop.org Cc: Gaurav K Singh Cc: Jani Nikula Cc: Ville Syrjala Cc: Manasi Navare Signed-off-by: Anusha Srivatsa Reviewed-by: Manasi Navare --- drivers/gpu/drm/i915/intel_ddi.c | 11 +++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 6533624226a7..4c74bbe1cf73 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -3102,6 +3102,16 @@ static void icl_program_mg_dp_mode(struct intel_digital_port *intel_dig_port) I915_WRITE(MG_DP_MODE(port, 1), ln1); } +static void intel_dp_sink_set_fec_ready(struct intel_dp *intel_dp, + const struct intel_crtc_state *crtc_state) +{ + if (!crtc_state->fec_enable) + return; + + if (drm_dp_dpcd_writeb(_dp->aux, DP_FEC_CONFIGURATION, DP_FEC_READY) <= 0) + DRM_DEBUG_KMS("Failed to set FEC_READY in the sink\n"); +} + static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) @@ -3142,6 +3152,7 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); intel_dp_sink_set_decompression_state(intel_dp, crtc_state, true); + intel_dp_sink_set_fec_ready(intel_dp, crtc_state); intel_dp_start_link_train(intel_dp); if (port != PORT_A || INTEL_GEN(dev_priv) >= 9) intel_dp_stop_link_train(intel_dp); -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 12/17] drm/i915/dp: Disable DSC in source by disabling DSS CTL bits
1. Disable Left/right VDSC branch in DSS Ctrl reg depending on the number of VDSC engines being used 2. Disable joiner in DSS Ctrl reg v4: * Remove encoder, make crtc_state const (Ville) v3 (From Manasi): * Add Disable PG2 for VDSC on eDP v2 (From Manasi): * Use old_crtc_state to find dsc params * Add a condition to disable only if dsc state compression is enabled * Use correct DSS CTL regs Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Signed-off-by: Gaurav K Singh Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_display.c | 2 ++ drivers/gpu/drm/i915/intel_vdsc.c| 31 3 files changed, 34 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 9dc8731907af..5fe5d8f2d061 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -3345,6 +3345,7 @@ extern bool intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable); void intel_dsc_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state); +void intel_dsc_disable(const struct intel_crtc_state *crtc_state); int i915_reg_read_ioctl(struct drm_device *dev, void *data, struct drm_file *file); diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 69bb0b75a806..7a221fb9ca66 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -5889,6 +5889,8 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state, if (!transcoder_is_dsi(cpu_transcoder)) intel_ddi_disable_transcoder_func(old_crtc_state); + intel_dsc_disable(old_crtc_state); + if (INTEL_GEN(dev_priv) >= 9) skylake_scaler_disable(intel_crtc); else diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index 38f391329b8c..f1892f690220 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -1027,3 +1027,34 @@ void intel_dsc_enable(struct intel_encoder *encoder, I915_WRITE(dss_ctl1_reg, dss_ctl1_val); I915_WRITE(dss_ctl2_reg, dss_ctl2_val); } + +void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc); + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); + enum pipe pipe = crtc->pipe; + i915_reg_t dss_ctl1_reg, dss_ctl2_reg; + u32 dss_ctl1_val = 0, dss_ctl2_val = 0; + + if (!old_crtc_state->dsc_params.compression_enable) + return; + + if (old_crtc_state->cpu_transcoder == TRANSCODER_EDP) { + dss_ctl1_reg = DSS_CTL1; + dss_ctl2_reg = DSS_CTL2; + } else { + dss_ctl1_reg = ICL_PIPE_DSS_CTL1(pipe); + dss_ctl2_reg = ICL_PIPE_DSS_CTL2(pipe); + } + dss_ctl1_val = I915_READ(dss_ctl1_reg); + if (dss_ctl1_val & JOINER_ENABLE) + dss_ctl1_val &= ~JOINER_ENABLE; + I915_WRITE(dss_ctl1_reg, dss_ctl1_val); + + dss_ctl2_val = I915_READ(dss_ctl2_reg); + if (dss_ctl2_val & LEFT_BRANCH_VDSC_ENABLE || + dss_ctl2_val & RIGHT_BRANCH_VDSC_ENABLE) + dss_ctl2_val &= ~(LEFT_BRANCH_VDSC_ENABLE | + RIGHT_BRANCH_VDSC_ENABLE); + I915_WRITE(dss_ctl2_reg, dss_ctl2_val); +} -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 13/17] drm/i915/dsc: Enable and disable appropriate power wells for VDSC
A separate power well 2 (PG2) is required for VDSC on eDP transcoder whereas all other transcoders use the power wells associated with the transcoders for VDSC. This patch adds a helper to obtain correct power domain depending on transcoder being used and enables/disables the power wells during VDSC enabling/disabling. v4: * Get VDSC power domain only if compression en is set in crtc_state (Ville, Imre) v3: * Call it intel_dsc_power_domain, add to intel_ddi_get_power_domains (Ville) v2: * Fix tabs, const crtc_state, fix comments (Ville) Suggested-by: Ville Syrjala Cc: Ville Syrjala Cc: Imre Deak Cc: Rodrigo Vivi Signed-off-by: Manasi Navare Reviewed-by: Ville Syrjälä --- drivers/gpu/drm/i915/intel_ddi.c | 6 ++ drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_vdsc.c | 26 ++ 3 files changed, 34 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 339be10986d7..6533624226a7 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -2154,6 +2154,12 @@ static u64 intel_ddi_get_power_domains(struct intel_encoder *encoder, intel_port_is_tc(dev_priv, encoder->port)) domains |= BIT_ULL(intel_ddi_main_link_aux_domain(dig_port)); + /* +* VDSC power is needed when DSC is enabled +*/ + if (crtc_state->dsc_params.compression_enable) + domains |= BIT_ULL(intel_dsc_power_domain(crtc_state)); + return domains; } diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index fa452fbb16c6..b5693cac26d7 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1858,6 +1858,8 @@ uint8_t intel_dp_dsc_get_slice_count(struct intel_dp *intel_dp, int mode_clock, /* intel_vdsc.c */ int intel_dp_compute_dsc_params(struct intel_dp *intel_dp, struct intel_crtc_state *pipe_config); +enum intel_display_power_domain +intel_dsc_power_domain(const struct intel_crtc_state *crtc_state); static inline unsigned int intel_dp_unused_lane_mask(int lane_count) { diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index f1892f690220..0696deaf75cb 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -578,6 +578,24 @@ int intel_dp_compute_dsc_params(struct intel_dp *intel_dp, return intel_compute_rc_parameters(vdsc_cfg); } +enum intel_display_power_domain +intel_dsc_power_domain(const struct intel_crtc_state *crtc_state) +{ + enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; + + /* +* On ICL VDSC/joining for eDP transcoder uses a separate power well PW2 +* This requires POWER_DOMAIN_TRANSCODER_EDP_VDSC power domain. +* For any other transcoder, VDSC/joining uses the power well associated +* with the pipe/transcoder in use. Hence another reference on the +* transcoder power domain will suffice. +*/ + if (cpu_transcoder == TRANSCODER_EDP) + return POWER_DOMAIN_TRANSCODER_EDP_VDSC; + else + return POWER_DOMAIN_TRANSCODER(cpu_transcoder); +} + static void intel_configure_pps_for_dsc_encoder(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state) { @@ -1008,6 +1026,10 @@ void intel_dsc_enable(struct intel_encoder *encoder, if (!crtc_state->dsc_params.compression_enable) return; + /* Enable Power wells for VDSC/joining */ + intel_display_power_get(dev_priv, + intel_dsc_power_domain(crtc_state)); + intel_configure_pps_for_dsc_encoder(encoder, crtc_state); intel_dp_write_dsc_pps_sdp(encoder, crtc_state); @@ -1057,4 +1079,8 @@ void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) dss_ctl2_val &= ~(LEFT_BRANCH_VDSC_ENABLE | RIGHT_BRANCH_VDSC_ENABLE); I915_WRITE(dss_ctl2_reg, dss_ctl2_val); + + /* Disable Power wells for VDSC/joining */ + intel_display_power_put(dev_priv, + intel_dsc_power_domain(old_crtc_state)); } -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 04/17] drm/i915/dsc: Define & Compute VESA DSC params
From: Gaurav K Singh This patches does the following: 1. This patch defines all the DSC parameters as per the VESA DSC specification. These are stored in the encoder and used to compute the PPS parameters to be sent to the Sink. 2. Compute all the DSC parameters which are derived from DSC state of intel_crtc_state. 3. Compute all parameters that are VESA DSC specific This computation happens in the atomic check phase during compute_config() to validate if display stream compression can be enabled for the requested mode. v8 (From Manasi): * DEBUG_KMS instead of DRM_ERROR for user triggerable errors (Ville) v7: (From Manasi) * Dont use signed int for rc_range_params (Manasi) * Mask the range_bpg_offset to use only 6 bits * Add SPDX identifier (Chris Wilson) v6 (From Manasi): * Add a check for line_buf_depth return value (Anusha) * Remove DRM DSC constants to different patch (Manasi) v5 (From Manasi): * Add logic to limit the max line buf depth for DSC 1.1 to 13 as per DSC 1.1 spec * Fix dim checkpatch warnings/checks v4 (From Gaurav): * Rebase on latest drm tip * rename variable name(Manasi) * Populate linebuf_depth variable(Manasi) v3 (From Gaurav): * Rebase my previous patches on top of Manasi's latest patch series * Using >>n rather than /2^n (Manasi) * Change the commit message to explain what the patch is doing(Gaurav) Fixed review comments from Ville: * Don't use macro TWOS_COMPLEMENT * Mention in comment about the source of RC params * Return directly from case statements * Using single asssignment for assigning rc_range_params * Using < Cc: Ville Syrjala Cc: Anusha Srivatsa Cc: Gaurav K Singh Signed-off-by: Gaurav K Singh Signed-off-by: Manasi Navare Co-developed-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/Makefile | 3 +- drivers/gpu/drm/i915/intel_dp.c | 7 + drivers/gpu/drm/i915/intel_drv.h | 4 + drivers/gpu/drm/i915/intel_vdsc.c | 456 ++ include/drm/drm_dp_helper.h | 3 + 5 files changed, 472 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/drm/i915/intel_vdsc.c diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 0ff878c994e2..8370b9de6e4f 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -157,7 +157,8 @@ i915-y += dvo_ch7017.o \ intel_sdvo.o \ intel_tv.o \ vlv_dsi.o \ - vlv_dsi_pll.o + vlv_dsi_pll.o \ + intel_vdsc.o # Post-mortem debug and GPU hang state capture i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index a2780733768a..3b612eb134e7 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1953,6 +1953,13 @@ static bool intel_dp_dsc_compute_config(struct intel_dp *intel_dp, return false; } } + if (intel_dp_compute_dsc_params(intel_dp, pipe_config) < 0) { + DRM_DEBUG_KMS("Cannot compute valid DSC parameters for Input Bpp = %d " + "Compressed BPP = %d\n", + pipe_config->pipe_bpp, + pipe_config->dsc_params.compressed_bpp); + return false; + } pipe_config->dsc_params.compression_enable = true; DRM_DEBUG_KMS("DP DSC computed with Input Bpp = %d " "Compressed Bpp = %d Slice Count = %d\n", diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 270212fa43a0..316ec1e107bf 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1852,6 +1852,10 @@ uint16_t intel_dp_dsc_get_output_bpp(int link_clock, uint8_t lane_count, uint8_t intel_dp_dsc_get_slice_count(struct intel_dp *intel_dp, int mode_clock, int mode_hdisplay); +/* intel_vdsc.c */ +int intel_dp_compute_dsc_params(struct intel_dp *intel_dp, + struct intel_crtc_state *pipe_config); + static inline unsigned int intel_dp_unused_lane_mask(int lane_count) { return ~((1 << lane_count) - 1) & 0xf; diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c new file mode 100644 index ..4ce6f0c453bb --- /dev/null +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -0,0 +1,456 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2018 Intel Corporation + * + * Author: Gaurav K Singh + * Manasi Navare + */ + +#include +#include +#include "i915_drv.h" +#include "intel_drv.h" + +enum ROW_INDEX_BPP { + ROW_INDEX_6BPP = 0, + ROW_INDEX_8BPP, + ROW_INDEX_10BPP, + ROW_INDEX_12BPP, + ROW_INDEX_15BPP, + MAX_ROW_INDEX +}; + +enum COLUMN_INDEX_BPC { + COLUMN_INDEX_8BPC = 0, + COLUMN_INDEX_10BPC, + COLUMN_INDEX_12BPC, + COLUMN_INDEX_14BPC, + COLUMN_INDEX_16BPC, +
[Intel-gfx] [CI v13 07/17] drm/i915/dsc: Add a power domain for VDSC on eDP/MIPI DSI
On Icelake, a separate power well PG2 is created for VDSC engine used for eDP/MIPI DSI. This patch adds a new display power domain for Power well 2. v3: * Call it POWER_DOMAIN_TRANSCODER_EDP_VDSC (Ville) * Move it around TRANSCODER power domain defs (Ville) v2: * Fix the power well mismatch CI error (Ville) * Rename as VDSC_PIPE_A (Imre) * Fix a whitespace (Anusha) * Fix Comments (Imre) Cc: Ville Syrjala Cc: Rodrigo Vivi Cc: Imre Deak Signed-off-by: Manasi Navare Reviewed-by: Ville Syrjala --- drivers/gpu/drm/i915/intel_display.h| 1 + drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h index 5e253f741d29..b41b06dc8347 100644 --- a/drivers/gpu/drm/i915/intel_display.h +++ b/drivers/gpu/drm/i915/intel_display.h @@ -242,6 +242,7 @@ enum intel_display_power_domain { POWER_DOMAIN_TRANSCODER_B, POWER_DOMAIN_TRANSCODER_C, POWER_DOMAIN_TRANSCODER_EDP, + POWER_DOMAIN_TRANSCODER_EDP_VDSC, POWER_DOMAIN_TRANSCODER_DSI_A, POWER_DOMAIN_TRANSCODER_DSI_C, POWER_DOMAIN_PORT_DDI_A_LANES, diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index 1c2de9b69a19..4350a5270423 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -76,6 +76,8 @@ intel_display_power_domain_str(enum intel_display_power_domain domain) return "TRANSCODER_C"; case POWER_DOMAIN_TRANSCODER_EDP: return "TRANSCODER_EDP"; + case POWER_DOMAIN_TRANSCODER_EDP_VDSC: + return "TRANSCODER_EDP_VDSC"; case POWER_DOMAIN_TRANSCODER_DSI_A: return "TRANSCODER_DSI_A"; case POWER_DOMAIN_TRANSCODER_DSI_C: @@ -2028,9 +2030,9 @@ void intel_display_power_put(struct drm_i915_private *dev_priv, */ #define ICL_PW_2_POWER_DOMAINS ( \ ICL_PW_3_POWER_DOMAINS |\ + BIT_ULL(POWER_DOMAIN_TRANSCODER_EDP_VDSC) | \ BIT_ULL(POWER_DOMAIN_INIT)) /* -* - eDP/DSI VDSC * - KVMR (HW control) */ #define ICL_DISPLAY_DC_OFF_POWER_DOMAINS ( \ -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 01/17] drm/i915/dp: Add DSC params and DSC config to intel_crtc_state
Basic DSC parameters and DSC configuration data needs to be computed for each of the requested mode during atomic check. This is required since for certain modes, valid DSC parameters and config data might not be computed in which case compression cannot be enabled for that mode. For that reason we need to add these params and config structure to the intel_crtc_state so that if valid this state information can directly be used while enabling DSC in atomic commit. v2: * Rebase on drm-tip (Manasi) Cc: Gaurav K Singh Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_drv.h | 9 + 2 files changed, 10 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f763b30f98d9..183aae996305 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -53,6 +53,7 @@ #include #include #include +#include #include "i915_fixed.h" #include "i915_params.h" diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index a62d77b76291..270212fa43a0 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -937,6 +937,15 @@ struct intel_crtc_state { /* Output down scaling is done in LSPCON device */ bool lspcon_downsampling; + + /* Display Stream compression state */ + struct { + bool compression_enable; + bool dsc_split; + u16 compressed_bpp; + u8 slice_count; + } dsc_params; + struct drm_dsc_config dp_dsc_cfg; }; struct intel_crtc { -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 06/17] drm/i915/dp: Enable/Disable DSC in DP Sink
From: Gaurav K Singh This patch enables decompression support in sink device before link training and disables the same during the DDI disabling. v3 (From manasi): * Pass bool state to enable/disable (Ville) v2:(From Manasi) * Change the enable/disable function to take crtc_state instead of intel_dp as an argument (Manasi) * Use the compression_enable flag as part of crtc_state (Manasi) Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Cc: Gaurav K Singh Signed-off-by: Gaurav K Singh Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_ddi.c | 5 + drivers/gpu/drm/i915/intel_dp.c | 16 drivers/gpu/drm/i915/intel_drv.h | 3 +++ 3 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index ad11540ac436..fa5ad62cd0db 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -3134,6 +3134,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, intel_ddi_init_dp_buf_reg(encoder); if (!is_mst) intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + intel_dp_sink_set_decompression_state(intel_dp, crtc_state, + true); intel_dp_start_link_train(intel_dp); if (port != PORT_A || INTEL_GEN(dev_priv) >= 9) intel_dp_stop_link_train(intel_dp); @@ -3491,6 +3493,9 @@ static void intel_disable_ddi_dp(struct intel_encoder *encoder, intel_edp_drrs_disable(intel_dp, old_crtc_state); intel_psr_disable(intel_dp, old_crtc_state); intel_edp_backlight_off(old_conn_state); + /* Disable the decompression in DP Sink */ + intel_dp_sink_set_decompression_state(intel_dp, old_crtc_state, + false); } static void intel_disable_ddi_hdmi(struct intel_encoder *encoder, diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 3b612eb134e7..4e65dd1a6c07 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -2857,6 +2857,22 @@ static bool downstream_hpd_needs_d0(struct intel_dp *intel_dp) intel_dp->downstream_ports[0] & DP_DS_PORT_HPD; } +void intel_dp_sink_set_decompression_state(struct intel_dp *intel_dp, + const struct intel_crtc_state *crtc_state, + bool enable) +{ + int ret; + + if (!crtc_state->dsc_params.compression_enable) + return; + + ret = drm_dp_dpcd_writeb(_dp->aux, DP_DSC_ENABLE, +enable ? DP_DECOMPRESSION_EN : 0); + if (ret < 0) + DRM_DEBUG_KMS("Failed to %s sink decompression state\n", + enable ? "enable" : "disable"); +} + /* If the sink supports it, try to set the power state appropriately */ void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode) { diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 316ec1e107bf..fa452fbb16c6 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1797,6 +1797,9 @@ void intel_dp_stop_link_train(struct intel_dp *intel_dp); int intel_dp_retrain_link(struct intel_encoder *encoder, struct drm_modeset_acquire_ctx *ctx); void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); +void intel_dp_sink_set_decompression_state(struct intel_dp *intel_dp, + const struct intel_crtc_state *crtc_state, + bool enable); void intel_dp_encoder_reset(struct drm_encoder *encoder); void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder); void intel_dp_encoder_destroy(struct drm_encoder *encoder); -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 05/17] drm/i915/dsc: Compute Rate Control parameters for DSC
From: Gaurav K Singh This computation of RC params happens in the atomic commit phase during compute_config() to validate if display stream compression can be enabled for the requested mode. v7 (From Manasi): * Use DRM_DEBUG instead of DRM_ERROR (Ville) * Use Error numberinstead of -1 (Ville) v6 (From Manasi): * Use 9 instead of 0x9 for consistency (Anusha) v5 (From Manasi): * Fix dim checkpatch warnings/checks v4(From Gaurav): * No change.Rebase on drm-tip v3 (From Gaurav): * Rebase on top of Manasi's latest series * Return -ve value in case of failure scenarios (Manasi) Fix review comments from Ville: * Remove unnecessary comments * Remove unnecessary paranthesis * Add comments for few RC params calculations v2 (From Manasi): * Rebase Gaurav's patch from intel-gfx to gfx-internal * Use struct drm_dsc_cfg instead of struct intel_dp as a parameter Cc: Manasi Navare Cc: Jani Nikula Cc: Ville Syrjala Signed-off-by: Gaurav K Singh Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_vdsc.c | 125 +- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index 4ce6f0c453bb..39baff618ed8 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -318,6 +318,129 @@ static int get_column_index_for_rc_params(u8 bits_per_component) } } +static int intel_compute_rc_parameters(struct drm_dsc_config *vdsc_cfg) +{ + unsigned long groups_per_line = 0; + unsigned long groups_total = 0; + unsigned long num_extra_mux_bits = 0; + unsigned long slice_bits = 0; + unsigned long hrd_delay = 0; + unsigned long final_scale = 0; + unsigned long rbs_min = 0; + + /* Number of groups used to code each line of a slice */ + groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width, + DSC_RC_PIXELS_PER_GROUP); + + /* chunksize in Bytes */ + vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width * + vdsc_cfg->bits_per_pixel, + (8 * 16)); + + if (vdsc_cfg->convert_rgb) + num_extra_mux_bits = 3 * (vdsc_cfg->mux_word_size + + (4 * vdsc_cfg->bits_per_component + 4) + - 2); + else + num_extra_mux_bits = 3 * vdsc_cfg->mux_word_size + + (4 * vdsc_cfg->bits_per_component + 4) + + 2 * (4 * vdsc_cfg->bits_per_component) - 2; + /* Number of bits in one Slice */ + slice_bits = 8 * vdsc_cfg->slice_chunk_size * vdsc_cfg->slice_height; + + while ((num_extra_mux_bits > 0) && + ((slice_bits - num_extra_mux_bits) % vdsc_cfg->mux_word_size)) + num_extra_mux_bits--; + + if (groups_per_line < vdsc_cfg->initial_scale_value - 8) + vdsc_cfg->initial_scale_value = groups_per_line + 8; + + /* scale_decrement_interval calculation according to DSC spec 1.11 */ + if (vdsc_cfg->initial_scale_value > 8) + vdsc_cfg->scale_decrement_interval = groups_per_line / + (vdsc_cfg->initial_scale_value - 8); + else + vdsc_cfg->scale_decrement_interval = DSC_SCALE_DECREMENT_INTERVAL_MAX; + + vdsc_cfg->final_offset = vdsc_cfg->rc_model_size - + (vdsc_cfg->initial_xmit_delay * +vdsc_cfg->bits_per_pixel + 8) / 16 + num_extra_mux_bits; + + if (vdsc_cfg->final_offset >= vdsc_cfg->rc_model_size) { + DRM_DEBUG_KMS("FinalOfs < RcModelSze for this InitialXmitDelay\n"); + return -ERANGE; + } + + final_scale = (vdsc_cfg->rc_model_size * 8) / + (vdsc_cfg->rc_model_size - vdsc_cfg->final_offset); + if (vdsc_cfg->slice_height > 1) + /* +* NflBpgOffset is 16 bit value with 11 fractional bits +* hence we multiply by 2^11 for preserving the +* fractional part +*/ + vdsc_cfg->nfl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->first_line_bpg_offset << 11), + (vdsc_cfg->slice_height - 1)); + else + vdsc_cfg->nfl_bpg_offset = 0; + + /* 2^16 - 1 */ + if (vdsc_cfg->nfl_bpg_offset > 65535) { + DRM_DEBUG_KMS("NflBpgOffset is too large for this slice height\n"); + return -ERANGE; + } + + /* Number of groups used to code the entire slice */ + groups_total = groups_per_line * vdsc_cfg->slice_height; + + /* slice_bpg_offset is 16 bit value with 11 fractional bits */ + vdsc_cfg->slice_bpg_offset = DIV_ROUND_UP(((vdsc_cfg->rc_model_size - +
[Intel-gfx] [CI v13 11/17] drm/i915/dp: Configure Display stream splitter registers during DSC enable
Display Stream Splitter registers need to be programmed to enable the joiner if two DSC engines are used and also to enable the left and the right DSC engines. This happens as part of the DSC enabling routine in the source in atomic commit. v4: * Remove redundant comment (Ville) v3: * Use cpu_transcoder instead of encoder->type (Ville) v2: * Rebase (Manasi) Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_vdsc.c | 22 ++ 1 file changed, 22 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index 56290093d43f..38f391329b8c 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -998,10 +998,32 @@ static void intel_dp_write_dsc_pps_sdp(struct intel_encoder *encoder, void intel_dsc_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state) { + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc); + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + enum pipe pipe = crtc->pipe; + i915_reg_t dss_ctl1_reg, dss_ctl2_reg; + u32 dss_ctl1_val = 0; + u32 dss_ctl2_val = 0; + if (!crtc_state->dsc_params.compression_enable) return; intel_configure_pps_for_dsc_encoder(encoder, crtc_state); intel_dp_write_dsc_pps_sdp(encoder, crtc_state); + + if (crtc_state->cpu_transcoder == TRANSCODER_EDP) { + dss_ctl1_reg = DSS_CTL1; + dss_ctl2_reg = DSS_CTL2; + } else { + dss_ctl1_reg = ICL_PIPE_DSS_CTL1(pipe); + dss_ctl2_reg = ICL_PIPE_DSS_CTL2(pipe); + } + dss_ctl2_val |= LEFT_BRANCH_VDSC_ENABLE; + if (crtc_state->dsc_params.dsc_split) { + dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE; + dss_ctl1_val |= JOINER_ENABLE; + } + I915_WRITE(dss_ctl1_reg, dss_ctl1_val); + I915_WRITE(dss_ctl2_reg, dss_ctl2_val); } -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 09/17] drm/i915/dp: Use the existing write_infoframe() for DSC PPS SDPs
Infoframes are used to send secondary data packets. This patch adds support for DSC Picture parameter set secondary data packets in the existing write_infoframe helpers. v3: * Unused variables cleanup (Ville) v2: * Rebase on drm-tip (Manasi) Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/i915/intel_hdmi.c | 21 +++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 47baf2fe8f71..eadd880b0ef6 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4570,6 +4570,7 @@ enum { * of the infoframe structure specified by CEA-861. */ #define VIDEO_DIP_DATA_SIZE 32 #define VIDEO_DIP_VSC_DATA_SIZE 36 +#define VIDEO_DIP_PPS_DATA_SIZE 132 #define VIDEO_DIP_CTL _MMIO(0x61170) /* Pre HSW: */ #define VIDEO_DIP_ENABLE (1 << 31) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b3e8f2..07e803a604bd 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -115,6 +115,8 @@ static u32 hsw_infoframe_enable(unsigned int type) switch (type) { case DP_SDP_VSC: return VIDEO_DIP_ENABLE_VSC_HSW; + case DP_SDP_PPS: + return VDIP_ENABLE_PPS; case HDMI_INFOFRAME_TYPE_AVI: return VIDEO_DIP_ENABLE_AVI_HSW; case HDMI_INFOFRAME_TYPE_SPD: @@ -136,6 +138,8 @@ hsw_dip_data_reg(struct drm_i915_private *dev_priv, switch (type) { case DP_SDP_VSC: return HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder, i); + case DP_SDP_PPS: + return ICL_VIDEO_DIP_PPS_DATA(cpu_transcoder, i); case HDMI_INFOFRAME_TYPE_AVI: return HSW_TVIDEO_DIP_AVI_DATA(cpu_transcoder, i); case HDMI_INFOFRAME_TYPE_SPD: @@ -148,6 +152,18 @@ hsw_dip_data_reg(struct drm_i915_private *dev_priv, } } +static int hsw_dip_data_size(unsigned int type) +{ + switch (type) { + case DP_SDP_VSC: + return VIDEO_DIP_VSC_DATA_SIZE; + case DP_SDP_PPS: + return VIDEO_DIP_PPS_DATA_SIZE; + default: + return VIDEO_DIP_DATA_SIZE; + } +} + static void g4x_write_infoframe(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, unsigned int type, @@ -382,11 +398,12 @@ static void hsw_write_infoframe(struct intel_encoder *encoder, struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; i915_reg_t ctl_reg = HSW_TVIDEO_DIP_CTL(cpu_transcoder); - int data_size = type == DP_SDP_VSC ? - VIDEO_DIP_VSC_DATA_SIZE : VIDEO_DIP_DATA_SIZE; + int data_size; int i; u32 val = I915_READ(ctl_reg); + data_size = hsw_dip_data_size(type); + val &= ~hsw_infoframe_enable(type); I915_WRITE(ctl_reg, val); -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 14/17] i915/dp/fec: Add fec_enable to the crtc state.
From: Anusha Srivatsa For DP 1.4 and above, Display Stream compression can be enabled only if Forward Error Correctin can be performed. Add a crtc state for FEC. Currently, the state is determined by platform, DP and DSC being enabled. Moving forward we can use the state to have error correction on other scenarios too if needed. v2: - Control compression_enable with the fec_enable parameter in crtc state and with intel_dp_supports_fec() (Ville) - intel_dp_can_fec()/intel_dp_supports_fec()(manasi) v3: Check for FEC support along with setting crtc state. v4: add checks to intel_dp_source_supports_dsc.(manasi) - Move intel_dp_supports_fec() closer to intel_dp_supports_dsc() (Anusha) v5: Move fec check to intel_dp_supports_dsc(Ville) v6: Remove warning. rebase. v7: change crtc state to include DP sink and fec capability of source.(Manasi) v8: Set fec_enable in crtc in intel_dp_compute_config(). v9 (From Manasi): * Combine the !edp and !fec_support check * Derive dev_priv from intel_dp directly v10 (From Manasi): * Rebase Suggested-by: Ville Syrjala Cc: dri-de...@lists.freedesktop.org Cc: Ville Syrjala Cc: Jani Nikula Cc: Manasi Navare Signed-off-by: Anusha Srivatsa Reviewed-by: Manasi Navare --- drivers/gpu/drm/i915/intel_dp.c | 28 +++- drivers/gpu/drm/i915/intel_drv.h | 3 +++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 4e65dd1a6c07..38a6e82153fd 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -545,7 +545,7 @@ intel_dp_mode_valid(struct drm_connector *connector, dsc_slice_count = drm_dp_dsc_sink_max_slice_count(intel_dp->dsc_dpcd, true); - } else { + } else if (drm_dp_sink_supports_fec(intel_dp->fec_capable)) { dsc_max_output_bpp = intel_dp_dsc_get_output_bpp(max_link_clock, max_lanes, @@ -1710,14 +1710,26 @@ struct link_config_limits { int min_bpp, max_bpp; }; -static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp, +static bool intel_dp_source_supports_fec(struct intel_dp *intel_dp, const struct intel_crtc_state *pipe_config) { struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); - /* FIXME: FEC needed for external DP until then reject DSC on DP */ - if (!intel_dp_is_edp(intel_dp)) - return false; + return INTEL_GEN(dev_priv) >= 11 && + pipe_config->cpu_transcoder != TRANSCODER_A; +} + +static bool intel_dp_supports_fec(struct intel_dp *intel_dp, + const struct intel_crtc_state *pipe_config) +{ + return intel_dp_source_supports_fec(intel_dp, pipe_config) && + drm_dp_sink_supports_fec(intel_dp->fec_capable); +} + +static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp, +const struct intel_crtc_state *pipe_config) +{ + struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); return INTEL_GEN(dev_priv) >= 10 && pipe_config->cpu_transcoder != TRANSCODER_A; @@ -1726,6 +1738,9 @@ static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp, static bool intel_dp_supports_dsc(struct intel_dp *intel_dp, const struct intel_crtc_state *pipe_config) { + if (!intel_dp_is_edp(intel_dp) && !pipe_config->fec_enable) + return false; + return intel_dp_source_supports_dsc(intel_dp, pipe_config) && drm_dp_sink_supports_dsc(intel_dp->dsc_dpcd); } @@ -2129,6 +2144,9 @@ intel_dp_compute_config(struct intel_encoder *encoder, if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) return false; + pipe_config->fec_enable = !intel_dp_is_edp(intel_dp) && + intel_dp_supports_fec(intel_dp, pipe_config); + if (!intel_dp_compute_link_config(encoder, pipe_config, conn_state)) return false; diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index b5693cac26d7..8c582d53c00a 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -946,6 +946,9 @@ struct intel_crtc_state { u8 slice_count; } dsc_params; struct drm_dsc_config dp_dsc_cfg; + + /* Forward Error correction State */ + bool fec_enable; }; struct intel_crtc { -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 17/17] drm/i915/fec: Disable FEC state.
From: Anusha Srivatsa Set the suitable bits in DP_TP_CTL to stop bit correction when DSC is disabled. v2: - rebased. - Add additional check for compression state. (Gaurav) v3: rebased. v4: - Move the code to the proper spot according to spec (Ville) - Use proper checks (manasi) v5: Remove unnecessary checks (Ville) v6: Resolve warnings. Add crtc_state as an argument to intel_disable_ddi_buf(). (Manasi) Cc: dri-de...@lists.freedesktop.org Cc: Gaurav K Singh Cc: Jani Nikula Cc: Ville Syrjala Cc: Manasi Navare Signed-off-by: Anusha Srivatsa Reviewed-by: Manasi Navare --- drivers/gpu/drm/i915/intel_ddi.c | 28 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 12acdb08a750..61d7145f93bf 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -3133,6 +3133,22 @@ static void intel_ddi_enable_fec(struct intel_encoder *encoder, DRM_ERROR("Timed out waiting for FEC Enable Status\n"); } +static void intel_ddi_disable_fec_state(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state) +{ + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + enum port port = encoder->port; + u32 val; + + if (!crtc_state->fec_enable) + return; + + val = I915_READ(DP_TP_CTL(port)); + val &= ~DP_TP_CTL_FEC_ENABLE; + I915_WRITE(DP_TP_CTL(port), val); + POSTING_READ(DP_TP_CTL(port)); +} + static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) @@ -3272,7 +3288,8 @@ static void intel_ddi_pre_enable(struct intel_encoder *encoder, } } -static void intel_disable_ddi_buf(struct intel_encoder *encoder) +static void intel_disable_ddi_buf(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); enum port port = encoder->port; @@ -3291,6 +3308,9 @@ static void intel_disable_ddi_buf(struct intel_encoder *encoder) val |= DP_TP_CTL_LINK_TRAIN_PAT1; I915_WRITE(DP_TP_CTL(port), val); + /* Disable FEC in DP Sink */ + intel_ddi_disable_fec_state(encoder, crtc_state); + if (wait) intel_wait_ddi_buf_idle(dev_priv, port); } @@ -3314,7 +3334,7 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder, intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); } - intel_disable_ddi_buf(encoder); + intel_disable_ddi_buf(encoder, old_crtc_state); intel_edp_panel_vdd_on(intel_dp); intel_edp_panel_off(intel_dp); @@ -3337,7 +3357,7 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder, intel_ddi_disable_pipe_clock(old_crtc_state); - intel_disable_ddi_buf(encoder); + intel_disable_ddi_buf(encoder, old_crtc_state); intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain); @@ -3388,7 +3408,7 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder, val &= ~FDI_RX_ENABLE; I915_WRITE(FDI_RX_CTL(PIPE_A), val); - intel_disable_ddi_buf(encoder); + intel_disable_ddi_buf(encoder, old_crtc_state); intel_ddi_clk_disable(encoder); val = I915_READ(FDI_RX_MISC(PIPE_A)); -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 02/17] drm/i915/dp: Compute DSC pipe config in atomic check
DSC params like the enable, compressed bpp, slice count and dsc_split are added to the intel_crtc_state. These parameters are set based on the requested mode and available link parameters during the pipe configuration in atomic check phase. These values are then later used to populate the remaining DSC and RC parameters before enbaling DSC in atomic commit. v14: Remove leftovers, use dsc_bpc, refine dsc_compute_config (Ville) v13: * Compute DSC bpc only when DSC is req to be enabled (Ville) v12: * Override bpp with dsc dpcd color depth (Manasi) v11: * Const crtc_state, reject DSC on DP without FEC (Ville) * Dont set dsc_split to false (Ville) v10: * Add a helper for dp_dsc support (Ville) * Set pipe_config to max bpp, link params for DSC for now (Ville) * Compute bpp - use dp dsc support helper (Ville) v9: * Rebase on top of drm-tip that now uses fast_narrow config for edp (Manasi) v8: * Check for DSC bpc not 0 (manasi) v7: * Fix indentation in compute_m_n (Manasi) v6 (From Gaurav): * Remove function call of intel_dp_compute_dsc_params() and invoke intel_dp_compute_dsc_params() in the patch where it is defined to fix compilation warning (Gaurav) v5: Add drm_dsc_cfg in intel_crtc_state (Manasi) v4: * Rebase on refactoring of intel_dp_compute_config on tip (Manasi) * Add a comment why we need to check PSR while enabling DSC (Gaurav) v3: * Check PPR > max_cdclock to use 2 VDSC instances (Ville) v2: * Add if-else for eDP/DP (Gaurav) Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Cc: Gaurav K Singh Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa Reviewed-by: Ville Syrjala Acked-by: Jani Nikula --- drivers/gpu/drm/i915/intel_display.c | 2 +- drivers/gpu/drm/i915/intel_display.h | 2 +- drivers/gpu/drm/i915/intel_dp.c | 192 --- 3 files changed, 172 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e9f4e22b2a4e..69bb0b75a806 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -6724,7 +6724,7 @@ static void compute_m_n(unsigned int m, unsigned int n, } void -intel_link_compute_m_n(int bits_per_pixel, int nlanes, +intel_link_compute_m_n(u16 bits_per_pixel, int nlanes, int pixel_clock, int link_clock, struct intel_link_m_n *m_n, bool constant_n) diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h index 5f2955b944da..5e253f741d29 100644 --- a/drivers/gpu/drm/i915/intel_display.h +++ b/drivers/gpu/drm/i915/intel_display.h @@ -423,7 +423,7 @@ struct intel_link_m_n { (__i)++) \ for_each_if(plane) -void intel_link_compute_m_n(int bpp, int nlanes, +void intel_link_compute_m_n(u16 bpp, int nlanes, int pixel_clock, int link_clock, struct intel_link_m_n *m_n, bool constant_n); diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 70ae3d57316b..a2780733768a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -47,6 +47,8 @@ /* DP DSC small joiner has 2 FIFOs each of 640 x 6 bytes */ #define DP_DSC_MAX_SMALL_JOINER_RAM_BUFFER 61440 +#define DP_DSC_MIN_SUPPORTED_BPC 8 +#define DP_DSC_MAX_SUPPORTED_BPC 10 /* DP DSC throughput values used for slice count calculations KPixels/s */ #define DP_DSC_PEAK_PIXEL_RATE 272 @@ -1708,6 +1710,26 @@ struct link_config_limits { int min_bpp, max_bpp; }; +static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp, +const struct intel_crtc_state *pipe_config) +{ + struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); + + /* FIXME: FEC needed for external DP until then reject DSC on DP */ + if (!intel_dp_is_edp(intel_dp)) + return false; + + return INTEL_GEN(dev_priv) >= 10 && + pipe_config->cpu_transcoder != TRANSCODER_A; +} + +static bool intel_dp_supports_dsc(struct intel_dp *intel_dp, + const struct intel_crtc_state *pipe_config) +{ + return intel_dp_source_supports_dsc(intel_dp, pipe_config) && + drm_dp_sink_supports_dsc(intel_dp->dsc_dpcd); +} + static int intel_dp_compute_bpp(struct intel_dp *intel_dp, struct intel_crtc_state *pipe_config) { @@ -1842,14 +1864,115 @@ intel_dp_compute_link_config_fast(struct intel_dp *intel_dp, return false; } +static int intel_dp_dsc_compute_bpp(struct intel_dp *intel_dp, u8 dsc_max_bpc) +{ + int i, num_bpc; + u8 dsc_bpc[3] = {0}; + + num_bpc = drm_dp_dsc_sink_supported_input_bpcs(intel_dp->dsc_dpcd, + dsc_bpc); + for (i = 0; i < num_bpc;
[Intel-gfx] [CI v13 10/17] drm/i915/dp: Populate DSC PPS SDP and send PPS infoframes
DSC PPS secondary data packet infoframes are filled with DSC picure parameter set metadata according to the DSC standard. These infoframes are sent to the sink device and used during DSC decoding. v3: * Rename to intel_dp_write_pps_sdp (Ville) * Use const intel_crtc_state (Ville) v2: * Rebase ond drm-tip Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/intel_vdsc.c | 21 + 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index a76e77a3231b..56290093d43f 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -976,6 +976,25 @@ static void intel_configure_pps_for_dsc_encoder(struct intel_encoder *encoder, } } +static void intel_dp_write_dsc_pps_sdp(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(>base); + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + const struct drm_dsc_config *vdsc_cfg = _state->dp_dsc_cfg; + struct drm_dsc_pps_infoframe dp_dsc_pps_sdp; + + /* Prepare DP SDP PPS header as per DP 1.4 spec, Table 2-123 */ + drm_dsc_dp_pps_header_init(_dsc_pps_sdp); + + /* Fill the PPS payload bytes as per DSC spec 1.2 Table 4-1 */ + drm_dsc_pps_infoframe_pack(_dsc_pps_sdp, vdsc_cfg); + + intel_dig_port->write_infoframe(encoder, crtc_state, + DP_SDP_PPS, _dsc_pps_sdp, + sizeof(dp_dsc_pps_sdp)); +} + void intel_dsc_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state) { @@ -983,4 +1002,6 @@ void intel_dsc_enable(struct intel_encoder *encoder, return; intel_configure_pps_for_dsc_encoder(encoder, crtc_state); + + intel_dp_write_dsc_pps_sdp(encoder, crtc_state); } -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 03/17] drm/i915/dp: Do not enable PSR2 if DSC is enabled
If a eDP panel supports both PSR2 and VDSC, our HW cannot support both at a time. Give priority to PSR2 if a requested resolution can be supported without compression else enable VDSC and keep PSR2 disabled. v4: Fix the unrealted stuff removed during rebase (Ville) v3: * Rebase v2: * Add warning for DSC and PSR2 enabled together (DK) Cc: Rodrigo Vivi Cc: Jani Nikula Cc: Ville Syrjälä Signed-off-by: Manasi Navare Reviewed-by: Rodrigo Vivi --- drivers/gpu/drm/i915/intel_psr.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index 572e626eadff..2084784f320d 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -75,6 +75,10 @@ static bool intel_psr2_enabled(struct drm_i915_private *dev_priv, if (i915_modparams.enable_psr == -1) return false; + /* Cannot enable DSC and PSR2 simultaneously */ + WARN_ON(crtc_state->dsc_params.compression_enable && + crtc_state->has_psr2); + switch (dev_priv->psr.debug & I915_PSR_DEBUG_MODE_MASK) { case I915_PSR_DEBUG_FORCE_PSR1: return false; @@ -502,6 +506,16 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp, if (!dev_priv->psr.sink_psr2_support) return false; + /* +* DSC and PSR2 cannot be enabled simultaneously. If a requested +* resolution requires DSC to be enabled, priority is given to DSC +* over PSR2. +*/ + if (crtc_state->dsc_params.compression_enable) { + DRM_DEBUG_KMS("PSR2 cannot be enabled since DSC is enabled\n"); + return false; + } + if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) { psr_max_h = 4096; psr_max_v = 2304; -- 2.19.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [CI v13 08/17] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling
After encoder->pre_enable() hook, after link training sequence is completed, PPS registers for DSC encoder are configured using the DSC state parameters in intel_crtc_state as part of DSC enabling routine in the source. DSC enabling routine is called after encoder->pre_enable() before enbaling the pipe and after compression is enabled on the sink. v7: * Remove unnecessary comments, leftovers (Ville) * No need for explicit val &= ~ (Ville) v6: intel_dsc_enable to be part of pre_enable hook (Ville) v5: * make crtc_state const (Ville) v4: * Use cpu_transcoder instead of encoder->type for using EDP transcoder DSC registers(Ville) * Keep all PSS regs together (Anusha) v3: * Configure Pic_width/2 for each VDSC engine when two VDSC engines per pipe are used (Manasi) * Add DSC slice_row_per_frame in PPS16 (Manasi) v2: * Enable PG2 power well for VDSC on eDP Cc: Jani Nikula Cc: Ville Syrjala Cc: Anusha Srivatsa Signed-off-by: Manasi Navare Reviewed-by: Anusha Srivatsa --- drivers/gpu/drm/i915/i915_drv.h | 2 + drivers/gpu/drm/i915/intel_ddi.c | 2 + drivers/gpu/drm/i915/intel_vdsc.c | 407 ++ 3 files changed, 411 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 183aae996305..9dc8731907af 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -3343,6 +3343,8 @@ extern void intel_rps_mark_interactive(struct drm_i915_private *i915, bool interactive); extern bool intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable); +void intel_dsc_enable(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state); int i915_reg_read_ioctl(struct drm_device *dev, void *data, struct drm_file *file); diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index fa5ad62cd0db..339be10986d7 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -3144,6 +3144,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, if (!is_mst) intel_ddi_enable_pipe_clock(crtc_state); + + intel_dsc_enable(encoder, crtc_state); } static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, diff --git a/drivers/gpu/drm/i915/intel_vdsc.c b/drivers/gpu/drm/i915/intel_vdsc.c index 39baff618ed8..a76e77a3231b 100644 --- a/drivers/gpu/drm/i915/intel_vdsc.c +++ b/drivers/gpu/drm/i915/intel_vdsc.c @@ -577,3 +577,410 @@ int intel_dp_compute_dsc_params(struct intel_dp *intel_dp, return intel_compute_rc_parameters(vdsc_cfg); } + +static void intel_configure_pps_for_dsc_encoder(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc); + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + const struct drm_dsc_config *vdsc_cfg = _state->dp_dsc_cfg; + enum pipe pipe = crtc->pipe; + enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; + u32 pps_val = 0; + u32 rc_buf_thresh_dword[4]; + u32 rc_range_params_dword[8]; + u8 num_vdsc_instances = (crtc_state->dsc_params.dsc_split) ? 2 : 1; + int i = 0; + + /* Populate PICTURE_PARAMETER_SET_0 registers */ + pps_val = DSC_VER_MAJ | vdsc_cfg->dsc_version_minor << + DSC_VER_MIN_SHIFT | + vdsc_cfg->bits_per_component << DSC_BPC_SHIFT | + vdsc_cfg->line_buf_depth << DSC_LINE_BUF_DEPTH_SHIFT; + if (vdsc_cfg->block_pred_enable) + pps_val |= DSC_BLOCK_PREDICTION; + if (vdsc_cfg->convert_rgb) + pps_val |= DSC_COLOR_SPACE_CONVERSION; + if (vdsc_cfg->enable422) + pps_val |= DSC_422_ENABLE; + if (vdsc_cfg->vbr_enable) + pps_val |= DSC_VBR_ENABLE; + DRM_INFO("PPS0 = 0x%08x\n", pps_val); + if (cpu_transcoder == TRANSCODER_EDP) { + I915_WRITE(DSCA_PICTURE_PARAMETER_SET_0, pps_val); + /* +* If 2 VDSC instances are needed, configure PPS for second +* VDSC +*/ + if (crtc_state->dsc_params.dsc_split) + I915_WRITE(DSCC_PICTURE_PARAMETER_SET_0, pps_val); + } else { + I915_WRITE(ICL_DSC0_PICTURE_PARAMETER_SET_0(pipe), pps_val); + if (crtc_state->dsc_params.dsc_split) + I915_WRITE(ICL_DSC1_PICTURE_PARAMETER_SET_0(pipe), + pps_val); + } + + /* Populate PICTURE_PARAMETER_SET_1 registers */ + pps_val = 0; + pps_val |= DSC_BPP(vdsc_cfg->bits_per_pixel); + DRM_INFO("PPS1 = 0x%08x\n", pps_val); + if (cpu_transcoder == TRANSCODER_EDP) { +
Re: [Intel-gfx] [PATCH v2 00/13] drm/i915: Program SKL+ watermarks/ddb more carefully
On Wed, Nov 14, 2018 at 11:07:16PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä > > Here's the remainder of the skl+ ddb/wm programming series. I tried to > split up the ugly monster patch into a few chunks, and I tossed in > a few extra nuggets on top. I also tried to improve the commit > messages a bit based on the previous review feedback. > > Entire series available here: > git://github.com/vsyrjala/linux.git skl_plane_ddb_wm_update_3 > > Ville Syrjälä (13): > drm/i915: Reorganize plane register writes to make them more atomic > drm/i915: Move single buffered plane register writes to the end > drm/i915: Introduce crtc_state->update_planes bitmask > drm/i915: Pass the new crtc_state to ->disable_plane() > drm/i915: Fix latency==0 handling for level 0 watermark on skl+ > drm/i915: Remove some useless zeroing on skl+ wm calculations > drm/i915: Pass the entire skl_plane_wm to skl_compute_transition_wm() > drm/i915: Clean up skl+ vs. icl+ watermark computation > drm/i915: Don't pass dev_priv around so much > drm/i915: Move ddb/wm programming into plane update/disable hooks on > skl+ > drm/i915: Commit skl+ planes in an order that avoids ddb overlaps > drm/i915: Rename the confusing 'plane_id' to 'color_plane' > drm/i915: Pass the plane to icl_program_input_csc_coeff() Entire series pushed to dinq. Thanks for the reviews everyone. -- Ville Syrjälä Intel ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 2/9] drm/i915/psr: Don't tell sink that main link will be active while is active PSR2
On Wed, 2018-11-28 at 11:02 -0800, Rodrigo Vivi wrote: > On Mon, Nov 26, 2018 at 04:37:03PM -0800, José Roberto de Souza > wrote: > > For PSR2 there is no register to tell HW to keep main link enabled > > while PSR2 is active, so don't configure sink DPCD with a > > misleading value. > > > > Cc: Dhinakaran Pandiyan > > Cc: Rodrigo Vivi > > Signed-off-by: José Roberto de Souza > > --- > > drivers/gpu/drm/i915/intel_psr.c | 10 ++ > > 1 file changed, 6 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > b/drivers/gpu/drm/i915/intel_psr.c > > index f5d27a02eb28..888e348cc1b4 100644 > > --- a/drivers/gpu/drm/i915/intel_psr.c > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > @@ -391,12 +391,14 @@ static void intel_psr_enable_sink(struct > > intel_dp *intel_dp) > > drm_dp_dpcd_writeb(_dp->aux, > > DP_RECEIVER_ALPM_CONFIG, > >DP_ALPM_ENABLE); > > dpcd_val |= DP_PSR_ENABLE_PSR2; > > + } else { > > + if (dev_priv->psr.link_standby) > > + dpcd_val |= DP_PSR_MAIN_LINK_ACTIVE; > > + > > + if (INTEL_GEN(dev_priv) >= 8) > > + dpcd_val |= DP_PSR_CRC_VERIFICATION; > > commit message only mention the link stand-by... > could you please do this in a separated patch? We were already doing it for PSR1, I just grouped all the PSR1 checks inside of this else block, so there is no functional change in CRC verification but I can move it to a separated patch if you want. > > > } > > > > - if (dev_priv->psr.link_standby) > > - dpcd_val |= DP_PSR_MAIN_LINK_ACTIVE; > > - if (!dev_priv->psr.psr2_enabled && INTEL_GEN(dev_priv) >= 8) > > - dpcd_val |= DP_PSR_CRC_VERIFICATION; > > drm_dp_dpcd_writeb(_dp->aux, DP_PSR_EN_CFG, dpcd_val); > > > > drm_dp_dpcd_writeb(_dp->aux, DP_SET_POWER, > > DP_SET_POWER_D0); > > -- > > 2.19.2 > > signature.asc Description: This is a digitally signed message part ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PULL] drm-misc-fixes
Hi Dave, Happy meson week! A bunch of stellar fixes coming in this week from Lyude, and a couple others plugging holes in meson and core. drm-misc-fixes-2018-11-28: - mst: Don't try to validate ports while destroying them (Lyude) - core: Don't set device to master unless set_master succeeds (Sergio) - meson: Do vblank_on/off on enable/disable (Neil) - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) Cc: Lyude Paul Cc: Sergio Correia Cc: Neil Armstrong Cheers, Sean The following changes since commit 2e6e902d185027f8e3cb8b7305238f7e35d6a436: Linux 4.20-rc4 (2018-11-25 14:19:31 -0800) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-misc tags/drm-misc-fixes-2018-11-28 for you to fetch changes up to 31e1ab494559fb46de304cc6c2aed1528f94b298: drm/meson: add support for 1080p25 mode (2018-11-26 16:14:28 -0500) - mst: Don't try to validate ports while destroying them (Lyude) - core: Don't set device to master unless set_master succeeds (Sergio) - meson: Do vblank_on/off on enable/disable (Neil) - meson: Use fast_io regmap option to avoid sleeping in irq ctx (Lyude) - meson: Don't walk off the end of the OSD EOTF LUTs (Lyude) Cc: Lyude Paul Cc: Sergio Correia Cc: Neil Armstrong Christian Hewitt (1): drm/meson: add support for 1080p25 mode Lyude Paul (3): drm/dp_mst: Skip validating ports during destruction, just ref drm/meson: Enable fast_io in meson_dw_hdmi_regmap_config drm/meson: Fix OOB memory accesses in meson_viu_set_osd_lut() Neil Armstrong (1): drm/meson: Fixes for drm_crtc_vblank_on/off support Sergio Correia (1): drm: set is_master to 0 upon drm_new_set_master() failure drivers/gpu/drm/drm_auth.c| 2 ++ drivers/gpu/drm/drm_dp_mst_topology.c | 15 +-- drivers/gpu/drm/meson/meson_crtc.c| 27 +-- drivers/gpu/drm/meson/meson_dw_hdmi.c | 1 + drivers/gpu/drm/meson/meson_venc.c| 4 drivers/gpu/drm/meson/meson_viu.c | 12 ++-- 6 files changed, 51 insertions(+), 10 deletions(-) -- Sean Paul, Software Engineer, Google / Chromium OS ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2 1/2] drm/i915/guc: fix GuC suspend/resume
On 27/11/2018 11:34, Daniele Ceraolo Spurio wrote: On 26/11/2018 06:51, Michal Wajdeczko wrote: On Wed, 17 Oct 2018 00:46:47 +0200, Daniele Ceraolo Spurio wrote: /snip/ diff --git a/drivers/gpu/drm/i915/intel_guc_fwif.h b/drivers/gpu/drm/i915/intel_guc_fwif.h index 8382d591c784..1a853cc627e3 100644 --- a/drivers/gpu/drm/i915/intel_guc_fwif.h +++ b/drivers/gpu/drm/i915/intel_guc_fwif.h @@ -687,6 +687,13 @@ enum intel_guc_report_status { INTEL_GUC_REPORT_STATUS_COMPLETE = 0x4, }; +enum intel_guc_sleep_state_status { + INTEL_GUC_SLEEP_STATE_SUCCESS = 0x0, + INTEL_GUC_SLEEP_STATE_PREEMPT_TO_IDLE_FAILED = 0x1, + INTEL_GUC_SLEEP_STATE_ENGINE_RESET_FAILED = 0x2 +}; btw, it used to be 0,1,2 but from some time fw defines above as: INTEL_GUC_SLEEP_STATE_SUCCESS = 0x1, INTEL_GUC_SLEEP_STATE_PREEMPT_TO_IDLE_FAILED = 0x2, INTEL_GUC_SLEEP_STATE_ENGINE_RESET_FAILED = 0x3, Michal Yeah, I think I had already mentioned in some reply that the newer firmware does suspend/resume differently, but I haven't looked at the details. I'm not even sure if polling the register will still be required. Daniele I've confirmed with the GuC team that the differences are mostly internal to GuC and the only change from the kernel perspective is that the enum values have changed. We still need to do the polling, but I guess we'll be able to init the register to zero since all the return values are > 0. Daniele ___ Intel-gfx mailing list 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
[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/3] drm/i915/ringbuffer: Clear semaphore sync registers on ring init (rev2)
== Series Details == Series: series starting with [1/3] drm/i915/ringbuffer: Clear semaphore sync registers on ring init (rev2) URL : https://patchwork.freedesktop.org/series/53154/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10927_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10927_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10927_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10927_full: ### IGT changes ### Warnings * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: SKIP -> PASS Known issues Here are the changes found in Patchwork_10927_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +3 * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-glk: PASS -> FAIL [fdo#103232] +2 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-skl: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_flip@plain-flip-fb-recreate: - shard-skl: PASS -> FAIL [fdo#100368] * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: - shard-glk: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +2 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen: - {shard-iclb}: PASS -> FAIL [fdo#103167] +5 * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes: - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes: - shard-skl: PASS -> INCOMPLETE [fdo#104108] / [fdo#107773] +1 * igt@kms_plane@plane-position-covered-pipe-a-planes: - {shard-iclb}: PASS -> FAIL [fdo#103166] +3 * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: NOTRUN -> FAIL [fdo#108145] * igt@kms_plane_scaling@pipe-c-scaler-with-rotation: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] * igt@kms_rmfb@close-fd: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +1 * igt@kms_setmode@basic: - shard-hsw: PASS -> FAIL [fdo#99912] * igt@pm_rpm@dpms-mode-unset-non-lpsp: - shard-skl: NOTRUN -> INCOMPLETE [fdo#107807] * igt@pm_rpm@gem-pread: - {shard-iclb}: PASS -> INCOMPLETE [fdo#107713] / [fdo#108840] * igt@pm_rpm@legacy-planes-dpms: - shard-skl: PASS -> INCOMPLETE [fdo#105959] / [fdo#107807] Possible fixes * igt@drm_import_export@import-close-race-flink: - shard-skl: TIMEOUT [fdo#108667] -> PASS * igt@kms_ccs@pipe-a-crc-primary-basic: - shard-skl: FAIL [fdo#107725] -> PASS * igt@kms_color@pipe-a-ctm-max: - shard-apl: FAIL [fdo#108147] -> PASS * igt@kms_color@pipe-b-degamma: - shard-apl: FAIL [fdo#104782] -> PASS * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-apl: FAIL [fdo#103191] / [fdo#103232] -> PASS +1 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-glk: FAIL [fdo#103232] -> PASS +1 * igt@kms_cursor_crc@cursor-256x85-onscreen: - shard-apl: FAIL [fdo#103232] -> PASS +2 * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-xtiled: - shard-skl: FAIL [fdo#107791] -> PASS * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-skl: FAIL [fdo#105363] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-apl: FAIL
Re: [Intel-gfx] [PATCH v7] drm/i915: implement EXTENDED_RECEIVER_CAPABILITY_FIELD_PRESENT
On Wed, Nov 28, 2018 at 11:09:46AM +0200, Jani Nikula wrote: > On Tue, 27 Nov 2018, Manasi Navare wrote: > > From: Matt Atwood > > > > According to DP spec (2.9.3.1 of DP 1.4) if > > EXTENDED_RECEIVER_CAPABILITY_FIELD_PRESENT is set the addresses in DPCD > > 02200h through 0220Fh shall contain the DPRX's true capability. These > > values will match 0h through Fh, except for DPCD_REV, > > MAX_LINK_RATE, DOWN_STREAM_PORT_PRESENT. > > > > Read from DPCD once for all 3 values as this is an expensive operation. > > Spec mentions that all of address space 02200h through 0220Fh should > > contain the right information however currently only 3 values can > > differ. > > > > There is no address space in the intel_dp->dpcd struct for addresses > > 02200h through 0220Fh, and since so much of the data is a identical, > > simply overwrite the values stored in 0h through Fh with the > > values that can be overwritten from addresses 02200h through 0220Fh. > > > > This patch helps with backward compatibility for devices pre DP1.3. > > > > v2: read only dpcd values which can be affected, remove incorrect check, > > split into drm include changes into separate patch, commit message, > > verbose debugging statements during overwrite. > > v3: white space fixes > > v4: make path dependent on DPCD revision > 1.2 > > v5: split into function, removed DPCD rev check > > v6: add debugging prints for early exit conditions > > v7 (From Manasi): > > * Memcpy, memcmp and debig logging based on sizeof(dpcd_ext) (Jani N) > > * Exit early (Jani N) > > > > Cc: Jani Nikula > > Cc: Ville Syrjala > > Signed-off-by: Matt Atwood > > Tested-by: Manasi Navare > > Acked-by: Manasi Navare > > Reviewed-by: Rodrigo Vivi > > --- > > drivers/gpu/drm/i915/intel_dp.c | 41 + > > 1 file changed, 41 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c > > b/drivers/gpu/drm/i915/intel_dp.c > > index 70ae3d57316b..a9eb14a4ab27 100644 > > --- a/drivers/gpu/drm/i915/intel_dp.c > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > @@ -3802,6 +3802,45 @@ intel_dp_link_down(struct intel_encoder *encoder, > > } > > } > > > > +static void > > +intel_dp_extended_receiver_capabilities(struct intel_dp *intel_dp) > > +{ > > + u8 dpcd_ext[6]; > > + > > + /* > > +* Prior to DP1.3 the bit represented by > > +* DP_EXTENDED_RECEIVER_CAP_FIELD_PRESENT was reserved. > > +* if it is set DP_DPCD_REV at h could be at a value less than > > +* the true capability of the panel. The only way to check is to > > +* then compare h and 2200h. > > +*/ > > + if (!(intel_dp->dpcd[DP_TRAINING_AUX_RD_INTERVAL] & > > + DP_EXTENDED_RECEIVER_CAP_FIELD_PRESENT)) > > + return; > > + > > + DRM_DEBUG_KMS("DPCD: Reading extended receiver capabilities\n"); > > Superfluous debug logging. Will get rid of this > > > + > > + if (drm_dp_dpcd_read(_dp->aux, DP_DP13_DPCD_REV, > > +_ext, sizeof(dpcd_ext)) != sizeof(dpcd_ext)) { > > + DRM_ERROR("DPCD failed read at extended capabilities\n"); > > Most of our dpcd failures are logged using DRM_DEBUG_KMS. The ones that > log DRM_ERROR seem to be very recent additions deviating from the debug > loggin practice. There isn't much the user can do, really. Here this change from DEBUG_KMS to DRM_ERROR was as per Rodrigo's comment on the initial patch. (https://patchwork.freedesktop.org/patch/240452/) Also IMO it should be an error since it will give unexpected results as we were unable to get the true extended capabilities. > > > + return; > > + } > > + if (intel_dp->dpcd[DP_DPCD_REV] > dpcd_ext[DP_DPCD_REV]) { > > + DRM_DEBUG_KMS("DPCD extended DPCD rev less than base DPCD > > rev\n"); > > Okay, seems like a rare event. Again this check and logging comes from Rodrigo's review comments on the initial patch. https://patchwork.freedesktop.org/patch/240452/ > > > + return; > > + } > > + if (!memcmp(intel_dp->dpcd, dpcd_ext, sizeof(dpcd_ext))) { > > + DRM_DEBUG_KMS("Extended Receiver Cap DPCD match the base > > DPCD\n"); > > I don't think this debug logging is needed. Sure will get rid of this. > > > + return; > > + } > > + > > + DRM_DEBUG_KMS("Base DPCD: %*ph\n", (int)sizeof(dpcd_ext), > > intel_dp->dpcd); > > Using sizeof(dpcd_ext) when printing something else is a red flag. You > could log the whole dpcd here. > > DRM_DEBUG_KMS("DPCD: %*ph (base)\n", (int) sizeof(intel_dp->dpcd), > intel_dp->dpcd); Yes will do this. > > > + DRM_DEBUG_KMS("Extended Receiver Cap DPCD: %*ph\n", > > + (int)sizeof(dpcd_ext), dpcd_ext); > > The caller will log the *updated* DPCD right after this returns, you > don't need to log dpcd_ext. Okay agreed, I will get rid of this debug print since the caller already prints it. > > > + memcpy(intel_dp->dpcd, dpcd_ext, sizeof(dpcd_ext)); > > +} > > + > > + > >
Re: [Intel-gfx] [PATCH 2/9] drm/i915/psr: Don't tell sink that main link will be active while is active PSR2
On Mon, Nov 26, 2018 at 04:37:03PM -0800, José Roberto de Souza wrote: > For PSR2 there is no register to tell HW to keep main link enabled > while PSR2 is active, so don't configure sink DPCD with a > misleading value. > > Cc: Dhinakaran Pandiyan > Cc: Rodrigo Vivi > Signed-off-by: José Roberto de Souza > --- > drivers/gpu/drm/i915/intel_psr.c | 10 ++ > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > b/drivers/gpu/drm/i915/intel_psr.c > index f5d27a02eb28..888e348cc1b4 100644 > --- a/drivers/gpu/drm/i915/intel_psr.c > +++ b/drivers/gpu/drm/i915/intel_psr.c > @@ -391,12 +391,14 @@ static void intel_psr_enable_sink(struct intel_dp > *intel_dp) > drm_dp_dpcd_writeb(_dp->aux, DP_RECEIVER_ALPM_CONFIG, > DP_ALPM_ENABLE); > dpcd_val |= DP_PSR_ENABLE_PSR2; > + } else { > + if (dev_priv->psr.link_standby) > + dpcd_val |= DP_PSR_MAIN_LINK_ACTIVE; > + > + if (INTEL_GEN(dev_priv) >= 8) > + dpcd_val |= DP_PSR_CRC_VERIFICATION; commit message only mention the link stand-by... could you please do this in a separated patch? > } > > - if (dev_priv->psr.link_standby) > - dpcd_val |= DP_PSR_MAIN_LINK_ACTIVE; > - if (!dev_priv->psr.psr2_enabled && INTEL_GEN(dev_priv) >= 8) > - dpcd_val |= DP_PSR_CRC_VERIFICATION; > drm_dp_dpcd_writeb(_dp->aux, DP_PSR_EN_CFG, dpcd_val); > > drm_dp_dpcd_writeb(_dp->aux, DP_SET_POWER, DP_SET_POWER_D0); > -- > 2.19.2 > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [CI v12 10/23] drm/i915/dsc: Define & Compute VESA DSC params (fwd)
On Wed, 28 Nov 2018, Manasi Navare wrote: > On Wed, Nov 28, 2018 at 11:46:26AM +, Julia Lawall wrote: > > Hello, > > > > row_index and column_index are unsigned, so in the last line shown > > they will not be less than 0. > > > > Row_index and column_index are assigned to 0 at the beginning of the function > and so > if thre is no valid index found the get_column_index /row_index will return > -EINVAL > and hence they can have values < 0. Since they have an unsigned type, the negative values will be considered to be really big positive numbers. julia > > Does this make sense? > > Manasi > > > julia > > > > -- Forwarded message -- > > Date: Wed, 28 Nov 2018 19:43:30 +0800 > > From: kbuild test robot > > To: kbu...@01.org > > Cc: Julia Lawall > > Subject: Re: [Intel-gfx] [CI v12 10/23] drm/i915/dsc: Define & Compute VESA > > DSC > > params > > > > CC: kbuild-...@01.org > > In-Reply-To: <20181127214125.17658-10-manasi.d.nav...@intel.com> > > References: <20181127214125.17658-10-manasi.d.nav...@intel.com> > > TO: Manasi Navare > > CC: intel-gfx@lists.freedesktop.org > > CC: > > > > Hi Gaurav, > > > > Thank you for the patch! Perhaps something to improve: > > > > [auto build test WARNING on drm-intel/for-linux-next] > > [also build test WARNING on next-20181127] > > [cannot apply to v4.20-rc4] > > [if your patch is applied to the wrong git tree, please drop us a note to > > help improve the system] > > > > url: > > https://github.com/0day-ci/linux/commits/Manasi-Navare/drm-dsc-Modify-DRM-helper-to-return-complete-DSC-color-depth-capabilities/20181128-095026 > > base: git://anongit.freedesktop.org/drm-intel for-linux-next > > :: branch date: 10 hours ago > > :: commit date: 10 hours ago > > > > >> drivers/gpu/drm/i915/intel_vdsc.c:404:22-34: WARNING: Unsigned > > >> expression compared with zero: column_index < 0 > > >> drivers/gpu/drm/i915/intel_vdsc.c:404:5-14: WARNING: Unsigned expression > > >> compared with zero: row_index < 0 > > > > # > > https://github.com/0day-ci/linux/commit/5b6895999d5a84b154fcd49dc3a91d71897d03ec > > git remote add linux-review https://github.com/0day-ci/linux > > git remote update linux-review > > git checkout 5b6895999d5a84b154fcd49dc3a91d71897d03ec > > vim +404 drivers/gpu/drm/i915/intel_vdsc.c > > > > 5b689599 Gaurav K Singh 2018-11-27 319 > > 5b689599 Gaurav K Singh 2018-11-27 320 int > > intel_dp_compute_dsc_params(struct intel_dp *intel_dp, > > 5b689599 Gaurav K Singh 2018-11-27 321 struct > > intel_crtc_state *pipe_config) > > 5b689599 Gaurav K Singh 2018-11-27 322 { > > 5b689599 Gaurav K Singh 2018-11-27 323 struct drm_dsc_config *vdsc_cfg > > = _config->dp_dsc_cfg; > > 5b689599 Gaurav K Singh 2018-11-27 324 u16 compressed_bpp = > > pipe_config->dsc_params.compressed_bpp; > > 5b689599 Gaurav K Singh 2018-11-27 325 u8 i = 0; > > 5b689599 Gaurav K Singh 2018-11-27 326 u8 row_index = 0; > > 5b689599 Gaurav K Singh 2018-11-27 327 u8 column_index = 0; > > 5b689599 Gaurav K Singh 2018-11-27 328 u8 line_buf_depth = 0; > > 5b689599 Gaurav K Singh 2018-11-27 329 > > 5b689599 Gaurav K Singh 2018-11-27 330 vdsc_cfg->pic_width = > > pipe_config->base.adjusted_mode.crtc_hdisplay; > > 5b689599 Gaurav K Singh 2018-11-27 331 vdsc_cfg->pic_height = > > pipe_config->base.adjusted_mode.crtc_vdisplay; > > 5b689599 Gaurav K Singh 2018-11-27 332 vdsc_cfg->slice_width = > > DIV_ROUND_UP(vdsc_cfg->pic_width, > > 5b689599 Gaurav K Singh 2018-11-27 333 > > pipe_config->dsc_params.slice_count); > > 5b689599 Gaurav K Singh 2018-11-27 334 /* > > 5b689599 Gaurav K Singh 2018-11-27 335 * Slice Height of 8 works for > > all currently available panels. So start > > 5b689599 Gaurav K Singh 2018-11-27 336 * with that if pic_height is > > an integral multiple of 8. > > 5b689599 Gaurav K Singh 2018-11-27 337 * Eventually add logic to try > > multiple slice heights. > > 5b689599 Gaurav K Singh 2018-11-27 338 */ > > 5b689599 Gaurav K Singh 2018-11-27 339 if (vdsc_cfg->pic_height % 8 == > > 0) > > 5b689599 Gaurav K Singh 2018-11-27 340 vdsc_cfg->slice_height > > = 8; > > 5b689599 Gaurav K Singh 2018-11-27 341 else if (vdsc_cfg->pic_height %
[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/3] drm/i915/ringbuffer: Clear semaphore sync registers on ring init
== Series Details == Series: series starting with [1/3] drm/i915/ringbuffer: Clear semaphore sync registers on ring init URL : https://patchwork.freedesktop.org/series/53154/ State : success == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10926_full Summary --- **WARNING** Minor unknown changes coming with Patchwork_10926_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10926_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10926_full: ### IGT changes ### Warnings * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: SKIP -> PASS Known issues Here are the changes found in Patchwork_10926_full that come from known issues: ### IGT changes ### Issues hit * igt@kms_cursor_crc@cursor-128x128-offscreen: - shard-glk: PASS -> DMESG-WARN [fdo#105763] / [fdo#106538] +2 * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-glk: PASS -> FAIL [fdo#103232] +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff: - shard-apl: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@fbc-1p-rte: - shard-glk: PASS -> FAIL [fdo#103167] / [fdo#105682] * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu: - shard-glk: PASS -> FAIL [fdo#103167] +3 * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb: - shard-apl: PASS -> FAIL [fdo#108145] * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-apl: PASS -> FAIL [fdo#103166] +1 * igt@kms_plane_multiple@atomic-pipe-c-tiling-yf: - shard-kbl: NOTRUN -> FAIL [fdo#103166] * igt@kms_setmode@basic: - shard-hsw: PASS -> FAIL [fdo#99912] * {igt@runner@aborted}: - shard-hsw: NOTRUN -> FAIL [fdo#108770] Possible fixes * igt@kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing: - shard-apl: INCOMPLETE [fdo#103927] -> PASS +1 * igt@kms_color@pipe-a-ctm-max: - shard-apl: FAIL [fdo#108147] -> PASS * igt@kms_color@pipe-b-degamma: - shard-apl: FAIL [fdo#104782] -> PASS * igt@kms_cursor_crc@cursor-128x128-sliding: - shard-apl: FAIL [fdo#103232] -> PASS * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-apl: FAIL [fdo#103191] / [fdo#103232] -> PASS +1 * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-glk: FAIL [fdo#103232] -> PASS +2 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-apl: FAIL [fdo#103167] -> PASS +2 * igt@kms_frontbuffer_tracking@fbc-1p-rte: - shard-apl: FAIL [fdo#103167] / [fdo#105682] -> PASS * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc: - shard-glk: FAIL [fdo#103167] -> PASS +2 * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c: - shard-apl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +27 * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-glk: FAIL [fdo#103166] -> PASS +2 * igt@kms_plane_multiple@atomic-pipe-a-tiling-yf: - shard-apl: FAIL [fdo#103166] -> PASS * igt@kms_plane_multiple@atomic-pipe-b-tiling-yf: - shard-kbl: DMESG-WARN [fdo#103558] / [fdo#105602] -> PASS +13 * igt@kms_setmode@basic: - shard-apl: FAIL [fdo#99912] -> PASS * igt@perf@blocking: - shard-hsw: FAIL [fdo#102252] -> PASS Warnings * igt@i915_suspend@shrink: - shard-kbl: INCOMPLETE [fdo#103665] / [fdo#106886] -> DMESG-WARN [fdo#108784] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#102252]: https://bugs.freedesktop.org/show_bug.cgi?id=102252 [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782 [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602 [fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682 [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763 [fdo#106538]:
Re: [Intel-gfx] [PATCH v6 3/6] drm/dp_mst: Start tracking per-port VCPI allocations
On Wed, 2018-11-28 at 09:17 +0100, Daniel Vetter wrote: > On Tue, Nov 27, 2018 at 08:44:14PM -0500, Lyude Paul wrote: > > On Tue, 2018-11-27 at 20:44 +0100, Daniel Vetter wrote: > > > On Tue, Nov 27, 2018 at 12:48:59PM -0500, Lyude Paul wrote: > > > > On Mon, 2018-11-26 at 22:22 +0100, Daniel Vetter wrote: > > > > > On Mon, Nov 26, 2018 at 10:04:21PM +0100, Daniel Vetter wrote: > > > > > > On Thu, Nov 15, 2018 at 07:50:05PM -0500, Lyude Paul wrote: > > > > > > > There has been a TODO waiting for quite a long time in > > > > > > > drm_dp_mst_topology.c: > > > > > > > > > > > > > > /* We cannot rely on port->vcpi.num_slots to update > > > > > > >* topology_state->avail_slots as the port may not exist if > > > > > > > the parent > > > > > > >* branch device was unplugged. This should be fixed by > > > > > > > tracking > > > > > > >* per-port slot allocation in drm_dp_mst_topology_state > > > > > > > instead of > > > > > > >* depending on the caller to tell us how many slots to > > > > > > > release. > > > > > > >*/ > > > > > > > > > > > > > > That's not the only reason we should fix this: forcing the > > > > > > > driver to > > > > > > > track the VCPI allocations throughout a state's atomic check is > > > > > > > error prone, because it means that extra care has to be taken > > > > > > > with > > > > > > > the > > > > > > > order that drm_dp_atomic_find_vcpi_slots() and > > > > > > > drm_dp_atomic_release_vcpi_slots() are called in in order to > > > > > > > ensure > > > > > > > idempotency. Currently the only driver actually using these > > > > > > > helpers, > > > > > > > i915, doesn't even do this correctly: multiple ->best_encoder() > > > > > > > checks > > > > > > > with i915's current implementation would not be idempotent and > > > > > > > would > > > > > > > over-allocate VCPI slots, something I learned trying to > > > > > > > implement > > > > > > > fallback retraining in MST. > > > > > > > > > > > > > > So: simplify this whole mess, and teach > > > > > > > drm_dp_atomic_find_vcpi_slots() > > > > > > > and drm_dp_atomic_release_vcpi_slots() to track the VCPI > > > > > > > allocations > > > > > > > for > > > > > > > each port. This allows us to ensure idempotency without having > > > > > > > to > > > > > > > rely > > > > > > > on the driver as much. Additionally: the driver doesn't need to > > > > > > > do > > > > > > > any > > > > > > > kind of VCPI slot tracking anymore if it doesn't need it for > > > > > > > it's > > > > > > > own > > > > > > > internal state. > > > > > > > > > > > > > > Additionally; this adds a new drm_dp_mst_atomic_check() helper > > > > > > > which > > > > > > > must be used by atomic drivers to perform validity checks for > > > > > > > the > > > > > > > new > > > > > > > VCPI allocations incurred by a state. > > > > > > > > > > > > > > Also: update the documentation and make it more obvious that > > > > > > > these > > > > > > > /must/ be called by /all/ atomic drivers supporting MST. > > > > > > > > > > > > > > Changes since v6: > > > > > > > - Keep a kref to all of the ports we have allocations on. This > > > > > > > required > > > > > > >a good bit of changing to when we call > > > > > > > drm_dp_find_vcpi_slots(), > > > > > > >mainly that we need to ensure that we only redo VCPI > > > > > > > allocations > > > > > > > on > > > > > > >actual mode or CRTC changes, not crtc_state->active changes. > > > > > > >Additionally, we no longer take the registration of the DRM > > > > > > > connector > > > > > > >for each port into account because so long as we have a kref > > > > > > > to > > > > > > > the > > > > > > >port in the new or previous atomic state, the connector will > > > > > > > stay > > > > > > >registered. > > > > > > > > > > > > I write an entire pile of small nitpits (still included most of > > > > > > them > > > > > > below), until I realized this here wont work. Delaying the call to > > > > > > destroy > > > > > > the connector (well, unregister it really) wreaks the design we've > > > > > > come up > > > > > > with thus far, resulting in most of my comments here. > > > > > > > > > > > > Instead, all we need to do is delay the kfree(port) at the bottom > > > > > > of > > > > > > drm_dp_destroy_port(). The vcpi allocation structure _only_ needs > > > > > > the > > > > > > pointer value to stay valid, as a lookup key. It doesn't care at > > > > > > all > > > > > > about > > > > > > anything actually stored in there. So the only thing we need to > > > > > > delay > > > > > > is > > > > > > the kfree. I think the simplest way to achieve this is to add a > > > > > > 2nd > > > > > > kref > > > > > > (port->kfree_ref or something like that), with on reference held > > > > > > by > > > > > > the > > > > > > port itself (released in drm_dp_destroy_port), and the other one > > > > > > held > > > > > > as-needed by the vcpi allocation lists. > > > > > > > > > > > > I think if we go with this design instead of
Re: [Intel-gfx] [CI v12 10/23] drm/i915/dsc: Define & Compute VESA DSC params (fwd)
On Wed, Nov 28, 2018 at 11:46:26AM +, Julia Lawall wrote: > Hello, > > row_index and column_index are unsigned, so in the last line shown > they will not be less than 0. > Row_index and column_index are assigned to 0 at the beginning of the function and so if thre is no valid index found the get_column_index /row_index will return -EINVAL and hence they can have values < 0. Does this make sense? Manasi > julia > > -- Forwarded message -- > Date: Wed, 28 Nov 2018 19:43:30 +0800 > From: kbuild test robot > To: kbu...@01.org > Cc: Julia Lawall > Subject: Re: [Intel-gfx] [CI v12 10/23] drm/i915/dsc: Define & Compute VESA > DSC > params > > CC: kbuild-...@01.org > In-Reply-To: <20181127214125.17658-10-manasi.d.nav...@intel.com> > References: <20181127214125.17658-10-manasi.d.nav...@intel.com> > TO: Manasi Navare > CC: intel-gfx@lists.freedesktop.org > CC: > > Hi Gaurav, > > Thank you for the patch! Perhaps something to improve: > > [auto build test WARNING on drm-intel/for-linux-next] > [also build test WARNING on next-20181127] > [cannot apply to v4.20-rc4] > [if your patch is applied to the wrong git tree, please drop us a note to > help improve the system] > > url: > https://github.com/0day-ci/linux/commits/Manasi-Navare/drm-dsc-Modify-DRM-helper-to-return-complete-DSC-color-depth-capabilities/20181128-095026 > base: git://anongit.freedesktop.org/drm-intel for-linux-next > :: branch date: 10 hours ago > :: commit date: 10 hours ago > > >> drivers/gpu/drm/i915/intel_vdsc.c:404:22-34: WARNING: Unsigned expression > >> compared with zero: column_index < 0 > >> drivers/gpu/drm/i915/intel_vdsc.c:404:5-14: WARNING: Unsigned expression > >> compared with zero: row_index < 0 > > # > https://github.com/0day-ci/linux/commit/5b6895999d5a84b154fcd49dc3a91d71897d03ec > git remote add linux-review https://github.com/0day-ci/linux > git remote update linux-review > git checkout 5b6895999d5a84b154fcd49dc3a91d71897d03ec > vim +404 drivers/gpu/drm/i915/intel_vdsc.c > > 5b689599 Gaurav K Singh 2018-11-27 319 > 5b689599 Gaurav K Singh 2018-11-27 320 int > intel_dp_compute_dsc_params(struct intel_dp *intel_dp, > 5b689599 Gaurav K Singh 2018-11-27 321 struct > intel_crtc_state *pipe_config) > 5b689599 Gaurav K Singh 2018-11-27 322 { > 5b689599 Gaurav K Singh 2018-11-27 323 struct drm_dsc_config *vdsc_cfg > = _config->dp_dsc_cfg; > 5b689599 Gaurav K Singh 2018-11-27 324 u16 compressed_bpp = > pipe_config->dsc_params.compressed_bpp; > 5b689599 Gaurav K Singh 2018-11-27 325 u8 i = 0; > 5b689599 Gaurav K Singh 2018-11-27 326 u8 row_index = 0; > 5b689599 Gaurav K Singh 2018-11-27 327 u8 column_index = 0; > 5b689599 Gaurav K Singh 2018-11-27 328 u8 line_buf_depth = 0; > 5b689599 Gaurav K Singh 2018-11-27 329 > 5b689599 Gaurav K Singh 2018-11-27 330 vdsc_cfg->pic_width = > pipe_config->base.adjusted_mode.crtc_hdisplay; > 5b689599 Gaurav K Singh 2018-11-27 331 vdsc_cfg->pic_height = > pipe_config->base.adjusted_mode.crtc_vdisplay; > 5b689599 Gaurav K Singh 2018-11-27 332 vdsc_cfg->slice_width = > DIV_ROUND_UP(vdsc_cfg->pic_width, > 5b689599 Gaurav K Singh 2018-11-27 333 > pipe_config->dsc_params.slice_count); > 5b689599 Gaurav K Singh 2018-11-27 334 /* > 5b689599 Gaurav K Singh 2018-11-27 335* Slice Height of 8 works for > all currently available panels. So start > 5b689599 Gaurav K Singh 2018-11-27 336* with that if pic_height is > an integral multiple of 8. > 5b689599 Gaurav K Singh 2018-11-27 337* Eventually add logic to try > multiple slice heights. > 5b689599 Gaurav K Singh 2018-11-27 338*/ > 5b689599 Gaurav K Singh 2018-11-27 339 if (vdsc_cfg->pic_height % 8 == > 0) > 5b689599 Gaurav K Singh 2018-11-27 340 vdsc_cfg->slice_height > = 8; > 5b689599 Gaurav K Singh 2018-11-27 341 else if (vdsc_cfg->pic_height % > 4 == 0) > 5b689599 Gaurav K Singh 2018-11-27 342 vdsc_cfg->slice_height > = 4; > 5b689599 Gaurav K Singh 2018-11-27 343 else > 5b689599 Gaurav K Singh 2018-11-27 344 vdsc_cfg->slice_height > = 2; > 5b689599 Gaurav K Singh 2018-11-27 345 > 5b689599 Gaurav K Singh 2018-11-27 346 /* Values filled from DSC Sink > DPCD */ > 5b689599 Gaurav K Singh 2018-11-27 347 vdsc_cfg->dsc_version_major = > 5b689599 Gaurav K Singh 2018-11-27 348 > (intel_dp->dsc_dpcd[DP_DSC_REV - DP_DSC_SUPPORT] &a
Re: [Intel-gfx] [PATCH] drm/i915/psr: Get pipe id following atomic guidelines
On Wed, Nov 28, 2018 at 10:21:05AM -0800, Souza, Jose wrote: > On Wed, 2018-11-28 at 08:55 -0800, Rodrigo Vivi wrote: > > On Tue, Nov 27, 2018 at 11:28:38PM -0800, José Roberto de Souza > > wrote: > > > As stated in struct drm_encoder, crtc field should only be used > > > by non-atomic drivers. > > > > > > So here caching the pipe id in intel_psr_enable() what is way more > > > simple and efficient than at every call to > > > intel_psr_flush()/invalidate() get the > > > drm.mode_config.connection_mutex lock to safely be able to get the > > > pipe id by reading drm_connector_state.crtc. > > > > > > This should fix the null pointer dereference crash below as the > > > previous way to get the pipe id was prone to race conditions. > > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105959 > > > Cc: Dhinakaran Pandiyan > > > Cc: Rodrigo Vivi > > > Signed-off-by: José Roberto de Souza > > > --- > > > drivers/gpu/drm/i915/i915_drv.h | 1 + > > > drivers/gpu/drm/i915/intel_psr.c | 19 --- > > > 2 files changed, 5 insertions(+), 15 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h > > > b/drivers/gpu/drm/i915/i915_drv.h > > > index f763b30f98d9..9ea39b82836f 100644 > > > --- a/drivers/gpu/drm/i915/i915_drv.h > > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > > @@ -494,6 +494,7 @@ struct i915_psr { > > > bool sink_support; > > > bool prepared, enabled; > > > struct intel_dp *dp; > > > + enum pipe pipe; > > > bool active; > > > struct work_struct work; > > > unsigned busy_frontbuffer_bits; > > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > > b/drivers/gpu/drm/i915/intel_psr.c > > > index 572e626eadff..11a520074f06 100644 > > > --- a/drivers/gpu/drm/i915/intel_psr.c > > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > > @@ -705,6 +705,7 @@ void intel_psr_enable(struct intel_dp > > > *intel_dp, > > > dev_priv->psr.psr2_enabled = intel_psr2_enabled(dev_priv, > > > crtc_state); > > > dev_priv->psr.busy_frontbuffer_bits = 0; > > > dev_priv->psr.prepared = true; > > > + dev_priv->psr.pipe = to_intel_crtc(crtc_state->base.crtc)- > > > >pipe; > > > > > > if (psr_global_enabled(dev_priv->psr.debug)) > > > intel_psr_enable_locked(dev_priv, crtc_state); > > > @@ -1012,9 +1013,6 @@ static void intel_psr_work(struct work_struct > > > *work) > > > void intel_psr_invalidate(struct drm_i915_private *dev_priv, > > > unsigned frontbuffer_bits, enum fb_op_origin > > > origin) > > > { > > > - struct drm_crtc *crtc; > > > - enum pipe pipe; > > > - > > > if (!CAN_PSR(dev_priv)) > > > return; > > > > > > @@ -1027,10 +1025,7 @@ void intel_psr_invalidate(struct > > > drm_i915_private *dev_priv, > > > return; > > > } > > > > > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > > > - pipe = to_intel_crtc(crtc)->pipe; > > > - > > > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > > > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv- > > > >psr.pipe); > > > dev_priv->psr.busy_frontbuffer_bits |= frontbuffer_bits; > > > > > > if (frontbuffer_bits) > > > @@ -1055,9 +1050,6 @@ void intel_psr_invalidate(struct > > > drm_i915_private *dev_priv, > > > void intel_psr_flush(struct drm_i915_private *dev_priv, > > >unsigned frontbuffer_bits, enum fb_op_origin > > > origin) > > > { > > > - struct drm_crtc *crtc; > > > - enum pipe pipe; > > > - > > > if (!CAN_PSR(dev_priv)) > > > return; > > > > > > @@ -1070,10 +1062,7 @@ void intel_psr_flush(struct drm_i915_private > > > *dev_priv, > > > return; > > > } > > > > > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > > > - pipe = to_intel_crtc(crtc)->pipe; > > > - > > > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > > > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv- > > > >psr.pipe); > > > > This approach will introduce another bug. > > > > Any frontbuffer tracking from any connector on another pipe will > > trigger > > psr actions on eDP. > > Why that would happen? dev_priv->psr.pipe will be set with the pipe id > that is used by the eDP panel so INTEL_FRONTBUFFER_ALL_MASK() will > return only the frontbuffer bits of that pipe. Oh... nevermind... and I saw that we were already getting from psr.dp anyway... Reviewed-by: Rodrigo Vivi > > > > > > dev_priv->psr.busy_frontbuffer_bits &= ~frontbuffer_bits; > > > > > > /* By definition flush = invalidate + flush */ > > > @@ -1087,7 +1076,7 @@ void intel_psr_flush(struct drm_i915_private > > > *dev_priv, > > >* but it makes more sense write to the current active > > >* pipe. > > >*/ > > > - I915_WRITE(CURSURFLIVE(pipe), 0); > > > + I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); > > > } > > > > > > if (!dev_priv->psr.active && !dev_priv- > > > >psr.busy_frontbuffer_bits) > > > -- > > > 2.19.2 > > > > > >
Re: [Intel-gfx] [PATCH] drm/i915/psr: Get pipe id following atomic guidelines
On Wed, 2018-11-28 at 08:55 -0800, Rodrigo Vivi wrote: > On Tue, Nov 27, 2018 at 11:28:38PM -0800, José Roberto de Souza > wrote: > > As stated in struct drm_encoder, crtc field should only be used > > by non-atomic drivers. > > > > So here caching the pipe id in intel_psr_enable() what is way more > > simple and efficient than at every call to > > intel_psr_flush()/invalidate() get the > > drm.mode_config.connection_mutex lock to safely be able to get the > > pipe id by reading drm_connector_state.crtc. > > > > This should fix the null pointer dereference crash below as the > > previous way to get the pipe id was prone to race conditions. > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105959 > > Cc: Dhinakaran Pandiyan > > Cc: Rodrigo Vivi > > Signed-off-by: José Roberto de Souza > > --- > > drivers/gpu/drm/i915/i915_drv.h | 1 + > > drivers/gpu/drm/i915/intel_psr.c | 19 --- > > 2 files changed, 5 insertions(+), 15 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h > > b/drivers/gpu/drm/i915/i915_drv.h > > index f763b30f98d9..9ea39b82836f 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.h > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > @@ -494,6 +494,7 @@ struct i915_psr { > > bool sink_support; > > bool prepared, enabled; > > struct intel_dp *dp; > > + enum pipe pipe; > > bool active; > > struct work_struct work; > > unsigned busy_frontbuffer_bits; > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > b/drivers/gpu/drm/i915/intel_psr.c > > index 572e626eadff..11a520074f06 100644 > > --- a/drivers/gpu/drm/i915/intel_psr.c > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > @@ -705,6 +705,7 @@ void intel_psr_enable(struct intel_dp > > *intel_dp, > > dev_priv->psr.psr2_enabled = intel_psr2_enabled(dev_priv, > > crtc_state); > > dev_priv->psr.busy_frontbuffer_bits = 0; > > dev_priv->psr.prepared = true; > > + dev_priv->psr.pipe = to_intel_crtc(crtc_state->base.crtc)- > > >pipe; > > > > if (psr_global_enabled(dev_priv->psr.debug)) > > intel_psr_enable_locked(dev_priv, crtc_state); > > @@ -1012,9 +1013,6 @@ static void intel_psr_work(struct work_struct > > *work) > > void intel_psr_invalidate(struct drm_i915_private *dev_priv, > > unsigned frontbuffer_bits, enum fb_op_origin > > origin) > > { > > - struct drm_crtc *crtc; > > - enum pipe pipe; > > - > > if (!CAN_PSR(dev_priv)) > > return; > > > > @@ -1027,10 +1025,7 @@ void intel_psr_invalidate(struct > > drm_i915_private *dev_priv, > > return; > > } > > > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > > - pipe = to_intel_crtc(crtc)->pipe; > > - > > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv- > > >psr.pipe); > > dev_priv->psr.busy_frontbuffer_bits |= frontbuffer_bits; > > > > if (frontbuffer_bits) > > @@ -1055,9 +1050,6 @@ void intel_psr_invalidate(struct > > drm_i915_private *dev_priv, > > void intel_psr_flush(struct drm_i915_private *dev_priv, > > unsigned frontbuffer_bits, enum fb_op_origin > > origin) > > { > > - struct drm_crtc *crtc; > > - enum pipe pipe; > > - > > if (!CAN_PSR(dev_priv)) > > return; > > > > @@ -1070,10 +1062,7 @@ void intel_psr_flush(struct drm_i915_private > > *dev_priv, > > return; > > } > > > > - crtc = dp_to_dig_port(dev_priv->psr.dp)->base.base.crtc; > > - pipe = to_intel_crtc(crtc)->pipe; > > - > > - frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(pipe); > > + frontbuffer_bits &= INTEL_FRONTBUFFER_ALL_MASK(dev_priv- > > >psr.pipe); > > This approach will introduce another bug. > > Any frontbuffer tracking from any connector on another pipe will > trigger > psr actions on eDP. Why that would happen? dev_priv->psr.pipe will be set with the pipe id that is used by the eDP panel so INTEL_FRONTBUFFER_ALL_MASK() will return only the frontbuffer bits of that pipe. > > > dev_priv->psr.busy_frontbuffer_bits &= ~frontbuffer_bits; > > > > /* By definition flush = invalidate + flush */ > > @@ -1087,7 +1076,7 @@ void intel_psr_flush(struct drm_i915_private > > *dev_priv, > > * but it makes more sense write to the current active > > * pipe. > > */ > > - I915_WRITE(CURSURFLIVE(pipe), 0); > > + I915_WRITE(CURSURFLIVE(dev_priv->psr.pipe), 0); > > } > > > > if (!dev_priv->psr.active && !dev_priv- > > >psr.busy_frontbuffer_bits) > > -- > > 2.19.2 > > > > ___ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx signature.asc Description: This is a digitally signed message part ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org
[Intel-gfx] [PULL] drm-intel-fixes
Hi Dave, Been a steady week, and no fixes apart from GVT, so quoting Zhenyu: "One to correct MOCS registers load on engine list, one for rpm lock warning fix, and another for use-after-free fix for partial ggtt list destroy. " Next week, Thursday is a national holiday in Finland, so I'll send the PR by Wed if there is something urgent surfacing, but doesn't look like that for now. Regards, Joonas *** drm-intel-fixes-2018-11-28: Just gvt-fixes-2018-11-26 The following changes since commit 2e6e902d185027f8e3cb8b7305238f7e35d6a436: Linux 4.20-rc4 (2018-11-25 14:19:31 -0800) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-intel tags/drm-intel-fixes-2018-11-28 for you to fetch changes up to 2455facbb700e3c3ca26b9255956d6ed45cb6217: Merge tag 'gvt-fixes-2018-11-26' of https://github.com/intel/gvt-linux into drm-intel-fixes (2018-11-26 11:19:48 +0200) Just gvt-fixes-2018-11-26 Chris Wilson (1): drm/i915/gvt: Avoid use-after-free iterating the gtt list Hang Yuan (1): drm/i915/gvt: ensure gpu is powered before do i915_gem_gtt_insert Joonas Lahtinen (1): Merge tag 'gvt-fixes-2018-11-26' of https://github.com/intel/gvt-linux into drm-intel-fixes Xinyun Liu (1): drm/i915/gvt: not to touch undefined MOCS registers drivers/gpu/drm/i915/gvt/aperture_gm.c | 2 ++ drivers/gpu/drm/i915/gvt/gtt.c | 7 --- drivers/gpu/drm/i915/gvt/mmio_context.c | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for drm: Fix up drm_atomic_state_helper.[hc] extraction
== Series Details == Series: drm: Fix up drm_atomic_state_helper.[hc] extraction URL : https://patchwork.freedesktop.org/series/53148/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5213_full -> Patchwork_10925_full Summary --- **FAILURE** Serious unknown changes coming with Patchwork_10925_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10925_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues --- Here are the unknown changes that may have been introduced in Patchwork_10925_full: ### IGT changes ### Possible regressions * igt@gem_userptr_blits@readonly-unsync: - shard-glk: PASS -> TIMEOUT Known issues Here are the changes found in Patchwork_10925_full that come from known issues: ### IGT changes ### Issues hit * igt@gem_eio@in-flight-1us: - shard-glk: PASS -> INCOMPLETE [fdo#103359] / [k.org#198133] * igt@gem_exec_schedule@pi-ringfull-blt: - shard-skl: NOTRUN -> FAIL [fdo#103158] * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-skl: NOTRUN -> INCOMPLETE [fdo#106887] * igt@i915_suspend@shrink: - shard-skl: NOTRUN -> DMESG-WARN [fdo#108784] * igt@kms_available_modes_crc@available_mode_test_crc: - {shard-iclb}: NOTRUN -> FAIL [fdo#106641] * igt@kms_busy@extended-modeset-hang-newfb-render-a: - shard-skl: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_busy@extended-modeset-hang-newfb-render-b: - shard-snb: NOTRUN -> DMESG-WARN [fdo#107956] - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107956] * igt@kms_ccs@pipe-c-crc-primary-basic: - {shard-iclb}: NOTRUN -> FAIL [fdo#107725] * igt@kms_color@pipe-a-gamma: - shard-skl: NOTRUN -> FAIL [fdo#104782] * igt@kms_cursor_crc@cursor-128x128-offscreen: - shard-glk: PASS -> DMESG-WARN [fdo#105763] / [fdo#106538] +2 * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: PASS -> FAIL [fdo#103232] +4 * igt@kms_cursor_crc@cursor-256x256-offscreen: - shard-skl: PASS -> FAIL [fdo#103232] +1 * igt@kms_cursor_crc@cursor-256x85-onscreen: - shard-glk: PASS -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-dpms: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_cursor_crc@cursor-64x64-onscreen: - shard-snb: NOTRUN -> INCOMPLETE [fdo#105411] * igt@kms_cursor_crc@cursor-64x64-suspend: - shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232] * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: PASS -> FAIL [fdo#104873] * igt@kms_flip@busy-flip-interruptible: - shard-skl: PASS -> FAIL [fdo#103257] * igt@kms_flip_tiling@flip-to-y-tiled: - shard-skl: PASS -> FAIL [fdo#107931] - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite: - {shard-iclb}: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff: - shard-glk: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary: - shard-skl: NOTRUN -> FAIL [fdo#105682] +2 * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render: - shard-skl: NOTRUN -> FAIL [fdo#103167] +3 * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c: - shard-skl: PASS -> FAIL [fdo#103191] / [fdo#107362] * igt@kms_plane@pixel-format-pipe-c-planes: - shard-skl: NOTRUN -> DMESG-WARN [fdo#106885] * igt@kms_plane@plane-position-covered-pipe-b-planes: - shard-glk: PASS -> FAIL [fdo#103166] * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] * igt@kms_plane_multiple@atomic-pipe-a-tiling-y: - shard-apl: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-b-tiling-x: - {shard-iclb}: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-c-tiling-yf: - shard-kbl: NOTRUN -> FAIL [fdo#103166] - shard-skl: NOTRUN -> FAIL [fdo#103166] / [fdo#107815] * igt@kms_plane_scaling@pipe-c-scaler-with-rotation: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] * igt@kms_rotation_crc@primary-rotation-180: - shard-snb: NOTRUN -> FAIL [fdo#103925] *
Re: [Intel-gfx] [PATCH v2 2/7] drm/i915: Rename IS_GEN to GT_RANGE
On Wed, Nov 28, 2018 at 10:02:22AM +0200, Jani Nikula wrote: > On Tue, 06 Nov 2018, Lucas De Marchi wrote: > > From: Rodrigo Vivi > > > > RANGE makes it longer, but clear. We are also going to add a check for > > the display part, so make rename to GT. > > I also still have my doubts about this patch I'm afraid. I've expressed > the concern before, but here goes again. > > How much is the split of gen to GT gen and display gen going to help us > in the long run? The only current platform that would benefit from this > is GLK. However, not all IS_GEMINILAKE() can be replaced with > IS_DISPLAY_GEN() >= 10 or similar. We also have VLV/CHV display that is > better represented by HAS_GMCH_DISPLAY() and AFAICT can't usefully be > replaced by a display gen check. > > My main fear is that the split adds a lot of confusion. (Where should I > use GT gen, where should I use display gen, patches to change between > one and the other. It's not 100% clear cut.) > > Here too I wonder if we're better off adding more has_feature flags that > describe what gt or display features a platform has. It will never be a clear cut. Adding more flags make perfect sense when there is such a feature to check for. Sometimes registers just change location based on what is the display gen. Having the display gen serves to group small differences together into a "single flag" if you will. And today what we do is to actually check for gen rather than display gen. Or a mix of platform names. Lucas De Marchi ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2 0/7] Make GEN macros more similar
On Tue, Nov 27, 2018 at 04:19:23PM -0800, Rodrigo Vivi wrote: > > Then on the question of IS_ prefix or not, I don't feel very strongly about > > it. IS_ has a nice parallel with HAS_ and IS_platform, but I agree it > > doesn't look the prettiest (IS_GT_GEN). So don't know, whatever the vote > > ends up being. > > okay, the HAS_ parallel is a good point... > > but still in that case my brain prefers > > if HAS_FEATURE > than > if FEATURE > > because "FEATURE what?" Like if feature was more "transitive" requiring > something else. > > while for "is" my brain prefers > > if PLATFORM > than > if IS_PLATFORM > > because here it seems more "intransitive"... > like... self contained meaning where "is" can be implicit. for me both IS_PLATFORM and PLATFORM make sense. IS_ prefix is used in several other places for things like that. I just don't like the outcome of having it: gigantic horrendous macros like IS_GT_GEN_RANGE(). Lucas De Marchi ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 4/4] drm/edid: Add display_info.rgb_quant_range_selectable
Ville Syrjala writes: > From: Ville Syrjälä > > Move the CEA-861 QS bit handling entirely into the edid code. No > need to bother the drivers with this. > > Cc: Alex Deucher > Cc: "Christian König" > Cc: "David (ChunMing) Zhou" > Cc: amd-...@lists.freedesktop.org > Cc: Eric Anholt (supporter:DRM DRIVERS FOR VC4) > Signed-off-by: Ville Syrjälä For vc4, Acked-by: Eric Anholt Looks like a nice cleanup! signature.asc Description: PGP signature ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx