From: Mike Galbraith <efault@gmx.de>
To: Rik van Riel <riel@surriel.com>, linux-kernel@vger.kernel.org
Cc: x86@kernel.org, luto@kernel.org, dave.hansen@linux.intel.com,
mingo@kernel.org, kernel-team@fb.com, tglx@linutronix.de,
songliubraving@fb.com, hpa@zytor.com
Subject: Re: [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids
Date: Sun, 08 Jul 2018 16:13:52 +0200 [thread overview]
Message-ID: <1531059232.4665.38.camel@gmx.de> (raw)
In-Reply-To: <1530998709.5350.32.camel@surriel.com>
On Sat, 2018-07-07 at 17:25 -0400, Rik van Riel wrote:
>
> > ./include/linux/bitmap.h:208:3: warning: ‘memset’ writing 64 bytes
> > into a region of size 0 overflows the destination [-Wstringop-
> > overflow=]
> > memset(dst, 0, len);
> > ^~~~~~~~~~~~~~~~~~~
>
> I don't understand this one.
>
> Inside init_mm we have this line:
> .cpu_bitmap = { [BITS_TO_LONGS(NR_CPUS)] = 0},
>
> which is the way the documentation suggests statically
> allocated variable size arrays should be allocated
> and initialized.
>
> How does that result in a memset of the same size,
> on the same array, to throw an error like above?
Compiler knows that ->cpu_bitmap is 64 bits of storage, and with
!CPUMASK_OFFSTACK, nr_cpumask_bits = NR_CPUS. With NR_CPUS > 64,
compiler gripes, with NR_CPUS <= 64 it's a happy camper.
> What am I doing wrong?
Below is what I did to get box to both STHU, and to boot with the
openSUSE master branch config I sent. Without the efi_mm hunk, boot
hangs early with or without the other hunk.
I build and boot tested the openSUSE config, a NOPREEMPT+MAXSMP config,
my local config w. NR_CPUS=8, and master-rt w. NR_CPUS=256, which is
the only one that got any real exercise (building the others).
---
drivers/firmware/efi/efi.c | 1 +
include/linux/mm_types.h | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -82,6 +82,7 @@ struct mm_struct efi_mm = {
.mmap_sem = __RWSEM_INITIALIZER(efi_mm.mmap_sem),
.page_table_lock = __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock),
.mmlist = LIST_HEAD_INIT(efi_mm.mmlist),
+ .cpu_bitmap = { [BITS_TO_LONGS(NR_CPUS)] = 0},
};
static bool disable_runtime;
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -501,7 +501,10 @@ extern struct mm_struct init_mm;
static inline void mm_init_cpumask(struct mm_struct *mm)
{
- cpumask_clear((struct cpumask *)&mm->cpu_bitmap);
+ unsigned long cpu_bitmap = (unsigned long)mm;
+
+ cpu_bitmap += offsetof(struct mm_struct, cpu_bitmap);
+ cpumask_clear((struct cpumask *)cpu_bitmap);
}
/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
next prev parent reply other threads:[~2018-07-08 14:14 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-06 21:56 [PATCH v4 0/7] x86,tlb,mm: make lazy TLB mode even lazier Rik van Riel
2018-07-06 21:56 ` [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids Rik van Riel
2018-07-07 8:23 ` Mike Galbraith
2018-07-07 21:25 ` Rik van Riel
2018-07-08 14:13 ` Mike Galbraith [this message]
2018-07-08 14:44 ` Mike Galbraith
2018-07-09 21:38 ` Rik van Riel
2018-07-10 3:28 ` Mike Galbraith
2018-07-06 21:56 ` [PATCH 2/7] x86,tlb: leave lazy TLB mode at page table free time Rik van Riel
2018-07-06 21:56 ` [PATCH 3/7] x86,mm: restructure switch_mm_irqs_off Rik van Riel
2018-07-06 21:56 ` [PATCH 4/7] x86,tlb: make lazy TLB mode lazier Rik van Riel
2018-07-06 21:56 ` [PATCH 5/7] x86,tlb: only send page table free TLB flush to lazy TLB CPUs Rik van Riel
2018-07-06 21:56 ` [PATCH 6/7] x86,mm: always use lazy TLB mode Rik van Riel
2018-07-06 21:56 ` [PATCH 7/7] x86,switch_mm: skip atomic operations for init_mm Rik van Riel
-- strict thread matches above, loose matches on Subject: below --
2018-07-16 19:03 [PATCH v6 0/7] x86,tlb,mm: make lazy TLB mode even lazier Rik van Riel
2018-07-16 19:03 ` [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids Rik van Riel
2018-08-04 22:28 ` Guenter Roeck
2018-07-10 14:28 [PATCH v5 0/7] x86,tlb,mm: make lazy TLB mode even lazier Rik van Riel
2018-07-10 14:28 ` [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids Rik van Riel
2018-07-15 22:59 ` Ingo Molnar
2018-07-15 23:50 ` Rik van Riel
2018-07-16 1:07 ` Ingo Molnar
2018-06-29 14:29 [PATCH v3 0/7] x86,tlb,mm: make lazy TLB mode even lazier Rik van Riel
2018-06-29 14:29 ` [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids Rik van Riel
2018-06-30 4:30 ` kbuild test robot
2018-06-20 19:56 [PATCH 0/7] x86,tlb,mm: make lazy TLB mode even lazier Rik van Riel
2018-06-20 19:56 ` [PATCH 1/7] mm: allocate mm_cpumask dynamically based on nr_cpu_ids Rik van Riel
2018-06-20 21:32 ` kbuild test robot
2018-06-21 20:18 ` Rik van Riel
2018-06-21 0:24 ` kbuild test robot
2018-06-22 15:10 ` Dave Hansen
2018-06-22 17:45 ` Rik van Riel
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=1531059232.4665.38.camel@gmx.de \
--to=efault@gmx.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=riel@surriel.com \
--cc=songliubraving@fb.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome