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

Re: [PATCH] xen/x86: fix build with CONFIG_HVM=n and -Og


  • To: Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
  • Date: Mon, 3 Mar 2025 16:18:25 -0500
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GSxJJV7RJnGOGm6uYhXSZU5xqklTCOWnIJkxOpIJT9I=; b=M2gw1Fys16o9GDUt3cLqojp9iwB5JEKSUYUwcpm/QTgTaXiBWgp486JdPRooMF/2Dipo8KrxZ4YKHng6YSms5KMj/1jxMOg5Dyj9ZUlPB8qcwB6ebkIIa2GEXIJOZXNSvHTKIre7qi+s4/Beb9l9DF6oqErHBqCKti+nkYVX/FESd0j9EHsZYWt5lkC7VLkbCQsyXAAm3nnjXCRflfyspaJwoWxGX5xlR55QD394O/NeaRXv/W8CMQf1XraEVDEz/eSIDk+AkeiY7S516Z+OJgruucSPT+lpbvFHfqoDV9w8X8fn3d3OWzjWGhK9UUOb6hVHgRUy76MzyeJvxjKxfA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j8jG0Qs3/WnMWNV69lusDKz7+n8tWtlmgzygwFbm6AX7gQe1n3k/0mCENbDMTsQoO4DpgEjrarcvWpz2me2XkVUCbg/TNoAfDX2a7DLOR2NxvJCPbHE3A+Sbjzf/vokwRASbmZFD4oYlBaSN+0RTuWF59xROCiDju5uoCLiKC6XVpdaBRBkCJtCGWgOnXyzcmG1QIp3r94fljL2YKbR2SBhg4BssAlK2LLuzz3xm7i8SvkFugjbNa8ATfkneMR2VPm71htxYF6LmsLPChvoQeuIDELuQrB5bm0/Os8lCPyJqYBDuAsGv1V9qPyyeZQLTJYi5e6r+jQMOXTHEO/5wWQ==
  • Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 03 Mar 2025 21:18:46 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 2/14/25 03:25, Jan Beulich wrote:
> On 14.02.2025 02:05, Andrew Cooper wrote:
>> On 13/02/2025 6:50 pm, Stewart Hildebrand wrote:
>>> When building with CONFIG_HVM=n and -Og, we encounter:
>>>
>>> prelink.o: in function `pit_set_gate':
>>> xen/xen/arch/x86/emul-i8254.c:195: undefined reference to 
>>> `destroy_periodic_time'
>>>
>>> Add an IS_ENABLED(CONFIG_HVM) check to assist with dead code
>>> elimination.
>>>
>>> Fixes: 14f42af3f52d ("x86/vPIT: account for "counter stopped" time")
> 
> While I don't mind this as a tag, you could equally blame the commit
> having added support for EXTRA_CFLAGS_XEN_CORE, for not documenting
> restrictions. As Andrew says further down, it's deemed known that -Og
> doesn't work reliably. And who knows what other very special options
> would cause havoc. I'm inclined to go as far as saying that quite
> likely no Fixes: tag is appropriate here at all, as long as we have no
> way to use -Og without making use of EXTRA_CFLAGS_XEN_CORE (or hacking
> it in another way). People using EXTRA_CFLAGS_XEN_CORE are on their
> own anyway, because the documenting of restrictions mentioned above
> would be nice in theory, but is entirely impractical imo: We'd need to
> exhaustively test all options, and then document which ones we've
> found working (under what conditions).

I'll drop the Fixes: tag

>>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
>>
>> While I appreciate the effort to get -Og working (I tried and gave up
>> due to frustration), this is gnarly.
>>
>> PIT emulation is used by both PV and HVM guests.  All other uses of
>> {create,destroy}_periodic_time() are behind something that explicitly
>> short-circuits in !HVM cases (usually an is_hvm_*() predicate).
>>
>> The PV path would normally passes 2 for the channel, which would
>> normally get const-propagated and trigger DCE here.
>>
>> One option might be to make pit_set_gate() be __always_inline.  It only
>> has a single caller, and it's only because of -Og that it doesn't get
>> inlined.  Then again, this is arguably more subtle than the fix
>> presented here.
> 
> Making it always_inline on the basis that there's just a single caller
> would be equivalent to simply dropping the handling of channel 0 when
> the sole caller passes channel 2. I don't like either. Instead ...
> 
>> A preferable fix (but one that really won't get into 4.20 at this point)
>> would be to genuinely compile pit->pt0 out in !HVM builds.  That would
>> save structure space, but would also force the use of full #ifdef-ary
>> across this file.
> 
> ... I was about to also suggest this approach.

I'll give this a try for v2



 


Rackspace

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