I'm surprised this required implementing a whole new sleep mode. Since it seems to be mostly used for async background tasks, why not configure the RTC to wake the laptop every hour or so (I think every laptop in existence already supports suspend with timeout) and go back to suspend if no tasks need to be done?