Hi Guenter,
At least I never got this error, I borrow this from another WDT driver in mainline kernel, I think it's good to check if our operation is executed well.

Thanks :-)

On 8 May 2015 at 01:53, Guenter Roeck <linux@roeck-us.net> wrote:
On Fri, May 08, 2015 at 12:40:49AM +0800, Fu Wei wrote:
> Hi Guenter,
>
>
>
> On 5 May 2015 at 00:36, Guenter Roeck <linux@roeck-us.net> wrote:
>
> > On Tue, May 05, 2015 at 12:03:05AM +0800, Fu Wei wrote:
> > > Hi Guenter,
> > >
> > > Great thanks for your feedback, will fix them ASAP.
> > > Some feedback and comment inline below :
> > >
> > [ ... ]
> >
> > > >> +
> > > >> +static int sbsa_gwdt_stop(struct watchdog_device *wdd)
> > > >> +{
> > > >> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
> > > >> +       struct sbsa_gwdt_device_data *device_data =
> > &gwdt->device_data;
> > > >> +
> > > >> +       u32 status;
> > > >> +
> > > >> +       mutex_lock(&device_data->lock);
> > > >> +       status = sbsa_gwdt_cf_read(SBSA_GWDT_WCS, wdd);
> > > >> +       status &= ~SBSA_GWDT_WCS_EN;
> > > >> +       /* writing WCS will cause an explicit watchdog refresh */
> > > >> +       sbsa_gwdt_cf_write(SBSA_GWDT_WCS, status, wdd);
> > > >> +       status = sbsa_gwdt_cf_read(SBSA_GWDT_WCS, wdd);
> > > >> +       mutex_unlock(&device_data->lock);
> > > >> +
> > > >> +       /* Check if the watchdog was disabled */
> > > >> +       if (status & SBSA_GWDT_WCS_EN)
> > > >> +               return -EACCES;
> > > >>
> > > >
> > > > Same as above.
> > >
> > >
> > > For these two, maybe EPERM?
> > >
> > "Operation not permitted" seems just as wrong. Both usually reflect a
> > software
> > state, not a failure to write to hardware.
> >
> > The question here really is if this can really happen, and, if it does,
> > why it happens. In general it is quite uncommon for watchdog drivers to
> > verify if such writes were successful.
> >
>
> I think , EIO is the best one,  we config the reg to enable it , but fail,
> the mean we have problem on bus/IO,
> Do you agree?
>
Ok. Question though is still if this is a realistic error.
In other words, is there any reason to believe that this can happen ?
Because it is not really common in the kernel to read back a value from an
io register unless there is reason to believe that a write can fail.
Or, in other words, io writes are commonly seen to be reliable unless
there is reason to believe otherwise.

Thanks,
Guenter



--
Best regards,

Fu Wei
Software Engineer
Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch
Ph: +86 21 61221326(direct)
Ph: +86 186 2020 4684 (mobile)
Room 1512, Regus One Corporate Avenue,Level 15,
One Corporate Avenue,222 Hubin Road,Huangpu District,
Shanghai,China 200021