All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] Revert fixrange_init() limiting to the FIXMAP region.
@ 2012-05-11 16:53 Steven J. Hill
  2012-05-11 17:19 ` Sergei Shtylyov
  0 siblings, 1 reply; 2+ messages in thread
From: Steven J. Hill @ 2012-05-11 16:53 UTC (permalink / raw)
  To: linux-mips, ralf; +Cc: Steven J. Hill, Leonid Yegoshin

From: "Steven J. Hill" <sjhill@mips.com>

This patch refactors 464fd83e841a16f4ea1325b33eb08170ef5cd1f4 and
correctly calculates the right length while taking into account
page table alignment by PMD.

Signed-off-by: Leonid Yegoshin <yegoshin@mips.com>
Signed-off-by: Steven J. Hill <sjhill@mips.com>
---
 arch/mips/mm/init.c       |    6 +++---
 arch/mips/mm/pgtable-32.c |    8 ++++++--
 arch/mips/mm/pgtable-64.c |    2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 1a85ba9..75f2724 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -277,11 +277,11 @@ void __init fixrange_init(unsigned long start, unsigned long end,
 	k = __pmd_offset(vaddr);
 	pgd = pgd_base + i;
 
-	for ( ; (i < PTRS_PER_PGD) && (vaddr < end); pgd++, i++) {
+	for ( ; (i < PTRS_PER_PGD) && (vaddr != end); pgd++, i++) {
 		pud = (pud_t *)pgd;
-		for ( ; (j < PTRS_PER_PUD) && (vaddr < end); pud++, j++) {
+		for ( ; (j < PTRS_PER_PUD) && (vaddr != end); pud++, j++) {
 			pmd = (pmd_t *)pud;
-			for (; (k < PTRS_PER_PMD) && (vaddr < end); pmd++, k++) {
+			for (; (k < PTRS_PER_PMD) && (vaddr != end); pmd++, k++) {
 				if (pmd_none(*pmd)) {
 					pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
 					set_pmd(pmd, __pmd((unsigned long)pte));
diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c
index adc6911..5d27baf 100644
--- a/arch/mips/mm/pgtable-32.c
+++ b/arch/mips/mm/pgtable-32.c
@@ -33,6 +33,7 @@ void pgd_init(unsigned long page)
 void __init pagetable_init(void)
 {
 	unsigned long vaddr;
+	unsigned long vend;
 	pgd_t *pgd_base;
 #ifdef CONFIG_HIGHMEM
 	pgd_t *pgd;
@@ -51,8 +52,11 @@ void __init pagetable_init(void)
 	/*
 	 * Fixed mappings:
 	 */
-	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
-	fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
+	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
+	/* Calculate real end before alignment. */
+	vend = vaddr + FIXADDR_SIZE;
+	vaddr = vaddr & PMD_MASK;
+	fixrange_init(vaddr, vend, pgd_base);
 
 #ifdef CONFIG_HIGHMEM
 	/*
diff --git a/arch/mips/mm/pgtable-64.c b/arch/mips/mm/pgtable-64.c
index cda4e30..78eaa4f 100644
--- a/arch/mips/mm/pgtable-64.c
+++ b/arch/mips/mm/pgtable-64.c
@@ -76,5 +76,5 @@ void __init pagetable_init(void)
 	 * Fixed mappings:
 	 */
 	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
-	fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
+	fixrange_init(vaddr, 0, pgd_base);
 }
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] Revert fixrange_init() limiting to the FIXMAP region.
  2012-05-11 16:53 [PATCH v3] Revert fixrange_init() limiting to the FIXMAP region Steven J. Hill
@ 2012-05-11 17:19 ` Sergei Shtylyov
  0 siblings, 0 replies; 2+ messages in thread
From: Sergei Shtylyov @ 2012-05-11 17:19 UTC (permalink / raw)
  To: Steven J. Hill; +Cc: linux-mips, ralf, Leonid Yegoshin

Hello.

On 05/11/2012 08:53 PM, Steven J. Hill wrote:

> From: "Steven J. Hill"<sjhill@mips.com>

> This patch refactors 464fd83e841a16f4ea1325b33eb08170ef5cd1f4 and

   Please also specify that commit's summary in parens.

> correctly calculates the right length while taking into account
> page table alignment by PMD.

> Signed-off-by: Leonid Yegoshin<yegoshin@mips.com>
> Signed-off-by: Steven J. Hill<sjhill@mips.com>
[...]

> diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c
> index adc6911..5d27baf 100644
> --- a/arch/mips/mm/pgtable-32.c
> +++ b/arch/mips/mm/pgtable-32.c
[...]
> @@ -51,8 +52,11 @@ void __init pagetable_init(void)
>   	/*
>   	 * Fixed mappings:
>   	 */
> -	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1)&  PMD_MASK;
> -	fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
> +	vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
> +	/* Calculate real end before alignment. */
> +	vend = vaddr + FIXADDR_SIZE;
> +	vaddr = vaddr & PMD_MASK;

	vaddr &= PMD_MASK;

WBR, Sergei

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-05-11 17:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-11 16:53 [PATCH v3] Revert fixrange_init() limiting to the FIXMAP region Steven J. Hill
2012-05-11 17:19 ` Sergei Shtylyov

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.