• D
    rtc-cmos: improve HPET IRQ glue · 35d3fdd5
    David Brownell 提交于
    Resolve http://bugzilla.kernel.org/show_bug.cgi?id=11051 and other bugs
    related to the way the HPET glue code in rtc-cmos was incomplete and
    inconsistent:
    
     * Switch the approach so that the basic driver code flow isn't
       changed by having HPET ... instead, just have HPET shadow the
       RTC_CONTROL irq enables and RTC_FREQ_SELECT data.  It's only
       coping with IRQ thievery, after all.
    
     * Do that consistently (!!) to avoid problems when the HPET code
       is out of sync with the real RTC intent.  Examples include:
    
       - cmos_procfs(), which now reports correct data
    
       - cmos_irq_set_state() ... also removing the previous PIE_{ON,OFF}
         ioctl support so only one code path manages "periodic" IRQs
    
       - cmos_do_shutdown() ... currently a "just in case" change.
    
       - cmos_suspend() and cmos_resume() ... also handling a bug that
         was specific to HPET's IRQ thievery, where the alarm wasn't
         disabled after waking the system
    
     * Always call that HPET code under the RTC spinlock (it doesn't do
       its own locking)
    
    Also clean up the HPET glue:
    
     * Add some comments explaining what's going on.
    
     * Switch to having just one #ifdef for the HPET glue, and inline
       functions (not #defines) to avoid some compiler warnings.
    
     * Have the probe message also report when HPET IRQs are involved
    
    This still leaves various holes in the HPET glue, like the emulated update
    IRQs being out of sync with the RTC, alarms never using day or month
    matches, and many extra IRQs (at 64 Hz).
    
    [akpm@linux-foundation.org: fix build]
    Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Tomas Janousek <tomi@nomi.cz>
    Cc: Bernhard Walle <bwalle@suse.de>
    Cc: Carlos R. Mafra <crmafra@ift.unesp.br>
    Acked-by: NAlessandro Zummo <a.zummo@towertech.it>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    35d3fdd5
rtc-cmos.c 26.1 KB