Only Intel knows everything, I guess even Microsoft doesn't (try running Windows without all the Intel chipset drivers installed...). If you take a modern laptop and put Linux on it, it's possible that you'll only able to get 50% of the battery life. And there's nothing you can do about it.
But even hibernation doesn't always work. My custom-built desktop PC frequently wakes itself out of hibernation in the middle of the night. I don't even know how that's possible, because I thought hibernation was "off, with RAM saved to storage". Which is just wonderful when I'm sleeping in the same room.
This is generally using ACPI 'wake timers', which allow the RTC on the motherboard to wake up the system at a particular time (which I think is a useful feature, but only if explicitly requested by a user). Windows is particularly bad at this, since scheduled events are allowed to use this by default to wake up the PC when they are supposed to fire (and 'UpdateOrchastrator' has one which fires in the middle of the night). There's a decent bit of info on how to identify why this is happening and stop it here:
The third allowed option (Linux) is wake on lan, which is only triggered through my laptop. I automate WOL events sometimes over cronjobs, when the big machine needs to do some work overnight for some minutes, but very rarely, because it's too loud. But I do those wake up, sleep cycles occasionally automatically when the machine processes big events like the Berlinale, Cannes or Sundance Film Festivals.
Alternatively, you can disable connected/modern standby altogether and revert to traditional S3 sleep. You lose that instant-on tablet effect, but it should fix the excess battery drain too.
On some forums I read that people suspect its the virus scanner or some other scheduled task that is doing this. If someone knows why this is actually happening then that knowledge would be appreciated.
It's made me consider installing Windows and developing inside VirtualBox.
When Linux was still small, each and every major hardware platform was worked on until mirror polish, and it worked "well."
Now, the only criteria, when Linux mainly relies on hardware maker programmers to do their job, is that the code compiles and works.
Without much pressure from users, there is nobody to push against "barely works" driver code.
That said, I don't think any laptop has a PCIe to PCI bridge. This should only affect some desktops and servers.