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

Re: [PATCH for-4.22 2/2] xen/arm: vgic: free eSPIs using the bitmap index


  • To: Mykola Kvach <mykola_kvach@xxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Orzel, Michal" <michal.orzel@xxxxxxx>
  • Date: Thu, 16 Jul 2026 14:03:23 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=epam.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=spfxO7Oc+toFHwxJMoy52dLnWWWAFn6HpVk+LM7bmew=; b=lmiW9zQG3wbUSOO/kVTsSNHROw9ljgyC6+bNxeANGV6uw9a3jwleEvpz4kTG8kPh20DNGDG2PH3bubb2bEU9yyEkZkR/PNoeJ8U5C28RhF2YbUyVds1VHyjLqmqPnkbSSznTzLbqp5V/SwveMRxv2MpMcuxv2/yyhqCFyx2Vqgwve5SmNJsfZnOdD4YJj4+OMqnGVegC9PtzBxo3hChID0qy8Vl9Gldw08llkk/O3jXHOTQaqljozDZPWUPFVBdww4FwJNM11GqmWLPzMugVmVZ69c6cGSNvN+W6iExxDCQpMHHYn0m5M1Ic2ERnEIlMuVPSgf5jl15vA/gb1s6ugw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PmP1PAn+hPoYUn6ubQXkpN+pCpzbcf60WpB16YCw3/R31DccS+666YKdl993+rSqihDa0HoHpEO7oMAKgu9PCVCPjI8ZEo5ifvwqC+BYxymoJWJCu0oIpunlPtrIn0VbiAD0eyuiHm1U5XE/RDmD8FslDuXmpjwurnOU7WaqzgcfkX+kVdxv043n32fvwI9PmCgPXqcRJXH8J4O5wjMwE08bxB5ylIJ/uOzZF276NLA8W6jFq1kASX4Hc4v6JF6yXA6RRmTmALzTT65UZwea/o1wVCLTQIq+kM0b08UBIRLE+Q5p4lV98K943NxhJXIHeMNmbE9HXxEh3MKCo2ovrQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 16 Jul 2026 12:03:46 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 10-Jul-26 10:31, Mykola Kvach wrote:
> Classic vGIC stores eSPIs in allocated_irqs after the regular virtual
> interrupts. vgic_reserve_virq() therefore translates an eSPI INTID to a
> compressed bitmap index before test_and_set_bit().
> 
> vgic_free_virq() still used the raw virtual INTID. Freeing INTID 4096
> would clear bit 4096 instead of the first eSPI allocation bit, which is
> outside allocated_irqs for a domain with eSPI support. That can leave
> the eSPI reserved and may corrupt memory.
> 
> Add the inverse of idx_to_virq() and use it in both reserve and free, so
> the allocation bitmap is indexed consistently. Also reject invalid
> virtual INTIDs before clearing the bitmap.
I think we can have it in 4.22 given that the release is postponed a bit.

> 
> Fixes: bdde400c6e1b ("xen/arm: vgic: add resource management for extended 
> SPIs")
> Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx>
> ---
>  xen/arch/arm/vgic.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index e5aca17dcb..b85710c6a7 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c
> @@ -33,6 +33,16 @@ static inline unsigned int idx_to_virq(struct domain *d, 
> unsigned int idx)
>      return idx;
>  }
>  
> +static inline unsigned int virq_to_idx(struct domain *d, unsigned int virq)
> +{
> +#ifdef CONFIG_GICV3_ESPI
Same as for patch 1: is_espi() shouldn't be protected as it protects itself.

~Michal




 


Rackspace

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