All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Fu Wei <fu.wei@linaro.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>,
	Linaro ACPI Mailman List <linaro-acpi@lists.linaro.org>,
	linux-watchdog@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	Wei Fu <tekkamanninja@gmail.com>,
	G Gregory <graeme.gregory@linaro.org>,
	Al Stone <al.stone@linaro.org>,
	Hanjun Guo <hanjun.guo@linaro.org>,
	Timur Tabi <timur@codeaurora.org>,
	Ashwin Chaugule <ashwin.chaugule@linaro.org>,
	Arnd Bergmann <arnd@arndb.de>,
	vgandhi@codeaurora.org, wim@iguana.be,
	Jon Masters <jcm@redhat.com>, Leo Duran <leo.duran@amd.com>,
	Jon Corbet <corbet@lwn.net>, Mark Rutland <mark.rutland@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	rjw@rjwysocki.net
Subject: Re: [PATCH v4 4/7] Watchdog: introdouce "pretimeout" into framework
Date: Tue, 9 Jun 2015 00:44:58 +0800	[thread overview]
Message-ID: <CADyBb7sfAMhcPe2QL3pmwshduW9TC_v0VyBnoZ7xhtY3y3k9vQ@mail.gmail.com> (raw)
In-Reply-To: <556DD5E1.9000104@roeck-us.net>

Hi Guenter,

Great thanks for your review,


On 3 June 2015 at 00:12, Guenter Roeck <linux@roeck-us.net> wrote:
> On 06/01/2015 09:05 PM, fu.wei@linaro.org wrote:
>>
>> From: Fu Wei <fu.wei@linaro.org>
>>
>> Also update Documentation/watchdog/watchdog-kernel-api.txt to
>> introduce:
>> (1)the new elements in the watchdog_device and watchdog_ops struct;
>> (2)the new API "watchdog_init_timeouts"
>>
>> Reasons:
>> (1)kernel already has two watchdog drivers are using "pretimeout":
>>         drivers/char/ipmi/ipmi_watchdog.c
>>         drivers/watchdog/kempld_wdt.c(but the definition is different)
>> (2)some other drivers are going to use this: ARM SBSA Generic Watchdog
>>
>> Signed-off-by: Fu Wei <fu.wei@linaro.org>
>> ---
>>   Documentation/watchdog/watchdog-kernel-api.txt |  47 ++++++++--
>>   drivers/watchdog/watchdog_core.c               | 115
>> +++++++++++++++++++------
>>   drivers/watchdog/watchdog_dev.c                |  53 ++++++++++++
>>   include/linux/watchdog.h                       |  33 ++++++-
>>   4 files changed, 212 insertions(+), 36 deletions(-)
>>
>> diff --git a/Documentation/watchdog/watchdog-kernel-api.txt
>> b/Documentation/watchdog/watchdog-kernel-api.txt
>> index a0438f3..95b355d 100644
>> --- a/Documentation/watchdog/watchdog-kernel-api.txt
>> +++ b/Documentation/watchdog/watchdog-kernel-api.txt
>> @@ -49,6 +49,9 @@ struct watchdog_device {
>>         unsigned int timeout;
>>         unsigned int min_timeout;
>>         unsigned int max_timeout;
>> +       unsigned int pretimeout;
>> +       unsigned int min_pretimeout;
>> +       unsigned int max_pretimeout;
>>         void *driver_data;
>>         struct mutex lock;
>>         unsigned long status;
>> @@ -70,6 +73,9 @@ It contains following fields:
>>   * timeout: the watchdog timer's timeout value (in seconds).
>>   * min_timeout: the watchdog timer's minimum timeout value (in seconds).
>>   * max_timeout: the watchdog timer's maximum timeout value (in seconds).
>> +* pretimeout: the watchdog timer's pretimeout value (in seconds).
>> +* min_pretimeout: the watchdog timer's minimum pretimeout value (in
>> seconds).
>> +* max_pretimeout: the watchdog timer's maximum pretimeout value (in
>> seconds).
>>   * bootstatus: status of the device after booting (reported with watchdog
>>     WDIOF_* status bits).
>>   * driver_data: a pointer to the drivers private data of a watchdog
>> device.
>> @@ -92,6 +98,7 @@ struct watchdog_ops {
>>         int (*ping)(struct watchdog_device *);
>>         unsigned int (*status)(struct watchdog_device *);
>>         int (*set_timeout)(struct watchdog_device *, unsigned int);
>> +       int (*set_pretimeout)(struct watchdog_device *, unsigned int);
>>         unsigned int (*get_timeleft)(struct watchdog_device *);
>>         void (*ref)(struct watchdog_device *);
>>         void (*unref)(struct watchdog_device *);
>> @@ -153,9 +160,19 @@ they are supported. These optional
>> routines/operations are:
>>     and -EIO for "could not write value to the watchdog". On success this
>>     routine should set the timeout value of the watchdog_device to the
>>     achieved timeout value (which may be different from the requested one
>> -  because the watchdog does not necessarily has a 1 second resolution).
>> +  because the watchdog does not necessarily has a 1 second resolution;
>> +  If the driver supports pretimeout, then the timeout value must be
>> greater
>> +  than that).
>>     (Note: the WDIOF_SETTIMEOUT needs to be set in the options field of
>> the
>>     watchdog's info structure).
>> +* set_pretimeout: this routine checks and changes the pretimeout of the
>> +  watchdog timer device. It returns 0 on success, -EINVAL for "parameter
>> out of
>> +  range" and -EIO for "could not write value to the watchdog". On success
>> this
>> +  routine should set the pretimeout value of the watchdog_device to the
>> +  achieved pretimeout value (which may be different from the requested
>> one
>> +  because the watchdog does not necessarily has a 1 second resolution).
>> +  (Note: the WDIOF_PRETIMEOUT needs to be set in the options field of the
>> +  watchdog's info structure).
>>   * get_timeleft: this routines returns the time that's left before a
>> reset.
>>   * ref: the operation that calls kref_get on the kref of a dynamically
>>     allocated watchdog_device struct.
>> @@ -219,8 +236,28 @@ extern int watchdog_init_timeout(struct
>> watchdog_device *wdd,
>>                                     unsigned int timeout_parm, struct
>> device *dev);
>>
>>   The watchdog_init_timeout function allows you to initialize the timeout
>> field
>> -using the module timeout parameter or by retrieving the timeout-sec
>> property from
>> -the device tree (if the module timeout parameter is invalid). Best
>> practice is
>> -to set the default timeout value as timeout value in the watchdog_device
>> and
>> -then use this function to set the user "preferred" timeout value.
>> +using the module timeout parameter or by retrieving the first element of
>> +the timeout-sec property from the device tree (if the module timeout
>> parameter
>> +is invalid). Best practice is to set the default timeout value as timeout
>> value
>> +in the watchdog_device and then use this function to set the user
>> "preferred"
>> +timeout value.
>> +This routine returns zero on success and a negative errno code for
>> failure.
>> +
>> +Some watchdog timers have two stage of timeouts(timeout and pretimeout),
>> +to initialize the timeout and pretimeout fields at the same time, the
>> following
>> +function can be used:
>> +
>> +extern int watchdog_init_timeouts(struct watchdog_device *wdd,
>> +                                  unsigned int pretimeout_parm,
>> +                                  unsigned int timeout_parm,
>> +                                  struct device *dev);
>> +
>> +The watchdog_init_timeouts function allows you to initialize the
>> pretimeout and
>> +timeout fields using the module pretimeout and timeout parameter or by
>> +retrieving the elements in the timeout-sec property(the first element is
>> for
>> +timeout, the second one is for pretimeout) from the device tree(if the
>> module
>> +pretimeout and timeout parameter are invalid).
>> +Best practice is to set the default pretimeout and timeout value as
>> pretimeout
>> +and timeout value in the watchdog_device and then use this function to
>> set the
>> +user "preferred" pretimeout value.
>>   This routine returns zero on success and a negative errno code for
>> failure.
>> diff --git a/drivers/watchdog/watchdog_core.c
>> b/drivers/watchdog/watchdog_core.c
>> index cec9b55..ff18db3 100644
>> --- a/drivers/watchdog/watchdog_core.c
>> +++ b/drivers/watchdog/watchdog_core.c
>> @@ -43,60 +43,119 @@
>>   static DEFINE_IDA(watchdog_ida);
>>   static struct class *watchdog_class;
>>
>> -static void watchdog_check_min_max_timeout(struct watchdog_device *wdd)
>> +static void watchdog_check_min_max_timeouts(struct watchdog_device *wdd)
>>   {
>>         /*
>> -        * Check that we have valid min and max timeout values, if
>> -        * not reset them both to 0 (=not used or unknown)
>> +        * Check that we have valid min and max pretimeout and timeout
>> values,
>> +        * if not reset them both to 0 (=not used or unknown)
>>          */
>> +       if (wdd->min_pretimeout > wdd->max_pretimeout) {
>> +               pr_info("Invalid min and max pretimeout, resetting to
>> 0\n");
>> +               wdd->min_pretimeout = 0;
>> +               wdd->max_pretimeout = 0;
>> +       }
>>         if (wdd->min_timeout > wdd->max_timeout) {
>>                 pr_info("Invalid min and max timeout values, resetting to
>> 0!\n");
>>                 wdd->min_timeout = 0;
>>                 wdd->max_timeout = 0;
>>         }
>> +       /*
>> +        * Check that we have valid min timeout and max pretimeout values,
>> +        * if not reset them.
>> +        */
>> +       if (wdd->min_pretimeout && wdd->min_timeout < wdd->min_pretimeout)
>> {
>> +               pr_info("Invalid min_timeout, resetting to
>> min_pretimeout+1\n");
>> +               wdd->min_timeout = wdd->min_pretimeout + 1;
>> +       }
>
>
> min_timeout = 10
> max_timeout = 20
> min_pretimeout = 30
> max_pretimeout = 40
>
> will result in min_timeout set to 31.
>
>> +       if (wdd->max_pretimeout && wdd->max_timeout < wdd->max_pretimeout)
>> {
>> +               pr_info("Invalid max_pretimeout, resetting to
>> max_timeout-1\n");
>> +               wdd->max_pretimeout = wdd->max_timeout - 1;
>
>
> and then you set max_pretimeout to 19.
>
> So we'll end up with
>
> min_timeout = 31
> max_timeout = 20
> min_pretimeout = 30
> max_pretimeout = 19
>
> Another example: max_pretimeout = 10, max_timeout = 0 -> max_pretimeout =
> -1.
>
>> +       }
>
>
> You'll need to determine valid ranges and then enforce those.
> Maybe something like
>         min_pretimeout < min_timeout < max_timeout
> and
>         min_pretimeout < max_pretimeout < max_timeout
>
> Not sure if we should adjust anything to a value different to 0.
> Seems to me this is just asking for trouble.

yes, this is a new problem, but let me fix this in my new patchset:
(1)these values is set by driver in the initialization procedure,
according to hardware info.
(2) I thinks there is not any driver should call this function after
initialization.
 So if we find any incorrect value, I think the hardware info we got
is wrong , maybe we can just give up

any suggestion ?

>
>>   }
>>
>>   /**
>> - * watchdog_init_timeout() - initialize the timeout field
>> + * watchdog_init_timeouts() - initialize the pretimeout and timeout field
>> + * @pretimeout_parm: pretimeout module parameter
>>    * @timeout_parm: timeout module parameter
>>    * @dev: Device that stores the timeout-sec property
>>    *
>> - * Initialize the timeout field of the watchdog_device struct with either
>> the
>> - * timeout module parameter (if it is valid value) or the timeout-sec
>> property
>> - * (only if it is a valid value and the timeout_parm is out of bounds).
>> - * If none of them are valid then we keep the old value (which should
>> normally
>> - * be the default timeout value.
>> + * Initialize the pretimeout and timeout field of the watchdog_device
>> struct
>> + * with either the pretimeout and timeout module parameter (if it is
>> valid
>> + * value) or the timeout-sec property (only if it is a valid value and
>> the
>
>
> just 'if it is valid', or 'if it is a valid value' in both cases.

OK. np,. Thanks

>
>> + * pretimeout_parm and timeout_parm is out of bounds). If none of them
>> are
>
>
> s/and/or/

Thanks , fixed

>
>
>> + * valid, then we keep the old value (which should normally be the
>> default
>> + * timeout value).
>>    *
>>    * A zero is returned on success and -EINVAL for failure.
>>    */
>> -int watchdog_init_timeout(struct watchdog_device *wdd,
>> -                               unsigned int timeout_parm, struct device
>> *dev)
>> +int watchdog_init_timeouts(struct watchdog_device *wdd,
>> +                          unsigned int pretimeout_parm,
>> +                          unsigned int timeout_parm,
>> +                          struct device *dev)
>>   {
>> -       unsigned int t = 0;
>> -       int ret = 0;
>> +       int ret = 0, length = 0;
>> +       u32 timeouts[2] = {0};
>>
>> -       watchdog_check_min_max_timeout(wdd);
>> +       watchdog_check_min_max_timeouts(wdd);
>>
>> -       /* try to get the timeout module parameter first */
>> -       if (!watchdog_timeout_invalid(wdd, timeout_parm) && timeout_parm)
>> {
>> -               wdd->timeout = timeout_parm;
>> -               return ret;
>> +       /*
>> +        * Try to get the pretimeout module parameter first,
>> +        * but it can be "0", that means we don't use pretimeout.
>> +        */
>> +       if (pretimeout_parm) {
>> +               if (!watchdog_pretimeout_invalid(wdd, pretimeout_parm))
>> +                       timeouts[1] = pretimeout_parm;
>> +               ret = -EINVAL; /* pretimeout_parm is not "0", and invalid
>> */
>
>
> pretimeout_parm is always invalid ? Why ?

Sorry, I lost a "else" , this is a bug/typo

>
>>         }
>> -       if (timeout_parm)
>> +
>> +       /*
>> +        * Try to get the timeout module parameter,
>> +        * if it's valid and pretimeout is ont invalid(ret == 0),
>
>
> s/ont/not/

Thanks , fixed

>
>> +        * assignment and return zero. Otherwise, try dtb.
>> +        */
>> +       if (timeout_parm) {
>> +               if (!watchdog_timeout_invalid(wdd, timeout_parm) && !ret)
>> {
>
>
> Unless I am missing something, you'll never get here if the pretimeout
> module
> parameter is set.

yes, because of the bug above.
Will fix it in my next patchset , thanks :-)

>
>> +                       wdd->timeout = timeout_parm;
>> +                       wdd->pretimeout = timeouts[1];
>> +                       return 0;
>> +               }
>>                 ret = -EINVAL;
>> +       }
>>
>> -       /* try to get the timeout_sec property */
>> +       /*
>> +        * We get here, the situation is one of them:
>> +        * (1)at least one of parameters is invalid(ret = -EINVAL);
>> +        * (2)both of them are 0.(ret = 0)
>> +        * So give up the module parameter(at least drop the invalid one),
>> +        * try to get the timeout_sec property from dtb.
>
>
> Please simplify the comment.
>
>         Either at least one of the module parameters is invalid,
>         or both of them are 0. Try to get the timeout_sec property.

Thanks , will do.

>
>> +        */
>>         if (dev == NULL || dev->of_node == NULL)
>>                 return ret;
>> -       of_property_read_u32(dev->of_node, "timeout-sec", &t);
>> -       if (!watchdog_timeout_invalid(wdd, t) && t)
>> -               wdd->timeout = t;
>> -       else
>> -               ret = -EINVAL;
>>
>> -       return ret;
>> +       /*
>> +        * We get here, that means maybe we can get timeouts from dtb,
>> +        * if "timeout-sec" is available and the data is valid.
>> +        */
>
>
> That comment is not needed; it is obvious.

OK, will remove it

>
>> +       of_find_property(dev->of_node, "timeout-sec", &length);
>> +       if (length > 0 && length <= sizeof(u32) * 2) {
>
>
> You need to check the return value of of_find_property() instead of assuming
> that length will be 0 if it is not found.

you are right, will do, thanks

>
>> +               of_property_read_u32_array(dev->of_node,
>> +                                          "timeout-sec", timeouts,
>> +                                          length / sizeof(u32));
>> +               if (length == sizeof(u32) * 2 && timeouts[1] &&
>> +                   watchdog_pretimeout_invalid(wdd, timeouts[1]))
>> +                               return -EINVAL; /* pretimeout is invalid
>> */
>
>
> Obvious comment.

OK, will remove it

>
>
>> +
>> +               if (!watchdog_timeout_invalid(wdd, timeouts[0]) &&
>> +                   timeouts[0]) {
>> +                       wdd->timeout = timeouts[0];
>> +                       wdd->pretimeout = timeouts[1];
>> +                       return 0;
>> +               }
>> +       }
>> +
>> +       return -EINVAL;
>>   }
>> -EXPORT_SYMBOL_GPL(watchdog_init_timeout);
>> +EXPORT_SYMBOL_GPL(watchdog_init_timeouts);
>>
>>   /**
>>    * watchdog_register_device() - register a watchdog device
>> @@ -119,7 +178,7 @@ int watchdog_register_device(struct watchdog_device
>> *wdd)
>>         if (wdd->ops->start == NULL || wdd->ops->stop == NULL)
>>                 return -EINVAL;
>>
>> -       watchdog_check_min_max_timeout(wdd);
>> +       watchdog_check_min_max_timeouts(wdd);
>>
>>         /*
>>          * Note: now that all watchdog_device data has been verified, we
>> diff --git a/drivers/watchdog/watchdog_dev.c
>> b/drivers/watchdog/watchdog_dev.c
>> index 6aaefba..af0777e 100644
>> --- a/drivers/watchdog/watchdog_dev.c
>> +++ b/drivers/watchdog/watchdog_dev.c
>> @@ -218,6 +218,38 @@ out_timeout:
>>   }
>>
>>   /*
>> + *     watchdog_set_pretimeout: set the watchdog timer pretimeout
>> + *     @wddev: the watchdog device to set the timeout for
>> + *     @pretimeout: pretimeout to set in seconds
>> + */
>> +
>> +static int watchdog_set_pretimeout(struct watchdog_device *wddev,
>> +                                  unsigned int pretimeout)
>> +{
>> +       int err;
>> +
>> +       if (!wddev->ops->set_pretimeout ||
>> +           !(wddev->info->options & WDIOF_PRETIMEOUT))
>> +               return -EOPNOTSUPP;
>> +
>> +       if (watchdog_pretimeout_invalid(wddev, pretimeout))
>> +               return -EINVAL;
>> +
>> +       mutex_lock(&wddev->lock);
>> +
>> +       if (test_bit(WDOG_UNREGISTERED, &wddev->status)) {
>> +               err = -ENODEV;
>> +               goto out_pretimeout;
>> +       }
>> +
>> +       err = wddev->ops->set_pretimeout(wddev, pretimeout);
>> +
>> +out_pretimeout:
>> +       mutex_unlock(&wddev->lock);
>> +       return err;
>> +}
>> +
>> +/*
>>    *    watchdog_get_timeleft: wrapper to get the time left before a
>> reboot
>>    *    @wddev: the watchdog device to get the remaining time from
>>    *    @timeleft: the time that's left
>> @@ -388,6 +420,27 @@ static long watchdog_ioctl(struct file *file,
>> unsigned int cmd,
>>                 if (wdd->timeout == 0)
>>                         return -EOPNOTSUPP;
>>                 return put_user(wdd->timeout, p);
>> +       case WDIOC_SETPRETIMEOUT:
>> +               /* check if we support the pretimeout */
>> +               if (!(wdd->info->options & WDIOF_PRETIMEOUT))
>> +                       return -EOPNOTSUPP;
>> +               if (get_user(val, p))
>> +                       return -EFAULT;
>> +               err = watchdog_set_pretimeout(wdd, val);
>> +               if (err < 0)
>> +                       return err;
>> +               /*
>> +                * If the watchdog is active then we send a keepalive ping
>> +                * to make sure that the watchdog keeps running (and if
>> +                * possible that it takes the new pretimeout)
>> +                */
>> +               watchdog_ping(wdd);
>> +               /* Fall */
>> +       case WDIOC_GETPRETIMEOUT:
>> +               /* check if we support the pretimeout */
>> +               if (wdd->info->options & WDIOF_PRETIMEOUT)
>> +                       return put_user(wdd->pretimeout, p);
>> +               return -EOPNOTSUPP;
>>         case WDIOC_GETTIMELEFT:
>>                 err = watchdog_get_timeleft(wdd, &val);
>>                 if (err)
>> diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h
>> index a746bf5..b1e325d 100644
>> --- a/include/linux/watchdog.h
>> +++ b/include/linux/watchdog.h
>> @@ -25,6 +25,7 @@ struct watchdog_device;
>>    * @ping:     The routine that sends a keepalive ping to the watchdog
>> device.
>>    * @status:   The routine that shows the status of the watchdog device.
>>    * @set_timeout:The routine for setting the watchdog devices timeout
>> value.
>> + * @set_pretimeout:The routine for setting the watchdog devices
>> pretimeout value
>>    * @get_timeleft:The routine that get's the time that's left before a
>> reset.
>>    * @ref:      The ref operation for dyn. allocated watchdog_device
>> structs
>>    * @unref:    The unref operation for dyn. allocated watchdog_device
>> structs
>> @@ -44,6 +45,7 @@ struct watchdog_ops {
>>         int (*ping)(struct watchdog_device *);
>>         unsigned int (*status)(struct watchdog_device *);
>>         int (*set_timeout)(struct watchdog_device *, unsigned int);
>> +       int (*set_pretimeout)(struct watchdog_device *, unsigned int);
>>         unsigned int (*get_timeleft)(struct watchdog_device *);
>>         void (*ref)(struct watchdog_device *);
>>         void (*unref)(struct watchdog_device *);
>> @@ -62,6 +64,9 @@ struct watchdog_ops {
>>    * @timeout:  The watchdog devices timeout value.
>>    * @min_timeout:The watchdog devices minimum timeout value.
>>    * @max_timeout:The watchdog devices maximum timeout value.
>> + * @pretimeout:        The watchdog devices pretimeout value.
>> + * @min_pretimeout:The watchdog devices minimum pretimeout value.
>> + * @max_pretimeout:The watchdog devices maximum pretimeout value.
>>    * @driver-data:Pointer to the drivers private data.
>>    * @lock:     Lock for watchdog core internal use only.
>>    * @status:   Field that contains the devices internal status bits.
>> @@ -86,6 +91,9 @@ struct watchdog_device {
>>         unsigned int timeout;
>>         unsigned int min_timeout;
>>         unsigned int max_timeout;
>> +       unsigned int pretimeout;
>> +       unsigned int min_pretimeout;
>> +       unsigned int max_pretimeout;
>>         void *driver_data;
>>         struct mutex lock;
>>         unsigned long status;
>> @@ -117,7 +125,17 @@ static inline void watchdog_set_nowayout(struct
>> watchdog_device *wdd, bool noway
>>   static inline bool watchdog_timeout_invalid(struct watchdog_device *wdd,
>> unsigned int t)
>>   {
>>         return ((wdd->max_timeout != 0) &&
>> -               (t < wdd->min_timeout || t > wdd->max_timeout));
>> +               (t < wdd->min_timeout || t > wdd->max_timeout ||
>> +                       t <= wdd->pretimeout));
>> +}
>> +
>> +/* Use the following function to check if a pretimeout value is invalid
>> */
>> +static inline bool watchdog_pretimeout_invalid(struct watchdog_device
>> *wdd,
>> +                                              unsigned int t)
>> +{
>> +       return (wdd->max_pretimeout != 0 &&
>> +               (t < wdd->min_pretimeout || t > wdd->max_pretimeout ||
>> +                       (wdd->timeout != 0 && t >= wdd->timeout)));
>
>
> This validates a pretimeout as valid if max_pretimeout == 0,
> no matter what timeout is set to.
>
> Do we really need to check if timeout == 0 ? Can that ever happen ?

(wdd->timeout != 0 && t >= wdd->timeout)

if we have set timeout(wdd->timeout != 0), and t(pretimeout) >
wdd->timeout, t is a invalid value.
Am I correct?

the reason of adding "wdd->timeout != 0": if driver calls this
function before setting up  wdd->timeout.


>
>>   }
>>
>>   /* Use the following functions to manipulate watchdog driver specific
>> data */
>> @@ -132,11 +150,20 @@ static inline void *watchdog_get_drvdata(struct
>> watchdog_device *wdd)
>>   }
>>
>>   /* drivers/watchdog/watchdog_core.c */
>> -extern int watchdog_init_timeout(struct watchdog_device *wdd,
>> -                                 unsigned int timeout_parm, struct device
>> *dev);
>> +extern int watchdog_init_timeouts(struct watchdog_device *wdd,
>> +                                 unsigned int pretimeout_parm,
>> +                                 unsigned int timeout_parm,
>> +                                 struct device *dev);
>
>
> No 'extern' here, please. Yes, we'll need to fix that for the other
> function declarations, but that is not a reason to introduce new ones.

OK, I do agree with you on this, have fixed it in my next patchset.

>
> 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

  reply	other threads:[~2015-06-08 16:45 UTC|newest]

Thread overview: 550+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <=fu.wei@linaro.org>
2015-05-15 11:08 ` [PATCH 0/6] Watchdog: introdouce ARM SBSA watchdog driver fu.wei
2015-05-15 11:08   ` [PATCH 1/6] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-05-15 14:06     ` Arnd Bergmann
2015-05-15 14:06       ` Arnd Bergmann
2015-05-15 14:14       ` Fu Wei
2015-05-15 14:14         ` Fu Wei
2015-05-16 10:29       ` Fu Wei
2015-05-16 10:29         ` Fu Wei
2015-05-15 11:08   ` [PATCH 2/6] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-05-15 11:08   ` [PATCH 3/6] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-05-15 11:08     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-15 14:07   ` [Linaro-acpi] [PATCH 0/6] Watchdog: introdouce ARM SBSA watchdog driver Arnd Bergmann
2015-05-15 14:07     ` Arnd Bergmann
2015-05-16 10:33     ` Fu Wei
2015-05-16 10:33       ` Fu Wei
2015-05-15 11:24 ` [PATCH 4/6] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-05-15 11:24   ` [PATCH 5/6] Watchdog: introdouce ARM SBSA watchdog driver fu.wei
2015-05-15 13:57     ` Arnd Bergmann
2015-05-16 12:01       ` Fu Wei
2015-05-16 12:01         ` Fu Wei
2015-05-16 12:26         ` Timur Tabi
2015-05-15 22:57     ` Guenter Roeck
2015-05-15 22:57       ` Guenter Roeck
2015-05-18 17:38       ` Fu Wei
2015-05-18 17:38         ` Fu Wei
2015-05-15 11:24   ` [PATCH 6/6] ACPI: import watchdog info of GTDT into platform device fu.wei
2015-05-15 13:33   ` [PATCH 4/6] Watchdog: introdouce "pretimeout" into framework Guenter Roeck
2015-05-15 13:49     ` Fu Wei
2015-05-15 13:55       ` Timur Tabi
2015-05-15 13:55         ` Timur Tabi
2015-05-15 17:59         ` Guenter Roeck
2015-05-15 18:01       ` Guenter Roeck
2015-05-15 18:01         ` Guenter Roeck
2015-05-18 17:22         ` Fu Wei
2015-05-18 17:22           ` Fu Wei
2015-05-15 14:04   ` Arnd Bergmann
2015-05-18 17:19     ` Fu Wei
2015-05-18 17:19       ` Fu Wei
2015-05-18 17:23       ` Guenter Roeck
2015-05-18 17:39         ` Fu Wei
2015-05-18 20:03         ` Arnd Bergmann
2015-05-18 20:14           ` Guenter Roeck
2015-05-18 20:14             ` Guenter Roeck
2015-05-19  1:12             ` Fu Wei
2015-05-19  1:12               ` Fu Wei
2015-05-21  8:32 ` [PATCH v2 0/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-05-21  8:32   ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-21  8:32   ` [PATCH v2 1/7] clocksource: export "arch_timer_get_rate" for the other drivers fu.wei
2015-05-21  8:32     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-22 14:02     ` Hanjun Guo
2015-05-22 14:09     ` Timur Tabi
2015-05-22 15:16       ` Guenter Roeck
2015-05-22 16:22         ` Timur Tabi
2015-05-21  8:32   ` [PATCH v2 2/7] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-05-21  8:32   ` [PATCH v2 3/7] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-05-21  8:45     ` Arnd Bergmann
2015-05-21  8:49       ` Fu Wei
2015-05-21  8:49         ` Fu Wei
2015-05-21  8:32   ` [PATCH v2 4/7] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-05-21 20:33     ` Suravee Suthikulpanit
2015-05-21 20:33       ` Suravee Suthikulpanit
2015-05-21  8:32   ` [PATCH v2 5/7] Watchdog: introduce "pretimeout" into framework fu.wei
2015-05-21  9:04     ` Guenter Roeck
2015-05-21 10:05       ` Fu Wei
2015-05-21 10:05         ` Fu Wei
2015-05-21 10:17         ` Guenter Roeck
2015-05-21 10:50           ` Fu Wei
2015-05-21 10:50             ` Fu Wei
2015-05-21 13:28             ` Guenter Roeck
2015-05-21 10:11     ` Guenter Roeck
2015-05-21 15:32     ` Guenter Roeck
2015-05-21 15:32       ` Guenter Roeck
2015-05-22  5:17       ` Fu Wei
2015-05-25  3:09       ` Fu Wei
2015-05-25  3:09         ` Fu Wei
2015-05-22  6:30     ` Timo Kokkonen
2015-05-22  8:23       ` Fu Wei
2015-05-22  8:59         ` Timo Kokkonen
2015-05-22 10:46           ` Fu Wei
2015-05-22 10:46             ` Fu Wei
2015-05-22 12:14             ` Timo Kokkonen
2015-05-22 13:37               ` Guenter Roeck
2015-05-22 13:23             ` Guenter Roeck
2015-05-22 14:38               ` Fu Wei
2015-05-22 14:38                 ` Fu Wei
2015-05-22 15:05                 ` Guenter Roeck
2015-05-24 16:17                   ` Fu Wei
2015-05-21  8:32   ` [PATCH v2 6/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-05-21  8:32     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-21 10:34     ` Guenter Roeck
2015-05-21 10:34       ` Guenter Roeck
2015-05-21 11:08       ` Fu Wei
2015-05-21 15:18         ` Guenter Roeck
2015-05-21 15:18           ` Guenter Roeck
2015-05-21 15:46           ` Fu Wei
2015-05-21 15:59             ` Guenter Roeck
2015-05-21 16:12               ` Fu Wei
2015-05-21 16:12                 ` Fu Wei
2015-05-21 16:33                 ` Timur Tabi
2015-05-21 16:33                   ` Timur Tabi
2015-05-22  5:05                   ` Fu Wei
2015-05-22  5:05                     ` Fu Wei
2015-05-21 13:09       ` Timur Tabi
2015-05-21 15:28         ` Guenter Roeck
2015-05-21 15:28           ` Guenter Roeck
2015-05-25  3:43           ` Fu Wei
2015-05-25  3:43             ` Fu Wei
2015-05-25  3:46             ` Timur Tabi
2015-05-25  3:46               ` Timur Tabi
2015-05-25  4:11               ` Fu Wei
2015-05-25  4:11                 ` Fu Wei
2015-05-21 15:42     ` Timur Tabi
2015-05-21 15:42       ` Timur Tabi
2015-05-23 16:28       ` Fu Wei
2015-05-23 16:50         ` Fu Wei
2015-05-23 19:40         ` Timur Tabi
2015-05-23 19:40           ` Timur Tabi
2015-05-23 20:01           ` Guenter Roeck
2015-05-23 20:01             ` Guenter Roeck
2015-05-23 20:27             ` Timur Tabi
2015-05-23 20:27               ` Timur Tabi
2015-05-23 20:44               ` Guenter Roeck
2015-05-24 10:50                 ` Fu Wei
2015-05-24 10:15             ` Fu Wei
2015-05-24 14:15               ` Guenter Roeck
2015-05-24 14:15                 ` Guenter Roeck
2015-05-24 15:50                 ` Fu Wei
2015-05-24 15:50                   ` Fu Wei
2015-05-24 16:23                   ` Guenter Roeck
2015-05-24 16:47                     ` Fu Wei
2015-05-24 16:58                       ` Guenter Roeck
2015-05-24 16:58                         ` Guenter Roeck
2015-05-24 17:04                         ` Fu Wei
2015-05-24 17:04                           ` Fu Wei
2015-05-24 15:02               ` Timur Tabi
2015-05-24 16:04                 ` Fu Wei
2015-05-24 16:04                   ` Fu Wei
2015-05-24 16:13                   ` Timur Tabi
2015-05-24 16:13                     ` Timur Tabi
2015-05-24 16:29                     ` Guenter Roeck
2015-05-24 16:29                       ` Guenter Roeck
2015-05-24 16:33                       ` Fu Wei
2015-05-24 16:44                       ` Timur Tabi
2015-05-24 16:50                         ` Guenter Roeck
2015-05-24 16:52                         ` Fu Wei
2015-05-24 17:19                           ` Timur Tabi
2015-05-24 17:19                             ` Timur Tabi
2015-05-24 17:23                             ` Fu Wei
2015-05-24 17:32                             ` Guenter Roeck
2015-05-24 17:32                               ` Guenter Roeck
2015-05-24 17:47                               ` Timur Tabi
2015-05-25  2:03                                 ` Fu Wei
2015-05-25  2:00                               ` Fu Wei
2015-05-24 16:29                     ` Fu Wei
2015-05-22 14:50     ` Hanjun Guo
2015-05-22 14:50       ` Hanjun Guo
2015-05-22 14:55       ` Arnd Bergmann
2015-05-22 15:01         ` Guenter Roeck
2015-05-22 15:01           ` Guenter Roeck
2015-05-22 15:18           ` Hanjun Guo
2015-05-22 15:18             ` Hanjun Guo
2015-05-22 15:24             ` [Linaro-acpi] " Arnd Bergmann
2015-05-22 15:24               ` Arnd Bergmann
2015-05-22 16:19               ` Timur Tabi
2015-05-22 20:13                 ` Arnd Bergmann
2015-05-22 20:17                   ` Timur Tabi
2015-05-23  7:25               ` Fu Wei
2015-05-23  7:25                 ` Fu Wei
2015-05-22 16:19           ` Timur Tabi
2015-05-23 14:47           ` Fu Wei
2015-05-22 16:18         ` Timur Tabi
2015-05-23 15:08         ` Timur Tabi
2015-05-23 15:08           ` Timur Tabi
2015-05-23 17:26           ` Fu Wei
2015-05-23 18:35             ` Guenter Roeck
2015-05-23 18:37               ` Timur Tabi
2015-05-23 19:03                 ` Fu Wei
2015-05-23 19:51                 ` Guenter Roeck
2015-05-24  9:58                   ` Fu Wei
2015-05-24 14:06                     ` Guenter Roeck
2015-05-24 14:06                       ` Guenter Roeck
2015-05-24 15:06                       ` Timur Tabi
2015-05-24 15:06                         ` Timur Tabi
2015-05-24 15:37                       ` Fu Wei
2015-05-24 15:37                         ` Fu Wei
2015-05-23 18:40             ` Timur Tabi
2015-05-23 19:14               ` Fu Wei
2015-05-23 19:14                 ` Fu Wei
2015-05-23 19:21                 ` Timur Tabi
2015-05-21  8:32   ` [PATCH v2 7/7] ACPI: import watchdog info of GTDT into platform device fu.wei
2015-05-22 15:38     ` Hanjun Guo
2015-05-22 15:38       ` Hanjun Guo
2015-05-23 19:46     ` Timur Tabi
2015-05-23 19:46       ` Timur Tabi
2015-05-21  8:46   ` [Linaro-acpi] [PATCH v2 0/7] Watchdog: introduce ARM SBSA watchdog driver Arnd Bergmann
2015-05-21  8:46     ` Arnd Bergmann
2015-05-21  9:01     ` Fu Wei
2015-05-21  9:01       ` Fu Wei
2015-05-21 20:36   ` Suravee Suthikulpanit
2015-05-21 20:36     ` Suravee Suthikulpanit
2015-05-22  5:08     ` Fu Wei
2015-05-25 10:03 ` [PATCH v3 0/6] " fu.wei
2015-05-25 10:03   ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-25 10:03   ` [PATCH v3 1/6] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-05-25 10:03     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-05-25 10:03   ` [PATCH v3 2/6] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-05-25 10:03   ` [PATCH v3 3/6] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-05-25 10:03   ` [PATCH v3 4/6] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-05-25 19:28     ` Guenter Roeck
2015-05-25 19:28       ` Guenter Roeck
2015-05-25 10:03   ` [PATCH v3 5/6] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-05-25 19:39     ` Guenter Roeck
2015-05-25 19:39       ` Guenter Roeck
2015-05-29  9:11       ` Fu Wei
2015-05-29  9:11         ` Fu Wei
2015-05-29 14:54         ` Guenter Roeck
2015-05-29 15:05           ` Fu Wei
2015-05-26 16:50     ` Timur Tabi
2015-05-29 10:17       ` Fu Wei
2015-05-29 10:17         ` Fu Wei
2015-05-29 13:28         ` Timur Tabi
2015-05-29 13:28           ` Timur Tabi
2015-05-29 14:32           ` Fu Wei
2015-05-29 14:32             ` Fu Wei
2015-05-29 15:46             ` Timur Tabi
2015-05-29 15:46               ` Timur Tabi
2015-05-29 17:53               ` Fu Wei
2015-05-29 18:27                 ` Timur Tabi
2015-05-29 18:27                   ` Timur Tabi
2015-05-29 22:10               ` Guenter Roeck
2015-05-29 22:10                 ` Guenter Roeck
2015-06-01  7:50                 ` Fu Wei
2015-05-25 10:03   ` [PATCH v3 6/6] ACPI: import watchdog info of GTDT into platform device fu.wei
2015-05-26  8:28     ` Hanjun Guo
2015-05-26 16:35       ` Timur Tabi
2015-05-26 18:24         ` Guenter Roeck
2015-05-26 18:24           ` Guenter Roeck
2015-05-27  3:01         ` Hanjun Guo
2015-05-27  3:08           ` Timur Tabi
2015-05-27  3:08             ` Timur Tabi
2015-05-26 12:28     ` Will Deacon
2015-05-26 12:28       ` Will Deacon
2015-05-26 15:02       ` Ashwin Chaugule
2015-05-26 15:02         ` Ashwin Chaugule
2015-05-26 15:18         ` Will Deacon
2015-05-26 15:18           ` Will Deacon
2015-05-26 15:35           ` Ashwin Chaugule
2015-05-26 15:35             ` Ashwin Chaugule
2015-05-26 15:35             ` Ashwin Chaugule
2015-05-26 15:36           ` Guenter Roeck
2015-05-26 15:36             ` Guenter Roeck
2015-05-26 16:27             ` Fu Wei
2015-05-26 16:27               ` Fu Wei
2015-05-27 10:44               ` Will Deacon
2015-05-27 10:44                 ` Will Deacon
2015-05-29 11:13                 ` Fu Wei
2015-05-29 11:13                   ` Fu Wei
2015-06-02  4:05 ` [PATCH v4 0/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-02  4:05   ` [PATCH v4 1/7] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-06-02  4:05   ` [PATCH v4 2/7] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-06-02  4:05   ` [PATCH v4 3/7] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-06-02  4:05     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-02  4:05   ` [PATCH v4 4/7] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-06-02  4:05     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-02 16:12     ` Guenter Roeck
2015-06-02 16:12       ` Guenter Roeck
2015-06-08 16:44       ` Fu Wei [this message]
2015-06-02  4:05   ` [PATCH v4 5/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-02  4:05     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-02 15:32     ` Timur Tabi
2015-06-02 15:32       ` Timur Tabi
2015-06-02 15:37       ` Guenter Roeck
2015-06-02 15:37         ` Guenter Roeck
2015-06-02 16:55       ` Fu Wei
2015-06-02 16:55         ` Fu Wei
2015-06-02 17:07         ` Guenter Roeck
2015-06-02 17:07           ` Guenter Roeck
2015-06-08 16:05           ` Fu Wei
2015-06-08 16:05             ` Fu Wei
2015-06-08 18:26             ` Guenter Roeck
2015-06-08 18:26               ` Guenter Roeck
2015-06-09  3:59               ` Fu Wei
2015-06-09  4:37                 ` Guenter Roeck
2015-06-09  4:37                   ` Guenter Roeck
2015-06-09  6:37                   ` Fu Wei
2015-06-09  6:37                     ` Fu Wei
2015-06-09  8:04                     ` Guenter Roeck
2015-06-09  8:04                       ` Guenter Roeck
2015-06-09 10:46                       ` Fu Wei
2015-06-09 16:22                         ` Guenter Roeck
2015-06-09 16:29                           ` Timur Tabi
2015-06-09 16:29                             ` Timur Tabi
2015-06-09 16:45                             ` Guenter Roeck
2015-06-09 16:53                               ` Timur Tabi
2015-06-09 16:53                                 ` Timur Tabi
2015-06-10  3:41                               ` Fu Wei
2015-06-10  3:41                                 ` Fu Wei
2015-06-10  4:20                                 ` Fu Wei
2015-06-10 14:22                                   ` Timur Tabi
2015-06-10 14:22                                     ` Timur Tabi
2015-06-10 14:36                                     ` Fu Wei
2015-06-10 14:36                                       ` Fu Wei
2015-06-10 14:41                                       ` Fu Wei
2015-06-10 14:41                                         ` Fu Wei
2015-06-10 14:41                                         ` Fu Wei
2015-06-10 15:38                                 ` Fu Wei
2015-06-10 15:38                                   ` Fu Wei
2015-06-10 17:54                                   ` Fu Wei
2015-06-10 17:54                                     ` Fu Wei
2015-06-11  0:22                                 ` Timur Tabi
2015-06-11  0:22                                   ` Timur Tabi
2015-06-11  3:00                                   ` Fu Wei
2015-06-11  3:45                                     ` Timur Tabi
2015-06-11  3:45                                       ` Timur Tabi
2015-06-11  5:13                                       ` Guenter Roeck
2015-06-11  5:13                                         ` Guenter Roeck
2015-06-11  5:33                                         ` Fu Wei
2015-06-11  5:32                                       ` Fu Wei
2015-06-11  5:32                                         ` Fu Wei
2015-06-02 17:21         ` Timur Tabi
2015-06-02 17:21           ` Timur Tabi
2015-06-03 18:16     ` Timur Tabi
2015-06-03 18:16       ` Timur Tabi
2015-06-03 18:25       ` Guenter Roeck
2015-06-03 18:25         ` Guenter Roeck
2015-06-03 18:53         ` Timur Tabi
2015-06-03 18:53           ` Timur Tabi
2015-06-03 19:29           ` Arnd Bergmann
2015-09-10 22:45           ` Jon Masters
2015-09-14  4:21             ` Pratyush Anand
2015-09-14 15:27               ` Fu Wei
2015-09-14 15:27                 ` Fu Wei
2015-09-14  8:51             ` Catalin Marinas
2015-09-15  3:16             ` Fu Wei
2015-09-15  3:16               ` Fu Wei
2015-06-08 16:10         ` Fu Wei
2015-06-02  4:05   ` [PATCH v4 6/7] ACPI: add GTDT table parse driver into ACPI driver fu.wei
2015-06-02  4:05   ` [PATCH v4 7/7] clocksource: simplify ACPI code in arm_arch_timer.c fu.wei
2015-06-10 13:41 ` [PATCH v5 0/8] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-10 13:41   ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 1/8] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-06-10 13:41   ` [PATCH v5 2/8] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-06-10 13:41     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 3/8] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-06-10 13:41     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 4/8] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-06-10 16:21     ` Guenter Roeck
2015-06-10 16:21       ` Guenter Roeck
2015-06-11 11:22       ` Fu Wei
2015-06-11 16:38         ` Guenter Roeck
2015-06-11 16:38           ` Guenter Roeck
2015-06-10 13:41   ` [PATCH v5 5/8] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-10 13:41     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 6/8] ACPI: add GTDT table parse driver into ACPI driver fu.wei
2015-06-10 13:41     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 7/8] Watchdog: enable ACPI GTDT support for ARM SBSA watchdog driver fu.wei
2015-06-10 13:41     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 13:41   ` [PATCH v5 8/8] clocksource: simplify ACPI code in arm_arch_timer.c fu.wei
2015-06-10 17:47 ` [PATCH non-pretimeout 0/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-10 17:47   ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 17:47   ` [PATCH non-pretimeout 1/7] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-06-10 17:47     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-10 17:47   ` [PATCH non-pretimeout 2/7] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-06-10 17:47   ` [PATCH non-pretimeout 3/7] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-06-10 17:47     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-12 20:54     ` Timur Tabi
2015-06-12 20:54       ` Timur Tabi
2015-06-14 10:05       ` Fu Wei
2015-06-14 13:17         ` Timur Tabi
2015-06-14 13:17           ` Timur Tabi
2015-06-14 13:57         ` Guenter Roeck
2015-06-15 11:00           ` Fu Wei
2015-06-10 17:47   ` [PATCH non-pretimeout 4/7] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-11  5:33     ` Guenter Roeck
2015-06-11  5:33       ` Guenter Roeck
2015-06-11  5:44       ` Fu Wei
2015-06-11  5:49         ` Guenter Roeck
2015-06-11  5:59           ` Fu Wei
2015-06-11  5:59             ` Fu Wei
2015-06-11 16:28     ` [non-pretimeout,4/7] " Guenter Roeck
2015-06-23 13:26       ` Fu Wei
2015-06-23 15:21         ` Guenter Roeck
2015-06-23 15:21           ` Guenter Roeck
2015-06-23 16:17           ` Fu Wei
2015-06-23 16:43             ` Guenter Roeck
2015-06-23 17:01               ` Fu Wei
2015-06-23 17:01                 ` Fu Wei
2015-06-12  3:57     ` [PATCH non-pretimeout 4/7] " Timur Tabi
2015-06-12  3:57       ` Timur Tabi
2015-06-14 10:15       ` Fu Wei
2015-06-14 10:15         ` Fu Wei
2015-06-10 17:47   ` [PATCH non-pretimeout 5/7] ACPI: add GTDT table parse driver into ACPI driver fu.wei
2015-06-11 11:14     ` Hanjun Guo
2015-06-10 17:47   ` [PATCH non-pretimeout 6/7] Watchdog: enable ACPI GTDT support for ARM SBSA watchdog driver fu.wei
2015-06-10 17:47     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-12 13:16     ` Timur Tabi
2015-06-10 17:47   ` [PATCH non-pretimeout 7/7] clocksource: simplify ACPI code in arm_arch_timer.c fu.wei
2015-06-10 17:47     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-23 14:16 ` [PATCH v6 0/8] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-06-23 14:16   ` [PATCH v6 1/8] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-06-23 14:16     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-07-14 14:49     ` Rob Herring
2015-07-14 14:49       ` Rob Herring
2015-07-14 15:48       ` Fu Wei
2015-07-14 15:48         ` Fu Wei
2015-07-15 12:52         ` Fu Wei
2015-07-15 12:52           ` Fu Wei
2015-06-23 14:16   ` [PATCH v6 2/8] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-06-23 14:16     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-23 14:16   ` [PATCH v6 3/8] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-06-23 14:16   ` [PATCH v6 4/8] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-06-23 14:16     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-29 16:53   ` [PATCH v6 0/8] Watchdog: introduce ARM SBSA watchdog driver Fu Wei
2015-06-29 16:53     ` Fu Wei
2015-06-29 19:16     ` Guenter Roeck
2015-06-30 23:47       ` Fu Wei
2015-07-13  9:09       ` Fu Wei
2015-07-13  9:09         ` Fu Wei
2015-07-13 15:34         ` Guenter Roeck
2015-07-14  0:42           ` Fu Wei
2015-07-14  0:42             ` Fu Wei
2015-06-23 15:59 ` [PATCH v6 5/8] " fu.wei
2015-06-23 15:59   ` [PATCH v6 6/8] ACPI: add GTDT table parse driver into ACPI driver fu.wei
2015-06-23 15:59     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-07-23  8:32     ` Fu Wei
2015-07-23  8:32       ` Fu Wei
2015-07-23  8:32       ` Fu Wei
2015-06-23 15:59   ` [PATCH v6 7/8] Watchdog: enable ACPI GTDT support for ARM SBSA watchdog driver fu.wei
2015-06-23 15:59     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-06-23 15:59   ` [PATCH v6 8/8] clocksource: simplify ACPI code in arm_arch_timer.c fu.wei
2015-06-23 15:59     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-07-13  8:53 ` [PATCH v2 0/3] arm64: Add multiboot support (via fdt) for Xen boot fu.wei
2015-07-13  8:53   ` [PATCH v2 1/3] arm64: Add Xen boot support file fu.wei
2015-07-15 16:18     ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-15 16:18       ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-16 16:46       ` Ian Campbell
2015-07-16 16:46         ` Ian Campbell
2015-07-23 10:16       ` Fu Wei
2015-07-23 10:16         ` Fu Wei
2015-07-13  8:53   ` [PATCH v2 2/3] util/grub.d/20_linux_xen.in: Add arm64 support fu.wei
2015-07-14  3:53     ` Andrei Borzenkov
2015-07-14  3:53       ` Andrei Borzenkov
2015-07-14  9:41       ` Ian Campbell
2015-07-14 15:23         ` [Xen-devel] " Konrad Rzeszutek Wilk
2015-07-14 13:09       ` Fu Wei
2015-07-14 13:09         ` Fu Wei
2015-07-15 16:24         ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-15 16:24           ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-13  8:54   ` [PATCH v2 3/3] arm64: Add the introduction of Xen boot command fu.wei
2015-07-14  9:29   ` [Xen-devel] [PATCH v2 0/3] arm64: Add multiboot support (via fdt) for Xen boot Ian Campbell
2015-07-14  9:29     ` Ian Campbell
2015-07-14 11:56     ` Fu Wei
2015-07-15 15:56   ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-15 15:56     ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-23  5:16 ` [PATCH v3 0/4] arm64: Add Xen boot support (via fdt) fu.wei
2015-07-23  5:16   ` [PATCH v3 1/4] arm64: Add and export some accessor functions for xen boot fu.wei
2015-10-29 12:03     ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-29 12:03       ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-30  7:11       ` Fu Wei
2015-10-30  7:11         ` Fu Wei
2015-07-23  5:16   ` [PATCH v3 2/4] arm64: Add xen_boot module file fu.wei
2015-10-29 14:27     ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-29 14:27       ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-30  8:08       ` Fu Wei
2015-10-30  8:08         ` Fu Wei
2015-11-03 14:57         ` Fu Wei
2015-11-03 14:57           ` Fu Wei
2015-11-03 15:22           ` Ian Campbell
2015-11-03 15:22             ` Ian Campbell
2015-11-05  9:46             ` Fu Wei
2015-07-23  5:16   ` [PATCH v3 3/4] * util/grub.d/20_linux_xen.in: Add support of the XEN boot on aarch64 fu.wei
2015-10-29 15:25     ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-29 15:25       ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-29 19:53       ` Andrei Borzenkov
2015-10-29 19:53         ` Andrei Borzenkov
2015-10-30  8:44       ` Fu Wei
2015-10-30  8:44         ` Fu Wei
2015-10-30  9:50         ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-30  9:50           ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-10-30 10:07           ` Andrei Borzenkov
2015-10-30 10:07             ` Andrei Borzenkov
     [not found]             ` <CAEaD8JOHR9QXa=ySc36a-ECF-7MUBgvaSVFw_BZxrXrvZA5u_A@mail.gmail.com>
     [not found]               ` <CAA91j0XKvpgVVWuv79AEv6bguxrQrV4q+eG5Xtw+UBvMSmDF-w@mail.gmail.com>
2015-11-12 10:43                 ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-23  5:16   ` [PATCH v3 4/4] arm64: Add the introduction of xen boot commands in docs/grub.texi fu.wei
2015-08-04  8:34   ` [PATCH v3 0/4] arm64: Add Xen boot support (via fdt) Fu Wei
2015-09-08  3:38     ` Fu Wei
2015-09-30 16:00       ` Stefano Stabellini
2015-10-01 16:19         ` Stefano Stabellini
2015-10-29  2:43           ` Fu Wei
2015-10-29  6:06         ` Fu Wei
2015-10-29 11:00           ` Stefano Stabellini
2015-08-14 12:35 ` [PATCH] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
2015-08-14 12:39   ` Fu Wei
2015-08-14 18:27     ` Zhang, Jonathan Zhixiong
2015-08-15  6:45       ` Fu Wei
2015-08-17 10:01   ` Will Deacon
2015-08-17 23:19     ` Zhang, Jonathan Zhixiong
2015-08-18  8:31       ` Will Deacon
2015-08-18  9:26         ` Fu Wei
2015-08-18 16:44 ` [PATCH v2 0/2] acpi, apei: add BERT support fu.wei
2015-08-18 16:44   ` [PATCH v2 1/2] acpi, apei: add Boot Error Record Table (BERT) support fu.wei
2015-12-16 10:29     ` Borislav Petkov
2016-01-06 18:21       ` Fu Wei
2016-01-06 18:31         ` Borislav Petkov
2015-08-18 16:44   ` [PATCH v2 2/2] acpi, apei, bert: Clear error status at the end of error handling fu.wei
2015-12-16 10:30     ` Borislav Petkov
2015-12-15 16:39   ` [Linaro-acpi] [PATCH v2 0/2] acpi, apei: add BERT support Timur Tabi
2016-01-06 18:24     ` Fu Wei
2015-08-24 17:01 ` [PATCH v7 0/8] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-08-24 17:01   ` [PATCH v7 1/8] Documentation: add sbsa-gwdt.txt documentation fu.wei
2015-08-24 17:01   ` [PATCH v7 2/8] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-09-15  8:43     ` Dave Young
2015-09-15  8:43       ` Dave Young
2015-09-15  9:44       ` Pratyush Anand
2015-09-15 10:23         ` Fu Wei
2015-09-15 10:15       ` Fu Wei
2015-08-24 17:01   ` [PATCH v7 3/8] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-08-24 17:01   ` [PATCH v7 4/8] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-08-24 17:01   ` [PATCH v7 5/8] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-09-10 22:29     ` Jon Masters
2015-09-11  2:05       ` Guenter Roeck
2015-09-11  2:50       ` Guenter Roeck
2015-09-11  2:50         ` Guenter Roeck
2015-09-14 17:11         ` Fu Wei
2015-09-15  8:38     ` Dave Young
2015-09-15 10:07       ` Fu Wei
2015-09-16  1:57         ` Dave Young
2015-10-13  8:34           ` Fu Wei
2015-10-13  8:34             ` Fu Wei
2015-08-24 17:01   ` [PATCH v7 6/8] ACPI: add GTDT table parse driver into ACPI driver fu.wei
2015-08-24 17:01   ` [PATCH v7 7/8] Watchdog: enable ACPI GTDT support for ARM SBSA watchdog driver fu.wei
2015-08-24 17:01   ` [PATCH v7 8/8] clocksource: simplify ACPI code in arm_arch_timer.c fu.wei
2015-08-24 17:01     ` fu.wei-QSEj5FYQhm4dnm+yROfE0A
2015-08-24 17:50     ` Thomas Gleixner
2015-08-25 17:19       ` Fu Wei
2015-08-25 19:17         ` Thomas Gleixner
2015-08-25 19:17           ` Thomas Gleixner
2015-08-27 12:02           ` Hanjun Guo
2015-08-27 12:02             ` Hanjun Guo
2015-08-27 12:08             ` Thomas Gleixner
2015-08-27 12:28               ` Hanjun Guo
2015-08-27 12:28                 ` Hanjun Guo
2015-08-27 13:36                 ` Hanjun Guo
2015-08-27 13:40                   ` Thomas Gleixner
2015-08-27 13:40                     ` Thomas Gleixner
2015-08-27 13:51                     ` Fu Wei
2015-09-14 18:05                       ` Marc Zyngier
2015-09-14 18:05                         ` Marc Zyngier
2015-09-30 17:13   ` [PATCH v7 0/8] Watchdog: introduce ARM SBSA watchdog driver Pratyush Anand
2015-09-30 17:22     ` Fu Wei
2016-02-25  6:50 ` [PATCH v2 0/4] arm64,xen: add xen_boot support into grup-mkconfig fu.wei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CADyBb7sfAMhcPe2QL3pmwshduW9TC_v0VyBnoZ7xhtY3y3k9vQ@mail.gmail.com \
    --to=fu.wei@linaro.org \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=al.stone@linaro.org \
    --cc=arnd@arndb.de \
    --cc=ashwin.chaugule@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=graeme.gregory@linaro.org \
    --cc=hanjun.guo@linaro.org \
    --cc=jcm@redhat.com \
    --cc=leo.duran@amd.com \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mark.rutland@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=tekkamanninja@gmail.com \
    --cc=timur@codeaurora.org \
    --cc=vgandhi@codeaurora.org \
    --cc=will.deacon@arm.com \
    --cc=wim@iguana.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.