Re: [PATCH 3.14 42/79] drm/qxl: only report first monitor as connected if we have no state
From: Jiri Slaby
Date: Fri May 27 2016 - 07:13:26 EST
On 05/27/2016, 01:06 PM, Jiri Slaby wrote:
> On 10/18/2015, 04:05 AM, Greg Kroah-Hartman wrote:
>> 3.14-stable review patch. If anyone has any objections, please let me know.
>>
>> ------------------
>>
>> From: Dave Airlie <airlied@xxxxxxxxxx>
>>
>> commit 69e5d3f893e19613486f300fd6e631810338aa4b upstream.
>>
>> If the server isn't new enough to give us state, report the first
>> monitor as always connected, otherwise believe the server side.
>
> Hi,
>
> I've got a bug report, that this commit breaks 3.12-stable:
> ===============
> While testing KDE5 packages which will be landing in Package Hub for
> SP1, we found a issue with qxl drm driver in kernel.
>
> When booting SLES (or SLED) 12 SP1, in a libvirt KVM environment, with
> QXL as video driver, KDE5 plasma was not rendered on screen, you could
> only see mouse cursor.
>
> Booting with nomodeset=1 or qxl.modeset=0 fixes the issue.
> ===============
>
> Does it make sense? Is 3.12 missing some prerequisite? Or should we just
> revert the commit in 3.12? And what about 3.14, 4.1?
Also, I am attaching xrandr outputs:
(bad) xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
Virtual-0 disconnected primary 1024x768+0+0 0mm x 0mm
Virtual-1 disconnected
Virtual-2 disconnected
Virtual-3 disconnected
1024x768 (0x47) 63.5MHz
h: width 1024 start 1072 end 1176 total 1328 skew 0 clock
47.8KHz
v: height 768 start 771 end 775 total 798 clock
59.9Hz
(good) xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
Virtual-0 connected primary 1024x768+0+0 0mm x 0mm
1024x768 59.9*+
0x0 0.0 +
1920x1200 59.9
1920x1080 60.0
1600x1200 59.9
1680x1050 60.0
1400x1050 60.0
1280x1024 59.9
1440x900 59.9
1280x960 59.9
1280x854 59.9
1280x800 59.8
1280x720 59.9
1152x768 59.8
800x600 59.9
848x480 59.7
720x480 59.7
640x480 59.4
Virtual-1 disconnected
Virtual-2 disconnected
Virtual-3 disconnected
> Thanks.
>
>> Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx>
>> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>>
>> ---
>> drivers/gpu/drm/qxl/qxl_display.c | 12 +++++++-----
>> 1 file changed, 7 insertions(+), 5 deletions(-)
>>
>> --- a/drivers/gpu/drm/qxl/qxl_display.c
>> +++ b/drivers/gpu/drm/qxl/qxl_display.c
>> @@ -816,13 +816,15 @@ static enum drm_connector_status qxl_con
>> drm_connector_to_qxl_output(connector);
>> struct drm_device *ddev = connector->dev;
>> struct qxl_device *qdev = ddev->dev_private;
>> - int connected;
>> + bool connected = false;
>>
>> /* The first monitor is always connected */
>> - connected = (output->index == 0) ||
>> - (qdev->client_monitors_config &&
>> - qdev->client_monitors_config->count > output->index &&
>> - qxl_head_enabled(&qdev->client_monitors_config->heads[output->index]));
>> + if (!qdev->client_monitors_config) {
>> + if (output->index == 0)
>> + connected = true;
>> + } else
>> + connected = qdev->client_monitors_config->count > output->index &&
>> + qxl_head_enabled(&qdev->client_monitors_config->heads[output->index]);
>>
>> DRM_DEBUG("#%d connected: %d\n", output->index, connected);
>> if (!connected)
>
>
>
--
js
suse labs