lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 14 Mar 2016 11:27:48 -0400
From:	Murali Karicheri <m-karicheri2@...com>
To:	<linux-kernel@...r.kernel.org>, <john.stultz@...aro.org>,
	<tglx@...utronix.de>
CC:	"Kristo, Tero" <t-kristo@...com>
Subject: Re: Export clocks_calc_mult_shift() function

On 03/08/2016 05:25 PM, Murali Karicheri wrote:
> Hi,
> 
> I found a patch posted sometime back to export the clocksource
> function clocks_calc_mult_shift() so that it can be called by
> drivers that are dynamically loadable. I have not seen any
> comment against this. Wondering why this is not merged. We require
> this function exported for use in our driver as well. Can you merge
> the patch please. Or do you suggest me to repost the same?
> 
> http://lkml.iu.edu/hypermail/linux/kernel/1502.2/01641.html
> 
> Thanks
> 
John,

Some reason, your response didn't make into my inbox. So I am 
reproducing it below.

>Why would the clocksource driver need to calculate the hz/shift value
>instead of using the clocksource_register_hz/khz functions?
>
>thanks
>-john

John,

In this use case, the timestamp for Tx/Rx is generated by a firmware
that attach the timestamp raw count to the packet meta data when the
same is received from the Packet Accelerator h/w at the ingress.
We need to convert this raw count value to nano second and use a code
like this.

/* Convert a raw PA timer count to nanoseconds
 */
static inline u64 tstamp_raw_to_ns(struct pa_core_device *core_dev, u32 lo,
                                   u32 hi)
{
        u32 mult = core_dev->timestamp_info.mult;
        u32 shift = core_dev->timestamp_info.shift;
        u64 result;

        /* Minimize overflow errors by doing this in pieces */
        result  = ((u64)lo * mult) >> shift;
        result += ((u64)hi << (32 - shift)) * mult;

        return result;
}

The mult, shift values are obtained using the existing clocks_calc_mult_shift()
that will not work, if our driver is built as a dynamically loadable module
as the symbol is not exported. 

Is there an alternative way of doing this without exporting this function. 
clocksource_register_hz/khz() can't help in this, right?

-- 
Murali Karicheri
Linux Kernel, Keystone

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ