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

Re: [PATCH v2 for-4.18?] x86: support data operand independent timing mode


  • To: Julien Grall <julien@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Thu, 14 Sep 2023 08:32:55 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EZgfkgbebb0WuQodGwibDCd5fguaGtt3PRhAHB/noX0=; b=l751iv/DZsZZX2hlqwryjVBk6qCVKs1QF0TGbGKO/RDHLZFMfKuVeUTIYe5RBAiAhAbkfwIeAoxJQmK2lGLu9IMOFH52CbmtREtAU8F1rr2WcoggJmjf289WNGIVUyTl6fAwin1uPhbhp5zqPqafcrzr8sS1Ui8pjfju4xt2SB2dffYEE6jzgJ1b/AQxiB9AjimlmnpE7mDzhDeClTdDnxA5b+1Qg5CxGPLjk6E8v0U8wjuGvmQEdNL68q2bhT48dVF5ZqORZaKZQjxO9rXXTYEJ6MZvcCtTwo2MVRhP75O4/7WZAU7TbyXFn3SdMai4elLNfe36bIJTMsZWDlqJtQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KcxUnurvx9UABXA6KqtfmaYeA0b5GAPXwhd0xxL492WC+RDj3DH107RLmjNF8u6jlPZRk/zYKQ4+O7iVCA0IYjO4fHDdz2xs4hAd6kr3v+YoHPEUWIZcWRK9E9JxBAoW3QXYt4FtHK9IMtyPn1YpJhFBVGdsY6BivPdZQ0VjhEZMx8YKYExvlNIzucEu4tw83NuPCEsPBsiil1YLNKwxWuYqTysZ8Ftl+hVZGTuLs21iR4He6e2RzL1XMy+jqrWK5got2zdQ1Q3200HP7Lda0GnH5lb3mj44eWvm/UfoQ7/IKZEOwTWQTOIuaNg4/A52OB3ycFOHf3vahZnpvxz8ag==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Demi Marie Obenour <demi@xxxxxxxxxxxxxxxxxxxxxx>, Henry Wang <Henry.Wang@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 14 Sep 2023 06:33:19 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 13.09.2023 19:56, Julien Grall wrote:
> On 11/09/2023 16:01, Jan Beulich wrote:
>> [1] specifies a long list of instructions which are intended to exhibit
>> timing behavior independent of the data they operate on. On certain
>> hardware this independence is optional, controlled by a bit in a new
>> MSR. Provide a command line option to control the mode Xen and its
>> guests are to operate in, with a build time control over the default.
>> Longer term we may want to allow guests to control this.
> 
> If I read correctly the discussion on the previous version. There was 
> some concern with this version of patch. I can't find anything public 
> suggesting that the concerned were dismissed. Do you have any pointer?

Well, I can point to the XenServer patch queue, which since then has
gained a patch of similar (less flexible) functionality (and seeing
the similarity I was puzzled by this patch, which was posted late
for 4.17, not having gone in quite some time ago). This to me
demonstrates that the original concerns were "downgraded". It would
of course still be desirable to have guests control the behavior for
themselves, but that's a more intrusive change left for the future.

Beyond that I guess I need to have Andrew speak for himself.

>> Since Arm64 supposedly also has such a control, put command line option
>> and Kconfig control in common files.
>>
>> [1] 
>> https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/best-practices/data-operand-independent-timing-isa-guidance.html
>>
>> Requested-by: Demi Marie Obenour <demi@xxxxxxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>> ---
>> This may be viewed as a new feature, and hence be too late for 4.18. It
>> may, however, also be viewed as security relevant, which is why I'd like
>> to propose to at least consider it.
>>
>> Slightly RFC, in particular for whether the Kconfig option should
>> default to Y or N.
> 
> I am not entirely sure. I understand that DIT will help in the 
> cryptographic case but it is not clear to me what is the performance impact.

The entire purpose of the bit is to have a performance impact, slowing
down execution when fastpaths could be taken, but shouldn't to achieve
the named goal. I have no numbers though, and like you I can only go
from what the referenced documentation says.

>> --- a/xen/arch/x86/cpu/common.c
>> +++ b/xen/arch/x86/cpu/common.c
>> @@ -204,6 +204,28 @@ void ctxt_switch_levelling(const struct
>>              alternative_vcall(ctxt_switch_masking, next);
>>   }
>>   
>> +static void setup_doitm(void)
>> +{
>> +    uint64_t msr;
>> +
>> +    if ( !cpu_has_doitm )
> 
> I am not very familiar with the feature. If it is not present, then can 
> we guarantee that the instructions will be executed in constant time?

_We_ cannot guarantee anything. It is only hardware vendors who can. As a
result I can only again refer you to the referenced documentation. It
claims that without the bit being supported in hardware, an extensive
list of insns is going to expose data operand independent performance.

> If not, I think we should taint Xen and/or print a message if the admin 
> requested to use DIT. This would make clear that the admin is trying to 
> do something that doesn't work.

Tainting Xen on all hardware not exposing the bit would seem entirely
unreasonable to me. If we learned of specific cases where the vendor
promises are broken, we could taint there, sure. I guess that would be
individual XSAs / CVEs then for each instance.

Jan



 


Rackspace

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