[alsa-devel] [PATCH 00/35] ASoC: Intel: Clenaup SST initialization

Cezary Rojewski cezary.rojewski at intel.com
Tue Aug 27 17:08:26 CEST 2019


On 2019-08-27 17:00, Pierre-Louis Bossart wrote:

>>>>>>>>> On the second thought what if instead of duplicating kernel 
>>>>>>>>> code, binaries would be duplicated?
>>>>>>>>> I.e. rather than targeting /intel/dsp_fw_cnl.bin, _new_ 
>>>>>>>>> /skylake would be expecting /intel/dsp_fw_cnl_release.bin? Same 
>>>>>>>>> with topology binaries.
>>>>>>>>> In such case, we "only" need to figure out how to propagate new 
>>>>>>>>> files to Linux distos so whenever someone updates their kernel, 
>>>>>>>>> new binaries are already present in their /lib/firmware.
>>>>>>>>>
>>>>>>>>> If such option is valid, we can postpone /skylake upgrade till 
>>>>>>>>> 5.4 merging window closes and the patches (rough estimation is 
>>>>>>>>> 150) would descend upon alsa-devel in time between 5.4 and 5.5.
>>>>>>>>
>>>>>>>> If the driver and FW update will be within the same kernel 
>>>>>>>> release then IMHO
>>>>>>>> there should be no compatibility problem between those two 
>>>>>>>> components, right?
>>>>>>>> This way kernel users willing to stick to old FW can stay on 
>>>>>>>> older kernel version while
>>>>>>>> others can update and receive all the latest FW functionality 
>>>>>>>> that was developed and enabled.
>>>>>>>
>>>>>>> I am not comfortable with precluding a kernel update because of a 
>>>>>>> single firmware file. There are all sort of reasons for updating 
>>>>>>> a kernel, security, sideband attacks and Android CDD 
>>>>>>> compatibility being the most obvious ones.
>>>>>>>
>>>> The single firmware file will not be a blocker as the driver 
>>>> included in updated kernel will support it.
>>>> All you have to do is the little effort to re-generate your custom 
>>>> topology for the new firmware target.
>>>> The entire operation should not be a problem as there are dedicated 
>>>> utilities like FDK to do that.
>>>
>>> The issue is the same whether it's a topology file or a firmware 
>>> file. The ideal situation is that when the kernel is updated it 
>>> handles both in backwards compatible ways.
>>>
>>> If to deal with a new firmware file you have to regenerate a new 
>>> topology, you are in a different model altogether.
>>>
>>>> Your statement Pierre suggest that everyone should avoid any 
>>>> functional changes in kernel
>>>> that are not critical because that would be problematic for others 
>>>> who switch from older kernel version.
>>>   All I said was that you cannot assume that people who are using an 
>>> old firmware/driver will remain on an old kernel.
>>>
>>> Mark made an initial proposal to essentially freeze the current 
>>> solution, which would make it possible to update the kernel but keep 
>>> the same skylake driver in legacy/maintenance mode only, and an 'new' 
>>> option that would rely on an updated distribution of firmware/driver. 
>>> I did not get the counter proposal from Cezary at all.
>>
>> Ain't my previous message:
>>
>> -
>>
>> On the second thought what if instead of duplicating kernel code, 
>> binaries would be duplicated?
>> I.e. rather than targeting /intel/dsp_fw_cnl.bin, _new_ /skylake would 
>> be expecting /intel/dsp_fw_cnl_release.bin? Same with topology binaries.
>> In such case, we "only" need to figure out how to propagate new files 
>> to Linux distos so whenever someone updates their kernel, new binaries 
>> are already present in their /lib/firmware.
>>
>> If such option is valid, we can postpone /skylake upgrade till 5.4 
>> merging window closes and the patches (rough estimation is 150) would 
>> descend upon alsa-devel in time between 5.4 and 5.5.
>>
>> -
>>
>> a counter proposal?
> 
> you didn't explain how the 'duplicated binaries' would be selected. And 
> 'instead of' means you suggested an alternative to Mark's proposal.

What I have in mind:

We leave the old stuff as is, e.g:
/lib/firmware/intel/dsp_fw_cnl.bin -> points to _old_ FW binaries
/lib/firmware/<PCI-ID>-INTEL-<oem_data_from_NHLT -> points to old topology

Existing /skylake i.e. before our initialization refactor would (kernels 
<5.5?) would still point to these and since they are not being removed 
from linux-firmware, nothing gets broken.


And then we "duplicate" and simply append the new ones:
/lib/firmware/intel/dsp_fw_cnl_release.bin -> points to _new_ FW
/lib/firmware/dfw_cnl_rt274 -> points to _new_ topology

Updated /skylake would simply expect the _new_ files and totally ignore 
the old ones i.e.: descriptors would be pointing to dsp_fw_cnl_release 
and dfw_cnl_rt274.


More information about the Alsa-devel mailing list