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

Re: [PATCH v3 03/11] x86/vlapic: introduce an EOI callback mechanism


  • To: Roger Pau Monne <roger.pau@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Wed, 31 Mar 2021 12:47:54 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=n9Xjwe1/PwRUhoOBGGwpJxFhUY4F5mFQTd6KqR2NGeA=; b=ZNcGWgHMTOneqNDMpbhwmdYo3oNiTpXjZOdt9bM4VQ6aSbbjC26M13cLe5uNQmEV4iQyvivgEm0d8roLT8DrmaMA8lvFdzrV/hlz9eWFnxoDJ2NWLtDQOoWSqBcN5FfyY2pG2JOPL/AgGYanyxWC897vgV20LpVypYWmVtqN5t99uqB/6QmrJy52lIzZNb96lc2EncLcHIVc2+e3xgHmqPfzlRX+XOfD0mwml8siqcWFVPPr2e3tO/a5+yL4WGv/yjin7W/d+fptYDv4+Y032cIDwFsmwT8zOXwAtn+xuVb5zPeBwSoezNXBhkH0JkUlzUarOPdpImHB5OEBnsd3pA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T5Fnlr/LQL9hhFwkBCXRGipvTHpIY3NQ+um/Z0GUyFQ+EE0qHyK1vIaGavPy86DWPqqUlKsoe+pHAdLKb81c7tmQcEYKJI5fPN3luiYBuFvpWkKdS4aI6AfAyIlg6T7tDhmceGSjbprcdtw0vC6uQCVcTlrnILg9cw7OnKYJ/uErIMQ8YlThojdCJjUpEh9Oxb0bkSRdvqXYSjUr8nI3LqUGm23St1MkkLoQvVR80W54Z9D4K8fvW8nShFhwQCVNlfrDliQV67QJEsJJUzyzAuxydqgZD46ABKFjS5a2SxF8NTCoQVarxSuoqV+FC26WX0esqMne4QuTxI2GTtskmw==
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Jan Beulich <jbeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Wed, 31 Mar 2021 11:48:18 +0000
  • Ironport-hdrordr: A9a23:UYQHRKl0NcUoZolSH5vQByvfeZnpDfN7imdD5ilNYBxZY6Wkvu qpm+kW0gKxtSYJVBgb+eyoFaGcTRrnn6JdzpIWOd6ZMDXOmGztF4166Jun/juIIVyGysd49Y NNN5dzE8fxC18St6fHyS21CcwpztXC0I3Av4zj5kxgRw1rdK1shj0RYjqzKUF4SBJLApA0Dv Onl6x6jgGtYHEGKvm8b0NrY8H4u9bJmJj6CCRqOzcb7mC14w+A2frTDwWfmiwTSSpIxq0vtV LYihXj6r+42svLrSP05iv/1tByo/fPo+EzZ/Cku4w5Ji/vsz2PIKx8RrvqhkFQnMifrHsnit v0mDFlFNhy7n65RBDRnTLdnyTtyjQW0Fmn7VODm3Psrff0S1sBeqh8ub4=
  • Ironport-sdr: jyi0/gRZGkhQDYcStek7IdoT5AF1nZoUkB/U7V0BwTvt8/vc9WOsWHmFHhitQqyaDGVP2gMWGa IiHGVTElrXsOzXofi4Prh0bhHo/XDrYnVRfWOFNCQxI4zVqNbaeto36jQOBYygakBObeCXA6L5 GSBU2e32IgWyZtyARlwRaPFN/c28/9URM2ymnfGTcxDNbSwfUa5W5ndsp7qi5h5R1CtZT9H39f IihcPc/Vhz/18PgS5EejWnkXhIVdzERfpnfMMQcWw5Zh3KDl5AsX/tEcjjNr1eR2SLV+K1mHoc /pA=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 31/03/2021 11:32, Roger Pau Monne wrote:
> @@ -1620,9 +1666,22 @@ int vlapic_init(struct vcpu *v)
>  
>      clear_page(vlapic->regs);
>  
> +    vlapic->callbacks = xmalloc_array(typeof(*vlapic->callbacks),
> +                                      X86_NR_VECTORS - 16);
> +    if ( !vlapic->callbacks )
> +    {
> +        dprintk(XENLOG_ERR, "%pv: alloc vlapic callbacks error\n", v);
> +        unmap_domain_page_global(vlapic->regs);
> +        free_domheap_page(vlapic->regs_page);
> +        return -ENOMEM;
> +    }
> +    memset(vlapic->callbacks, 0,
> +           sizeof(*vlapic->callbacks) * (X86_NR_VECTORS - 16));

xzalloc_array() instead of memset().  Also, we shouldn't be printing for
-ENOMEM cases.

As for the construction/teardown logic, vlapic_init()'s caller already
vlapic_destory().  Therefore, the existing error path you've copied is
buggy because it will cause a double-free if __map_domain_page_global()
fails.

I'll do a cleanup patch to fix the idempotency, which needs backporting too.

~Andrew




 


Rackspace

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