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

Re: [PATCH 07/19] arm/gnttab: Break cycle between asm/grant_table.h and xen/grant_table.h


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Alejandro Vallejo <agarciav@xxxxxxx>
  • Date: Mon, 2 Jun 2025 18:39:26 +0200
  • 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=MNzsK8CGtOthrl6qNLnupbK7S6LGHzAYmm62zD66UuQ=; b=X1cFaEsMTVW3FZuhS4njkGcOUiUib6FLGxMws2H68FdEkVcPMvfsZ0fsdRkHfqiHJ5cYaGEtY5Fv4/pO/Dm2SPZKfA1f2N+xoAbkiGvv7CT1oqKhbhStwoCuMqR9S13X6zftPEjvgZrM2rZ79fI/vcGCfXd833u3gLpya3yhg5I3gP50p1SO5tY6AS2btKLzTqdkLfIyCKBRyfWp2hnaAFOH5kBJV74vPRvm75lojOaihfTECrz95oOFacDb3fpz0QJkx0xIbiB2YzSxvNTR03r/a03Dd5gTyQnBRjicTAKZRpAUBP9YapgmaHmsA34PfF5u/qF8PdDRJ83r0U54Yg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B206H2hna7RIYZzfDLtOj6pX4nUnwp1gPTQg1FlUbAPG2ccfEjrtg6pQiuIuvlzofXg4FnQdG3dyNGnUDR5aXtYxKd+wrXJcus1OaRy5jRFMRVmBETmGHjuAp5DdXsqp16iPrCzoKFXilQ1kyZkjSyUOXHq8Ci1kR66Ft+RxyENIGoVO+maqasWzfJkYNJZINsTglgpswvTjuG4+6wD7UEIXrXh675Ac9wD1PwEPllCtAt6y5nJwhhIbsrnl9AyJIM+pPgMaoNooMAWy5DhRymy0csdEwKS6I9iqHUPht0kdkfnzbRCc7XCOCe9bFXdls2mTJU8zE/aNiHgRKkT3cQ==
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, "Daniel P. Smith" <dpsmith@xxxxxxxxxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 02 Jun 2025 16:39:55 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon Jun 2, 2025 at 4:51 PM CEST, Jan Beulich wrote:
> On 02.06.2025 16:30, Alejandro Vallejo wrote:
>> On Mon Jun 2, 2025 at 9:53 AM CEST, Jan Beulich wrote:
>>> On 30.05.2025 14:02, Alejandro Vallejo wrote:> --- 
>>> a/xen/include/xen/grant_table.h
>>>> +++ b/xen/include/xen/grant_table.h
>>>> @@ -27,7 +27,7 @@
>>>>  #include <xen/rwlock.h>
>>>>  #include <public/grant_table.h>
>>>>  
>>>> -#ifdef CONFIG_GRANT_TABLE
>>>> +#if __has_include("asm/grant_table.h")
>>>>  #include <asm/grant_table.h>
>>>>  #endif
>>>
>>> This change looks wrong (or otherwise is lacking justification): With 
>>> GRANT_TABLE=n
>>> the arch header isn't supposed to be included.
>> 
>> It's not equivalent to the previous code; but that's a feature, not a bug.
>> 
>> Not including the header with GRANT_TABLE=n  was the best we could with
>> the older toolchains in order to not try to include a header that might not
>> exist. The high number of sequential inclusions of xen/grant_table.h and
>> asm/grant_table.h seem to attest to that.
>> 
>> I can ammend the commit message to be clearer, but IMO this is what it was 
>> always
>> meant to be. I can replace the current commit message with:
>> 
>>   "The previous toolchain base version didn't provide __has_include(), which
>>    allows conditional inclusion based on a header's existence. Lacking that
>>    feature the inclusion was guarded by the GRANT_TABLE option being present
>>    but even then sometimes the arch-specific header is required even when
>>    the option is not selected. This causes inclusion sites to needlessly
>>    include both asm/grant_table.h and xen/grant_table.h.
>> 
>>    Using __has_include() removes this requirement at inclusion sites."
>> 
>> Thoughts?
>
> So why would we include a header we don't need when GRANT_TABLE=n? Overall
> we're trying to reduce dependency trees rather than growing them further.
>
> Jan

Because we do need it or the code doesn't compile. gnttab_dom0_frames(), for
instance, exists and is used in unguarded statements. There's more case like
that. It may be possible to break those dependencies so the inclusion is
not always expected, but the reality is that you tend to need the other header
for pretty much the same class of reasons you needed xen/grant_table.h to begin
with.

Forcing the code to include both seems counter-productive to me.

Cheers,
Alejandro



 


Rackspace

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