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

Cezary Rojewski cezary.rojewski at intel.com
Mon Aug 26 22:08:37 CEST 2019


On 2019-08-26 18:51, Pierre-Louis Bossart wrote:
> 
> 
> On 8/26/19 2:24 AM, Wasko, Michal wrote:
>>
>> On 8/25/2019 1:06 PM, Cezary Rojewski wrote:
>>> On 2019-08-24 15:51, Cezary Rojewski wrote:
>>>> On 2019-08-23 23:39, Mark Brown wrote:
>>>>> On Fri, Aug 23, 2019 at 03:12:18PM -0500, Pierre-Louis Bossart wrote:
>>>>>> On 8/23/19 1:44 PM, Cezary Rojewski wrote:
>>>>>
>>>>>>> Wasn't lying about FW version being unreliable. Let's say vendor
>>>>>>> receives quick FW drop with new RCR.. such eng drop may carry 
>>>>>>> invalid
>>>>>>> numbers such as 0.0.0.0..
>>>>>>> In general, I try to avoid relying on FW version whenever 
>>>>>>> possible. It
>>>>>>> can be dumped for debug reasons, true, but to be relied on? Not 
>>>>>>> really.
>>>>>
>>>>>> Goodness, that's really bad. I didn't realize this.
>>>>>
>>>>> At a previous employer I modified our build stamping
>>>>> infrastructure to also include both a timestamp and a serialized
>>>>> build number in the version number since one of my colleagues was
>>>>> fond of sending people prereleases of what he was working on to
>>>>> other people with identical version numbers on different
>>>>> binaries leading to much confusion and checksumming.  You do see
>>>>> a lot of things with those serialized version numbers, especially
>>>>> SVN based projects.
>>>>>
>>>>>>> Personally, I'm against all hardcodes and would simply recommend all
>>>>>>> user to redirect their symlinks when they do switch kernel - 
>>>>>>> along with
>>>>>>> dumping warning/ error message in dmesg. Hardcodes bring problems 
>>>>>>> with
>>>>>>> forward compatibility and that's why host should offload them 
>>>>>>> away to
>>>>>>> FW.
>>>>>
>>>>>> Cezary, I know you are not responsible for all this, but at this 
>>>>>> point if we
>>>>>> (Intel) can't guarantee any sort of interoperability with both 
>>>>>> firmware and
>>>>>> topology we should make it clear that this driver is not 
>>>>>> recommended unless
>>>>>> specific versions of the firmware/topology are used, and as a 
>>>>>> consequence
>>>>>> the typical client distros and desktop/laptop users should use 
>>>>>> HDaudio
>>>>>> legacy or SOF (for DMICs)
>>>>>
>>>>> Not the most elegent solution but I'm wondering if keeping a copy
>>>>> of the driver as is around and using new locations for the fixed
>>>>> firmware might be the safest way to handle this.  We could have a
>>>>> wrapper which tries to load the newer firmware and uses the fixed
>>>>> driver code if that's there, otherwise tries the old driver with
>>>>> the existing firmware paths.  This is obviously a horror show and
>>>>> leaves the old code sitting there but given the mistakes that
>>>>> have been made the whole situation looks like a house of cards.
>>>>>
>>>>
>>>> Thanks for the feedback Mark. While I'm not yet on the "SOF will fix 
>>>> this" train, I'm keen to agree to leaving this entirely to SOF if it 
>>>> comes down to us duplicating /skylake.
>>>>
>>>> However, we are not going to give up that easily. I'll see if some 
>>>> "golden config" hardcodes can't be provided in some legacy.c file 
>>>> which would be fetched if initial setup fails. E.g.: 2cores, 3ssps, 
>>>> 1PAGE_SIZE per trace buffer.. and such. There are quite a few 
>>>> factors to take into consideration though. If "asking" user via 
>>>> dmesg to upgrade the firmware if his/her setup contains obsolete 
>>>> binary is really not an option, then some magic words got to be 
>>>> involved.
>>>>
>>>> Czarek
>>>
>>> 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.
> 
>>
>> In terms of FW topology compatibility there is an option to read from 
>> topology manifest
>> a FW version that it was build for and in  case if it does not match 
>> FW version present on
>> the platform then print warning that the FW topology binary should be 
>> rebuild for current
>> FW version (x.x.x.x).
> 
> Can you provide a pointer on how the FW version is embedded in a 
> .conf/.tplg file? I see a couple where that information does not seem 
> present.
> 
>> The above approach at the end may be less confusing then source code 
>> or binary duplication.
> 

Indeed. Our existing topology skips that part of internal .xml and thus 
such information is not propagated to kernel.

Pierre, how about the binary-duplication - as described above? Btw, 
that's not a single firmware file ^)^ We would immediately update all of 
them, together with topologies.


More information about the Alsa-devel mailing list