From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x2242moZitcGXrecZTGaelKShup0Il0O0Bvcl+bjYAkm0MpER03I0Qbxr0Yuvf2oJskK/fJ/2 ARC-Seal: i=1; a=rsa-sha256; t=1516482385; cv=none; d=google.com; s=arc-20160816; b=VCe61B+ssDn41/VLlQ+axEeB++ldn9nYKNxM0F87L17kjyL9jTjKjcH0BAJZiWlkZ4 F8UX0MgGRyqiioAj4L+qTEmL/0L50AQnfL2KXZIFtlH9m54d1+5oUMfww2241r7zSKuu Gk2PzuCS8DGUJaq69V9XrD+At29kIbEWoSbVEb4jWUWbnV/nqywHqxtuPIl7GUp7EPKC fFPqVuxV/LXKwNAiMMRZJT2mVmUBShePGPSXnHp51QN5U2afuhA3hjhGlQqHXvtPRrEq 3KFnSSmn0lHI7VgfGgh85OWxIe8VOXLfDyx6yYRMbOFIC6ncP0l8JHfdSZJVB2HrnxsW osog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=precedence:mime-version:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :mime-version:dkim-signature:arc-authentication-results; bh=YvU+CYlXxb8zgyEr7uKo6nlIr/QFCJ3MSTyS1DYvEo8=; b=krsPX5Kxxdm7XrbeiNjRXUVgZRyaZ+Esvt/MGnIzj9XYTlAQlKoiAjzY19uGkUF4sQ +/tSVpAwUdxKaPJHDRMuQznMbZYgQpQqEyYNZ5T7CJe8fYPGEY8JFNBo0ugsdUrmV2cA Go+NXS34CCtU2MTPBmzUDV4v1bmV38RaJ/4NuK4RSJOO13k+WRclLQ1JagLzAsUE9OTq cz4914liKM0WWDr9MVy0eUUiOgEvZBz/ZfdwYMfzbYQIslsQ35KXfsZKpQukY77nzYBB c9rokIcApDZMqLaiQE0JbvR84S+WGH/H9dqf6oE2bmT7qUnYJ/rsRIFfcENhM8y032Vj 0tIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.co.uk header.s=amazon201209 header.b=of3074Gq; spf=pass (google.com: domain of prvs=551c774c9=dwmw@amazon.co.uk designates 207.171.184.29 as permitted sender) smtp.mailfrom=prvs=551c774c9=dwmw@amazon.co.uk; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.co.uk Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.co.uk header.s=amazon201209 header.b=of3074Gq; spf=pass (google.com: domain of prvs=551c774c9=dwmw@amazon.co.uk designates 207.171.184.29 as permitted sender) smtp.mailfrom=prvs=551c774c9=dwmw@amazon.co.uk; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.co.uk X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="5.46,387,1511827200"; d="p7s'?scan'208";a="588409486" Content-Type: multipart/mixed; boundary="===============4588225773127527354==" MIME-Version: 1.0 From: "Woodhouse, David" To: "linux-kernel@vger.kernel.org" , "Raslan, KarimAllah" CC: "kvm@vger.kernel.org" , "tim.c.chen@linux.intel.com" , "peterz@infradead.org" , "arjan@linux.intel.com" , "ashok.raj@intel.com" , "bp@suse.de" , "torvalds@linux-foundation.org" , "tglx@linutronix.de" , "Janakarajan.Natarajan@amd.com" , "ak@linux.intel.com" , "joro@8bytes.org" , "dan.j.williams@intel.com" , "x86@kernel.org" , "hpa@zytor.com" , "aarcange@redhat.com" , "mingo@redhat.com" , "luto@kernel.org" , "pbonzini@redhat.com" , "gregkh@linuxfoundation.org" , "dave.hansen@intel.com" , "mhiramat@kernel.org" , "thomas.lendacky@amd.com" , "asit.k.mallick@intel.com" , "jun.nakajima@intel.com" , "labbott@redhat.com" , "rkrcmar@redhat.com" Subject: Re: [RFC 04/10] x86/mm: Only flush indirect branches when switching into non dumpable process Thread-Topic: [RFC 04/10] x86/mm: Only flush indirect branches when switching into non dumpable process Thread-Index: AQHTkiQsR4TcmxBj6kukmJvZPtJ+lqN9QK4A Date: Sat, 20 Jan 2018 21:06:05 +0000 Message-ID: <1516482364.9814.18.camel@amazon.co.uk> References: <1516476182-5153-1-git-send-email-karahmed@amazon.de> <1516476182-5153-5-git-send-email-karahmed@amazon.de> In-Reply-To: <1516476182-5153-5-git-send-email-karahmed@amazon.de> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.62.4] MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590140567714479425?= X-GMAIL-MSGID: =?utf-8?q?1590147033482731068?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: --===============4588225773127527354== Content-Language: en-US Content-Type: multipart/signed; micalg=sha-256; protocol="application/x-pkcs7-signature"; boundary="=-sZWo+Mycbp5Snswlgb+j" --=-sZWo+Mycbp5Snswlgb+j Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2018-01-20 at 20:22 +0100, KarimAllah Ahmed wrote: > From: Tim Chen I think this is probably From: Andi now rather than From: Tim? We do need the series this far in order to have a full retpoline-based mitigation, and I'd like to see that go in sooner rather than later. There's a little more discussion to be had about the IBRS parts which come later in the series (and the final one or two which weren't posted yet). I think this is the one patch of the "we want this now" IBPB set that we expect serious debate on, which is why it's still a separate "optimisation" patch on top of the previous one which just does IBPB unconditionally. > Flush indirect branches when switching into a process that marked > itself non dumpable.=C2=A0=C2=A0This protects high value processes like g= pg > better, without having too high performance overhead. >=20 > Signed-off-by: Andi Kleen > Signed-off-by: David Woodhouse > Signed-off-by: KarimAllah Ahmed > --- > =C2=A0arch/x86/mm/tlb.c | 13 ++++++++++++- > =C2=A01 file changed, 12 insertions(+), 1 deletion(-) >=20 > diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c > index 304de7d..f64e80c 100644 > --- a/arch/x86/mm/tlb.c > +++ b/arch/x86/mm/tlb.c > @@ -225,8 +225,19 @@ void switch_mm_irqs_off(struct mm_struct *prev, stru= ct mm_struct *next, > =C2=A0 =C2=A0* Avoid user/user BTB poisoning by flushing the branch pred= ictor > =C2=A0 =C2=A0* when switching between processes. This stops one process = from > =C2=A0 =C2=A0* doing Spectre-v2 attacks on another. > + =C2=A0* > + =C2=A0* As an optimization: Flush indirect branches only when > + =C2=A0* switching into processes that disable dumping. > + =C2=A0* > + =C2=A0* This will not flush when switching into kernel threads. > + =C2=A0* But it would flush when switching into idle and back > + =C2=A0* > + =C2=A0* It might be useful to have a one-off cache here > + =C2=A0* to also not flush the idle case, but we would need some > + =C2=A0* kind of stable sequence number to remember the previous mm. > =C2=A0 =C2=A0*/ > - indirect_branch_prediction_barrier(); > + if (tsk && tsk->mm && get_dumpable(tsk->mm) !=3D SUID_DUMP_USER) > + indirect_branch_prediction_barrier(); > =C2=A0 > =C2=A0 if (IS_ENABLED(CONFIG_VMAP_STACK)) { > =C2=A0 /* --=-sZWo+Mycbp5Snswlgb+j Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEE4w ggUuMIIEFqADAgECAhEApEtL31g6H7ROXdOiQnA9RjANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhl bnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwHhcNMTcxMjIxMDAwMDAwWhcNMTgxMjIxMjM1 OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFkd213QGFtYXpvbi5jby51azCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAKdGKgXuwKMg2r+i/4BZZC0ddRxNq3xIKTakie/VCSzoO7P17A36ZzUc VMEYPfqDt/65xoc6Tdih+qkY2pNDppZ1DZ8mVrAX6O2O60ZhmXB60wMoDvXPZInvkMOW4drqnje/ 7/NOypn/XQAY+ln4KT+3tHG3TfryyJFMedqC/r29KJlCeeCxIzdtq2j5mN42tvPVv4+p+Kr77uui GOASNdFJbNdgx7UGF+il6kRGSle17LJZKMgRiLJXYjECwnGwdfLdN5SINWD5IC3yXY8d14Bq6DyD jNts1DFw+SKhW8kVFYRZpv7TE3/42QJKQVL6YWka5T4EJO7AD3gy2ypRsd8CAwEAAaOCAecwggHj MB8GA1UdIwQYMBaAFIKvbIz4xf6WYXzoHz0rcUhexIvAMB0GA1UdDgQWBBT/vhvBExl2wDr8f50u b+0yzFyZRjAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcD BAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQEC AQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFoGA1UdHwRT MFEwT6BNoEuGSWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRp Y2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYsGCCsGAQUFBwEBBH8wfTBVBggrBgEFBQcwAoZJ aHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRT ZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMBwG A1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUAA4IBAQCK2HofespbCaDu udwwfh8GxDpVUnVbZZVWScpZMxfYpXzLot7L6iZrr16oMQ+UOiDDAK6/D3+u2QN8u0lJ6yLKVmvh lGOzDywGsyG2Ohy8Dt5jcEK5sz84OsPtrRH7ahZHLxYPhWlUKOjOPN6sb9h6uMYlXmG/KmAr2rwF exN6Zrwh6YwF7ukuMs175YcNyYRdB8kVYq3WikfbTHOoRbJiu9Unw7LqnvPTfx+xUvD6aN2CKLtr mactWbk98swNgbI18UWjfEpugvAqw09CDLjeq7N1v0SkUkQEDqGSUE+hKFryTNXtZ6zOfl+MQfD8 U7T5oJa34DmWXK9+x7dl+MrqMIIFLjCCBBagAwIBAgIRAKRLS99YOh+0Tl3TokJwPUYwDQYJKoZI hvcNAQELBQAwgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQDEzRDT01P RE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTE3MTIy MTAwMDAwMFoXDTE4MTIyMTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnRioF7sCjINq/ov+AWWQtHXUcTat8 SCk2pInv1Qks6Duz9ewN+mc1HFTBGD36g7f+ucaHOk3YofqpGNqTQ6aWdQ2fJlawF+jtjutGYZlw etMDKA71z2SJ75DDluHa6p43v+/zTsqZ/10AGPpZ+Ck/t7Rxt0368siRTHnagv69vSiZQnngsSM3 bato+ZjeNrbz1b+Pqfiq++7rohjgEjXRSWzXYMe1BhfopepERkpXteyyWSjIEYiyV2IxAsJxsHXy 3TeUiDVg+SAt8l2PHdeAaug8g4zbbNQxcPkioVvJFRWEWab+0xN/+NkCSkFS+mFpGuU+BCTuwA94 MtsqUbHfAgMBAAGjggHnMIIB4zAfBgNVHSMEGDAWgBSCr2yM+MX+lmF86B89K3FIXsSLwDAdBgNV HQ4EFgQU/74bwRMZdsA6/H+dLm/tMsxcmUYwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw IAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNV HSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v ZG8ubmV0L0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01P RE9SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcB AQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVu dEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v Y3NwLmNvbW9kb2NhLmNvbTAcBgNVHREEFTATgRFkd213QGFtYXpvbi5jby51azANBgkqhkiG9w0B AQsFAAOCAQEAith6H3rKWwmg7rncMH4fBsQ6VVJ1W2WVVknKWTMX2KV8y6Ley+oma69eqDEPlDog wwCuvw9/rtkDfLtJSesiylZr4ZRjsw8sBrMhtjocvA7eY3BCubM/ODrD7a0R+2oWRy8WD4VpVCjo zjzerG/YerjGJV5hvypgK9q8BXsTema8IemMBe7pLjLNe+WHDcmEXQfJFWKt1opH20xzqEWyYrvV J8Oy6p7z038fsVLw+mjdgii7a5mnLVm5PfLMDYGyNfFFo3xKboLwKsNPQgy43quzdb9EpFJEBA6h klBPoSha8kzV7Weszn5fjEHw/FO0+aCWt+A5llyvfse3ZfjK6jCCBeYwggPOoAMCAQICEGqb4Tg7 /ytrnwHV2binUlYwDQYJKoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDEx MDAwMDAwMFoXDTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk MT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVt YWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2 IVDzJXkLTLWg0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeX IoymMv6pQHJGNcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0 wsGtkGWC+eQKiz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFN e1VXj9XB1rHvbRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0B OSxSxt8kCvsUtQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQw HQYDVR0OBBYEFIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E CDAGAQH/AgEAMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3Js LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEF BQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFk ZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI hvcNAQEMBQADggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh 42awGGsma65u/ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZBy WPQedXLL1OdK8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN 543j/Q6qqgCWgWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6 ryEhNhzf+enm0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9v WPoqNSGDt87b3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunw wH3fciPjviDDAI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln 9icgc7CwaxpNSCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiR mjVzmehoMof06r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81r gzdEZOofSlZHynoSMYIDyjCCA8YCAQEwga0wgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl IEVtYWlsIENBAhEApEtL31g6H7ROXdOiQnA9RjANBglghkgBZQMEAgEFAKCCAe0wGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwMTIwMjEwNjA0WjAvBgkqhkiG9w0B CQQxIgQgclgo1XqMrDTWdx1ICAGi6pCwzbPM1k8knRL1evz+/4Ewgb4GCSsGAQQBgjcQBDGBsDCB rTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0Eg Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQCkS0vfWDoftE5d06JC cD1GMIHABgsqhkiG9w0BCRACCzGBsKCBrTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUg RW1haWwgQ0ECEQCkS0vfWDoftE5d06JCcD1GMA0GCSqGSIb3DQEBAQUABIIBAHzXB8GBn2GOxMyW 3yQE7r/uvAokKs9Wk4vV6HnFDK7ECdbAuGbbE2AzVRRNYCEztJU/jBn1aLjN/3gFH0CQttGvO0zx nwJpDT751vcEMTGUww+nrq6kQbpQc4Dmxclf4+DHt/S1CFv7FEjpVZanSK1ZhzxmJv2JaSWiM/iy FQHie+fLzdmeYETpM6I3LclFymhrMZ3SzD19WBkjae7KYuTi0d+LqhepQA4yPOjPjp9z+VmshPN/ ivGUG7iFTszEi9wyaTOUbMCG67KsBRRFt32ivTZz0GKClcZwSwDXkYYBxpKoqno4YZv81e7OjI45 VUkV0KOS3P45rLE20FrkL54AAAAAAAA= --=-sZWo+Mycbp5Snswlgb+j-- --===============4588225773127527354== Content-Type: multipart/alternative; boundary="===============2945603948692296820==" MIME-Version: 1.0 Content-Disposition: inline --===============2945603948692296820== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Web Services UK Limited. Registered in England and Wales with regist= ration number 08650665 and which has its registered office at 60 Holborn Vi= aduct, London EC1A 2FD, United Kingdom. --===============2945603948692296820== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Web Services UK Limited. Registered in England and Wales with regist= ration number 08650665 and which has its registered office at 60 Holborn Vi= aduct, London EC1A 2FD, United Kingdom. --===============2945603948692296820==-- --===============4588225773127527354==--