WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH 00 of 36] x86/paravirt: groundwork for 64-bit Xen

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 00 of 36] x86/paravirt: groundwork for 64-bit Xen support
From: Ingo Molnar <mingo@xxxxxxx>
Date: Wed, 25 Jun 2008 10:42:53 +0200
Cc: Nick Piggin <npiggin@xxxxxxx>, Mark McLoughlin <markmc@xxxxxxxxxx>, xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Eduardo Habkost <ehabkost@xxxxxxxxxx>, Vegard Nossum <vegard.nossum@xxxxxxxxx>, Stephen Tweedie <sct@xxxxxxxxxx>, x86@xxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx>, Avi Kivity <avi@xxxxxxxxxxxx>, Yinghai Lu <yhlu.kernel@xxxxxxxxx>, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, Arjan van de Ven <arjan@xxxxxxxxxxxxx>
Delivery-date: Wed, 25 Jun 2008 01:43:41 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1214367536@localhost>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1214367536@localhost>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.18 (2008-05-17)
* Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:

> Hi Ingo,
> 
> This series lays the groundwork for 64-bit Xen support.  It follows 
> the usual pattern: a series of general cleanups and improvements, 
> followed by additions and modifications needed to slide Xen in.

cool stuff :-)

> Most of the 64-bit paravirt-ops work has already been done and 
> integrated for some time, so the changes are relatively minor.
> 
> Interesting and potentially hazardous changes in this series are:
> 
> "paravirt/x86_64: move __PAGE_OFFSET to leave a space for hypervisor"
> 
> This moves __PAGE_OFFSET up by 16 GDT slots, from 0xffff810000000000 
> to 0xffff880000000000.  I have no general justification for this: the 
> specific reason is that Xen claims the first 16 kernel GDT slots for 
> itself, and we must move up the mapping to make room.  In the process 
> I parameterised the compile-time construction of the initial 
> pagetables in head_64.S to cope with it.

This reduces native kernel max memory support from around 127 TB to 
around 120 TB. We also limit the Xen hypervisor to ~7 TB of physical 
memory - is that wise in the long run? Sure, current CPUs support 40 
physical bits [1 TB] for now so it's all theoretical at this moment.

my guess is that CPU makers will first extend the physical lines all the 
way up to 46-47 bits before they are willing to touch the logical model 
and extend the virtual space beyond 48 bits (47 bits of that available 
to kernel-space in practice - i.e. 128 TB).

So eventually, in a few years, we'll feel some sort of crunch when the # 
of physical lines approaches the # of logical bits - just like when 
32-bit felt a crunch when physical lines went to 31 and beyond.

> "x86_64: adjust mapping of physical pagetables to work with Xen"
> "x86_64: create small vmemmap mappings if PSE not available"
> 
> This rearranges the construction of the physical mapping so that it
> works with Xen.  This affects three aspects of the code:
>  1. It can't use pse, so it will only use pse if the processor
>     supports it.
>  2. It never replaces an existing mapping, so it can just extend the
>     early boot-provided mappings (either from head_64.S or the Xen domain
>     builder).
>  3. It makes sure that any page is iounmapped before attaching it to the 
>     pagetable to avoid having writable aliases of pagetable pages.
> 
> The logical structure of the code is more or less unchanged, and still
> works fine in the native case.
> 
> vmemmap mapping is likewise changed.
> 
> "x86_64: PSE no longer a hard requirement."
> 
> Because booting under Xen doesn't set PSE, it's no longer a hard 
> requirement for the kernel.  PSE will be used whereever possible.

That should be fine too - and probably useful for 64-bit kmemcheck 
support as well.

To further increase the symmetry between 64-bit and 32-bit, could you 
please also activate the mem=nopentium switch on 64-bit to allow the 
forcing of a non-PSE native 64-bit bootup? (Obviously not a good idea 
normally, as it wastes 0.1% of RAM and increases PTE related CPU cache 
footprint and TLB overhead, but it is useful for debugging.)

a few other risk areas:

- the vmalloc-sync changes. Are you absolutely sure that it does not
  matter for performance?

- "The 32-bit early_ioremap will work equally well for 64-bit, so just
   use it." Famous last words ;-)

Anyway, that's all theory - i'll try out your patchset in -tip to see 
what breaks in practice ;-)

        Ingo

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>