Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1376494 > unrolled thread

[PATCH] watchdog: dw_wdt: dont build for avr32

Started bySudip Mukherjee <sudipm.mukherjee@gmail.com>
First post2016-04-12 08:00 +0200
Last post2016-04-12 20:20 +0200
Articles 8 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] watchdog: dw_wdt: dont build for avr32 Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2016-04-12 08:00 +0200
    Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Guenter Roeck <linux@roeck-us.net> - 2016-04-12 15:10 +0200
    Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Guenter Roeck <linux@roeck-us.net> - 2016-04-12 15:10 +0200
      Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2016-04-12 15:40 +0200
        Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-04-12 17:00 +0200
          Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2016-04-12 17:40 +0200
          Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Guenter Roeck <linux@roeck-us.net> - 2016-04-12 20:10 +0200
            Re: [PATCH] watchdog: dw_wdt: dont build for avr32 Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-04-12 20:20 +0200

#1376494 — [PATCH] watchdog: dw_wdt: dont build for avr32

FromSudip Mukherjee <sudipm.mukherjee@gmail.com>
Date2016-04-12 08:00 +0200
Subject[PATCH] watchdog: dw_wdt: dont build for avr32
Message-ID<rmZwK-25h-3@gated-at.bofh.it>
The build of avr32 allmodconfig fails with the error:
ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!

Exclude this driver from the build of avr32.

Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
---

avr32 build log is at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/122158665

 drivers/watchdog/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index fb94765..61041ba 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -981,7 +981,7 @@ config HP_WATCHDOG
 
 config KEMPLD_WDT
 	tristate "Kontron COM Watchdog Timer"
-	depends on MFD_KEMPLD
+	depends on MFD_KEMPLD && !AVR32
 	select WATCHDOG_CORE
 	help
 	  Support for the PLD watchdog on some Kontron ETX and COMexpress
-- 
1.9.1

[toc] | [next] | [standalone]


#1376784

FromGuenter Roeck <linux@roeck-us.net>
Date2016-04-12 15:10 +0200
Message-ID<rn6eS-7VQ-11@gated-at.bofh.it>
In reply to#1376494
On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
> The build of avr32 allmodconfig fails with the error:
> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
>
> Exclude this driver from the build of avr32.

Also, the subject line is wrong.

Guenter

>
> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
> ---
>
> avr32 build log is at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/122158665
>
>   drivers/watchdog/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index fb94765..61041ba 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -981,7 +981,7 @@ config HP_WATCHDOG
>
>   config KEMPLD_WDT
>   	tristate "Kontron COM Watchdog Timer"
> -	depends on MFD_KEMPLD
> +	depends on MFD_KEMPLD && !AVR32
>   	select WATCHDOG_CORE
>   	help
>   	  Support for the PLD watchdog on some Kontron ETX and COMexpress
>

[toc] | [prev] | [next] | [standalone]


#1376787

FromGuenter Roeck <linux@roeck-us.net>
Date2016-04-12 15:10 +0200
Message-ID<rn6eS-7VQ-15@gated-at.bofh.it>
In reply to#1376494
On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
> The build of avr32 allmodconfig fails with the error:
> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
>
This means there is a direct 64 bit divide operation in the driver,
which we should identify and fix.

Guenter

> Exclude this driver from the build of avr32.
>
> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
> ---
>
> avr32 build log is at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/122158665
>
>   drivers/watchdog/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index fb94765..61041ba 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -981,7 +981,7 @@ config HP_WATCHDOG
>
>   config KEMPLD_WDT
>   	tristate "Kontron COM Watchdog Timer"
> -	depends on MFD_KEMPLD
> +	depends on MFD_KEMPLD && !AVR32
>   	select WATCHDOG_CORE
>   	help
>   	  Support for the PLD watchdog on some Kontron ETX and COMexpress
>

[toc] | [prev] | [next] | [standalone]


#1376803

FromSudip Mukherjee <sudipm.mukherjee@gmail.com>
Date2016-04-12 15:40 +0200
Message-ID<rn6HT-89g-11@gated-at.bofh.it>
In reply to#1376787
On Tuesday 12 April 2016 06:36 PM, Guenter Roeck wrote:
> On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
>> The build of avr32 allmodconfig fails with the error:
>> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
>>
> This means there is a direct 64 bit divide operation in the driver,
> which we should identify and fix.

yes, there is.

in function: kempld_wdt_set_stage_timeout()
remainder = do_div(stage_timeout64, prescaler);

Any idea how to fix it?

regards
sudip

[toc] | [prev] | [next] | [standalone]


#1376877

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-04-12 17:00 +0200
Message-ID<rn7Xk-zk-21@gated-at.bofh.it>
In reply to#1376803
On Tue, Apr 12, 2016 at 4:39 PM, Sudip Mukherjee
<sudipm.mukherjee@gmail.com> wrote:
> On Tuesday 12 April 2016 06:36 PM, Guenter Roeck wrote:
>>
>> On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
>>>
>>> The build of avr32 allmodconfig fails with the error:
>>> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
>>>
>> This means there is a direct 64 bit divide operation in the driver,
>> which we should identify and fix.

This driver will quite likely never be used on AVR32. Do we need to
fix this due to some other architectures?

> yes, there is.
>
> in function: kempld_wdt_set_stage_timeout()
> remainder = do_div(stage_timeout64, prescaler);

> Any idea how to fix it?

Not easy, however, prescaler value is ((1 << 21) - 1) which someone
might consider as (1 << 21) with lost in precision.

Thus, shift on 20 bits right, add last bit to the value and shift on 1
bit right more.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1376942

FromSudip Mukherjee <sudipm.mukherjee@gmail.com>
Date2016-04-12 17:40 +0200
Message-ID<rn8A3-1cd-41@gated-at.bofh.it>
In reply to#1376877
On Tuesday 12 April 2016 08:28 PM, Andy Shevchenko wrote:
> On Tue, Apr 12, 2016 at 4:39 PM, Sudip Mukherjee
> <sudipm.mukherjee@gmail.com> wrote:
>> On Tuesday 12 April 2016 06:36 PM, Guenter Roeck wrote:
>>>
>>> On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
>>>>
>>>> The build of avr32 allmodconfig fails with the error:
>>>> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
>>>>
>>> This means there is a direct 64 bit divide operation in the driver,
>>> which we should identify and fix.
>
> This driver will quite likely never be used on AVR32. Do we need to
> fix this due to some other architectures?

I have not seen failure in the architecture builds I monitor. And since 
no one reported anything so I guess its only avr32.

regards
sudip

[toc] | [prev] | [next] | [standalone]


#1377072

FromGuenter Roeck <linux@roeck-us.net>
Date2016-04-12 20:10 +0200
Message-ID<rnaVc-3iR-11@gated-at.bofh.it>
In reply to#1376877
On Tue, Apr 12, 2016 at 05:58:20PM +0300, Andy Shevchenko wrote:
> On Tue, Apr 12, 2016 at 4:39 PM, Sudip Mukherjee
> <sudipm.mukherjee@gmail.com> wrote:
> > On Tuesday 12 April 2016 06:36 PM, Guenter Roeck wrote:
> >>
> >> On 04/11/2016 10:51 PM, Sudip Mukherjee wrote:
> >>>
> >>> The build of avr32 allmodconfig fails with the error:
> >>> ERROR: "__avr32_udiv64" [drivers/watchdog/kempld_wdt.ko] undefined!
> >>>
> >> This means there is a direct 64 bit divide operation in the driver,
> >> which we should identify and fix.
> 
> This driver will quite likely never be used on AVR32. Do we need to
> fix this due to some other architectures?
> 
> > yes, there is.
> >
> > in function: kempld_wdt_set_stage_timeout()
> > remainder = do_div(stage_timeout64, prescaler);
> 
> > Any idea how to fix it?
> 
> Not easy, however, prescaler value is ((1 << 21) - 1) which someone
> might consider as (1 << 21) with lost in precision.
> 
> Thus, shift on 20 bits right, add last bit to the value and shift on 1
> bit right more.
> 
Sorry, I am missing something. do_div() should work fine with any 32 bit value
as divisor, no matter what that value is. Why does it fail here ? And why does
it work if I pass 0x1fffff as second parameter to do_div() directly ?

Thanks,
Guenter

> -- 
> With Best Regards,
> Andy Shevchenko
> --
> To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [next] | [standalone]


#1377100

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-04-12 20:20 +0200
Message-ID<rnb4T-3n3-41@gated-at.bofh.it>
In reply to#1377072
On Tue, Apr 12, 2016 at 9:01 PM, Guenter Roeck <linux@roeck-us.net> wrote:
> On Tue, Apr 12, 2016 at 05:58:20PM +0300, Andy Shevchenko wrote:
>> On Tue, Apr 12, 2016 at 4:39 PM, Sudip Mukherjee
>> <sudipm.mukherjee@gmail.com> wrote:
>> > On Tuesday 12 April 2016 06:36 PM, Guenter Roeck wrote:
>> >>

> Sorry, I am missing something. do_div() should work fine with any 32 bit value
> as divisor, no matter what that value is. Why does it fail here ? And why does
> it work if I pass 0x1fffff as second parameter to do_div() directly ?

Perhaps compare assembly code in both cases?



-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web