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

Re: [PATCH v2 05/12] x86/hvm: Remove duplicate calls caused by tracing


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Tue, 21 Sep 2021 19:04:16 +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; bh=pyvufv6Aa+O0JfFy11wVbUELWG4JkMJG89GlTmp0M3o=; b=c242c272fBYKEhoYOrbdQJo44Tc4Fa4Ab2M5wxYlM4eN5aAK+BqnhS3K70j0wiCQl8kEmTE2HPZCnuoy7LEotzTpGDWNOiax9k4akWt7PEMI8HAq+PFt8Ca5TnAYf1DVkC+N8TqsE1FRD1NvOJYr01wrVcsb3xuer0qlM+9u9JpW1C9i+KEd+sNkyZAE6IbHjGOKAnyUbte/SK0GXvbmEqbix+80q0xATGzhaFzWRuschFJ9ttge/PiFtrGW1IRlbX5CFe9dormjjr5YFkqYnkopR3bUhBvFohg3LjrmI8ufETGfUUFQYwibAxt/Gp59xMLwkPMzJ4gBWZWgFtFlKA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MP4IFygMV26Gz0PN/lDbwkmWBXKuiGAmwjNU3b379neUfzjtMzjWcHwaKiDWJLqVWorZs6FGcdLoTyRSZDPh5lo3Q1ohIUktUF864+rQRKHLJiWjLSmYqUuK5KE8JtaBoqmZYDwVSgOE+qAAW7vHr9AAiECkA1VNWStT9Cv03ccNj66HdbGMN7GA4I3kb8cRSDqC1zdkPa4u+8OuWQ3DcJ3ZQM1P87/3c+sM03FXkhU5kChl0UxyWdu/UYAMA7wQU6lho2n74fGnQLDmnxK9p1pR5XsRv7KzhDkTVfZtLUBOKyKN0YO7lR658YxWe8bMK3F0AAV5+wcrKjpBFvgqcQ==
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 21 Sep 2021 18:04:32 +0000
  • Ironport-data: A9a23:P4hVX672bECpINIowwIBuAxRtB3AchMFZxGqfqrLsTDasY5as4F+v mtMWW7SPqrbNzamf9l1Yd61/UgC65SDm99rTQZs/HtnHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVIMpBsJ00o5wrZo2Ncw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z2 vRu6bavDjYTJqzFuOkNdzN1PwVdMvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALBc/nJo4A/FpnyinUF60OSpHfWaTao9Rf2V/cg+gTRqiAN 5JAMVKDajzvRwFpZV0TD6scwua3gHnjSmZJ9GOs8P9fD2/7k1UqjemF3MDuUt6ASNhRn02Yj nnb5Gm/CRYfXPSAzRKV/3TqgfXA9QvrVYRXGLCm+/pChFyI2ndVGBAQTUG8o/Sylgi5Qd03F qAP0nNw9+5orhXtF4SjGU3jyJKZgvICc8hxMLEQ90a88LLV6iaUFkwuYxJlS9Nz4afaWgcWO k+1c8LBXGI06uTFFy7Fr994vhvpZnNEdjZqiTssCFJfuoi9+tlbYgfnE447eJNZmOEZDt0ZL 9qilyE4m7xbpsoCzazTEbvv0m/0+8ShouLY4GzqsoOZAuFRP9XNi2+AswGzARN8wGGxFALpg ZT8s5LChN3i9LnU/MB3fAnoIIxFGt7faGGM6bKQI3XR32v0oCPyFWyhyBp/OF1oIq45RNMdW 2eK4Vk5zMYKZBOCNPYrC6rsW5VC5fWxTrzNC6GLBueil7AsLWdrCgk1PhXOt40s+WBx+ZwC1 WCzK5f0USlCVvQ5k1JbhY41iNcW+8z3/kuKLbjTxBW7y7uOInmTTLYOKlyVae4lqqiDpW3oH xx3bqNmEj1TD7/zZDf564kWIQxYJHQ3H8mu+cdWavSCMkxtH2R4U63dxrYoeopEmaVJl7iXo iHhCxEAkFev12faLQiqa2x4bO+9V5hIsn9mbzcnOkyl2iZ/bN/3vrsfbZY+YZIu6PdnkaxvV /AAdsjZWqZPRz3L9i4zd574qIA+Jh2niRjXZ3iuYSQlfo4mTAvMo4e2cgzq/SgILyy2qcph/ OHwilKFGcIOHl0wAtzXZfSjy0KKkUIcwO8iDVHVJtRzeVn39NQ4ISLGkfJqcdoHLg/Ox2XG2 l/OUwsYv+TEv6Q87MLN2fKft46sHuZzQhhaEm3c4erkPCXW5DP+k4pJUeLOdjHBTmLkvq6lY LwNnf37NfQGmndMspZ9TOk3nf5vuYO3qu8I1BlgEVXKc0+vW+FpLXSx1MVSsrFAm+1CsgysV 0PTotRXNN1l4i8+/IL98Ob9Utm+6A==
  • Ironport-hdrordr: A9a23:hi9E6qCrXayuaQTlHeg7sceALOsnbusQ8zAXPh9KJiC9I/b1qy nxppkmPH/P6Qr4WBkb6LS90dq7MAzhHPlOkPUs1NaZLXTbUQ6TQr2KgrGSuwEIdxeOkNK1kJ 0QCZSWa+eAfWSS7/yKmTVQeuxIqLLskNHK9JTjJjVWPGZXgslbnnZE422gYy9LrWd9dP8E/d anl7F6T23KQwVoUi33PAhIY8Hz4/nw0L72ax8PABAqrCGIkDOT8bb/VzyVxA0XXT9jyaortT GtqX222oyT99WAjjPM3W7a6Jpb3PPn19t4HcSJzuwYMC/lhAqEbJloH5eCoDc2iuey70tCqq iCnz4Qe+BIr1/BdGC8phXgnyHmzTYV8nfnjWSVhHPyyPaJDw4SOo5kv8Z0YxHZ400vsJVXy6 RQxV+UsJJREFfpgDn9z8KgbWAoqmOE5V4Z1cIDhX1WVoUTLJVLq5YEwU9TGJAcWArn9YEcFv V0Bs203ocXTbqjVQGdgoBT+q3pYpxqdS32BXTq+/blkgS+pUoJjXfxn6ck7zE9HJFUcegN2w 2LCNUwqFniJvVmGp6VP91xNPdfPFa9CC4kAFjiU2gPK5t3T04li6SHqondt9vaNaDh8vMJ6e L8uRVjxDYPR34=
  • Ironport-sdr: L9HRYVWMfxZAt2+3Hs869N6hTOeP0OfGrh7LAPonUgQMH4TK4UMFaZHYGJhHe7Ov8bQ/X+7aQj mpr+zd9yRdJSFY0uGhK4InFdnhR9MjL2szZzdeKEUagLMfcuEFfP1Be3W944NddrXP3jYZ6V0f L4t9Jdgm4lWtKWsnpN9fb9VYh2N/jIvO3dWQYk0WH1GGU5GgaqJZraJpPL01KOfi7EYk5OS+2I PD75UvNpWHKemi8q56oZnB2fn15DRk76XUfcRkUT0fLMtvzqg3+wxQFhlrGgJRuAgcsHnAasc2 v/c73GX4X8H0n4eu4RXZgGln
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 21/09/2021 13:18, Jan Beulich wrote:
> On 20.09.2021 19:25, Andrew Cooper wrote:
>> 1) vpic_ack_pending_irq() calls vlapic_accept_pic_intr() twice, once in the
>>    TRACE_2D() instantiation and once "for real".  Make the call only once.
>>
>> 2) vlapic_accept_pic_intr() similarly calls __vlapic_accept_pic_intr() twice,
>>    although this is more complicated to disentangle.
>>
>>    v cannot be NULL because it has already been dereferenced in the function,
>>    causing the ternary expression to always call __vlapic_accept_pic_intr().
>>    However, the return expression of the function takes care to skip the call
>>    if this vCPU isn't the PIC target.  As __vlapic_accept_pic_intr() is far
>>    from trivial, make the TRACE_2D() semantics match the return semantics by
>>    only calling __vlapic_accept_pic_intr() when the vCPU is the PIC target.
>>
>> 3) hpet_set_timer() duplicates calls to hpet_tick_to_ns().  Pull the logic 
>> out
>>    which simplifies both the TRACE and create_periodic_time() calls.
>>
>> 4) lapic_rearm() makes multiple calls to vlapic_lvtt_period().  Pull it out
>>    into a local variable.
>>
>> vlapic_accept_pic_intr() is called on every VMEntry, so this is a reduction 
>> in
>> VMEntry complexity across the board.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Thanks.

>
>> --- a/xen/arch/x86/hvm/vpic.c
>> +++ b/xen/arch/x86/hvm/vpic.c
>> @@ -512,14 +512,15 @@ void vpic_irq_negative_edge(struct domain *d, int irq)
>>  
>>  int vpic_ack_pending_irq(struct vcpu *v)
>>  {
>> -    int irq;
>> +    int irq, accept;
> Strictly speaking "accept" wants to be bool, and ...
>
>>      struct hvm_hw_vpic *vpic = &v->domain->arch.hvm.vpic[0];
>>  
>>      ASSERT(has_vpic(v->domain));
>>  
>> -    TRACE_2D(TRC_HVM_EMUL_PIC_PEND_IRQ_CALL, vlapic_accept_pic_intr(v),
>> -             vpic->int_output);
>> -    if ( !vlapic_accept_pic_intr(v) || !vpic->int_output )
>> +    accept = vlapic_accept_pic_intr(v);
> ... vlapic_accept_pic_intr() would eventually also want to be
> converted to return bool.

Yeah, but given the potential for backport here, I specifically avoided
unrelated changed.  We've got loads of functions wanting to change to bool.

~Andrew



 


Rackspace

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