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:   Thu, 17 Oct 2019 12:43:13 +0200
From:   Thierry Reding <thierry.reding@...il.com>
To:     Guru Das Srinagesh <gurus@...eaurora.org>
Cc:     linux-pwm@...r.kernel.org, kernel-team@...roid.com,
        Mark Salyzyn <salyzyn@...gle.com>,
        Sandeep Patil <sspatil@...gle.com>,
        Subbaraman Narayanamurthy <subbaram@...eaurora.org>,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/1] pwm: Convert period and duty cycle to u64

On Wed, Oct 16, 2019 at 11:02:47PM -0700, Guru Das Srinagesh wrote:
> On Wed, Oct 16, 2019 at 12:15:39PM +0200, Thierry Reding wrote:
> > On Tue, Oct 15, 2019 at 07:11:39PM -0700, Guru Das Srinagesh wrote:
> > > Because period and duty cycle are defined as ints with units of
> > > nanoseconds, the maximum time duration that can be set is limited to
> > > ~2.147 seconds. Change their definitions to u64 so that higher durations
> > > may be set.
> > > 
> > > Signed-off-by: Guru Das Srinagesh <gurus@...eaurora.org>
> > > ---
> > >  drivers/pwm/core.c  |  4 ++--
> > >  drivers/pwm/sysfs.c | 10 +++++-----
> > >  include/linux/pwm.h | 16 ++++++++--------
> > >  3 files changed, 15 insertions(+), 15 deletions(-)
> > 
> > Actually, we can't do that without further preparatory work. The reason
> > is that consumers use the period and duty_cycle members in computations
> > of their own, which lead to errors such as this:
> > 
> > 	armv7l-unknown-linux-gnueabihf-ld: drivers/video/backlight/pwm_bl.o: in function `pwm_backlight_probe':
> > 	pwm_bl.c:(.text+0x3b0): undefined reference to `__aeabi_uldivmod'
> > 
> > So I think we need to audit all consumers carefully and make sure that
> > they use do_div() where necessary to avoid such errors.
> > 
> > Thierry
> 
> Hi Thierry,
> 
> I would like to try doing the preparatory work by fixing the errors seen
> in consumers so that this u64 patch may be applied without issues.
> 
> Before sending the patch, I tried "make"-ing for arm, arm64 and i386
> architectures to check for compilation/linking errors and encountered
> none. I see that the above error arises from using a cross-compiler for
> arm v7, which I haven't tried yet.
> 
> Could you please provide details of the compile tests that you run at
> your end? I could then try to reproduce the errors you see in the
> consumer drivers and fix them. Please do share any other ideas or
> suggestions you may have in this regard.

I keep a set of scripts in the pwm/ subdirectory of the following
repository:

	https://github.com/thierryreding/scripts

Typically what I do is run:

	$ /path/to/scripts.git/pwm/build --jobs 13 --color

That requires a bit of setup for the cross-compilers. I have the
following in my ~/.cross-compile file:

	path: $HOME/pbs-stage1/bin:$HOME/toolchain/avr32/bin:$HOME/toolchain/unicore32/bin
	arm: armv7l-unknown-linux-gnueabihf-
	arm64: aarch64-unknown-linux-gnu-
	avr32: avr32-
	blackfin: bfin-unknown-elf-
	mips: mips-linux-gnu-
	unicore32: unicore32-linux-
	riscv: riscv64-linux-gnu-
	x86:
	x86_64:

The blackfin and unicore32 builds are expected to fail because the
blackfin architecture was removed and there's no recent enough kernel
publicly available for unicore32.

The last two entries in .cross-compile indicate that builds are native,
so regular gcc from the build system will be used.

Most of these compilers I've built from scratch using pbs-stage1:

	https://github.com/thierryreding/pbs-stage1

Note that I don't guarantee that that build system works for anyone but
myself, but I'd be happy to hear feedback if you decide to use it. That
said, you can probably find prebuilt toolchains for all of the above in
a number of locations, like:

	https://mirrors.edge.kernel.org/pub/tools/crosstool/

or:

	https://toolchains.bootlin.com/

Thierry

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ