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]
Message-ID: <20090703180450.GB3405@elte.hu>
Date:	Fri, 3 Jul 2009 20:04:50 +0200
From:	Ingo Molnar <mingo@...e.hu>
To:	Eric Dumazet <eric.dumazet@...il.com>,
	Linus Torvalds <torvalds@...ux-foundation.org>
Cc:	mingo@...hat.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH -tip] x86: atomic64: inline atomic64_read()


* Eric Dumazet <eric.dumazet@...il.com> wrote:

> Now atomic64_read() is light weight (no register pressure and 
> small icache), we can inline it again.
> 
> Also use "=&A" constraint instead of "+A" to avoid warning about 
> unitialized 'res' variable. (gcc had to force 0 in eax/edx)
> 
> 
> $ size vmlinux.prev vmlinux.after
>    text    data     bss     dec     hex filename
> 4908667  451676 1684868 7045211  6b805b vmlinux.prev
> 4908651  451676 1684868 7045195  6b804b vmlinux.after

ok, but:

> +static inline u64 atomic64_read(atomic64_t *ptr)
> +{
> +	u64 res;
> +
> +	asm volatile(
> +		"mov %%ebx, %%eax\n\t"
> +		"mov %%ecx, %%edx\n\t"
> +		LOCK_PREFIX "cmpxchg8b %1\n"
> +			: "=&A" (res)
> +			: "m" (*ptr) 
> +		);

That clobbers or affects eax, ebx, ecx, edx. The only registers it 
does not clobber is esi, edi and rbp.

So it's not quite lightweight. But your patch reduced the kernel 
image size by 17 bytes so i guess it counts as an improvement - and 
we also avoid function calls.

Linus, what's your preference in this case?

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ