xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Wei Liu <Wei.Liu2@citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: Request to revert superpage adjustments
Date: Fri, 11 Mar 2016 14:44:39 +0000	[thread overview]
Message-ID: <56E2D9D7.8000108@citrix.com> (raw)
In-Reply-To: <56E2E09302000078000DBA12@prv-mh.provo.novell.com>

On 11/03/16 14:13, Jan Beulich wrote:
>>>> On 11.03.16 at 14:21, <andrew.cooper3@citrix.com> wrote:
>> On 11/03/16 12:06, Jan Beulich wrote:
>>>>>> On 11.03.16 at 10:22, <andrew.cooper3@citrix.com> wrote:
>>>> Sadly, c/s cf393624 "x86: use 2M superpages for text/data/bss mappings"
>>>> exposes a bug in all Syslinux variants, including ISOlinux and
>>>> PXELinux,  causing a failure to boot.
>>>>
>>>> Xen currently requires its bootloader to decompress it, and place it at
>>>> the 1MB physical boundary.  The alignment adjustments changed the size
>>>> of the decompressed (post mkelf32) image from 2.2MB to 7.1MB.  These
>>>> restrictions should be fixed independently of this exposed bug.  The
>>>> physical range between 0x100000 and 0x10fffe is prime clobbering space
>>>> for buggy BIOSes once the A20 line has been disabled (see c/s 1ed76797),
>>>> and if any reserved memory exists between 1MB and 1MB+sizeof(xen), the
>>>> bootloader wont be able to place Xen at its linked address.
>>>>
>>>> Grub and iPXE work perfectly well when booting Xen, which is why this is
>>>> now clearly a Syslinux issue (all versions I cared to test, including
>>>> 4.x and 6.3 are broken).  However, it clobbers any ability for XenServer
>>>> to do testing, as we PXEBoot our servers for install.  I expect a lot of
>>>> other people will encounter issues once the 4.7 RCs get tested.
>>>>
>>>> Please revert c/s cf393624 and the following change (c/s 53aa3dde) which
>>>> depends upon the former, until I can work around the existing
>>>> restrictions.  After the restrictions are resolved, the patches can go
>>>> back in, but I am fairly sure I will not have time to resolve the issues
>>>> in the 4.7 timeframe.
>>> I'm kind of hesitant to do a wholesale revert, for two reasons:
>>>
>>> 1) The change would still be useful for xen.efi, which is relocatable
>>> already anyway.
>> The latter change strictly depends on .init having 2M alignment, so
>> needs to go either way.  As for making a split, I am already out of time
>> which is why I opted for the plain revert.
> How about I try to find time to put together a partial revert
> (hopefully early) next week?
>
>>> 2) I cannot currently see how you mean to address the issue:
>>> Even if you made our binary decompress itself, that would only
>>> paper over the issue, and (based on your description) only until
>>> even the compressed image exceeds a certain size.
>> Compressed, Xen is currently 700k and Linux weighs in at ~4MB, which is
>> half the size of the uncompressed Xen with superpages.
> Well, okay, there's some headroom (albeit my xen.gz binaries all are
> above 900k).
>
>>>  Nor would
>>> that deal with avoiding reserved regions not too far above 1Mb,
>>> since at best the main payload can be relocatable (but certainly
>>> not the binary seen by the boot loader, as at least multiboot1
>>> doesn't support anything like that).
>> The only reason Xen sits at the 1MB boundary is because of its ELF header.
>>
>> A plain binary with a multiboot header has no such restriction, although
>> we flag an interested to have 4k alignment using the multiboot flags. 
>> There is no technical limitation causing Xen to be linked to run at 1MB;
>> its just the way its alway been.  There is nothing preventing the entry
>> point becoming properly relocatable.
> Without proper container format, how would the boot loader
> know where to place the binary, or how to relocate it if it doesn't
> get placed at its linked address? The only alternatives I see in
> grub1 are a.out and a kludge of a.out, both of which - at the first
> glance - also don't appear to do any relocation. And for the Linux
> variant, as said, it doesn't look like it's compatible with us needing
> multiple modules.

There is no need for the loader to know or care about the linked address
of the binary.

32bit segment bases are a very easy way around this problem while the
binary locates a suitable region to extract itself into.  The entry %eip
can be inspected to generate a suitable segment base.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

      parent reply	other threads:[~2016-03-11 14:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11  9:22 Request to revert superpage adjustments Andrew Cooper
2016-03-11 12:06 ` Jan Beulich
2016-03-11 13:21   ` Andrew Cooper
2016-03-11 14:13     ` Jan Beulich
2016-03-11 14:35       ` Konrad Rzeszutek Wilk
2016-03-11 18:10         ` Daniel Kiper
2016-03-11 14:44       ` Andrew Cooper [this message]

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=56E2D9D7.8000108@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=Wei.Liu2@citrix.com \
    --cc=xen-devel@lists.xen.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 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).