Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1269684 > unrolled thread
| Started by | Geert Uytterhoeven <geert@linux-m68k.org> |
|---|---|
| First post | 2015-11-15 12:50 +0100 |
| Last post | 2015-11-17 01:20 +0100 |
| Articles | 8 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH 0/4] m68k/mm: Add missing initialization of max_pfn and {min,max}_low_pfn Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-15 12:50 +0100
[PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-15 12:50 +0100
Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Greg Ungerer <gerg@uclinux.org> - 2015-11-16 13:20 +0100
Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-16 14:10 +0100
Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Greg Ungerer <gerg@uclinux.org> - 2015-11-17 00:50 +0100
Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Greg Ungerer <gerg@uclinux.org> - 2015-11-17 01:00 +0100
Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn Geert Uytterhoeven <geert@linux-m68k.org> - 2015-11-22 11:40 +0100
Re: [PATCH 0/4] m68k/mm: Add missing initialization of max_pfn and {min,max}_low_pfn Greg Ungerer <gerg@uclinux.org> - 2015-11-17 01:20 +0100
| From | Geert Uytterhoeven <geert@linux-m68k.org> |
|---|---|
| Date | 2015-11-15 12:50 +0100 |
| Subject | [PATCH 0/4] m68k/mm: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qv3YK-Sx-5@gated-at.bofh.it> |
Hi,
This patch series adds missing initialization of max_pfn, min_low_pfn,
and max_low_pfn on various m68k platforms.
This was exposed by failing selftests/vm/mlock2-tests.
Note that several other architectures lack a proper initialization of
max_pfn. On some of them it's completely missing, on others max_pfn is a
local variable, hence it hides the global max_pfn, which is thus not
initialized neither.
On platforms with MMU, this can easily be verified by reading the
following virtual files (CONFIG_PROC_PAGE_MONITOR=y):
/proc/kpagecount
/proc/kpageflags
/proc/kpagecgroup (CONFIG_MEMCG=y)
If max_pfn is not initialized, all three virtual files are empty.
Besides the above, max_pfn is also used to calculate DMA masks for block
devices. An uninitialized (zero) value means all RAM is suitable for
DMA.
Absence of initialization of min_low_pfn and max_low_pfn is more subtle.
(are there any bad side-effects?).
Geert Uytterhoeven (4):
m68k/mm: motorola - Add missing initialization of max_pfn
m68k/mm: m54xx - Add missing initialization of max_pfn
m68k/mm: sun3 - Add missing initialization of max_pfn and
{min,max}_low_pfn
m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn
arch/m68k/coldfire/m54xx.c | 2 +-
arch/m68k/kernel/setup_no.c | 9 ++++++---
arch/m68k/mm/motorola.c | 2 +-
arch/m68k/sun3/config.c | 4 ++--
4 files changed, 10 insertions(+), 7 deletions(-)
--
1.9.1
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Geert Uytterhoeven <geert@linux-m68k.org> |
|---|---|
| Date | 2015-11-15 12:50 +0100 |
| Subject | [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qv3YK-Sx-21@gated-at.bofh.it> |
| In reply to | #1269684 |
If max_pfn is not initialized, the block layer may use wrong DMA masks. Replace open-coded shifts by PFN_DOWN() while we're at it. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- Compile-tested only. --- arch/m68k/kernel/setup_no.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c index 88c27d94a7214c95..29b44e69f0f47375 100644 --- a/arch/m68k/kernel/setup_no.c +++ b/arch/m68k/kernel/setup_no.c @@ -238,11 +238,14 @@ void __init setup_arch(char **cmdline_p) * Give all the memory to the bootmap allocator, tell it to put the * boot mem_map at the start of memory. */ + min_low_pfn = PFN_DOWN(memory_start); + max_pfn = max_low_pfn = PFN_DOWN(memory_end); + bootmap_size = init_bootmem_node( NODE_DATA(0), - memory_start >> PAGE_SHIFT, /* map goes here */ - PAGE_OFFSET >> PAGE_SHIFT, /* 0 on coldfire */ - memory_end >> PAGE_SHIFT); + min_low_pfn, /* map goes here */ + PFN_DOWN(PAGE_OFFSET), /* 0 on coldfire */ + max_pfn); /* * Free the usable memory, we have to make sure we do not free * the bootmem bitmap so we then reserve it after freeing it :-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Greg Ungerer <gerg@uclinux.org> |
|---|---|
| Date | 2015-11-16 13:20 +0100 |
| Subject | Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qvqVk-7cN-17@gated-at.bofh.it> |
| In reply to | #1269685 |
Hi Geert,
On 15/11/15 21:04, Geert Uytterhoeven wrote:
> If max_pfn is not initialized, the block layer may use wrong DMA masks.
>
> Replace open-coded shifts by PFN_DOWN() while we're at it.
>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> Compile-tested only.
> ---
> arch/m68k/kernel/setup_no.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c
> index 88c27d94a7214c95..29b44e69f0f47375 100644
> --- a/arch/m68k/kernel/setup_no.c
> +++ b/arch/m68k/kernel/setup_no.c
> @@ -238,11 +238,14 @@ void __init setup_arch(char **cmdline_p)
> * Give all the memory to the bootmap allocator, tell it to put the
> * boot mem_map at the start of memory.
> */
> + min_low_pfn = PFN_DOWN(memory_start);
> + max_pfn = max_low_pfn = PFN_DOWN(memory_end);
> +
> bootmap_size = init_bootmem_node(
> NODE_DATA(0),
> - memory_start >> PAGE_SHIFT, /* map goes here */
> - PAGE_OFFSET >> PAGE_SHIFT, /* 0 on coldfire */
> - memory_end >> PAGE_SHIFT);
> + min_low_pfn, /* map goes here */
> + PFN_DOWN(PAGE_OFFSET), /* 0 on coldfire */
> + max_pfn);
> /*
> * Free the usable memory, we have to make sure we do not free
> * the bootmem bitmap so we then reserve it after freeing it :-)
Should this be changed to use init_bootmem() as per your changes
in patch 3 ("m68k/mm: sun3 - Add missing initialization of max_pfn and
{min,max}_low_pfn")? For the same reason?
Regards
Greg
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Geert Uytterhoeven <geert@linux-m68k.org> |
|---|---|
| Date | 2015-11-16 14:10 +0100 |
| Subject | Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qvrHI-7IR-13@gated-at.bofh.it> |
| In reply to | #1270057 |
Hi Greg,
On Mon, Nov 16, 2015 at 1:18 PM, Greg Ungerer <gerg@uclinux.org> wrote:
>> --- a/arch/m68k/kernel/setup_no.c
>> +++ b/arch/m68k/kernel/setup_no.c
>> @@ -238,11 +238,14 @@ void __init setup_arch(char **cmdline_p)
>> * Give all the memory to the bootmap allocator, tell it to put
>> the
>> * boot mem_map at the start of memory.
>> */
>> + min_low_pfn = PFN_DOWN(memory_start);
>> + max_pfn = max_low_pfn = PFN_DOWN(memory_end);
>> +
>> bootmap_size = init_bootmem_node(
>> NODE_DATA(0),
>> - memory_start >> PAGE_SHIFT, /* map goes here */
>> - PAGE_OFFSET >> PAGE_SHIFT, /* 0 on coldfire
>> */
>> - memory_end >> PAGE_SHIFT);
>> + min_low_pfn, /* map goes here */
>> + PFN_DOWN(PAGE_OFFSET), /* 0 on coldfire */
>> + max_pfn);
>> /*
>> * Free the usable memory, we have to make sure we do not free
>> * the bootmem bitmap so we then reserve it after freeing it :-)
>
> Should this be changed to use init_bootmem() as per your changes
> in patch 3 ("m68k/mm: sun3 - Add missing initialization of max_pfn and
> {min,max}_low_pfn")? For the same reason?
No. PAGE_OFFSET = PAGE_OFFSET_RAW = CONFIG_RAMBASE.
As the comment says, this is zero on coldfire, but not on all m68knommu
platforms.
Upon closer look, this isn't even true on all Coldfire boards:
arch/m68k/configs/m5208evb_defconfig:CONFIG_RAMBASE=0x40000000
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Greg Ungerer <gerg@uclinux.org> |
|---|---|
| Date | 2015-11-17 00:50 +0100 |
| Subject | Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qvBH3-5vs-1@gated-at.bofh.it> |
| In reply to | #1270103 |
Hi Geert,
On 16/11/15 23:05, Geert Uytterhoeven wrote:
> On Mon, Nov 16, 2015 at 1:18 PM, Greg Ungerer <gerg@uclinux.org> wrote:
>>> --- a/arch/m68k/kernel/setup_no.c
>>> +++ b/arch/m68k/kernel/setup_no.c
>>> @@ -238,11 +238,14 @@ void __init setup_arch(char **cmdline_p)
>>> * Give all the memory to the bootmap allocator, tell it to put
>>> the
>>> * boot mem_map at the start of memory.
>>> */
>>> + min_low_pfn = PFN_DOWN(memory_start);
>>> + max_pfn = max_low_pfn = PFN_DOWN(memory_end);
>>> +
>>> bootmap_size = init_bootmem_node(
>>> NODE_DATA(0),
>>> - memory_start >> PAGE_SHIFT, /* map goes here */
>>> - PAGE_OFFSET >> PAGE_SHIFT, /* 0 on coldfire
>>> */
>>> - memory_end >> PAGE_SHIFT);
>>> + min_low_pfn, /* map goes here */
>>> + PFN_DOWN(PAGE_OFFSET), /* 0 on coldfire */
>>> + max_pfn);
>>> /*
>>> * Free the usable memory, we have to make sure we do not free
>>> * the bootmem bitmap so we then reserve it after freeing it :-)
>>
>> Should this be changed to use init_bootmem() as per your changes
>> in patch 3 ("m68k/mm: sun3 - Add missing initialization of max_pfn and
>> {min,max}_low_pfn")? For the same reason?
>
> No. PAGE_OFFSET = PAGE_OFFSET_RAW = CONFIG_RAMBASE.
> As the comment says, this is zero on coldfire, but not on all m68knommu
> platforms.
>
> Upon closer look, this isn't even true on all Coldfire boards:
>
> arch/m68k/configs/m5208evb_defconfig:CONFIG_RAMBASE=0x40000000
Yes, that comment is definitely wrong!
Regards
Greg
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Greg Ungerer <gerg@uclinux.org> |
|---|---|
| Date | 2015-11-17 01:00 +0100 |
| Subject | Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qvBQJ-5zm-11@gated-at.bofh.it> |
| In reply to | #1269685 |
Hi Geert, On 15/11/15 21:04, Geert Uytterhoeven wrote: > If max_pfn is not initialized, the block layer may use wrong DMA masks. > > Replace open-coded shifts by PFN_DOWN() while we're at it. > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Tested and working fine on m68knommu. So: Tested-By: Greg Ungerer <gerg@uclinux.org> If you respin this patch for any reason I wouldn't object to removing the "/* 0 on coldfire */" comment... Regards Greg > --- > Compile-tested only. > --- > arch/m68k/kernel/setup_no.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c > index 88c27d94a7214c95..29b44e69f0f47375 100644 > --- a/arch/m68k/kernel/setup_no.c > +++ b/arch/m68k/kernel/setup_no.c > @@ -238,11 +238,14 @@ void __init setup_arch(char **cmdline_p) > * Give all the memory to the bootmap allocator, tell it to put the > * boot mem_map at the start of memory. > */ > + min_low_pfn = PFN_DOWN(memory_start); > + max_pfn = max_low_pfn = PFN_DOWN(memory_end); > + > bootmap_size = init_bootmem_node( > NODE_DATA(0), > - memory_start >> PAGE_SHIFT, /* map goes here */ > - PAGE_OFFSET >> PAGE_SHIFT, /* 0 on coldfire */ > - memory_end >> PAGE_SHIFT); > + min_low_pfn, /* map goes here */ > + PFN_DOWN(PAGE_OFFSET), /* 0 on coldfire */ > + max_pfn); > /* > * Free the usable memory, we have to make sure we do not free > * the bootmem bitmap so we then reserve it after freeing it :-) > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Geert Uytterhoeven <geert@linux-m68k.org> |
|---|---|
| Date | 2015-11-22 11:40 +0100 |
| Subject | Re: [PATCH 4/4] m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qxAdQ-2sv-19@gated-at.bofh.it> |
| In reply to | #1270702 |
Hi Greg,
On Tue, Nov 17, 2015 at 12:54 AM, Greg Ungerer <gerg@uclinux.org> wrote:
> On 15/11/15 21:04, Geert Uytterhoeven wrote:
>> If max_pfn is not initialized, the block layer may use wrong DMA masks.
>>
>> Replace open-coded shifts by PFN_DOWN() while we're at it.
>>
>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
> Tested and working fine on m68knommu. So:
>
> Tested-By: Greg Ungerer <gerg@uclinux.org>
>
> If you respin this patch for any reason I wouldn't object
> to removing the "/* 0 on coldfire */" comment...
Thanks, done, applied, and queued for v4.4.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Greg Ungerer <gerg@uclinux.org> |
|---|---|
| Date | 2015-11-17 01:20 +0100 |
| Subject | Re: [PATCH 0/4] m68k/mm: Add missing initialization of max_pfn and {min,max}_low_pfn |
| Message-ID | <qvCa7-5Wu-9@gated-at.bofh.it> |
| In reply to | #1269684 |
Hi Geert,
On 15/11/15 21:04, Geert Uytterhoeven wrote:
> This patch series adds missing initialization of max_pfn, min_low_pfn,
> and max_low_pfn on various m68k platforms.
>
> This was exposed by failing selftests/vm/mlock2-tests.
>
> Note that several other architectures lack a proper initialization of
> max_pfn. On some of them it's completely missing, on others max_pfn is a
> local variable, hence it hides the global max_pfn, which is thus not
> initialized neither.
>
> On platforms with MMU, this can easily be verified by reading the
> following virtual files (CONFIG_PROC_PAGE_MONITOR=y):
>
> /proc/kpagecount
> /proc/kpageflags
> /proc/kpagecgroup (CONFIG_MEMCG=y)
>
> If max_pfn is not initialized, all three virtual files are empty.
>
> Besides the above, max_pfn is also used to calculate DMA masks for block
> devices. An uninitialized (zero) value means all RAM is suitable for
> DMA.
All looks good to me. Tested-by acks set separately. But otherwise
Acked-by: Greg Ungerer <gerg@uclinux.org>
Regards
Greg
> Absence of initialization of min_low_pfn and max_low_pfn is more subtle.
> (are there any bad side-effects?).
>
> Geert Uytterhoeven (4):
> m68k/mm: motorola - Add missing initialization of max_pfn
> m68k/mm: m54xx - Add missing initialization of max_pfn
> m68k/mm: sun3 - Add missing initialization of max_pfn and
> {min,max}_low_pfn
> m68knommu: Add missing initialization of max_pfn and {min,max}_low_pfn
>
> arch/m68k/coldfire/m54xx.c | 2 +-
> arch/m68k/kernel/setup_no.c | 9 ++++++---
> arch/m68k/mm/motorola.c | 2 +-
> arch/m68k/sun3/config.c | 4 ++--
> 4 files changed, 10 insertions(+), 7 deletions(-)
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web