@User: I just got around to looking at the video to double-check that everything in it is correct (which it is)---very nice video, very helpful. In reference to my statement above, though: As we were making a few adjustments to the power routing layout on caravel at the last minute, we went ahead and pushed the modification that makes available two additional useful modes. This does not invalidate anything in your video. There is one additional state (GPIO configuration word 0x1802) that allows the user project to drive the GPIO as output while simultaneously reading that value at the pin and in the management SoC program. The other state allows the management SoC program to drive the GPIO as output while simultaneously reading that value at the pin and in the user project. That one has a slightly tricky setup: The pin must be configured as a management-controlled bidirectional pin (0x1801), then the pins updated, and then the pin configuration changed to management-controlled output (0x1809) without updating the pins. The upshot is that you can treat the management SoC like an independent chip that is communicating with the user project, or run another program that decouples them completely.