All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 12/13] x86, 64bit: Print init kernel lowmap correctly
Date: Fri, 21 Dec 2012 18:39:42 -0500	[thread overview]
Message-ID: <20121221233942.GA2000@phenom.dumpdata.com> (raw)
In-Reply-To: <CAE9FiQXsi5gj6QGp-rreH6Bqb6A5WTA6umFiiJ1mQFRp6u5ziw@mail.gmail.com>

On Fri, Dec 21, 2012 at 02:44:39PM -0800, Yinghai Lu wrote:
> On Fri, Dec 21, 2012 at 2:26 PM, Konrad Rzeszutek Wilk
> <konrad.wilk@oracle.com> wrote:
> >> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
> >> index 4178530..30f6190 100644
> >> --- a/arch/x86/mm/init_64.c
> >> +++ b/arch/x86/mm/init_64.c
> >> @@ -304,10 +304,14 @@ void __init init_extra_mapping_uc(unsigned long phys, unsigned long size)
> >>  void __init cleanup_highmap(void)
> >>  {
> >>       unsigned long vaddr = __START_KERNEL_map;
> >> -     unsigned long vaddr_end = __START_KERNEL_map + (max_pfn_mapped << PAGE_SHIFT);
> >> +     unsigned long vaddr_end = __START_KERNEL_map + KERNEL_IMAGE_SIZE;
> >
> > Should you remove the line in head64.c that sets the
> > max_pfn_mapped to KERNEL_IMAGE_SIZE >> PAGE_SHIFT?
> >
> >>       unsigned long end = roundup((unsigned long)_brk_end, PMD_SIZE) - 1;
> >>       pmd_t *pmd = level2_kernel_pgt;
> >>
> >> +     /* Xen has its own end somehow with abused max_pfn_mapped */
> >
> > Could you clarify please?
> >
> > My recollection is that the max_pfn_mapped would point to the end of the
> > RAMdisk. And yes (from mmu.c):
> >
> >    1862         /* max_pfn_mapped is the last pfn mapped in the initial memory
> >    1863          * mappings. Considering that on Xen after the kernel mappings we
> >    1864          * have the mappings of some pages that don't exist in pfn space, we
> >    1865          * set max_pfn_mapped to the last real pfn mapped. */
> >    1866         max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->mfn_list));
> >    1867
> >
> > And if you follow xen_start_info, you get to include/xen/interface/xen.h which has:
> >
> >     406  *  4. This the order of bootstrap elements in the initial virtual region:
> >     407  *      a. relocated kernel image
> >     408  *      b. initial ram disk              [mod_start, mod_len]
> >     409  *      c. list of allocated page frames [mfn_list, nr_pages]
> >
> > so per that code I believe max_pfn_mapped covers the kernel and the ramdisk - no more.
> >
> 
> for native path, in x86_64_start_kernel, we set max_pfn_mapped wrongly (my fault
> , I messed up low mapping and high mapping).
> before this patchset, low_mapping end before end of x86_64_start_kernel is
> 1G, and high mapping end is 512M.
> 
> max_pfn_mapped is for low mapping.
> 
> in this patch, for native patch, we keep max_pfn_mapped untouched, so
> before clean_highmap, it will be 0.
> 
> so we check !max_pfn_mapped to make xen still work.
> 
OK. Might want to have a comment pointing to the xen/mmu.c and the max_pfn_mapped
that is happening there. Thought if somebody is using 'cscope' or 'tags' they
should be able to find it.

Perhaps just have a comment and say:
'/* Xen includes the RAMdisk as well - which is right after the kernel. */


> >
> >> +     if (max_pfn_mapped)
> >> +             vaddr_end = __START_KERNEL_map + (max_pfn_mapped << PAGE_SHIFT);
> >> +
> >>       for (; vaddr + PMD_SIZE - 1 < vaddr_end; pmd++, vaddr += PMD_SIZE) {
> >>               if (pmd_none(*pmd))
> >>                       continue;
> >> --
> >
> > This part of the patch does not seem to have much to do with the printk?
> > Should it be seperate patch?
> 
> maybe we can change the subject of this patch to:
> 
> Subject: [PATCH] x86, 64bit: Don't set max_pfn_mapped wrong on native boot path

Or the inverse.

Set max_pfn_mapped correctly on non-native boot path?

But this patch is not actually touching max_pfn_mapped - it is vaddr_end?
So maybe:

Subject: For platforms to set max_pfn_mapped, take that under advisement when blowing away __ka page entries.

> 
> ?

  reply	other threads:[~2012-12-21 23:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-28  7:50 [PATCH v5 00/13] x86, boot, 64bit: Add support for loading ramdisk and bzImage above 4G Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 01/13] x86, boot: move verify_cpu.S after 0x200 Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 02/13] x86, boot: Move lldt/ltr out of 64bit code section Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 03/13] x86, 64bit: Set extra ident mapping for whole kernel range Yinghai Lu
2012-12-21 22:28   ` Konrad Rzeszutek Wilk
2012-12-21 22:35     ` Yinghai Lu
2012-12-21 22:39       ` H. Peter Anvin
2012-12-21 22:51         ` Yinghai Lu
2012-12-21 22:54           ` H. Peter Anvin
2012-12-21 23:40       ` Konrad Rzeszutek Wilk
2012-11-28  7:50 ` [PATCH v5 04/13] x86: Merge early_reserve_initrd for 32bit and 64bit Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 05/13] x86: add get_ramdisk_image/size() Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 06/13] x86, boot: add get_cmd_line_ptr() Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 07/13] x86, boot: move checking of cmd_line_ptr out of common path Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 08/13] x86, boot: update cmd_line_ptr to unsigned long Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 09/13] x86: use io_remap to access real_mode_data Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 10/13] x86, boot: add fields to support load bzImage and ramdisk above 4G Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 11/13] x86: remove 1024G limitation for kexec buffer on 64bit Yinghai Lu
2012-11-28  7:50 ` [PATCH v5 12/13] x86, 64bit: Print init kernel lowmap correctly Yinghai Lu
2012-12-21 22:26   ` Konrad Rzeszutek Wilk
2012-12-21 22:44     ` Yinghai Lu
2012-12-21 23:39       ` Konrad Rzeszutek Wilk [this message]
2012-12-21 23:52         ` Yinghai Lu
2012-12-22  2:14           ` Konrad Rzeszutek Wilk
2012-11-28  7:50 ` [PATCH v5 13/13] x86, mm: Fix page table early allocation offset checking Yinghai Lu

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=20121221233942.GA2000@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=yinghai@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 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.