From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1FDEC636D6 for ; Wed, 22 Feb 2023 15:31:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C5A96B0078; Wed, 22 Feb 2023 10:31:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 175A56B007B; Wed, 22 Feb 2023 10:31:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 017216B007D; Wed, 22 Feb 2023 10:31:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E1D116B0078 for ; Wed, 22 Feb 2023 10:31:44 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9A2AD12032C for ; Wed, 22 Feb 2023 15:31:44 +0000 (UTC) X-FDA: 80495317728.13.1BF53F0 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2061.outbound.protection.outlook.com [40.107.92.61]) by imf25.hostedemail.com (Postfix) with ESMTP id 8E12FA0031 for ; Wed, 22 Feb 2023 15:31:39 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Lkq+8Ryy; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677079901; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mF5on3yA1gOe6bJWnDeUiaiUXicj4xqL1Prc+orQCwk=; b=8l2QKO8N2CuVT/4mLVKJcwG77VWuoS2ao/xd2qcXm642GCQmdvVaC2jClhVYX3uGEsQUBi gGMAERT/CS+mdA4cVYYImBSdycf/w8a9ji3cATlkGXR1irA4Cw+9+9na+Epo4CLLhuU6R+ QWbVfqmLS3vEV+CD0TGnAn+QOmU2lx0= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=Lkq+8Ryy; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1677079901; a=rsa-sha256; cv=pass; b=X7EZgreTXmYzOZEnDVtcHiC8DD2iW/8dJHv+DsLzGtqrXuYGD+jnzcDaLMpDZOxHKyKvX2 tQye+Fo3zCK8IUa411lUWwn/3/7l10PmS7oReD5aHdFHyDlXcDF5IhaHfpUtGcK+xT6RIP 2mPsuFYYW6WoaA73r0y4qhCGOhbzHj0= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DYkxY/Zowh2SALA1xv4H/NTBdVoFkasqAjXZhRHhtm+VB/gzQFjLwEIQ3ad1w01tNKGLfwCCzH9abDoyzPWoFUUu9s46W3LFMhhK31L37A91sQmywXkQv7FP+KcQR3Wn2owsXtd9T2fS+fHwzroa9tbiyNuZ79/aAgRlKGOFi9lr82xk4sIE5WD8LSA9rh2UnZJWbohM7hEqD9s0kLaZtL6CLjnHnC9VRM/myT9elqbiz4oA+7FiNJoIYb54f3WJcISIDhFXyqC5GSs0k0Qc9bQMazYLxu3swadO7ALERNIpiSmC1f/8YwxIOatZd+iSNKFiS9rM3uh8rJhjMjwYNQ== 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=mF5on3yA1gOe6bJWnDeUiaiUXicj4xqL1Prc+orQCwk=; b=AyD6oXVnGs/BnKff5QnjbbfqKDx5AwWN8O/fV/fdW9nE037XGYKrTa+2HNZY/2Y5TNND08fO9wOotelaprJdfPht2fk95ic4lMDSD2/0xGIiOfbqZlpjfvPkS7EqGzpyKB8JHBkpRONoQCZHlw4k1zum+bFmUyvCCJizvUy1TnAETmGVGSKpDRj7cvSlm+ZEdCQGQLaObNoWhAp0no+KcTuxUeY4TwdpGAAEe4GYP1tNfEupozNjxt6FWXiNjgzPkV+6wma4LKBy/YZZnvyjQHq5a+06a5iLuGAc40ijK2JYbtqZhZ/tE9bVSleMqdg+MRfMmbiT1lKRCqFx6+5Hnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mF5on3yA1gOe6bJWnDeUiaiUXicj4xqL1Prc+orQCwk=; b=Lkq+8RyyYsx/VWidXnQ55jfxD/KNfMB3gc1z9sCMxdN8pdgc2jka3T5C6SjGcJSCQZ6Ax1JRSQ3zp/n5pg7lETY/RuHeyZ0cgW4Km3slvU/Nkd4mmlnMRvNe54sDgHpdpZbRfNg3PdzaabB2uVyK2TkFhTMsLCbsR9NQOKDuRQRKOjN7dbuU0WGHawdBtp1Zv9FngTPyI8oXK0BRLCJjzTCsd8w0WQIcXjoAIQxVNiff0Of5ILhKaZziZ40KwvMeqmEJvxXpMiyyfle0OgSxJ3DZFSnr3tc0IHbnD8grHmpBhLOqPYKII9v5k6+3P1XNYYkO7Qsl7VNfl5cbmVbkZw== Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by CY8PR12MB7316.namprd12.prod.outlook.com (2603:10b6:930:50::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.19; Wed, 22 Feb 2023 15:31:37 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663%4]) with mapi id 15.20.6111.021; Wed, 22 Feb 2023 15:31:37 +0000 From: Zi Yan To: Pasha Tatashin Cc: Gavin Shan , lsf-pc@lists.linux-foundation.org, linux-mm Subject: Re: [LSF/MM/BPF TOPIC] Virtual Machine Memory Passthrough Date: Wed, 22 Feb 2023 10:31:33 -0500 X-Mailer: MailMate (1.14r5937) Message-ID: <31ECDA2B-52E2-4AB5-83CA-D0CD9342A3B9@nvidia.com> In-Reply-To: References: Content-Type: multipart/signed; boundary="=_MailMate_BDD48CA6-B7AA-45BD-976D-A4B10667CAF9_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: BL1PR13CA0190.namprd13.prod.outlook.com (2603:10b6:208:2be::15) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|CY8PR12MB7316:EE_ X-MS-Office365-Filtering-Correlation-Id: 1590efcd-485e-492c-e789-08db14e9e27f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7F5NvGcPbvcNgb7oeIav2NkUnb8uwg1Gl/eFsM0JJMghzgrPT2Ik/GdLHggZ6PZeTeOA8Pkg0cZo0pM13tDI3UCOlWag2jfIkTlZ5QOcY3PGVlaK+LvtursyQ7l9mGbHYK8RdJRDc18ZX5r/t6KI2cEWo1aFMonWzalBM5PazBUTiJGUh1XgKES90JqT0yz+h9vrqiirqA8TNHRrcLStCWe3IXUVEOOYXYgZOBf30dLLpgrDxgOozMbBPk8tXnzd2DZRl3Fy6FgINTUIk9GAhM33o3ice+5J5/X49GoAvNV4O2OqntA3rTjE9ee2I/Qppxdmm5fiZqOQCVIAcEaLqh9DcKbAgSu1R6pPbeSGlBXO4FAQfrmdaV+96n+VKRwgjnDMUnom8quFjhKwbeRAXOwYBG+imlLGpb0bbu3nzCKFUDNp5J0E8ljQGdFTKkC01xH4zkMYXUNaZgjrKfh7J6mQmYcjtCRhE5m4xAH3USXxO8cRP953YcABOC0kxJCyS4colKIkESYfnA9OGQ+HjyXZ7B4smVkw8oXRu3wZfzSwFnWdiK4EQMjNF5jk6VLnVryp8Dl8KnS2/xCV+/irL94FhjUUYQsX3r932FeihWB616xztQCfZdA077W68qW+1I3Mjot9wikz+pcRO4qEj6NXNQPlqlMzm0YvwPFZ0DikapJ3+7AWCiAAGTm69xHDOrm5E1K/w5E85RJS/vp1NQSqzuBnziz+3tmGoukNY0k= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(376002)(136003)(346002)(396003)(39860400002)(451199018)(6486002)(83380400001)(36756003)(2906002)(235185007)(5660300002)(53546011)(54906003)(41300700001)(86362001)(6512007)(478600001)(6666004)(33656002)(38100700002)(2616005)(26005)(186003)(6506007)(8676002)(316002)(6916009)(66476007)(8936002)(66556008)(4326008)(66946007)(45980500001)(72826004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?snjBC4D+EUUq5qJzc6DsZjgs6JopfAr2hoMXFGEuw4O7K2sTPLZ9b8imUOd9?= =?us-ascii?Q?yUSENp0mEuT17npSoo4JZLQHn8dlUrazuoOwQKmbiNiUgWcyl/bYvKwA3ViP?= =?us-ascii?Q?7KgGvdSNpoDXPg9aIRhAGIIPzN3IEE7NQaHTkjJpezb+QRvTlE4Q8vHT0CBH?= =?us-ascii?Q?Yh6GT6712sKZJPQM6oHL8Cf0qIpTT1Dl67LV9TpOJLkOG2KvoVZmj3DamlPg?= =?us-ascii?Q?E8xSw6l0KJU0ae7ZKowPn2Gsyl9xFp9Ol3AYbMa4KFPeNg+TPb/urkW865V7?= =?us-ascii?Q?8EuH8rXw0yG3x1F0Lo0nO37AJLXzoaIz/jqjinFEC4fzzK/b9FQaos4AqdHT?= =?us-ascii?Q?dbUDPvjWtUFAAqfE8vIkNxvEri99ofvuWp2CfN36OHqCBHQVWlEWJjLRzgjS?= =?us-ascii?Q?PlF8pZH7HUfHHymiuTPkj1ClvkEz5OFBoipAnTlbPTgzjXU1mXs5iWU4VIVn?= =?us-ascii?Q?d0BsDv1LXdHokr2iRj/XsoAUolBYpxICbNUEz4331WTy8gJ29DtEFX1z0pD/?= =?us-ascii?Q?0FeGmJ2vdvkNBuTK3oJf8zybvX6u7vsqOFuV7pqCEqY8dDpGygpbffMlTMFe?= =?us-ascii?Q?s2GGDNzSmP9yz4X7FS0AdD7SruyvalScvBM71fztr2xAj+pqrQKdPYmO9AJS?= =?us-ascii?Q?KthTuQP98wjy8rtU6ogn9r05LjEqP2hREBV6VZCvH0E/HVurD+PeQ8UgdSQd?= =?us-ascii?Q?DpHvIvimKsThRQGC40qIS0s9edgggGTN5Qk2YMEGzaUTq7AAtg4Xh8IG4bti?= =?us-ascii?Q?1wcUgNS59P3YLMOeg3/QX9HEkFx2MFqLz657hCHfy11h+fuYQSnVEMWMUZlk?= =?us-ascii?Q?HPmFAlpJ2/3wya91YumQITOnuewfsbUecvMQv2q+XNyLoFznqZZXDGye9qaF?= =?us-ascii?Q?2AWkgE8mQit7R3/5rGjZVRdZuXC+HYIctnQLotzoTjLsUn+FxuK5BKUIS1jP?= =?us-ascii?Q?b+wyViIIITlv3+FMRgEq/yslvTTvTiU0DecgzJSmr2MgfUDYqctb2udjOOSY?= =?us-ascii?Q?MM+lucq6QArnbPZOP6fkUfZUz12v4KZUAG/aYxk2GnwF77+5udL1K8ZrTHw6?= =?us-ascii?Q?jQOGSCxQzA0+t5dskFuDX7Y2qDzl4Lqlbz3WDRWXWrt4MfhJQdb2eeBA6d9S?= =?us-ascii?Q?MK9EWxEPj3X35Jocsx+wnXkjWYgJi60wfdNeeOeJUxAzmbDmCIcUMna+hgPd?= =?us-ascii?Q?YnX3nAWW9vN/V8Mn8UMF0OOPO4Qgc7/qg/q15VqMLO6Fjv6/r8bY3HpEtJgi?= =?us-ascii?Q?aVfb5sVChw5DTAUMZW7haCf9GAN2tuT/uRXwI/QiA8+6aqVnkPc618x3+aMP?= =?us-ascii?Q?kWeL/sXn7w4hs2Dh9QnxH4EGfeTsyVqH7aape3plMN4WuNquBffbX3deVgAy?= =?us-ascii?Q?ao10KzeQ5bmgu7R7cvfZefZcgYRf1Gm+nVgUxpL83sAZT9ZWBVlL8SdokcFN?= =?us-ascii?Q?3Nz27WZ19ZIUryzmdeLK6O62UhUnWOMu65GY6Fc7kHHujn/HXsSimn+1dXut?= =?us-ascii?Q?8Sea17JTtFJA8Ufewko/RyEAUX2xmaSHn3kyrom7Ub8+0+AZaP+T42egiMhb?= =?us-ascii?Q?4WkEF1Gxgw/GSwK8Fl/DXOQ9YdxgqQsUHrCxkhS0?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1590efcd-485e-492c-e789-08db14e9e27f X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2023 15:31:36.6452 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DHiE7Zj7k3vP3rS0ktmjj9VJaPo3unI7JDCRtwJ/SWCdIYCZH5ZIptfQt44mn7ow X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7316 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 8E12FA0031 X-Stat-Signature: isogmc61mf7667g4n6i876kkezwdzfec X-HE-Tag: 1677079899-305301 X-HE-Meta: U2FsdGVkX19tjXbLCvZsvLG24n+2RR/U7exSPZCuAGLhj5aOfXgjpDhfq2m99MtlYNQ9MQHGBa0Uzb/Y/kF2zeDqrE1VS0OgedR/+sLFOg6Mra4Qs4n6gzBxfv0Jee2HFy/HWyXqSG3pZ3HGqK1EYzmmiQbDG4l8nI0O2bCncR6/4opx4sHqCt4BlYgzpUpcJGKNgITy6jWl0tKS/CDhWaFfmFTPqsKXN6Rclcqn3if8CmGuPvWZlxRKEEoNj9vq/bDdDaenQIcnlXyomR3Ppwq9f8O9mP5nbDwgNmtPEt4fiafvsbzPRrwFBkh/0a+7ooZJHsPNDie15hqYaPF6wRuhR2tGVz3hE1T7SyCAogIfxhwWiL4nlZM6BFDnP8qUUH2kYbkqk9UQIg6DB+ParxFrg3ZhDbu7MhsLaV/5qJEcWziGCrCm35kUxHHM2SVgngS1bOpeBc4j5x7mVtfHUdcyhQABrw5nv2vO5Cz7ssiks9HOeHB5OaKzAOrOLK6cagFHKBiYPIyOU2VS2DCH1p9U/bHoCRj4dzLi89cKSb+Qo+8Q3DQMEFO2IE/d1pnbfO8LB6vn9nyU3hXYWOpmdkxnF0ttrGYnSx3gvLmnLzhiZq4GNIqhILfPtpKcYkdnrzJkUasPxHzfZ95nIGojYvzqDUcKUovNZRxmZSG236EZkeUpM0sdPiNk4NlksriKjlQagO/utvi6PoI0jxMek6C0Mse6+9GM/Cz8Z7nFfIn2VS7zHeJdJ1h7QgDry7s9KMWbq0PljAta9J9fKOFXiLGXGZAQ7YXHrrJQThj30omvGj8RF1yUABAz4G4BSDVBx3MGZhU1iHJJDYW2rxjKbpBFEdVuWAYV3SOoKn/M8TutoUK27WQ8NRNfIdWsFBNN/2mKuVjeEGl5WkT8qETFrqwlzgbuoyLyKixpNbSukf1ZOHqc/2yvAofi/FY17NVBhTHnMpvbCzB25h2YB2m Ts4+LEFS X6OGc3oRNZfuVFWQAgrqIIFHwD0VDB7LzVYjWfQh1dfowdYfx7PeRjPrfq2Oc0AnGte4KLPPIZkWsqEgWI2OD5FxP4T8PWrK3qlUOv61DItvTQu6Iip5UkCY5w7W6vEZK3E+ws5om61Ib2emkg3p/AS/xkQDqR6fkXuhKqgixuSsXTPGK+ChI7brrJf3MnnhrUJ2fGaSATxzr5expoCHYLMtYsy2gSaTOlKnZmvODaCtEe7Lrlcs1I01Bt64MnifHUfE/N5Ybz4P3DHeEcBuXqMCqEbofO/mIRiJKTG9vn9bPkZ5jRYv9n6GbuH4MkPi/93UY/wliHf1Hgv4vzOt1cbn6mA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --=_MailMate_BDD48CA6-B7AA-45BD-976D-A4B10667CAF9_= Content-Type: text/plain On 22 Feb 2023, at 8:43, Pasha Tatashin wrote: > On Mon, Feb 20, 2023 at 6:51 PM Gavin Shan wrote: >> >> Hi Pasha, >> >> On 2/21/23 3:31 AM, Pasha Tatashin wrote: >>> >>> As a part of an ongoing work of replacing some containerized work load >>> with virtual machines within Google, I have worked on making the >>> memory translations faster. >>> >>> I would like to propose the following topic for this year's LSF/MM/BPF: >>> >>> Discuss a set of techniques that can improve the guest performance, >>> memory footprint overhead, observability, and manageability of virtual >>> machines by hypervirtualizing the guest memory to the extreme. The end >>> goal is to allow very lightweight virtual machines to be closer in >>> performance to the containers. >>> >>> The following items are going to be discussed in this topic: >>> - Reducing the cost of SLAT page table translations. >>> - Reducing the memory footprint overhead. >>> - Reducing the memory management overhead. >>> - Increasing the observability of guest memory. >>> >> >> It's all about to understand the problem and possible solution or directions. >> >> I googled for 'SLAT' and direct me to x86's EPT. ARM64 has similar thing called >> stage-2 page table. The usual way to reduce page table translation cost is to map >> the contiguous memory through PUD/PMD. I'm not sure if there are other solutions >> we're heading for? >> >> Guest's memory is usually backed up by virtual memory area (VMA), which is either >> a anonymous or hugetlb region. As I understand, the page fault handling is excessive >> to populate the requested memory. I'm not sure if reducing the memory management >> overhead is to get it faster, or something else? :) > > Hi Gavin, > > In a non-virtualized environment, when converting VA to PA, we load > each level of page table, so converting to a 4K page takes 4 or 5 > loads, depending on the page table type used. However, in a > virtualized environment, the number of loads to convert guest VA to > host PA is not a summation of SLAT page table levels and Guest page > table levels; rather, it is equal to: n*m + n + m. This is because > each guest's page table level must also be converted from guest PA to > host PA. > > One way to minimize the number of loads is for the guest to use huge > pages, for example, 1-Gbyte pages. However, this normally wastes a lot > of memory. The idea is that we can use guest physical memory in a > virtual way: create 1-Gbyte pages that are only partially backed by > host memory, yet improve the access performance due to fewer TLB > misses and faster translations through guest + SLAT page tables. I > would like to discuss how this can be achieved. Do you mean allocating 1GB pages in the guest and backing them using 2MB and/or 4KB pages in the host? From my understanding, for virtual machines, TLB caches guestVA to hostPA, so the number of TLB entries would be the same as using 2MB or 4KB pages in the guest (as long as the guest page and the host page backing it have the same size). What am I missing here? For a TLB miss, it will be faster since fewer page table walks are needed for 1GB pages in the guest. -- Best Regards, Yan, Zi --=_MailMate_BDD48CA6-B7AA-45BD-976D-A4B10667CAF9_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmP2NVYPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhUtQkP+QEUFUl+w9VjCw9NgTjYMo4cm6hLluv7x9xP mvMDnhHn+qCxrM+QeK50xx0e9hU5eoV6jUU8zxUuRwdnpw22eVKBBHFEzcCvI6eE y/7TZMXIlnUsmnMqahu6q0Imb0Ua3LuQPN2v6ibdKd0xxh1XgOdN2V+1CgYigAfw zJ2VRrOktHcqQUYgg54ZwqUqSEglWu+yvo26IwogbbOCS+E5GmLPjwaY0oU+zs3I N24vBOSOaScZiFMj9jiD5i7TlU7xLWmiu/iUIIuPRy9gpavCnjSEQMH9xI7bOqJJ kZpEuWIYKSZh0ZSuyNSzGmnUVpp6fU/Q08OptlJiCgGWm85+x/6zGXuNwcmez7i4 BNYEglrp3XX2WlbD3sW8hgc3olkFKZCxv/r0x7GKi0nyYIld+91eewrd1Fumhpl4 /tvYmiYLKe19bEGEXU1o873Ev5U7T61VeL8rq2vRabfnNfcUmXIPosMJq9RpAdsy YiCegGgMFKFjypfVIVoUFhddL+ctXIHa8/RZTPBWIBMY3NK0M9g8Sq3b7XkOoBWC 2INcySieyTWRZle3pztiWM7z5MBxIwLTUF2ML0839tWdTbPD2PscnnSDUGV4UcpJ dPJXg2CK9j21MnYcO9Y74jgdv1BmZiVTR2luFilQGBrV2P08rn+F00Bf3Zdwp2di hgzR2sBq =SY7U -----END PGP SIGNATURE----- --=_MailMate_BDD48CA6-B7AA-45BD-976D-A4B10667CAF9_=--