On 07/31, Timur Kristóf wrote: > When getting the number of connectors, the VBIOS reports > the number of valid indices, but it doesn't say which indices > are valid, and not every valid index has an actual connector. > If we don't find a connector on an index, that is not an error. > > Considering these are not actual errors, don't litter the logs. > > Fixes: 60df5628144b ("drm/amd/display: handle invalid connector indices") > Signed-off-by: Timur Kristóf <timur.kris...@gmail.com> > --- > drivers/gpu/drm/amd/display/dc/bios/bios_parser.c | 5 +---- > drivers/gpu/drm/amd/display/dc/core/dc.c | 15 ++++++++++++++- > 2 files changed, 15 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c > b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c > index 67f08495b7e6..154fd2c18e88 100644 > --- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c > +++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c > @@ -174,11 +174,8 @@ static struct graphics_object_id > bios_parser_get_connector_id( > return object_id; > } > > - if (tbl->ucNumberOfObjects <= i) { > - dm_error("Can't find connector id %d in connector table of size > %d.\n", > - i, tbl->ucNumberOfObjects); > + if (tbl->ucNumberOfObjects <= i) > return object_id; > - } > > id = le16_to_cpu(tbl->asObjects[i].usObjectID); > object_id = object_id_from_bios_object_id(id); > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c > b/drivers/gpu/drm/amd/display/dc/core/dc.c > index cf3893a2f8ce..33d6a5116aad 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c > @@ -217,11 +217,24 @@ static bool create_links( > connectors_num, > num_virtual_links); > > - // condition loop on link_count to allow skipping invalid indices > + /* When getting the number of connectors, the VBIOS reports the number > of valid indices, > + * but it doesn't say which indices are valid, and not every index has > an actual connector. > + * So, if we don't find a connector on an index, that is not an error. > + * > + * - There is no guarantee that the first N indices will be valid > + * - VBIOS may report a higher amount of valid indices than there are > actual connectors > + * - Some VBIOS have valid configurations for more connectors than > there actually are > + * on the card. This may be because the manufacturer used the same > VBIOS for different > + * variants of the same card. > + */ > for (i = 0; dc->link_count < connectors_num && i < MAX_LINKS; i++) { > + struct graphics_object_id connector_id = > bios->funcs->get_connector_id(bios, i); > struct link_init_data link_init_params = {0}; > struct dc_link *link; > > + if (connector_id.id == CONNECTOR_ID_UNKNOWN) > + continue; > + > DC_LOG_DC("BIOS object table - printing link object info for > connector number: %d, link_index: %d", i, dc->link_count); > > link_init_params.ctx = dc->ctx; > -- > 2.50.1 >
Reviewed-by: Rodrigo Siqueira <sique...@igalia.com> -- Rodrigo Siqueira