All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: Jacob Shin <jacob.shin@amd.com>
Cc: Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	Yinghai Lu <yinghai@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>, Tejun Heo <tj@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH -v3 0/7] x86: Use BRK to pre mapping page table to make xen happy
Date: Thu, 18 Oct 2012 17:57:57 +0100	[thread overview]
Message-ID: <alpine.DEB.2.02.1210181754290.2689@kaball.uk.xensource.com> (raw)
In-Reply-To: <20121018162611.GA11556@jshin-Toonie>

Jacob,
thanks for testing!

Yinghai, it might be useful for you to try your patch series on Xen.
It is pretty simple, considering that you only need the hypervisor.
Just follow these steps:

- clone the xen-unstable git mirror
git clone git://xenbits.xen.org/xen.git

- compile and install xen
make xen
cp xen/xen.gz /boot

- add an entry to grub2.cfg
see the following example, note the multiboot line and the placeholder
argument after vmlinuz:

menuentry 'GNU/Linux, with Linux 2.6.32.40-pv' --class gnu-linux --class gnu --class os {
        recordfail
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root 016e7c8a-4bdd-4873-92dd-d71171a49d6d
        set root='(/dev/sda,msdos2)'
        search --no-floppy --fs-uuid --set=root 016e7c8a-4bdd-4873-92dd-d71171a49d6d
        multiboot /boot/xen-4.2-unstable.gz
        module /boot/vmlinuz-2.6.32.40-pv placeholder root=UUID=016e7c8a-4bdd-4873-92dd-d71171a49d6d dom0_mem=1024 console=tty  quiet splash vt.handoff=7
        module /boot/initrd.img-2.6.32.40-pv
}

- reboot and enjoy!



On Thu, 18 Oct 2012, Jacob Shin wrote:
> On Thu, Oct 18, 2012 at 05:17:28PM +0100, Stefano Stabellini wrote:
> > On Thu, 11 Oct 2012, Yinghai Lu wrote:
> > > On Wed, Oct 10, 2012 at 9:40 AM, Stefano Stabellini
> > > <stefano.stabellini@eu.citrix.com> wrote:
> > > >
> > > > So you are missing the Xen patches entirely in this iteration of the
> > > > series?
> > > 
> > > please check updated for-x86-mm branch.
> > > 
> > > [PATCH -v4 00/15] x86: Use BRK to pre mapping page table to make xen happy
> > > 
> > > on top of current linus/master and tip/x86/mm2, but please zap last
> > > patch in that branch.
> > > 
> > > 1. use brk to mapping first PMD_SIZE range.
> > > 2. top down to initialize page table range by range.
> > > 3. get rid of calculate page table, and find_early_page_table.
> > > 4. remove early_ioremap in page table accessing.
> > > 
> > > v2: changes, update xen interface about pagetable_reserve, so not
> > >    use pgt_buf_* in xen code directly.
> > > v3: use range top-down to initialize page table, so will not use
> > >    calculating/find early table anymore.
> > >    also reorder the patches sequence.
> > > v4: add mapping_mark_page_ro to fix xen, also move pgt_buf_* to init.c
> > >     and merge alloc_low_page()
> > > 
> > > could be found at:
> > >         git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git
> > > for-x86-mm
> > 
> > I find that patch series are easier to review than having to checkout
> > your code and read the commit messages. Please post your patch series to
> > the LKML next time.
> > 
> > In any case, regarding "x86, xen: Add xen_mapping_mark_page_ro": please
> > take Peter's feedback into account; mark_page_ro is not a good name for
> > a pvops.
> > Also I don't believe that this call is actually needed, see below.
> > 
> > Regarding "x86, mm: setup page table in top-down": if you mark the
> > pagetable page RO in alloc_low_page, won't the entire thing crash as
> > soon as you try to write to it? You are supposed to mark it RO after
> > filling up the pagetable page and before hooking it into the live
> > pagetable.
> > However contrary to my expectations, I did a quick test and it seems to
> > be working, that is probably due to a bug: maybe __pa or lookup_address
> > don't work correctly when called so early?
> 
> Hi Yinghai, I just tried it and dom0 died during init_memory_mapping, here
> is the Oops snippet, full logs are attached:
> 
> e820: last_pfn = 0x22f000 max_arch_pfn = 0x400000000
> e820: last_pfn = 0xcff00 max_arch_pfn = 0x400000000
> initial memory mapped: [mem 0x00000000-0x022affff]
> Base memory trampoline at [ffff880000096000] 96000 size 24576
> init_memory_mapping: [mem 0x00000000-0x000fffff]
>  [mem 0x00000000-0x000fffff] page 4k
> init_memory_mapping: [mem 0x21fe00000-0x21fe77fff]
>  [mem 0x21fe00000-0x21fe77fff] page 4k
> init_memory_mapping: [mem 0x21c000000-0x21fdfffff]
>  [mem 0x21c000000-0x21fdfffff] page 4k
> init_memory_mapping: [mem 0x200000000-0x21bffffff]
>  [mem 0x200000000-0x21bffffff] page 4k
> init_memory_mapping: [mem 0x00100000-0xcec6dfff]
>  [mem 0x00100000-0xcec6dfff] page 4k
> init_memory_mapping: [mem 0xcf5f4000-0xcf5f4fff]
>  [mem 0xcf5f4000-0xcf5f4fff] page 4k
> init_memory_mapping: [mem 0xcf7fb000-0xcfc19fff]
>  [mem 0xcf7fb000-0xcfc19fff] page 4k
> init_memory_mapping: [mem 0xcfef4000-0xcfefffff]
>  [mem 0xcfef4000-0xcfefffff] page 4k
> init_memory_mapping: [mem 0x100001000-0x1ffffffff]
>  [mem 0x100001000-0x1ffffffff] page 4k
> PGD 0 
> Oops: 0003 [#1] SMP 
> Modules linked in:
> CPU 0 
> Pid: 0, comm: swapper Not tainted 3.6.0+ #3 AMD Pike/Pike
> RIP: e030:[<ffffffff81cd778a>]  [<ffffffff81cd778a>] xen_set_pte_init+0x1/0x9
> RSP: e02b:ffffffff81c01ae8  EFLAGS: 00010086
> RAX: 80000001913d1063 RBX: ffff88021f63b1c8 RCX: 8000000000000163
> RDX: 00000000000001ff RSI: 80000001913d1063 RDI: ffff88021f63b1c8
> RBP: ffffffff81c01af8 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000000 R12: 000000011b039000
> R13: 000000000000003a R14: 000000011b03a000 R15: 000000011b039000
> FS:  0000000000000000(0000) GS:ffffffff81cbe000(0000) knlGS:0000000000000000
> CS:  e033 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 0000000001c0b000 CR4: 0000000000000660
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000
> Process swapper (pid: 0, threadinfo ffffffff81c00000, task ffffffff81c13410)
> Stack:
>  ffffffff81c01af8 ffffffff810330f5 ffffffff81c01b58 ffffffff816aa9f3
>  8000000000000163 ffff88021f63c000 0000000200000000 000000011b039000
>  ffffffff81c01b38 0000000000000000 000000011b000000 ffff88021f7146c0
> Call Trace:
>  [<ffffffff810330f5>] ? set_pte+0xb/0xd
>  [<ffffffff816aa9f3>] phys_pte_init+0xd4/0x106
>  [<ffffffff816aabe0>] phys_pmd_init+0x1bb/0x215
>  [<ffffffff816aadf3>] phys_pud_init+0x1b9/0x218
>  [<ffffffff816aaeff>] kernel_physical_mapping_init+0xad/0x14a
>  [<ffffffff81682a1a>] init_memory_mapping+0x275/0x303
>  [<ffffffff81ce6e62>] init_range_memory_mapping+0x8b/0xc8
>  [<ffffffff81ce6f91>] init_mem_mapping+0xf2/0x162
>  [<ffffffff81cd9d74>] setup_arch+0x682/0xaac
>  [<ffffffff816af4ab>] ? printk+0x48/0x4a
>  [<ffffffff81cd3868>] start_kernel+0x8e/0x3d8
>  [<ffffffff81cd32d3>] x86_64_start_reservations+0xae/0xb2
>  [<ffffffff81cd6dbc>] xen_start_kernel+0x63d/0x63f
> Code: 00 00 48 c7 c7 f2 a8 aa 81 e8 ee 61 36 ff c7 05 59 10 06 00 01 00 00 00 5d c3 55 48 89 f7 48 89 e5 e8 95 cf 32 ff 31 c0 5d c3 55 <48> 89 37 48 89 e5 5d c3 55 48 89 e5 41 57 41 56 45 31 f6 41 55 
>  RSP <ffffffff81c01ae8>
> CR2: 0000000000000000
> ---[ end trace c2b54da46b5614cf ]---


  reply	other threads:[~2012-10-18 16:58 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-09 23:58 [PATCH -v3 0/7] x86: Use BRK to pre mapping page table to make xen happy Yinghai Lu
2012-10-09 23:58 ` [PATCH 1/7] x86, mm: align start address to correct big page size Yinghai Lu
2012-10-09 23:58 ` [PATCH 2/7] x86, mm: Use big page size for small memory range Yinghai Lu
2012-10-09 23:58 ` [PATCH 3/7] x86, mm: Don't clear page table if next range is ram Yinghai Lu
2012-10-09 23:58 ` [PATCH 4/7] x86, mm: only keep initial mapping for ram Yinghai Lu
2012-10-10 13:48   ` Konrad Rzeszutek Wilk
2012-10-10 14:59     ` Yinghai Lu
2012-10-09 23:58 ` [PATCH 5/7] x86, mm: Break down init_all_memory_mapping Yinghai Lu
2012-10-10 13:55   ` Konrad Rzeszutek Wilk
2012-10-10 15:42     ` Yinghai Lu
2012-10-09 23:58 ` [PATCH 6/7] x86, mm: setup page table from top-down Yinghai Lu
2012-10-10  1:53   ` Yinghai Lu
2012-10-10 16:38   ` Stefano Stabellini
2012-10-10 17:07     ` Yinghai Lu
2012-10-10 17:26       ` Stefano Stabellini
2012-10-10 17:38         ` Yinghai Lu
2012-11-16 17:14           ` H. Peter Anvin
2012-11-16 17:16             ` Yinghai Lu
2012-10-09 23:58 ` [PATCH 7/7] x86, mm: Remove early_memremap workaround for page table accessing Yinghai Lu
2012-10-10 13:47 ` [PATCH -v3 0/7] x86: Use BRK to pre mapping page table to make xen happy Konrad Rzeszutek Wilk
2012-10-10 14:55   ` Yinghai Lu
2012-10-10 16:40 ` Stefano Stabellini
2012-10-11  6:13   ` Yinghai Lu
2012-10-11 23:04     ` Yinghai Lu
2012-10-18 16:17     ` Stefano Stabellini
2012-10-18 16:26       ` Jacob Shin
2012-10-18 16:57         ` Stefano Stabellini [this message]
2012-10-18 20:36           ` Yinghai Lu
2012-10-18 20:40         ` Yinghai Lu
2012-10-18 21:57           ` Jacob Shin
2012-10-18 20:43       ` Yinghai Lu
2012-10-30 13:44     ` Konrad Rzeszutek Wilk
2012-10-30 14:47       ` Yinghai Lu
2012-11-03 21:35         ` Yinghai Lu
2012-11-03 21:37           ` H. Peter Anvin
2012-11-05 20:25             ` Yinghai Lu
2012-11-05 20:27               ` [PATCH 39/42] x86, mm: kill numa_free_all_bootmem() Yinghai Lu
2012-11-05 20:27                 ` [PATCH 40/42] x86, mm: kill numa_64.h Yinghai Lu
2012-11-05 20:27                 ` [PATCH 41/42] sparc, mm: Remove calling of free_all_bootmem_node() Yinghai Lu
2012-11-05 20:27                   ` Yinghai Lu
2012-11-06 17:44                   ` David Miller
2012-11-06 17:44                     ` David Miller
2012-11-05 20:27                 ` [PATCH 42/42] mm: Kill NO_BOOTMEM version free_all_bootmem_node() Yinghai Lu
2012-11-07 16:11               ` [PATCH -v3 0/7] x86: Use BRK to pre mapping page table to make xen happy Konrad Rzeszutek Wilk
2012-11-08  1:40                 ` Konrad Rzeszutek Wilk
2012-11-08  4:06                   ` Yinghai Lu
2012-11-09 20:31                     ` Yinghai Lu
2012-11-12 19:30           ` Konrad Rzeszutek Wilk
2012-11-12 21:17             ` [PATCH v7 00/46] x86, mm: map ram from top-down with BRK and memblock Yinghai Lu
2012-11-12 21:17               ` [PATCH 01/46] x86, mm: Add global page_size_mask and probe one time only Yinghai Lu
2012-11-12 21:17               ` [PATCH 02/46] x86, mm: Split out split_mem_range from init_memory_mapping Yinghai Lu
2012-11-13  5:51                 ` Yasuaki Ishimatsu
2012-11-13  6:20                   ` Yinghai Lu
2012-11-13  7:03                     ` snakky.zhang
2012-11-13 18:34                       ` Yinghai Lu
2012-11-12 21:17               ` [PATCH 03/46] x86, mm: Move down find_early_table_space() Yinghai Lu
2012-11-12 21:18               ` [PATCH 04/46] x86, mm: Move init_memory_mapping calling out of setup.c Yinghai Lu
2012-11-12 21:18               ` [PATCH 05/46] x86, mm: Revert back good_end setting for 64bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 06/46] x86, mm: Change find_early_table_space() paramters Yinghai Lu
2012-11-12 21:18               ` [PATCH 07/46] x86, mm: Find early page table buffer together Yinghai Lu
2012-11-12 21:18               ` [PATCH 08/46] x86, mm: Separate out calculate_table_space_size() Yinghai Lu
2012-11-12 21:18               ` [PATCH 09/46] x86, mm: Set memblock initial limit to 1M Yinghai Lu
2012-11-12 21:18               ` [PATCH 10/46] x86, mm: if kernel .text .data .bss are not marked as E820_RAM, complain and fix Yinghai Lu
2012-11-12 21:18               ` [PATCH 11/46] x86, mm: Fixup code testing if a pfn is direct mapped Yinghai Lu
2012-11-12 21:18               ` [PATCH 12/46] x86, mm: use pfn_range_is_mapped() with CPA Yinghai Lu
2012-11-12 21:18               ` [PATCH 13/46] x86, mm: use pfn_range_is_mapped() with gart Yinghai Lu
2012-11-12 21:18               ` [PATCH 14/46] x86, mm: use pfn_range_is_mapped() with reserve_initrd Yinghai Lu
2012-11-12 21:18               ` [PATCH 15/46] x86, mm: Only direct map addresses that are marked as E820_RAM Yinghai Lu
2012-11-12 21:18               ` [PATCH 16/46] x86, mm: relocate initrd under all mem for 64bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 17/46] x86, mm: Align start address to correct big page size Yinghai Lu
2012-11-12 21:18               ` [PATCH 18/46] x86, mm: Use big page size for small memory range Yinghai Lu
2012-11-12 21:18               ` [PATCH 19/46] x86, mm: Don't clear page table if range is ram Yinghai Lu
2012-11-12 21:18               ` [PATCH 20/46] x86, mm: Break down init_all_memory_mapping Yinghai Lu
2012-11-12 21:18               ` [PATCH 21/46] x86, mm: setup page table in top-down Yinghai Lu
2012-11-13 17:26                 ` Stefano Stabellini
2012-11-13 19:59                   ` Yinghai Lu
2012-11-13 20:01                     ` H. Peter Anvin
2012-11-13 20:36                       ` Yinghai Lu
2012-11-15 19:28                         ` Yinghai Lu
2012-11-12 21:18               ` [PATCH 22/46] x86, mm: Remove early_memremap workaround for page table accessing on 64bit Yinghai Lu
2012-11-13 16:52                 ` Stefano Stabellini
2012-11-12 21:18               ` [PATCH 23/46] x86, mm: Remove parameter in alloc_low_page for 64bit Yinghai Lu
2012-11-13 17:40                 ` Stefano Stabellini
2012-11-12 21:18               ` [PATCH 24/46] x86, mm: Merge alloc_low_page between 64bit and 32bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 25/46] x86, mm: Move min_pfn_mapped back to mm/init.c Yinghai Lu
2012-11-12 21:18               ` [PATCH 26/46] x86, mm, Xen: Remove mapping_pagetable_reserve() Yinghai Lu
2012-11-13 16:36                 ` Stefano Stabellini
2012-11-13 18:51                   ` Yinghai Lu
2012-11-14 11:19                     ` Stefano Stabellini
2012-11-12 21:18               ` [PATCH 27/46] x86, mm: Add alloc_low_pages(num) Yinghai Lu
2012-11-13 16:37                 ` Stefano Stabellini
2012-11-13 18:53                   ` Yinghai Lu
2012-11-12 21:18               ` [PATCH 28/46] x86, mm: Add pointer about Xen mmu requirement for alloc_low_pages Yinghai Lu
2012-11-13 16:38                 ` Stefano Stabellini
2012-11-13 17:56                   ` H. Peter Anvin
2012-11-13 18:58                     ` Yinghai Lu
2012-11-12 21:18               ` [PATCH 29/46] x86, mm: only call early_ioremap_page_table_range_init() once Yinghai Lu
2012-11-12 21:18               ` [PATCH 30/46] x86, mm: Move back pgt_buf_* to mm/init.c Yinghai Lu
2012-11-12 21:18               ` [PATCH 31/46] x86, mm: Move init_gbpages() out of setup.c Yinghai Lu
2012-11-12 21:18               ` [PATCH 32/46] x86, mm: change low/hignmem_pfn_init to static on 32bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 33/46] x86, mm: Move function declaration into mm_internal.h Yinghai Lu
2012-11-12 21:18               ` [PATCH 34/46] x86, mm: Add check before clear pte above max_low_pfn on 32bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 35/46] x86, mm: use round_up/down in split_mem_range() Yinghai Lu
2012-11-12 21:18               ` [PATCH 36/46] x86, mm: use PFN_DOWN " Yinghai Lu
2012-11-12 21:18               ` [PATCH 37/46] x86, mm: use pfn instead of pos in split_mem_range Yinghai Lu
2012-11-12 21:18               ` [PATCH 38/46] x86, mm: use limit_pfn for end pfn Yinghai Lu
2012-11-12 21:18               ` [PATCH 39/46] x86, mm: Unifying after_bootmem for 32bit and 64bit Yinghai Lu
2012-11-12 21:18               ` [PATCH 40/46] x86, mm: Move after_bootmem to mm_internel.h Yinghai Lu
2012-11-12 21:18               ` [PATCH 41/46] x86, mm: Use clamp_t() in init_range_memory_mapping Yinghai Lu
2012-11-12 21:18               ` [PATCH 42/46] x86, mm: kill numa_free_all_bootmem() Yinghai Lu
2012-11-12 21:18               ` [PATCH 43/46] x86, mm: kill numa_64.h Yinghai Lu
2012-11-12 21:18               ` [PATCH 44/46] sparc, mm: Remove calling of free_all_bootmem_node() Yinghai Lu
2012-11-12 21:18                 ` Yinghai Lu
2012-11-12 21:18               ` [PATCH 45/46] mm: Kill NO_BOOTMEM version free_all_bootmem_node() Yinghai Lu
2012-11-12 21:18               ` [PATCH 46/46] x86, mm: Let "memmap=" take more entries one time 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=alpine.DEB.2.02.1210181754290.2689@kaball.uk.xensource.com \
    --to=stefano.stabellini@eu.citrix.com \
    --cc=hpa@zytor.com \
    --cc=jacob.shin@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --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.