[Intel-gfx] [PATCH] drm/i915/dp/mst: Validate modes against the available link bandwidth
Jani Nikula
jani.nikula at linux.intel.com
Mon Sep 26 15:00:07 UTC 2016
On Tue, 06 Sep 2016, Jim Bride <jim.bride at linux.intel.com> wrote:
> Ville wrote:
>> On Thu, Aug 18, 2016 at 05:11:31PM -0700, Anusha Srivatsa wrote:
>> > Change intel_dp_mst_mode_valid() to use available link bandwidth
>> > rather than the link's maximum supported bandwidth to evaluate whether
>> > modes are legal for the current configuration. This takes into account
>> > the fact that link bandwidth may already be dedicated to other virtual
>> > channels.
>>
>> We can't do this. Results of mode_valid() aren't supposed to change
>> like this depending on what else is happening in the system. The only
>> thing mode_valid() tells us is whether it's possible to use the mode
>> under *some* circumstances. Only if the mode can't be used under
>> *any* circumstances should it be filtered out.
>>
>> If we wanted to change this, we'd at the very least have to
>> synthesize hotplug uevents whenever the conditions changed. But doing
>> that would be a fairly big behavioural change, so I'm not sure how
>> people feel about it. It also doesn't really solve the problem since
>> eg. atomic can go directly from 0->n active pipes, so there's no way
>> to know upfront which modes we can pick for each pipe.
>>
>
> I won't dispute that this won't help for all cases, but it does make hotplugs,
> at a minimum, more sane. For that reason alone, I'd like to see this patch
> land. Longer term I think we should look at how we can make user space
> and atomic better handle MST (IMHO in multi-modeset operations on MST atomic
> should ensure that the aggregate dotclock of the modes being set are less
> than the link bandwidth that's configured.) I think that user space also
> needs to be more MST aware and update what's available based on the current
> configuration at any given time. I'm not sure what the precise solution
> should look like here, but I'd think that what we want is for user space
> to fetch the list of available resolutions based on the current configuration
> any time we plug or unplug a device on a DP MST topology. In an ideal world
> it would be nice to have some sort of information about the total link
> bandwidth, and how much bandwidth each mode is taking up so that the user
> could have a guide to tweaking their setup in such a way to maximize how
> they choose to configure their monitors based on the available link
> bandwidth.
We already have several restrictions outside of DP MST that impact what
configurations can be enabled at the same time. Things like available
PLLs, FDI bandwidth, etc. We can't prune the mode list on a first come,
first served basis. We can only look at the modes the userspace requests
at any given time, and tell the userspace whether we can deliver that or
not.
Imagine someone plugging in their 4k display, only to discover 1024x768
mode is there because all the bandwidth is reserved. With this patch,
they'd have to disable/unplug the first display, and then unplug/replug
the 4k display to see all the modes they have available.
BR,
Jani.
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list