For laughs, I commented out the power handler lines in if_ath_pci.c:
if (!pmf_device_register(self, ath_pci_suspend, ath_pci_resume))
aprint_error_dev(self, "couldn't establish power handler\n");
else {
pmf_class_network_register(self, &sc->sc_if);
pmf_device_suspend_self(self);
}
On my machine, this stopped the device disappearing in pcictl output (and
also removed the "Skipping broken PCI header on 2:0:0" line - perhaps
normally the device is being powered down too aggressively).
On the test machine, nothing is listed in "pcictl pci2 list". It is as
though the device is present throughout autoconf, but then disappears.
There is nothing in dmesg regarding this.