From nobody Sat May 18 19:12:43 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=1649311908; cv=pass; d=zohomail.com; s=zohoarc; b=fOBQ3JfI728z9qkF2hsTUI+T0xeFkHGXFbo8FPX2xrbkfRBLkaeBLseLLCcAgRlEeOqGkk/G3Vs7g3VuT1Pi8OXr+qCPzhSmxCkyRxKikFwaOihlwtwRHZ+w6r8zii71VOzMpMwc4uVVYpkLJ1YFCkkcEVb5yghBCfxflxDl/GQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649311908; 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=JnE8xJC6aHLf7QxEU8ahXxNaM953sp4uj3NcYFvGw4w=; b=X3pGrFf7TyTEAiqgvIWwGVV6rTapqvEw1pfSdtsJhYSgiFXME/NDs6X4hqOT2w0NAhGPlWwMK8AvJGVM6tRZLxlOTpPuKgzMrzL8piZOdr0NGD5ud6Yo27zhY9LVkp1EjDKDmhWZIVHvEowY+C3FWLZyVo/k0KVSnV8yEQaodgI= 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 1649311908896882.4001026557155; Wed, 6 Apr 2022 23:11:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.300389.512337 (Exim 4.92) (envelope-from ) id 1ncLMU-0001PC-Fk; Thu, 07 Apr 2022 06:11:18 +0000 Received: by outflank-mailman (output) from mailman id 300389.512337; Thu, 07 Apr 2022 06:11:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ncLMU-0001P5-Cf; Thu, 07 Apr 2022 06:11:18 +0000 Received: by outflank-mailman (input) for mailman id 300389; Thu, 07 Apr 2022 06:11:16 +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 1ncLMS-0001On-BJ for xen-devel@lists.xenproject.org; Thu, 07 Apr 2022 06:11:16 +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 86b0c26a-b639-11ec-8fbc-03012f2f19d4; Thu, 07 Apr 2022 08:11:13 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02lp2053.outbound.protection.outlook.com [104.47.4.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-30-2gvv9xDFNYuVpzB2ZjNOIw-1; Thu, 07 Apr 2022 08:11:11 +0200 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) by DB8PR04MB5596.eurprd04.prod.outlook.com (2603:10a6:10:a2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Thu, 7 Apr 2022 06:11:09 +0000 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476]) by DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476%5]) with mapi id 15.20.5144.022; Thu, 7 Apr 2022 06:11:09 +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: 86b0c26a-b639-11ec-8fbc-03012f2f19d4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649311873; 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=JnE8xJC6aHLf7QxEU8ahXxNaM953sp4uj3NcYFvGw4w=; b=UTuyyBMXvuPlzy6qO41800MS3mTPFHrBC7aGPYs+242oJNxt9gibvALqrLHx5tR+CsK14W p8UakZTE4jOOsFKUWDwBsWlNxkqe0rdhbjt/2WsdvE+57SyCLShSwYxk9iG/Wp+PbSqlIM +pGkwqf7ssi/KapnGMTVYG9DbwnqaZA= X-MC-Unique: 2gvv9xDFNYuVpzB2ZjNOIw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UYJHfxJYTvjphDtDwU6kA7rmjWtZzKsk8cSc9pLYxxVdlrqo1e0AP/z2JDQzpxTp6/GDr6gaxYsEgeOFRz7SF3flwDt0eCjHB1dU/6+UWswvDGYGJcCH74IJgF8OCMrQ4iv+umqR5DwBe0/Z3MSfmapQRyu9ODnqeHuhDa0Ovq8k56oGa+F53BaRVZHVFZly5oafX0T5cUnf4kQA6XRSd318Lo3TgEoVQvmUD+E5Vj4LUYSzRYAQW53y0dYlbLfIFD+5KFCRk6QrgT18ugEhhAKEbbEluAGeiwwMjkBXSHdH6HjxRThvp3RwhOeS3liHhhhQOVuETgTXPYINXpeCNg== 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=JnE8xJC6aHLf7QxEU8ahXxNaM953sp4uj3NcYFvGw4w=; b=MFXTtBz1LsvLiHp2vezzPitN4GvehIZ+gJ/dx3GkArn5Jh+vMsGkXiJdHM6lgFNADhA7r6/7e1jyDxNjJvhuJQrsK90T4Aeoe757O1fRUKyOqpr/CtjES7eXKreFmF3JXOZfOvVUsvwLpmQAIhn+o6DxaeNGNbcjguCoUZgkt420ly8k9N3QhUgBQnI6AAE0F4vAKk2i7WdD1ksxgROb6aaCIbtXXnjnr4cJtKaVjZXY8I9CaG96QoqHbziksYKr/Lmaty1nP/5lu47fRIOO+yy8svBihtEWDZmitodJLHZ+QUU/z1gCCpM82+gCKQp1XfNAM3Mhl+GAEcA6Sc8SRA== 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: <6739cf19-a74a-208d-82e8-28dfde7710f5@suse.com> Date: Thu, 7 Apr 2022 08:11:06 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: [PATCH v2 1/2] VT-d: avoid NULL deref on domain_context_mapping_one() error paths Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Kevin Tian , Andrew Cooper , Paul Durrant References: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> In-Reply-To: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0701CA0008.eurprd07.prod.outlook.com (2603:10a6:203:51::18) To DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f80f7f91-a89c-440c-bd95-08da185d682e X-MS-TrafficTypeDiagnostic: DB8PR04MB5596:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m7qoYDeR6Im35qJmRYTm8ZXmzSGUE8WGGjvKMOegZUelOh/Rv0gXNWXES2ywt8FUWRR3LYdW5Tgq6EfAdWAb0i1OK+1E87KyQnFLFUP5r+/yT/X02gLFu3u3vA/6OZ10je4sCCJMh0rn2Lci6KftlcIvl+/g3qtw9cENvE92lByKMnz0konBz3OVLfyPKCSTNG6TFts+J0MaXmj56eK12UT3A6TMNiIaKRcUaGYZXlIiGnXGD+e90+EA8mHHCVQCQ9kYS66wjs0vupqQqgezeTga9Z0vOfEV15pqb+eA1OCbaih1XWKIYshedhULqllGXFyEmLyXnURPE+YH+oez4eJ7ahBlJspjFmLA2zalMP4xAV6cK6fF24usJILztVVcVHrhtZHJxKJqSSBBRRYqMgq0WerLk0E4/EwCQLXzWA8+RklLNb1/iFl388UV+J0I/rq0Oiz/1NW9ieelCDVFBLAmcTqGCdpp5r43Go5UjeBG2GPoTTDXJHC6cNoz/+h70bFRGsKJ4s/JOKHDBGC/uttqqGq7CIEGw7B/akWYPFC5WbfCGMYnFG6Vdf8/C0AdpzfbkGy0/BL2EbKrc2YcYKHXQJYr0yLn37QVx/fUOUfEmP7L6rYVwUFobeBphypJp1iM6DekkhN3vwty7tWXazCVx8fhlX4Q6RmnVnqx/7lj/BzltfWjyBmhbZLrCgT+mhKbEw3YyXWVGKTfAEyBNX60PDOkgrMUIhzddPyahKBEAQkQJd3+PbHbjiAVXZ77 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8616.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2906002)(2616005)(6486002)(54906003)(26005)(186003)(38100700002)(5660300002)(6916009)(316002)(36756003)(66946007)(8936002)(31696002)(6506007)(6666004)(508600001)(31686004)(8676002)(4326008)(86362001)(66476007)(6512007)(66556008)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YzBYbGgvN2dMMThDMDFsaUR4T3VhdGhxdTNwOHVxeXJMQUtLOVlsMldGYkEw?= =?utf-8?B?aTVpdTEzM3JENHd0Nm9Od05raXNmSHhiWDBUTjhKRUZGOU1yazQrbDFUZnUv?= =?utf-8?B?S2pmTzZ6am1WQ1NuN1pXblpxc3V0QVdVdy9TaXRkZ3B3VlNrMzZvdWJVeGZi?= =?utf-8?B?N3BRSFFhY3k5Y3FjbTFYTkZJNHFvRjJtVjFLeS9wUmhVanlMNUJNQ0Fxc0Y2?= =?utf-8?B?ckY4WGdpN0pGU2lLaVRUeVAvazZQTU9nanNyeU1tcXBGSjBOM3QzWnh0Tkky?= =?utf-8?B?ZHBXaS9pM3M0UWdJeHZITm01OGVoaXJCd0dCVWJkYVNtRDVQblhXbnVNcUN4?= =?utf-8?B?YzFZeHJoY3M0emhZaGJtLzRwN3hFbEF6KzB0TGJEeHN3SEhVUVNaSE5NVDdj?= =?utf-8?B?ZEJLY3pYOEswMG5yaFo5bHRockZONzZJOG16aHJVZXcxWGdMNXV3SEZ3YldU?= =?utf-8?B?dzlEOFppcFFQRjZ1cWF5NFVmb2RkRGJWSXhkWnZiRkZXMVNrcmNvL01MUkRL?= =?utf-8?B?WnZsdDhrc1p5Y3JpcmZwdnN2ajJqSGx5czE2cE92OXZnRVlUbWlpL0JPTjND?= =?utf-8?B?TzdLdzZHNkd6cXpTOFppSExHTWVFQVJQTTJnUS9yejZGcGlCeUpNY2R0b0Na?= =?utf-8?B?emNrUjM5aHYzZ1Ixc0tQR3ZNejEwOGxLRVErNGd2THhwdmdWeFg3WUpQbmtO?= =?utf-8?B?RTAwQjlKV1FaKzhBeGV2ZTgzSDVtK2NwaFIxSmpwTnp2dmp0NXgrRGk1NXRr?= =?utf-8?B?YTFkT3FPWUpTdUR0MzlKUXRUcUF2dllVS2VUSmVwYVEwQW50bnBvc1FwZjBR?= =?utf-8?B?MVFBU1FsYnd2Z2xBRlJXWU9SYmdGYzlBOGwzTGxBMlVpcE9xZmQzSjVZaUM5?= =?utf-8?B?VE9qR2txaG10MGdmbWFpVFFHVmJaN2h1U0p0Vk9VbjBoOVc2VlljMnU3bnlT?= =?utf-8?B?WVVIc3laWWtRazMyT0xpd2s0ckRpR3JJRGpIY3BhYXVjSXlLa29ZK0s5R1ZF?= =?utf-8?B?c1dvZVZvcGJhWndDeWl6b3FtMGgwL0cvQnBpaUhyeFZVL0lpMEtZUHV4b2VN?= =?utf-8?B?aTZJSW5IendhNnBzZVRETGtDK2hFQWQ1Sk9YUFpqR2ZwSGFka25XUUs1SXFB?= =?utf-8?B?ZW5BT3p3c2lzUEx0REJmWDl6cUZFV1YraURieWMwdVdyR0hRMHduelVmQzdL?= =?utf-8?B?T2UwVjBTdFcyTnN4Q2FYK1dWaW5LUHBSNi9hNmUwemlteDJ3b0VqbzQwbzVE?= =?utf-8?B?R3l5YXJvQ2xxK1NxNnBobkd4dTdrN0QwYlhGalYzajZ2eTRuY2FtKzA4OUhp?= =?utf-8?B?V2pmQysrcEo1VHEvb2t4RkJiK0xxaVFyU1pqNHdxUEkrQ0RkOGdBYVVrcHhF?= =?utf-8?B?NGdqYVNzL2diMnVFSGNQMTVBQjlQRGd0Mk1SamFldi9MZlpsTjdCU1VlOHN3?= =?utf-8?B?MmtLTnRlaktuVE45TEhadUo0ZDErRU9haXFuN2NPditBdzBVdmlZK2duTXhm?= =?utf-8?B?ZU54TXBaWWNOWk9SSXhiZ2xZNEJ1eWQ5MjJKaWpxVTNTWUJwTzI5eEY0L2Fv?= =?utf-8?B?VFBLQ09ybFB6WVU3bWhhZnE3TEsvYnY3N1lhY0JTZnFUTXpmTnhOdHhSQVZn?= =?utf-8?B?MGNmclA3UVh2WUlSZHUxbXpqSGI2cXpsSFVtZFpaWVNoM3RFSUZrY0R5cWF1?= =?utf-8?B?SGtpWVBhVXNyVVZYUnBNZFVWTWtHSHlpcGpiZjVYdEpXdTdUN0lQV2oySkVu?= =?utf-8?B?S05UUEVqbnhUREcvYWwxZnM4V2VQS1VmRzdia05JVFBBSDdYQm1hNUVrU1E5?= =?utf-8?B?OG84a2FRc0pyNWY2b2RVU1lqWHkvTDNOaHNmQlZXUnJ5aE04cjdocjYzc3lV?= =?utf-8?B?V0hYK1FZazFmNjMrSHpkSVhGeUVSTkFReXRJRlJ1WWsraGxsZmF0TmJKY09v?= =?utf-8?B?akp2OExMZWdkWXBramM5ZnJuZFRRelFkcHdZamtSZFNRME1RQWJKSE15T3Nu?= =?utf-8?B?UWpNSHgxcFZMZm5KSmtnMjJOQnhDWkQ4YVUrdWxJZWFMUHNHN2N2MVhaOWRJ?= =?utf-8?B?VkNHNCtta0lvallwendCcTU5UEwzZ0ZGRWFadjQ1WlNQQ3dxVlJBeDhEalJv?= =?utf-8?B?d0RsSWNZSTB6Qkc0d1dnbkNiN0tIWmFlbFVtQmlmUDJ0VTRlTDNkWS8wSnNK?= =?utf-8?B?ZU40N05SVWtuNU8rVytJeEVsRzU5VGJ5alNVdmJObEJKdXQzazdmRlpqanB2?= =?utf-8?B?SFh2U1NZWHRvZzJ5Q25YK0JTeDFJQy9qK2oxK1A2aXVEMys4V01GRFJveXdw?= =?utf-8?B?bmFWNHFWcDFCeEswME1ZWU1FNUdHZXFmclp3ZmtNeHY3bEVmUWtxZz09?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f80f7f91-a89c-440c-bd95-08da185d682e X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8616.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 06:11:09.3701 (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: T4efavg+Hg4fLY5etLUBzC+Q5RIyjjnBWQdsk087jaC7pldJQKJzi7iNf9UT2rDjcVsqb2Tj64GyXflnBw9wxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB5596 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1649311910249100001 Content-Type: text/plain; charset="utf-8" First there's a printk() which actually wrongly uses pdev in the first place: We want to log the coordinates of the (perhaps fake) device acted upon, which may not be pdev. Then it was quite pointless for eb19326a328d ("VT-d: prepare for per- device quarantine page tables (part I)") to add a domid_t parameter to domain_context_unmap_one(): It's only used to pass back here via me_wifi_quirk() -> map_me_phantom_function(). Drop the parameter again. Finally there's the invocation of domain_context_mapping_one(), which needs to be passed the correct domain ID. Avoid taking that path when pdev is NULL and the quarantine state is what would need restoring to. This means we can't security-support PCI devices with RMRRs (if such exist in practice) any longer. Fixes: 8f41e481b485 ("VT-d: re-assign devices directly") Fixes: 14dd241aad8a ("IOMMU/x86: use per-device page tables for quarantinin= g") Coverity ID: 1503784 Reported-by: Andrew Cooper Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- v2: Drop SUPPORT.md addition. Adjust comment. Extend another comment. --- a/xen/drivers/passthrough/vtd/extern.h +++ b/xen/drivers/passthrough/vtd/extern.h @@ -85,7 +85,7 @@ int domain_context_mapping_one(struct do const struct pci_dev *pdev, domid_t domid, paddr_t pgd_maddr, unsigned int mode); int domain_context_unmap_one(struct domain *domain, struct vtd_iommu *iomm= u, - uint8_t bus, uint8_t devfn, domid_t domid); + uint8_t bus, uint8_t devfn); int cf_check intel_iommu_get_reserved_device_memory( iommu_grdm_t *func, void *ctxt); =20 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1533,7 +1533,7 @@ int domain_context_mapping_one( check_cleanup_domid_map(domain, pdev, iommu); printk(XENLOG_ERR "%pp: unexpected context entry %016lx_%016lx (expected = %016lx_%016lx)\n", - &PCI_SBDF3(pdev->seg, pdev->bus, devfn), + &PCI_SBDF3(seg, bus, devfn), (uint64_t)(res >> 64), (uint64_t)res, (uint64_t)(old >> 64), (uint64_t)old); rc =3D -EILSEQ; @@ -1601,9 +1601,14 @@ int domain_context_mapping_one( =20 if ( rc ) { - if ( !prev_dom ) - ret =3D domain_context_unmap_one(domain, iommu, bus, devfn, - DEVICE_DOMID(domain, pdev)); + if ( !prev_dom || + /* + * Unmapping here means DEV_TYPE_PCI devices with RMRRs (if s= uch + * exist) would cause problems if such a region was actually + * accessed. + */ + (prev_dom =3D=3D dom_io && !pdev) ) + ret =3D domain_context_unmap_one(domain, iommu, bus, devfn); else if ( prev_dom !=3D domain ) /* Avoid infinite recursion. */ ret =3D domain_context_mapping_one(prev_dom, iommu, bus, devfn= , pdev, DEVICE_DOMID(prev_dom, pdev), @@ -1744,7 +1749,9 @@ static int domain_context_mapping(struct * Strictly speaking if the device is the only one behind this bri= dge * and the only one with this (secbus,0,0) tuple, it could be allo= wed * to be re-assigned regardless of RMRR presence. But let's deal = with - * that case only if it is actually found in the wild. + * that case only if it is actually found in the wild. Note that + * dealing with this just here would still not render the operation + * secure. */ else if ( prev_present && (mode & MAP_WITH_RMRR) && domain !=3D pdev->domain ) @@ -1809,7 +1816,7 @@ static int domain_context_mapping(struct int domain_context_unmap_one( struct domain *domain, struct vtd_iommu *iommu, - uint8_t bus, uint8_t devfn, domid_t domid) + uint8_t bus, uint8_t devfn) { struct context_entry *context, *context_entries; u64 maddr; @@ -1867,7 +1874,8 @@ int domain_context_unmap_one( unmap_vtd_domain_page(context_entries); =20 if ( !iommu->drhd->segment && !rc ) - rc =3D me_wifi_quirk(domain, bus, devfn, domid, 0, UNMAP_ME_PHANTO= M_FUNC); + rc =3D me_wifi_quirk(domain, bus, devfn, DOMID_INVALID, 0, + UNMAP_ME_PHANTOM_FUNC); =20 if ( rc && !is_hardware_domain(domain) && domain !=3D dom_io ) { @@ -1916,8 +1924,7 @@ static const struct acpi_drhd_unit *doma if ( iommu_debug ) printk(VTDPREFIX "%pd:PCIe: unmap %pp\n", domain, &PCI_SBDF3(seg, bus, devfn)); - ret =3D domain_context_unmap_one(domain, iommu, bus, devfn, - DEVICE_DOMID(domain, pdev)); + ret =3D domain_context_unmap_one(domain, iommu, bus, devfn); if ( !ret && devfn =3D=3D pdev->devfn && ats_device(pdev, drhd) > = 0 ) disable_ats_device(pdev); =20 @@ -1930,8 +1937,7 @@ static const struct acpi_drhd_unit *doma if ( iommu_debug ) printk(VTDPREFIX "%pd:PCI: unmap %pp\n", domain, &PCI_SBDF3(seg, bus, devfn)); - ret =3D domain_context_unmap_one(domain, iommu, bus, devfn, - DEVICE_DOMID(domain, pdev)); + ret =3D domain_context_unmap_one(domain, iommu, bus, devfn); if ( ret ) break; =20 @@ -1954,12 +1960,10 @@ static const struct acpi_drhd_unit *doma break; } =20 - ret =3D domain_context_unmap_one(domain, iommu, tmp_bus, tmp_devfn, - DEVICE_DOMID(domain, pdev)); + ret =3D domain_context_unmap_one(domain, iommu, tmp_bus, tmp_devfn= ); /* PCIe to PCI/PCIx bridge */ if ( !ret && pdev_type(seg, tmp_bus, tmp_devfn) =3D=3D DEV_TYPE_PC= Ie2PCI_BRIDGE ) - ret =3D domain_context_unmap_one(domain, iommu, secbus, 0, - DEVICE_DOMID(domain, pdev)); + ret =3D domain_context_unmap_one(domain, iommu, secbus, 0); =20 break; =20 --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -427,7 +427,7 @@ static int __must_check map_me_phantom_f domid, pgd_maddr, mode); else rc =3D domain_context_unmap_one(domain, drhd->iommu, 0, - PCI_DEVFN(dev, 7), domid); + PCI_DEVFN(dev, 7)); =20 return rc; } From nobody Sat May 18 19:12:43 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=1649311941; cv=pass; d=zohomail.com; s=zohoarc; b=mLsyNdQrDokEeL1XO2jAt2u9+d0tGgDEDybyJU5fIggiK9iNhaJPpaP+z23p3nEyjtyrkeNC2HisBTJEKRgDWVvj9B1fsKuX7+kNlJ6pXvf6nGKfZxEKcEgtoF9OQs3g/ytbYrsKhszIL3OyhQ/czty8to03O0Lu8qKyngx6eLU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649311941; 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=E6G0lhWDzKngo22Cqa5yFBt1cU5VEIbGGSfIbs2WoXA=; b=SFHAw7ggetaPsqasSk9Mc7v3aN6wq8unZ1aHIRdv0o0eAkyGpT3GJux7I8nLk+4/VSaJXLA8F2JELSOrlrcCvWHVx3aM9wBkIkdojJrXjfmMPyQSfB8/gyjpYaPRTVFhNpS2tblB8pE2TS73gn/ttqU1tOniUYe19zcJ7GZY/Y0= 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 1649311941183896.2305249407335; Wed, 6 Apr 2022 23:12:21 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.300391.512348 (Exim 4.92) (envelope-from ) id 1ncLN5-0001uo-PF; Thu, 07 Apr 2022 06:11:55 +0000 Received: by outflank-mailman (output) from mailman id 300391.512348; Thu, 07 Apr 2022 06:11:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ncLN5-0001uh-M6; Thu, 07 Apr 2022 06:11:55 +0000 Received: by outflank-mailman (input) for mailman id 300391; Thu, 07 Apr 2022 06:11:54 +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 1ncLN4-0001On-6m for xen-devel@lists.xenproject.org; Thu, 07 Apr 2022 06:11:54 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9e871d36-b639-11ec-8fbc-03012f2f19d4; Thu, 07 Apr 2022 08:11:53 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2059.outbound.protection.outlook.com [104.47.2.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-3-yAqrafMGM3yC60nFVaQr1A-1; Thu, 07 Apr 2022 08:11:49 +0200 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) by AM0PR0402MB3620.eurprd04.prod.outlook.com (2603:10a6:208:1c::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.22; Thu, 7 Apr 2022 06:11:48 +0000 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476]) by DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476%5]) with mapi id 15.20.5144.022; Thu, 7 Apr 2022 06:11:47 +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: 9e871d36-b639-11ec-8fbc-03012f2f19d4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649311913; 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=E6G0lhWDzKngo22Cqa5yFBt1cU5VEIbGGSfIbs2WoXA=; b=VdcbK9z14RwkQr9+l4dhRlhtKNhJaBC9MzSYRAZH5C/JAsCY83YLYpZUsLTig/Hbp2sFaU z75fwLGUhNKjJ7cfXLdhTrkljQE49F/SdKJEx7h3RYXb2Tapl1Zo+sWQMu3F0B9XtcR/Li gNgmzlWkjBgCPGCxsmvex+UFm/jR5Lg= X-MC-Unique: yAqrafMGM3yC60nFVaQr1A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dq3lw7XZacNFhs1Cz0SGnmrmzWQ1dLsL9kg599Nag5GAylMP/gf7osFv9/3nxTxCdjTbComiXVF5oFx/mz54do3wnjn9XdZqsAMqyrHOVZyZKy0wumB2t06W6d7+Jjax3v0GLoGTsmkewYv5gwx6Yc2RYek+2yl7dahBx1ws5GyObTkri5hhtmwywrw/M8mIyzIjY5YK9PNyaEN7dvfQ3qgvA1OaQUAxVx1GXDvVQLuyTQAFlQq6cXfFpO/+taskf/voIIxv91AcE4LY1KQvC4EGFN12hItffyDmBISj32aBigBpuhe0KQA3LTlUSL1XFtOjsAUl0m5aiBWAiH154A== 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=E6G0lhWDzKngo22Cqa5yFBt1cU5VEIbGGSfIbs2WoXA=; b=TxIaEUflRhoixXGlv21DitWLc2WgrCcWSPRRQin23/TerJGzTXknrBavIx76RI2olPDaCWebJU+IxA0JBG+0XECamcW+2iDAoU9JtuD0SCQYr7VMDnf6LmZmawi3C99MRxubEgvhv6YzKw5vDrBBOSaHBZtnR7fJRqXC94sLsUnBD438GE75ArC+UHComH1iYt8lVhZJbxHtpwUkIC062vn11Ydc+S77Jo33Ro3Pg7RC2W5KeehK6x4K1d79v5Dh+gtj9Ck2QErBwHvDNYzaM/kBU3lha8td3C1gNQIEooJO7B8k6jOk8VpkBlaSlva+bsyllK4BTmdcaiTg7CW93Q== 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: Thu, 7 Apr 2022 08:11:45 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: [PATCH v2 2/2] VT-d: avoid infinite recursion on domain_context_mapping_one() error path Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Kevin Tian , Andrew Cooper , Paul Durrant References: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> In-Reply-To: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5PR0701CA0005.eurprd07.prod.outlook.com (2603:10a6:203:51::15) To DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 54631877-aa11-48ee-3c42-08da185d7f51 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3620:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z2xD/SLGybNKvML+sa9c/lvtMeKbi1JMbA8CJ3pKz/Wu+per61Iv/8QXWAPCgmRnMsq2WK2MF6SkVXnhyOy1wiXGG2LsMBRVXcrI52gzO8DpOJXSYFzlme+PT/0zgZ8wdZkPAl5q3B/lFUU/t2r8U3bla9ExRPKO0g1uJMm62AWOdULlte6mS2k4mMGHeBJSnEA7l5/WJbX1WE1qXxiU9ZNHeRG5jFqflsiPRD472ucAmfOuLIua9tG5nCcVO+0b+5E57+k0D7X1o7vl1wFyOQ3LTZSocn1BFgzmFMMS74M6J4wUGfTaWBoFwtjekgiap/vkZdpi+mf4kynAGdZf3AtOFwdUkm021sxFSSn/l7sAhatiVQZXxecpFnPoTZKqgkc2rDw5ANUThi8TSA3yj13oApNNUB0gdD3YRJdKVB8zetN7rekwrD320JC3QZ/yaxbh1d8Eh+Ed5BXZa/s2TCT4Tej9tm7ho/pqt+fpsyJ43GcRgYDlzVhODRkKmyef6x3plyL+woxHGcP2u22KCGgYTpwe4M2bdkgtoK4QLAly1HJw/h6yEp1k+gA4QWb5tijbANxu/duKW5dIZRX6CYoQy86HqaGTR4tfnLrhQVNpuxcGsv3y4NNGE/OlWmjCNQ5noz08YwSp6ckrBdesKAXa6PzuLQ26CTrhnxCYwCJIt1zVLQYy7DVeFnjrs1VRBk3usybj9CiSsjM2NhS/A5TzAwKzjdz2HO7p5LtpEJxXreeaZQNqMoC4IJ2PWQE7 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8616.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(4326008)(508600001)(8676002)(31686004)(36756003)(6506007)(6486002)(38100700002)(66946007)(66556008)(66476007)(2616005)(8936002)(31696002)(26005)(6512007)(86362001)(54906003)(5660300002)(316002)(186003)(6916009)(83380400001)(2906002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bGd5M0gzV00yaCtKUVZRSmdwR2VFUU9FZTZBenpYdFRteXRsMVlud2k1RGt2?= =?utf-8?B?NGhHRXpmMXRMS0ltSXoyZ2Q3ekwvSFBnZlZJUUJxcTBEenhIdmRCdnZ3aTc5?= =?utf-8?B?Y3JmbXlVL3lCVHFtdGs2Z1dSVGNCU04zMWV0TFlKakJHN29qY2s0TTVHR3FS?= =?utf-8?B?WXVtRWZadlR5S1c1d2RDeTY5dDh1dHNVRmcrUW9DSWlEN1FldVloREpMZkpF?= =?utf-8?B?OUlwOWQ0eFoxdHN2SGg2S0FjSy91NUhKK05TMFZzcUhHdjlDYlk4UjkrYksy?= =?utf-8?B?YUdXTElFZVFTaU00aWhsSlJDQnJzZjNiZFEvZlgwdVF0Z1dReDJFRGxYeWNi?= =?utf-8?B?ZlpEckxpK2JWTVZ3YVB6YWdWL1J5V0JIMWRwcmJub0p0TW5aN0FQWGxWOW5u?= =?utf-8?B?VkN3SlpOWXNJcmpxS3RBaEtoSk41US9lWHdza1VFQVlXeEIzVXdCLzh1alRJ?= =?utf-8?B?czFQSHRZd1BIYVJhNi95QllvM1BidHJITUI4RDdyZ1dBSmNqanNTSkdTMmZJ?= =?utf-8?B?Y2wzaEJzNEdyOWh0N1RNZU5WQUlWUXIvRFRjc1pCcW42K0ZXenppL2tpbk14?= =?utf-8?B?VlkvVnhZQkVYL21TV2FMMTdJK0ozSnc3c1NGUi92R254OWRyQ3hiY3RXbW1u?= =?utf-8?B?SWFnTkZxQ2d0TXJnYzVNUExYdVRTcVFyQWZlcndLaEZXa0xyc1BmdU9KREw1?= =?utf-8?B?Um44NytiQ3hqR2VuZzdZMFg2ZDdKNEQxVnZsVkdmS0NqcWxOY1g3SzhTbU02?= =?utf-8?B?OTQvTUZsVkVQV2lHNlNybmxmQytlcHlvVnNUMFhiM0VER0hGdm1MNkNRVzBa?= =?utf-8?B?K3BTSmFaeTJHbEtlNVVNUDlBeWNDbWovK2xkR2swTys4QjhTbFlLd1psRWxn?= =?utf-8?B?bnhlZlViTFhlWEFjRFZxYUp0RFVoR0FXTEF2MVR5MjNWMG80WUl2c0QzN2dX?= =?utf-8?B?a211UkpNWlRmcDNnR2xXaVQycGRsZGhpZW11ek1HcmtjaTFWNEQxcGRnL3hL?= =?utf-8?B?MzQ2TWJLWXl1Rmc2dFVYVGdIT3R3Rms5OEZMTnFKNFdKZit4UjFFQWlLbm80?= =?utf-8?B?dHhueSs3SFBNQm5WbWU3WTYxWDdFT2tSTHZ3K0IveFpFZ0FCNEJSV3ZMaEJS?= =?utf-8?B?NVNkcndReklRcjZuVWk4dXIrcHZhKzN5TDJXTjFkWW05cGRyaEplaGNkWURn?= =?utf-8?B?Z3FFRU5NVVMyVWt6d2FVOWlxcTFURHpobThPeTNBajN5b2ZDU0w4bktKSEhG?= =?utf-8?B?b3MvTFVXeHQzdjBXSHNUWFloMFdhM1pPS1JKRXVLNE5SWjUzNmtlTmpZV0pt?= =?utf-8?B?eEJDWFpTb3h4T3oxeXZMdXNITmdZdk1sRzVYOFVDZ3NtVjRxaDlMZ0FXbkZ2?= =?utf-8?B?WXVLdDQvVEViaUZsdTgzNk81K1FIdlcvZUxnNjVXVngvQzVEUXJBSzY2dWRY?= =?utf-8?B?Vlp2NjZGcFNUK0c2VXJvbHE3TzFWbW1kWThzZVNYZFNXSjdYcDhNMDdiVVBU?= =?utf-8?B?WG1OTWZzQ2RhVm56OTlxYkdkajhuVndGWUNxOEk1YW9QM0I0L0hsVmdaQWJE?= =?utf-8?B?M3NiVFVkOEloTlRuZVZTdkwyeHpuckpKand5eldqbmYrVjdBOFRwMGFkQlBH?= =?utf-8?B?eEhXWm5lWEY4NWd2OWR3bVVRc2dGUXJENnhNcVJJSVVYTnhrZkpkcXJrRjhV?= =?utf-8?B?N2lzS2w3L1Bvbm5heklHY3I4QW5kRFduR2tEbEo0S0lyUE1tUVBSZUkvYWpM?= =?utf-8?B?TVZoU1ZJZHRWK2taVEhpdTluTmFuU1ZFQU0wczhqU09rRmNwT0NtV1A2Mkdt?= =?utf-8?B?YjVOTHh2WStsWXBndlVER0kwTzFObU03ekpNYThTaHdyV0UvbGpka3RnbGdN?= =?utf-8?B?Q0FKSC9jWEJ1UkkwS3JrWXc3YlFRVkN6OGpNMFQvYUcwcytqTVBnNGUwbFl5?= =?utf-8?B?cDVUTFU2Nmh4QlloalpBc0JyeXdvOGk0aXBTRHhzcWYwZHo4ZVNkVDJmTnVF?= =?utf-8?B?Y05ja2tGVEJNaUtQbkh6N05kY29mam5sYlpObVN0WjIxYWltcjg3RHkxcytr?= =?utf-8?B?T1AzY2Y2U0xlMnBmdUhTK0F0RWx3eVVNdjFJYmkxam53V2ZkMnE4RWFZWStj?= =?utf-8?B?NEpqRlpSeXpYSkwzODd0K2dSb3VzalBoTmZBenhmcWU3N0poWTl0QUI5UDBt?= =?utf-8?B?aGt5ODNkMGM4eFMwb2toTlE5cVM5bDhBTGpOV3k4eDNvc3E3WGFCc2svQnV3?= =?utf-8?B?L1hycjE0d1pheUJjaHRqQzk0UFF0MlVsanpRSE1lS0Z5L2RISVBodHFCd3dU?= =?utf-8?B?YzBhakZBeXJHYlp0NFFjc3NEaW1pMEMxKzNTVHlzVWlBK0YwYjk1Zz09?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54631877-aa11-48ee-3c42-08da185d7f51 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8616.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 06:11:47.8869 (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: 8aIh2LfGPAsNOHAsS4hbnDvr4HLQewkijJrlZAgZGGsdFIggFaFWqmw4GDnoT6LFkDjpi77RzsRFyDfN2nI94A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3620 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1649311943459100001 Content-Type: text/plain; charset="utf-8" Despite the comment there infinite recursion was still possible, by flip-flopping between two domains. This is because prev_dom is derived from the DID found in the context entry, which was already updated by the time error recovery is invoked. Simply introduce yet another mode flag to prevent rolling back an in-progress roll-back of a prior mapping attempt. Also drop the existing recursion prevention for having been dead anyway: Earlier in the function we already bail when prev_dom =3D=3D domain. Fixes: 8f41e481b485 ("VT-d: re-assign devices directly") Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- v2: Extend scope of the approach taken. Leverage for some cleanup. --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1599,7 +1599,7 @@ int domain_context_mapping_one( if ( !seg && !rc ) rc =3D me_wifi_quirk(domain, bus, devfn, domid, pgd_maddr, mode); =20 - if ( rc ) + if ( rc && !(mode & MAP_ERROR_RECOVERY) ) { if ( !prev_dom || /* @@ -1609,13 +1609,12 @@ int domain_context_mapping_one( */ (prev_dom =3D=3D dom_io && !pdev) ) ret =3D domain_context_unmap_one(domain, iommu, bus, devfn); - else if ( prev_dom !=3D domain ) /* Avoid infinite recursion. */ + else ret =3D domain_context_mapping_one(prev_dom, iommu, bus, devfn= , pdev, DEVICE_DOMID(prev_dom, pdev), DEVICE_PGTABLE(prev_dom, pdev= ), - mode & MAP_WITH_RMRR) < 0; - else - ret =3D 1; + (mode & MAP_WITH_RMRR) | + MAP_ERROR_RECOVERY) < 0; =20 if ( !ret && pdev && pdev->devfn =3D=3D devfn ) check_cleanup_domid_map(domain, pdev, iommu); --- a/xen/drivers/passthrough/vtd/vtd.h +++ b/xen/drivers/passthrough/vtd/vtd.h @@ -29,7 +29,8 @@ #define MAP_WITH_RMRR (1u << 0) #define MAP_OWNER_DYING (1u << 1) #define MAP_SINGLE_DEVICE (1u << 2) -#define UNMAP_ME_PHANTOM_FUNC (1u << 3) +#define MAP_ERROR_RECOVERY (1u << 3) +#define UNMAP_ME_PHANTOM_FUNC (1u << 4) =20 /* Allow for both IOAPIC and IOSAPIC. */ #define IO_xAPIC_route_entry IO_APIC_route_entry From nobody Sat May 18 19:12:43 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=1649323711; cv=pass; d=zohomail.com; s=zohoarc; b=ftsuQPDTHe06I+3y0LQBCJd12POiAnX7z/bLzxOtw2HpP3DkhyIK90tsp8d3nqeogBVRhi+Ux/49U4x82wkQt35p3Uq8DwFXf6GcOEXQVYne07dnPjfJlvz6FdxoyjRqqaG5YqkwSsCTTIf25cbqf7GVTmPU6VnMOp2Z4nUxVE8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649323711; 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=0IrZylJTpCAzfeSRjCQ3TVLzNp2tEk2Z4BxiHpu3jec=; b=Bqu5ozMioZhURtlOWEJcGl+L6p1smP2a54eLe+NnMlOXjBKKeP02Y5pGcz71+CvuGdDXY1ptU/8gXX8cCCdLE+JIndfWyJBBY8eyZcS7Agfm/J+QNHqedpCDhEmXXSUaagHujW/AeGa/cS4pmuYFYGRJ9nxiRWDLGhhT960Jfsc= 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 1649323711071666.8450246702231; Thu, 7 Apr 2022 02:28:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.300568.512752 (Exim 4.92) (envelope-from ) id 1ncOQq-0007mK-4n; Thu, 07 Apr 2022 09:28:00 +0000 Received: by outflank-mailman (output) from mailman id 300568.512752; Thu, 07 Apr 2022 09:28:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ncOQq-0007mD-1e; Thu, 07 Apr 2022 09:28:00 +0000 Received: by outflank-mailman (input) for mailman id 300568; Thu, 07 Apr 2022 09:27:58 +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 1ncOQo-0007m7-NM for xen-devel@lists.xenproject.org; Thu, 07 Apr 2022 09:27:58 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 02976ab3-b655-11ec-8fbc-03012f2f19d4; Thu, 07 Apr 2022 11:27:57 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2059.outbound.protection.outlook.com [104.47.6.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-5-9otTH9cQNGysJqkhjb3Xyg-1; Thu, 07 Apr 2022 11:27:56 +0200 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) by AM0PR04MB5507.eurprd04.prod.outlook.com (2603:10a6:208:110::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 09:27:55 +0000 Received: from DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476]) by DU2PR04MB8616.eurprd04.prod.outlook.com ([fe80::914d:e08d:7798:8476%5]) with mapi id 15.20.5144.022; Thu, 7 Apr 2022 09:27:55 +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: 02976ab3-b655-11ec-8fbc-03012f2f19d4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649323677; 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=0IrZylJTpCAzfeSRjCQ3TVLzNp2tEk2Z4BxiHpu3jec=; b=hg6KESjQmQE3iAhs0tDQRJHQNamemz2TRxP+zdYa4ji0rnE+WYULivPXpaDIVFIyHjfXSQ B+LIjm/Wln+5WTvVpQVe4aB+wn4CuOvfa23LFL/wyw/fxAeV+G1HtpH9XGMlcoeOzNhSgV AdnoldSHwgPEJDOV/mb2iq9VHXJ0+/Y= X-MC-Unique: 9otTH9cQNGysJqkhjb3Xyg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cKk6qagDZQFV3w5j38n2fD5jpJ1jicuw/eIZoPniNXGyTlIHc9RaTXRmpGmJ8rV6d8uJ5xhKEyzpXxyYG3qhZAFHchJ/41KW9uVIMiVu+sGUixXTcDYIJB70gmkY6Mrwbb0+mStvhQFfu5a/aEvKRCvzV4OvmrztVLXkqBqN02jByZi6kb8Ph7WWfM1N77fGl08zd/DX62+86IFg325Dao0zBVTFdkaCczWZTZuCxRlbScSN9gzllNCSkS/lZl7uIv5TiK8Oxh5/XlNjclJwcV+Uhx+dZ+EpdKV5mQGXjaOgh3g+48UP6XZS5iPMyCGdi4nKxi2pJ+KDTFIVYMlFGA== 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=0IrZylJTpCAzfeSRjCQ3TVLzNp2tEk2Z4BxiHpu3jec=; b=bBg+IaoNUordQHDzpuCZ9riviFxnSczYx4wJPC4devL+OXB/v2jBoyYGJyeOHbDdA1Dn/l8gnrpVPMoACkqYXtqMbNzjbBx/NxdVN8x2ZqmT893MeAhJlENMEWQ/64UPENJhNRIQaIR0EW908kBXxjPaSim36xcoC0LZXTxzSx1iY1Rif2Z7LTyzduHYlV3skBryfJ6kXU/Jt+QZmbTN9ISXdmn6cJVhr0OqCVI4y9eZitz3i7xzzuuSbaSByAGm4eYa6YO/evteocIhDjB78VBm+6lfLW60kfC2ThSAg0ABHwxy3PoGDUlLlnFBQhizbzI3qy3WhUOaIn9Oh0tEVw== 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: <7671478f-e7c0-c43e-6395-1adc70333e04@suse.com> Date: Thu, 7 Apr 2022 11:27:53 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: [PATCH v2 0.9/2] VT-d: don't needlessly look up DID Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Kevin Tian , Andrew Cooper , Paul Durrant References: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> In-Reply-To: <6e1c7faf-d1ea-1a61-5452-9dec5b8fd221@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM5P194CA0010.EURP194.PROD.OUTLOOK.COM (2603:10a6:203:8f::20) To DU2PR04MB8616.eurprd04.prod.outlook.com (2603:10a6:10:2db::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5cdd8ea7-612f-4902-7572-08da1878e562 X-MS-TrafficTypeDiagnostic: AM0PR04MB5507:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xezOVYSmxcYXWldNOhPvZNbFmg30dC/hKzq7hDgQt2ZOqjKm57qgXKFZPUX2Z5/pKk7Cr+Xm8+lWUsGD7JRuD0+p4ec3vHsP9++RA8367yjfI7t1biBUxEI3HyGFUFGWY4OTa+zMLj4Ua4WxeSp8KCfeHMafslJ3YsArZPNp6K6DyDQWiBZpfe++fP98Bn2ps0orUZm5kH71n6oBt1cmLggZJaQzocEsXe5r1NAPNerWtOVX3pWTpYsTHDzZqm/cZiYDjk54+FTUqEhaNOJ45aAR7w61lMKpLxoNHBdC8YlybqOmEM8dF6Bx6eA18z5yx2sREB0kWWwztBqtQylfcyz/Qdzya2+2zEnU1ZGYatUVDsezClD/ZxIlZvGCoR3zaCBB4vSzKr4IppFHhhjE3rkq3DahdqbEnBGOGGoy0FJ4YGYo/Izm7rZBz7de7rAbm+pytvyLjFgq9kjmY1/3UMdTbFatNSK04JWev6F23iCXFYbwTOryuGD3tnMFvLJ20oHHvB/PULyrsYKd/8uVC3fISBJYWg6ox5wL2+XeX+U4NMLzT2JiWCVgzm/wxVhzGAx10EkVZ1t3B8a3M+YxuiUjF99ZKFsRyyQlZYXmHSoNOG8xaa9kV0+v3cVmVh/chk4B6/XPolSJX6arffzYcg+JUKXSf7/KcXHcAt5S2vIvGAbEUDJ5PVH05DzOWDAZ1OnkL/55MyLQS0h/9gnvg0jwNhU3/y08Wo7cvMoq3Qc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8616.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6486002)(6916009)(6506007)(6512007)(26005)(54906003)(316002)(2906002)(83380400001)(2616005)(186003)(38100700002)(8676002)(66476007)(4326008)(8936002)(66556008)(66946007)(31686004)(5660300002)(86362001)(31696002)(36756003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?by95UFJYTytkanFxNmJoUXIveWRUTXFuRmU3ZkljZkN5OXVSelVBWkhuRHcy?= =?utf-8?B?cWRPbzVSZG1wek9XbjBicnZrejR3U2drOHZLdkxVVnBBZnNrb2RkcUE2K0NY?= =?utf-8?B?WUJTSDZxMmw3M3ZDQkJ5d1lUbi9CVk1XY1dwK1dITzJhOHJWaWtDVmJPWEZQ?= =?utf-8?B?cDJjMGg5QzJJSmV0cnpPYWZqWEM5UU1sZkptTisrTmVQNEYyenhXNXVTMmc2?= =?utf-8?B?S002WWpyc2hUTnlIUHZxWUU5QlI1RUYyNGZBMnpSL1NZQng4Y2o1eld2aFli?= =?utf-8?B?NjdGMUp1bW4vMEdsUW1UQXIycWhFNlU5M0pSbXN4N1UxeEwyMzJDNmZGS0ta?= =?utf-8?B?cnBMbkZVak0wYWRNanI3Mm5Ta3Z4VmJLdmtyT1p3dHRYMDdhekhmSUhRdkVt?= =?utf-8?B?Z0JZYWJmY2M4Q1lUcFlsbHhwNWtnK0RmRUw2ZXUwRm05OGsrTWFicGhvNmxF?= =?utf-8?B?YjVLSGw5VVpUY3BUamZKWUlrbENNQ1lwOGRZc2JBSENYaVVFQW93eFZQcW0v?= =?utf-8?B?QVRFSUtPVWsrNUlvbXlyWUpwNnRNN1lTUnp1cnZEaTVJNjlBMHF3eDZ6MTM4?= =?utf-8?B?NUJFdXo0aU9OOHF6ck1Ga05CZzFQdWIrdnN3eDZNZzMrSHNlV21oUUEzWWhE?= =?utf-8?B?ODdqTXlvOURaL1ZEVG42a3g0dFBNTXVmeW1wQzFJa0c3ZzdRS2tFS1NjSjNI?= =?utf-8?B?ZVZNemxYRHpUQlpGRFlOS2dKQitBeG9aYTh5NjlDQmZvWWlUL25UeVFQV0Vm?= =?utf-8?B?YWpRTkdIUVp3b3UrOElXMmVUTDJYbWgrWnJRaTRXK2todndncGFVSHljY2Fq?= =?utf-8?B?cHVOWUdHeDBqeGNySUlUcjdFY2t4RU92OEVHeDBPcjlBZ0E1OXZ0ckZTRmwy?= =?utf-8?B?UTFuWFhQVUM0ZFdrR0JtZ2t1VjUwMmhIQnBaV3VXQVdxQ3pHYjdycUowSU82?= =?utf-8?B?WDN4dGpQSFp1eWRCQUJEcHFCWFZydnBUbU96R1hDcm1zcldjRVlFaW5FTmdF?= =?utf-8?B?VVFqSGJpeWNOeG5pZTgzU1F4dkNwakJ6Y1hKSmpoWkhZUERkRldtOFFXcmg5?= =?utf-8?B?cWUvTU9XY0hYWFBURTJ2bWN0UTJ6cTlsMXRDSkU1bGI0a0NEZXJMaGFvMGtF?= =?utf-8?B?YVdyNUhOQVB4UDJyanZZaGpMMlR0Yk53dVhyNGlrcnNibUtqQ1VVeEpZRTh2?= =?utf-8?B?Wm5DSFo4eUxlMktNemhXRWJCZU5pUzlYZ1VrM2hrZkFscEM2aGNBbjVFeXRF?= =?utf-8?B?S2hOYVd4ZWsyTGNZVHZyT2ZWM1l1ajdTbFYvY05xcHk5MG0wTlFMMWtyV2oy?= =?utf-8?B?ckY2MEc0d2JtbjVaV04ycG11cWJ6TVhsb0FnYXBXTjF6TWlkckR1cHlJcHh5?= =?utf-8?B?b29yZFl5M0E4RldWM0g2ZDhBcVRFZHYwOSsrSHN2Wk1SRER4TFphQ2poY1lS?= =?utf-8?B?enBKY0xGT2dGWkJMbFV3TUIxM2pRV0dIemZZZnppTFVSMEhOb0NpeVY4b0kz?= =?utf-8?B?cjhLbFg0MndSeXRyNmZCV0doY1lQSFgrUXRqbzZvK3o0b0VFbHJTeFZLR3Yz?= =?utf-8?B?STEvUU5kUU95ZFpyYkhJZUJFY3F4dDg3MGtGZFNKNDFlamY5U25vODlJOTFF?= =?utf-8?B?VFA1Z0RuYklzTGQxL2s3Y25sdkJwdVFUVC8xUFV1aEZIekI1SkNONFA4Y2ND?= =?utf-8?B?QWxsSU5GaDA5d1NqeUhTUFlYay9WNy9wd3hJTVVPWFZSN3lkcVZMMUp4bHNB?= =?utf-8?B?dXB2S0Mwb1dSQmtTSXFKUUs3bTVicjluWTl1Z0JQb25qeS9EaEhJaitXRklD?= =?utf-8?B?dHRaL2gydXhxMW4wM0luOVRDejNrbEVLb0NMMis3ZTBFaEtDN3FJRzVpSU0w?= =?utf-8?B?anJlQitvYU9YU2JmS1UydjZscUd0dkxKZGExZHprMnNJMFF0QUdFK1dnbDFI?= =?utf-8?B?TkFCOTBoMFNhQzJSYjNIM2RveElJeWJKR0lQNjd5bENYbVMzdGxxTTNKbFBG?= =?utf-8?B?M0JIMGFjZzN0cGFrdTRYYmxydlFiaFE3VVlJUURaQlFiU2J6eGNhME81b0t2?= =?utf-8?B?QzdCdVpUZUlrb3FVSzlKRTVLWjRscktzUFNjbHVrL1h4MEFITjMxeDUxM3VS?= =?utf-8?B?UXlKVHduNXpqUFBRVWhkZUJhUlFsbk9hcnM3aThFQU56LzZYdXZTUnFEMUVI?= =?utf-8?B?ZVFrcFVHYkxJWXdRZmQ5TFdBdS9NZ1krWnpvVXovNVgrTmFFempHQnNyYjJO?= =?utf-8?B?Zkt0eG9od2V5RnFBUi9hRmRVK3h4dWRFRWhYRWpUVWpsUlRoZ3pZdlhqZEll?= =?utf-8?B?bUxXSXJGbWZZMWRNa2hMT0hsd09Ccitpc0hHM3FxbGErVERoOUpvUT09?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cdd8ea7-612f-4902-7572-08da1878e562 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8616.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 09:27:55.1329 (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: yC97r7LOGS9qa2PDJ+uKnoBR3IoxliSCv+XsbTy+tsAPRkpUJciCFYfDJ9DT0f2/I48HyEotwwEPCc81HBXKpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5507 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1649323713201100001 Content-Type: text/plain; charset="utf-8" If get_iommu_domid() in domain_context_unmap_one() fails, we better wouldn't clear the context entry in the first place, as we're then unable to issue the corresponding flush. However, we have no need to look up the DID in the first place: What needs flushing is very specifically the DID that was in the context entry before our clearing of it. Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- This (an intended follow-up to XSA-399) is actually a prereq to what was called patch 1 so far in this series. --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1830,18 +1830,12 @@ int domain_context_unmap_one( return 0; } =20 + iommu_domid =3D context_domain_id(*context); + context_clear_present(*context); context_clear_entry(*context); iommu_sync_cache(context, sizeof(struct context_entry)); =20 - iommu_domid =3D get_iommu_did(domid, iommu, !domain->is_dying); - if ( iommu_domid =3D=3D -1 ) - { - spin_unlock(&iommu->lock); - unmap_vtd_domain_page(context_entries); - return -EINVAL; - } - rc =3D iommu_flush_context_device(iommu, iommu_domid, PCI_BDF2(bus, devfn), DMA_CCMD_MASK_NOBIT, 0);