So, it turns out that it's not the absence of gpio_activate, but rather, the existence of gpio_resume. my gpio stuff is apparently bound to random explosions, and merely restoring the values on resume is dangerous.
commenting out gpio_resume allows me to resume without disabling gpio(4). I'm not sure whether such a diff is acceptable, but I wouldn't be surprised if other machines have gpio bound to dangerous bits. linux also doesn't restore for gpio-ich.c, but it does for gpio-tegra.c. my next issue is with Xorg and my PS/2 input devices. I've made PR/51390 for it with a lot of info, so I won't trouble this list more with it for now. thanks and happy suspending.
