For a very long time, we've had basically no automated testing coverage of hotplugging functionality mainly because the only way to test this sort of thing was to manually plug and unplug the connectors yourself. As well, this also means we could never automate testing of various DisplayPort quirks, MST, etc. At long last however, we might finally have a solution for this. A while back, the ChromeOS guys came up with a device known as the Chamelium: https://www.chromium.org/chromium-os/testing/chamelium And actually sent both me and airlied one. This little device allows us to emulate any kind of display we want, along with simulating hotplugs and various quirky behaviors with displays. On top of that, it even allows for grabbing the video input on all of the connectors, manual control of the i2c line for all of the display connectors, etc. With this patch series, we can now actually write intel-gpu-tools tests with this gadget! However, there's a couple of things that haven't been done yet and need to be kept in mind: - The current fpga_tio board that the Chamelium uses unfortunately doesn't have native support for DisplayPort MST on it's DisplayPort receivers (they only go up to version 1.1a of the spec). While annoying testing MST with this isn't impossible, as we can implement all of the hotplugging paths we care about by manually controlling the i2c line and emulating an MST display. IMO, this is really the biggest thing we need coverage for anyway. This hasn't been done yet, but it's definitely on my to-do list. - While writing this patch series, I found that quite a few of the RPC calls for chameleond don't work as expected. For instance, I have had absolutely no luck getting CRCs from any of the display types that the chamelium supports. This isn't a huge deal though, since we usually just use the native CRC read back on the GPU anyway. - Among other things that are broken with the chameleon, video signal detection for DisplayPort is one of them. After the first plug/unplug cycle, the DisplayPort receiver gets stuck and gives the wrong results for WaitForInputStable. Luckily I've already got a fix I'll be submitting to the ChromeOS guys when I get around to setting up their homebrew git tools: https://github.com/Lyude/chameleond/tree/wip/chameleon-fixes For now, expect the dp-display tests to fail without those patches. Lyude (4): igt_aux: Add igt_skip_without_suspend_support() igt_aux: Add igt_set_autoresume_delay() igt_aux: Add some list helpers from wayland Add support for hotplug testing with the Chamelium configure.ac | 13 + lib/Makefile.am | 10 +- lib/igt.h | 1 + lib/igt_aux.c | 94 ++++++++ lib/igt_aux.h | 41 ++++ lib/igt_chamelium.c | 628 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/igt_chamelium.h | 77 ++++++ lib/igt_kms.c | 107 +++++++++ lib/igt_kms.h | 13 +- scripts/run-tests.sh | 4 +- tests/Makefile.am | 5 +- tests/Makefile.sources | 1 + tests/chamelium.c | 549 ++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 1538 insertions(+), 5 deletions(-) create mode 100644 lib/igt_chamelium.c create mode 100644 lib/igt_chamelium.h create mode 100644 tests/chamelium.c -- 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx