linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] x86: keep the page count correct
@ 2008-10-26  5:58 Yinghai Lu
  2008-10-27 16:50 ` Suresh Siddha
  0 siblings, 1 reply; 12+ messages in thread
From: Yinghai Lu @ 2008-10-26  5:58 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Suresh Siddha,
	Jeremy Fitzhardinge, Andrew Morton
  Cc: linux-kernel


impact: get correct page count for 2M and 1G...

found page count in /proc/meminfo is nor correct on 1G system in VirtualBox 2.0.4

# cat /proc/meminfo
MemTotal:        1017508 kB
MemFree:          822700 kB
Buffers:            1456 kB
Cached:            26632 kB
SwapCached:            0 kB
...
Hugepagesize:       2048 kB
DirectMap4k:      4032 kB
DirectMap2M:  18446744073709549568 kB

with this patch get:
...
DirectMap4k:      4032 kB
DirectMap2M:   1044480 kB

which is consistent to kernel_page_tables
---[ Low Kernel Mapping ]---
0xffff880000000000-0xffff880000001000           4K     RW     PCD     GLB x  pte
0xffff880000001000-0xffff88000009f000         632K     RW             GLB x  pte
0xffff88000009f000-0xffff8800000a0000           4K     RW     PCD     GLB x  pte
0xffff8800000a0000-0xffff880000200000        1408K     RW             GLB x  pte
0xffff880000200000-0xffff88003fe00000        1020M     RW         PSE GLB x  pmd
0xffff88003fe00000-0xffff88003fff0000        1984K     RW             GLB NX pte
0xffff88003fff0000-0xffff880040000000          64K                           pte
0xffff880040000000-0xffff888000000000         511G                           pud
0xffff888000000000-0xffffc20000000000       58880G                           pgd

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 7df1209..701675a 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -350,8 +350,10 @@ phys_pte_init(pte_t *pte_page, unsigned long addr, unsigned long end,
 		 * pagetable pages as RO. So assume someone who pre-setup
 		 * these mappings are more intelligent.
 		 */
-		if (pte_val(*pte))
+		if (pte_val(*pte)) {
+			pages++;
 			continue;
+		}
 
 		if (0)
 			printk("   pte=%p addr=%lx pte=%016lx\n",
@@ -418,8 +420,10 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end,
 			 * not differ with respect to page frame and
 			 * attributes.
 			 */
-			if (page_size_mask & (1 << PG_LEVEL_2M))
+			if (page_size_mask & (1 << PG_LEVEL_2M)) {
+				pages++;
 				continue;
+			}
 			new_prot = pte_pgprot(pte_clrhuge(*(pte_t *)pmd));
 		}
 
@@ -499,8 +503,10 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end,
 			 * not differ with respect to page frame and
 			 * attributes.
 			 */
-			if (page_size_mask & (1 << PG_LEVEL_1G))
+			if (page_size_mask & (1 << PG_LEVEL_1G)) {
+				pages++;
 				continue;
+			}
 			prot = pte_pgprot(pte_clrhuge(*(pte_t *)pud));
 		}
 

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

* Re: [PATCH] x86: keep the page count correct
  2008-10-26  5:58 [PATCH] x86: keep the page count correct Yinghai Lu
@ 2008-10-27 16:50 ` Suresh Siddha
  2008-10-27 17:55   ` Ingo Molnar
  0 siblings, 1 reply; 12+ messages in thread
From: Suresh Siddha @ 2008-10-27 16:50 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Siddha, Suresh B,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel

On Sat, Oct 25, 2008 at 10:58:21PM -0700, Yinghai Lu wrote:
> 
> impact: get correct page count for 2M and 1G...
> 
> found page count in /proc/meminfo is nor correct on 1G system in VirtualBox 2.0.4
> 
> # cat /proc/meminfo
> MemTotal:        1017508 kB
> MemFree:          822700 kB
> Buffers:            1456 kB
> Cached:            26632 kB
> SwapCached:            0 kB
> ...
> Hugepagesize:       2048 kB
> DirectMap4k:      4032 kB
> DirectMap2M:  18446744073709549568 kB
> 
> with this patch get:
> ...
> DirectMap4k:      4032 kB
> DirectMap2M:   1044480 kB
> 
> which is consistent to kernel_page_tables
> ---[ Low Kernel Mapping ]---
> 0xffff880000000000-0xffff880000001000           4K     RW     PCD     GLB x  pte
> 0xffff880000001000-0xffff88000009f000         632K     RW             GLB x  pte
> 0xffff88000009f000-0xffff8800000a0000           4K     RW     PCD     GLB x  pte
> 0xffff8800000a0000-0xffff880000200000        1408K     RW             GLB x  pte
> 0xffff880000200000-0xffff88003fe00000        1020M     RW         PSE GLB x  pmd
> 0xffff88003fe00000-0xffff88003fff0000        1984K     RW             GLB NX pte
> 0xffff88003fff0000-0xffff880040000000          64K                           pte
> 0xffff880040000000-0xffff888000000000         511G                           pud
> 0xffff888000000000-0xffffc20000000000       58880G                           pgd
> 
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>

Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>

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

* Re: [PATCH] x86: keep the page count correct
  2008-10-27 16:50 ` Suresh Siddha
@ 2008-10-27 17:55   ` Ingo Molnar
  2008-10-28  1:52     ` [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) Yinghai Lu
  0 siblings, 1 reply; 12+ messages in thread
From: Ingo Molnar @ 2008-10-27 17:55 UTC (permalink / raw)
  To: Suresh Siddha
  Cc: Yinghai Lu, Thomas Gleixner, H. Peter Anvin, Jeremy Fitzhardinge,
	Andrew Morton, linux-kernel


* Suresh Siddha <suresh.b.siddha@intel.com> wrote:

> On Sat, Oct 25, 2008 at 10:58:21PM -0700, Yinghai Lu wrote:
> > 
> > impact: get correct page count for 2M and 1G...
> > 
> > found page count in /proc/meminfo is nor correct on 1G system in VirtualBox 2.0.4
> > 
> > # cat /proc/meminfo
> > MemTotal:        1017508 kB
> > MemFree:          822700 kB
> > Buffers:            1456 kB
> > Cached:            26632 kB
> > SwapCached:            0 kB
> > ...
> > Hugepagesize:       2048 kB
> > DirectMap4k:      4032 kB
> > DirectMap2M:  18446744073709549568 kB
> > 
> > with this patch get:
> > ...
> > DirectMap4k:      4032 kB
> > DirectMap2M:   1044480 kB
> > 
> > which is consistent to kernel_page_tables
> > ---[ Low Kernel Mapping ]---
> > 0xffff880000000000-0xffff880000001000           4K     RW     PCD     GLB x  pte
> > 0xffff880000001000-0xffff88000009f000         632K     RW             GLB x  pte
> > 0xffff88000009f000-0xffff8800000a0000           4K     RW     PCD     GLB x  pte
> > 0xffff8800000a0000-0xffff880000200000        1408K     RW             GLB x  pte
> > 0xffff880000200000-0xffff88003fe00000        1020M     RW         PSE GLB x  pmd
> > 0xffff88003fe00000-0xffff88003fff0000        1984K     RW             GLB NX pte
> > 0xffff88003fff0000-0xffff880040000000          64K                           pte
> > 0xffff880040000000-0xffff888000000000         511G                           pud
> > 0xffff888000000000-0xffffc20000000000       58880G                           pgd
> > 
> > Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> 
> Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>

applied to tip/x86/urgent, thanks guys!

	Ingo

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

* [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-27 17:55   ` Ingo Molnar
@ 2008-10-28  1:52     ` Yinghai Lu
  2008-10-28  9:27       ` Ingo Molnar
  0 siblings, 1 reply; 12+ messages in thread
From: Yinghai Lu @ 2008-10-28  1:52 UTC (permalink / raw)
  To: Ingo Molnar, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton
  Cc: linux-kernel


Impact: fix range calculation

when gart aperture is 0xdc000000 - 0xe0000000
it returned 0xc0000000 - 0xe0000000

PCI-DMA: Disabling AGP.
PCI-DMA: aperture base @ dc000000 size 65536 KB
init_memory_mapping
 00c0000000 - 00e0000000 page 2M
last_map_addr: e0000000 end: e0000000
PCI-DMA: using GART IOMMU.
PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture

that is not right.

this patch fix that will get exact mapping

on 256g sytem with that aperture after patch
LBSuse:~ # cat /proc/meminfo
MemTotal:       264742432 kB
MemFree:        263920628 kB
Buffers:            1416 kB
Cached:            24468 kB
...
DirectMap4k:      5760 kB
DirectMap2M:   3205120 kB
DirectMap1G:  265289728 kB

it is consistent to
LBSuse:~ # cat /sys/kernel/debug/kernel_page_tables
..
---[ Low Kernel Mapping ]---
0xffff880000000000-0xffff880000200000           2M     RW             GLB x  pte
0xffff880000200000-0xffff880040000000        1022M     RW         PSE GLB x  pmd
0xffff880040000000-0xffff8800c0000000           2G     RW         PSE GLB NX pud
0xffff8800c0000000-0xffff8800d7e00000         382M     RW         PSE GLB NX pmd
0xffff8800d7e00000-0xffff8800d7fa0000        1664K     RW             GLB NX pte
0xffff8800d7fa0000-0xffff8800d8000000         384K                           pte
0xffff8800d8000000-0xffff8800dc000000          64M                           pmd
0xffff8800dc000000-0xffff8800e0000000          64M     RW         PSE GLB NX pmd
0xffff8800e0000000-0xffff880100000000         512M                           pmd
0xffff880100000000-0xffff880800000000          28G     RW         PSE GLB NX pud
0xffff880800000000-0xffff880824600000         582M     RW         PSE GLB NX pmd
0xffff880824600000-0xffff8808247f0000        1984K     RW             GLB NX pte
0xffff8808247f0000-0xffff880824800000          64K     RW     PCD     GLB NX pte
0xffff880824800000-0xffff880840000000         440M     RW         PSE GLB NX pmd
0xffff880840000000-0xffff884000000000         223G     RW         PSE GLB NX pud
0xffff884000000000-0xffff884028000000         640M     RW         PSE GLB NX pmd
0xffff884028000000-0xffff884040000000         384M                           pmd
0xffff884040000000-0xffff888000000000         255G                           pud
0xffff888000000000-0xffffc20000000000       58880G                           pgd 

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/mm/init_64.c |   26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

Index: linux-2.6/arch/x86/mm/init_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_64.c
+++ linux-2.6/arch/x86/mm/init_64.c
@@ -676,7 +676,7 @@ unsigned long __init_refok init_memory_m
 	int nr_range, i;
 	int use_pse, use_gbpages;
 
-	printk(KERN_INFO "init_memory_mapping\n");
+	printk(KERN_INFO "init_memory_mapping: %016lx-%016lx\n", start, end);
 
 	/*
 	 * Find space for the kernel direct mapping tables.
@@ -719,26 +719,30 @@ unsigned long __init_refok init_memory_m
 			 << (PMD_SHIFT - PAGE_SHIFT);
 	end_pfn = ((start + (PUD_SIZE - 1))>>PUD_SHIFT)
 			 << (PUD_SHIFT - PAGE_SHIFT);
-	if (end_pfn > ((end>>PUD_SHIFT)<<(PUD_SHIFT - PAGE_SHIFT)))
-		end_pfn = ((end>>PUD_SHIFT)<<(PUD_SHIFT - PAGE_SHIFT));
+	if (end_pfn > ((end>>PMD_SHIFT)<<(PMD_SHIFT - PAGE_SHIFT)))
+		end_pfn = ((end>>PMD_SHIFT)<<(PMD_SHIFT - PAGE_SHIFT));
 	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
 			page_size_mask & (1<<PG_LEVEL_2M));
 
 	/* big page (1G) range */
-	start_pfn = end_pfn;
+	start_pfn = ((start + (PUD_SIZE - 1))>>PUD_SHIFT)
+			 << (PUD_SHIFT - PAGE_SHIFT);
 	end_pfn = (end>>PUD_SHIFT) << (PUD_SHIFT - PAGE_SHIFT);
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
+	if (start_pfn < end_pfn) {
+		/* if no 1g blocks, no 2M blocks on tail*/
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
 				page_size_mask &
 				 ((1<<PG_LEVEL_2M)|(1<<PG_LEVEL_1G)));
 
-	/* tail is not big page (1G) alignment */
-	start_pfn = end_pfn;
-	end_pfn = (end>>PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT);
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
-			page_size_mask & (1<<PG_LEVEL_2M));
+		/* tail is not big page (1G) alignment */
+		start_pfn = end_pfn;
+		end_pfn = (end>>PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT);
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
+				page_size_mask & (1<<PG_LEVEL_2M));
+	}
 
 	/* tail is not big page (2M) alignment */
-	start_pfn = end_pfn;
+	start_pfn = ((end>>PMD_SHIFT)<<(PMD_SHIFT - PAGE_SHIFT));
 	end_pfn = end>>PAGE_SHIFT;
 	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
 

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28  1:52     ` [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) Yinghai Lu
@ 2008-10-28  9:27       ` Ingo Molnar
  2008-10-28 17:48         ` Cyrill Gorcunov
       [not found]         ` <20081028093930.GA9699@elte.hu>
  0 siblings, 2 replies; 12+ messages in thread
From: Ingo Molnar @ 2008-10-28  9:27 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel


* Yinghai Lu <yinghai@kernel.org> wrote:

> Impact: fix range calculation

applied to tip/x86/urgent, thanks Yinghai!

i changed the impact line to:

Impact: change over-mapping to precise mapping, fix /proc/meminfo output

	Ingo

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28  9:27       ` Ingo Molnar
@ 2008-10-28 17:48         ` Cyrill Gorcunov
  2008-10-28 18:10           ` Ingo Molnar
       [not found]         ` <20081028093930.GA9699@elte.hu>
  1 sibling, 1 reply; 12+ messages in thread
From: Cyrill Gorcunov @ 2008-10-28 17:48 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Yinghai Lu, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel

[Ingo Molnar - Tue, Oct 28, 2008 at 10:27:37AM +0100]
| 
| * Yinghai Lu <yinghai@kernel.org> wrote:
| 
| > Impact: fix range calculation
| 
| applied to tip/x86/urgent, thanks Yinghai!
| 
| i changed the impact line to:
| 
| Impact: change over-mapping to precise mapping, fix /proc/meminfo output
| 
| 	Ingo
| 

When we started to use Impact: line? I mean -- now we have
to use it? Just noticed this word in patches a day or maybe
several day ago -- so it seem to be quite freshy :)

		- Cyrill -

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28 17:48         ` Cyrill Gorcunov
@ 2008-10-28 18:10           ` Ingo Molnar
  2008-10-28 18:14             ` Cyrill Gorcunov
  0 siblings, 1 reply; 12+ messages in thread
From: Ingo Molnar @ 2008-10-28 18:10 UTC (permalink / raw)
  To: Cyrill Gorcunov
  Cc: Yinghai Lu, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel


* Cyrill Gorcunov <gorcunov@gmail.com> wrote:

> [Ingo Molnar - Tue, Oct 28, 2008 at 10:27:37AM +0100]
> | 
> | * Yinghai Lu <yinghai@kernel.org> wrote:
> | 
> | > Impact: fix range calculation
> | 
> | applied to tip/x86/urgent, thanks Yinghai!
> | 
> | i changed the impact line to:
> | 
> | Impact: change over-mapping to precise mapping, fix /proc/meminfo output
> | 
> | 	Ingo
> | 
> 
> When we started to use Impact: line? I mean -- now we have
> to use it? Just noticed this word in patches a day or maybe
> several day ago -- so it seem to be quite freshy :)

We've been experimenting with the impact-line for a couple of 
weeks/months, just to see how it works out in practice.

The first impact-line ever was added by hpa in mid-summer:

| commit 908ec7afacfdc83dc10938ed1d3c38b3526034ec
| Author: H. Peter Anvin <hpa@zytor.com>
| Date:   Mon Jun 30 14:42:18 2008 -0700
|
|    x86: remove arbitrary ELF section limit in i386 relocatable kernel
|    
|    Impact: build failure in maximal configurations

The concept seems to be quite good in general:

 - increases the readability of the changlogs

 - makes it easier to judge the backporting needs of a commit, even 
   if a commit has not been marked as Cc: <stable@kernel.org> straight 
   away.

 - makes it easier to notice bugs in a commit: when a commit marked as 
   "Impact: cleanup" causes some behavioral change it's clear that 
   it's buggy.

It basically acts as a second-level subject line.

So, given these many advantages, we now try to extend the use of 
impact-lines to all the tip/*/urgent branches.

It's not a must-have item for patch submissions, just a nice-to-have 
property. (we'll add the impact-line when it's missing)

	Ingo

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28 18:10           ` Ingo Molnar
@ 2008-10-28 18:14             ` Cyrill Gorcunov
  2008-10-28 18:18               ` Ingo Molnar
  0 siblings, 1 reply; 12+ messages in thread
From: Cyrill Gorcunov @ 2008-10-28 18:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Yinghai Lu, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel

[Ingo Molnar - Tue, Oct 28, 2008 at 07:10:04PM +0100]
| 
| * Cyrill Gorcunov <gorcunov@gmail.com> wrote:
| 
| > [Ingo Molnar - Tue, Oct 28, 2008 at 10:27:37AM +0100]
| > | 
| > | * Yinghai Lu <yinghai@kernel.org> wrote:
| > | 
| > | > Impact: fix range calculation
| > | 
| > | applied to tip/x86/urgent, thanks Yinghai!
| > | 
| > | i changed the impact line to:
| > | 
| > | Impact: change over-mapping to precise mapping, fix /proc/meminfo output
| > | 
| > | 	Ingo
| > | 
| > 
| > When we started to use Impact: line? I mean -- now we have
| > to use it? Just noticed this word in patches a day or maybe
| > several day ago -- so it seem to be quite freshy :)
| 
| We've been experimenting with the impact-line for a couple of 
| weeks/months, just to see how it works out in practice.
| 
| The first impact-line ever was added by hpa in mid-summer:
| 
| | commit 908ec7afacfdc83dc10938ed1d3c38b3526034ec
| | Author: H. Peter Anvin <hpa@zytor.com>
| | Date:   Mon Jun 30 14:42:18 2008 -0700
| |
| |    x86: remove arbitrary ELF section limit in i386 relocatable kernel
| |    
| |    Impact: build failure in maximal configurations
| 
| The concept seems to be quite good in general:
| 
|  - increases the readability of the changlogs
| 
|  - makes it easier to judge the backporting needs of a commit, even 
|    if a commit has not been marked as Cc: <stable@kernel.org> straight 
|    away.
| 
|  - makes it easier to notice bugs in a commit: when a commit marked as 
|    "Impact: cleanup" causes some behavioral change it's clear that 
|    it's buggy.
| 
| It basically acts as a second-level subject line.
| 
| So, given these many advantages, we now try to extend the use of 
| impact-lines to all the tip/*/urgent branches.
| 
| It's not a must-have item for patch submissions, just a nice-to-have 
| property. (we'll add the impact-line when it's missing)
| 
| 	Ingo
| 

Ingo, I think it's a subject for SubmittingPatches then. To
eliminate future possible questions for those who never saw it
before. Thanks for explanation!

		- Cyrill -

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28 18:14             ` Cyrill Gorcunov
@ 2008-10-28 18:18               ` Ingo Molnar
  2008-10-28 18:22                 ` Cyrill Gorcunov
  0 siblings, 1 reply; 12+ messages in thread
From: Ingo Molnar @ 2008-10-28 18:18 UTC (permalink / raw)
  To: Cyrill Gorcunov
  Cc: Yinghai Lu, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel


* Cyrill Gorcunov <gorcunov@gmail.com> wrote:

> [Ingo Molnar - Tue, Oct 28, 2008 at 07:10:04PM +0100]
> | 
> | * Cyrill Gorcunov <gorcunov@gmail.com> wrote:
> | 
> | > [Ingo Molnar - Tue, Oct 28, 2008 at 10:27:37AM +0100]
> | > | 
> | > | * Yinghai Lu <yinghai@kernel.org> wrote:
> | > | 
> | > | > Impact: fix range calculation
> | > | 
> | > | applied to tip/x86/urgent, thanks Yinghai!
> | > | 
> | > | i changed the impact line to:
> | > | 
> | > | Impact: change over-mapping to precise mapping, fix /proc/meminfo output
> | > | 
> | > | 	Ingo
> | > | 
> | > 
> | > When we started to use Impact: line? I mean -- now we have
> | > to use it? Just noticed this word in patches a day or maybe
> | > several day ago -- so it seem to be quite freshy :)
> | 
> | We've been experimenting with the impact-line for a couple of 
> | weeks/months, just to see how it works out in practice.
> | 
> | The first impact-line ever was added by hpa in mid-summer:
> | 
> | | commit 908ec7afacfdc83dc10938ed1d3c38b3526034ec
> | | Author: H. Peter Anvin <hpa@zytor.com>
> | | Date:   Mon Jun 30 14:42:18 2008 -0700
> | |
> | |    x86: remove arbitrary ELF section limit in i386 relocatable kernel
> | |    
> | |    Impact: build failure in maximal configurations
> | 
> | The concept seems to be quite good in general:
> | 
> |  - increases the readability of the changlogs
> | 
> |  - makes it easier to judge the backporting needs of a commit, even 
> |    if a commit has not been marked as Cc: <stable@kernel.org> straight 
> |    away.
> | 
> |  - makes it easier to notice bugs in a commit: when a commit marked as 
> |    "Impact: cleanup" causes some behavioral change it's clear that 
> |    it's buggy.
> | 
> | It basically acts as a second-level subject line.
> | 
> | So, given these many advantages, we now try to extend the use of 
> | impact-lines to all the tip/*/urgent branches.
> | 
> | It's not a must-have item for patch submissions, just a nice-to-have 
> | property. (we'll add the impact-line when it's missing)
> | 
> | 	Ingo
> | 
> 
> Ingo, I think it's a subject for SubmittingPatches then. To 
> eliminate future possible questions for those who never saw it 
> before. Thanks for explanation!

well, this isnt an official policy in any way and we dont want to 
burden/complicate the life of other maintainers by putting it into 
linux/Documentation/SubmittingPatches. We are still experimenting with 
this concept - and while the results are very encouraging, YMMV!

	Ingo

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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000)
  2008-10-28 18:18               ` Ingo Molnar
@ 2008-10-28 18:22                 ` Cyrill Gorcunov
  0 siblings, 0 replies; 12+ messages in thread
From: Cyrill Gorcunov @ 2008-10-28 18:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Yinghai Lu, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Jeremy Fitzhardinge, Andrew Morton, linux-kernel

[Ingo Molnar - Tue, Oct 28, 2008 at 07:18:00PM +0100]
...
| > 
| > Ingo, I think it's a subject for SubmittingPatches then. To 
| > eliminate future possible questions for those who never saw it 
| > before. Thanks for explanation!
| 
| well, this isnt an official policy in any way and we dont want to 
| burden/complicate the life of other maintainers by putting it into 
| linux/Documentation/SubmittingPatches. We are still experimenting with 
| this concept - and while the results are very encouraging, YMMV!
| 
| 	Ingo
| 

Got it, thanks!

		- Cyrill -

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

* [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) - v2
       [not found]               ` <20081028095244.GY15734@elte.hu>
@ 2008-10-28 19:39                 ` Yinghai Lu
  2008-10-28 19:55                   ` Ingo Molnar
  0 siblings, 1 reply; 12+ messages in thread
From: Yinghai Lu @ 2008-10-28 19:39 UTC (permalink / raw)
  To: Ingo Molnar, Suresh Siddha, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton
  Cc: linux-kernel


Impact: change over-mapping to precise mapping, fix /proc/meminfo output

v2: fix less 1G ram system handling

when gart aperture is 0xdc000000 - 0xe0000000
it return 0xc0000000 - 0xe0000000

that is not right.

this patch fix that will get exact mapping

on 256g sytem with that aperture after patch
LBSuse:~ # cat /proc/meminfo
MemTotal:       264742432 kB
MemFree:        263920628 kB
Buffers:            1416 kB
Cached:            24468 kB
...
DirectMap4k:      5760 kB
DirectMap2M:   3205120 kB
DirectMap1G:  265289728 kB

it is consistent to
LBSuse:~ # cat /sys/kernel/debug/kernel_page_tables
..
---[ Low Kernel Mapping ]---
0xffff880000000000-0xffff880000200000           2M     RW             GLB x  pte
0xffff880000200000-0xffff880040000000        1022M     RW         PSE GLB x  pmd
0xffff880040000000-0xffff8800c0000000           2G     RW         PSE GLB NX pud
0xffff8800c0000000-0xffff8800d7e00000         382M     RW         PSE GLB NX pmd
0xffff8800d7e00000-0xffff8800d7fa0000        1664K     RW             GLB NX pte
0xffff8800d7fa0000-0xffff8800d8000000         384K                           pte
0xffff8800d8000000-0xffff8800dc000000          64M                           pmd
0xffff8800dc000000-0xffff8800e0000000          64M     RW         PSE GLB NX pmd
0xffff8800e0000000-0xffff880100000000         512M                           pmd
0xffff880100000000-0xffff880800000000          28G     RW         PSE GLB NX pud
0xffff880800000000-0xffff880824600000         582M     RW         PSE GLB NX pmd
0xffff880824600000-0xffff8808247f0000        1984K     RW             GLB NX pte
0xffff8808247f0000-0xffff880824800000          64K     RW     PCD     GLB NX pte
0xffff880824800000-0xffff880840000000         440M     RW         PSE GLB NX pmd
0xffff880840000000-0xffff884000000000         223G     RW         PSE GLB NX pud
0xffff884000000000-0xffff884028000000         640M     RW         PSE GLB NX pmd
0xffff884028000000-0xffff884040000000         384M                           pmd
0xffff884040000000-0xffff888000000000         255G                           pud
0xffff888000000000-0xffffc20000000000       58880G                           pgd 

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/mm/init_64.c |   50 +++++++++++++++++++++++++++++++++-----------------
 1 file changed, 33 insertions(+), 17 deletions(-)

Index: linux-2.6/arch/x86/mm/init_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/init_64.c
+++ linux-2.6/arch/x86/mm/init_64.c
@@ -671,12 +671,13 @@ unsigned long __init_refok init_memory_m
 	unsigned long last_map_addr = 0;
 	unsigned long page_size_mask = 0;
 	unsigned long start_pfn, end_pfn;
+	unsigned long pos;
 
 	struct map_range mr[NR_RANGE_MR];
 	int nr_range, i;
 	int use_pse, use_gbpages;
 
-	printk(KERN_INFO "init_memory_mapping\n");
+	printk(KERN_INFO "init_memory_mapping: %016lx-%016lx\n", start, end);
 
 	/*
 	 * Find space for the kernel direct mapping tables.
@@ -710,35 +711,50 @@ unsigned long __init_refok init_memory_m
 
 	/* head if not big page alignment ?*/
 	start_pfn = start >> PAGE_SHIFT;
-	end_pfn = ((start + (PMD_SIZE - 1)) >> PMD_SHIFT)
+	pos = start_pfn << PAGE_SHIFT;
+	end_pfn = ((pos + (PMD_SIZE - 1)) >> PMD_SHIFT)
 			<< (PMD_SHIFT - PAGE_SHIFT);
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
+	if (start_pfn < end_pfn) {
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
+		pos = end_pfn << PAGE_SHIFT;
+	}
 
 	/* big page (2M) range*/
-	start_pfn = ((start + (PMD_SIZE - 1))>>PMD_SHIFT)
+	start_pfn = ((pos + (PMD_SIZE - 1))>>PMD_SHIFT)
 			 << (PMD_SHIFT - PAGE_SHIFT);
-	end_pfn = ((start + (PUD_SIZE - 1))>>PUD_SHIFT)
+	end_pfn = ((pos + (PUD_SIZE - 1))>>PUD_SHIFT)
 			 << (PUD_SHIFT - PAGE_SHIFT);
-	if (end_pfn > ((end>>PUD_SHIFT)<<(PUD_SHIFT - PAGE_SHIFT)))
-		end_pfn = ((end>>PUD_SHIFT)<<(PUD_SHIFT - PAGE_SHIFT));
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
-			page_size_mask & (1<<PG_LEVEL_2M));
+	if (end_pfn > ((end>>PMD_SHIFT)<<(PMD_SHIFT - PAGE_SHIFT)))
+		end_pfn = ((end>>PMD_SHIFT)<<(PMD_SHIFT - PAGE_SHIFT));
+	if (start_pfn < end_pfn) {
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
+				page_size_mask & (1<<PG_LEVEL_2M));
+		pos = end_pfn << PAGE_SHIFT;
+	}
 
 	/* big page (1G) range */
-	start_pfn = end_pfn;
-	end_pfn = (end>>PUD_SHIFT) << (PUD_SHIFT - PAGE_SHIFT);
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
+	start_pfn = ((pos + (PUD_SIZE - 1))>>PUD_SHIFT)
+			 << (PUD_SHIFT - PAGE_SHIFT);
+	end_pfn = (end >> PUD_SHIFT) << (PUD_SHIFT - PAGE_SHIFT);
+	if (start_pfn < end_pfn) {
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
 				page_size_mask &
 				 ((1<<PG_LEVEL_2M)|(1<<PG_LEVEL_1G)));
+		pos = end_pfn << PAGE_SHIFT;
+	}
 
 	/* tail is not big page (1G) alignment */
-	start_pfn = end_pfn;
-	end_pfn = (end>>PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT);
-	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
-			page_size_mask & (1<<PG_LEVEL_2M));
+	start_pfn = ((pos + (PMD_SIZE - 1))>>PMD_SHIFT)
+			 << (PMD_SHIFT - PAGE_SHIFT);
+	end_pfn = (end >> PMD_SHIFT) << (PMD_SHIFT - PAGE_SHIFT);
+	if (start_pfn < end_pfn) {
+		nr_range = save_mr(mr, nr_range, start_pfn, end_pfn,
+				page_size_mask & (1<<PG_LEVEL_2M));
+		pos = end_pfn << PAGE_SHIFT;
+	}
 
 	/* tail is not big page (2M) alignment */
-	start_pfn = end_pfn;
+	start_pfn = pos>>PAGE_SHIFT;
 	end_pfn = end>>PAGE_SHIFT;
 	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
 


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

* Re: [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) - v2
  2008-10-28 19:39                 ` [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) - v2 Yinghai Lu
@ 2008-10-28 19:55                   ` Ingo Molnar
  0 siblings, 0 replies; 12+ messages in thread
From: Ingo Molnar @ 2008-10-28 19:55 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	linux-kernel


* Yinghai Lu <yinghai@kernel.org> wrote:

> Impact: change over-mapping to precise mapping, fix /proc/meminfo 
> output
> 
> v2: fix less 1G ram system handling

applied to tip/x86/urgent, thanks Yinghai!

	Ingo

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

end of thread, other threads:[~2008-10-28 19:55 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-26  5:58 [PATCH] x86: keep the page count correct Yinghai Lu
2008-10-27 16:50 ` Suresh Siddha
2008-10-27 17:55   ` Ingo Molnar
2008-10-28  1:52     ` [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) Yinghai Lu
2008-10-28  9:27       ` Ingo Molnar
2008-10-28 17:48         ` Cyrill Gorcunov
2008-10-28 18:10           ` Ingo Molnar
2008-10-28 18:14             ` Cyrill Gorcunov
2008-10-28 18:18               ` Ingo Molnar
2008-10-28 18:22                 ` Cyrill Gorcunov
     [not found]         ` <20081028093930.GA9699@elte.hu>
     [not found]           ` <20081028094758.GA11958@elte.hu>
     [not found]             ` <4906E048.6060006@kernel.org>
     [not found]               ` <20081028095244.GY15734@elte.hu>
2008-10-28 19:39                 ` [PATCH] x86: fix init_memory_mapping for [dc000000 - e0000000) - v2 Yinghai Lu
2008-10-28 19:55                   ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).