So we are coming to an agreement... I will go with the option of ADS calling intel_guc_capture and asking it for the temp buf ptr and size and let ADS do the actual copying. I will have to see how straight forward the copying will be (if u see RFC-rev1 of this series, the ADS does the full population and calls intel_guc_capture just for the external (not io-mem) register list pointer. But a lot of code that got injected into ADS as it traversed through individual error capture substructure members. One last comment on below: > > Alan: The first part of above is already what is happening in my series today, > > we have a seperate register list in the intel_guc_capture module > > no, what you have in this patch I commented on is: > > > > > > > > + /* Lists for error capture debug */ > > > > > > > + intel_guc_capture_prep_lists(guc, (struct guc_ads *)blob, base, > > you are passing the complete ads blob outside. I'd even try to avoid passing > the second level struct depending on the case, but that would be > much more acceptable. I'm sorry I wasnt clear, what i meant is just the part about having an interim buffer for the error capture register list outside of ADS blob io-memory. That already exists in all rev's of this series but in rev 3 onwards, as u pointed out above, the external buffer ptr was not passed to ADS and i was taking the blob ptr from ADS. Rev-1-RFC probably is closer to what we want. ...alan