From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636710508; cv=pass; d=zohomail.com; s=zohoarc; b=mpoancl/rXqUi4Xx6QCgHHbnsRl0imOVz32unFU0+SHF50GM49MwrSH95zISd+4gxrdSJXiFvonY/BLGqCXa5qPJKFnxKVIg7+i1hhNkgahCBCjLWF3wQZZq+KPIHlZeWGHs2JROKK8EllgCgaBchI2/DEl4NRRcSKG9yn0vKfw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636710508; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jEAtRMfNFzRIgov+4hJ20x/I/cYX3+PllG2qKjsHlbY=; b=Xt4Q9LdMjz6ZmjjqgmCmhS3tcC0cumRO2/8S4HHiyqF+uXAnLkbv7DcDioyaLkTlnWkQmBxj3A6Mb6BVVA7ZS0T2aZcG4emS+SJBMxyNQtwz6WNR1Qpq0RHEitnWyY6g8m6PmodHD3U8AXbeL/8oBVTc3Brnc6SKMa2FklN6cI8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636710508102836.6631362729058; Fri, 12 Nov 2021 01:48:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225029.388625 (Exim 4.92) (envelope-from ) id 1mlTAF-0003ty-C0; Fri, 12 Nov 2021 09:48:07 +0000 Received: by outflank-mailman (output) from mailman id 225029.388625; Fri, 12 Nov 2021 09:48:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAF-0003tr-88; Fri, 12 Nov 2021 09:48:07 +0000 Received: by outflank-mailman (input) for mailman id 225029; Fri, 12 Nov 2021 09:48:05 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAD-0003th-Bx for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:48:05 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id a168f475-439d-11ec-a9d2-d9f7a1cc8784; Fri, 12 Nov 2021 10:48:04 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2053.outbound.protection.outlook.com [104.47.9.53]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-30-N6Jqk2AONpiKWLYIPehZfw-1; Fri, 12 Nov 2021 10:48:03 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2335.eurprd04.prod.outlook.com (2603:10a6:800:2e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 09:48:01 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:48:01 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM6P193CA0144.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:85::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 09:48:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: a168f475-439d-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710484; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jEAtRMfNFzRIgov+4hJ20x/I/cYX3+PllG2qKjsHlbY=; b=XXdDAuM/ZLDjAZ6pOIRdw2qZDTP1C7LkQ5MIwmtkp9RkQ/6iNK7pHSU3fm3txh0At81unb 0HPsFEz571WmIeyyHwiPjs+/nuQlO0Isbw9nZonS7l3r2iUMmxpYtH7QvSYmGBQNvoxKcG B6fHTvBYvKRBq3+ieu59CmXHEbTnErk= X-MC-Unique: N6Jqk2AONpiKWLYIPehZfw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ia4AD7tan9M0ibR4i5R/AvAtYphDG74NPVk9FHJc5jJ+NGS0yzMVbXBNBEA0qbbIfwhVH+vdlLeCyGAw/tzvEyQyO+MmUl7kMkUpCHbs9XbxR/IwIiD5ZSGVFHPLxLRr+RcAo99zgJK8uXPT8R2zmNCL652PnBR1VRRKf3E/Bz8g/12aHuZSqeWndVLotf7HyP8afstB9+BovLZ7nllGZpHKEy6hxcT9SBPpLb3vRt90JoDL47CJthu37PRLKwMYZuoUsUff4nhGcg3+foSF79wbafe2WS/j6wkpx0s3PyarY/rktz8njux0hbc8vbGj14p26ofslinGumt/3pZ+9A== 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=jEAtRMfNFzRIgov+4hJ20x/I/cYX3+PllG2qKjsHlbY=; b=cVQ9nzNWOdB6VJXDlY0Tin/BRBU+zNcLm03Hv0/kXxIerYliPrAchRTawEiBAIA+RKTElrOoSr/6QlVrqPmdRpHAfsu0gmXj/jPw6Hl0GhwZ9nXjnROXLASMh84ICOMMJZRvGDp4dYDIUragnBksqH96EdELIW7VYj7k63pFikPYZRmXxiVf7RQgYQ+VQ8fHENHxpAwq5bIQ/AFixats6eMYbta55ycqtx7xoZqy66kSyAxqnk9N/4bVbq6T3xTQeL2TOUCl67lodHKBYpQYDDO5HfdjldrrxuvCKtXZu945sT11FSSZqrZ4DhIc3SXnULsawiTapVczna1tY0PveQ== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <242bb589-92a8-6def-9dbc-651cda71188e@suse.com> Date: Fri, 12 Nov 2021 10:47:59 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 1/6] VT-d: properly reserve DID 0 for caching mode IOMMUs Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P193CA0144.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:85::49) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d6d930f0-2441-457c-6b0e-08d9a5c183e4 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2335: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CZsb90AEBbbUKh8IaOvqnFpNkH83kED5XQ/hADwlMJHYyjYK5UT+tmDbM7RpwYBOX9QBFl5ackQvV/GZGs3GKvkRcKzWY3AJG5LbOpU+ibOnbIkJU47CXkOIurGWN8M9qSFRMo+gW83QiNfoWS3unF0f534OimR8IFY4qYhJqnyds/tJVhVuEalnP8BJAnyMjgnsAZ0mHYNNRCD4K1Q6BobZVhnIGLKvCdgGUPezei0Umqn6yjWAYLMdwLmcoEqogxJLKtQS2+Xam4dceh9eEOVpPGgF76XP4QYMuIpvXIwqMHXXWciMbqESzqdCxLiNf4EXTaZOUc2qMciN9zRVsgEFJ9kyF0P/lTny1vmoHo1pdaqccvnEZL+oQ1nC0YYeiD4ivFHlJcScNX31NAm4jSIpCL+imS/lL+hgS0k0/P+SioAHk3snphCzPtiN4uzzbp8102htRNNZQJDxDE2yFvGiNFlx8pZBE4Nzf3hLHQrnQ48sIvr7Yyl/Hdu9RxfwFGW7x896bn/TSygUoZTPxvcdIXBaadIfZWDKLTPUXT0YNcctoLQiM/mMXA+ci/rWd/3DzM62K/7FdIL1orac/eAwYiqlen6LMYdOxGtOrETLitryxbwY8TsESwkVv81L+Qxm0xr9SbrS1umkmNqL6LJVhX26BzcqcjQ4eQKkPCufVWryue7pXa0siP9+qaSZV7keskywUgsbJTnIl1g4lguPCEZB2IyBafaA1eMzZ9c= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(31686004)(4326008)(16576012)(86362001)(956004)(2616005)(316002)(186003)(26005)(31696002)(38100700002)(66946007)(66556008)(66476007)(5660300002)(8936002)(8676002)(508600001)(6916009)(6486002)(36756003)(2906002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?V3pUdm5EWkxEdE5meW1ObWowNTdSb3hzZGs2NG9uek90Y1NlOUk4azZMd3lS?= =?utf-8?B?cE9yUy9lUG81T09OVmltVUdGdnl2THdqKzZZMDdESWlSOEFTTE9XcitldjN5?= =?utf-8?B?UDJBVE9zVG1MRHorcnVNL0pnaVpqRWk5dkRvSTFrTGZHbHVJOE9pZE5XMW1i?= =?utf-8?B?cUpmNnB1Y2lMMnZHRzRQMm13WEEzM1UvenlHVDNOMWE0eUFnUWtWbCtSTWNO?= =?utf-8?B?NU9RMkhUVW1kMm10WGE3QTRaM044a1NDVkxDOHlxajRJTmo2bW14Y1BJZ28r?= =?utf-8?B?L3V2ZUJJdk5Yb1VxSjk0eStYdE5hQWcrb0h0aDQ5bU1TRGNSYVpUU3hONnp0?= =?utf-8?B?ZzRWdlJBdlRhY2JrY0xOUkx1bmdxb1NqcllMTGM2WTVjU0F1d1gvNUNJQ1V5?= =?utf-8?B?Vlc4NTlLN2lua3BPN25PKzdHS2VvYVJGVEJETW1NeVNLWnNiOHlZNVpnZGU4?= =?utf-8?B?dDBiRVZuclViN2hjdWZsdC9OOThRSjRqcXRCQjcrcHY3QnN4WjdsdVMrZzNG?= =?utf-8?B?T3NYRDNla1h4R2oycjBoTVpzaUppNVkyajJHOStoNnVnZk1BeEpUUzF0Q0xG?= =?utf-8?B?VG1SSVM4OVZXWXJSWmowb3Q4YXV1TloxVXFITHprYmhad1VKRUhoaWZJMTFP?= =?utf-8?B?S29lQnhsTVcvVjExb25HaGlUK2FzRlZSclpwL0p2OENncXdoa2FFaU5DbUJn?= =?utf-8?B?cUhHU3Y3WHY3S1UybGRoUFltazd3NTFLMVhNNGpiVFU2dmR3bTM3VC9NZ294?= =?utf-8?B?L0FiKzR5Zm4rVXJVVmlwVG9Ec1lWb2VHeDBQL0Vhak9ZYWxCaUlja3R2K2Zh?= =?utf-8?B?S1NnVDhTRDlJV0xjbTR2eXJqTnVTcmlMM25OTEdWbzl3VzM5N21sbWg0MVpE?= =?utf-8?B?WWJTU1BxRXVnaFlWeVhqRnpYL2ZwVWRaTFRzbmhqSlYxQ3Z6Y0dHdjAzaEpX?= =?utf-8?B?UE5PeUF2YUQ5TTh3RENyZ05XRVphalByLzJGa0NNNmowQzBnYlE5RDJ2eFdG?= =?utf-8?B?bzJqUFk0Mm9ibitGdWl1TFJzQ3RNRVFnbzlCN2ZycnFmM1hKdGdGZmJkV3Fw?= =?utf-8?B?NkpwRkw2NUxxSjlKVm0rZUg5dVRQdzRqYjZJVDVwYkh1R3FxYlF0S0Z2azR3?= =?utf-8?B?cmhJSFdsOVMxekVRWDh4QVQxRGEzVi9SVGQ2Mk5rc2hpTGtKcWt1MEZ5ZWJr?= =?utf-8?B?L2QyL0N1dGV0Tjd6VUZSeTZIUms5eXRLazdBaTdQbUx4VlgwSGtzZUMzM1k5?= =?utf-8?B?N1RXQ2R4MkhnaDhWd0NqcDk0TVBSQ0Z1RDRnWSt3TUZvL0txS2EzVStGdm0w?= =?utf-8?B?RkIwRVdjWlp1UUJhZStyY3FHbWxicXJ2TmhuZy9CVmR6b0MyTjEwaWVBUkUy?= =?utf-8?B?bFh2dU5nbXk1ZUgxRmtsQ1IwYStqYmw2eVRGNVBTUjNHQ3lDbnJwOHlFMTZa?= =?utf-8?B?cTdVQjdUQzhKaUJQUDVONU95anZPNHBYMTVGK1RITm1vdVNIbjd2U3NzWmEr?= =?utf-8?B?RGhWZmlSVVlHTHBuaTZ0VEx2RzJUM3FJS3BYUnEyQTdXZktvVVBQeWgyOS92?= =?utf-8?B?cUVMbkxVRnZ6azRObFNubGxXMlZFbWlIb3hxd0Z1ZjJaYVJ5Vk5iK1J1TFAy?= =?utf-8?B?ZThqWFUrTHA4SkEwSkliWitVNUNwdGp1MlFQR0p3MkR2MWRKL25xSElJRXdO?= =?utf-8?B?ZzRqaVJ0QXpBenh3N0lOQm9hUjVyZk9PbUkrd05wN1M0NFJLYmtRRkJSS256?= =?utf-8?B?UE90WU5iYTA2TEN4UjRad3FMUVpxRXFDd01Xczk1ODZrUEYvRkhuYWpRRFRW?= =?utf-8?B?dVYxbTJOK3JsMmgzTHh0aWNpcDFlT0tJbGwxRzQ3NEk0YXcrYzNFcFNIbjRq?= =?utf-8?B?cnF1aFZiZnJtMS9OTlZNRjJGMG56dWd3b1VyZnNydW9JdUQ0SHpSSHc5am5I?= =?utf-8?B?ak1vNGw0VS9CZ3NPcnJGZDdWOWFFTlhlTDFRZHhvSmw4WDAzZEdvNlZtYWx5?= =?utf-8?B?YUUzVWF3RmNOaWdNNWo4dy9wSVcxdG5DN1JIcjRhVk01WE5XcWQ0bFFveklQ?= =?utf-8?B?M2s1djZ2bUxsU0c4a1M2ZGtsSFdlZ1ZmMWpHRERTWGRtTlYySjcwZVlpcGU3?= =?utf-8?B?Tmg1ZmZpTHN2ZGh4L2xodUNKWjdVVGZ6MEZhWTVHcmFwZFNQNk1RNHBML0Mv?= =?utf-8?Q?i3nqfcH3PQ4yrZGxchGq9LI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6d930f0-2441-457c-6b0e-08d9a5c183e4 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:48:01.1221 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Qsju1HUcYOrpY0U0zvZpdd4ozh9Wxi8YgViBgeQ52M5vH5IU54XMCxdY0QnOwW9lM9gvP6QvR/oVLSl1EiEgTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2335 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636710509938100001 Content-Type: text/plain; charset="utf-8" Merely setting bit 0 in the bitmap is insufficient, as then Dom0 will still have DID 0 allocated to it, because of the zero-filling of domid_map[]. Set slot 0 to DOMID_INVALID to keep DID 0 from getting used. Fixes: b9c20c78789f ("VT-d: per-iommu domain-id") Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian Reviewed-by: Roger Pau Monn=C3=A9 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1257,16 +1257,19 @@ int __init iommu_alloc(struct acpi_drhd_ if ( !iommu->domid_bitmap ) return -ENOMEM; =20 + iommu->domid_map =3D xzalloc_array(u16, nr_dom); + if ( !iommu->domid_map ) + return -ENOMEM; + /* - * if Caching mode is set, then invalid translations are tagged with - * domain id 0, Hence reserve bit 0 for it + * If Caching mode is set, then invalid translations are tagged with + * domain id 0. Hence reserve bit/slot 0. */ if ( cap_caching_mode(iommu->cap) ) + { + iommu->domid_map[0] =3D DOMID_INVALID; __set_bit(0, iommu->domid_bitmap); - - iommu->domid_map =3D xzalloc_array(u16, nr_dom); - if ( !iommu->domid_map ) - return -ENOMEM; + } =20 return 0; } From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636710520; cv=pass; d=zohomail.com; s=zohoarc; b=EC/lVzMKAOkaN/ViUzpTHEIgaI4bwfehrSXjID+osnIWO0+dHkBS7B2VDVuEqUxObIRbRwb6sBVVf0efF+Ozbwk3xLZxDIlDXunmUfip2ohxcit0UMyH6w0qMCw+6PrN1+IdFEYNsEgwLmimV9VTpSWpfoxOHhPA1m4Vp9V/1R0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636710520; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=T5pPKnQj5UnvBzgr+/BnzNrg1H5CCPhXELs+pod4pwM=; b=OI9L3AfNyo8xVn7diITNWfJsOErC+VIGvjTlL3BqknYwJUbdE2Z0jWdELsr/N/dMAR+/vakvrO9m3CLlsMDEjolLydmMA9YQd0MSMtwTTwivBtNiaRVTCpKw4HgoZMlT2S9G8Dbf7NJ1aCskr4Ka0hhZ+TAWI0lZA6KXvKtrlz8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636710520197965.3467543183363; Fri, 12 Nov 2021 01:48:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225033.388636 (Exim 4.92) (envelope-from ) id 1mlTAY-0004Nq-NX; Fri, 12 Nov 2021 09:48:26 +0000 Received: by outflank-mailman (output) from mailman id 225033.388636; Fri, 12 Nov 2021 09:48:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAY-0004Nj-KG; Fri, 12 Nov 2021 09:48:26 +0000 Received: by outflank-mailman (input) for mailman id 225033; Fri, 12 Nov 2021 09:48:25 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAW-0004Mh-VE for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:48:24 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id ad45fad4-439d-11ec-9787-a32c541c8605; Fri, 12 Nov 2021 10:48:24 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2053.outbound.protection.outlook.com [104.47.9.53]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-4-21gbcw4IMbadGv0vIOpLTA-1; Fri, 12 Nov 2021 10:48:22 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2335.eurprd04.prod.outlook.com (2603:10a6:800:2e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 09:48:22 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:48:21 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM6P193CA0140.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:85::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11 via Frontend Transport; Fri, 12 Nov 2021 09:48:21 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ad45fad4-439d-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710503; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=T5pPKnQj5UnvBzgr+/BnzNrg1H5CCPhXELs+pod4pwM=; b=nnc/ZZVHblZUH+5Ak85NSW/KjpPwnAKvpyH9HR+Md3zDi6qA7d3dSBubq2eQ6lSxkCw00C KpLmpJe6tuqA0Y1bo//ecx6LXlYj3vkaOuqpcsKbrItis2I+xN+CMaKWkndNYSOkTnHyHB HnnY7p7+PJuQRR2QJCApVQUTrqV5haA= X-MC-Unique: 21gbcw4IMbadGv0vIOpLTA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H3i5GW2NsHkETFrxaBkPtaKNrEWKlGhAg38I9CiOpd0oJgnM5jW3fe/rLpAKWairhKz05hvF37NkdE3uAYYZg66dlbPO2w6ueWGWCDg21WbUwgvF7rnyS2p/stl7D4xI157tZ5g3EraI3C1nxvCeUUmFmLch0Wmppc1jJzIu8V/BqqrguOiqTt97CK6k+qNR6OGVXspJzo7K/W8kGQIAXtrXTFBS3fPVpsMut7svhbbC3KfFhzrEDm5CQLj0RTKRmiVctBb4FKXcBrx51wKtp9nKTdzudRZlD/Jz080dBs1Nvhz5TTvYzt0ZA4Ct8eygxpmqDm4kUcc0jUJtFQP+Ag== 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=T5pPKnQj5UnvBzgr+/BnzNrg1H5CCPhXELs+pod4pwM=; b=geLzZO3elEL9b+3pKvqtTK2qVx2jvrFspBurMVyPK5vlZ4mmG1DyeSmMRtdKQje8FSz4LphE3IYjUKFsrOV5htGAu95RQw1NAWeHVtK4NH7eYiY2wxZ6ZMFM+Br4V3IkOKRhQ7zva4bQ5TqBVw7seIHL7pejS+OG8Rpy6X93xyCKb3JBzdj2FcomMFZTRAjALFDR12uAVy7/kPwh5U7t4WAgf+O3RN1ofP3MfUHWZ+6S01Vecvx+qR4JBOttTVpl7NyNdy2SWLS/ofmeloAfIeFh8rlI8Law3/q5U9IeyWC+J1XNEbTa2jwh/fD+99WordEelyMZzfxoBadBhcASPA== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <57c32156-369c-a92a-ecc0-fc4b890eb05c@suse.com> Date: Fri, 12 Nov 2021 10:48:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 2/6] VT-d: split domid map cleanup check into a function Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P193CA0140.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:85::45) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 050e1c80-c7f6-4b28-fa86-08d9a5c19049 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2335: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xMs5D43AUuEv0aRZ04rlnggXcFl6w96gzoiGF/SPBtgHqE+uqu4mQUM8lfdHfUKIl36pRG2TN6Df2ONGtrD4+3Ay+Em5E8mpJVCwX+WqUsUSQ1ZRLgQWrr6XlSFddWkMyBJKOM2Fmq7phrlBDi+udikS/aLhO5jIZAx/T8IBkVw2V1+C3A2pTGzpZUHXrmD1Jucu2wpRFdP+wjY19+uQrvWKUi35H28wQpe/6sOUfLXhEYacgRcCaPVC0NJKO7n+SffW6g00UL4Js+2HH5zFyHpK9hLwFuzJhIlv3vOmdSF44BEYhdIyuIJdwzvm7T5m237PBpKjSOFyVg+B8d/wXImN494Hj6XC+nkEBZ5IoYC1leTcllDDgRxLO2H3vNFMx2bd/9r/S9bKFvBxJCf0sGXCq0k2CnoZMDXh2D5pj1lPDb2PcokQEGox4TDhaW1rth+WSigk4pySigcprIhHt5zxHlyIn/WF64Prv5Ympg/rSsv8vQoFYsragt1/8yAF6Cx1+FNW1KQURZtMB2ohDr8AQm6VJTarulln4ymkG60cZsnfM03mVE4+ZDIRQrcd0RTX2jIg+Nkxp/aNaIWfo/0vR+GJ9OvKZJiqqL41VPJJv4SBqPj07x6iui5p2FIP0Z0hmSqf3xyZ1CbFkW+0jRZbXnEGABDodpfhjGwm5Md/jvZHPuVwRAf7UCDwAYabT9Nw1V8t4Ls8THPDt7OV1DFkoATSDIvjvaUVTyrdAQg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(31686004)(4326008)(16576012)(86362001)(956004)(2616005)(316002)(186003)(26005)(31696002)(38100700002)(66946007)(66556008)(66476007)(5660300002)(8936002)(8676002)(508600001)(6916009)(6486002)(36756003)(2906002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N04wYXRBQ2VkQnVzNlY5UHZjekh1eWdWM3M4Y1IwVHRsdk1RVTZySU1qQzFn?= =?utf-8?B?ZlNEc2tBdFdsMWRrbGJGMlJkL2JJaDJ5bXN5VVMzTGpja3FPZEZOT2JDWU1C?= =?utf-8?B?UldPUHlCcWtwNVcrRUVHMVliS3k2aDd2dGcyU2YwUG8ycWJSMWFnVlBySnBr?= =?utf-8?B?SFZGZEppb2lSOFcwdTAwUTlUQUo4SDZqN3oxcm1Jekw1bjZHM29OU3NuVlY2?= =?utf-8?B?NkE1OHBueGVCOVVJNjdmUElBaDVEVzFvWTBhNExuWXI1TWtPNkNSYnJaRzF4?= =?utf-8?B?dkwzdlQ4cTA5Nlg2ditwUXQ4ajNTQ2dtblJEY3IyRFVtaEZsc1hpdHN3MjF1?= =?utf-8?B?bjl6eWZpNFk1U0JqNU9ZMWxWbERYQzgrVkNlSXlCZW9FcnBqLy9CTTJUVzBj?= =?utf-8?B?R0ZWTHVFazBRR1NEWnh2WTlvM1FxUWlGVTRIeERMVEhyNkEzNEdnZ2N4M3A0?= =?utf-8?B?VEV4dVF1eUp2a2VRQTZNR09HSkQ4RTVlTTM4WUV5SVRMUUt2Q0YrR3M0RS94?= =?utf-8?B?c05FSHBVUmZLY1FNM1l6MS9rWEZUSHkzanVGVHhDWTdNcDFPbCsvS1JWWkhM?= =?utf-8?B?b0VKUVVWZDF3Z0dPczA3ZXBVWFNmaFFHd1A5VndQSUFiU1BZOVFXVXdXcENt?= =?utf-8?B?dmFwb0V2VGFyZDIvWnFjRnRyb2JYWjNzQmpYS1BQTlVZRzl5VE5rVE5YdUxy?= =?utf-8?B?ME9GTVpWQkRuZHpqUmR5SHBYWG5WRGw2cWJXN3pqbnp4R1hNZ1VmWkJlb1VG?= =?utf-8?B?SEZoSzZUWUtWRHlhTU16OVpkNEQ5V3pDd0ZLaEhabGRrZmE3OGFZRTZqcXdp?= =?utf-8?B?cUhhdEJJZitUaWxFSWZINUxtRjRkTHdFZFY2QjB5ci9ZOGFpZkljOGF1eUh0?= =?utf-8?B?U3ViZG1Rek5EVjBVeFZXWUc4V3JZRmVUN2lMYm9VY2dUbkp1QUFLYmZXOHdW?= =?utf-8?B?dmhkdHhQNWphdEx0UitrQ2RySC9pVmVWSldPUzFlUkQrMUFFZ0lNNm4zR0dM?= =?utf-8?B?dWt0Z3YxdThUMmJaSUt1YUVzUFhuREJaREtZZzJ1emJVNEtVdEQwMHc0Q1V2?= =?utf-8?B?TzFkQlo0QkZmbC8yLzdGVW9kNVdjRUNScXF1OUVSNkh3dXM0QUl6UkFhTzA4?= =?utf-8?B?NmFIenFoVzA4d3EzcEdyMzZ2Rmh3K04vYmlSTlIrVzJSU2ZlQWROaGRaeDh2?= =?utf-8?B?eGRVMkdxdURrTDR1a0NpTTNOOGhjaG9kV0x5Y1A4cjFxWm1DaXB0TXNjcXJG?= =?utf-8?B?ak5JWExpa0lwU3QyZkZjSFZ3MGZkSHI4ZVFDVW52SlRXd3k0cWIxNEJwaTNp?= =?utf-8?B?TG9XT0RuQkZHOHM4TjJZZmlaNjBQYTdrNHRNakErb1VGZ3VNT2xlL1F2b0w5?= =?utf-8?B?TWN5VXFuSjc3ejNKUlpoQk9MUUtoOWpQbitrSmpOd3cvRlNVVk51b05aK1B4?= =?utf-8?B?MllhRUYrT2YrNVlSbkpVQTFSTlUyTFBtMVFyRWtaTHNyWk83NTM3b2pjOHpk?= =?utf-8?B?dlNzYmhkdXdpRDdmR1dTTWM5aGVXdnpSNE9uM0ZqM1pOQW84S0VrWW8rY3RU?= =?utf-8?B?azE5bDFCUGxxL0txblpzb0Z3Ny9ZUHpxc3RFOXZmOUtLNGMycm9id1hKTERy?= =?utf-8?B?RjdnMWJ4MnJwOURPRjdFMTM0WjRscEtFczN3UFhFeTNua0N3anlNWjhjSjZ6?= =?utf-8?B?N1ZRa0I1OS9VR0xCNzVlM2RUK3o0SUFKQWpOSURJZENhVEpoR0RjQ0Q2VUt4?= =?utf-8?B?ZHF4aVhicTM1OTdGalgzMisxNVQrSGk1emNaenAzV3ByMVVnd3dlbFBZYzNp?= =?utf-8?B?L2pFMDZMRzRHUnVNOThGTlJ5TjM5MUZnei84R1VnU01XZnc5NE1lSmtUOHhh?= =?utf-8?B?M0loRW1wVVUyc0tzWllHc2hvWUR0M1plZkd1emplN1J0UmJEQXNJR1VBamh5?= =?utf-8?B?QWZIc0xyY1FQbmdFMFZWaDlFSXRReUtOb3ZKZ1Q5Zno1K1pIUVUxMFVwY1ZR?= =?utf-8?B?WHpTL2picDdCMUhnOFAvbFpPUXhhWkxYS0hjc2xxMW1XcGNhdFpMTXQ4a05m?= =?utf-8?B?dmlrakxWTWxkNDdnOWpzaVFSTHNYZWFZOUFBQklTVGRYWmsxQkwrSDd3c1FE?= =?utf-8?B?ZjY3RjNreG1GZjl4bFhZeUtFVW9MU29ERjBLbDVoQ0FrbmpwUHYyT1M2c3ZN?= =?utf-8?Q?YFAa9b1QdbZacaqedLucjq0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 050e1c80-c7f6-4b28-fa86-08d9a5c19049 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:48:21.8863 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: S88J141z0536St9f1ChgWjQUBW2GftoxH80TwBwLVh+BFROxVB6IAJC1QlhwoA1oYj/fgBfbJ82BP5G4vpguKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2335 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636710520942100001 Content-Type: text/plain; charset="utf-8" This logic will want invoking from elsewhere. Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian Reviewed-by: Roger Pau Monn=C3=A9 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -157,6 +157,51 @@ static void cleanup_domid_map(struct dom } } =20 +static bool any_pdev_behind_iommu(const struct domain *d, + const struct pci_dev *exclude, + const struct vtd_iommu *iommu) +{ + const struct pci_dev *pdev; + + for_each_pdev ( d, pdev ) + { + const struct acpi_drhd_unit *drhd; + + if ( pdev =3D=3D exclude ) + continue; + + drhd =3D acpi_find_matched_drhd_unit(pdev); + if ( drhd && drhd->iommu =3D=3D iommu ) + return true; + } + + return false; +} + +/* + * If no other devices under the same iommu owned by this domain, + * clear iommu in iommu_bitmap and clear domain_id in domid_bitmap. + */ +static void check_cleanup_domid_map(struct domain *d, + const struct pci_dev *exclude, + struct vtd_iommu *iommu) +{ + bool found =3D any_pdev_behind_iommu(d, exclude, iommu); + + /* + * Hidden devices are associated with DomXEN but usable by the hardware + * domain. Hence they need considering here as well. + */ + if ( !found && is_hardware_domain(d) ) + found =3D any_pdev_behind_iommu(dom_xen, exclude, iommu); + + if ( !found ) + { + clear_bit(iommu->index, dom_iommu(d)->arch.vtd.iommu_bitmap); + cleanup_domid_map(d, iommu); + } +} + static void sync_cache(const void *addr, unsigned int size) { static unsigned long clflush_size =3D 0; @@ -1675,27 +1720,6 @@ int domain_context_unmap_one( return rc; } =20 -static bool any_pdev_behind_iommu(const struct domain *d, - const struct pci_dev *exclude, - const struct vtd_iommu *iommu) -{ - const struct pci_dev *pdev; - - for_each_pdev ( d, pdev ) - { - const struct acpi_drhd_unit *drhd; - - if ( pdev =3D=3D exclude ) - continue; - - drhd =3D acpi_find_matched_drhd_unit(pdev); - if ( drhd && drhd->iommu =3D=3D iommu ) - return true; - } - - return false; -} - static int domain_context_unmap(struct domain *domain, u8 devfn, struct pci_dev *pdev) { @@ -1704,7 +1728,6 @@ static int domain_context_unmap(struct d int ret; uint16_t seg =3D pdev->seg; uint8_t bus =3D pdev->bus, tmp_bus, tmp_devfn, secbus; - bool found; =20 switch ( pdev->type ) { @@ -1780,28 +1803,10 @@ static int domain_context_unmap(struct d return -EINVAL; } =20 - if ( ret || QUARANTINE_SKIP(domain) || pdev->devfn !=3D devfn ) - return ret; + if ( !ret && !QUARANTINE_SKIP(domain) && pdev->devfn =3D=3D devfn ) + check_cleanup_domid_map(domain, pdev, iommu); =20 - /* - * If no other devices under the same iommu owned by this domain, - * clear iommu in iommu_bitmap and clear domain_id in domid_bitmap. - */ - found =3D any_pdev_behind_iommu(domain, pdev, iommu); - /* - * Hidden devices are associated with DomXEN but usable by the hardware - * domain. Hence they need considering here as well. - */ - if ( !found && is_hardware_domain(domain) ) - found =3D any_pdev_behind_iommu(dom_xen, pdev, iommu); - - if ( !found ) - { - clear_bit(iommu->index, dom_iommu(domain)->arch.vtd.iommu_bitmap); - cleanup_domid_map(domain, iommu); - } - - return 0; + return ret; } =20 static void iommu_clear_root_pgtable(struct domain *d) From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636710542; cv=pass; d=zohomail.com; s=zohoarc; b=IsVJ3lpfE48eEHnVdyjwXRE/Soq7Hwjie/+FbXmhTPXxJxaEztfqrn6Tag9YoWjawAjHCkVH3+UbfhEu5aogPVGDlTIVCqfwwfOsqF/QF0HxxL1hqLEz1muu2E9LDvHhJ4As8VgPSOqxjkZDiTZFhthmWOV5c52yQ7XI2vBkFmk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636710542; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7FtwyADRDx+mGc76WSsZhGw7jgd3KL9ZVlpKovmy4Q4=; b=OciWSuhIgyVTM60R1QBOq6wtnQmsDJKoivaL7I4hP1j7Iit+cbsEFcqJ/if7xcFX2IeuNXVbkR6wymC09NV07sx7xv5f3xJU/Gfwydo1fMHta8mtgXPxz5NSVuwkTzpgCPQeTWm0J1Dr+59HY6YHwvDM9T5H3eiIhlxtceVKKTQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163671054297526.66564482837498; Fri, 12 Nov 2021 01:49:02 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225039.388647 (Exim 4.92) (envelope-from ) id 1mlTAv-00051e-1W; Fri, 12 Nov 2021 09:48:49 +0000 Received: by outflank-mailman (output) from mailman id 225039.388647; Fri, 12 Nov 2021 09:48:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAu-00051X-U3; Fri, 12 Nov 2021 09:48:48 +0000 Received: by outflank-mailman (input) for mailman id 225039; Fri, 12 Nov 2021 09:48:48 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTAu-0004Mh-6l for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:48:48 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id bb51e27c-439d-11ec-9787-a32c541c8605; Fri, 12 Nov 2021 10:48:47 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2055.outbound.protection.outlook.com [104.47.9.55]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-16-dBZ6JrT9NTOwvvUdyK3rtg-1; Fri, 12 Nov 2021 10:48:46 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2335.eurprd04.prod.outlook.com (2603:10a6:800:2e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 09:48:45 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:48:45 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM5PR1001CA0042.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 09:48:44 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: bb51e27c-439d-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710527; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7FtwyADRDx+mGc76WSsZhGw7jgd3KL9ZVlpKovmy4Q4=; b=Vqs6MSUVe1p1BT44ln/TsWvA+xNe0hDM8MyRJflc99xxzR9zZF5ZwqoJ0wE25ju3m9RBwH sl5elpeVhwNVGNQfsZOJzfns9Mecx6GaN2Hbm2xMHlSY7j5Q9dkUE74kyMxZESD/eEpB+D ZUlc8npyq10i0/HfHWbFfIvQeZRynrU= X-MC-Unique: dBZ6JrT9NTOwvvUdyK3rtg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z4DFr5BKmlXnAyIJG/YHcSUdlcRfbVNwW3lu1qkivLxFuxIUfIJVidYPvVuvIvZzCVxbXgRA6Dp3JosJYunXLsALnJi27hqmhFrndnxTx/32ykoqWOBCKUNCB+GGN/3t5XXepC1/13tDuKv9yHkwKRA7TkfB6gtQb+x7deDcsDwBVNdjW4bzKZW8goHEaN7rYj3u1V0POvWO8cVQcbZuP6eYonI6c8QlOYbPJt2Yj/AdOKI5g5oyWoBA6UWrz3N9E+PlUjH6vXIg9y4mc2cXrHSA471aPVY6AIw6ZPqfBT9Of3Lylb69/NrOkEYFqjsr0Fn2U+MFNnhkzvbBj2A8fg== 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=7FtwyADRDx+mGc76WSsZhGw7jgd3KL9ZVlpKovmy4Q4=; b=RJozYg7RCivIdFs94DHiSK8ApqSIl2dR28dwAcPtE4CfTN+M8mKCUqYyixjHuWYk4Ki/bKm90vLysJdSYHdQ8kE/mLG8RFeOdhZ63t7kuIjckZq/K0ho8E5uaHVt5jUT+0TVjXrfeUaeTMv4hyi04RP3Ned9wU89leM14cmkIAd3fwc8/sH4qWOjn16fzfJiCgXn8nXa/hEfB0Nwmz1dUg0cOSNx6cU7ERMDqgjytJ1s5JD3wsUVXB0MnTqJmDuV+KsEQykwWiEpHN0stll+jsiNT3S8w30HJbikpDtkCS1T17cVdOOoJE8dpeb3IrvOCjArcSNGL7nX06OUo4I8Pg== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Fri, 12 Nov 2021 10:48:43 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 3/6] VT-d: don't leak domid mapping on error path Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR1001CA0042.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::19) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 08fade5c-8977-4cca-4029-08d9a5c19e2d X-MS-TrafficTypeDiagnostic: VI1PR0401MB2335: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:639; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ddTZL7lK2pZfRou+xY6cP8jdZdR6zJ2Z0tMoxvccI+38+hvFDfFFXajAXd0sr3wcWe2dv0b9za/hiq7ofBIegU95fZwwoOvFFvaHYoyKAqs9I9ubZOIFFAGwMIXyocyzccvw3N9ue6e07r4DcnukhyDorgWymZqZrdXr+iIAmAPm9FLDpFfULcJmJik+NQ0nmcIX0Npy7Gx4Ak1bjBy7WNSAFe/l7XRiY82osLf7SBB/2NSGWELHpZnJWQa8ljKQWPrUYOWdMVJOECxeZxHFO7vmcldIQJYWhd8H/p5+2bzVNIO6c93JMT14//A6h+4cPkBiCemAA/5MqjlOGZcGVjtIe+p/GS9dWyK+hHiYw+oROO69Cqfi+54Y4dRIYoc6OOD/IsQFLSim1r/tMOM3AGbgfjxldPv/1DJTZ/jq442JJqDvn0zMAL3vtiXow7W8JVGiwyX4NMvI7NFDiM+6aRdkh1c5ujYMsub3nl9snkqqyRQwLNaONnliNql8nCMh6naB7M549CDZrHAvRVo9tamZHkVG4qKzLNCLK7b1ZFW35AgUAegh3opDWssM2ZRNOQgUgUTrTw0JcX0zYWhhnP8IJtDyYQVpU493i/FHJi17SEsoUGOOkG+qVLY3qlsTEa6fus4oJghro9ln97Dhgd8+kDcbVkjt0VAt89Pus9FlB53MAYLT9hHkgiUsRdfaM+7gg2v+pNEhYMQaDE3xGeKzn6iY/5DVswgyH2D4uPk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(31686004)(4326008)(16576012)(86362001)(956004)(2616005)(316002)(186003)(26005)(31696002)(38100700002)(66946007)(66556008)(66476007)(5660300002)(8936002)(8676002)(508600001)(6916009)(6486002)(36756003)(2906002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZVpjYTB5VU9JK3BaSmh4OHkrVlJkUFcrTDBxWmlrTDdJQTEyamZIYVdJRWQ0?= =?utf-8?B?UDZJYjROMHg2Zm1ITG5tdHllVTRhM0VicXV1MXZDNm1ZSEwwT1UrMXdaZm9z?= =?utf-8?B?ZEJNNUpWODlQWTlsc2JRMVBodTdEcUJBMHRTeDgxVFU2eU8vNHVXR3Vody91?= =?utf-8?B?NUxvK2hBa2M5WTMySDYxbzNTQjRXWXNzcDh0RW5WTDBxZXR4dk51YTFQd3pz?= =?utf-8?B?U3F1L1hJUzk0TTlBQ1c3bE9pekVUSjFreXRRbUZlTjQrcFNxU2N3bWttSEZo?= =?utf-8?B?TkxnOTI2WGpFb2h1ZFZieXdGci9qMngraWVtRlBTV0NnM0lzZ1NabkV1NVRj?= =?utf-8?B?RVZnSUVvOWpSWnpuM1owdkpYT29SYUtTNTB1eTB0Y2x3RTFjVDk2VzRnOWoy?= =?utf-8?B?TVFQdFVpYXBhVmpwQks2dlhHSkdYbmJJclgxcnNPaGpKV0NLRGxtUkVxMFhi?= =?utf-8?B?VUJ2SWRjVkx2MVVQdndIMEhXblVEK3pudlBmWjJTazlWbzk5SWtqWE5MV0FI?= =?utf-8?B?Y1llU2tucnVSNXdscGlaN2x2aWgvL0syK1gyWXZNU1NzeEZSMmk3SXJQL1V4?= =?utf-8?B?VTV3RmxvbktITk1nYlJtd3VBMVhFUkNGVFFzWGhBQ2s3OEJBV0JKbDNDSCsr?= =?utf-8?B?OEVZMHViWkpWWHNtTHZtUUFWbWEzV2pYU0V3L3gxVk00ZVAvSzNwSmlUMElz?= =?utf-8?B?NURzakFSSzlzVmFpMS9maC9SVUE0aWM4MkJQeDlxd0FYTjcxYVNGWDExT1hZ?= =?utf-8?B?ZmszSEpGR3loeGpSWUhaUGxoeFV0NFlYK1p2ckVycGtDVEcxRmtSRGI2OUgw?= =?utf-8?B?QzkraEg3SHo2ZGpPSVhhYWRVSUtjY3IvbEdHR3VzTTRHOWNhZGFTMnFpUGNI?= =?utf-8?B?bEpmbnRaOWZhSnRyWnB3TW83Q1FNYWN6d2c0ZmJIY0hESDhDcjNEdkJMV2ZF?= =?utf-8?B?NmEzd3AxVE1GTi84bWlYdDVFNk85U1R2MWNqUmZ4Nitxdm9XSXkrWENDcm91?= =?utf-8?B?QUFhWnRzRkh0MkhESWEzZHMwVWtRVDU0UGxNSzl1OCtPeXArcFNoUU1RRnZh?= =?utf-8?B?dGx6YnVUcHdLMWozZXArV01qNWxhMGJUaTBZRGl4Z000ODFER2E1S0cyeXp5?= =?utf-8?B?cFA1NlYwRGdZRDJkbFBkZEVzR0N0bFgvemk4dmltQlNlcFhuWEVnNkF3cGpw?= =?utf-8?B?VlFGVmJidjBxRFB5eVY3c3VHTnppRXAzeFdZTnppNTY2S3NiVFV5L0pJcUIv?= =?utf-8?B?ak1TUHZhYS9lUGVqMEowVEtFdzBOMkQ2NWgwS2paaUNMemgzbnpjdENuY1hr?= =?utf-8?B?VXFPYUQ4dG15ZVIzbWFiZjB2QTcrMTcrYXlBaVprc3hrR0ZYVFVuMFVRM1Ax?= =?utf-8?B?RVlrdi9heEhYTE44T1NIZ1l4VnBhNk95SURoako0elhibWFjbWZXRG9yRnpE?= =?utf-8?B?WTJ4VGRLSHFVR0h2ekx0RDJocGRqeThlbTVkWk1pd3krN2J6dHpiV3hJdEdq?= =?utf-8?B?eS8vRHBMOU1mTWhZamRSYkd5dnczdmttSUJQOE5XSVBqTldNUisxODJ1bEtL?= =?utf-8?B?SXpXejIrazlxQTRMTkx5UTlEM0hGSWcrOGEwRVlaMzkrcGZMc2pzdHFaazhI?= =?utf-8?B?VnNhMFhJSkN4N0RXQmdVOEFyRXZRc0pKVlI3blBzc0V0QWVNVzFiSzRFd0hN?= =?utf-8?B?RFdqUW03TDdyNkJDdmxaVlFGVDJCcUowaFcwU1VBMThvUmZRK0doV2NCcGNM?= =?utf-8?B?dmdZMGtVU05ZbHJOQld5LzJwaXNlUVBWM21mQXpzajRFNWs1aXpKR0VUTWxU?= =?utf-8?B?SzEvamozRVlGRGtTSHB5ZkszZ2xSdjViaEFaUmcxRXZiS0hDblhHa3plM2w0?= =?utf-8?B?aGhlSWM1UWExMXJFQ1M4UGY1MlZFd0ZqTTlleHp5TG42aEFYZ1BXTzRERmFS?= =?utf-8?B?OHEzTmV0VUJ2QTB2Y2gwUzdWQ3pGNk44YmR2Yk1nTDdkSXVuclhrTWl0NWRz?= =?utf-8?B?aTZ0SVhkamtoVWdPd2wxTWI1a2xCUlVvdnJ2U2hDbUh2Z1RlajUxSkpTcnB4?= =?utf-8?B?VTNkOXU2cmxyR2tpaUZGRGhlYUlVOFhqUlBEdTlMelR4b1lUWlpKN1V0cUt1?= =?utf-8?B?dFU5MCtSZXROd2NuUWU5bndxakw0bDBMN3p5RldFU2VJNUsydy9MdFcyY0Ji?= =?utf-8?Q?vYmrpZRbgHG++CHSBsw2buU=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08fade5c-8977-4cca-4029-08d9a5c19e2d X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:48:45.1732 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dOymVuW6wZ8cwDZpJSwSYwMbDmLoGpEdGBkkmD+RahwYN0dIo4+VdPwvkINE51AG1eW/LXnMzJFZapw80eP/uQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2335 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636710545105100001 Content-Type: text/plain; charset="utf-8" While domain_context_mapping() invokes domain_context_unmap() in a sub- case of handling DEV_TYPE_PCI when encountering an error, thus avoiding a leak, individual calls to domain_context_mapping_one() aren't similarly covered. Such a leak might persist until domain destruction. Leverage that these cases can be recognized by pdev being non-NULL. Fixes: dec403cc668f ("VT-d: fix iommu_domid for PCI/PCIx devices assignment= ") Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian --- The Fixes: tag isn't strictly correct, as error handling had more severe shortcomings at the time. But I wouldn't want to blame a commit improving error handling to have introduced the leak. --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1518,7 +1518,12 @@ int domain_context_mapping_one( rc =3D me_wifi_quirk(domain, bus, devfn, MAP_ME_PHANTOM_FUNC); =20 if ( rc ) - domain_context_unmap_one(domain, iommu, bus, devfn); + { + ret =3D domain_context_unmap_one(domain, iommu, bus, devfn); + + if ( !ret && pdev && pdev->devfn =3D=3D devfn ) + check_cleanup_domid_map(domain, pdev, iommu); + } =20 return rc; } From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636710575; cv=pass; d=zohomail.com; s=zohoarc; b=Or2eqNOs2ZWuakk7FXIqfDDHv3E0q1xHbHmxxRkhdylZIbWdRnKRZdsgbNeZeS5vTjMbcM+XG79vC1PHTl5wqQbMwQGo9Jp92pjdOJS8R0XfjCdhlK5NCRNnRQgOx+BF9gjJ5YXqnKw4FkcBUyvHA5mc1lE9VOR0gDF36SaviF0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636710575; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AF/Vb7ed9I59/XJgr3zPTQZWriuA9PRohF+C+Aac0+I=; b=l9eXO3QeuguEFeK18gKovOk043DQ3Ii7B33IVtVDRtQVPHoKGGuamKJwdRU5j+GxDL2O+GQGsbNFEy42Jy4572e94ZMmq1qe+T50+ixkeZsUPJR7+U0iPnJ2afCJCqGuGR/4pwcf4s156TwBSQYOY0FpeMGRe9NxzLJY0emYDYU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636710575819816.1604462983915; Fri, 12 Nov 2021 01:49:35 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225046.388658 (Exim 4.92) (envelope-from ) id 1mlTBM-0005eJ-A1; Fri, 12 Nov 2021 09:49:16 +0000 Received: by outflank-mailman (output) from mailman id 225046.388658; Fri, 12 Nov 2021 09:49:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTBM-0005eC-6l; Fri, 12 Nov 2021 09:49:16 +0000 Received: by outflank-mailman (input) for mailman id 225046; Fri, 12 Nov 2021 09:49:14 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTBK-0004Mh-KE for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:49:14 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id cada10d3-439d-11ec-9787-a32c541c8605; Fri, 12 Nov 2021 10:49:13 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2058.outbound.protection.outlook.com [104.47.9.58]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-5-52YRadEmOyCYYlQMIy1OCQ-1; Fri, 12 Nov 2021 10:49:12 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2335.eurprd04.prod.outlook.com (2603:10a6:800:2e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 09:49:11 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:49:11 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM6P194CA0088.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.18 via Frontend Transport; Fri, 12 Nov 2021 09:49:11 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: cada10d3-439d-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710553; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AF/Vb7ed9I59/XJgr3zPTQZWriuA9PRohF+C+Aac0+I=; b=Lz8C8dwbxYi7F6qMDEHqwOdxUk85xBKRPOk5Cnz/1TyUbjjK+mu+1VJbBTgJ6YO/gEaXah GcR6/kPrkznNj0+2mpwk+Eo7mleTfyfN0xYWU2VnYMOXz57OAG/s7gLFKt5t5fmNuai+dr SzOVTCG8sTgUrDsQ2nUe+wEJ7+ceBdY= X-MC-Unique: 52YRadEmOyCYYlQMIy1OCQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YbqFUXWzzSQKzbi5CHiYrcdA244NO+6rN4Zl07uvvl6QYX7UmMXrnwsVI2Vp3C3i7x8AebhGroa4qTddkIw4n2cfASp7p+Z8NoKYnG8tO9d7xIxDSepztaXi9HsylOuVrD10JgiINM7S6F2ct54QhloKD48ETPNYmobVlzArkd+caLe3n5Y6J8iKQmbPzBCrSymBS9leWMiHx5sait1TXJOEf+GSXbsFEx2imU9sE8Gz/WJ8u/NpcyjMG6qCiKpWwPSdb9Ip2fE04lhtE2OTkzUmxVPjiuoptnaEGubEsHRqP0WINih80QhXNnqSnTfpObpNiHLUtm9SY3z1Uk+qfQ== 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=AF/Vb7ed9I59/XJgr3zPTQZWriuA9PRohF+C+Aac0+I=; b=kO/B6FJLzNWETiph8Niu1mlxwwUeAAxDNFgBF37lyZn+AmBqm0CMe0otsWStwSSDUqhnBJUIhs5g5ID7zYTmwzAD94vbeNpAio6QNT582z38r74J5kurwxRpR1sggh7cpbCQS3Jk8HQXFneCUQX92O5he94m+6IIHwu+Uyel15hPmA5NrQdkZtiL54Q1s0LVWrav+OcDT87SUeKqXcbIaRXYjPfMrd+sQNmx51WSGcacRyWWMEL/VATD8k/UN0yhtUtTfddw2hFyFHojGVy5MmoJ+77ELjhcvSPFqPF0mGcOm+NiLfA0AVLANUFxL9Aig7NI0Yx3gHId79JFxhZoNA== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <7a802a25-8d86-d1de-446d-0e2d86b5a54e@suse.com> Date: Fri, 12 Nov 2021 10:49:09 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 4/6] VT-d: tidy domid map handling Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P194CA0088.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:8f::29) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9c71ea85-ef23-4d6f-8359-08d9a5c1adf1 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2335: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:126; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jZ0FEiQg14thbjxTPn3t3J5NroKMzv43dX5soUQ2ctqWOkBylc3V9fGeOkVX2BlnAgxSR9yevyRRmUu19Lm3ThQihWaomqUPhq+m9oO7n6fEISCisZkU+LcB7W/XpY9jllWdx76KhX4qGb9GbnC/XCm3s6Chqza70nscamwh8soI5l4nfFEmg3eLrIyaOBajfVZ7yqXcLfLesHzrmw+NAsXLOFcEisS5S4epYz2qYECZ68ucgFGgblVYiBO9jQaOX1e2aNCcG1gtZ2QiOa2/odd/gFUSPJHnGJ+QmdIBFBwrXMo7FNI1uYjZgJMQYgyE6rjTUzTk36H68LBlFf2/xeA6P85uprd4gFdkB7ipQzu2hjQ5/GIWhCBxofRF4FgX0du5rug7VDBOiseVn1htXu+QbgelhGXMbgRa8jGi5iyWhv7ns1ouLoKrac3lui2mX7OfObn1m1SFREt0sICTbQ2T+pBz9f2qRlsmvMkYnIsQXQ3mkHFZ93mUj90YKQm1RyGI42wb1XC4SeuOV9bpYOAvBMKwoWTA6wUHQgcAWXvszcZkwx/Z8FqPIJ02mNm+FolKCFHH7DmL5iJhqXNJ8wROQdNBpeE/NIzfRp2V/Ie5p76Rh6D9699OwicCG1WQcaC/et0NWgCOI0hEuOcXdrwBuhJKXVGbB1SMhAmwKkuXR5iUSdjvMoRLtj1izLMcInTrB+ybPD7bBe8nPEK0ZDn0MEr4VTI02B/oSK6rzJg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(66476007)(38100700002)(66946007)(66556008)(2906002)(8676002)(508600001)(5660300002)(8936002)(6916009)(36756003)(6486002)(83380400001)(16576012)(31686004)(4326008)(186003)(26005)(31696002)(956004)(2616005)(86362001)(316002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MXdTbGhDeDFLcFUrbGxwaGRhZ2R3UXZkZFZOVjZlb29hMmpiWnVGaUhIUHZC?= =?utf-8?B?dFRMZkFpUWxpSmZ2VnVNTWdzVCtKZU5maGl0S2l1NzZ1K0NteUdtcVVudFVR?= =?utf-8?B?djVRVlY2a2ZmRkdqbWsza1NYWDdsMGNLWE1pRFp2UElHaWRHc2xRdDQ4blR2?= =?utf-8?B?RTBYVWdOMXN0bWhSMWZ3aWxLYWZhYkUvZDBPbHRyVDZQd3NFYWt4ZjVkTzFI?= =?utf-8?B?UUE3MmhZYVJOMTFHSWQ5RzE4WTdOUm51TGwrWi9UbTNuQm9icHgvMkJOWlc5?= =?utf-8?B?Y0dTWVFkenZqOG5YRDFINHBhVDU0VndXYVl0a2F3eUFxTmpFTnlaRDg5Wkdl?= =?utf-8?B?aUxEYjR0TnR4Ny8ybUpqcEs0c2FueTU2cVFPbXFSL1BLeHpYNkJUT01yWEYy?= =?utf-8?B?SEUyY2hrTTQ5Vy8yUWorRGp5RnJRUFNKemZtTVc5ajRIeWpSdTBrRnJlMitD?= =?utf-8?B?cGJFR3JaWW9GU0EvZWsySTI5eFp2UGFWMUk3SjRnTHlzWnllNUE2elQ3WFNG?= =?utf-8?B?UHc2MFFITVVPbVN0aGtiZ05rMTJTaDVLNjcxM0VSV3J3UDhEU2hJaUdhdjJr?= =?utf-8?B?YlhFaGtTWU9zTkhtRVpnbmw1SlU2RzhOWVVEdzArbEZWZDNkY3E2YUVqVWFk?= =?utf-8?B?VmQxQWE3QXE1ZXJ0Uk9oU2N2cHdrbEUybElZZ1FHRDd4MnRpTWZRaHJCOVpz?= =?utf-8?B?SHVvR1M0SXdqZGdVMGs3bk1mN2RUUXJDWEo1dHpTcU9TSWVxWXVmenhNb1JJ?= =?utf-8?B?UHJJekVob3I2d1pqanJaV0hvZ1NOSEpJaEp5TzRoZExIeWdPOW5NK2NSa1Vw?= =?utf-8?B?S01ZbytzOTBJLytoYlRFamd5K0dPRXF5bnh5Tmw3QTdFbWt4bDEyV2d1R0N3?= =?utf-8?B?dDFwc2JUMVRyalc2QzJ3OUc1T2I0d2psaEZZbkVJMEdFZGZWQ0c0Ny9SL1hu?= =?utf-8?B?SUxiUzFrcytlOWx4WGJFa1NpdUZHZXM1TmpzMkFxQTdxUVVRSTA3N3NSdFlI?= =?utf-8?B?UFhHTzB4Q0RrQnNIZUZnK09Yb1FSRVk5d0tvYXJpcFM5WkxvT0VJSGFsN0ZV?= =?utf-8?B?cmp0aVlGQkxKSTlWS0s5TDI5TTBLUjJqUGROSUdhNGNHaS9KSGF6bzlIblhm?= =?utf-8?B?OERDU0JMbFdubHNUWEh2eGtiWnhadU40UDhEZ3N3eHVNaFI4bVQwK1BjWE1N?= =?utf-8?B?NW1CZmxOeFcyZ1g0RzBrcWU3WUg2NWYvTjJKQXJBN0JLNStkbnRORk80K1kw?= =?utf-8?B?by80T0xNYlM3UUQ5Q3ZjTG1xZnpWRWh4ZFQwZzNPU2tHZEt2bmF6bWY3Z1FF?= =?utf-8?B?UE03M29STVI4aTJhSGxQM2ZTVDJFVk5EbFRsMk9haFpndVcvdkRjWmkyT2dv?= =?utf-8?B?QWZQeFYzMjMySTMweE55YktWVStvV3FCR0Q0TVJ6WVV2Q0lYY2VNTnFMQzVY?= =?utf-8?B?ZWx4aUJZZ2xSVm5BckJLVXlocEdqMHBpNVBGMHVXbklVOEhEK2s5ZTkvNHpl?= =?utf-8?B?SmZDajRvVDhSN3VlQ25tTnYxeTdCdXlhc0JaSHBsRWhycWJ6WGVlcW94NmR0?= =?utf-8?B?YWZROEp0TThlRktsYW9keTQrUHQzb3JYSVFNRCtsZW1wY2ZLR2hoa3lJWTJw?= =?utf-8?B?ZFFhWm1LOXRXcXltYWZyU1BNSmNMRDFFNXdBVDVVelB0TXliNVFkQTRKRU5K?= =?utf-8?B?VE9OWDhSb2RibWtUZjJhYUJtVURGNlhod2laV1RneTQzOU9SUmRzbE9YRFg4?= =?utf-8?B?b2lxelJ6d0Y2L3oyUnJQRkE3MUd3SmI4TUp2TWU2NlZTNFVKZlRZUnlCNkQ4?= =?utf-8?B?a3JiUWh4Vjh4ZC9Gb3MrWjcwOVFrTWhhd3B1dzJWTTRHQ2psemQxRlBEcWp3?= =?utf-8?B?b1Fva0dObG43Nld5TmV3Y0E4aEJKdEpJTDRkQWIreUxGMFRzZTdYUGxZNmJN?= =?utf-8?B?K0w2end6dUEzNGptU2xxSmRJbUxpZW51Q1UxelRGc2lHVXpMSmE1Z0RLOGEy?= =?utf-8?B?VDNaR0pzeStzT3d5YzVJWmJXQU4rWDYvWXVVOENXajdFV09abW9GMm1yZDFL?= =?utf-8?B?WDZnWDdJQ1laR3ZwKzM2Z1owWm5WVnNLRURFNE1vTGFOTEFrcEFvQVpBQ2Nm?= =?utf-8?B?SkIwTkI0NzhGeXdhdVhFNjl1M3QvQlAvOVdUd3lTcTNNT05HdHhDZ3VoNFd4?= =?utf-8?Q?6n6SKzl4fSz/XVuhTAoz6d0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c71ea85-ef23-4d6f-8359-08d9a5c1adf1 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:49:11.6242 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2+yb/xb9i44YKQRgDuliWM1GXxsrK7Reqlnuwui+RyzqZHI8hXQ1xeg8i5SQGABPXO5GbKnfpYGW3AzPnfy25Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2335 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636710577719100001 Content-Type: text/plain; charset="utf-8" - Correct struct field type. - Use unsigned int when that suffices. - Eliminate a (badly typed) local variable from context_set_domain_id(). - Don't use -EFAULT inappropriately. - Move set_bit() such that it won't be done redundantly. - Constification. - Reduce scope of some variables. - Coding style. Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -62,10 +62,10 @@ static struct tasklet vtd_fault_tasklet; static int setup_hwdom_device(u8 devfn, struct pci_dev *); static void setup_hwdom_rmrr(struct domain *d); =20 -static int domain_iommu_domid(struct domain *d, - struct vtd_iommu *iommu) +static int domain_iommu_domid(const struct domain *d, + const struct vtd_iommu *iommu) { - unsigned long nr_dom, i; + unsigned int nr_dom, i; =20 nr_dom =3D cap_ndoms(iommu->cap); i =3D find_first_bit(iommu->domid_bitmap, nr_dom); @@ -74,7 +74,7 @@ static int domain_iommu_domid(struct dom if ( iommu->domid_map[i] =3D=3D d->domain_id ) return i; =20 - i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i+1); + i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i + 1); } =20 if ( !d->is_dying ) @@ -88,61 +88,52 @@ static int domain_iommu_domid(struct dom #define DID_FIELD_WIDTH 16 #define DID_HIGH_OFFSET 8 static int context_set_domain_id(struct context_entry *context, - struct domain *d, + const struct domain *d, struct vtd_iommu *iommu) { - unsigned long nr_dom, i; - int found =3D 0; + unsigned int nr_dom, i; =20 ASSERT(spin_is_locked(&iommu->lock)); =20 nr_dom =3D cap_ndoms(iommu->cap); i =3D find_first_bit(iommu->domid_bitmap, nr_dom); - while ( i < nr_dom ) - { - if ( iommu->domid_map[i] =3D=3D d->domain_id ) - { - found =3D 1; - break; - } - i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i+1); - } + while ( i < nr_dom && iommu->domid_map[i] !=3D d->domain_id ) + i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i + 1); =20 - if ( found =3D=3D 0 ) + if ( i >=3D nr_dom ) { i =3D find_first_zero_bit(iommu->domid_bitmap, nr_dom); if ( i >=3D nr_dom ) { dprintk(XENLOG_ERR VTDPREFIX, "IOMMU: no free domain ids\n"); - return -EFAULT; + return -EBUSY; } iommu->domid_map[i] =3D d->domain_id; + set_bit(i, iommu->domid_bitmap); } =20 - set_bit(i, iommu->domid_bitmap); context->hi |=3D (i & ((1 << DID_FIELD_WIDTH) - 1)) << DID_HIGH_OFFSET; return 0; } =20 -static int context_get_domain_id(struct context_entry *context, - struct vtd_iommu *iommu) +static int context_get_domain_id(const struct context_entry *context, + const struct vtd_iommu *iommu) { - unsigned long dom_index, nr_dom; int domid =3D -1; =20 - if (iommu && context) + if ( iommu && context ) { - nr_dom =3D cap_ndoms(iommu->cap); - - dom_index =3D context_domain_id(*context); + unsigned int nr_dom =3D cap_ndoms(iommu->cap); + unsigned int dom_index =3D context_domain_id(*context); =20 if ( dom_index < nr_dom && iommu->domid_map ) domid =3D iommu->domid_map[dom_index]; else dprintk(XENLOG_DEBUG VTDPREFIX, - "dom_index %lu exceeds nr_dom %lu or iommu has no domi= d_map\n", + "dom_index %u exceeds nr_dom %u or iommu has no domid_= map\n", dom_index, nr_dom); } + return domid; } =20 @@ -1302,7 +1293,7 @@ int __init iommu_alloc(struct acpi_drhd_ if ( !iommu->domid_bitmap ) return -ENOMEM; =20 - iommu->domid_map =3D xzalloc_array(u16, nr_dom); + iommu->domid_map =3D xzalloc_array(domid_t, nr_dom); if ( !iommu->domid_map ) return -ENOMEM; =20 @@ -1477,11 +1468,12 @@ int domain_context_mapping_one( spin_unlock(&hd->arch.mapping_lock); } =20 - if ( context_set_domain_id(context, domain, iommu) ) + rc =3D context_set_domain_id(context, domain, iommu); + if ( rc ) { spin_unlock(&iommu->lock); unmap_vtd_domain_page(context_entries); - return -EFAULT; + return rc; } =20 context_set_address_width(*context, level_to_agaw(iommu->nr_pt_levels)= ); --- a/xen/drivers/passthrough/vtd/iommu.h +++ b/xen/drivers/passthrough/vtd/iommu.h @@ -505,7 +505,7 @@ struct vtd_iommu { =20 struct list_head ats_devices; unsigned long *domid_bitmap; /* domain id bitmap */ - u16 *domid_map; /* domain id mapping array */ + domid_t *domid_map; /* domain id mapping array */ uint32_t version; }; =20 From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636710593; cv=pass; d=zohomail.com; s=zohoarc; b=OpaZy/ClSuXFKUpxrGDz0CA0unt6jxWif1ud7wbdujbzBAOMMcsdRw+ZP3DU7Y2zNIRvXn9iuNADb3epH/SX73mj+mP4eMexg6QNzk/LfoY98+UBeXBF6kDnDo/K8GNwbbimxTo6RKwywVIBQYxhd4WasKbO4eJg3msAy5QbwME= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636710593; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=63EDCVBQW7h8osASYLbubyyEjZ4ArJhIRz0iWWv/m8A=; b=l9lH58bdbjY/oSnTc6nBz4bm8xKndJa8syPo9ZEr1r5N2OAjneqVnbYNHlwuE6f33SiU1ArKKmiymDFDWpfOb5SRbzBdWA3M4JnKQ53K7bDAAYabk30JtixfwcRwOCxgaXe90LdBtMWtFgB0Ewes1ej5PHv7LEsA07JtCwVGVLs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636710593706940.4164887957099; Fri, 12 Nov 2021 01:49:53 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225052.388668 (Exim 4.92) (envelope-from ) id 1mlTBi-0006FK-MJ; Fri, 12 Nov 2021 09:49:38 +0000 Received: by outflank-mailman (output) from mailman id 225052.388668; Fri, 12 Nov 2021 09:49:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTBi-0006FB-IV; Fri, 12 Nov 2021 09:49:38 +0000 Received: by outflank-mailman (input) for mailman id 225052; Fri, 12 Nov 2021 09:49:37 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTBh-0003th-77 for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:49:37 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d856b5b7-439d-11ec-a9d2-d9f7a1cc8784; Fri, 12 Nov 2021 10:49:36 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2054.outbound.protection.outlook.com [104.47.9.54]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-26-nEjc3_GAOZWzx6Klm0Z3WA-1; Fri, 12 Nov 2021 10:49:35 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR0401MB2335.eurprd04.prod.outlook.com (2603:10a6:800:2e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 12 Nov 2021 09:49:34 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:49:34 +0000 Received: from [10.156.60.236] (37.24.206.209) by AS8P251CA0003.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:2f2::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.19 via Frontend Transport; Fri, 12 Nov 2021 09:49:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d856b5b7-439d-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710576; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=63EDCVBQW7h8osASYLbubyyEjZ4ArJhIRz0iWWv/m8A=; b=Y/UiYYR3Qj63H0f1KLc5uat/XiTTMGCLZHIhBBPjaxSVIff2q3hoAvFeQ05O9rcFL+QX+M 0tYyHsrY5tjr+Nz2hZvn6In1x+ok1L2G2X60yW60aAL4nzZBjcWTeVSwxKOrVdV9OKCfMm 3bTTfAJ56dnPk6eLYsFOumwsWnPDIQg= X-MC-Unique: nEjc3_GAOZWzx6Klm0Z3WA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XhI272e70J1zR1W6dcSsk9xtwnUHR46eIKZmEl9pPgGaunXERXbg3mAy8Ik8C2hs3RI8kbgGpy/Acuob8ODTiMoX8jboKF9m+fDG08uddu4c4SkyZzKIH2YDDMPzEtgEV/B4jovw3DJOln3E/J3plxbidN2+EAdW2gIyXl0jYasfFw6DK/abRtiLFqHbYopDg/T/5UxdKT+/5lOGmRyYdE048kCJCobNnou4ZoshvSlYeHDjqqTEKjhx+5d2yvoVXKazceRdT7VZUkx0CXSePwMB5yhkJti81imajZYr9T/CQsLIf92WSNyKgDVyKc95DRFeZvg7O8LZogFtPtF6Ow== 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=63EDCVBQW7h8osASYLbubyyEjZ4ArJhIRz0iWWv/m8A=; b=M5xE8eoZ4bZkpAlBFzCihWveulqOB9OBKWYZxRZJd1xRgUDMXP+WqNAceRf6yNn25eXdoVDQ0huB9aqTyG8wLVOBAjXH/9YvJIs49kZHg+exWuJ++H7z17e2qV/39POnH+ZXJ3tM8fXG2ISKL4ItNPwwAzAMP0k05RxLpRcUo6huD0wkqwhRuupACbHv55K8kyIj3HQnmjwFh3yH1BiRuaki1YXazBJLqGMPuImA93WH27BkjWDhzUtgbfXegNwC4opB8Cx6X64fi1A+4PvCdWLG6Ecm67Y3hiDdOb/55JMg0j51GcZbQ3dWGzjMmMMUlekc7i1ryg9sdkQ4bTdQWQ== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Fri, 12 Nov 2021 10:49:31 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 5/6] VT-d: introduce helper to convert DID to domid_t Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS8P251CA0003.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:2f2::23) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71873f67-505c-412f-cf09-08d9a5c1bb7a X-MS-TrafficTypeDiagnostic: VI1PR0401MB2335: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:800; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FxR3/eh1KRjleE/FV6Azc8ZSFElNjxklhL6nmJWhPD2lZiMFILK7Wn4ks6whkidA46gApNcwviA05/fW2T7mad4w5y3RvTVaYK9IvY1tBukIHraMb60BjEvO/e3KlC0YHZ3PCT49dWbvJIIjf0W0gOvrQloIJL4RR4rDjvMx6R2qVqh9AaW/bMf7PdeX2ZPwT8U6f0SKS4LuGi1U2oD8oPmAz8ECk0cr0WUz8rm+bIPZn2jSqqcZDhemecrWL0noYpMQ0e/6sJwb9640XA3rMA5ShVY05T9bSjVXl/8ve24K+0bVFyGXVaDg2HZLb/meGiwJU324w/vpMfMMt2ux165TKG8esw/goMJOwEDD68bGAyZTygkLy8XFR5/lEp4FF9U3dReTnkDW3Qlt2+3INYJcj6EzqHYQNO/zg+xVong8FM5pDqz0LbB5Xv7oYUe87MWlFjvTcs1O6s5vTxtuIhKmnxJ6zah8gnXlJq2ZsMc4vdu9cM97HBt9+j33lfCTjdsDDvgT0dm9c86o4wT8i64rk3nB0XxycL1jSpibsADqMZt2QyooSIx9QXzs4LnpdVwuKNRs5uHD6iUDW7IO6sE4kVhkxA7GiiLwcqzjozsL7CE58Zo87MEhBmLArxZxfmpOSiaTQyDQQl4bE6xuNsw7BBhlvP/qsWRVQAau/r7AEoGd5E7R7Y/VkdNwrYN8qWsn+t1AIC2rGtPg+hiaCr3TPHRsH0uRkFTqm5y4yqg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(66476007)(38100700002)(66946007)(66556008)(2906002)(8676002)(508600001)(5660300002)(8936002)(6916009)(36756003)(6486002)(83380400001)(16576012)(31686004)(4326008)(186003)(26005)(31696002)(956004)(2616005)(86362001)(316002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Wk9PVW5MTC9GN01PZ2dRQTY1c2tjY25YaUZGTXNYV1lhNW5zcjJQTlVkZE9H?= =?utf-8?B?dkZLRFRHT0wrT2w1M1ZGd3pEdHdaS3FZMUhhTmlwT1dhbVNOTHNiTFRhZXg2?= =?utf-8?B?cUNwTG85cm5TM3hBUHp6NG16Q1lCbndyUk1ZYXhvcytJb096YkhDbjZhcy90?= =?utf-8?B?bFI1akVOT1ZrYmF1STdzRkhncTd5cHFWSm16QXgrVlQyVDAzbHYzbW9KdmU5?= =?utf-8?B?Y2hoZlBZT0RLckk3bk1NYkxwUkV3ZnNqSVZFa2pkMDhSSE9NUTNUQ1ZjUFM1?= =?utf-8?B?K0JXYWhnS2Y0NlBsL3N5NXJzaGIzTW96RXVDRlZ2OHJsU3BLaUVYc2JNS3NC?= =?utf-8?B?QUlXKzJLY0dKWVZOU25OTDBXMkJaQ3JUUTFhYXZNY0pUTkxuVXR1QjJDSmkr?= =?utf-8?B?UXM1WVFuQ2p6V2cvcC9tMW90Tk5RWXJWSUNkWXFkN3h1Tmx5bS96ZThlTVd2?= =?utf-8?B?aHRJK3pvN0F4cWE1S3p0YkgvWkZraU8raThPRDlZZzl3MUxZRkNXeUh5VVpF?= =?utf-8?B?RW45OHdZVy9Gc09vZi9YeWRjakxaWCtPdTBjOFRPOWg4akwycXNmYUdMSjRv?= =?utf-8?B?azdaQ0FEMjZGbjdwQUU3dGl4YWE0eHBzSEpRKzJ0eFJjdUhlaUdvVC9PZi82?= =?utf-8?B?RU1ibXpXdjkrb2xKMVBmdHNFOFBZUTBQK2hWMzYwU1JaaDc2U0lqNmhnZzVD?= =?utf-8?B?QTJzSjZJRW5sVHQ3OUlSNVRZdUpReS9rcmdMbWF6UHl3cG1XYlplOExzMHc4?= =?utf-8?B?QnU0ZmJBMW9ZdWVqSk9BVEVHWmo0SWpjTFRKS1V4L28wNDRmMHdvSzJFcU14?= =?utf-8?B?aXlhV3ZnV3RmeHJQaW9CKzlyREdLdmUzYXNNTzhob0pQUjhjRm4wRVc3WWZS?= =?utf-8?B?Q3NJbGpkdzhoU0J1TFFMU0Z5YUM2MnM5elN6WHBHUFRFMjZqZ0tkbVVOMmsy?= =?utf-8?B?aTJJWE9KSUZ1T0lPSmlnT3NsRjlZNkY2MUNFUXgydEZtMzlueWUreEFsVzkv?= =?utf-8?B?ZTBPRkRJTjNwSEZVUDlkeTlYdDRnNk53NHBab3JyejhyYkdnbXE3aWFiY202?= =?utf-8?B?QmlFVnQ2aXFzN014L212c0xsNkRwWEcrS1M3MVJidHgvRTJhRU1BNUppRldN?= =?utf-8?B?MngzT3NMTHloQ2dTd0NWbjN6cit4NHE2Y0FBbmFQd0VmWWpKT1QwUUZmUFRF?= =?utf-8?B?TTJYdDlLcFk4aG1BaE9lY3ZsRm5IcFBsM3BvSGh6dDdjK2Y2OVZQNjU2NDVr?= =?utf-8?B?ckwvVjFMVWNOV2wxcUcwWnY2bmhKckozYUp4Q1Nha0xHT0tZbHpOTmdxcXp4?= =?utf-8?B?d0FsQ3ZkeHp2TWlQKys0eHRZOG9ZUlhTd3hGc0NDRVRHeUpmVHQ0bDJvY3B0?= =?utf-8?B?Qk9IbGUwaEhvaW9kWnd5R3NTV2pVMGFjV0hEcWcxZjJNSEQ5TkE0YXg3cHZo?= =?utf-8?B?RFpCVHRJSVRxU096ZUFmcmpyeHFNUFgrTlFYSzlXSG5vZHU4ZkdqeW9kaDNs?= =?utf-8?B?bkg3UTNNVlEyWjhwdytDSXg4VmpzSnBUNk1LYVQwdE9OcXNZZ1JrN3UxdTBT?= =?utf-8?B?dlFvM2FpbHdiV2VQUUNBYytISFNlc004eHA2bW5xcjM3alh2c0RmdzJ5YUIr?= =?utf-8?B?TEc0OEVHWkpMY012R3BVR3M2dm9qUnZGN21kS2lFY01OZzJpSGg2Y1dIdUdk?= =?utf-8?B?OWlMeTcxYU16aHJBWnNlK1FoUmtnQ0FocXJvUytBWnJpamZJdkZDUjg2WFFz?= =?utf-8?B?d3N1dmtSN2JFYkMyZERhUUNMYmNIb1gwd3FiTE5Xc2QySEhKMG9DQ25GK1dC?= =?utf-8?B?YmRSWWtNZ2h6NjR6ZkNibHpWdmJ6OTNRNjlLcFJoUXdYTFJBMmVIcEVIZ2do?= =?utf-8?B?YWdBaVEya3VVT1R5bG9SUDh6ME0wMlVVQTQ5QXlxTzdmUG82Rk1nbHM4WUF2?= =?utf-8?B?V244M1VaYlpOd3h6TUFpQkRrbDlRck9EOEJZMEtjTHhSUE02a2Jjd1gwYVVN?= =?utf-8?B?WG1OaUUzYkV4VlNubkJiVEJaRkN3SFRwMnlSVEl3S1BVVjA5L1lsNVF3eW5L?= =?utf-8?B?VXVUNGV2bVEzWlVQcDUrbi9penJseGpJZXN2ZmlHNW5kYW5yaTJxTmZkSDBC?= =?utf-8?B?Rys0RWdmNUJaVGFyYWphVjhtRkp5STR1bTBSSzI2V1pYdURHWWR2andMUjJY?= =?utf-8?Q?gjSvK8T8Xi29zT5/D6Bmdd0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71873f67-505c-412f-cf09-08d9a5c1bb7a X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:49:34.3454 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bk2QQDZ3q+tgpJQXQaFP3itMuPAhUvnc8aAxFCUnYICA+QxOaimlDAKaxlHLZC3EcTzTOafxZ8VqioE+YPvPjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2335 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636710595227100001 Content-Type: text/plain; charset="utf-8" This is in preparation of adding another "translation" method. Take the combination of the extra validation both previously open-coded have been doing: Bounds check and bitmap check. But don't propagate the previous pointless check of whether ->domid_map[] was actually allocated, as failure there would lead to overall failure of IOMMU initialization anyway. Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian --- a/xen/drivers/passthrough/vtd/extern.h +++ b/xen/drivers/passthrough/vtd/extern.h @@ -45,6 +45,8 @@ void disable_intremap(struct vtd_iommu * int iommu_alloc(struct acpi_drhd_unit *drhd); void iommu_free(struct acpi_drhd_unit *drhd); =20 +domid_t did_to_domain_id(const struct vtd_iommu *iommu, unsigned int did); + int iommu_flush_iec_global(struct vtd_iommu *iommu); int iommu_flush_iec_index(struct vtd_iommu *iommu, u8 im, u16 iidx); void clear_fault_bits(struct vtd_iommu *iommu); --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -123,15 +123,16 @@ static int context_get_domain_id(const s =20 if ( iommu && context ) { - unsigned int nr_dom =3D cap_ndoms(iommu->cap); unsigned int dom_index =3D context_domain_id(*context); =20 - if ( dom_index < nr_dom && iommu->domid_map ) - domid =3D iommu->domid_map[dom_index]; - else + domid =3D did_to_domain_id(iommu, dom_index); + if ( domid =3D=3D DOMID_INVALID ) + { dprintk(XENLOG_DEBUG VTDPREFIX, - "dom_index %u exceeds nr_dom %u or iommu has no domid_= map\n", - dom_index, nr_dom); + "no domid for did %u (nr_dom %u)\n", + dom_index, cap_ndoms(iommu->cap)); + domid =3D -1; + } } =20 return domid; @@ -193,6 +194,14 @@ static void check_cleanup_domid_map(stru } } =20 +domid_t did_to_domain_id(const struct vtd_iommu *iommu, unsigned int did) +{ + if ( did >=3D cap_ndoms(iommu->cap) || !test_bit(did, iommu->domid_bit= map) ) + return DOMID_INVALID; + + return iommu->domid_map[did]; +} + static void sync_cache(const void *addr, unsigned int size) { static unsigned long clflush_size =3D 0; --- a/xen/drivers/passthrough/vtd/qinval.c +++ b/xen/drivers/passthrough/vtd/qinval.c @@ -229,10 +229,7 @@ static int __must_check dev_invalidate_s rc =3D queue_invalidate_wait(iommu, 0, 1, 1, 1); if ( rc =3D=3D -ETIMEDOUT ) { - struct domain *d =3D NULL; - - if ( test_bit(did, iommu->domid_bitmap) ) - d =3D rcu_lock_domain_by_id(iommu->domid_map[did]); + struct domain *d =3D rcu_lock_domain_by_id(did_to_domain_id(iommu,= did)); =20 /* * In case the domain has been freed or the IOMMU domid bitmap is From nobody Thu May 2 18:01:14 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1636711045; cv=pass; d=zohomail.com; s=zohoarc; b=SleV9haHd8LDPmxxi07bc1wFisAHhuugjUouwg43LYe14SphUJ5F4nbrlLUx7ORCVPJm6/lJR3vAL3i12ReN9Pcbn/cQu0zJ6RCv0HJIZD0xueStTSqn8mQmYPoL2QOTRST498lkWVvFSjWhXWWsESY/Rmj5hHQU0nUd8Sh0+os= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1636711045; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ip3q7fhcctGNdbp3S1fmpbIw8kP09wRnv4EP1tjyo5g=; b=JriAdOCIM59Haejt/iQnXnPT09F+ltb6rLVCNZFST5tPjnhPRCAJ4PhorZ9VWddLE3OppKCHt7h2q4wBW3lF1CS/gkI9wI6v5iGgXhlooUfnoEgabH/M06VlziYx7n9HaQU4JSxr/XNrpEH1AnunzjojmAioZkkjaQPoNTfrlUg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1636711045727729.2520211757268; Fri, 12 Nov 2021 01:57:25 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.225077.388717 (Exim 4.92) (envelope-from ) id 1mlTIm-0000ns-7k; Fri, 12 Nov 2021 09:56:56 +0000 Received: by outflank-mailman (output) from mailman id 225077.388717; Fri, 12 Nov 2021 09:56:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTIm-0000nl-4J; Fri, 12 Nov 2021 09:56:56 +0000 Received: by outflank-mailman (input) for mailman id 225077; Fri, 12 Nov 2021 09:56:55 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mlTCG-0004Mh-Ab for xen-devel@lists.xenproject.org; Fri, 12 Nov 2021 09:50:12 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id ed4f2b45-439d-11ec-9787-a32c541c8605; Fri, 12 Nov 2021 10:50:11 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2106.outbound.protection.outlook.com [104.47.17.106]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-32-uvrNgwe0Mlq3UgpRVMk_cg-1; Fri, 12 Nov 2021 10:50:10 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VI1PR04MB4942.eurprd04.prod.outlook.com (2603:10a6:803:59::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.15; Fri, 12 Nov 2021 09:50:09 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4669.016; Fri, 12 Nov 2021 09:50:09 +0000 Received: from [10.156.60.236] (37.24.206.209) by AM6P195CA0077.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25 via Frontend Transport; Fri, 12 Nov 2021 09:50:08 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ed4f2b45-439d-11ec-9787-a32c541c8605 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1636710611; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ip3q7fhcctGNdbp3S1fmpbIw8kP09wRnv4EP1tjyo5g=; b=YamV6Mk2Vl78F31BgELFSRyD7SwU/Yexup9JP6bkXUYe6j4Jppu5xhRfKCMCCn9mHUfnBC h9W5DQOH2frcrsmTo5Hxz2391xllNMEvnbe0Dp1t8B8IP9q2AawzQTeK0VUszyogeV8XWU DaODAbr2k5z+1sOsjDLTKMKe5djj5v4= X-MC-Unique: uvrNgwe0Mlq3UgpRVMk_cg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fm8GT9JYcB/n4bFPHQVMAybl+Sra6hd5yVCbikMBFhp2LfOFIuEUZPszwBYVBa9QR33GWatrP906E8Nv01BTThRsvLiFKzSbZRufv1VSnH12nxX2kZ04bjUrFbB/+PdKeXL/Dl+MN85kG1ZY0fDyInrBnaEYliE9VsRpX9FX09wEV8FHzLtoEJvm6JneyR3ROb1X6Vg1dhJ+cH2ETctgiLiU7ZsqFyDt7qNOg6dVehv9mlLop+VQg72XySXteSsU2tGp/CEcq9h0vR+6DN2FC/qpsFP+4NgZY1paz69Koc1cvFP6rCx0loG3ERKbsSTgdJ9rdk/vAMNWAlXkHfAKFg== 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=Ip3q7fhcctGNdbp3S1fmpbIw8kP09wRnv4EP1tjyo5g=; b=YDXbze5WHzu1RM1Qlz+bCwk7/+WdOZcLSTrLSLzBjAy/xt2jQ05jXM9/QpDJc0VEcPk1jVIIs9KW42sJgNk1knTor2PaIupxjSuz/eSsNtO6iSeKUn98u/b6PoAmyWU2kGxnvlP7Q7tPkMpEIaqoUcNL/afIIepbpOyYy+ZKl009U3BOnTf4PvFggvol1Bnu+55DlCgTJWYiccrTTkg8AaTDzzo6rN5psjClcCpM4ZVBf1NywpwLziEmdRqaucEB8fy8ZYGOIGbe9ytO590bNZX9FbhNpI4A5B+iMMX2lqhOqjb/9tJRSMf9X3qvoleVoV4TKi9IX7jLowXCqXfLbw== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <74734976-b5a0-3372-7c7c-9f866945777c@suse.com> Date: Fri, 12 Nov 2021 10:50:07 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 6/6] VT-d: avoid allocating domid_{bit,}map[] when possible Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P195CA0077.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::18) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f5e3a4f8-7cdf-4411-9470-08d9a5c1d033 X-MS-TrafficTypeDiagnostic: VI1PR04MB4942: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KGGbkbZan2Hf1cU4xOn6LGtIxYM4TN4Q0ekjPABg8m2lm6hH2xAaUf2IqQbBdgkktu7xVTBLREdIow7tGsHU0okn4TapTTdmL5kcUnhfzFHCtBFNSMnRlX278i0OELPS6sI6/aoQf6EOx5XL/k+ztsuLJCa2tU1702FcWLLngKYeH9fDDvLiAj6JqQjk6fItiFtFszl/U9zn7h4AHnwilAaluCmoqcNa75a8tkHp3k6La51sr0O6Ab22sUhmHGfRusEqgf2+/MpMHB3EwV3YFZljeYaF1s8DlqQHntWBVVIldbkXEKgIR7IMhuSvKQXKu/YpZuhL3xVPW9bZR/W0ZHGor8OD0iFurtsGotZ3lSqaTfPfah9G13WetBJELGyfuP9qU5KTJXB0WkRae1f1EciBRYC5r4W39kd38j+QZ/s/mLL4QxuOebvzC25hP0HmJPswn5ayCqO7KEIFfZV9Kcg2nnYUf5/FJTOsIsLwOjl9R32RqY/cQe6ADYsXhjUzkt18O358T4oTJTZLM3uUaJySq7E4iMphwfHZIa6wUL0J7jIvfu+7vl/thN4AlqnVMKDVe1K7civGNM9g3OAetLEHpNcsZ6J6dPTSWbERqOouU6etZlaNLCJjRp5e3WN/2GG4q9RXcIIGvBoO50elO+gnKlRU8TRNSFhIVLjXkYq98qo9JsHnorludqYURzrZ3I52eu4rLUrc3sA1iQUgE5rtaBVjsHxKuG5paVFMKPc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(508600001)(186003)(2906002)(5660300002)(6916009)(38100700002)(36756003)(66476007)(66946007)(16576012)(86362001)(31686004)(26005)(4326008)(66556008)(316002)(31696002)(6486002)(8676002)(2616005)(956004)(8936002)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S0xZK1ZUdHRpa0VnQ0Z4RGg3KzYra3QwdXFTOGRYd3dGWmUvUzFZNXJtVHlT?= =?utf-8?B?eFNHM1QwT0xEdERkcDZsbWhXWUd1eHFuVERsbThBQnQwT0E0RjgwOFVFU3JE?= =?utf-8?B?L1B1bXNraFY4LzlueUl5T2xsL1FjaVVGR2NadEZ3WWlCY2Y4WmhpUEl4SWkz?= =?utf-8?B?RmgyY202VVluWUp2azhMSUcwTGVWQ0IwT21kcFo4OUV6Rk5VcG1OOGF1K3dZ?= =?utf-8?B?aFBmQzkvUjAvSUhXa3F4aWtkeWFBbi8vWUhCL0MwbDJzSjZ3d1plb3pjT1FK?= =?utf-8?B?dFhjUXhZSzhERnlHcmhjbVNmNVdSaDRLOS82anBnRmZqVkdsZ2Z1VzVXOUJE?= =?utf-8?B?RUFMNzJoSkZLM09FUlRYY0J0TmhEeGhZb3NGRWJVc3A3MlR1ZnVwTUZpNHdO?= =?utf-8?B?cWt5ZXB5MjkrSjhkbGZqVlhkcEY5V0VLcFZnWU9pQ0tIbUhtcjcreXBYWFdP?= =?utf-8?B?NlRXSm55cVF1NVZpT3lFR1BXalBBbmk5cjZrTmF6Sllaa21IMWtQMER1Vkdw?= =?utf-8?B?dHFCMlIwZWliaGY4bkErS2txR0x1SU91Q010ejFhNDZZUVl2NENMU21LYkhq?= =?utf-8?B?RUpYUmtwV1JrckFDbjR2SGI4MzNWQURYaythVitGZjRQTWZTcHpPbWVseFRz?= =?utf-8?B?UmE4bENGWnVxUCtYa1Z1TlMxNDlydWJiNnUrR0lGYWE3ZnlXM1h3UWhmam04?= =?utf-8?B?ekY3RzZnNWpaRzVwOVRjZzYzTklCdlRaN3RzZFVLM3FNTHRySEJEclNUUm9y?= =?utf-8?B?VzErZjN0Z2dLYUdDVldjcnFNSDU4NWt6c2xXTFV5M3Rma2h2aHoxdXNyRlAx?= =?utf-8?B?MGRWSElxQWpLemZuTHExSHhwNnlHbys2VTRVVDRWT082OUFVVDZRQzJRWnpy?= =?utf-8?B?cVdwZWVCY1d0RmxmMHB0VXkwZHE5QUg1amlEOVh0djQvQ3diL3FRWVoyTFZ0?= =?utf-8?B?N2ZyN0VGZUhrNyswNmhnalF5MUVac2t3OUtpUUV0MktDRFNjQjNrNEJ5Qmd5?= =?utf-8?B?aHZKeE1Fb3FFSzFUcmFJUTRmVnNQVFJPSjhnQTd1UmplRTRlcHhvd21nVnRN?= =?utf-8?B?aE10SnNvdUdhS0R1ZHExSEJxeXNieUo3amFrczE5WkhtY1hzZU0wWGlWNWlL?= =?utf-8?B?SnJtMzZ4bUN5U3FrNHVldk13S08xVkdzSXdWbnN6YVA5MGpWbkxZWmlMcEtL?= =?utf-8?B?azBRSVFtK3A3dzAweDNoS3QrOUM1aUxtcWNmS3R2SGhmMDNXZk12emFpZWt4?= =?utf-8?B?V2pzZWVnYlZqL1N2cWVZSmp4OEc4TGJxT2ZKU09WVmE3RE9CMkcwVmJtbWxB?= =?utf-8?B?VG5PRmdnSFdRY2dIOVdHV2ZrSGs3OGhvSUROSFpxUURNWXRmNTJWUnBjS0JD?= =?utf-8?B?OWhUZHdqUjZtaXduZUoxTU9iQ0hhRjM0WEJqT1IyM0thWjhvWElvN1N2MW56?= =?utf-8?B?RUI2Z0dtY3oxVXM0L2JDKzBLV25aeE4vMHpFMjQ2dkRsUEtvcnRXeDJoS1Jo?= =?utf-8?B?UFRldHpBaElFaHRZOE9jeTRiREV0NkUyWXFBY3NQWmtYc08xdE5mU1RvTG5Y?= =?utf-8?B?UVVTMEo1eFhvcDlMd3ZNSWNVcVhSZkN2YVRPUWxOcXMyRU9UMlpsKzB0S1Bo?= =?utf-8?B?TjFBOFR1NVlVVExjcmFqWXh3TEVkMnh6RHFhYlFiM0RIYzFpYmFoRXVIY2p4?= =?utf-8?B?U3lpeW81cm9nWks3M3pjcnd1M0N4ZGhpR1pUbXk4aUF0ZWhoRW9RWnZaaUJi?= =?utf-8?B?Q0tkaSszSUplUVQwY3FUeDdvTkcxM0hlZzlpY0Q1U2lxZnN6WlgzbXV6ZDYx?= =?utf-8?B?TklmYVhpRmpOaDdKRE9FN1ZCaWRCNmFJRHNKME1LcW9ZbnVsR1BIVUFmcDZI?= =?utf-8?B?ZmN2Sndvb3VqV0tML1pHa3pXTzN5WWhidTh6MnlvRDR5MlNVdWFKblFBci8z?= =?utf-8?B?QWRkOU1tMTJSNFYwbDlTNFVuNjlMNkptNVNHcDFyYUdLWk1zT2RHcEVCVWo2?= =?utf-8?B?TGVRdDNTcmh3RDRpRGtZSDZxS2h6RzB4ZVRLNis1MGsrR1BKcW5wazVhUUhP?= =?utf-8?B?SUxQZFF2VnJvSWdZckJ0SG5yNjdyKytNZmgwWkc5R3hUVEFxbFN0ZzY3aHRm?= =?utf-8?B?MVBFL1oyT0pBQk5uVENRVVlBbXI4QWFHSzVTOW5pdHNkMUMreWVsc3NIT3lU?= =?utf-8?Q?xmWkXcAhh5Mr+MccynxS1bg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5e3a4f8-7cdf-4411-9470-08d9a5c1d033 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 09:50:09.0937 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7e3dUCmhFDVS2q+W0+eHEvFACdrdV8Kov0p4FMwjvzMsmNU0g9UDH1mseuowsz9b7uI2/FXAcpksbzf/5Vqmvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4942 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1636711047475100001 Content-Type: text/plain; charset="utf-8" When an IOMMU implements the full 16 bits worth of DID in context entries, there's no point going through a memory base translation table. For IOMMUs not using Caching Mode we can simply use the domain IDs verbatim, while for Caching Mode we need to avoid DID 0. Signed-off-by: Jan Beulich --- For the case where the memory tables are needed, xvzalloc_array() would of course be an option to use here as well, despite this being boot time allocations. Yet the introduction of xvmalloc() et al continues to be stuck ... --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -62,11 +62,32 @@ static struct tasklet vtd_fault_tasklet; static int setup_hwdom_device(u8 devfn, struct pci_dev *); static void setup_hwdom_rmrr(struct domain *d); =20 +static bool domid_mapping(const struct vtd_iommu *iommu) +{ + return (const void *)iommu->domid_bitmap !=3D (const void *)iommu->dom= id_map; +} + +static domid_t convert_domid(const struct vtd_iommu *iommu, domid_t domid) +{ + /* + * While we need to avoid DID 0 for caching-mode IOMMUs, maintain + * the property of the transformation being the same in either + * direction. By clipping to 16 bits we ensure that the resulting + * DID will fit in the respective context entry field. + */ + BUILD_BUG_ON(sizeof(domid_t) > sizeof(uint16_t)); + + return !cap_caching_mode(iommu->cap) ? domid : ~domid; +} + static int domain_iommu_domid(const struct domain *d, const struct vtd_iommu *iommu) { unsigned int nr_dom, i; =20 + if ( !domid_mapping(iommu) ) + return convert_domid(iommu, d->domain_id); + nr_dom =3D cap_ndoms(iommu->cap); i =3D find_first_bit(iommu->domid_bitmap, nr_dom); while ( i < nr_dom ) @@ -91,26 +112,32 @@ static int context_set_domain_id(struct const struct domain *d, struct vtd_iommu *iommu) { - unsigned int nr_dom, i; + unsigned int i; =20 ASSERT(spin_is_locked(&iommu->lock)); =20 - nr_dom =3D cap_ndoms(iommu->cap); - i =3D find_first_bit(iommu->domid_bitmap, nr_dom); - while ( i < nr_dom && iommu->domid_map[i] !=3D d->domain_id ) - i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i + 1); - - if ( i >=3D nr_dom ) + if ( domid_mapping(iommu) ) { - i =3D find_first_zero_bit(iommu->domid_bitmap, nr_dom); + unsigned int nr_dom =3D cap_ndoms(iommu->cap); + + i =3D find_first_bit(iommu->domid_bitmap, nr_dom); + while ( i < nr_dom && iommu->domid_map[i] !=3D d->domain_id ) + i =3D find_next_bit(iommu->domid_bitmap, nr_dom, i + 1); + if ( i >=3D nr_dom ) { - dprintk(XENLOG_ERR VTDPREFIX, "IOMMU: no free domain ids\n"); - return -EBUSY; + i =3D find_first_zero_bit(iommu->domid_bitmap, nr_dom); + if ( i >=3D nr_dom ) + { + dprintk(XENLOG_ERR VTDPREFIX, "IOMMU: no free domain id\n"= ); + return -EBUSY; + } + iommu->domid_map[i] =3D d->domain_id; + set_bit(i, iommu->domid_bitmap); } - iommu->domid_map[i] =3D d->domain_id; - set_bit(i, iommu->domid_bitmap); } + else + i =3D convert_domid(iommu, d->domain_id); =20 context->hi |=3D (i & ((1 << DID_FIELD_WIDTH) - 1)) << DID_HIGH_OFFSET; return 0; @@ -140,7 +167,12 @@ static int context_get_domain_id(const s =20 static void cleanup_domid_map(struct domain *domain, struct vtd_iommu *iom= mu) { - int iommu_domid =3D domain_iommu_domid(domain, iommu); + int iommu_domid; + + if ( !domid_mapping(iommu) ) + return; + + iommu_domid =3D domain_iommu_domid(domain, iommu); =20 if ( iommu_domid >=3D 0 ) { @@ -196,7 +228,13 @@ static void check_cleanup_domid_map(stru =20 domid_t did_to_domain_id(const struct vtd_iommu *iommu, unsigned int did) { - if ( did >=3D cap_ndoms(iommu->cap) || !test_bit(did, iommu->domid_bit= map) ) + if ( did >=3D min(cap_ndoms(iommu->cap), DOMID_MASK + 1) ) + return DOMID_INVALID; + + if ( !domid_mapping(iommu) ) + return convert_domid(iommu, did); + + if ( !test_bit(did, iommu->domid_bitmap) ) return DOMID_INVALID; =20 return iommu->domid_map[did]; @@ -1296,24 +1334,32 @@ int __init iommu_alloc(struct acpi_drhd_ if ( !ecap_coherent(iommu->ecap) ) vtd_ops.sync_cache =3D sync_cache; =20 - /* allocate domain id bitmap */ nr_dom =3D cap_ndoms(iommu->cap); - iommu->domid_bitmap =3D xzalloc_array(unsigned long, BITS_TO_LONGS(nr_= dom)); - if ( !iommu->domid_bitmap ) - return -ENOMEM; =20 - iommu->domid_map =3D xzalloc_array(domid_t, nr_dom); - if ( !iommu->domid_map ) - return -ENOMEM; + if ( nr_dom <=3D DOMID_MASK + cap_caching_mode(iommu->cap) ) + { + /* Allocate domain id (bit) maps. */ + iommu->domid_bitmap =3D xzalloc_array(unsigned long, + BITS_TO_LONGS(nr_dom)); + iommu->domid_map =3D xzalloc_array(domid_t, nr_dom); + if ( !iommu->domid_bitmap || !iommu->domid_map ) + return -ENOMEM; =20 - /* - * If Caching mode is set, then invalid translations are tagged with - * domain id 0. Hence reserve bit/slot 0. - */ - if ( cap_caching_mode(iommu->cap) ) + /* + * If Caching mode is set, then invalid translations are tagged + * with domain id 0. Hence reserve bit/slot 0. + */ + if ( cap_caching_mode(iommu->cap) ) + { + iommu->domid_map[0] =3D DOMID_INVALID; + __set_bit(0, iommu->domid_bitmap); + } + } + else { - iommu->domid_map[0] =3D DOMID_INVALID; - __set_bit(0, iommu->domid_bitmap); + /* Don't leave dangling NULL pointers. */ + iommu->domid_bitmap =3D ZERO_BLOCK_PTR; + iommu->domid_map =3D ZERO_BLOCK_PTR; } =20 return 0; --- a/xen/drivers/passthrough/vtd/iommu.h +++ b/xen/drivers/passthrough/vtd/iommu.h @@ -87,7 +87,7 @@ #define cap_plmr(c) (((c) >> 5) & 1) #define cap_rwbf(c) (((c) >> 4) & 1) #define cap_afl(c) (((c) >> 3) & 1) -#define cap_ndoms(c) (1 << (4 + 2 * ((c) & 0x7))) +#define cap_ndoms(c) (1U << (4 + 2 * ((c) & 0x7))) =20 /* * Extended Capability Register