[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Patches for stable

On Fri, Apr 6, 2018 at 2:12 PM, Juergen Gross <jgross@xxxxxxxx> wrote:
> On 06/04/18 13:13, George Dunlap wrote:
>> On Fri, Apr 6, 2018 at 11:57 AM, Juergen Gross <jgross@xxxxxxxx> wrote:
>>> On 06/04/18 12:07, George Dunlap wrote:
>>>> On Fri, Apr 6, 2018 at 11:02 AM, Juergen Gross <jgross@xxxxxxxx> wrote:
>>>>> On 06/04/18 11:49, George Dunlap wrote:
>>>>>> On Thu, Apr 5, 2018 at 7:33 PM, Boris Ostrovsky
>>>>>> <boris.ostrovsky@xxxxxxxxxx> wrote:
>>>>>>> On 04/05/2018 01:11 PM, Juergen Gross wrote:
>>>>>>>> On 05/04/18 16:56, George Dunlap wrote:
>>>>>>>>> On Thu, Apr 5, 2018 at 3:09 PM, Juergen Gross <jgross@xxxxxxxx> wrote:
>>>>>>>>>> On 05/04/18 15:42, George Dunlap wrote:
>>>>>>>>>>> On Thu, Apr 5, 2018 at 2:06 PM, Juergen Gross <jgross@xxxxxxxx> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>> On 05/04/18 15:00, Boris Ostrovsky wrote:
>>>>>>>>>>>>> On 04/05/2018 08:19 AM, Juergen Gross wrote:
>>>>>>>>>>>>>> On 05/04/18 12:06, George Dunlap wrote:
>>>>>>>>>>>>>>> Aren't there flags in the binary somewhere that could tell the
>>>>>>>>>>>>>>> toolstack / Xen whether the kernel in question needs the RSDP 
>>>>>>>>>>>>>>> table in
>>>>>>>>>>>>>>> lowmem, or whether it can be put higher?
>>>>>>>>>>>>>> Not really. Analyzing the binary whether it accesses the 
>>>>>>>>>>>>>> rsdp_addr in
>>>>>>>>>>>>>> the start_info isn't the way to go, IMO.
>>>>>>>>>>>>>> I've sent a patch to xen-devel adding a quirk flag to the 
>>>>>>>>>>>>>> domain's
>>>>>>>>>>>>>> config to enable the admin special casing such an "old" kernel.
>>>>>>>>>>>>> Can we backport latest struct hvm_start_info changes (which bumped
>>>>>>>>>>>>> interface version) to 4.11 and pass RSDP only for versions >=1?
>>>>>>>>>>>> And this would help how?
>>>>>>>>>>>> RSDP address is passed today, the kernel just doesn't read it. And
>>>>>>>>>>>> how should Xen know which interface version the kernel is 
>>>>>>>>>>>> supporting?
>>>>>>>>>>>> And Xen needs to know that in advance in order to place the RSDP in
>>>>>>>>>>>> low memory in case the kernel isn't reading the RSDP address from
>>>>>>>>>>>> start_info.
>>>>>>>>>>> But the kernel image has ELF notes, right?  You can put one that
>>>>>>>>>>> indicates that this binary *does* know how to read the RSDP from the
>>>>>>>>>>> start_info, and if you don't find that, put it in lowmem.
>>>>>>>>>> Sow you would hurt BSD which does read the RSDP address correctly but
>>>>>>>>>> (today) has no such ELF note.
>>>>>>> This can be predicated on
>>>>>>>     ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS,       .asciz "linux")
>>>>>>> BSD will behave as it does now. For linux we could add feature flag (or
>>>>>>> errata flag). Unfortunately I don't see a way to extract major.minor
>>>>>>> from the headers, otherwise we could use that.
>>>>>> OTOH, one advantage of having a separate elfnote, rather than gating
>>>>>> it on Linux version, is that if a distro wanted to, they could do
>>>>>> their own backport to (say) Linux 4.15 and reap the advantages.
>>>>> Hmm, Linux kernel has already an elfnote with the guest version. It is
>>>>> set to "2.6". What about writing the actual kernel version into that
>>>>> note and assume everything != "2.6" to support a high RSDP address?
>>>> Why do you think it's 2.6 in the first place?  Because there are
>>>> user-space tools that depend on the kernel version being equal to
>>>> "2.6" which would break if that were changed.
>>> Can you give me a hint where this would be? The elfnote is being fed
>>> into elf_dom_parms->guest_ver. I couldn't find any reference to that
>>> other than setting it.
>>> The other reference I could find is the readnotes utility. In the Xen
>>> tree I couldn't find any tool using the output of that.
>>>> *This* is the degree to which the Linux community tries to prevent
>>>> breaking existing systems -- because of a clear bug in userspace
>>>> tooling, they've kept the advertized kernel version the same for the
>>>> better part of a decade.
>>> You are aware of the fact I'm speaking of a Xen-specific elfnote?
>> No I wasn't.
>> FWIW I think taking "I have set the kernel version correctly" to mean
>> "I know to read the address of the RSDP table from the start_info
>> page" isn't a very good idea.  For one, it's fragile: someone may not
>> realize that the one implies the other.  Secondly, it may turn out
>> that there's a reason it's been kept at "2.6", and then we'd have to
>> revert the one change and make a new elfnote anyway.
> Hmm, good point.
> So its time for a new XENFEAT_ value then? This would be the least
> intrusive way to add such a flag. Something like
> XENFEAT_linux_high_rsdp_address_okay ?

That sounds reasonable to me.  I'd personally make it something like
"reads_rsdp_from_start_info" or something, but the name doesn't matter
to me as much. :-)

The other option would be to introduce a "max_pvh_interface_supported"
or something.  If it's not present (and it's a Linux kernel), default
it to '0', and have that mean "RSDP must be under 1MiB".

That will allow us elbow-room in the future if we want to make other
breaking changes like this, without needing to keep a separate flag
around for each one indefinitely.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.