* [PATCH xf86-video-amdgpu 1/3] modesetting: Use helper to fetch drmModeProperty(Blob)s @ 2018-02-22 17:52 Michel Dänzer [not found] ` <20180222175253.13842-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Michel Dänzer @ 2018-02-22 17:52 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW From: Daniel Martin <consume.noise@gmail.com> Replace the various loops to lookup drmModeProperty(Blob)s by introducing helper functions. Signed-off-by: Daniel Martin <consume.noise@gmail.com> (Ported from xserver commit f44935cdb7321af242ce9f242975f096807b97f7) Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> --- src/drmmode_display.c | 128 +++++++++++++++++++++++++++----------------------- 1 file changed, 70 insertions(+), 58 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index db4f15c23..98d2039d0 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1402,6 +1402,51 @@ drmmode_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes) return MODE_OK; } +static int +koutput_get_prop_idx(int fd, drmModeConnectorPtr koutput, + int type, const char *name) +{ + int idx = -1; + + for (int i = 0; i < koutput->count_props; i++) { + drmModePropertyPtr prop = drmModeGetProperty(fd, koutput->props[i]); + + if (!prop) + continue; + + if (drm_property_type_is(prop, type) && !strcmp(prop->name, name)) + idx = i; + + drmModeFreeProperty(prop); + + if (idx > -1) + break; + } + + return idx; +} + +static int +koutput_get_prop_id(int fd, drmModeConnectorPtr koutput, + int type, const char *name) +{ + int idx = koutput_get_prop_idx(fd, koutput, type, name); + + return (idx > -1) ? koutput->props[idx] : -1; +} + +static drmModePropertyBlobPtr +koutput_get_prop_blob(int fd, drmModeConnectorPtr koutput, const char *name) +{ + drmModePropertyBlobPtr blob = NULL; + int idx = koutput_get_prop_idx(fd, koutput, DRM_MODE_PROP_BLOB, name); + + if (idx > -1) + blob = drmModeGetPropertyBlob(fd, koutput->prop_values[idx]); + + return blob; +} + static DisplayModePtr drmmode_output_get_modes(xf86OutputPtr output) { drmmode_output_private_ptr drmmode_output = output->driver_private; @@ -1409,29 +1454,16 @@ static DisplayModePtr drmmode_output_get_modes(xf86OutputPtr output) AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(output->scrn); int i; DisplayModePtr Modes = NULL, Mode; - drmModePropertyPtr props; xf86MonPtr mon = NULL; if (!koutput) return NULL; + drmModeFreePropertyBlob(drmmode_output->edid_blob); + /* look for an EDID property */ - for (i = 0; i < koutput->count_props; i++) { - props = drmModeGetProperty(pAMDGPUEnt->fd, koutput->props[i]); - if (props && (props->flags & DRM_MODE_PROP_BLOB)) { - if (!strcmp(props->name, "EDID")) { - if (drmmode_output->edid_blob) - drmModeFreePropertyBlob - (drmmode_output->edid_blob); - drmmode_output->edid_blob = - drmModeGetPropertyBlob(pAMDGPUEnt->fd, - koutput->prop_values - [i]); - } - } - if (props) - drmModeFreeProperty(props); - } + drmmode_output->edid_blob = + koutput_get_prop_blob(pAMDGPUEnt->fd, koutput, "EDID"); if (drmmode_output->edid_blob) { mon = xf86InterpretEDID(output->scrn->scrnIndex, @@ -1875,7 +1907,6 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_r drmModeConnectorPtr koutput; drmModeEncoderPtr *kencoders = NULL; drmmode_output_private_ptr drmmode_output; - drmModePropertyPtr props; drmModePropertyBlobPtr path_blob = NULL; char name[32]; int i; @@ -1887,17 +1918,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_r if (!koutput) return 0; - for (i = 0; i < koutput->count_props; i++) { - props = drmModeGetProperty(pAMDGPUEnt->fd, koutput->props[i]); - if (props && (props->flags & DRM_MODE_PROP_BLOB)) { - if (!strcmp(props->name, "PATH")) { - path_blob = drmModeGetPropertyBlob(pAMDGPUEnt->fd, koutput->prop_values[i]); - drmModeFreeProperty(props); - break; - } - } - drmModeFreeProperty(props); - } + path_blob = koutput_get_prop_blob(pAMDGPUEnt->fd, koutput, "PATH"); kencoders = calloc(sizeof(drmModeEncoderPtr), koutput->count_encoders); if (!kencoders) { @@ -1981,18 +2002,9 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_r /* work out the possible clones later */ output->possible_clones = 0; - for (i = 0; i < koutput->count_props; i++) { - props = drmModeGetProperty(pAMDGPUEnt->fd, koutput->props[i]); - if (props && (props->flags & DRM_MODE_PROP_ENUM)) { - if (!strcmp(props->name, "DPMS")) { - drmmode_output->dpms_enum_id = - koutput->props[i]; - drmModeFreeProperty(props); - break; - } - } - drmModeFreeProperty(props); - } + drmmode_output->dpms_enum_id = + koutput_get_prop_id(pAMDGPUEnt->fd, koutput, DRM_MODE_PROP_ENUM, + "DPMS"); if (dynamic) { output->randr_output = RROutputCreate(xf86ScrnToScreen(pScrn), output->name, strlen(output->name), output); @@ -2693,7 +2705,7 @@ amdgpu_mode_hotplug(ScrnInfoPtr scrn, drmmode_ptr drmmode) xf86OutputPtr output = config->output[i]; xf86CrtcPtr crtc = output->crtc; drmmode_output_private_ptr drmmode_output = output->driver_private; - uint32_t con_id; + uint32_t con_id, idx; drmModeConnectorPtr koutput; if (!crtc || !drmmode_output->mode_output) @@ -2704,22 +2716,22 @@ amdgpu_mode_hotplug(ScrnInfoPtr scrn, drmmode_ptr drmmode) * look for the link-status property */ koutput = drmModeGetConnectorCurrent(pAMDGPUEnt->fd, con_id); - for (j = 0; koutput && j < koutput->count_props; j++) { - drmModePropertyPtr props; - props = drmModeGetProperty(pAMDGPUEnt->fd, koutput->props[j]); - if (props && props->flags & DRM_MODE_PROP_ENUM && - !strcmp(props->name, "link-status") && - koutput->prop_values[j] == DRM_MODE_LINK_STATUS_BAD) { - /* the connector got a link failure, re-set the current mode */ - drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, - crtc->x, crtc->y); - - xf86DrvMsg(scrn->scrnIndex, X_WARNING, - "hotplug event: connector %u's link-state is BAD, " - "tried resetting the current mode. You may be left " - "with a black screen if this fails...\n", con_id); - } - drmModeFreeProperty(props); + if (!koutput) + continue; + + idx = koutput_get_prop_idx(pAMDGPUEnt->fd, koutput, + DRM_MODE_PROP_ENUM, "link-status"); + + if ((idx > -1) && + (koutput->prop_values[idx] == DRM_MODE_LINK_STATUS_BAD)) { + /* the connector got a link failure, re-set the current mode */ + drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, + crtc->x, crtc->y); + + xf86DrvMsg(scrn->scrnIndex, X_WARNING, + "hotplug event: connector %u's link-state is BAD, " + "tried resetting the current mode. You may be left" + "with a black screen if this fails...\n", con_id); } drmModeFreeConnector(koutput); } -- 2.16.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <20180222175253.13842-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>]
* [PATCH xf86-video-amdgpu 2/3] modesetting: Reset output_id if drmModeGetConnector failed [not found] ` <20180222175253.13842-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org> @ 2018-02-22 17:52 ` Michel Dänzer 2018-02-22 17:52 ` [PATCH xf86-video-amdgpu 3/3] modesetting: Update property values at detect and uevent time Michel Dänzer 1 sibling, 0 replies; 4+ messages in thread From: Michel Dänzer @ 2018-02-22 17:52 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW From: Daniel Martin <consume.noise@gmail.com> If drmModeGetConnector() fails in drmmode_output_detect(), we have to reset the output_id to -1 too. Yet another spot leading to a potential NULL dereference when handling the mode_output member as output_id was != -1. Though, this case should be very hard to hit. Signed-off-by: Daniel Martin <consume.noise@gmail.com> (Ported from xserver commit 6804875662363764683a86c1614e4cf3cc70a20a) Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> --- src/drmmode_display.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 98d2039d0..a90fdb642 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1378,8 +1378,10 @@ static xf86OutputStatus drmmode_output_detect(xf86OutputPtr output) drmmode_output->mode_output = drmModeGetConnector(pAMDGPUEnt->fd, drmmode_output->output_id); - if (!drmmode_output->mode_output) + if (!drmmode_output->mode_output) { + drmmode_output->output_id = -1; return XF86OutputStatusDisconnected; + } switch (drmmode_output->mode_output->connection) { case DRM_MODE_CONNECTED: -- 2.16.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH xf86-video-amdgpu 3/3] modesetting: Update property values at detect and uevent time [not found] ` <20180222175253.13842-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org> 2018-02-22 17:52 ` [PATCH xf86-video-amdgpu 2/3] modesetting: Reset output_id if drmModeGetConnector failed Michel Dänzer @ 2018-02-22 17:52 ` Michel Dänzer [not found] ` <20180222175253.13842-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org> 1 sibling, 1 reply; 4+ messages in thread From: Michel Dänzer @ 2018-02-22 17:52 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW From: Keith Packard <keithp@keithp.com> We were updating the link-status property when a uevent came in, but we also want to update the non-desktop property, and potentially others as well. We also want to check at detect time in case we don't get a hotplug event. This patch updates every property provided by the kernel, sending changes to DIX so it can track things as well. Signed-off-by: Keith Packard <keithp@keithp.com> (Ported from xserver commit a12485ed846b852ca14d17d1e58c8b0f2399e577, slightly modifying logic to reduce indentation depth) Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> --- src/drmmode_display.c | 104 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 86 insertions(+), 18 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index a90fdb642..746e52aa7 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -1368,6 +1368,72 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_res return 1; } +/* + * Update all of the property values for an output + */ +static void +drmmode_output_update_properties(xf86OutputPtr output) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + int i, j, k; + int err; + drmModeConnectorPtr koutput; + + /* Use the most recently fetched values from the kernel */ + koutput = drmmode_output->mode_output; + + if (!koutput) + return; + + for (i = 0; i < drmmode_output->num_props; i++) { + drmmode_prop_ptr p = &drmmode_output->props[i]; + + for (j = 0; j < koutput->count_props; j++) { + if (koutput->props[j] != p->mode_prop->prop_id) + continue; + + /* Check to see if the property value has changed */ + if (koutput->prop_values[j] == p->value) + break; + + p->value = koutput->prop_values[j]; + + if (p->mode_prop->flags & DRM_MODE_PROP_RANGE) { + INT32 value = p->value; + + err = RRChangeOutputProperty(output->randr_output, + p->atoms[0], XA_INTEGER, + 32, PropModeReplace, 1, + &value, FALSE, TRUE); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", + err); + } + } else if (p->mode_prop->flags & DRM_MODE_PROP_ENUM) { + for (k = 0; k < p->mode_prop->count_enums; k++) { + if (p->mode_prop->enums[k].value == p->value) + break; + } + if (k < p->mode_prop->count_enums) { + err = RRChangeOutputProperty(output->randr_output, + p->atoms[0], XA_ATOM, + 32, PropModeReplace, 1, + &p->atoms[k + 1], FALSE, + TRUE); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", + err); + } + } + } + + break; + } + } +} + static xf86OutputStatus drmmode_output_detect(xf86OutputPtr output) { /* go to the hw and retrieve a new output struct */ @@ -1383,6 +1449,8 @@ static xf86OutputStatus drmmode_output_detect(xf86OutputPtr output) return XF86OutputStatusDisconnected; } + drmmode_output_update_properties(output); + switch (drmmode_output->mode_output->connection) { case DRM_MODE_CONNECTED: status = XF86OutputStatusConnected; @@ -2707,35 +2775,35 @@ amdgpu_mode_hotplug(ScrnInfoPtr scrn, drmmode_ptr drmmode) xf86OutputPtr output = config->output[i]; xf86CrtcPtr crtc = output->crtc; drmmode_output_private_ptr drmmode_output = output->driver_private; - uint32_t con_id, idx; - drmModeConnectorPtr koutput; + + drmmode_output_detect(output); if (!crtc || !drmmode_output->mode_output) continue; - con_id = drmmode_output->mode_output->connector_id; /* Get an updated view of the properties for the current connector and * look for the link-status property */ - koutput = drmModeGetConnectorCurrent(pAMDGPUEnt->fd, con_id); - if (!koutput) - continue; + for (j = 0; j < drmmode_output->num_props; j++) { + drmmode_prop_ptr p = &drmmode_output->props[j]; - idx = koutput_get_prop_idx(pAMDGPUEnt->fd, koutput, - DRM_MODE_PROP_ENUM, "link-status"); + if (!strcmp(p->mode_prop->name, "link-status")) { + if (p->value != DRM_MODE_LINK_STATUS_BAD) + break; - if ((idx > -1) && - (koutput->prop_values[idx] == DRM_MODE_LINK_STATUS_BAD)) { - /* the connector got a link failure, re-set the current mode */ - drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, - crtc->x, crtc->y); + /* the connector got a link failure, re-set the current mode */ + drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, + crtc->x, crtc->y); - xf86DrvMsg(scrn->scrnIndex, X_WARNING, - "hotplug event: connector %u's link-state is BAD, " - "tried resetting the current mode. You may be left" - "with a black screen if this fails...\n", con_id); + xf86DrvMsg(scrn->scrnIndex, X_WARNING, + "hotplug event: connector %u's link-state is BAD, " + "tried resetting the current mode. You may be left" + "with a black screen if this fails...\n", + drmmode_output->mode_output->connector_id); + + break; + } } - drmModeFreeConnector(koutput); } mode_res = drmModeGetResources(pAMDGPUEnt->fd); -- 2.16.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <20180222175253.13842-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org>]
* Re: [PATCH xf86-video-amdgpu 3/3] modesetting: Update property values at detect and uevent time [not found] ` <20180222175253.13842-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org> @ 2018-02-23 5:17 ` Alex Deucher 0 siblings, 0 replies; 4+ messages in thread From: Alex Deucher @ 2018-02-23 5:17 UTC (permalink / raw) To: Michel Dänzer; +Cc: amd-gfx list On Thu, Feb 22, 2018 at 12:52 PM, Michel Dänzer <michel@daenzer.net> wrote: > From: Keith Packard <keithp@keithp.com> > > We were updating the link-status property when a uevent came in, but > we also want to update the non-desktop property, and potentially > others as well. We also want to check at detect time in case we don't > get a hotplug event. > > This patch updates every property provided by the kernel, sending > changes to DIX so it can track things as well. > > Signed-off-by: Keith Packard <keithp@keithp.com> > > (Ported from xserver commit a12485ed846b852ca14d17d1e58c8b0f2399e577, > slightly modifying logic to reduce indentation depth) > > Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Series is: Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > --- > src/drmmode_display.c | 104 +++++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 86 insertions(+), 18 deletions(-) > > diff --git a/src/drmmode_display.c b/src/drmmode_display.c > index a90fdb642..746e52aa7 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -1368,6 +1368,72 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, drmModeResPtr mode_res > return 1; > } > > +/* > + * Update all of the property values for an output > + */ > +static void > +drmmode_output_update_properties(xf86OutputPtr output) > +{ > + drmmode_output_private_ptr drmmode_output = output->driver_private; > + int i, j, k; > + int err; > + drmModeConnectorPtr koutput; > + > + /* Use the most recently fetched values from the kernel */ > + koutput = drmmode_output->mode_output; > + > + if (!koutput) > + return; > + > + for (i = 0; i < drmmode_output->num_props; i++) { > + drmmode_prop_ptr p = &drmmode_output->props[i]; > + > + for (j = 0; j < koutput->count_props; j++) { > + if (koutput->props[j] != p->mode_prop->prop_id) > + continue; > + > + /* Check to see if the property value has changed */ > + if (koutput->prop_values[j] == p->value) > + break; > + > + p->value = koutput->prop_values[j]; > + > + if (p->mode_prop->flags & DRM_MODE_PROP_RANGE) { > + INT32 value = p->value; > + > + err = RRChangeOutputProperty(output->randr_output, > + p->atoms[0], XA_INTEGER, > + 32, PropModeReplace, 1, > + &value, FALSE, TRUE); > + if (err != 0) { > + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, > + "RRChangeOutputProperty error, %d\n", > + err); > + } > + } else if (p->mode_prop->flags & DRM_MODE_PROP_ENUM) { > + for (k = 0; k < p->mode_prop->count_enums; k++) { > + if (p->mode_prop->enums[k].value == p->value) > + break; > + } > + if (k < p->mode_prop->count_enums) { > + err = RRChangeOutputProperty(output->randr_output, > + p->atoms[0], XA_ATOM, > + 32, PropModeReplace, 1, > + &p->atoms[k + 1], FALSE, > + TRUE); > + if (err != 0) { > + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, > + "RRChangeOutputProperty error, %d\n", > + err); > + } > + } > + } > + > + break; > + } > + } > +} > + > static xf86OutputStatus drmmode_output_detect(xf86OutputPtr output) > { > /* go to the hw and retrieve a new output struct */ > @@ -1383,6 +1449,8 @@ static xf86OutputStatus drmmode_output_detect(xf86OutputPtr output) > return XF86OutputStatusDisconnected; > } > > + drmmode_output_update_properties(output); > + > switch (drmmode_output->mode_output->connection) { > case DRM_MODE_CONNECTED: > status = XF86OutputStatusConnected; > @@ -2707,35 +2775,35 @@ amdgpu_mode_hotplug(ScrnInfoPtr scrn, drmmode_ptr drmmode) > xf86OutputPtr output = config->output[i]; > xf86CrtcPtr crtc = output->crtc; > drmmode_output_private_ptr drmmode_output = output->driver_private; > - uint32_t con_id, idx; > - drmModeConnectorPtr koutput; > + > + drmmode_output_detect(output); > > if (!crtc || !drmmode_output->mode_output) > continue; > > - con_id = drmmode_output->mode_output->connector_id; > /* Get an updated view of the properties for the current connector and > * look for the link-status property > */ > - koutput = drmModeGetConnectorCurrent(pAMDGPUEnt->fd, con_id); > - if (!koutput) > - continue; > + for (j = 0; j < drmmode_output->num_props; j++) { > + drmmode_prop_ptr p = &drmmode_output->props[j]; > > - idx = koutput_get_prop_idx(pAMDGPUEnt->fd, koutput, > - DRM_MODE_PROP_ENUM, "link-status"); > + if (!strcmp(p->mode_prop->name, "link-status")) { > + if (p->value != DRM_MODE_LINK_STATUS_BAD) > + break; > > - if ((idx > -1) && > - (koutput->prop_values[idx] == DRM_MODE_LINK_STATUS_BAD)) { > - /* the connector got a link failure, re-set the current mode */ > - drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, > - crtc->x, crtc->y); > + /* the connector got a link failure, re-set the current mode */ > + drmmode_set_mode_major(crtc, &crtc->mode, crtc->rotation, > + crtc->x, crtc->y); > > - xf86DrvMsg(scrn->scrnIndex, X_WARNING, > - "hotplug event: connector %u's link-state is BAD, " > - "tried resetting the current mode. You may be left" > - "with a black screen if this fails...\n", con_id); > + xf86DrvMsg(scrn->scrnIndex, X_WARNING, > + "hotplug event: connector %u's link-state is BAD, " > + "tried resetting the current mode. You may be left" > + "with a black screen if this fails...\n", > + drmmode_output->mode_output->connector_id); > + > + break; > + } > } > - drmModeFreeConnector(koutput); > } > > mode_res = drmModeGetResources(pAMDGPUEnt->fd); > -- > 2.16.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-02-23 5:17 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-02-22 17:52 [PATCH xf86-video-amdgpu 1/3] modesetting: Use helper to fetch drmModeProperty(Blob)s Michel Dänzer [not found] ` <20180222175253.13842-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org> 2018-02-22 17:52 ` [PATCH xf86-video-amdgpu 2/3] modesetting: Reset output_id if drmModeGetConnector failed Michel Dänzer 2018-02-22 17:52 ` [PATCH xf86-video-amdgpu 3/3] modesetting: Update property values at detect and uevent time Michel Dänzer [not found] ` <20180222175253.13842-3-michel-otUistvHUpPR7s880joybQ@public.gmane.org> 2018-02-23 5:17 ` Alex Deucher
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.