lkml.org 
[lkml]   [2011]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 1/2] Use "request_muxed_region" in it87 watchdog drivers
    On Thu, Apr 14, 2011 at 09:18:57PM -0400, Natarajan Gurumoorthy wrote:
    > On Thu, Apr 14, 2011 at 3:49 PM, Guenter Roeck
    > <guenter.roeck@ericsson.com> wrote:
    > > This is way too complicated. Just return an error if
    > > request_muxed_region fails, like all other callers of
    > > request_muxed_region do.
    > >
    > Guenter,
    > This maybe a little complicated but it is a solution that will
    > correctly deal with the following scenario:
    > Hardware: it8712f
    > cpu: Multicore
    > kernel: smp
    > Modules being loaded during initialization: it8712f_wtd and w83697hf
    >
    > The problem is one of the cores is halfway through initializing
    > it8712f_wdt and another core is just starting to run the
    > "w83697hf_check_wdt" which is going to call "request_region" to
    > reserve 0x2e 0x2f region. Just after that call on the other core
    > it8712f_wdt_init calls it8712f_wdt_disable which calls superio_enter
    > which will call "request_muxed_region" for the exact same region. This
    > is guaranteed to fail because as of now w83697hf is one of the many
    > non compliant drivers who are calling "request_region". The w83697hf
    > will do the probe and conclude there is no w83697hf chip in the system
    > and abort rest of the driver initialization. Meanwhile the it8712f_wtd
    > driver initialization will fail. This will be one of those
    > intermittent failures that make most kernel device driver writers
    > prematurely bald :-).
    >
    > The way I have reworked the driver will survive the above scenario.
    >
    Unless I am missing something, the problem is that there is another driver
    calling request_region() instead of request_muxed_region().

    w83697hf_check_wdt() (and other drivers doing the same) should call
    request_muxed_region(). Otherwise, the same problem could happen with the
    caller(s) of request_region() - those calls could fail as well.
    Plus, other callers of request_muxed_reason() not implementing
    your retry code could end up with the same problem, ie with spurious failures.

    I think we will have to find a solution which does not require retries
    when calling request_muxed_region(). On the other side, others know
    this code much better than I do, so maybe someone has a better solution.

    Thanks,
    Guenter


    \
     
     \ /
      Last update: 2011-04-15 04:43    [W:0.023 / U:62.752 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site