Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'drm-misc-next-2024-08-09' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next

drm-misc-next for v6.12:

UAPI Changes:

- remove Power Saving Policy property

Core Changes:

- update connector documentation

CI:
- add tests for mediatek, meson, rockchip

Driver Changes:

amdgpu:
- revert support for Power Saving Policy property

bridge:
- lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR

mgag200:
- transparently support BMC outputs

omapdrm:
- use common helper for_each_endpoint_of_node()

panel:
- panel-edp: fix name for HKC MB116AN01

vkms:
- clean up endianess warnings

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240809071241.GA222501@localhost.localdomain

+635 -526
+2
MAINTAINERS
··· 1761 1761 S: Supported 1762 1762 T: git https://gitlab.freedesktop.org/drm/misc/kernel.git 1763 1763 F: Documentation/gpu/panfrost.rst 1764 + F: drivers/gpu/drm/ci/xfails/panfrost* 1764 1765 F: drivers/gpu/drm/panfrost/ 1765 1766 F: include/uapi/drm/panfrost_drm.h 1766 1767 ··· 10972 10971 F: Documentation/devicetree/bindings/gpu/img,powervr-rogue.yaml 10973 10972 F: Documentation/devicetree/bindings/gpu/img,powervr-sgx.yaml 10974 10973 F: Documentation/gpu/imagination/ 10974 + F: drivers/gpu/drm/ci/xfails/powervr* 10975 10975 F: drivers/gpu/drm/imagination/ 10976 10976 F: include/uapi/drm/pvr_drm.h 10977 10977
-4
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
··· 1407 1407 "dither", 1408 1408 amdgpu_dither_enum_list, sz); 1409 1409 1410 - if (adev->dc_enabled) 1411 - drm_mode_create_power_saving_policy_property(adev_to_drm(adev), 1412 - DRM_MODE_POWER_SAVING_POLICY_ALL); 1413 - 1414 1410 return 0; 1415 1411 } 1416 1412
+5 -47
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
··· 6725 6725 } else if (property == adev->mode_info.underscan_property) { 6726 6726 dm_new_state->underscan_enable = val; 6727 6727 ret = 0; 6728 - } else if (property == dev->mode_config.power_saving_policy) { 6729 - dm_new_state->abm_forbidden = val & DRM_MODE_REQUIRE_COLOR_ACCURACY; 6730 - dm_new_state->abm_level = (dm_new_state->abm_forbidden || 6731 - !dm_old_state->abm_level) ? 6732 - ABM_LEVEL_IMMEDIATE_DISABLE : 6733 - dm_old_state->abm_level; 6734 - dm_new_state->psr_forbidden = val & DRM_MODE_REQUIRE_LOW_LATENCY; 6735 - ret = 0; 6736 6728 } 6737 6729 6738 6730 return ret; ··· 6767 6775 } else if (property == adev->mode_info.underscan_property) { 6768 6776 *val = dm_state->underscan_enable; 6769 6777 ret = 0; 6770 - } else if (property == dev->mode_config.power_saving_policy) { 6771 - *val = 0; 6772 - if (dm_state->psr_forbidden) 6773 - *val |= DRM_MODE_REQUIRE_LOW_LATENCY; 6774 - if (dm_state->abm_forbidden) 6775 - *val |= DRM_MODE_REQUIRE_COLOR_ACCURACY; 6776 - ret = 0; 6777 6778 } 6778 6779 6779 6780 return ret; ··· 6793 6808 u8 val; 6794 6809 6795 6810 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); 6796 - if (to_dm_connector_state(connector->state)->abm_forbidden) 6797 - val = 0; 6798 - else 6799 - val = to_dm_connector_state(connector->state)->abm_level == 6800 - ABM_LEVEL_IMMEDIATE_DISABLE ? 0 : 6801 - to_dm_connector_state(connector->state)->abm_level; 6811 + val = to_dm_connector_state(connector->state)->abm_level == 6812 + ABM_LEVEL_IMMEDIATE_DISABLE ? 0 : 6813 + to_dm_connector_state(connector->state)->abm_level; 6802 6814 drm_modeset_unlock(&dev->mode_config.connection_mutex); 6803 6815 6804 6816 return sysfs_emit(buf, "%u\n", val); ··· 6819 6837 return -EINVAL; 6820 6838 6821 6839 drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); 6822 - if (to_dm_connector_state(connector->state)->abm_forbidden) 6823 - ret = -EBUSY; 6824 - else 6825 - to_dm_connector_state(connector->state)->abm_level = val ?: 6826 - ABM_LEVEL_IMMEDIATE_DISABLE; 6840 + to_dm_connector_state(connector->state)->abm_level = val ?: 6841 + ABM_LEVEL_IMMEDIATE_DISABLE; 6827 6842 drm_modeset_unlock(&dev->mode_config.connection_mutex); 6828 - 6829 - if (ret) 6830 - return ret; 6831 6843 6832 6844 drm_kms_helper_hotplug_event(dev); 6833 6845 ··· 8015 8039 8016 8040 aconnector->base.state->max_bpc = 16; 8017 8041 aconnector->base.state->max_requested_bpc = aconnector->base.state->max_bpc; 8018 - 8019 - if (connector_type == DRM_MODE_CONNECTOR_eDP && 8020 - (dc_is_dmcu_initialized(adev->dm.dc) || 8021 - adev->dm.dc->ctx->dmub_srv)) { 8022 - drm_object_attach_property(&aconnector->base.base, 8023 - dm->ddev->mode_config.power_saving_policy, 8024 - 0); 8025 - } 8026 8042 8027 8043 if (connector_type == DRM_MODE_CONNECTOR_HDMIA) { 8028 8044 /* Content Type is currently only implemented for HDMI. */ ··· 9716 9748 for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) { 9717 9749 struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state); 9718 9750 struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state); 9719 - struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); 9720 9751 struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc); 9721 9752 struct dc_surface_update *dummy_updates; 9722 9753 struct dc_stream_update stream_update; ··· 9767 9800 if (hdr_changed) { 9768 9801 fill_hdr_info_packet(new_con_state, &hdr_packet); 9769 9802 stream_update.hdr_static_metadata = &hdr_packet; 9770 - } 9771 - 9772 - aconnector->disallow_edp_enter_psr = dm_new_con_state->psr_forbidden; 9773 - 9774 - /* immediately disable PSR if disallowed */ 9775 - if (aconnector->disallow_edp_enter_psr) { 9776 - mutex_lock(&dm->dc_lock); 9777 - amdgpu_dm_psr_disable(dm_new_crtc_state->stream); 9778 - mutex_unlock(&dm->dc_lock); 9779 9803 } 9780 9804 9781 9805 status = dc_stream_get_status(dm_new_crtc_state->stream);
-2
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
··· 915 915 bool underscan_enable; 916 916 bool freesync_capable; 917 917 bool update_hdcp; 918 - bool abm_forbidden; 919 - bool psr_forbidden; 920 918 uint8_t abm_level; 921 919 int vcpi_slots; 922 920 uint64_t pbn;
+12 -91
drivers/gpu/drm/bridge/lontium-lt9611uxc.c
··· 23 23 #include <drm/drm_bridge.h> 24 24 #include <drm/drm_edid.h> 25 25 #include <drm/drm_mipi_dsi.h> 26 + #include <drm/drm_of.h> 26 27 #include <drm/drm_print.h> 27 28 #include <drm/drm_probe_helper.h> 28 29 ··· 35 34 struct lt9611uxc { 36 35 struct device *dev; 37 36 struct drm_bridge bridge; 38 - struct drm_connector connector; 37 + struct drm_bridge *next_bridge; 39 38 40 39 struct regmap *regmap; 41 40 /* Protects all accesses to registers by stopping the on-chip MCU */ ··· 121 120 return container_of(bridge, struct lt9611uxc, bridge); 122 121 } 123 122 124 - static struct lt9611uxc *connector_to_lt9611uxc(struct drm_connector *connector) 125 - { 126 - return container_of(connector, struct lt9611uxc, connector); 127 - } 128 - 129 123 static void lt9611uxc_lock(struct lt9611uxc *lt9611uxc) 130 124 { 131 125 mutex_lock(&lt9611uxc->ocm_lock); ··· 167 171 struct lt9611uxc *lt9611uxc = container_of(work, struct lt9611uxc, work); 168 172 bool connected; 169 173 170 - if (lt9611uxc->connector.dev) { 171 - if (lt9611uxc->connector.dev->mode_config.funcs) 172 - drm_kms_helper_hotplug_event(lt9611uxc->connector.dev); 173 - } else { 174 + mutex_lock(&lt9611uxc->ocm_lock); 175 + connected = lt9611uxc->hdmi_connected; 176 + mutex_unlock(&lt9611uxc->ocm_lock); 174 177 175 - mutex_lock(&lt9611uxc->ocm_lock); 176 - connected = lt9611uxc->hdmi_connected; 177 - mutex_unlock(&lt9611uxc->ocm_lock); 178 - 179 - drm_bridge_hpd_notify(&lt9611uxc->bridge, 180 - connected ? 181 - connector_status_connected : 182 - connector_status_disconnected); 183 - } 178 + drm_bridge_hpd_notify(&lt9611uxc->bridge, 179 + connected ? 180 + connector_status_connected : 181 + connector_status_disconnected); 184 182 } 185 183 186 184 static void lt9611uxc_reset(struct lt9611uxc *lt9611uxc) ··· 279 289 return dsi; 280 290 } 281 291 282 - static int lt9611uxc_connector_get_modes(struct drm_connector *connector) 283 - { 284 - struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector); 285 - const struct drm_edid *drm_edid; 286 - int count; 287 - 288 - drm_edid = drm_bridge_edid_read(&lt9611uxc->bridge, connector); 289 - drm_edid_connector_update(connector, drm_edid); 290 - count = drm_edid_connector_add_modes(connector); 291 - drm_edid_free(drm_edid); 292 - 293 - return count; 294 - } 295 - 296 - static enum drm_connector_status lt9611uxc_connector_detect(struct drm_connector *connector, 297 - bool force) 298 - { 299 - struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector); 300 - 301 - return lt9611uxc->bridge.funcs->detect(&lt9611uxc->bridge); 302 - } 303 - 304 - static enum drm_mode_status lt9611uxc_connector_mode_valid(struct drm_connector *connector, 305 - struct drm_display_mode *mode) 306 - { 307 - struct lt9611uxc_mode *lt9611uxc_mode = lt9611uxc_find_mode(mode); 308 - 309 - return lt9611uxc_mode ? MODE_OK : MODE_BAD; 310 - } 311 - 312 - static const struct drm_connector_helper_funcs lt9611uxc_bridge_connector_helper_funcs = { 313 - .get_modes = lt9611uxc_connector_get_modes, 314 - .mode_valid = lt9611uxc_connector_mode_valid, 315 - }; 316 - 317 - static const struct drm_connector_funcs lt9611uxc_bridge_connector_funcs = { 318 - .fill_modes = drm_helper_probe_single_connector_modes, 319 - .detect = lt9611uxc_connector_detect, 320 - .destroy = drm_connector_cleanup, 321 - .reset = drm_atomic_helper_connector_reset, 322 - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, 323 - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 324 - }; 325 - 326 - static int lt9611uxc_connector_init(struct drm_bridge *bridge, struct lt9611uxc *lt9611uxc) 327 - { 328 - int ret; 329 - 330 - lt9611uxc->connector.polled = DRM_CONNECTOR_POLL_HPD; 331 - 332 - drm_connector_helper_add(&lt9611uxc->connector, 333 - &lt9611uxc_bridge_connector_helper_funcs); 334 - ret = drm_connector_init(bridge->dev, &lt9611uxc->connector, 335 - &lt9611uxc_bridge_connector_funcs, 336 - DRM_MODE_CONNECTOR_HDMIA); 337 - if (ret) { 338 - DRM_ERROR("Failed to initialize connector with drm\n"); 339 - return ret; 340 - } 341 - 342 - return drm_connector_attach_encoder(&lt9611uxc->connector, bridge->encoder); 343 - } 344 - 345 292 static int lt9611uxc_bridge_attach(struct drm_bridge *bridge, 346 293 enum drm_bridge_attach_flags flags) 347 294 { 348 295 struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge); 349 - int ret; 350 296 351 - if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { 352 - ret = lt9611uxc_connector_init(bridge, lt9611uxc); 353 - if (ret < 0) 354 - return ret; 355 - } 356 - 357 - return 0; 297 + return drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge, 298 + bridge, flags); 358 299 } 359 300 360 301 static enum drm_mode_status ··· 446 525 447 526 lt9611uxc->dsi1_node = of_graph_get_remote_node(dev->of_node, 1, -1); 448 527 449 - return 0; 528 + return drm_of_find_panel_or_bridge(dev->of_node, 2, -1, NULL, &lt9611uxc->next_bridge); 450 529 } 451 530 452 531 static int lt9611uxc_gpio_init(struct lt9611uxc *lt9611uxc)
+1
drivers/gpu/drm/ci/arm64.config
··· 187 187 CONFIG_PWM_MTK_DISP=y 188 188 CONFIG_MTK_CMDQ=y 189 189 CONFIG_REGULATOR_DA9211=y 190 + CONFIG_DRM_ANALOGIX_ANX7625=y 190 191 191 192 # For nouveau. Note that DRM must be a module so that it's loaded after NFS is up to provide the firmware. 192 193 CONFIG_ARCH_TEGRA=y
+2 -1
drivers/gpu/drm/ci/gitlab-ci.yml
··· 121 121 - mediatek 122 122 - meson 123 123 - msm 124 + - panfrost 125 + - powervr 124 126 - rockchip 125 - - virtio-gpu 126 127 - software-driver 127 128 128 129 # YAML anchors for rule conditions
-10
drivers/gpu/drm/ci/igt_runner.sh
··· 20 20 set -e 21 21 22 22 case "$DRIVER_NAME" in 23 - rockchip|meson) 24 - export IGT_FORCE_DRIVER="panfrost" 25 - ;; 26 - mediatek) 27 - if [ "$GPU_VERSION" = "mt8173" ]; then 28 - export IGT_FORCE_DRIVER=${DRIVER_NAME} 29 - elif [ "$GPU_VERSION" = "mt8183" ]; then 30 - export IGT_FORCE_DRIVER="panfrost" 31 - fi 32 - ;; 33 23 amdgpu|vkms) 34 24 # Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib 35 25 mv /install/modules/lib/modules/* /lib/modules/. || true
+104 -29
drivers/gpu/drm/ci/test.yml
··· 160 160 script: 161 161 - ./install/bare-metal/cros-servo.sh 162 162 163 - rockchip:rk3288: 164 - extends: 165 - - .lava-igt:arm32 163 + .rockchip-device: 164 + variables: 165 + DTB: ${DEVICE_TYPE} 166 + BOOT_METHOD: depthcharge 167 + 168 + .rockchip-display: 166 169 stage: rockchip 167 170 variables: 168 171 DRIVER_NAME: rockchip 172 + 173 + .rk3288: 174 + extends: 175 + - .lava-igt:arm32 176 + - .rockchip-device 177 + variables: 169 178 DEVICE_TYPE: rk3288-veyron-jaq 170 - DTB: ${DEVICE_TYPE} 171 - BOOT_METHOD: depthcharge 172 - KERNEL_IMAGE_TYPE: "zimage" 173 179 GPU_VERSION: rk3288 180 + KERNEL_IMAGE_TYPE: "zimage" 174 181 RUNNER_TAG: mesa-ci-x86-64-lava-rk3288-veyron-jaq 182 + 183 + .rk3399: 184 + extends: 185 + - .lava-igt:arm64 186 + - .rockchip-device 187 + parallel: 2 188 + variables: 189 + DEVICE_TYPE: rk3399-gru-kevin 190 + GPU_VERSION: rk3399 191 + KERNEL_IMAGE_TYPE: "" 192 + RUNNER_TAG: mesa-ci-x86-64-lava-rk3399-gru-kevin 193 + 194 + rockchip:rk3288: 195 + extends: 196 + - .rk3288 197 + - .rockchip-display 198 + 199 + panfrost:rk3288: 200 + extends: 201 + - .rk3288 202 + - .panfrost-gpu 175 203 176 204 rockchip:rk3399: 177 205 extends: 178 - - .lava-igt:arm64 179 - stage: rockchip 180 - parallel: 2 181 - variables: 182 - DRIVER_NAME: rockchip 183 - DEVICE_TYPE: rk3399-gru-kevin 184 - DTB: ${DEVICE_TYPE} 185 - BOOT_METHOD: depthcharge 186 - KERNEL_IMAGE_TYPE: "" 187 - GPU_VERSION: rk3399 188 - RUNNER_TAG: mesa-ci-x86-64-lava-rk3399-gru-kevin 206 + - .rk3399 207 + - .rockchip-display 208 + 209 + panfrost:rk3399: 210 + extends: 211 + - .rk3399 212 + - .panfrost-gpu 189 213 190 214 .i915: 191 215 extends: ··· 304 280 GPU_VERSION: stoney 305 281 RUNNER_TAG: mesa-ci-x86-64-lava-hp-11A-G6-EE-grunt 306 282 307 - .mediatek: 283 + .mediatek-device: 308 284 extends: 309 285 - .lava-igt:arm64 310 286 stage: mediatek 311 287 variables: 312 - DRIVER_NAME: mediatek 313 288 DTB: ${DEVICE_TYPE} 314 289 BOOT_METHOD: depthcharge 315 290 KERNEL_IMAGE_TYPE: "" 316 291 317 - mediatek:mt8173: 292 + .mediatek-display: 293 + stage: mediatek 294 + variables: 295 + DRIVER_NAME: mediatek 296 + 297 + .powervr-gpu: 298 + stage: powervr 299 + variables: 300 + DRIVER_NAME: powervr 301 + 302 + .panfrost-gpu: 303 + stage: panfrost 304 + variables: 305 + DRIVER_NAME: panfrost 306 + 307 + .mt8173: 318 308 extends: 319 - - .mediatek 309 + - .mediatek-device 320 310 parallel: 4 321 311 variables: 322 312 DEVICE_TYPE: mt8173-elm-hana 323 313 GPU_VERSION: mt8173 324 314 RUNNER_TAG: mesa-ci-x86-64-lava-mt8173-elm-hana 325 315 326 - mediatek:mt8183: 316 + .mt8183: 327 317 extends: 328 - - .mediatek 318 + - .mediatek-device 329 319 parallel: 3 330 320 variables: 331 321 DEVICE_TYPE: mt8183-kukui-jacuzzi-juniper-sku16 332 322 GPU_VERSION: mt8183 333 323 RUNNER_TAG: mesa-ci-x86-64-lava-mt8183-kukui-jacuzzi-juniper-sku16 334 324 325 + mediatek:mt8173: 326 + extends: 327 + - .mt8173 328 + - .mediatek-display 329 + 330 + powervr:mt8173: 331 + extends: 332 + - .mt8173 333 + - .powervr-gpu 334 + rules: 335 + # TODO: powervr driver was merged in linux kernel, but there's no mediatek support yet 336 + # Remove the rule once mediatek support is added for powervr 337 + - when: never 338 + 339 + mediatek:mt8183: 340 + extends: 341 + - .mt8183 342 + - .mediatek-display 343 + 344 + panfrost:mt8183: 345 + extends: 346 + - .mt8183 347 + - .panfrost-gpu 348 + 335 349 # drm-mtk doesn't even probe yet in mainline for mt8192 336 350 .mediatek:mt8192: 337 351 extends: 338 - - .mediatek 352 + - .mediatek-device 339 353 parallel: 3 340 354 variables: 341 355 DEVICE_TYPE: mt8192-asurada-spherion-r0 342 356 GPU_VERSION: mt8192 343 357 RUNNER_TAG: mesa-ci-x86-64-lava-mt8192-asurada-spherion-r0 344 358 345 - .meson: 359 + .meson-device: 346 360 extends: 347 361 - .lava-igt:arm64 348 - stage: meson 349 362 variables: 350 - DRIVER_NAME: meson 351 363 DTB: ${DEVICE_TYPE} 352 364 BOOT_METHOD: u-boot 353 365 KERNEL_IMAGE_TYPE: "image" 354 366 355 - meson:g12b: 367 + .meson-display: 368 + stage: meson 369 + variables: 370 + DRIVER_NAME: meson 371 + 372 + .g12b: 356 373 extends: 357 - - .meson 374 + - .meson-device 358 375 parallel: 3 359 376 variables: 360 377 DEVICE_TYPE: meson-g12b-a311d-khadas-vim3 361 378 GPU_VERSION: g12b 362 379 RUNNER_TAG: mesa-ci-x86-64-lava-meson-g12b-a311d-khadas-vim3 380 + 381 + meson:g12b: 382 + extends: 383 + - .g12b 384 + - .meson-display 385 + 386 + panfrost:g12b: 387 + extends: 388 + - .g12b 389 + - .panfrost-gpu 363 390 364 391 virtio_gpu:none: 365 392 stage: software-driver
-1
drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
··· 38 38 kms_plane_cursor@primary,Fail 39 39 kms_rotation_crc@primary-rotation-180,Fail 40 40 perf@i915-ref-count,Fail 41 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
··· 13 13 gem_.* 14 14 i915_.* 15 15 xe_.* 16 + tools_test.* 16 17 17 18 # Currently fails and causes coverage loss for other tests 18 19 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
··· 34 34 kms_properties@plane-properties-atomic,Fail 35 35 kms_properties@plane-properties-legacy,Fail 36 36 kms_rmfb@close-fd,Fail 37 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt
··· 10 10 # Skip intel specific tests 11 11 gem_.* 12 12 i915_.* 13 + tools_test.* 13 14 14 15 # Currently fails and causes coverage loss for other tests 15 16 # since core_getversion also fails.
+21 -7
drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
··· 1 - dumb_buffer@create-clear,Fail 2 - dumb_buffer@create-valid-dumb,Fail 1 + core_setmaster@master-drop-set-shared-fd,Fail 2 + device_reset@cold-reset-bound,Fail 3 + device_reset@reset-bound,Fail 4 + device_reset@unbind-cold-reset-rebind,Fail 5 + device_reset@unbind-reset-rebind,Fail 6 + dumb_buffer@create-clear,Crash 3 7 dumb_buffer@invalid-bpp,Fail 4 - dumb_buffer@map-invalid-size,Fail 5 - dumb_buffer@map-uaf,Fail 6 - dumb_buffer@map-valid,Fail 7 - panfrost/panfrost_prime@gem-prime-import,Fail 8 - tools_test@tools_test,Fail 8 + fbdev@eof,Fail 9 + fbdev@pan,Fail 10 + fbdev@read,Fail 11 + fbdev@unaligned-read,Fail 12 + kms_bw@connected-linear-tiling-1-displays-1920x1080p,Fail 13 + kms_bw@connected-linear-tiling-1-displays-2160x1440p,Fail 14 + kms_bw@connected-linear-tiling-1-displays-2560x1440p,Fail 15 + kms_bw@linear-tiling-1-displays-1920x1080p,Fail 16 + kms_bw@linear-tiling-1-displays-3840x2160p,Fail 17 + kms_color@invalid-gamma-lut-sizes,Fail 18 + kms_flip@flip-vs-panning-vs-hang,Fail 19 + kms_flip@flip-vs-suspend,Fail 20 + kms_lease@lease-uevent,Fail 21 + kms_properties@plane-properties-atomic,Fail 22 + kms_rmfb@close-fd,Fail
+20
drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
··· 1 + # Board Name: mt8183-kukui-jacuzzi-juniper-sku16 2 + # Bug Report: https://lore.kernel.org/linux-mediatek/0b2a1899-15dd-42fa-8f63-ea0ca28dbb17@collabora.com/T/#u 3 + # Failure Rate: 100 4 + # IGT Version: 1.28-gf13702b8e 5 + # Linux Version: 6.10.0-rc5 6 + kms_bw@linear-tiling-1-displays-2560x1440p 7 + 8 + # Board Name: mt8183-kukui-jacuzzi-juniper-sku16 9 + # Bug Report: https://lore.kernel.org/linux-mediatek/0b2a1899-15dd-42fa-8f63-ea0ca28dbb17@collabora.com/T/#u 10 + # Failure Rate: 100 11 + # IGT Version: 1.28-gf13702b8e 12 + # Linux Version: 6.10.0-rc5 13 + kms_cursor_legacy@cursor-vs-flip-atomic-transitions 14 + 15 + # Board Name: mt8183-kukui-jacuzzi-juniper-sku16 16 + # Bug Report: https://lore.kernel.org/linux-mediatek/0b2a1899-15dd-42fa-8f63-ea0ca28dbb17@collabora.com/T/#u 17 + # Failure Rate: 100 18 + # IGT Version: 1.28-gf13702b8e 19 + # Linux Version: 6.10.0-rc5 20 + fbdev@write
+2 -3
drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt
··· 2 2 ^amdgpu.* 3 3 ^msm.* 4 4 nouveau_.* 5 + ^panfrost.* 5 6 ^v3d.* 6 7 ^vc4.* 7 8 ^vmwgfx* ··· 10 9 # Skip intel specific tests 11 10 gem_.* 12 11 i915_.* 13 - 14 - # Panfrost is not a KMS driver, so skip the KMS tests 15 - kms_.* 12 + tools_test.* 16 13 17 14 # Currently fails and causes coverage loss for other tests 18 15 # since core_getversion also fails.
+12 -7
drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
··· 1 - dumb_buffer@create-clear,Fail 2 - dumb_buffer@create-valid-dumb,Fail 3 1 dumb_buffer@invalid-bpp,Fail 4 - dumb_buffer@map-invalid-size,Fail 5 - dumb_buffer@map-uaf,Fail 6 - dumb_buffer@map-valid,Fail 7 - panfrost/panfrost_prime@gem-prime-import,Fail 8 - tools_test@tools_test,Fail 2 + kms_3d,Fail 3 + kms_cursor_legacy@forked-bo,Fail 4 + kms_cursor_legacy@forked-move,Fail 5 + kms_cursor_legacy@single-bo,Fail 6 + kms_cursor_legacy@single-move,Fail 7 + kms_cursor_legacy@torture-bo,Fail 8 + kms_cursor_legacy@torture-move,Fail 9 + kms_lease@lease-uevent,Fail 10 + kms_properties@connector-properties-atomic,Fail 11 + kms_properties@connector-properties-legacy,Fail 12 + kms_properties@get_properties-sanity-atomic,Fail 13 + kms_properties@get_properties-sanity-non-atomic,Fail
+2 -3
drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt
··· 2 2 ^amdgpu.* 3 3 ^msm.* 4 4 nouveau_.* 5 + ^panfrost.* 5 6 ^v3d.* 6 7 ^vc4.* 7 8 ^vmwgfx* ··· 10 9 # Skip intel specific tests 11 10 gem_.* 12 11 i915_.* 13 - 14 - # Panfrost is not a KMS driver, so skip the KMS tests 15 - kms_.* 12 + tools_test.* 16 13 17 14 # Currently fails and causes coverage loss for other tests 18 15 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
··· 9 9 kms_hdmi_inject@inject-4k,Fail 10 10 kms_lease@lease-uevent,Fail 11 11 msm/msm_mapping@ring,Fail 12 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt
··· 9 9 # Skip intel specific tests 10 10 gem_.* 11 11 i915_.* 12 + tools_test.* 12 13 13 14 # Currently fails and causes coverage loss for other tests 14 15 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
··· 5 5 dumb_buffer@invalid-bpp,Fail 6 6 kms_3d,Fail 7 7 kms_lease@lease-uevent,Fail 8 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
··· 12 12 # Skip intel specific tests 13 13 gem_.* 14 14 i915_.* 15 + tools_test.* 15 16 16 17 # Currently fails and causes coverage loss for other tests 17 18 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt
··· 43 43 kms_plane_lowres@tiling-none,Fail 44 44 kms_rmfb@close-fd,Fail 45 45 kms_vblank@ts-continuation-dpms-rpm,Fail 46 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt
··· 12 12 # Skip intel specific tests 13 13 gem_.* 14 14 i915_.* 15 + tools_test.* 15 16 16 17 # Currently fails and causes coverage loss for other tests 17 18 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt
··· 43 43 kms_plane_lowres@tiling-none,Fail 44 44 kms_rmfb@close-fd,Fail 45 45 kms_vblank@ts-continuation-dpms-rpm,Fail 46 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt
··· 12 12 # Skip intel specific tests 13 13 gem_.* 14 14 i915_.* 15 + tools_test.* 15 16 16 17 # Currently fails and causes coverage loss for other tests 17 18 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
··· 33 33 kms_plane_cursor@overlay,Fail 34 34 kms_plane_cursor@viewport,Fail 35 35 kms_rmfb@close-fd,Fail 36 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
··· 17 17 # Skip intel specific tests 18 18 gem_.* 19 19 i915_.* 20 + tools_test.* 20 21 21 22 # Currently fails and causes coverage loss for other tests 22 23 # since core_getversion also fails.
+1
drivers/gpu/drm/ci/xfails/panfrost-g12b-fails.txt
··· 1 + panfrost/panfrost_prime@gem-prime-import,Fail
+23
drivers/gpu/drm/ci/xfails/panfrost-g12b-skips.txt
··· 1 + # Skip driver specific tests 2 + ^amdgpu.* 3 + ^msm.* 4 + nouveau_.* 5 + ^v3d.* 6 + ^vc4.* 7 + ^vmwgfx* 8 + 9 + # Skip intel specific tests 10 + gem_.* 11 + i915_.* 12 + tools_test.* 13 + 14 + # Panfrost is not a KMS driver, so skip the KMS tests 15 + kms_.* 16 + 17 + # Skip display functionality tests for GPU-only drivers 18 + dumb_buffer.* 19 + fbdev.* 20 + 21 + # Currently fails and causes coverage loss for other tests 22 + # since core_getversion also fails. 23 + core_hotunplug.*
+1
drivers/gpu/drm/ci/xfails/panfrost-mt8183-fails.txt
··· 1 + panfrost/panfrost_prime@gem-prime-import,Fail
+23
drivers/gpu/drm/ci/xfails/panfrost-mt8183-skips.txt
··· 1 + # Skip driver specific tests 2 + ^amdgpu.* 3 + ^msm.* 4 + nouveau_.* 5 + ^v3d.* 6 + ^vc4.* 7 + ^vmwgfx* 8 + 9 + # Skip intel specific tests 10 + gem_.* 11 + i915_.* 12 + tools_test.* 13 + 14 + # Panfrost is not a KMS driver, so skip the KMS tests 15 + kms_.* 16 + 17 + # Skip display functionality tests for GPU-only drivers 18 + dumb_buffer.* 19 + fbdev.* 20 + 21 + # Currently fails and causes coverage loss for other tests 22 + # since core_getversion also fails. 23 + core_hotunplug.*
+1
drivers/gpu/drm/ci/xfails/panfrost-rk3288-fails.txt
··· 1 + panfrost/panfrost_prime@gem-prime-import,Crash
+26
drivers/gpu/drm/ci/xfails/panfrost-rk3288-skips.txt
··· 1 + # Suspend to RAM seems to be broken on this machine 2 + .*suspend.* 3 + 4 + # Skip driver specific tests 5 + ^amdgpu.* 6 + ^msm.* 7 + nouveau_.* 8 + ^v3d.* 9 + ^vc4.* 10 + ^vmwgfx* 11 + 12 + # Skip intel specific tests 13 + gem_.* 14 + i915_.* 15 + tools_test.* 16 + 17 + # Panfrost is not a KMS driver, so skip the KMS tests 18 + kms_.* 19 + 20 + # Skip display functionality tests for GPU-only drivers 21 + dumb_buffer.* 22 + fbdev.* 23 + 24 + # Currently fails and causes coverage loss for other tests 25 + # since core_getversion also fails. 26 + core_hotunplug.*
+1
drivers/gpu/drm/ci/xfails/panfrost-rk3399-fails.txt
··· 1 + panfrost/panfrost_prime@gem-prime-import,Fail
+6
drivers/gpu/drm/ci/xfails/panfrost-rk3399-flakes.txt
··· 1 + # Board Name: rk3399-gru-kevin 2 + # Bug Report: https://lore.kernel.org/dri-devel/5cc34a8b-c1fa-4744-9031-2d33ecf41011@collabora.com/T/#u 3 + # Failure Rate: 50 4 + # IGT Version: 1.28-g0df7b9b97 5 + # Linux Version: 6.9.0-rc7 6 + panfrost/panfrost_submit@pan-unhandled-pagefault
+26
drivers/gpu/drm/ci/xfails/panfrost-rk3399-skips.txt
··· 1 + # Suspend to RAM seems to be broken on this machine 2 + .*suspend.* 3 + 4 + # Skip driver specific tests 5 + ^amdgpu.* 6 + ^msm.* 7 + nouveau_.* 8 + ^v3d.* 9 + ^vc4.* 10 + ^vmwgfx* 11 + 12 + # Skip intel specific tests 13 + gem_.* 14 + i915_.* 15 + tools_test.* 16 + 17 + # Panfrost is not a KMS driver, so skip the KMS tests 18 + kms_.* 19 + 20 + # Skip display functionality tests for GPU-only drivers 21 + dumb_buffer.* 22 + fbdev.* 23 + 24 + # Currently fails and causes coverage loss for other tests 25 + # since core_getversion also fails. 26 + core_hotunplug.*
+16 -6
drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
··· 1 + core_setmaster@master-drop-set-root,Crash 2 + core_setmaster@master-drop-set-user,Crash 3 + core_setmaster_vs_auth,Crash 4 + device_reset@cold-reset-bound,Crash 5 + device_reset@reset-bound,Crash 6 + device_reset@unbind-cold-reset-rebind,Crash 7 + device_reset@unbind-reset-rebind,Crash 1 8 dumb_buffer@create-clear,Crash 2 - dumb_buffer@create-valid-dumb,Crash 3 9 dumb_buffer@invalid-bpp,Crash 4 - dumb_buffer@map-invalid-size,Crash 5 - dumb_buffer@map-uaf,Crash 6 - dumb_buffer@map-valid,Crash 7 - panfrost/panfrost_prime@gem-prime-import,Crash 8 - tools_test@tools_test,Crash 10 + fbdev@pan,Crash 11 + kms_cursor_crc@cursor-onscreen-32x10,Crash 12 + kms_cursor_crc@cursor-onscreen-32x32,Crash 13 + kms_cursor_crc@cursor-random-32x10,Crash 14 + kms_cursor_crc@cursor-sliding-32x32,Crash 15 + kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail 16 + kms_cursor_legacy@cursor-vs-flip-legacy,Fail 17 + kms_prop_blob@invalid-set-prop,Crash 18 + kms_prop_blob@invalid-set-prop-any,Crash
+6
drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
··· 1 + # Board Name: rk3288-veyron-jaq 2 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 3 + # Failure Rate: 100 4 + # IGT Version: 1.28-gf13702b8e 5 + # Linux Version: 6.10.0-rc5 6 + kms_cursor_legacy@flip-vs-cursor-atomic
+2 -53
drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
··· 1 1 # Suspend to RAM seems to be broken on this machine 2 2 .*suspend.* 3 3 4 - # Too unstable, machine ends up hanging after lots of Oopses 5 - kms_cursor_legacy.* 6 - 7 - # Started hanging the machine on Linux 5.19-rc2: 8 - # 9 - # [IGT] kms_plane_lowres: executing 10 - # [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y 11 - # [IGT] kms_plane_lowres: exiting, ret=77 12 - # Console: switching to colour frame buffer device 170x48 13 - # rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out 14 - # rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out 15 - # BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482 16 - # 8<--- cut here --- 17 - # Unable to handle kernel paging request at virtual address 7812078e 18 - # [7812078e] *pgd=00000000 19 - # Internal error: Oops: 5 [#1] SMP ARM 20 - # Modules linked in: 21 - # CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G W 5.19.0-rc2-323596-g00535de92171 #1 22 - # Hardware name: Rockchip (Device Tree) 23 - # Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b) 24 - # spin_dump from do_raw_spin_lock+0xa4/0xe8 25 - # do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120 26 - # wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c 27 - # drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168 28 - # drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180 29 - # commit_tail from drm_atomic_helper_commit+0x164/0x18c 30 - # drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4 31 - # drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284 32 - # drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8 33 - # drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40 34 - # drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94 35 - # drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc 36 - # drm_client_dev_restore from drm_release+0xf4/0x114 37 - # drm_release from __fput+0x74/0x240 38 - # __fput from task_work_run+0x84/0xb4 39 - # task_work_run from do_exit+0x34c/0xa20 40 - # do_exit from do_group_exit+0x34/0x98 41 - # do_group_exit from __wake_up_parent+0x0/0x18 42 - # Code: e595c008 12843d19 03e00000 03093168 (15940508) 43 - # ---[ end trace 0000000000000000 ]--- 44 - # note: kms_plane_lowre[482] exited with preempt_count 1 45 - # Fixing recursive fault but reboot is needed! 46 - kms_plane_lowres@pipe-F-tiling-y 47 - 48 - # Take too long, we have only two machines, and these are very flaky 49 - kms_cursor_crc.* 50 - 51 - # Machine is hanging in this test, so skip it 52 - kms_pipe_crc_basic@disable-crc-after-crtc 53 - 54 4 # Skip driver specific tests 55 5 ^amdgpu.* 56 6 ^msm.* 57 7 nouveau_.* 8 + ^panfrost.* 58 9 ^v3d.* 59 10 ^vc4.* 60 11 ^vmwgfx* ··· 13 62 # Skip intel specific tests 14 63 gem_.* 15 64 i915_.* 16 - 17 - # Panfrost is not a KMS driver, so skip the KMS tests 18 - kms_.* 65 + tools_test.* 19 66 20 67 # Currently fails and causes coverage loss for other tests 21 68 # since core_getversion also fails.
+83 -7
drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
··· 1 - dumb_buffer@create-clear,Fail 2 - dumb_buffer@create-valid-dumb,Fail 1 + device_reset@cold-reset-bound,Fail 2 + device_reset@reset-bound,Fail 3 + device_reset@unbind-cold-reset-rebind,Fail 4 + device_reset@unbind-reset-rebind,Fail 5 + dumb_buffer@create-clear,Crash 3 6 dumb_buffer@invalid-bpp,Fail 4 - dumb_buffer@map-invalid-size,Fail 5 - dumb_buffer@map-uaf,Fail 6 - dumb_buffer@map-valid,Fail 7 - panfrost/panfrost_prime@gem-prime-import,Fail 8 - tools_test@tools_test,Fail 7 + kms_atomic_transition@modeset-transition,Fail 8 + kms_atomic_transition@modeset-transition-fencing,Fail 9 + kms_atomic_transition@plane-toggle-modeset-transition,Fail 10 + kms_color@gamma,Fail 11 + kms_color@legacy-gamma,Fail 12 + kms_cursor_crc@cursor-alpha-opaque,Fail 13 + kms_cursor_crc@cursor-alpha-transparent,Fail 14 + kms_cursor_crc@cursor-dpms,Fail 15 + kms_cursor_crc@cursor-offscreen-32x10,Fail 16 + kms_cursor_crc@cursor-offscreen-32x32,Fail 17 + kms_cursor_crc@cursor-offscreen-64x21,Fail 18 + kms_cursor_crc@cursor-offscreen-64x64,Fail 19 + kms_cursor_crc@cursor-onscreen-32x10,Fail 20 + kms_cursor_crc@cursor-onscreen-32x32,Fail 21 + kms_cursor_crc@cursor-onscreen-64x21,Fail 22 + kms_cursor_crc@cursor-onscreen-64x64,Fail 23 + kms_cursor_crc@cursor-random-32x10,Fail 24 + kms_cursor_crc@cursor-random-32x32,Fail 25 + kms_cursor_crc@cursor-random-64x21,Fail 26 + kms_cursor_crc@cursor-random-64x64,Fail 27 + kms_cursor_crc@cursor-rapid-movement-32x10,Fail 28 + kms_cursor_crc@cursor-rapid-movement-32x32,Fail 29 + kms_cursor_crc@cursor-rapid-movement-64x21,Fail 30 + kms_cursor_crc@cursor-rapid-movement-64x64,Fail 31 + kms_cursor_crc@cursor-size-change,Fail 32 + kms_cursor_crc@cursor-sliding-32x10,Fail 33 + kms_cursor_crc@cursor-sliding-32x32,Fail 34 + kms_cursor_crc@cursor-sliding-64x21,Fail 35 + kms_cursor_crc@cursor-sliding-64x64,Fail 36 + kms_cursor_edge_walk@64x64-left-edge,Fail 37 + kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail 38 + kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail 39 + kms_cursor_legacy@cursor-vs-flip-atomic,Fail 40 + kms_cursor_legacy@cursor-vs-flip-legacy,Fail 41 + kms_cursor_legacy@cursor-vs-flip-toggle,Fail 42 + kms_cursor_legacy@flip-vs-cursor-atomic,Fail 43 + kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail 44 + kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail 45 + kms_cursor_legacy@flip-vs-cursor-legacy,Fail 46 + kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic,Fail 47 + kms_flip@basic-flip-vs-wf_vblank,Fail 48 + kms_flip@blocking-wf_vblank,Fail 49 + kms_flip@dpms-vs-vblank-race,Fail 50 + kms_flip@flip-vs-absolute-wf_vblank,Fail 51 + kms_flip@flip-vs-blocking-wf-vblank,Fail 52 + kms_flip@flip-vs-modeset-vs-hang,Fail 53 + kms_flip@flip-vs-panning,Fail 54 + kms_flip@flip-vs-panning-interruptible,Fail 55 + kms_flip@flip-vs-panning-vs-hang,Fail 56 + kms_flip@modeset-vs-vblank-race,Fail 57 + kms_flip@modeset-vs-vblank-race-interruptible,Fail 58 + kms_flip@plain-flip-fb-recreate,Fail 59 + kms_flip@plain-flip-fb-recreate-interruptible,Fail 60 + kms_flip@plain-flip-ts-check,Fail 61 + kms_flip@plain-flip-ts-check-interruptible,Fail 62 + kms_flip@wf_vblank-ts-check,Fail 63 + kms_flip@wf_vblank-ts-check-interruptible,Fail 64 + kms_invalid_mode@int-max-clock,Fail 65 + kms_lease@lease-uevent,Fail 66 + kms_lease@page-flip-implicit-plane,Fail 67 + kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail 68 + kms_pipe_crc_basic@compare-crc-sanitycheck-xr24,Fail 69 + kms_pipe_crc_basic@disable-crc-after-crtc,Fail 70 + kms_pipe_crc_basic@nonblocking-crc,Fail 71 + kms_pipe_crc_basic@nonblocking-crc-frame-sequence,Fail 72 + kms_pipe_crc_basic@read-crc,Fail 73 + kms_pipe_crc_basic@read-crc-frame-sequence,Fail 74 + kms_plane@pixel-format,Crash 75 + kms_plane@pixel-format-source-clamping,Crash 76 + kms_plane@plane-panning-bottom-right,Fail 77 + kms_plane@plane-panning-top-left,Fail 78 + kms_plane@plane-position-covered,Fail 79 + kms_plane@plane-position-hole,Fail 80 + kms_plane@plane-position-hole-dpms,Fail 81 + kms_plane_cursor@primary,Fail 82 + kms_plane_multiple@tiling-none,Fail 83 + kms_rmfb@close-fd,Fail 84 + kms_universal_plane@universal-plane-functional,Fail
+46 -4
drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
··· 1 1 # Board Name: rk3399-gru-kevin 2 - # Bug Report: https://lore.kernel.org/dri-devel/5cc34a8b-c1fa-4744-9031-2d33ecf41011@collabora.com/T/#u 2 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 3 3 # Failure Rate: 50 4 - # IGT Version: 1.28-g0df7b9b97 5 - # Linux Version: 6.9.0-rc7 6 - panfrost/panfrost_submit@pan-unhandled-pagefault 4 + # IGT Version: 1.28-gf13702b8e 5 + # Linux Version: 6.10.0-rc5 6 + kms_bw@linear-tiling-1-displays-2560x1440p 7 + 8 + # Board Name: rk3399-gru-kevin 9 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 10 + # Failure Rate: 50 11 + # IGT Version: 1.28-gf13702b8e 12 + # Linux Version: 6.10.0-rc5 13 + kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic 14 + 15 + # Board Name: rk3399-gru-kevin 16 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 17 + # Failure Rate: 50 18 + # IGT Version: 1.28-gf13702b8e 19 + # Linux Version: 6.10.0-rc5 20 + kms_flip@dpms-vs-vblank-race-interruptible 21 + 22 + # Board Name: rk3399-gru-kevin 23 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 24 + # Failure Rate: 50 25 + # IGT Version: 1.28-gf13702b8e 26 + # Linux Version: 6.10.0-rc5 27 + kms_flip@flip-vs-absolute-wf_vblank-interruptible 28 + 29 + # Board Name: rk3399-gru-kevin 30 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 31 + # Failure Rate: 50 32 + # IGT Version: 1.28-gf13702b8e 33 + # Linux Version: 6.10.0-rc5 34 + kms_flip@flip-vs-wf_vblank-interruptible 35 + 36 + # Board Name: rk3399-gru-kevin 37 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 38 + # Failure Rate: 50 39 + # IGT Version: 1.28-gf13702b8e 40 + # Linux Version: 6.10.0-rc5 41 + kms_setmode@basic 42 + 43 + # Board Name: rk3399-gru-kevin 44 + # Bug Report: https://lore.kernel.org/linux-rockchip/3e267d0c-fde4-4533-b001-6ab7d7c03546@collabora.com/T/#u 45 + # Failure Rate: 50 46 + # IGT Version: 1.28-gf13702b8e 47 + # Linux Version: 6.10.0-rc5 48 + kms_bw@connected-linear-tiling-1-displays-2560x1440p
+2 -6
drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
··· 1 1 # Suspend to RAM seems to be broken on this machine 2 2 .*suspend.* 3 3 4 - # Too unstable, machine ends up hanging after lots of Oopses 5 - kms_cursor_legacy.* 6 - 7 4 # Skip driver specific tests 8 5 ^amdgpu.* 9 6 ^msm.* 10 7 nouveau_.* 8 + ^panfrost.* 11 9 ^v3d.* 12 10 ^vc4.* 13 11 ^vmwgfx* ··· 13 15 # Skip intel specific tests 14 16 gem_.* 15 17 i915_.* 16 - 17 - # Panfrost is not a KMS driver, so skip the KMS tests 18 - kms_.* 18 + tools_test.* 19 19 20 20 # Currently fails and causes coverage loss for other tests 21 21 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
··· 187 187 kms_vblank@wait-forked-busy,Fail 188 188 kms_vblank@wait-idle,Fail 189 189 perf@i915-ref-count,Fail 190 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
··· 18 18 gem_.* 19 19 i915_.* 20 20 xe_.* 21 + tools_test.* 21 22 22 23 # Currently fails and causes coverage loss for other tests 23 24 # since core_getversion also fails.
-1
drivers/gpu/drm/ci/xfails/vkms-none-fails.txt
··· 50 50 kms_writeback@writeback-invalid-parameters,Fail 51 51 kms_writeback@writeback-pixel-formats,Fail 52 52 perf@i915-ref-count,Fail 53 - tools_test@tools_test,Fail
+1
drivers/gpu/drm/ci/xfails/vkms-none-skips.txt
··· 218 218 gem_.* 219 219 i915_.* 220 220 xe_.* 221 + tools_test.*
+4 -48
drivers/gpu/drm/drm_connector.c
··· 426 426 * 427 427 * The connector structure should be allocated with drmm_kzalloc(). 428 428 * 429 + * The @drm_connector_funcs.destroy hook must be NULL. 430 + * 429 431 * Returns: 430 432 * Zero on success, error code on failure. 431 433 */ ··· 475 473 * drm_connector_cleanup() in a DRM-managed action. 476 474 * 477 475 * The connector structure should be allocated with drmm_kzalloc(). 476 + * 477 + * The @drm_connector_funcs.destroy hook must be NULL. 478 478 * 479 479 * Returns: 480 480 * Zero on success, error code on failure. ··· 1045 1041 { DRM_MODE_SCALE_FULLSCREEN, "Full" }, 1046 1042 { DRM_MODE_SCALE_CENTER, "Center" }, 1047 1043 { DRM_MODE_SCALE_ASPECT, "Full aspect" }, 1048 - }; 1049 - 1050 - static const struct drm_prop_enum_list drm_power_saving_policy_enum_list[] = { 1051 - { __builtin_ffs(DRM_MODE_REQUIRE_COLOR_ACCURACY) - 1, "Require color accuracy" }, 1052 - { __builtin_ffs(DRM_MODE_REQUIRE_LOW_LATENCY) - 1, "Require low latency" }, 1053 1044 }; 1054 1045 1055 1046 static const struct drm_prop_enum_list drm_aspect_ratio_enum_list[] = { ··· 1633 1634 * 1634 1635 * Drivers can set up these properties by calling 1635 1636 * drm_mode_create_tv_margin_properties(). 1636 - * power saving policy: 1637 - * This property is used to set the power saving policy for the connector. 1638 - * This property is populated with a bitmask of optional requirements set 1639 - * by the drm master for the drm driver to respect: 1640 - * - "Require color accuracy": Disable power saving features that will 1641 - * affect color fidelity. 1642 - * For example: Hardware assisted backlight modulation. 1643 - * - "Require low latency": Disable power saving features that will 1644 - * affect latency. 1645 - * For example: Panel self refresh (PSR) 1646 1637 */ 1647 1638 1648 1639 int drm_connector_create_standard_properties(struct drm_device *dev) ··· 2134 2145 return 0; 2135 2146 } 2136 2147 EXPORT_SYMBOL(drm_mode_create_scaling_mode_property); 2137 - 2138 - /** 2139 - * drm_mode_create_power_saving_policy_property - create power saving policy property 2140 - * @dev: DRM device 2141 - * @supported_policies: bitmask of supported power saving policies 2142 - * 2143 - * Called by a driver the first time it's needed, must be attached to desired 2144 - * connectors. 2145 - * 2146 - * Returns: %0 2147 - */ 2148 - int drm_mode_create_power_saving_policy_property(struct drm_device *dev, 2149 - uint64_t supported_policies) 2150 - { 2151 - struct drm_property *power_saving; 2152 - 2153 - if (dev->mode_config.power_saving_policy) 2154 - return 0; 2155 - WARN_ON((supported_policies & DRM_MODE_POWER_SAVING_POLICY_ALL) == 0); 2156 - 2157 - power_saving = 2158 - drm_property_create_bitmask(dev, 0, "power saving policy", 2159 - drm_power_saving_policy_enum_list, 2160 - ARRAY_SIZE(drm_power_saving_policy_enum_list), 2161 - supported_policies); 2162 - if (!power_saving) 2163 - return -ENOMEM; 2164 - 2165 - dev->mode_config.power_saving_policy = power_saving; 2166 - 2167 - return 0; 2168 - } 2169 - EXPORT_SYMBOL(drm_mode_create_power_saving_policy_property); 2170 2148 2171 2149 /** 2172 2150 * DOC: Variable refresh properties
+1
drivers/gpu/drm/mgag200/Makefile
··· 12 12 mgag200_g200se.o \ 13 13 mgag200_g200wb.o \ 14 14 mgag200_mode.o \ 15 + mgag200_vga_bmc.o \ 15 16 mgag200_vga.o 16 17 17 18 obj-$(CONFIG_DRM_MGAG200) += mgag200.o
-102
drivers/gpu/drm/mgag200/mgag200_bmc.c
··· 9 9 10 10 #include "mgag200_drv.h" 11 11 12 - static struct mgag200_bmc_connector *to_mgag200_bmc_connector(struct drm_connector *connector) 13 - { 14 - return container_of(connector, struct mgag200_bmc_connector, base); 15 - } 16 - 17 12 void mgag200_bmc_stop_scanout(struct mga_device *mdev) 18 13 { 19 14 u8 tmp; ··· 96 101 tmp = RREG8(DAC_DATA); 97 102 tmp &= ~0x10; 98 103 WREG_DAC(MGA1064_GEN_IO_DATA, tmp); 99 - } 100 - 101 - static const struct drm_encoder_funcs mgag200_bmc_encoder_funcs = { 102 - .destroy = drm_encoder_cleanup, 103 - }; 104 - 105 - static int mgag200_bmc_connector_helper_detect_ctx(struct drm_connector *connector, 106 - struct drm_modeset_acquire_ctx *ctx, 107 - bool force) 108 - { 109 - struct mgag200_bmc_connector *bmc_connector = to_mgag200_bmc_connector(connector); 110 - struct drm_connector *physical_connector = bmc_connector->physical_connector; 111 - 112 - /* 113 - * Most user-space compositors cannot handle more than one connected 114 - * connector per CRTC. Hence, we only mark the BMC as connected if the 115 - * physical connector is disconnected. If the physical connector's status 116 - * is connected or unknown, the BMC remains disconnected. This has no 117 - * effect on the output of the BMC. 118 - * 119 - * FIXME: Remove this logic once user-space compositors can handle more 120 - * than one connector per CRTC. The BMC should always be connected. 121 - */ 122 - 123 - if (physical_connector && physical_connector->status == connector_status_disconnected) 124 - return connector_status_connected; 125 - 126 - return connector_status_disconnected; 127 - } 128 - 129 - static int mgag200_bmc_connector_helper_get_modes(struct drm_connector *connector) 130 - { 131 - struct drm_device *dev = connector->dev; 132 - struct mga_device *mdev = to_mga_device(dev); 133 - const struct mgag200_device_info *minfo = mdev->info; 134 - 135 - return drm_add_modes_noedid(connector, minfo->max_hdisplay, minfo->max_vdisplay); 136 - } 137 - 138 - static const struct drm_connector_helper_funcs mgag200_bmc_connector_helper_funcs = { 139 - .get_modes = mgag200_bmc_connector_helper_get_modes, 140 - .detect_ctx = mgag200_bmc_connector_helper_detect_ctx, 141 - }; 142 - 143 - static const struct drm_connector_funcs mgag200_bmc_connector_funcs = { 144 - .reset = drm_atomic_helper_connector_reset, 145 - .fill_modes = drm_helper_probe_single_connector_modes, 146 - .destroy = drm_connector_cleanup, 147 - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, 148 - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 149 - }; 150 - 151 - static int mgag200_bmc_connector_init(struct drm_device *dev, 152 - struct mgag200_bmc_connector *bmc_connector, 153 - struct drm_connector *physical_connector) 154 - { 155 - struct drm_connector *connector = &bmc_connector->base; 156 - int ret; 157 - 158 - ret = drm_connector_init(dev, connector, &mgag200_bmc_connector_funcs, 159 - DRM_MODE_CONNECTOR_VIRTUAL); 160 - if (ret) 161 - return ret; 162 - drm_connector_helper_add(connector, &mgag200_bmc_connector_helper_funcs); 163 - 164 - bmc_connector->physical_connector = physical_connector; 165 - 166 - return 0; 167 - } 168 - 169 - int mgag200_bmc_output_init(struct mga_device *mdev, struct drm_connector *physical_connector) 170 - { 171 - struct drm_device *dev = &mdev->base; 172 - struct drm_crtc *crtc = &mdev->crtc; 173 - struct drm_encoder *encoder; 174 - struct mgag200_bmc_connector *bmc_connector; 175 - struct drm_connector *connector; 176 - int ret; 177 - 178 - encoder = &mdev->output.bmc.encoder; 179 - ret = drm_encoder_init(dev, encoder, &mgag200_bmc_encoder_funcs, 180 - DRM_MODE_ENCODER_VIRTUAL, NULL); 181 - if (ret) 182 - return ret; 183 - encoder->possible_crtcs = drm_crtc_mask(crtc); 184 - 185 - bmc_connector = &mdev->output.bmc.bmc_connector; 186 - ret = mgag200_bmc_connector_init(dev, bmc_connector, physical_connector); 187 - if (ret) 188 - return ret; 189 - connector = &bmc_connector->base; 190 - 191 - ret = drm_connector_attach_encoder(connector, encoder); 192 - if (ret) 193 - return ret; 194 - 195 - return 0; 196 104 }
+3 -10
drivers/gpu/drm/mgag200/mgag200_drv.h
··· 188 188 return container_of(base, struct mgag200_crtc_state, base); 189 189 } 190 190 191 - struct mgag200_bmc_connector { 192 - struct drm_connector base; 193 - struct drm_connector *physical_connector; 194 - }; 195 - 196 191 enum mga_type { 197 192 G200_PCI, 198 193 G200_AGP, ··· 278 283 struct drm_encoder encoder; 279 284 struct drm_connector connector; 280 285 } vga; 281 - struct { 282 - struct drm_encoder encoder; 283 - struct mgag200_bmc_connector bmc_connector; 284 - } bmc; 285 286 } output; 286 287 }; 287 288 ··· 428 437 void mgag200_init_registers(struct mga_device *mdev); 429 438 int mgag200_mode_config_init(struct mga_device *mdev, resource_size_t vram_available); 430 439 440 + /* mgag200_vga_bmc.c */ 441 + int mgag200_vga_bmc_output_init(struct mga_device *mdev); 442 + 431 443 /* mgag200_vga.c */ 432 444 int mgag200_vga_output_init(struct mga_device *mdev); 433 445 434 446 /* mgag200_bmc.c */ 435 447 void mgag200_bmc_stop_scanout(struct mga_device *mdev); 436 448 void mgag200_bmc_start_scanout(struct mga_device *mdev); 437 - int mgag200_bmc_output_init(struct mga_device *mdev, struct drm_connector *physical_connector); 438 449 439 450 #endif /* __MGAG200_DRV_H__ */
+1 -5
drivers/gpu/drm/mgag200/mgag200_g200eh.c
··· 215 215 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 216 216 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 217 217 218 - ret = mgag200_vga_output_init(mdev); 219 - if (ret) 220 - return ret; 221 - 222 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 218 + ret = mgag200_vga_bmc_output_init(mdev); 223 219 if (ret) 224 220 return ret; 225 221
+1 -5
drivers/gpu/drm/mgag200/mgag200_g200eh3.c
··· 119 119 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 120 120 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 121 121 122 - ret = mgag200_vga_output_init(mdev); 123 - if (ret) 124 - return ret; 125 - 126 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 122 + ret = mgag200_vga_bmc_output_init(mdev); 127 123 if (ret) 128 124 return ret; 129 125
+1 -8
drivers/gpu/drm/mgag200/mgag200_g200er.c
··· 207 207 208 208 mgag200_enable_display(mdev); 209 209 210 - if (mdev->info->sync_bmc) 211 - mgag200_bmc_start_scanout(mdev); 212 - 213 210 drm_crtc_vblank_on(crtc); 214 211 } 215 212 ··· 255 258 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 256 259 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 257 260 258 - ret = mgag200_vga_output_init(mdev); 259 - if (ret) 260 - return ret; 261 - 262 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 261 + ret = mgag200_vga_bmc_output_init(mdev); 263 262 if (ret) 264 263 return ret; 265 264
+1 -8
drivers/gpu/drm/mgag200/mgag200_g200ev.c
··· 208 208 209 209 mgag200_enable_display(mdev); 210 210 211 - if (mdev->info->sync_bmc) 212 - mgag200_bmc_start_scanout(mdev); 213 - 214 211 drm_crtc_vblank_on(crtc); 215 212 } 216 213 ··· 256 259 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 257 260 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 258 261 259 - ret = mgag200_vga_output_init(mdev); 260 - if (ret) 261 - return ret; 262 - 263 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 262 + ret = mgag200_vga_bmc_output_init(mdev); 264 263 if (ret) 265 264 return ret; 266 265
+1 -5
drivers/gpu/drm/mgag200/mgag200_g200ew3.c
··· 128 128 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 129 129 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 130 130 131 - ret = mgag200_vga_output_init(mdev); 132 - if (ret) 133 - return ret; 134 - 135 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 131 + ret = mgag200_vga_bmc_output_init(mdev); 136 132 if (ret) 137 133 return ret; 138 134
+1 -8
drivers/gpu/drm/mgag200/mgag200_g200se.c
··· 339 339 340 340 mgag200_enable_display(mdev); 341 341 342 - if (mdev->info->sync_bmc) 343 - mgag200_bmc_start_scanout(mdev); 344 - 345 342 drm_crtc_vblank_on(crtc); 346 343 } 347 344 ··· 387 390 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 388 391 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 389 392 390 - ret = mgag200_vga_output_init(mdev); 391 - if (ret) 392 - return ret; 393 - 394 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 393 + ret = mgag200_vga_bmc_output_init(mdev); 395 394 if (ret) 396 395 return ret; 397 396
+1 -5
drivers/gpu/drm/mgag200/mgag200_g200wb.c
··· 262 262 drm_mode_crtc_set_gamma_size(crtc, MGAG200_LUT_SIZE); 263 263 drm_crtc_enable_color_mgmt(crtc, 0, false, MGAG200_LUT_SIZE); 264 264 265 - ret = mgag200_vga_output_init(mdev); 266 - if (ret) 267 - return ret; 268 - 269 - ret = mgag200_bmc_output_init(mdev, &mdev->output.vga.connector); 265 + ret = mgag200_vga_bmc_output_init(mdev); 270 266 if (ret) 271 267 return ret; 272 268
-9
drivers/gpu/drm/mgag200/mgag200_mode.c
··· 611 611 struct mga_device *mdev = to_mga_device(dev); 612 612 const struct mgag200_device_funcs *funcs = mdev->funcs; 613 613 struct drm_crtc_state *new_crtc_state = drm_atomic_get_new_crtc_state(new_state, crtc); 614 - struct mgag200_crtc_state *new_mgag200_crtc_state = to_mgag200_crtc_state(new_crtc_state); 615 614 struct drm_property_blob *new_gamma_lut = new_crtc_state->gamma_lut; 616 615 int ret; 617 616 ··· 620 621 ret = drm_atomic_helper_check_crtc_primary_plane(new_crtc_state); 621 622 if (ret) 622 623 return ret; 623 - 624 - new_mgag200_crtc_state->set_vidrst = mdev->info->sync_bmc; 625 624 626 625 if (new_crtc_state->mode_changed) { 627 626 if (funcs->pixpllc_atomic_check) { ··· 693 696 694 697 mgag200_enable_display(mdev); 695 698 696 - if (mdev->info->sync_bmc) 697 - mgag200_bmc_start_scanout(mdev); 698 - 699 699 drm_crtc_vblank_on(crtc); 700 700 } 701 701 ··· 701 707 struct mga_device *mdev = to_mga_device(crtc->dev); 702 708 703 709 drm_crtc_vblank_off(crtc); 704 - 705 - if (mdev->info->sync_bmc) 706 - mgag200_bmc_stop_scanout(mdev); 707 710 708 711 mgag200_disable_display(mdev); 709 712 }
+156
drivers/gpu/drm/mgag200/mgag200_vga_bmc.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + 3 + #include <drm/drm_atomic_helper.h> 4 + #include <drm/drm_edid.h> 5 + #include <drm/drm_modeset_helper_vtables.h> 6 + #include <drm/drm_probe_helper.h> 7 + 8 + #include "mgag200_ddc.h" 9 + #include "mgag200_drv.h" 10 + 11 + static void mgag200_vga_bmc_encoder_atomic_disable(struct drm_encoder *encoder, 12 + struct drm_atomic_state *state) 13 + { 14 + struct mga_device *mdev = to_mga_device(encoder->dev); 15 + 16 + if (mdev->info->sync_bmc) 17 + mgag200_bmc_stop_scanout(mdev); 18 + } 19 + 20 + static void mgag200_vga_bmc_encoder_atomic_enable(struct drm_encoder *encoder, 21 + struct drm_atomic_state *state) 22 + { 23 + struct mga_device *mdev = to_mga_device(encoder->dev); 24 + 25 + if (mdev->info->sync_bmc) 26 + mgag200_bmc_start_scanout(mdev); 27 + } 28 + 29 + static int mgag200_vga_bmc_encoder_atomic_check(struct drm_encoder *encoder, 30 + struct drm_crtc_state *new_crtc_state, 31 + struct drm_connector_state *new_connector_state) 32 + { 33 + struct mga_device *mdev = to_mga_device(encoder->dev); 34 + struct mgag200_crtc_state *new_mgag200_crtc_state = to_mgag200_crtc_state(new_crtc_state); 35 + 36 + new_mgag200_crtc_state->set_vidrst = mdev->info->sync_bmc; 37 + 38 + return 0; 39 + } 40 + 41 + static const struct drm_encoder_helper_funcs mgag200_dac_encoder_helper_funcs = { 42 + .atomic_disable = mgag200_vga_bmc_encoder_atomic_disable, 43 + .atomic_enable = mgag200_vga_bmc_encoder_atomic_enable, 44 + .atomic_check = mgag200_vga_bmc_encoder_atomic_check, 45 + }; 46 + 47 + static const struct drm_encoder_funcs mgag200_dac_encoder_funcs = { 48 + .destroy = drm_encoder_cleanup 49 + }; 50 + 51 + static int mgag200_vga_bmc_connector_helper_get_modes(struct drm_connector *connector) 52 + { 53 + struct mga_device *mdev = to_mga_device(connector->dev); 54 + const struct mgag200_device_info *minfo = mdev->info; 55 + int count; 56 + 57 + count = drm_connector_helper_get_modes(connector); 58 + 59 + if (!count) { 60 + /* 61 + * There's no EDID data without a connected monitor. Set BMC- 62 + * compatible modes in this case. The XGA default resolution 63 + * should work well for all BMCs. 64 + */ 65 + count = drm_add_modes_noedid(connector, minfo->max_hdisplay, minfo->max_vdisplay); 66 + if (count) 67 + drm_set_preferred_mode(connector, 1024, 768); 68 + } 69 + 70 + return count; 71 + } 72 + 73 + /* 74 + * There's no monitor connected if the DDC did not return an EDID. Still 75 + * return 'connected' as there's always a BMC. Incrementing the connector's 76 + * epoch counter triggers an update of the related properties. 77 + */ 78 + static int mgag200_vga_bmc_connector_helper_detect_ctx(struct drm_connector *connector, 79 + struct drm_modeset_acquire_ctx *ctx, 80 + bool force) 81 + { 82 + enum drm_connector_status old_status, status; 83 + 84 + if (connector->edid_blob_ptr) 85 + old_status = connector_status_connected; 86 + else 87 + old_status = connector_status_disconnected; 88 + 89 + status = drm_connector_helper_detect_from_ddc(connector, ctx, force); 90 + 91 + if (status != old_status) 92 + ++connector->epoch_counter; 93 + return connector_status_connected; 94 + } 95 + 96 + static const struct drm_connector_helper_funcs mgag200_vga_connector_helper_funcs = { 97 + .get_modes = mgag200_vga_bmc_connector_helper_get_modes, 98 + .detect_ctx = mgag200_vga_bmc_connector_helper_detect_ctx, 99 + }; 100 + 101 + static const struct drm_connector_funcs mgag200_vga_connector_funcs = { 102 + .reset = drm_atomic_helper_connector_reset, 103 + .fill_modes = drm_helper_probe_single_connector_modes, 104 + .destroy = drm_connector_cleanup, 105 + .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, 106 + .atomic_destroy_state = drm_atomic_helper_connector_destroy_state 107 + }; 108 + 109 + int mgag200_vga_bmc_output_init(struct mga_device *mdev) 110 + { 111 + struct drm_device *dev = &mdev->base; 112 + struct drm_crtc *crtc = &mdev->crtc; 113 + struct drm_encoder *encoder; 114 + struct drm_connector *connector; 115 + struct i2c_adapter *ddc; 116 + int ret; 117 + 118 + encoder = &mdev->output.vga.encoder; 119 + ret = drm_encoder_init(dev, encoder, &mgag200_dac_encoder_funcs, 120 + DRM_MODE_ENCODER_DAC, NULL); 121 + if (ret) { 122 + drm_err(dev, "drm_encoder_init() failed: %d\n", ret); 123 + return ret; 124 + } 125 + drm_encoder_helper_add(encoder, &mgag200_dac_encoder_helper_funcs); 126 + 127 + encoder->possible_crtcs = drm_crtc_mask(crtc); 128 + 129 + ddc = mgag200_ddc_create(mdev); 130 + if (IS_ERR(ddc)) { 131 + ret = PTR_ERR(ddc); 132 + drm_err(dev, "failed to add DDC bus: %d\n", ret); 133 + return ret; 134 + } 135 + 136 + connector = &mdev->output.vga.connector; 137 + ret = drm_connector_init_with_ddc(dev, connector, 138 + &mgag200_vga_connector_funcs, 139 + DRM_MODE_CONNECTOR_VGA, ddc); 140 + if (ret) { 141 + drm_err(dev, "drm_connector_init_with_ddc() failed: %d\n", ret); 142 + return ret; 143 + } 144 + drm_connector_helper_add(connector, &mgag200_vga_connector_helper_funcs); 145 + 146 + connector->polled = DRM_CONNECTOR_POLL_CONNECT | 147 + DRM_CONNECTOR_POLL_DISCONNECT; 148 + 149 + ret = drm_connector_attach_encoder(connector, encoder); 150 + if (ret) { 151 + drm_err(dev, "drm_connector_attach_encoder() failed: %d\n", ret); 152 + return ret; 153 + } 154 + 155 + return 0; 156 + }
+1 -2
drivers/gpu/drm/omapdrm/dss/base.c
··· 242 242 243 243 of_node_put(n); 244 244 245 - n = NULL; 246 - while ((n = of_graph_get_next_endpoint(node, n)) != NULL) { 245 + for_each_endpoint_of_node(node, n) { 247 246 struct device_node *pn = of_graph_get_remote_port_parent(n); 248 247 249 248 if (!pn)
+1 -1
drivers/gpu/drm/panel/panel-edp.c
··· 1948 1948 EDP_PANEL_ENTRY('C', 'S', 'W', 0x1104, &delay_200_500_e50, "MNB601LS1-4"), 1949 1949 1950 1950 EDP_PANEL_ENTRY('H', 'K', 'C', 0x2d51, &delay_200_500_e200, "Unknown"), 1951 - EDP_PANEL_ENTRY('H', 'K', 'C', 0x2d5b, &delay_200_500_e200, "Unknown"), 1951 + EDP_PANEL_ENTRY('H', 'K', 'C', 0x2d5b, &delay_200_500_e200, "MB116AN01"), 1952 1952 EDP_PANEL_ENTRY('H', 'K', 'C', 0x2d5c, &delay_200_500_e200, "MB116AN01-2"), 1953 1953 1954 1954 EDP_PANEL_ENTRY('I', 'V', 'O', 0x048e, &delay_200_500_e200_d10, "M116NWR6 R5"),
+7 -7
drivers/gpu/drm/vkms/vkms_formats.c
··· 75 75 76 76 static void ARGB16161616_to_argb_u16(u8 *src_pixels, struct pixel_argb_u16 *out_pixel) 77 77 { 78 - u16 *pixels = (u16 *)src_pixels; 78 + __le16 *pixels = (__force __le16 *)src_pixels; 79 79 80 80 out_pixel->a = le16_to_cpu(pixels[3]); 81 81 out_pixel->r = le16_to_cpu(pixels[2]); ··· 85 85 86 86 static void XRGB16161616_to_argb_u16(u8 *src_pixels, struct pixel_argb_u16 *out_pixel) 87 87 { 88 - u16 *pixels = (u16 *)src_pixels; 88 + __le16 *pixels = (__force __le16 *)src_pixels; 89 89 90 90 out_pixel->a = (u16)0xffff; 91 91 out_pixel->r = le16_to_cpu(pixels[2]); ··· 95 95 96 96 static void RGB565_to_argb_u16(u8 *src_pixels, struct pixel_argb_u16 *out_pixel) 97 97 { 98 - u16 *pixels = (u16 *)src_pixels; 98 + __le16 *pixels = (__force __le16 *)src_pixels; 99 99 100 100 s64 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), drm_int2fixp(31)); 101 101 s64 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), drm_int2fixp(63)); ··· 178 178 179 179 static void argb_u16_to_ARGB16161616(u8 *dst_pixels, struct pixel_argb_u16 *in_pixel) 180 180 { 181 - u16 *pixels = (u16 *)dst_pixels; 181 + __le16 *pixels = (__force __le16 *)dst_pixels; 182 182 183 183 pixels[3] = cpu_to_le16(in_pixel->a); 184 184 pixels[2] = cpu_to_le16(in_pixel->r); ··· 188 188 189 189 static void argb_u16_to_XRGB16161616(u8 *dst_pixels, struct pixel_argb_u16 *in_pixel) 190 190 { 191 - u16 *pixels = (u16 *)dst_pixels; 191 + __le16 *pixels = (__force __le16 *)dst_pixels; 192 192 193 - pixels[3] = 0xffff; 193 + pixels[3] = cpu_to_le16(0xffff); 194 194 pixels[2] = cpu_to_le16(in_pixel->r); 195 195 pixels[1] = cpu_to_le16(in_pixel->g); 196 196 pixels[0] = cpu_to_le16(in_pixel->b); ··· 198 198 199 199 static void argb_u16_to_RGB565(u8 *dst_pixels, struct pixel_argb_u16 *in_pixel) 200 200 { 201 - u16 *pixels = (u16 *)dst_pixels; 201 + __le16 *pixels = (__force __le16 *)dst_pixels; 202 202 203 203 s64 fp_rb_ratio = drm_fixp_div(drm_int2fixp(65535), drm_int2fixp(31)); 204 204 s64 fp_g_ratio = drm_fixp_div(drm_int2fixp(65535), drm_int2fixp(63));
-2
include/drm/drm_connector.h
··· 2267 2267 u32 supported_colorspaces); 2268 2268 int drm_mode_create_content_type_property(struct drm_device *dev); 2269 2269 int drm_mode_create_suggested_offset_properties(struct drm_device *dev); 2270 - int drm_mode_create_power_saving_policy_property(struct drm_device *dev, 2271 - uint64_t supported_policies); 2272 2270 2273 2271 int drm_connector_set_path_property(struct drm_connector *connector, 2274 2272 const char *path);
-5
include/drm/drm_mode_config.h
··· 969 969 */ 970 970 struct drm_atomic_state *suspend_state; 971 971 972 - /** 973 - * @power_saving_policy: bitmask for power saving policy requests. 974 - */ 975 - struct drm_property *power_saving_policy; 976 - 977 972 const struct drm_mode_config_helper_funcs *helper_private; 978 973 }; 979 974
-7
include/uapi/drm/drm_mode.h
··· 152 152 #define DRM_MODE_SCALE_CENTER 2 /* Centered, no scaling */ 153 153 #define DRM_MODE_SCALE_ASPECT 3 /* Full screen, preserve aspect */ 154 154 155 - /* power saving policy options */ 156 - #define DRM_MODE_REQUIRE_COLOR_ACCURACY BIT(0) /* Compositor requires color accuracy */ 157 - #define DRM_MODE_REQUIRE_LOW_LATENCY BIT(1) /* Compositor requires low latency */ 158 - 159 - #define DRM_MODE_POWER_SAVING_POLICY_ALL (DRM_MODE_REQUIRE_COLOR_ACCURACY |\ 160 - DRM_MODE_REQUIRE_LOW_LATENCY) 161 - 162 155 /* Dithering mode options */ 163 156 #define DRM_MODE_DITHERING_OFF 0 164 157 #define DRM_MODE_DITHERING_ON 1