Hi,
a) My understanding of this patch is that we move from an array of 16 bools representing anything to one array where the 1st 16 represent if there are input and the 2nd 16's reprosenting if there are output for that channel.
Correct.
So, what we should do if we migrate from one old version that only has 16 bools? My understanding is that copying directly is not gonna work?
Yes. Putting output first increases the chance that it works as sound playback is used much more than sound recording.
I think hda-audio doesn't need so safe any running state. intel-hda knows which streams are running and it can call intel_hda_notify_codecs() for each stream in intel_hda_post_load(). The only problem is that intel_hda_post_load() might get called before hda-audio state is loaded.
Now how to handle compatibility? We can have a running_compat[] array with the current (broken) semantics, so we can write out the state which older qemu versions expect to see. Also on load running_compat[] will be filled, and any state already set by intel_hda_post_load in running_real[] (or however we'll name this) will be kept intact.
cheers, Gerd