From: Alexey Dobriyan <adobriyan@gmail.com>
To: Christopher Lameter <cl@linux.com>
Cc: akpm@linux-foundation.org, penberg@kernel.org,
rientjes@google.com, iamjoonsoo.kim@lge.com, linux-mm@kvack.org
Subject: Re: [PATCH 12/25] slub: make ->reserved unsigned int
Date: Fri, 9 Mar 2018 18:51:04 +0300 [thread overview]
Message-ID: <20180309155103.GA11093@avx2> (raw)
In-Reply-To: <alpine.DEB.2.20.1803061242530.29393@nuc-kabylake>
On Tue, Mar 06, 2018 at 12:43:26PM -0600, Christopher Lameter wrote:
> On Mon, 5 Mar 2018, Alexey Dobriyan wrote:
>
> > ->reserved is either 0 or sizeof(struct rcu_head), can't be negative.
>
> Thus it should be size_t? ;-)
:-)
Christoph, using "unsigned int" should be default for kernel really.
As was noted earlier it doesn't matter for constants as x86_64 clears
upper half of a register. But it matters for sizes which aren't known
at compile time.
I've looked at a lot of places where size_t is used.
There is a certain degree of "type correctness" when people try to keep
type as much as possible. It works until first multiplication.
int n;
size_t len = sizeof(struct foo0) + n * sizeof(struct foo);
Most likely MOVSX or CDQE will be generated which is not the case
if everything is "unsigned int".
Generally, on x86_64,
uint32_t > uint64_t > uint16_t
uint8_t >
uint64_t adds REX prefix.
uint16_t additionally adds 66 prefix
uint8_t doesn't add anything but it is suboptimal on embedded archs
which emit "& 0xff" and thus should be used only for trimming memory
usage.
Additionally,
unsigned int > int
as it is easy for compiler to lose track of value range and generate
size extensions.
There is only one exception, namely, when pointers are mixed with
integers:
int n;
void *p = p0 + n;
Quite often, gcc generates bigger code when types are made unsigned.
I don't quite understand how it thinks, but overall code will be smaller
if every signed type is made into unsigned.
next prev parent reply other threads:[~2018-03-09 15:51 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-05 20:07 [PATCH 01/25] slab: fixup calculate_alignment() argument type Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 02/25] slab: make kmalloc_index() return "unsigned int" Alexey Dobriyan
2018-03-06 18:24 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 03/25] slab: make kmalloc_size() " Alexey Dobriyan
2018-03-06 18:24 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 04/25] slab: make create_kmalloc_cache() work with 32-bit sizes Alexey Dobriyan
2018-03-06 18:32 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 05/25] slab: make create_boot_cache() " Alexey Dobriyan
2018-03-06 18:34 ` Christopher Lameter
2018-03-06 19:14 ` Matthew Wilcox
2018-03-05 20:07 ` [PATCH 06/25] slab: make kmem_cache_create() " Alexey Dobriyan
2018-03-06 18:37 ` Christopher Lameter
2018-04-05 21:48 ` Andrew Morton
2018-04-06 8:40 ` Alexey Dobriyan
2018-04-07 15:13 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 07/25] slab: make size_index[] array u8 Alexey Dobriyan
2018-03-06 18:38 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 08/25] slab: make size_index_elem() unsigned int Alexey Dobriyan
2018-03-06 18:39 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 09/25] slub: make ->remote_node_defrag_ratio " Alexey Dobriyan
2018-03-06 18:41 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 10/25] slub: make ->max_attr_size " Alexey Dobriyan
2018-03-06 18:42 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 11/25] slub: make ->red_left_pad " Alexey Dobriyan
2018-03-06 18:42 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 12/25] slub: make ->reserved " Alexey Dobriyan
2018-03-06 18:43 ` Christopher Lameter
2018-03-09 15:51 ` Alexey Dobriyan [this message]
2018-03-06 18:45 ` Matthew Wilcox
2018-03-09 22:42 ` Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 13/25] slub: make ->align " Alexey Dobriyan
2018-03-06 18:43 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 14/25] slub: make ->inuse " Alexey Dobriyan
2018-03-06 18:44 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 15/25] slub: make ->cpu_partial " Alexey Dobriyan
2018-03-06 18:44 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 16/25] slub: make ->offset " Alexey Dobriyan
2018-03-06 18:45 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 17/25] slub: make ->object_size " Alexey Dobriyan
2018-03-06 18:45 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 18/25] slub: make ->size " Alexey Dobriyan
2018-03-06 18:46 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 19/25] slab: make kmem_cache_flags accept 32-bit object size Alexey Dobriyan
2018-03-06 18:47 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 20/25] kasan: make kasan_cache_create() work with 32-bit slab cache sizes Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 21/25] slab: make usercopy region 32-bit Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 22/25] slub: make slab_index() return unsigned int Alexey Dobriyan
2018-03-06 18:48 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 23/25] slub: make struct kmem_cache_order_objects::x " Alexey Dobriyan
2018-03-06 18:51 ` Christopher Lameter
2018-04-05 21:51 ` Andrew Morton
2018-04-06 18:02 ` Alexey Dobriyan
2018-04-07 15:18 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 24/25] slub: make size_from_object() return " Alexey Dobriyan
2018-03-06 18:52 ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 25/25] slab: use 32-bit arithmetic in freelist_randomize() Alexey Dobriyan
2018-03-06 18:52 ` Christopher Lameter
2018-03-06 18:21 ` [PATCH 01/25] slab: fixup calculate_alignment() argument type Christopher Lameter
2018-04-10 20:25 ` Matthew Wilcox
2018-04-10 20:47 ` Alexey Dobriyan
2018-04-10 21:02 ` Matthew Wilcox
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=20180309155103.GA11093@avx2 \
--to=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
/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.