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: Timur Tabi <timur@codeaurora.org>,
	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>,
	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 5/7] Watchdog: introduce ARM SBSA watchdog driver
Date: Tue, 9 Jun 2015 14:37:53 +0800	[thread overview]
Message-ID: <CADyBb7vR-jP6ZjzMSnprrSXbNayk8umx+cXV3TsGypfhZcCwTw@mail.gmail.com> (raw)
In-Reply-To: <55766D74.2060401@roeck-us.net>

Hi Guenter,

Thanks for reply so quickly.

On 9 June 2015 at 12:37, Guenter Roeck <linux@roeck-us.net> wrote:
> On 06/08/2015 08:59 PM, Fu Wei wrote:
>>
>> Hi Guenter,
>>
>>
>> On 9 June 2015 at 02:26, Guenter Roeck <linux@roeck-us.net> wrote:
>>>
>>> On 06/08/2015 09:05 AM, Fu Wei wrote:
>>>>
>>>>
>>>> Hi Gurnter
>>>>
>>>> On 3 June 2015 at 01:07, Guenter Roeck <linux@roeck-us.net> wrote:
>>>>>
>>>>>
>>>>> On 06/02/2015 09:55 AM, Fu Wei wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi Timur,
>>>>>>
>>>>>> Thanks , feedback inline
>>>>>>
>>>>>> On 2 June 2015 at 23:32, Timur Tabi <timur@codeaurora.org> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 06/01/2015 11:05 PM, fu.wei@linaro.org wrote:
>>>>>>>
>>>>>>>> +/*
>>>>>>>> + * help functions for accessing 32bit registers of SBSA Generic
>>>>>>>> Watchdog
>>>>>>>> + */
>>>>>>>> +static void sbsa_gwdt_cf_write(unsigned int reg, u32 val,
>>>>>>>> +                              struct watchdog_device *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       writel_relaxed(val, gwdt->control_base + reg);
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +static void sbsa_gwdt_rf_write(unsigned int reg, u32 val,
>>>>>>>> +                              struct watchdog_device *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       writel_relaxed(val, gwdt->refresh_base + reg);
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +static u32 sbsa_gwdt_cf_read(unsigned int reg, struct
>>>>>>>> watchdog_device
>>>>>>>> *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       return readl_relaxed(gwdt->control_base + reg);
>>>>>>>> +}
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I still think you should get rid of these functions and just call
>>>>>>> readl_relaxed() and writel_relaxed() every time, but I won't complain
>>>>>>> again
>>>>>>> if you keep them.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> yes, that make sense, and will reduce the size of code, and I think
>>>>>> the code's readability will be OK too.
>>>>>> will try in my next patch,
>>>>>>
>>>>>>>
>>>>>>>> +static irqreturn_t sbsa_gwdt_interrupt(int irq, void *dev_id)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = (struct sbsa_gwdt *)dev_id;
>>>>>>>> +       struct watchdog_device *wdd = &gwdt->wdd;
>>>>>>>> +
>>>>>>>> +       if (wdd->pretimeout)
>>>>>>>> +               /* The pretimeout is valid, go panic */
>>>>>>>> +               panic("SBSA Watchdog pre-timeout");
>>>>>>>> +       else
>>>>>>>> +               /* We don't use pretimeout, trigger WS1 now*/
>>>>>>>> +               sbsa_gwdt_set_wcv(wdd, 0);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I don't like this.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> If so, what is your idea ,if pretimeout == 0?
>>>>>>
>>>>>> the reason of using WCV as (timout - pretimeout): it can provide the
>>>>>> longer timeout period,
>>>>>> (1)If we use WOR, it can only provide 10s @ 400MHz(max).
>>>>>> as Guenter said earlier, the default timer out for most watchdog will
>>>>>> be 30s, so I think 10s limit will be a little short
>>>>>> (2)we can always program WCV just like ping.
>>>>>> (3)if a timeout arrives, WOR will be use, so use it as pretimeout, but
>>>>>> we still can make this pretimeout longer by programming WCV(I don't
>>>>>> think it's necessary)
>>>>>>
>>>>>>
>>>>>>> The triggering of the hardware reset should never depend
>>>>>>> on an interrupt being handled properly.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> if this fail, system reset in 1S, because WOR == (1s)
>>>>>>
>>>>> So ?
>>>>
>>>>
>>>>
>>>> Even the interrupt routine isn't triggered,  (WOR + system counter) -->
>>>> WCV,
>>>> then, sy system reset in 1S.
>>>>
>>>> the hardware reset doesn't depend on an interrupt.
>>>>
>>>>
>>>>>
>>>>>>> You should always program WCV
>>>>>>> correctly in advance.  This is especially true since pre-timeout will
>>>>>>> probably rarely be used.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> always programming WCV is doable.  But I absolutely can not agree "
>>>>>> pre-timeout will probably rarely be used"
>>>>>> If so, SBSA watchdog is just a normal watchdog,  This use case just
>>>>>> makes this HW useless.
>>>>>> If so, go to use SP805.
>>>>>> you still don't see the importance of this warning and pretimeout to a
>>>>>> real server.
>>>>>>
>>>>>
>>>>> If pretimeout isn't used, why not just set WCV = timeout, WOR = 0 ?
>>>>
>>>>
>>>>
>>>> Because if WOR = 0 , according to SBSA,  once you want to enable
>>>> watchdog,
>>>> (0 + system counter) --> WCV , then , WS0 and WS1 will be triggered
>>>> immediately.
>>>> we have not a chance(a time slot) to update WCV.
>>>>
>>>
>>> I would have thought that this is exactly what we want if pretimeout is
>>> not
>>> used.
>>
>>
>> Although pretimeout == 0 is not good for a server, but If
>> administrator set up pretimeout == 0. *I thinks we should trigger WS1
>> ASAP* . Because  WS1 maybe a interrupter or a reboot signal, that is
>> why we can not reboot system directly.
>>
>> This driver is SBSA watchdog driver, that means we need to follow SBSA
>> spec:
>> (1) SBSA watchdog has two stage timeouts --> timeout and pretimeout is
>> the best solution in watchdog framework, at least for now.
>> (2) The watchdog has the following output signals:
>>      Watchdog Signal 0 (WS0)---> "The initial signal is typically wired
>> to an interrupt and alerts the system."(original word from spec), I
>> thinks the key work should be "interrupt" and "alerts". So in WS0
>> interrupt routine, reset is absolutely a wrong operation. Although I
>> think we should make this "alerts" more useful. But for the first
>> version of driver, I thinks panic is useful enough.
>>      Watchdog Signal 1 (WS1). ---> "The signal is fed to a higher agent
>> as an interrupt or reset for it to take executive action." (original
>> word from spec) . The key work should be "interrupt", "or" and "reset"
>> . So  WS1 maybe a interrupt.
>> so even in the WS0 interrupt routine, if  pretimeout == 0 , we need to
>> trigger WS1(that is what my patch is doing now, set WCV to 0, so WCV
>> is always less than SystemCounter, and in this situation(WS0 = TRUE),
>> WS1 will be trigger immediately), but definitely not a reset too.
>>
>> But in worst case,  if the WS0 is triggered, but the interrupt routine
>> doesn't work(can not set up WCV), it doesn't matter, we just need to
>> wait for a WOR(1s in my driver) timeout, then WS1 will be triggered.
>> That is hardware mechanism, once we config SBSA watchdog correctly,
>> that should work.  If it doesn't, I think the chip design doesn't
>> follow the SBSA spec.
>>
>> Make a summary here, for SBSA watchdog driver,  it need to support two
>> stage timeouts and need to trigger WS0/1 when timeouts occur(can not
>> simply reset system in interrupt routines).
>> If a driver doesn't do these above, the driver can not be called SBSA
>> watchdog driver.
>>
>> But according to SBSA, even pretimeout == 0, we can not setup WOR = 0.
>> if we make WOR = 0 , once we set up WCS(enabling watchdog), that cause
>> a explicit watchdog refresh, then WCV = (0 + system counter), so WS0
>> and WS1 will be triggered serially and immediately(in theory, the
>
>
> I still don't understand why this would be a problem.

that 20+ lines pseudocode from the page 23 of SBSA spec 2.3 can
explain this well.
Please let me know which line confuse you, I will explain them one by one below.

>
>> "delay" also depend on implementation). So in my patchset , if
>> pretimeout == 0, WOR will be 1s at least to make sure we have time to
>> setup WCV. I have made comments in the patch for explaining this.
>>
>> Maybe some people want to ask: if we can not set up WOR = 0, but
>> pretimeout can be 0 and timeout can not, why I still want to use WOR
>> for pretimeout and using WCV as (timout - pretimeout) ??
>> For this:
>> (1)WCV can provide the longer timeout period, If we use WOR, it can
>> only provide 10s @ 400MHz(max). The default timer out for most
>> watchdog will be 30s, so I think 10s limit will be a little short.
>> (2)we can always program(write) WCV just like ping.
>> (3)if the first timeout occurs, WOR will be loaded to WCV(WOR + system
>> counter)  automatically , so why not just use WOR as pretimeout?
>> Although we still can make this pretimeout longer by programming WCV,
>> I don't think it's necessary for now.
>>
>
> Too bad I don't have an arm64 system to test myself. I am not sure
> I understand why WOR must be set to > 0 if pretimeout == 0, and even

Although SBSA spec has published for years(2.2 was published at 15th
Jan 2014), but this is still a relatively new spec of hardware, for
now . I only has Foundation model and FAST model for testing.
But I would like to suggest: this driver should follow the SBSA spec
first, but not a specific hardware, even some of hardware has this
watchdog, but there maybe some hardware bug in it(at least I know
there is one).

I am using 1 second, just because I think 1 second is safe enough to
reload WCV. (from write "1" in WCS  to reload WCV[31:0] and WCV[63:32]
)
Actually,  in most of case , we need WOR > 1, only when we enable the
watchdog( write "1" to WCS, this causes a ExplicitRefresh, see Line 7
"ExplicitRefresh == TRUE" and Line 8 below).
in this cause , we just need a time slot to reload WCV, the driver
doesn't really spend 1s on this.
But If WOR ==0, (Line 1) TimeoutRefresh = TRUE in a very short time,
the minimum time depends on the implementation. Then The first timeout
stage occur(see Line 7 (TimeoutRefresh == TRUE and WS0 == FALSE), and
Line 8 below again ) and  WS0 was triggered(Line 16~18).  Because WOR
==0 too, (Line 1) TimeoutRefresh = TRUE occur in a very short time
again, then see Line 16, 17, 20

In worst case, if pretimeout is 0, First timeout stage occur(see Line
7 (TimeoutRefresh == TRUE and WS0 == FALSE), and Line 8 below,  then
Line 16~18)   but the interrupt routine doesn't work, we can still got
WS1 in the time we configured in WOR. (Line 1) TimeoutRefresh = TRUE
occur when SystemCounter[63:0] > SystemCounter[63:0] +
ZeroExtend(WOR[31:0]), then  Line 16, 17, 20

---------------------------------------------------
CompareValue : WCV
WatchdogOffsetValue : WOR


1    TimeoutRefresh = (SystemCounter[63:0] > CompareValue[63:0])

2    If WatchdogColdReset
3            WatchdogEnable = DISABLED
4    Endif

5    If LoadNewCompareValue
6            CompareValue = new_value
7    ElseIf ExplicitRefresh == TRUE or (TimeoutRefresh == TRUE and WS0 == FALSE)
8           CompareValue = SystemCounter[63:0] +
ZeroExtend(WatchdogOffsetValue[31:0])
9    Endif

10  If WatchdogEnable == DISABLED
11          WS0 = FALSE
12          WS1 = FALSE
13  ElseIf ExplicitRefresh == TRUE
14         WS0 = FALSE
15         WS1 = FALSE
16  ElseIf TimeoutRefresh == TRUE
17         If WS0 == FALSE
18                   WS0 = TRUE
19         Else
20                   WS1 = TRUE
21         Endif
22  Endif
---------------------------------------------------

I would like to stress that  pretimeout == 0 should not happen in a
real server system,  that is why we defined  a SBSA watchdog, but not
a normal one
But we still need to thinking about the situation that administrator
want to do this on a very special purpose.

maybe we can set min_pretimeout = 1 for this driver. that is just a suggestion.


> if it must be set to a value > 0 I don't understand why
> setting it to 1 (instead of 1 second) would not be sufficient.

it don't have to be 1 second , it can be 0.1, 0.5 or 0.01 second. like
I said before, we just need a time slot to setup WCV in
sbsa_gwdt_start. I have commented this in sbsa_gwdt_set_pretimeout in
this patchset.
But I think the minimum time slot depend on implementation, the spec
doesn't mention about this.
If pretimeout == 0, and we set up WOR a little bigger,  it *ONLY*
affect "the worst case" I mention above. in this case, a administrator
set up pretimeout == 0 which should not happen in a real server, then
the system goes very wrong. I don't think it is important that this
server system reset in 1 second or 0.0001 second, at this time, this
server can not provide any useful info anyway(because we don't use
pretimeout).
If system may go wrong,  the administrator should set up pretimeout >
0 to figure out what is wrong with it just like he always should do.

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

WARNING: multiple messages have this Message-ID (diff)
From: Fu Wei <fu.wei-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
Cc: Timur Tabi <timur-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Suravee Suthikulpanit
	<Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>,
	Linaro ACPI Mailman List
	<linaro-acpi-cunTk1MwBs8s++Sfvej+rw@public.gmane.org>,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Wei Fu <tekkamanninja-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	G Gregory
	<graeme.gregory-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Al Stone <al.stone-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Hanjun Guo <hanjun.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Ashwin Chaugule
	<ashwin.chaugule-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	vgandhi-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
	wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org,
	Jon Masters <jcm-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Leo Duran <leo.duran-5C7GfCeVMHo@public.gmane.org>,
	Jon Corbet <corbet-T1hC0tSOHrs@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
	Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org
Subject: Re: [PATCH v4 5/7] Watchdog: introduce ARM SBSA watchdog driver
Date: Tue, 9 Jun 2015 14:37:53 +0800	[thread overview]
Message-ID: <CADyBb7vR-jP6ZjzMSnprrSXbNayk8umx+cXV3TsGypfhZcCwTw@mail.gmail.com> (raw)
In-Reply-To: <55766D74.2060401-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>

Hi Guenter,

Thanks for reply so quickly.

On 9 June 2015 at 12:37, Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org> wrote:
> On 06/08/2015 08:59 PM, Fu Wei wrote:
>>
>> Hi Guenter,
>>
>>
>> On 9 June 2015 at 02:26, Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org> wrote:
>>>
>>> On 06/08/2015 09:05 AM, Fu Wei wrote:
>>>>
>>>>
>>>> Hi Gurnter
>>>>
>>>> On 3 June 2015 at 01:07, Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org> wrote:
>>>>>
>>>>>
>>>>> On 06/02/2015 09:55 AM, Fu Wei wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi Timur,
>>>>>>
>>>>>> Thanks , feedback inline
>>>>>>
>>>>>> On 2 June 2015 at 23:32, Timur Tabi <timur-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 06/01/2015 11:05 PM, fu.wei-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org wrote:
>>>>>>>
>>>>>>>> +/*
>>>>>>>> + * help functions for accessing 32bit registers of SBSA Generic
>>>>>>>> Watchdog
>>>>>>>> + */
>>>>>>>> +static void sbsa_gwdt_cf_write(unsigned int reg, u32 val,
>>>>>>>> +                              struct watchdog_device *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       writel_relaxed(val, gwdt->control_base + reg);
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +static void sbsa_gwdt_rf_write(unsigned int reg, u32 val,
>>>>>>>> +                              struct watchdog_device *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       writel_relaxed(val, gwdt->refresh_base + reg);
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +static u32 sbsa_gwdt_cf_read(unsigned int reg, struct
>>>>>>>> watchdog_device
>>>>>>>> *wdd)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = to_sbsa_gwdt(wdd);
>>>>>>>> +
>>>>>>>> +       return readl_relaxed(gwdt->control_base + reg);
>>>>>>>> +}
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I still think you should get rid of these functions and just call
>>>>>>> readl_relaxed() and writel_relaxed() every time, but I won't complain
>>>>>>> again
>>>>>>> if you keep them.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> yes, that make sense, and will reduce the size of code, and I think
>>>>>> the code's readability will be OK too.
>>>>>> will try in my next patch,
>>>>>>
>>>>>>>
>>>>>>>> +static irqreturn_t sbsa_gwdt_interrupt(int irq, void *dev_id)
>>>>>>>> +{
>>>>>>>> +       struct sbsa_gwdt *gwdt = (struct sbsa_gwdt *)dev_id;
>>>>>>>> +       struct watchdog_device *wdd = &gwdt->wdd;
>>>>>>>> +
>>>>>>>> +       if (wdd->pretimeout)
>>>>>>>> +               /* The pretimeout is valid, go panic */
>>>>>>>> +               panic("SBSA Watchdog pre-timeout");
>>>>>>>> +       else
>>>>>>>> +               /* We don't use pretimeout, trigger WS1 now*/
>>>>>>>> +               sbsa_gwdt_set_wcv(wdd, 0);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I don't like this.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> If so, what is your idea ,if pretimeout == 0?
>>>>>>
>>>>>> the reason of using WCV as (timout - pretimeout): it can provide the
>>>>>> longer timeout period,
>>>>>> (1)If we use WOR, it can only provide 10s @ 400MHz(max).
>>>>>> as Guenter said earlier, the default timer out for most watchdog will
>>>>>> be 30s, so I think 10s limit will be a little short
>>>>>> (2)we can always program WCV just like ping.
>>>>>> (3)if a timeout arrives, WOR will be use, so use it as pretimeout, but
>>>>>> we still can make this pretimeout longer by programming WCV(I don't
>>>>>> think it's necessary)
>>>>>>
>>>>>>
>>>>>>> The triggering of the hardware reset should never depend
>>>>>>> on an interrupt being handled properly.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> if this fail, system reset in 1S, because WOR == (1s)
>>>>>>
>>>>> So ?
>>>>
>>>>
>>>>
>>>> Even the interrupt routine isn't triggered,  (WOR + system counter) -->
>>>> WCV,
>>>> then, sy system reset in 1S.
>>>>
>>>> the hardware reset doesn't depend on an interrupt.
>>>>
>>>>
>>>>>
>>>>>>> You should always program WCV
>>>>>>> correctly in advance.  This is especially true since pre-timeout will
>>>>>>> probably rarely be used.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> always programming WCV is doable.  But I absolutely can not agree "
>>>>>> pre-timeout will probably rarely be used"
>>>>>> If so, SBSA watchdog is just a normal watchdog,  This use case just
>>>>>> makes this HW useless.
>>>>>> If so, go to use SP805.
>>>>>> you still don't see the importance of this warning and pretimeout to a
>>>>>> real server.
>>>>>>
>>>>>
>>>>> If pretimeout isn't used, why not just set WCV = timeout, WOR = 0 ?
>>>>
>>>>
>>>>
>>>> Because if WOR = 0 , according to SBSA,  once you want to enable
>>>> watchdog,
>>>> (0 + system counter) --> WCV , then , WS0 and WS1 will be triggered
>>>> immediately.
>>>> we have not a chance(a time slot) to update WCV.
>>>>
>>>
>>> I would have thought that this is exactly what we want if pretimeout is
>>> not
>>> used.
>>
>>
>> Although pretimeout == 0 is not good for a server, but If
>> administrator set up pretimeout == 0. *I thinks we should trigger WS1
>> ASAP* . Because  WS1 maybe a interrupter or a reboot signal, that is
>> why we can not reboot system directly.
>>
>> This driver is SBSA watchdog driver, that means we need to follow SBSA
>> spec:
>> (1) SBSA watchdog has two stage timeouts --> timeout and pretimeout is
>> the best solution in watchdog framework, at least for now.
>> (2) The watchdog has the following output signals:
>>      Watchdog Signal 0 (WS0)---> "The initial signal is typically wired
>> to an interrupt and alerts the system."(original word from spec), I
>> thinks the key work should be "interrupt" and "alerts". So in WS0
>> interrupt routine, reset is absolutely a wrong operation. Although I
>> think we should make this "alerts" more useful. But for the first
>> version of driver, I thinks panic is useful enough.
>>      Watchdog Signal 1 (WS1). ---> "The signal is fed to a higher agent
>> as an interrupt or reset for it to take executive action." (original
>> word from spec) . The key work should be "interrupt", "or" and "reset"
>> . So  WS1 maybe a interrupt.
>> so even in the WS0 interrupt routine, if  pretimeout == 0 , we need to
>> trigger WS1(that is what my patch is doing now, set WCV to 0, so WCV
>> is always less than SystemCounter, and in this situation(WS0 = TRUE),
>> WS1 will be trigger immediately), but definitely not a reset too.
>>
>> But in worst case,  if the WS0 is triggered, but the interrupt routine
>> doesn't work(can not set up WCV), it doesn't matter, we just need to
>> wait for a WOR(1s in my driver) timeout, then WS1 will be triggered.
>> That is hardware mechanism, once we config SBSA watchdog correctly,
>> that should work.  If it doesn't, I think the chip design doesn't
>> follow the SBSA spec.
>>
>> Make a summary here, for SBSA watchdog driver,  it need to support two
>> stage timeouts and need to trigger WS0/1 when timeouts occur(can not
>> simply reset system in interrupt routines).
>> If a driver doesn't do these above, the driver can not be called SBSA
>> watchdog driver.
>>
>> But according to SBSA, even pretimeout == 0, we can not setup WOR = 0.
>> if we make WOR = 0 , once we set up WCS(enabling watchdog), that cause
>> a explicit watchdog refresh, then WCV = (0 + system counter), so WS0
>> and WS1 will be triggered serially and immediately(in theory, the
>
>
> I still don't understand why this would be a problem.

that 20+ lines pseudocode from the page 23 of SBSA spec 2.3 can
explain this well.
Please let me know which line confuse you, I will explain them one by one below.

>
>> "delay" also depend on implementation). So in my patchset , if
>> pretimeout == 0, WOR will be 1s at least to make sure we have time to
>> setup WCV. I have made comments in the patch for explaining this.
>>
>> Maybe some people want to ask: if we can not set up WOR = 0, but
>> pretimeout can be 0 and timeout can not, why I still want to use WOR
>> for pretimeout and using WCV as (timout - pretimeout) ??
>> For this:
>> (1)WCV can provide the longer timeout period, If we use WOR, it can
>> only provide 10s @ 400MHz(max). The default timer out for most
>> watchdog will be 30s, so I think 10s limit will be a little short.
>> (2)we can always program(write) WCV just like ping.
>> (3)if the first timeout occurs, WOR will be loaded to WCV(WOR + system
>> counter)  automatically , so why not just use WOR as pretimeout?
>> Although we still can make this pretimeout longer by programming WCV,
>> I don't think it's necessary for now.
>>
>
> Too bad I don't have an arm64 system to test myself. I am not sure
> I understand why WOR must be set to > 0 if pretimeout == 0, and even

Although SBSA spec has published for years(2.2 was published at 15th
Jan 2014), but this is still a relatively new spec of hardware, for
now . I only has Foundation model and FAST model for testing.
But I would like to suggest: this driver should follow the SBSA spec
first, but not a specific hardware, even some of hardware has this
watchdog, but there maybe some hardware bug in it(at least I know
there is one).

I am using 1 second, just because I think 1 second is safe enough to
reload WCV. (from write "1" in WCS  to reload WCV[31:0] and WCV[63:32]
)
Actually,  in most of case , we need WOR > 1, only when we enable the
watchdog( write "1" to WCS, this causes a ExplicitRefresh, see Line 7
"ExplicitRefresh == TRUE" and Line 8 below).
in this cause , we just need a time slot to reload WCV, the driver
doesn't really spend 1s on this.
But If WOR ==0, (Line 1) TimeoutRefresh = TRUE in a very short time,
the minimum time depends on the implementation. Then The first timeout
stage occur(see Line 7 (TimeoutRefresh == TRUE and WS0 == FALSE), and
Line 8 below again ) and  WS0 was triggered(Line 16~18).  Because WOR
==0 too, (Line 1) TimeoutRefresh = TRUE occur in a very short time
again, then see Line 16, 17, 20

In worst case, if pretimeout is 0, First timeout stage occur(see Line
7 (TimeoutRefresh == TRUE and WS0 == FALSE), and Line 8 below,  then
Line 16~18)   but the interrupt routine doesn't work, we can still got
WS1 in the time we configured in WOR. (Line 1) TimeoutRefresh = TRUE
occur when SystemCounter[63:0] > SystemCounter[63:0] +
ZeroExtend(WOR[31:0]), then  Line 16, 17, 20

---------------------------------------------------
CompareValue : WCV
WatchdogOffsetValue : WOR


1    TimeoutRefresh = (SystemCounter[63:0] > CompareValue[63:0])

2    If WatchdogColdReset
3            WatchdogEnable = DISABLED
4    Endif

5    If LoadNewCompareValue
6            CompareValue = new_value
7    ElseIf ExplicitRefresh == TRUE or (TimeoutRefresh == TRUE and WS0 == FALSE)
8           CompareValue = SystemCounter[63:0] +
ZeroExtend(WatchdogOffsetValue[31:0])
9    Endif

10  If WatchdogEnable == DISABLED
11          WS0 = FALSE
12          WS1 = FALSE
13  ElseIf ExplicitRefresh == TRUE
14         WS0 = FALSE
15         WS1 = FALSE
16  ElseIf TimeoutRefresh == TRUE
17         If WS0 == FALSE
18                   WS0 = TRUE
19         Else
20                   WS1 = TRUE
21         Endif
22  Endif
---------------------------------------------------

I would like to stress that  pretimeout == 0 should not happen in a
real server system,  that is why we defined  a SBSA watchdog, but not
a normal one
But we still need to thinking about the situation that administrator
want to do this on a very special purpose.

maybe we can set min_pretimeout = 1 for this driver. that is just a suggestion.


> if it must be set to a value > 0 I don't understand why
> setting it to 1 (instead of 1 second) would not be sufficient.

it don't have to be 1 second , it can be 0.1, 0.5 or 0.01 second. like
I said before, we just need a time slot to setup WCV in
sbsa_gwdt_start. I have commented this in sbsa_gwdt_set_pretimeout in
this patchset.
But I think the minimum time slot depend on implementation, the spec
doesn't mention about this.
If pretimeout == 0, and we set up WOR a little bigger,  it *ONLY*
affect "the worst case" I mention above. in this case, a administrator
set up pretimeout == 0 which should not happen in a real server, then
the system goes very wrong. I don't think it is important that this
server system reset in 1 second or 0.0001 second, at this time, this
server can not provide any useful info anyway(because we don't use
pretimeout).
If system may go wrong,  the administrator should set up pretimeout >
0 to figure out what is wrong with it just like he always should do.

>
> 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
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-06-09  6:38 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
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 [this message]
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=CADyBb7vR-jP6ZjzMSnprrSXbNayk8umx+cXV3TsGypfhZcCwTw@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.