Using BetterBatteryStats, I discovered that the browser and Google Play Services were both generating absurd numbers of wakelocks via NlpCollectorWakelock. Turning off location services "fixed" this, but also disabled all location services. Not a real useful solution for someone who actually uses location services, especially since there's no "fast" way to enable location services and GPS all at once from location completely off.
This was annoying enough, but then I noticed as well that I was getting another wakelock when on wifi: msm_hsic_host. This didn't happen every time, but it seemed to be entirely linked to using wifi. Again, like the location services wakelocks, this conspired to murder battery life. Rebooting seemed to clear this one, but the fact that it exists at all in CM11 (and does not happen ever in CM10.2) is causing me a problem in that I have to allow wifi to turn itself off when the phone sleeps. This uses less battery than getting stupid wakelocks but not less than simply leaving wifi on all the time in CM10.2. So that's annoying.
These issues conspired to kill my battery life so thoroughly that I flashed back to CM10.2 and everything was fine, but Kitkat brings a lot of great things that I really don't want to give up. So I tried installing CM11 again, this time using the M6 snapshot release. At first, everything was pretty cool and I didn't see any unusual wakelocks, but after a few days, the wakelocks returned. All of the same ones from the nightly I used back in March!
NlpCollectorWakelock on both the Browser and Google Play Services, and msm_hsic_host whenever using wifi. The gremlins were back and my battery started going fast.
This time I tried a few things to help and managed to kill the NlpCollectorWakelock issues simply by using App Ops to prevent Play Services and the Browser from ever being allowed to create a wakelock. That actually worked really, really well to kill those wakelocks and any others (I don't see any reason why either application would need to wakelock my device other than to phone home to Google and tell them where the phone is, and my tests have borne this out, though occasionally the restricted apps will force-close when I wake the phone from sleep).
However, this didn't stop the msm_hsic_host kernel wakelocks. I can't stop them other than by either not using wifi at all (not an option) or allowing the device to power the wifi radio off when the device is asleep, or simply dealing with msm_hsic_host wakelocks when they appear, rebooting the device whenever I catch them. For now this is what I'm doing, letting the device power off my wifi radio, but it's annoying because my signal at home is bad and I sometimes miss notifications when in certain rooms of my apartment due to dropped cell signal.
Anyway, I don't really want to have to go back to CM10.2 again. But having my battery randomly slaughtered by msm_hsic_host wakelocks are making it somewhat less useful. I had this wakelock hit me tonight and for five hours the phone was awake when it should have been asleep for four hours and fifty minutes... and I dropped from 75% to 55% battery in that five hours. That's absolutely crippling.
Some things are attached below--unfortunately I didn't take screenshots of BetterBatteryStats before rebooting and the log doesn't stick around after reboots in Kitkat like it did in 4.3.
ROM: CyanogenMod 11 M6 release
Kernel: Stock CM11 kernel
Radio: .33/.98 hybrid radio (LTE enabled)