From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946029AbcHRMYM (ORCPT ); Thu, 18 Aug 2016 08:24:12 -0400 Received: from mail-by2nam01on0088.outbound.protection.outlook.com ([104.47.34.88]:3649 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1945889AbcHRMYJ (ORCPT ); Thu, 18 Aug 2016 08:24:09 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Subject: Re: [PART2 PATCH v5 10/12] svm: Introduces AVIC per-VM ID To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= References: <1469439131-11308-1-git-send-email-suravee.suthikulpanit@amd.com> <1469439131-11308-11-git-send-email-suravee.suthikulpanit@amd.com> <20160812141604.GC22322@potion> CC: , , , , , From: Suravee Suthikulpanit Message-ID: Date: Thu, 18 Aug 2016 19:24:33 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20160812141604.GC22322@potion> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [171.96.222.253] X-ClientProxiedBy: KL1PR02CA0026.apcprd02.prod.outlook.com (10.165.15.36) To CY4PR12MB1446.namprd12.prod.outlook.com (10.172.71.138) X-MS-Office365-Filtering-Correlation-Id: 25057112-cf04-4a23-49cd-08d3c7628b7d X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;2:jZZSLgIPGxq3HeUPDYhy+eVbaMS2zEoRCp9BkZsf6MUXWZBd1blrT1/Adq3aqRpm2L/v+RDnZIsmZLGLg6j0A7RE2kevTElikDF0z7uZRrBsxfWGwn6bwb1gUfPNCjO1EH6PJ4yX+EByvkvNPghcCVLlMvwhQMmY3OK6V0P4NPwHwPItbYwZURBWTjyINWg4;3:yJTEtX9IhRdLqPRaw8cpyNtkyoXZQTY8Sx4WvkDb4gSfjRf9jbhy0yQleeAyRe7MjtbhHBJfxh3DSiaKqDbNcCK8iDhPd2I6EqPCGKCzxtBA7MKh9Wg0AMIui89T9OGD X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1446; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;25:Sn+bqg7jiUZMtj2tHhTd5NWe3pk2Xqyf4g/twAyV/XOAQM1mcBjTXyL+DXrCs4lM+8p5Z2HcrznFbYLySx7alsrfoDqvjHf9spiKw17d/NvyG2JqEpXGl2YJvD07dPMq01LLbU0aY8YbMnOUGTtqT9CnJEs662h3g8nYm8ZfOnRzF5SubqmLSIsqN9IslwCsPZkJSCz/sWoDijUZ5YF8DO3Uw9c7Wq1KApjGWjCpFqQDGnSBfi2BwKqwkDt0lM/Zmwg3T/zYXuLb/AQM63i0kVsLJ8T30OgH2mLGUjZ6KIOLez+z4MQvci0f7Or1IHlvO28aU/uR5uIAFnvo0D3g1PJXQJFsA2NgVflvIfDudAr/YGEfnyQPC9NJWS2CnPJ9GBFbtJriEEtb27xD5qzN+wK6WpaCUj5wZLaud6IpvhvuXkSHN+M43E5YRyLhwswIHyItbtNlsKXEr/6m9RjGQM69v9xbIROn+CiZNbhK4WjprVvvrYZ8FOTv4vrbE3YFuqbsosmdnYtQwYNFOeKhAWCQGrGv0z5aznpwR4OxLUNcuu/cYO7k9O9OdSTvxKlt6QbM2m27s/uSGVQityIyqeEdLIcKqyDAwlLYuE9sIW9somTkMhBGJvJCjNeld8+/5TS2Y2jaEtZDRvs+l84wVtNxCH+C1yrUbUjR1TFqXQY1qnRmsplqBGBxdTatkAnJEncijmD9W4fc4p4fKWelUMeJytT9dGg/PcIkeA0yvF0= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;31:lu3gGpV4bRG8qPaiK8Hjip0WqXrJfOMAKYyCxzixx3UvF40jtSr7JmgEqaxmKe0cPaE8tGR3EBhLbQnO623y597N0+z/nOiHpRNqSXLizbfQZq9mM1WQlPrPPhqdzqfZ+PpRpliSLYwfbvqBmQ7T7ZLwS2Sb2+VpIo+Z+nzVhW554ssn8M2OCPLmZXcKhrSk1kdCtVzcDn7p6E0zeNF8teSH24rPsPj186Ka3LT3OJo=;20:wLoegxfrYsOIhtw7RXOKlIkRZGVcxbJNAcLLxn2p7HFtFRo7m1ZMqjRln1CqUzNSkwF4VP7mOSE3tFysDsPK4ayET9HglucNF+l8DiW4r8OTf30oKdkkpIO1u6AETX/BNVr/+76powqhH9Uj8no1/HoHJNgjf/kaFkbq8pAzlt1ZpZNRlBwHyQkVtIVTfN4e2Trzuf3I6C56jQjhybMD9IdVC4flK16GVqNGn/ouwleQpSUOeFSBxtkbAw5JisFN4YjASEQe93x7HZgt/yQYUlVlMWa/SRAYK4qIQCB4BkXNGs4/ZyGwdo+XXRLQNsuFuRTkgGIu5GQy0BInGVu8IqXXEwbTRkFtrrCRdyWbvzco4Ybj722Stogoi76iv2fiB3CHS1A7gKRwDVbACxcVrNo7npETgoRduIhP7EcxSwRORGP3fglE3a/IRo4ME99kBfVF5AQk25y5rWcRirK/lRKmtx344GcfKaQcBTI6MyZe6gDvxjKRxf0fc1X7016O X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CY4PR12MB1446;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1446; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;4:yoNVxFWonGt/dCw5ULuGrWoSKGJSIfG/PV09pQZXHWkZCq5IMp+9+93lXH1Q/q1moyhltg40wQMh4tyeokpzDWB6dtIiHMkjhgemgMj36Mqih9LDz6zAU9fZCj+nICjkcSx2NoCoy4kBv3l9UQd/HrQFS8LsDnwBv4iW4+PngX8xTbZmbkOkTSiSYk/fkxhWk7JbR2hqm6q+FsORTY8qyiCRuoc6/PpXhK7b2YPI2fSzv+xey+aQ399QSLzv0q76LzQtO82nQ+udmkHbA3dpcbYsrDupvmAU6rM8rJwPMt5mfZr8ePZIIIj/TiBjd/L/blctxeafa3C/hoPQyhVUTTR3ziUU64xFD5sj4di40+9C5zq9ds9p/yrI5j3xTkF29IZRb7sRTZ4RluMD0b5wgg== X-Forefront-PRVS: 0038DE95A2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(24454002)(43784003)(189002)(199003)(2906002)(81166006)(586003)(76176999)(3846002)(6116002)(86362001)(31686004)(106356001)(42186005)(77096005)(83506001)(2950100001)(54356999)(101416001)(105586002)(8676002)(92566002)(33646002)(47776003)(68736007)(50466002)(31696002)(97736004)(110136002)(23676002)(65806001)(66066001)(4001350100001)(36756003)(4326007)(2870700001)(305945005)(7846002)(7736002)(81156014)(64126003)(65956001)(50986999)(189998001)(65826006);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1446;H:Suravees-MacBook-Pro.local;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNDQ2OzIzOkFCYk1TUS9USFROR1AvOGtDMGpsZHhmUzZl?= =?utf-8?B?ZG5NZklLR1ZvL1FPbWVyWStSdlBObGxCSUltVjdFa1pOVElNL2pLNzVSREpB?= =?utf-8?B?dER0NFdNVkgxWGY2WEJ2YVhReEZwV2t1K2RTVll1SU1XeTNCb2c5Mk42VklY?= =?utf-8?B?dlJJVVNWSG1RZ1FtT1NtU2toNmJBc1owN3BCY0YwZHcrc202KzVHTUpRaG95?= =?utf-8?B?Z3pjY2xRWFdIMVBWTnFzQUFxa2JuLzNpYUdFUHhTem9qM2k4elNPSDFwVDVW?= =?utf-8?B?QlFYVEVqdDhSVHp0STRWaWZuRHcrWXFBYWZrUjVXVG4ray9kTFk5UDBuQ2pP?= =?utf-8?B?N1EwNXladlpuTUFLa3MvT0pYR01MYTZUWVRVOW53NHV3eWNqZHNLSHlrWXBx?= =?utf-8?B?TGJZRXZub1RqYUJSYXFoRmUrVWlYb3NmeUd0ZUN4dEVDU1NQaDB5R01YdGpj?= =?utf-8?B?MEp6QWdJNVcyTGJnM2xtekNTbmI1WVNoOVd2dXJBaVdYZmZYQ0lzU09BSkQ1?= =?utf-8?B?UmVzVk1IR3hwTFgrN3BxRytZeThOWUUzcFZ1S2N1QXphdWlOaE1sQzI5TFRi?= =?utf-8?B?NlZFWVFZWnk3YnN6YmN4RFpsWks3QVczS1BWMFEyZWc5WTUxeDJCSTVRb1ZI?= =?utf-8?B?c3lvZVZOUFdWYmh1cjZXMUtyTmFaNWp4QVNhbUtuNGlzcW1Sc2VEdDhQY1ps?= =?utf-8?B?WWN5T1R3SGY2MTBPak5MajNUblE2N1RoMmZUZVZUWEFGQ05pOXBrQ1RGbm4y?= =?utf-8?B?Nmc0d2NtTVFsSFpVK1FHNWxMTWJCdi9LSVM4WVgzLytBSnpQbzZVVlhnWVNX?= =?utf-8?B?MnBoTWVPWlFnMTFhSGxFZG1hSVRoMFIxVG9nT212d0JGbTdzNjYxMXlveEYv?= =?utf-8?B?emdyYWpIUjIxV0xhZzNYNytmNjZkUk9VM3dxODMwMW1EcDJjc2hjTm5PdjNt?= =?utf-8?B?SDdyYldwSzMxcU5UZEMyek5YSXBtRXJsRUR6WHRSOEpUYnBMZ0t6alM5SytN?= =?utf-8?B?c2RLQ0RtL0cvK3JwVEtxYm1ab3l2cDhmY2FObjlWakJPRDlGbkZoRDlBZW1p?= =?utf-8?B?SyttdzlrbjdWb0JvMDRvUk5IMXhwUjRCS3k1cEF6UnZoclMyaXZ1SlpUaTlv?= =?utf-8?B?Wk5wdjNCUU5kaGpMaXNlL3I4MXFJbFhJdjhJZnFBTlIvNHVlejJjSnVEUDk0?= =?utf-8?B?clpsVGVQY2ZZUGd4OHJ0Y0tkazlhamMvQmpRT0lFWUxLVTI3OXFIREd4L1gw?= =?utf-8?B?VzVJb3JQY2pmNVIxU3FRNDBUbkcrdDhrYXhFTC94YjZUUHlSbVI5TkVLdVJM?= =?utf-8?B?ZEdlMFJhUFZlQ1dSaWhyRnVyQmtCODZIOGxTeDI1bHluNnZyT0NCWDN6UWtF?= =?utf-8?B?YUM5UEFBdGZNWFlpODJ2NDVKSTA1NGNEb05qdzVpV3VGLzJzUERhOTFVakQy?= =?utf-8?B?RUlxTkw1eXEvQlBNT1RTRFJBNnBTUklkRjU4cHdWenhFNlFNZVdZbmJNd2Qr?= =?utf-8?B?bDV0YnNWZ2xTVS9scXJMazJ1L2xzbmEvcXd4YjFKc3dtSHpmMS9pUTVYNEFH?= =?utf-8?Q?uYVzhuNoV6PEuiw47s3K3rQnZjwtz1kDtLLmi3AC77og=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;6:KFQZLrrNRAmRVRSzAqAOCnGmPznMPHQPUD2fTRtl7dMKE0QEe39a/yn8f/S48QdGez/nBAzqOTkvqtj7O2zf2IpKQ/ub/pX6fTj5s7OTtJbZSmumVp9Zv48ScD/2Kg9091K7MsbnF0HvJE4AEQY6fwjqWjeyWTdyZggnA63PLC8VrHubd6py6uGfrBLGM/dsGZJkAeyl3C0DrT3dduw0aJo3y27cX/WPH9zEqBiv+a61ndmu4nX7ipUycsrikgJunfuJIFQ6wjRNu/hqYmXGJ0OLMfD9UmtIp0IbnynOBi7ArU4KuPXXiwsPaiPgY2glTzgnpve/wTGzDMjEpl66Fw==;5:mGwA1QNK83R9Z3BunqV0qbCiIwG6nd1hl6KvJVMlm145daQUDnQKg27twmkRwCMxMp1Jzk9NEEw0YsgmPxNHx2kWWNcb1Tncj18a2cebHPD/shxMgi8nyW02E3k8bpYh84L/RWxispkCK2MZMnpX2Q==;24:6vbHtXbsiDKET1fE5UGGC5Fq7tvb8jNRCa2FuaFbrshoM70OTISaxXa+a9pn9FQ8sW7I9DgYZX6/AOlgENyI/TogfGSefYtZm+hIqzFb1nc=;7:JJW9JZu1lY7VKudG4TE/IsU/+eE88we/ydaFc8TLLhVn8j85mek1Ns/LvDELmLKOR0kaGD66HlwYABevmxoJmCa7G8VPVs+OYoSmj+YilzcBImD5Y+Jg8HNFaPnIypT+QqsaaeYtkkuBVY/RYO2kUKU8jM8rpjxc7xmGWybO31SlMT2bbENQ9QT8AihlbIllvWrC57ThewZTaO6Yfpz4ny45ggbjNjmuLlZwsXFVz6RYcBSHi+rMcsFK1OTsUEvY SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1446;20:0X2r9PcaQf0jQ8SKr2HzuEu8cbEmRsPmYSvj64Tv0gb6bCKXFaNjtHwdc2u70X2BGIldmCVHU8Y8Y4BEXkjV/iqMLbd0TsRL7B4+5wOe1zHr+ycIr18c0tqXuhh8BTvatqm6KCp8MS3aoSUdfQkqNvZB0a5TJd7gO0XGyUuiz0icRAzONoffMSKSS4eozTFVTR7Udn2DXjJLo08XmT/g40rrq3WkuzEB9LEzuMgSORqS5H50yrRefdHeooHoTaOk X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2016 12:24:02.6778 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1446 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Radim, On 8/12/16 21:16, Radim Krčmář wrote: >> +static DEFINE_SPINLOCK(avic_vm_id_lock); >> > + >> > static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0); >> > static void svm_flush_tlb(struct kvm_vcpu *vcpu); >> > static void svm_complete_interrupts(struct vcpu_svm *svm); >> > @@ -1280,10 +1296,61 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) >> > return 0; >> > } >> > >> > +static inline int avic_vm_id_init(void) >> > +{ >> > + if (avic_vm_id_bm) >> > + return 0; >> > + >> > + avic_vm_id_bm = kcalloc(BITS_TO_LONGS(AVIC_VM_ID_MASK), > Allocation is off by one. avic_get_next_vm_id() uses > if (id <= AVIC_VM_ID_MASK) > __set_bit(id, avic_vm_id_bm); > > and id=AVIC_VM_ID_MASK is stored in the AVIC_VM_ID_MASK+1 th bit. Ah... right. Sorry :( >> > +static inline int avic_get_next_vm_id(void) >> > +{ >> > + int id; >> > + >> > + spin_lock(&avic_vm_id_lock); >> > + >> > + /* AVIC VM ID is one-based. */ > Why? I use VM-ID 0 to represent unassigned ID since we use it to encode ga_tag, and ga_tag=0 out of reset by hardware. >> > + id = find_next_zero_bit(avic_vm_id_bm, 1, 1); > The second argument is size, so this should always return 1. :) > My bad. I'll change to (AVIC_VM_ID_MASK + 1). >> > + if (id <= AVIC_VM_ID_MASK) >> > + __set_bit(id, avic_vm_id_bm); >> > + else >> > + id = -EINVAL; > It is not really a problem that can be handled with changing the values, > so a temporary error would be nicer ... ENOMEM could be confusing and > EAGAIN lead to a loop, but I still like them better. > Ok. I think EAGAIN is better in this case. >> > static int __init svm_init(void) >> > { >> > + int ret; >> > + >> > + ret = avic_vm_id_init(); > This is certainly useless when the CPU doesn't have AVIC, so we could > make it conditional. > > I would prefer to make the bitmap allocated at module load, though: > > static DECLARE_BITMAP(avic_vm_id_bm, AVIC_VM_ID_MASK + 1); > > The size is 2 KiB with 24 bit AVIC_VM_ID_MASK, which is IMO much better > than having extra lines of code dealing with allocation and failures. > I also prefer this suggestion. Thanks again, Suravee