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

Re: [PATCH v2 04/12] x86/hvm: Reduce stack usage from HVMTRACE_ND()


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Tue, 21 Sep 2021 16:38:17 +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=sML6edXhxYzBIQD6A7kp2iSgs2pWQoBFQae2K5EC6ww=; b=lwewnhwx08tGKjXI5PdK8+tO6EBsOmkMaXLYrZb479Hcyv02BZDK+Ot3fH9N5Ba/+ERktZ2ER5MqZrcXcctE8m3LF1rRS4Pn/LRRTQhrmwcvoPoBxfTTIORJEfg9oR0G0eakC+ii3i0tC+rYQXObgkQXIuer20mFeaxM7s9YUJS+VnsbsTwVNEpJMK0Iw9/+ZfN/FGT1YMmyGxw+Ri76CDjcxJw38QgHS9oljB20csRQYTSu/1CO8UYBzGJDAlBGdqpgp5RWKTYiregV0ozpBifUEEaYGvCF36gyBKEIdFAlHmx0RyI3BKT+SOgczzu9vJrU4QzLFzamg6afG1SYAg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W8DixBTsG/MOu3scJmyyGG8rkvOJ0xKOlbgonsrmqBGruICypbtv5xC/u1ISghX8aph53yPQXLeMQQL5UKNYlXnDWcVv1vBhmQK1X/rFFTUQ0DMEH+nyw/RAM8QlPp4h3oaLhMeOg5bq142ucT11VC8MSgExUB+4zT1Ns/CK4ZFOV1CdIr211Wyzy/WnAYfvQHuWEdaXF91phPR4FRG5dgZzIhy7rdAwr6W+qCgmwHi9LkdktmCl994k4RVxAO+OVazi63Hf98b1g1LBZ9cb3Z4o6FO+CwIfQ5rtpQ3Lms5HjNtNnaEJaJ4ye5DXN2wUB14D6F3LfeDCgfdlivpDBA==
  • Authentication-results: esa3.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 15:38:37 +0000
  • Ironport-data: A9a23:L/kXV62bublyV2q3dvbD5fZ2kn2cJEfYwER7XKvMYLTBsI5bp2FWm GAZC2GPP/rbamr2ed4lPt6w9UxTvMKHyddlTwZrpC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan0ZqTNMEn970Eoywbdh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhr+570 4VXt6SMSQItOLb9vt4bWTxFDHQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1Er8IvNsT0eqgYvWlt12rxBvc6W5HTBa7N4Le02R9t3ZoTR6qFP 6L1bxJ3bD3NbT9tAGwsK6Adscu2xWOvSzpX/Qf9Sa0fvDGIkV0ZPKLWGNjfd8GORM5Vtl2Fv W+A9GP8ajkFMPSPxDzD9Wij7sffkCW+VI8MGbmQ8v9xnEbV1mEVEAcRV1awvb++kEHWZj5EA xVKoGx09/F0rRH1CImmN/GlnJKali4iUcEACe8C1AGIzqzP0iCjAGIhUyEUPbTKq/QKqSwWO k6hxo2yX2U/7uHNEBpx5Z/P8mjjYnF9wXsqIHZeFFpbuYGLTJQb00qXJuuPBpJZmTEc9dvY+ DmMsCF2rLEal8djO06TrA2f3m7ESnQkSGcICuTrsoCNtVgRiG2NPdXABb3nARFodt3xc7V5l CJY8/VyFchXZX13qMBofNjh4Znzv6rVWNEjvbKfN8Z4rGn8k5JSVatR/Ct/NC9UDyrwQhewO BW7kVoIvPd7ZSL2BYcqM9PZI5l7lsDISIW6Ps04m/ITO/Cdgifcp3owDaNRtkiw+HURfVYXY 8bDLZn0UiZEVsyKDlOeHo8g7FPi/QhnrUv7TpHn1RW3l72YYX+eU7AeN1WSKOs+6cu5TM/9q b6z7uOGlEdSVvPQeC7S/dJBJFwGNyFjV5v3t9ZWZqiIJQ8/QDMtDPrYwLUAfY15nvsKyreUr y/lAkIImkDigXDnKBmRbiwxYr3YQpsi/2kwOjYhPAj01iF7M5qv9qoWa7A+YaIjqL541fdxQ vRcI5eAD/1DRy7p4TMYaZWh/oVueA7y3VCFPja/YSh5dJllHlSb9tjhdwrp1S8PEivo6pdu/ +z+jlvWGMNRSR5jAcDabOOU42mw5XVNyvhvW0boI8VIfBm++oZdNCGs3OQ8JNsBKEufy2LCh RqWGxoRucLEv5QxrIvSnamBooqkT7l+E05dEzWJ5Lq6L3CHrG+qwIsGW+eUZzHNEmjz/fz6N +lSyvj9NtwBnUpL7NUgQ+o6k/pm6ou9vaJewyRlAG7PPgaiBb5XK3Wb2dVC6/9WzbhDtArqA k+C97G241lS1B8JxLLJGDcYUw==
  • Ironport-hdrordr: A9a23:Zm7gN60puGOrW6NbWYqT7QqjBSVyeYIsimQD101hICG9Lfb2qy n+ppgmPEHP5Qr5OEtApTiBUJPwJE80hqQFnrX5Wo3SIDUO2VHYUb2KiLGN/9SOIVyHygcw79 YGT0E6MqyLMbEYt7eL3ODbKadY/DDvysnB7o2/vhQdPj2CKZsQizuRYjzrY3GeLzM2Y6bReq DshPav6wDQAkj+Oa+Adwc4tqX41pH2vaOjRSRDKw8s6QGIgz/twLnmEyKA1hNbdz9U278t/U XMjgS8v8yYwr+G4y6Z81WWw4VdmdPnxNcGLMuQivINIjGprgqzfoxuV5CLoThwiuCy71QBls XKvn4bTotOwkKUWlvwjQrm2gHm3jprw3j+yWWAiX+mmsD9TCJSMbsLuatpNj/ir2YwttB116 xGm0iDsYBMMB/GlCPho/DVShBDjCOP0DkfuN9Wq0YafZoVabdXo4Ba1lhSCo08ECXz751iOP VyDfvb+O1dfTqhHjDkV1FUsZmRt0kIb1O7qhBogL3T79EWpgE586Ig/r1cop9an6hNDaWt5I z/Q+xVff91P5YrhQ8UPpZ3fSKNMB25ffv7ChPaHb3WLtB0B5vzke+C3FwU3pDhRHVa9up+pH z+OGkow1LaPXieUfGz4A==
  • Ironport-sdr: osL35eMDgcguAYM9jvE38O1LvAyYJVpwcH5l4yKuam+x5DsdW+gathWEJN07xZ/vJaoKMhZN1x bwRQqo+qiZ+1I+QPPCjLwEfUpCZLvHZAV1JgQZXjq3D8CodLtiP15s4vskU3RoK0Hhm/q7YgJd YwxiWQzKbLZVV4z0BdCIkKxYk9jecGrMaKIfhdLr/KwZ0qvEc2UVBI0b2fHjBKxxB7wpzd3GO8 3C1D0cF3G3fxfA07JJlckSYAbvn8cEEkKNOEq8UPKP4hLi03ADQhsp/p/sPZczQE1pJCWv2FTJ sOsN9aWuSsVLLVy/BDT6IKLa
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 21/09/2021 12:00, Jan Beulich wrote:
> On 20.09.2021 19:25, Andrew Cooper wrote:
>> v2:
>>  * Adjust callers of HVMTRACE_ND() too
> What does this refer to? The sole difference to v1 that I can spot
> is ...

Oh - its me who was confused.

I thought I had failed to include the changes in vmx.c/svm.c in v1.  In
which case, no change to that in v2.

>>  * Drop _d[] for the 0 case.
> ... the one corresponding to this line, i.e. ...
>
>> --- a/xen/include/asm-x86/hvm/trace.h
>> +++ b/xen/include/asm-x86/hvm/trace.h
>> @@ -67,38 +67,30 @@
>>  #define TRACE_2_LONG_4D(_e, d1, d2, d3, d4, ...) \
>>      TRACE_6D(_e, d1, d2, d3, d4)
>>  
>> -#define HVMTRACE_ND(evt, modifier, cycles, count, d1, d2, d3, d4, d5, d6) \
>> +#define HVMTRACE_ND(evt, modifier, cycles, ...)                           \
>>      do {                                                                  \
>>          if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt )               \
>>          {                                                                 \
>> -            struct {                                                      \
>> -                u32 d[6];                                                 \
>> -            } _d;                                                         \
>> -            _d.d[0]=(d1);                                                 \
>> -            _d.d[1]=(d2);                                                 \
>> -            _d.d[2]=(d3);                                                 \
>> -            _d.d[3]=(d4);                                                 \
>> -            _d.d[4]=(d5);                                                 \
>> -            _d.d[5]=(d6);                                                 \
>> +            uint32_t _d[] = { __VA_ARGS__ };                              \
>>              __trace_var(TRC_HVM_ ## evt | (modifier), cycles,             \
>> -                        sizeof(*_d.d) * count, &_d);                      \
>> +                        sizeof(_d), sizeof(_d) ? _d : NULL);              \
> ... the addition of a conditional operator here (which I assume was
> something a particular compiler didn't like in v1).

And was covered in the commit message:

> The 0 case needs a little help.  All object in C must have a unique address
> and _d is passed by pointer.  Explicitly permit the optimiser to drop the
> array.



> FAOD - I'm fine
> with the change, but I fear I'm overlooking something (again).

Thanks,

~Andrew




 


Rackspace

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