Hi Heikki, et al., As discussed before here is my fix for the AB BA lock inversion issue which lockdep found in the ucsi code. While working on the AB BA fix I added a WARN_ON(!mutex_is_locked(&ucsi->ppm_lock)) to ucsi_run_command() and that found me some more unrelated issues of ucsi_run_command() getting called without the ppm_lock held. This is fixed in the second patch. This made me realize that the ppm_lock handling should probably just be pushed down to inside ucsi_run_command() instead of letting the callers worry about this. In essence the first 3 patches are all related and all boil down to push the ppm_lock handling down into ucsi_run_command(), removing the difference between ucsi_run_command() and ucsi_send_command(). I have been thinking that we may want to just squash these 3 together. I've left them as separate patches now as thet document how I go to the end result after the 3th patch and having them separate might be easier for reviewing purposes. Let me know if you want a v2 of this patchset with them squashed into a single "usb: typec: ucsi: Rework ppm_lock handling" commit (with the commit messages merged). The 4th patch makes the also already discussed change of holding con->lock for the entire duration of ucsi_register_port(). Regards, Hans