Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752460AbdGRWW7 (ORCPT ); Tue, 18 Jul 2017 18:22:59 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:41039 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751962AbdGRWWp (ORCPT ); Tue, 18 Jul 2017 18:22:45 -0400 Date: Wed, 19 Jul 2017 00:22:23 +0200 (CEST) From: Thomas Gleixner To: "dbasehore ." cc: "Rafael J. Wysocki" , "Rafael J. Wysocki" , Peter Zijlstra , Linux Kernel Mailing List , Ingo Molnar , Rajneesh Bhardwaj , the arch/x86 maintainers , Platform Driver , Len Brown , Linux PM Subject: Re: [PATCH v5 2/5] tick: Add freeze timer events In-Reply-To: Message-ID: References: <20170708000303.21863-1-dbasehore@chromium.org> <7467728.lI8lN4PjS8@aspire.rjw.lan> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2177 Lines: 42 On Tue, 18 Jul 2017, dbasehore . wrote: > On Tue, Jul 18, 2017 at 2:53 PM, Thomas Gleixner wrote: > > On Tue, 18 Jul 2017, dbasehore . wrote: > >> On Mon, Jul 17, 2017 at 11:40 PM, Thomas Gleixner wrote: > >> > On Mon, 17 Jul 2017, dbasehore . wrote: > >> >> On Mon, Jul 17, 2017 at 6:33 PM, Rafael J. Wysocki wrote: > >> >> I could make a patch to try it out. I would probably add a flag to rtc > >> >> timers to indicate whether it wakes the system (default true). We > >> >> would have to add a sync with the rtc irq and the rtc irqwork. I would > >> >> probably add a rtc_timer_sync function that would flush the rtc irq > >> >> and flush the irqwork. I would call this after the freeze_ops sync > >> >> function since the sci irq needs to finish before syncing with the rtc > >> >> irq. Also, pm_wakeup_irq seems racy with the current implementation of > >> >> s2idle_loop since the RTC irq could be mistakenly set as pm_wakeup_irq > >> >> when something else actually triggered the full wakeup. Fortunately, I > >> >> don't think pm_wakeup_irq is used for anything except debugging, but > >> >> we might change that. > >> > > >> > There is another option which you might consider. We can reserve one of the > >> > HPET comparators for that purpose and have a special interrupt handler for > >> > it. Checking the HPET for expiry from the low level code should be trivial. > >> > > >> Does that handle setting up new timers properly or does the timer sync > >> code still need to be written? > > > > Sorry, I don't understand the question. What is timer sync code? > > > > Does the comparator allow you to have a completely separate alarm set > in the hardware? If there's another timer setup (say some user > specified wake alarm), we need to program that alarm after the current > one goes off if we aren't able to program multiple alarms at the same > time. The HPET consists of several independent comparator units. The kernel uses only a limited set of them. We can reserve one or more for that purpose, so it does not require any multiplexing or whatever. How many of them do you need? Thanks, tglx