On Fri, Jan 18, 2019 at 05:02:08PM -0600, Pierre-Louis Bossart wrote:
This PROBE_DEFER support actually breaks the topology override that we've been relying on for SOF (and which has been in Mark's branch for some time now). This override helps us reuse machine drivers between legacy and SOF-based solutions.
With the current code, the tests in soc_register_card() complain that the platform_name can't be tied to a component and stop the card registration, but that's mainly because the tests are done before the topology overrides are done in soc_check_tplg_fes(). Moving soc_check_tplg_fes() from soc_instantiate_card() to an earlier time in soc_register_card() works-around the problem but looks quite invasive (mutex lock, etc).
Right, I see. I don't think there's going to be any non-invasive solution here, either we need to stop overriding bits of the machine driver relevant to binding in the topology files like this or we need to look at the topology files in the probe deferral stuff so it's either going to be very invasive for the machine driver or the core. I'm tempted to say that the machine driver is a better option here.
This last assignment guarantees that memory will be allocated every time this function is called, and whatever overrides are done later will themselves be overridden by the new allocation. I am not sure what the intent was here, Curtis can you please double-check?
The intent is to avoid modifying statically allocated data so we can tell the difference between pointers set up statically as init data and those that are filled in at runtime.