• Peter Ujfalusi's avatar
    ASoC: topology: Select SND_DYNAMIC_MINORS · 2635c226
    Peter Ujfalusi authored
    The indexes of the devices are described within the topology file, it is a
    possibility that the topology encodes invalid indexes when DYNAMIC_MINORS
    is not enabled in kernel:
    
     #define SNDRV_MINOR_COMPRESS		2	/* 2 - 3 */
     #define SNDRV_MINOR_HWDEP		4	/* 4 - 7 */
     #define SNDRV_MINOR_RAWMIDI		8	/* 8 - 15 */
     #define SNDRV_MINOR_PCM_PLAYBACK	16	/* 16 - 23 */
     #define SNDRV_MINOR_PCM_CAPTURE	24	/* 24 - 31 */
    
    If the topology assigns an index greater than 7 for PLAYBACK/CAPTURE PCM
    then there will be minor number collision.
    
    As an example:
    card0 creates a capture PCM with index 10 -> minor = 34
    card1 creates compress device with index 0 -> minor = 34
    
    Card1 will fail to instantiate because the minor for the compress stream is
    already taken.
    
    To avoid seemingly mysterious issues with card creation, select the
    DYNAMIC_MINORS when the topology is enabled.
    
    The other option would be to try to do out of bound index checks in case of
    DYNAMIC_MINOR is not enabled and do not even attempt to create the device
    with failing the topology load.
    Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20210726182142.179604-1-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    2635c226
Kconfig 2.71 KB