[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] Loading a 32 bit kernel from 64 bit grub-xen
From: |
Jan Beulich |
Subject: |
Re: [Xen-devel] Loading a 32 bit kernel from 64 bit grub-xen |
Date: |
Wed, 02 Jul 2014 09:35:37 +0100 |
>>> On 01.07.14 at 20:27, <address@hidden> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 7/1/2014 12:18 PM, Andrey Borzenkov wrote:
>> В Tue, 01 Jul 2014 12:06:08 -0400 Phillip Susi <address@hidden>
>> пишет:
>>
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>
>>> I have been trying to fix grub to load a 32 bit kernel from the
>>> 64 bit xen build. After fixing up one or two minor issues with
>>> the elf loader, I believe I now have it to the point where it
>>> jumps correctly to the 32 bit kernel and it crashes there, since
>>> it is 32 bit code still executing on a cpu in 64 bit mode. The
>>> question is how to return the cpu to 32 bit mode *under xen*?
>>
>>
>> IIRC it was already discussed not long ago and it seems to be Xen
>> limitation. You probably need to ask on xen-devel to be sure.
>>
>> Is it not more simple to use 32 bit grub with 32 bit kernel to
>> start with?
>
> The problem with that is that you have to know in advance which kernel
> you are going to boot. That makes configuring virtual hosts harder;
> they just want one grub image they can use to chainload whatever the
> guest wants to install in their domain.
>
> Also there must be a way to do this otherwise a 64 bit kernel running
> under xen wouldn't be able to execute a 32 bit binary. I suppose I'll
> Cc xen-devel.
Perhaps there's some confusion about what "kernel" here means:
The thing that's the kernel from GrUB's perspective is the hypervisor,
i.e. xen.gz or xen.efi. While the former expects to be entered in 32-bit
mode, on the Xen side we all agree that this isn't the way things
should work under UEFI; Daniel already proposed how to handle this
case (Xen should be entered in 64-bit mode, with ExitBootServices()
not having got called yet).
The thing that you'd traditionally call kernel (e.g. Linux) can be 32-
or 64-bit irrespective of GrUB's bitness: Xen knows how to load either
(both for Dom0 and, likely irrelevant here, DomU).
Jan