From nobody Fri May 17 09:38:28 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=1660215114; cv=pass; d=zohomail.com; s=zohoarc; b=dwh72Fk0/S5W5GdP34VvhAEk8cKZk2p6LPkYeouA5nQbKzhzY90neDRFTibvnOFCP7OYb4q939GElpUwfbQVltQFjPEsZ5Iu5XyHu6gtxDZXRUk/vpxOsozHcKxupYGjEgWvxledcMI/KToDRxY3bTDTIMYwKbZaw8pQswOdjqY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660215114; 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=ROeaBlVhWUfxYWHNj4EnOD1wrL9+c+7pgHiRTazbgrg=; b=f9i7HtnHXR8odO+AmzxIjfXW4JkHTQI+q75GzFiZiX/NVdtINmFGiT7vIxHoXnzdfe2Cp4GmRRB/LuX0og3j4JWmm14bJcpnLrTxJ48DiKkKw2t4WWpoqyCQHF4ukj6Sj+KtCHDi1ACu3WQuB6eO/Ssy/I7z8D/iDVjKjFLq0v8= 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 1660215114586622.5069250565597; Thu, 11 Aug 2022 03:51:54 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.384419.619791 (Exim 4.92) (envelope-from ) id 1oM5mq-0006fw-Kq; Thu, 11 Aug 2022 10:51:36 +0000 Received: by outflank-mailman (output) from mailman id 384419.619791; Thu, 11 Aug 2022 10:51:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1oM5mq-0006fp-I4; Thu, 11 Aug 2022 10:51:36 +0000 Received: by outflank-mailman (input) for mailman id 384419; Thu, 11 Aug 2022 10:51:35 +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 1oM5mp-0006fh-9K for xen-devel@lists.xenproject.org; Thu, 11 Aug 2022 10:51:35 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60054.outbound.protection.outlook.com [40.107.6.54]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 90b35409-1963-11ed-924f-1f966e50362f; Thu, 11 Aug 2022 12:51:34 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM0PR0402MB3473.eurprd04.prod.outlook.com (2603:10a6:208:1b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.24; Thu, 11 Aug 2022 10:51:32 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5525.010; Thu, 11 Aug 2022 10:51:32 +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: 90b35409-1963-11ed-924f-1f966e50362f ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JUTiU/4yF3eOiUwk5uqp5iM68a+BfYwxvTUtNKOBuWX8hXF23Lu3+P0TehvXqj+RE+AI/8UQJXgkgN+Lz6FqNalxRXPCVPIa/k3oSOppGrFBEgPA4aXUSaOil4iCBvU3q2F4hdzOe3c4LrZZBUv0yuEVDsfMTe14v8Um+sodKgGEkhjQwnLQZA8D6PVhxbczy62EVw4cgGEtX34T1YKIZ3TtLBvh450Z0K2tt6WhJxehzU3dB46HDw4XjIVGAlPk6KXVdtSvw2tiHWL1cjTsgW3zZhuNKXZX9kZaG78+Bqum49adfXIDXl3US8/45JcCB7uKyM40ZFeZVX68p1vRGA== 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=ROeaBlVhWUfxYWHNj4EnOD1wrL9+c+7pgHiRTazbgrg=; b=jp5FTLb3wOuNHXs/3SbsXcclq7evyYHXYoApHTpBz0A8McDqJSz92HsgnN+KdMwUq7kNd9dgVdxgYufj5UdNzjtF7QkOTPuYOjoMo9TzTYnNSQVl1EvN5Z/8bDbSlq5X7ZiK20OYhDK0h4bJWc5dYHVhOkRyRgBGhCUWT3079hZjhv89aQNlOMFBrs4+kZpb31fgmiH5nfnQVweaPe64NiOuYl/ygRt6I5qe9x5R0zMdxWQhwFdoswkpxnCk3TZzKp6+ZWkGN0TA/wTBNHs88T8siNOXQS9Wd+jaJ8ISV7o3OJZhI7VLOvd8tXzMBy0eTD3LTFESNFRUhh0aYbn9RA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ROeaBlVhWUfxYWHNj4EnOD1wrL9+c+7pgHiRTazbgrg=; b=zZqFvmSLLxS8p6Ci4igICLaM8VoXSBDeE9AcH+eX6ndT+tdOQSm/mng+jMjLcpyTCTD652SMAcBxvUDqvguMuPkr8adOTUbO45gZ4eP3XS4Vvq5O31Jyf6vp2QnkjSBzV0ulmaj/pThvEiYXQkNfVsueTxP8bYfXM0BJjx3he5VgJN0UO12gFHEgH/otaUV5gV6z6ios/Chy+syGB7rO9V0a8mgNkMg3WoAewG7tyqBOq8INo7ZcMAvlMWbW+2lbf4H6sJc/5q6OBFWQXCX/xvH2c8bpnyEAh+eTYrxjX9ZOgV4q5lBmYOaQgT4TYBObG3wVNQl/Pn2pcokBLCG7uw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Thu, 11 Aug 2022 12:51:30 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: [PATCH v2 1/3] PCI: simplify (and thus correct) pci_get_pdev{,_by_domain}() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Paul Durrant , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Andrew Cooper , Rahul Singh References: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> In-Reply-To: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0113.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8830853e-4c08-4e85-89e3-08da7b8773d9 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3473:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: biinijqGYPpOxNbZuVSG24GHRGZLEJj1NCzwnFaBzLsd3d4KrY36sfRki8iPdvpX/SYv+3R3vLVJ6ts+3DW0bXYOW+CiraE5cOSNnLbwJsmcm33uNIlFKwdL4zs2lFTA2ZX4XP/H+rFT9KEji8NJcVhqCycNEwSQu6VbowEF01cYeEzl6wpJ2cJy7GIxftg5aF22/9Lvu9y0+kWDQ1s5Vyw7BXfTq4NWnENq8N15aQjV4L86E4ASFNIU0D3qj3HTE+As1EWLJnWxDqfczCm1vCsJ1s2oZzIKpm+g2KqZyz5K77t6dnDfONsCufZSCE44JNKCtKRxyqvcpN2UV1ff14EcYIJxo1TaNTsx0fKA6um8noSbtge3jSETqB1wPn83DXUg8/VwkNCNOD7Mf609GkQWBhyX9l1sWkfsK1fDQIF0qYtBWa2xoafvM8RG/dsIafdbcjzmrVEiGiSLlWtV2TqZfhZfBSxAnv3g91ZmohEGUr111SieOlR6BMtww1x+qdyyLQM/EJwXwRoHR8sYQeuotxdyI0H5LPwx7WSrFQFv4eqwvx8D0zOIIW5U2bNieskkoZSzYDfZ4cWGPSVBXmMASeuZWSyCXrloHCC4+ZpZR6oWAuqLV/qYbsnLbivUcHXmM4V4wubqQOuf2dgzoMzgkIJY3u3y72hpPpg6bhsuwz287/jImo5VjMtxxDP6XbKmAiImaIVmZRD5w48WBO8Ft0SDBaAXClNmPx2HyUdJZFqHkgNcf8qEBzLZxd7gKBzPIsmnXkFSZXRL+WsxLNLMJuG+y5xhTwqBuelm97M9NfbGGbwx8yRMRI4K9bP9zwQHCStaDnZpqI8k9QqXEQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(366004)(396003)(346002)(376002)(39860400002)(136003)(6506007)(2616005)(8936002)(26005)(6512007)(5660300002)(186003)(478600001)(36756003)(31686004)(6486002)(41300700001)(83380400001)(38100700002)(31696002)(86362001)(316002)(2906002)(54906003)(4326008)(8676002)(66556008)(66476007)(6916009)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RVZpZVlMbDlnd20wVFI5T2dyMmlvdjA3dDl4d2ZQb3hJSG9nSFhsdXo4ZHBu?= =?utf-8?B?N09Odm02enFLekdZUTU5SW54Rm9SMU9ZVENlaVcvMFp0RXVsd0JIUTNHcVE3?= =?utf-8?B?ZmtBWG0wT25hSGtVdTVzQ3QzNDZVUzlxbHBkV0VkT1dNaHpyTEp3Sm9mOG5I?= =?utf-8?B?OFFLRXEyYTlieS9UQWMyV1J0YU03Qy9TNGlDS0E1L3pqblFNbllxT3RtcGI4?= =?utf-8?B?YXVDWDZiNCtZcWlCRjJwTDBBVmp4MHFuM0V5SFo2bTczWjhWZEtmZUNRU3E0?= =?utf-8?B?S29QRnpNelp3eGFONDlkN0kyVzNmMk1oMWY1S1J0TS9uSWJzMmk5T29ka1k4?= =?utf-8?B?RzZjVlphQlBINjhVeXI2MUVxSXlqVkFTN1k1N3V0bXlJcEUxZ3F4dEsydTRk?= =?utf-8?B?dG41L3FYS1B0clZUM3A2Z0xiRzBFWit5WTRWckkwMkwwVUs0RE10MGlHVFhG?= =?utf-8?B?aXhMelVkWEw0c0pmY3diQ0FqUGpoVUw4NEVYQ0dTaUhNb3ZZd2hUais4TWF6?= =?utf-8?B?U05jdm05cjFNc3Bvbi81SUNPMnJlUWFybnBQeDVuL3M5cUM0bVZxRDJ0bnFX?= =?utf-8?B?bDNjRU1LTW93K2x5QUMzRjViUVZhckx0QUFrdlBUaUlxZ2ZnM0dWdkZoazlH?= =?utf-8?B?TFRadWdwcHRkOGd3RzRBbGZsd0lsb3lmUTQ1Vm1vcm1HWmg3T0RLazVHZWdG?= =?utf-8?B?TG1OTk1rOS9YZGRWTURYelo3K0ZtT3FsU1Eva3ppOEI4UjNPUUVmMkU0cHFC?= =?utf-8?B?cUU5bUthQ1NUY2JwdTYxSzBKcXNwTTU1SFFmbHlCWCtHZTk4T0N1Rkk2SkRM?= =?utf-8?B?NkRqY1BUcERpWFBrRFcwaWJNYVNMc0o3WERoa01NRFNsSWEySExIVVU0c1Bs?= =?utf-8?B?bzJtaVo4eGdjWGRnWlFzS09STHYycTdubVMwbUxhVHFFZzl5cnFMOEthOE5x?= =?utf-8?B?ZE56RmFtdHRhRVdTM1BHWlZldGl5Zk1tWHBIOFRDSWJEMmxPT2J5WVV4OFBp?= =?utf-8?B?WUFyU3VxS3doZ3BQRGNIaDlHKzRpZDh3eGhDVURmSU1LS0RjVXhSQ1NIR05M?= =?utf-8?B?UXFmQkxtMm9iSDFhcmJ6bFVZMVB6VGszbTRSU1hITHJLSFBmZm9mUTJPYmlP?= =?utf-8?B?bWVQL1NoTk8yUXFKWmFFam43eGZsZUFmT3J2eHduMWNwRm9pbmVUVlhkbWhq?= =?utf-8?B?L1dpVkl1VGZPL3F1cllvTVgwdVFacE9zM3lIOHFsZDVWRUc2ZnFOUktmZDFn?= =?utf-8?B?VkZXMXFOa2V2UmZvelZyMy9aeWJyNmV2T1Zoclh2d2JQVFBWSTMyVlNHL0tO?= =?utf-8?B?U20xSUg3Z2hoZm9YR1dGZ0xaeHR3MG8xeUdTYmdrRzFjbFN2OW5zd1k4M0Jq?= =?utf-8?B?czQybC9EUlZKQ1EydzJubmtuTkZvZnJuWUVEendXWnBwSzhUanBUUlRjSVhJ?= =?utf-8?B?VlNwTVJiVGxVbVBXbmovdDZ3cCt6UmFNbkpMQ0RmTVVWbWlOeExhS0x0eFcw?= =?utf-8?B?SjR4T29MZVJSdHBvLzkrQ3VyTVN3RnFCRlJZaHA2L0pCQlNkZnFKT3c4dVo5?= =?utf-8?B?N0M1RUdoUitmMGFNZko1SkdZbUNMOWt6a3ZabFhyc2hPLzRySTRrVUpKcHZs?= =?utf-8?B?TDZZc21HRTUvQnlrWXVrcjlwZzArTXZWYXljK3ZROUM3eFhoRTdWblJRQWo5?= =?utf-8?B?QzN3dmE2NldnT3c0NXBBS2hTRGRBUE56WE5Ub2tJZXRzdjFEUFZFOVNSVTdB?= =?utf-8?B?RWs0eDlmVk5PbjlUdWkvQ2MrcjVxME5pYkdFOUpxK29aYnNNSkdhMTdLU1VQ?= =?utf-8?B?UE11QWtFbXVNZHAyZFU1Rm8va3IrYVNVNmNDRjREd09qZ2MwaFNmWkozK2ZF?= =?utf-8?B?enIxQUpGd0g1SjZXOGZrRzVTSitndi9JQVplV2ZVTFgvYk1renZ6SnpTQUVm?= =?utf-8?B?b09PTnJldDZabEY3YzBlSjRLUjhibDhDN0hTaDRSakxnL1Q1am5NTk1Balh0?= =?utf-8?B?bDRFTjlLSG1hODFkK2s1TnZRM0t2R09JcFg1TmZqNmdaQmZ5Sk1JMkpKUHM2?= =?utf-8?B?N2lCaDZtN3c2UTN5Yy9TbkgwQjV3b3dLT2I5TVhHc1JxTUFnZXNjU3pvWkpY?= =?utf-8?Q?fZgtHvRgSjR+XKIfbPGhe2tG4?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8830853e-4c08-4e85-89e3-08da7b8773d9 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 10:51:32.1878 (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: F+YKKK2Gmpnl4lpt/bHPO2FdcT/LXiKeS9LS96y7mU1q0N4ICTr6WIhXfbdU144hi0ELCsntDeO7xeAA5wNI3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3473 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1660215115180100001 Content-Type: text/plain; charset="utf-8" The last "wildcard" use of either function went away with f591755823a7 ("IOMMU/PCI: don't let domain cleanup continue when device de-assignment failed"). Don't allow them to be called this way anymore. Besides simplifying the code this also fixes two bugs: 1) When seg !=3D -1, the outer loops should have been terminated after the first iteration, or else a device with the same BDF but on another segment could be found / returned. Reported-by: Rahul Singh 2) When seg =3D=3D -1 calling get_pseg() is bogus. The function (taking a u16) would look for segment 0xffff, which might exist. If it exists, we might then find / return a wrong device. In pci_get_pdev_by_domain() also switch from using the per-segment list to using the per-domain one, with the exception of the hardware domain (see the code comment there). While there also constify "pseg" and drop "pdev"'s already previously unnecessary initializer. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Reviewed-by: Rahul Singh Tested-by: Rahul Singh --- v2: Full rework, with even the title changed. --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -576,30 +576,19 @@ int __init pci_ro_device(int seg, int bu return 0; } =20 -struct pci_dev *pci_get_pdev(int seg, int bus, int devfn) +struct pci_dev *pci_get_pdev(uint16_t seg, uint8_t bus, uint8_t devfn) { - struct pci_seg *pseg =3D get_pseg(seg); - struct pci_dev *pdev =3D NULL; + const struct pci_seg *pseg =3D get_pseg(seg); + struct pci_dev *pdev; =20 ASSERT(pcidevs_locked()); - ASSERT(seg !=3D -1 || bus =3D=3D -1); - ASSERT(bus !=3D -1 || devfn =3D=3D -1); =20 if ( !pseg ) - { - if ( seg =3D=3D -1 ) - radix_tree_gang_lookup(&pci_segments, (void **)&pseg, 0, 1); - if ( !pseg ) - return NULL; - } + return NULL; =20 - do { - list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) - if ( (pdev->bus =3D=3D bus || bus =3D=3D -1) && - (pdev->devfn =3D=3D devfn || devfn =3D=3D -1) ) - return pdev; - } while ( radix_tree_gang_lookup(&pci_segments, (void **)&pseg, - pseg->nr + 1, 1) ); + list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) + if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn ) + return pdev; =20 return NULL; } @@ -625,31 +614,33 @@ struct pci_dev *pci_get_real_pdev(int se return pdev; } =20 -struct pci_dev *pci_get_pdev_by_domain(const struct domain *d, int seg, - int bus, int devfn) +struct pci_dev *pci_get_pdev_by_domain(const struct domain *d, uint16_t se= g, + uint8_t bus, uint8_t devfn) { - struct pci_seg *pseg =3D get_pseg(seg); - struct pci_dev *pdev =3D NULL; - - ASSERT(seg !=3D -1 || bus =3D=3D -1); - ASSERT(bus !=3D -1 || devfn =3D=3D -1); + struct pci_dev *pdev; =20 - if ( !pseg ) + /* + * The hardware domain owns the majority of the devices in the system. + * When there are multiple segments, traversing the per-segment list is + * likely going to be faster, whereas for a single segment the differe= nce + * shouldn't be that large. + */ + if ( is_hardware_domain(d) ) { - if ( seg =3D=3D -1 ) - radix_tree_gang_lookup(&pci_segments, (void **)&pseg, 0, 1); + const struct pci_seg *pseg =3D get_pseg(seg); + if ( !pseg ) return NULL; - } =20 - do { list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) - if ( (pdev->bus =3D=3D bus || bus =3D=3D -1) && - (pdev->devfn =3D=3D devfn || devfn =3D=3D -1) && - (pdev->domain =3D=3D d) ) + if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn && + pdev->domain =3D=3D d ) + return pdev; + } + else + list_for_each_entry ( pdev, &d->pdev_list, domain_list ) + if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn ) return pdev; - } while ( radix_tree_gang_lookup(&pci_segments, (void **)&pseg, - pseg->nr + 1, 1) ); =20 return NULL; } --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -177,10 +177,10 @@ int pci_add_device(u16 seg, u8 bus, u8 d int pci_remove_device(u16 seg, u8 bus, u8 devfn); int pci_ro_device(int seg, int bus, int devfn); int pci_hide_device(unsigned int seg, unsigned int bus, unsigned int devfn= ); -struct pci_dev *pci_get_pdev(int seg, int bus, int devfn); +struct pci_dev *pci_get_pdev(uint16_t seg, uint8_t bus, uint8_t devfn); struct pci_dev *pci_get_real_pdev(int seg, int bus, int devfn); -struct pci_dev *pci_get_pdev_by_domain(const struct domain *, int seg, - int bus, int devfn); +struct pci_dev *pci_get_pdev_by_domain(const struct domain *, uint16_t seg, + uint8_t bus, uint8_t devfn); void pci_check_disable_device(u16 seg, u8 bus, u8 devfn); =20 uint8_t pci_conf_read8(pci_sbdf_t sbdf, unsigned int reg); From nobody Fri May 17 09:38:28 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=1660215144; cv=pass; d=zohomail.com; s=zohoarc; b=i40rWfV+Vx7UvMCNgiS22PTvQ16jzLi+IbAR414rkw6cb3SuVyMGoHcvbFFVfouk0urbhW0OQdMwCgDPSc9vzh2IULNty90tejwqZpGndipHMguLwNhLihdFj87TD6ZAxBjQXlx+gOgFwhf+PU7txDRrW6sQAyE2iFh3qQjWjqQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660215144; 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=U0zHbxk/QqA7o2g0j0RhbdPf09SeyoqrU+7QNeFeUCo=; b=GgwDxrktNF3zZiYcIt1AMptb4AwnMP+e6Nx9WNgNv71RAKSMefsUS2tDXb4f+KQu6CmHLOcP1fYUTf6s6eU/HjGOnwTec13vjVCP6i8X/k/BHEpqJ2LrAyUg0khADmA9OKuMRT8zqgQkN19TjojYgHSCxLPEqA3OnKCScPMifdE= 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 1660215144479644.5093485807934; Thu, 11 Aug 2022 03:52:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.384425.619802 (Exim 4.92) (envelope-from ) id 1oM5nJ-0007Bg-Ua; Thu, 11 Aug 2022 10:52:05 +0000 Received: by outflank-mailman (output) from mailman id 384425.619802; Thu, 11 Aug 2022 10:52:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1oM5nJ-0007BZ-Rd; Thu, 11 Aug 2022 10:52:05 +0000 Received: by outflank-mailman (input) for mailman id 384425; Thu, 11 Aug 2022 10:52:05 +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 1oM5nJ-0007BN-9C for xen-devel@lists.xenproject.org; Thu, 11 Aug 2022 10:52:05 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140089.outbound.protection.outlook.com [40.107.14.89]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id a24bb4a4-1963-11ed-bd2e-47488cf2e6aa; Thu, 11 Aug 2022 12:52:03 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM7PR04MB6807.eurprd04.prod.outlook.com (2603:10a6:20b:104::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11; Thu, 11 Aug 2022 10:52:02 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5525.010; Thu, 11 Aug 2022 10:52:02 +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: a24bb4a4-1963-11ed-bd2e-47488cf2e6aa ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h0RRcCvdfvd6VFd/r0S4zOYgWZvS+XOtaxrkOJIRh3cGTpKhtIBoWDyi/yTUuwohkLdBA83a5r9ofPk2nA2PZL0hEzYZsz8XqMrlFu+BbI1sviXJFyx5PAXIAjJiH0EX7MXmOvtr7uN7mD/wtJ6h+i6kSKG/HwxuzrdPv2nsn2WYRopaFFS4s5QvZuIk1yz6aHVF9KYKmWpZIY5I9RejAvxPOvU4R84IUrhlKZulOMBX9XA5oAvozVEWRp/neng8wAK2nx0z8AwQRXPJRMFjhLWw+F6Fh7SppJz2tZ+2cSRaKT+Hk9sRnjTOyBmzvHy6TBWK3WbIuRWOBMgMOK4Etg== 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=U0zHbxk/QqA7o2g0j0RhbdPf09SeyoqrU+7QNeFeUCo=; b=L2BfTn+A0fXkL0X30jRNBUyQXlGWhJAO0qodDSo6rOFIZwok/5JXuJj8Q9REaGH7BqXa0/Lw+10fv111eUt2heVBYv66rNBckV6VjSdglSdzUYnRnKkM8XwlTSJpA+FKbj21Hnwn0wmNANwGgnPdBk4x74y8BuPWXd24N/K9C7Wlnn/jISajWmwB55Pe+Lcwjap9HdNk4ZmZPzJ1Q/awXH6s+emyb06zpWdhxfzzC7wWaGZENpOCLJiMawEPdCMHbsTs9nGA2ELupEEAInaaR33cIkEFSmKPbQLBogNudjuHEJgaAtJXflMi1pgznwAev66+0qu6IMRWzv8o0uKr+Q== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U0zHbxk/QqA7o2g0j0RhbdPf09SeyoqrU+7QNeFeUCo=; b=HKlyU1jvPBX4IsKoI7e0rwedJ/4ey0DjYJhY0Ji6xwp2AKjtvFJ7d8T+l5qweCUqqcuRQ/h4nPhPO3V9V+2BxArKE22pxoxQe50127BQebFLCUJvhthTCTGssIdyuYvqspy6O9KAKtduqqhoChPiT0mmPOwJfWUCIyjVHlG+Wg2hBA6ADnC/0GVUWa9N0OZwBeJEvV60mjQzDL0PULKNsxblRGAauN7osb5Zvmd3lOHu5hrYhxWlZ+p1L5cnSD9VURHC6uLsX1/1CZUc5xFdNgjPmkpJYHtiKJ7VAH3BUoL2IFqeMvyVicc59eZsyaws6+kMDeShRMpCLqwVUWB8wQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <0bdd4f3f-965a-fe39-f7af-d8a40b7a68c6@suse.com> Date: Thu, 11 Aug 2022 12:52:00 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: [PATCH v2 2/3] PCI: fold pci_get_pdev{,_by_domain}() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Paul Durrant , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Rahul Singh , Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu References: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> In-Reply-To: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0119.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::17) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d89892b6-efaa-47ca-812b-08da7b878599 X-MS-TrafficTypeDiagnostic: AM7PR04MB6807:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TuwCDGWbDv3qmgvfAUxT0U8AkXKUomipfb4LUlccE6wO6JgMfCQ6e6wWQQNxkRWPN0A1cDYgRvIHqVBwIzojxIetWsfpIEWZwkeV1hDkOfBZSviOjzEdokVSQjwO1jHrOPflsfW8CUrlJOWHv3JxUDDBvzNODwWYTMyBzFQfYsGUt82IvC2skM7Ftqru+hd1oVZQ1+4474CjpcghBxltRqkdscEHGhsm1t38w1uUOZj3sMrEVh12AxiW8DMnt1NTR9NsCs4meYE/sJJv0OipIKJkiKmtf609m9JUN/8j33LXh0G2HSVEJV0hcRM546nGOiEhODpnPWgLy6TB8Fu6Tv8yj54dTkmEU931TGOmzPDOsfjckY6xTd5tCLnY0RLqpXjQscwLQ10TzXoXheeTkrKztZvg7kyVksPtrFCiQRlxh82yx5Vyq/WSaQYZXXLnh49Jenym97HxoO7YXvepamMrgHHxZZeEIelcvf4SZwdBE2robBBOIPYRCjpqzQmjwY0U1eo6eP7COYwNQpXOeKGMfbXH5Wda21/5O6CYYqm/nQRmXHC0DEaN5CTqe8xY0dxc5ySYJzwr48m6nAjy0VW0Q0Oivw89LmoUwvaFx46YLc5uC0dDfBwkMrD6etVKa8nrUKrMNbSCwKrxZrGkfnkph6F5bolzbckDYhgy+VGmV1NQipZvTZXDAlDtgVSdnhPUdsVx2ThIJoOX7tauNe3EBjLIQVFrvM7ZfpPHJos5SLgx6RuBYmjMvYXO3CFaVEbva56J/9bAuz0PWgKr2cdhxiz3JLZ19a7fAz+xFCdUh3xFpggl6Z+sdYwp5MBndkMQFHDL118ss4f9jpK5V7RknP8ysg4f24OoFrynHTA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(136003)(346002)(396003)(376002)(39860400002)(366004)(26005)(6916009)(6486002)(316002)(41300700001)(54906003)(478600001)(4326008)(2906002)(66556008)(8676002)(66946007)(66476007)(8936002)(38100700002)(5660300002)(31686004)(36756003)(31696002)(86362001)(2616005)(186003)(6506007)(6512007)(83380400001)(43740500002)(45980500001)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ak4zaXB1azFBaklyWHB6Znh5aUZxMmhxUk1hVlVzWnZ2dGdhOFRYT2hMT3ll?= =?utf-8?B?OC9OYjMxNG04QmljTlV2ZEdYb1l2VzZBc2VqUHRkTXBRb2RFZi9RcFpJOStl?= =?utf-8?B?MlN3NnpiWldnN3NKbm8xRitUcUZkRWJwd0psRVdVSnJVaW9xN3JVSmNPY0xY?= =?utf-8?B?cmlwT1JwWGVyZjRLUms4Q21sc3FEYjJIQWpuV1NobUFkeEcvQjI2ZGs0ZjF2?= =?utf-8?B?ejBXc1JpV250THZYNlhtQmh2UERkVnpOR3hyQkJiQS8wTzlGWHAwKzhMeUZF?= =?utf-8?B?MUZaenZ4WCs4d2JJL2NwOTgwdCtyUVZXWTRlWncreHZNMFhVM3NQV0svQzE1?= =?utf-8?B?Mzh3NlVTb3NVdTVPalNCenRRSUwxR0VPWW0vdEkvc1RuaUpkc1JqbTI4aWJt?= =?utf-8?B?cjV0TXhrWGMyUnNaUVErMUNFVVBmZUNTcHR4aHNwTHgwd1ROT1UzU0xTUndW?= =?utf-8?B?akh6TTlKQ3hXNCtvWGswaTh3NmZoQjlmWHRHY0tWZHNkSWpTSU9Hd2UrQTg5?= =?utf-8?B?ejlIY3Y5YmhLSStaOUU2OU0rdjRkcVdzN1o5L2lBVmZTUnU2SjJHYmFvejZV?= =?utf-8?B?RUJBME5WWUxvbnZ2K1BMY3k3Sk0vUkhaYUdWaGUxTlR4T0wxNXZGWDVIRHFI?= =?utf-8?B?dFg4eXVlbDRDRVdkbmVCR3NhYVoxam5XV20xYXBleGdCRW9xSDI0aWJNZVd3?= =?utf-8?B?QmRaSTR6czNOdGxHRUErSFpFTDY2OUpTL2ZJU2RQazB5NytSSE1vVWdDZzY4?= =?utf-8?B?SFA3TXBMdm1kZXlvNENqOFJ5dnNwVGVRV2FHRzZlVlJQK3J4REhQQXJjeUIy?= =?utf-8?B?YUlHWTlMVHBSVEJxbGovYUdkRXY4U2pJMW1DTDhHSWozMVh4ZjNnRHI5cFlv?= =?utf-8?B?R2hMRnRjT09EYk5tZmk4THBHT3RpSEdwM2d6NlVSV1BlN1BhY1g0TkFneG9z?= =?utf-8?B?SkY4N2lwOTREMzQ0ZnZwL1FPemF3dEhoWTFnOUdVWWd5NGZOK29KRUlDUmR3?= =?utf-8?B?Rk1zN1FsbFZ2L2pRK1hiZkxjRGdxR1ZPQ0QxaEsxZTdON3hPY01NN2ZzK0oz?= =?utf-8?B?Vk9DaWE5QTR3Ni91d3djZXY2KzdNSk1vZ1dPLzVXS3FMU29ZQno3TDV3V1pn?= =?utf-8?B?UTJUNGtWNjA4TDk2L2JxMlNQVFB2NDZ4MUVxZ2xZNGlhcjZRa3RzZFZ6WU04?= =?utf-8?B?QUEvYnBXZHd5c3J1VmQwc3ZiUW9QUWg3R093Tm1sNzgxN2huVGpEc253Rit5?= =?utf-8?B?UGtmNEZEdW96YWx4Mit6YTFNcVREbHlQM1Qyck1RelJQMnNRRzdqU1ZpYjhy?= =?utf-8?B?MFRjcjZpQlBYOGNIU0gzMFVJMU9GTFR3SFloSnkxbE9JS1ZvNlppdHowUWhQ?= =?utf-8?B?eVA0akhvN01XRHY0NXN2WFFXU05KbXVIWC9GQ2t4bXVHOFFvbjZJVEZMN1ZY?= =?utf-8?B?NGtqRTkvNVd1WFJGR3JHWVZuQWhkQWQzQkVUdXlpWjNyWUdRRGpPUVdaWEx5?= =?utf-8?B?amkvbVhCWXJsNGRPUG0zOVZDN3BLR1ZVUDhXVjEzSUE2eWZ3NjhNS3VXYTFq?= =?utf-8?B?a0I4V2dWbXJJUkxEL1I2VzNPeXZqdVozUU5vTWdDa2V5enJacVFiUlJXZ0Zh?= =?utf-8?B?M1ZDNTViUjIwVFpMOEdFa20yNzBVWDJDQ2lpYkhHeTBIRDVIVGpiZjhJK1dt?= =?utf-8?B?UTFYTlRSOVpPanlEQXJycWgzY3A1YjlSZnVZQ0tYenJtSU94dy81bGhlS3RE?= =?utf-8?B?OWV6aVd5WWxER1dPK0tqdCt0ajI3b0d3bDdaZ0lGUkIzN09IZXIrcm91UHVC?= =?utf-8?B?UDdvbkhObVdEMlk3YWErdWRRR1l5NnViVnBNTkt3UlJDV0N3V1pubE1NWUFl?= =?utf-8?B?aThPOThwSjJIVUQ1bXpCc3RvRERIYWFpWkpBWmNUcU1ua0F2eUZ1cnE2TlNX?= =?utf-8?B?SjRTd1N6L21NUWlVTjd0L1Q5d3g4ZU9lVlhPc3lWNnUxRksvYmgrV3VWbGtY?= =?utf-8?B?Q08rbEJsVkViQ2Y1bi93Uk53OUt3dG8rL1dxYlhXZDRIUy9tWVJWM0FaeG5u?= =?utf-8?B?NEJGeEhKMFBVSmlQQUY5VGdyOU9XWjFnMlg1eWJhZnpuK0pIelFsbndoeG14?= =?utf-8?Q?wi5vjFUIyWalUIvtyhITjfJGC?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d89892b6-efaa-47ca-812b-08da7b878599 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 10:52:01.9671 (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: Go+vUQed3sVjUfNQWRKsdJyM/ymnWf53h4v7lzOcdsO01PVlur9oaf1OXlSnNRh3B1S1w4q7BOpNm/lHbNaw1g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6807 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1660215145277100001 Content-Type: text/plain; charset="utf-8" Rename the latter, subsuming the functionality of the former when passed NULL as first argument. Since this requires touching all call sites anyway, take the opportunity and fold the remaining three parameters into a single pci_sbdf_t one. No functional change intended. In particular the locking related assertion needs to continue to be kept silent when a non-NULL domain pointer is passed - both vpci_read() and vpci_write() call the function without holding the lock (adding respective locking to vPCI [or finding an alternative to doing so] is the topic of a separate series). Signed-off-by: Jan Beulich Reviewed-by: Rahul Singh Tested-by: Rahul Singh --- v2: New. --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2162,7 +2162,7 @@ int map_domain_pirq( if ( !cpu_has_apic ) goto done; =20 - pdev =3D pci_get_pdev_by_domain(d, msi->seg, msi->bus, msi->devfn); + pdev =3D pci_get_pdev(d, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); if ( !pdev ) goto done; =20 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -683,7 +683,8 @@ static u64 read_pci_mem_bar(u16 seg, u8 =20 if ( vf >=3D 0 ) { - struct pci_dev *pdev =3D pci_get_pdev(seg, bus, PCI_DEVFN(slot, fu= nc)); + struct pci_dev *pdev =3D pci_get_pdev(NULL, + PCI_SBDF(seg, bus, slot, func)= ); unsigned int pos =3D pci_find_ext_capability(seg, bus, PCI_DEVFN(slot, func), PCI_EXT_CAP_ID_SRIOV); @@ -1000,7 +1001,7 @@ static int __pci_enable_msi(struct msi_i struct msi_desc *old_desc; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(msi->seg, msi->bus, msi->devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); if ( !pdev ) return -ENODEV; =20 @@ -1055,7 +1056,7 @@ static int __pci_enable_msix(struct msi_ struct msi_desc *old_desc; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(msi->seg, msi->bus, msi->devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); if ( !pdev || !pdev->msix ) return -ENODEV; =20 @@ -1146,7 +1147,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 return 0; =20 pcidevs_lock(); - pdev =3D pci_get_pdev(seg, bus, devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn)); if ( !pdev ) rc =3D -ENODEV; else if ( pdev->msix->used_entries !=3D !!off ) --- a/xen/arch/x86/pci.c +++ b/xen/arch/x86/pci.c @@ -90,7 +90,7 @@ int pci_conf_write_intercept(unsigned in =20 pcidevs_lock(); =20 - pdev =3D pci_get_pdev(seg, PCI_BUS(bdf), PCI_DEVFN(bdf)); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bdf)); if ( pdev ) rc =3D pci_msi_conf_write_intercept(pdev, reg, size, data); =20 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -531,7 +531,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; =20 pcidevs_lock(); - pdev =3D pci_get_pdev(0, restore_msi.bus, restore_msi.devfn); + pdev =3D pci_get_pdev(NULL, + PCI_SBDF(0, restore_msi.bus, restore_msi.devfn= )); ret =3D pdev ? pci_restore_msi_state(pdev) : -ENODEV; pcidevs_unlock(); break; @@ -546,7 +547,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H break; =20 pcidevs_lock(); - pdev =3D pci_get_pdev(dev.seg, dev.bus, dev.devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(dev.seg, dev.bus, dev.devfn)); ret =3D pdev ? pci_restore_msi_state(pdev) : -ENODEV; pcidevs_unlock(); break; --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -447,7 +447,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe } =20 pcidevs_lock(); - pdev =3D pci_get_pdev(dev.seg, dev.bus, dev.devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(dev.seg, dev.bus, dev.dev= fn)); if ( !pdev ) node =3D XEN_INVALID_DEV; else if ( pdev->node =3D=3D NUMA_NO_NODE ) --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -748,8 +748,7 @@ static bool_t __init set_iommu_interrupt } =20 pcidevs_lock(); - iommu->msi.dev =3D pci_get_pdev(iommu->seg, PCI_BUS(iommu->bdf), - PCI_DEVFN(iommu->bdf)); + iommu->msi.dev =3D pci_get_pdev(NULL, PCI_SBDF(iommu->seg, iommu->bdf)= ); pcidevs_unlock(); if ( !iommu->msi.dev ) { @@ -1286,7 +1285,7 @@ static int __init cf_check amd_iommu_set if ( !pci_init ) continue; pcidevs_lock(); - pdev =3D pci_get_pdev(seg, PCI_BUS(bdf), PCI_DEVFN(bdf)); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bdf)); pcidevs_unlock(); } =20 --- a/xen/drivers/passthrough/amd/iommu_map.c +++ b/xen/drivers/passthrough/amd/iommu_map.c @@ -727,7 +727,7 @@ int cf_check amd_iommu_get_reserved_devi const struct pci_dev *pdev; =20 pcidevs_lock(); - pdev =3D pci_get_pdev(seg, sbdf.bus, sbdf.devfn); + pdev =3D pci_get_pdev(NULL, sbdf); pcidevs_unlock(); =20 if ( pdev ) --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -576,23 +576,6 @@ int __init pci_ro_device(int seg, int bu return 0; } =20 -struct pci_dev *pci_get_pdev(uint16_t seg, uint8_t bus, uint8_t devfn) -{ - const struct pci_seg *pseg =3D get_pseg(seg); - struct pci_dev *pdev; - - ASSERT(pcidevs_locked()); - - if ( !pseg ) - return NULL; - - list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) - if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn ) - return pdev; - - return NULL; -} - struct pci_dev *pci_get_real_pdev(int seg, int bus, int devfn) { struct pci_dev *pdev; @@ -601,12 +584,12 @@ struct pci_dev *pci_get_real_pdev(int se if ( seg < 0 || bus < 0 || devfn < 0 ) return NULL; =20 - for ( pdev =3D pci_get_pdev(seg, bus, devfn), stride =3D 4; + for ( pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn)), stride = =3D 4; !pdev && stride; stride >>=3D 1 ) { if ( !(devfn & (8 - stride)) ) continue; - pdev =3D pci_get_pdev(seg, bus, devfn & ~(8 - stride)); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn & ~(8 - strid= e))); if ( pdev && stride !=3D pdev->phantom_stride ) pdev =3D NULL; } @@ -614,32 +597,33 @@ struct pci_dev *pci_get_real_pdev(int se return pdev; } =20 -struct pci_dev *pci_get_pdev_by_domain(const struct domain *d, uint16_t se= g, - uint8_t bus, uint8_t devfn) +struct pci_dev *pci_get_pdev(const struct domain *d, pci_sbdf_t sbdf) { struct pci_dev *pdev; =20 + ASSERT(d || pcidevs_locked()); + /* * The hardware domain owns the majority of the devices in the system. * When there are multiple segments, traversing the per-segment list is * likely going to be faster, whereas for a single segment the differe= nce * shouldn't be that large. */ - if ( is_hardware_domain(d) ) + if ( !d || is_hardware_domain(d) ) { - const struct pci_seg *pseg =3D get_pseg(seg); + const struct pci_seg *pseg =3D get_pseg(sbdf.seg); =20 if ( !pseg ) return NULL; =20 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) - if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn && - pdev->domain =3D=3D d ) + if ( pdev->sbdf.bdf =3D=3D sbdf.bdf && + (!d || pdev->domain =3D=3D d) ) return pdev; } else list_for_each_entry ( pdev, &d->pdev_list, domain_list ) - if ( pdev->bus =3D=3D bus && pdev->devfn =3D=3D devfn ) + if ( pdev->sbdf.bdf =3D=3D sbdf.bdf ) return pdev; =20 return NULL; @@ -746,7 +730,9 @@ int pci_add_device(u16 seg, u8 bus, u8 d else if ( info->is_virtfn ) { pcidevs_lock(); - pdev =3D pci_get_pdev(seg, info->physfn.bus, info->physfn.devfn); + pdev =3D pci_get_pdev(NULL, + PCI_SBDF(seg, info->physfn.bus, + info->physfn.devfn)); if ( pdev ) pf_is_extfn =3D pdev->info.is_extfn; pcidevs_unlock(); @@ -924,7 +910,7 @@ static int deassign_device(struct domain return -EINVAL; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev_by_domain(d, seg, bus, devfn); + pdev =3D pci_get_pdev(d, PCI_SBDF(seg, bus, devfn)); if ( !pdev ) return -ENODEV; =20 @@ -1201,7 +1187,8 @@ static int __hwdom_init cf_check _setup_ { for ( devfn =3D 0; devfn < 256; devfn++ ) { - struct pci_dev *pdev =3D pci_get_pdev(pseg->nr, bus, devfn); + struct pci_dev *pdev =3D pci_get_pdev(NULL, + PCI_SBDF(pseg->nr, bus, de= vfn)); =20 if ( !pdev ) continue; @@ -1475,7 +1462,7 @@ static int device_assigned(u16 seg, u8 b int rc =3D 0; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(seg, bus, devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn)); =20 if ( !pdev ) rc =3D -ENODEV; @@ -1506,7 +1493,7 @@ static int assign_device(struct domain * =20 /* device_assigned() should already have cleared the device for assign= ment */ ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(seg, bus, devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn)); ASSERT(pdev && (pdev->domain =3D=3D hardware_domain || pdev->domain =3D=3D dom_io)); =20 --- a/xen/drivers/passthrough/vtd/quirks.c +++ b/xen/drivers/passthrough/vtd/quirks.c @@ -417,7 +417,7 @@ static int __must_check map_me_phantom_f int rc; =20 /* find ME VT-d engine base on a real ME device */ - pdev =3D pci_get_pdev(0, 0, PCI_DEVFN(dev, 0)); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(0, 0, dev, 0)); drhd =3D acpi_find_matched_drhd_unit(pdev); =20 /* map or unmap ME phantom function */ --- a/xen/drivers/video/vga.c +++ b/xen/drivers/video/vga.c @@ -118,7 +118,7 @@ void __init video_endboot(void) u8 b =3D bus, df =3D devfn, sb; =20 pcidevs_lock(); - pdev =3D pci_get_pdev(0, bus, devfn); + pdev =3D pci_get_pdev(NULL, PCI_SBDF(0, bus, devfn)); pcidevs_unlock(); =20 if ( !pdev || --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -325,7 +325,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsi } =20 /* Find the PCI dev matching the address. */ - pdev =3D pci_get_pdev_by_domain(d, sbdf.seg, sbdf.bus, sbdf.devfn); + pdev =3D pci_get_pdev(d, sbdf); if ( !pdev ) return vpci_read_hw(sbdf, reg, size); =20 @@ -435,7 +435,7 @@ void vpci_write(pci_sbdf_t sbdf, unsigne * Find the PCI dev matching the address. * Passthrough everything that's not trapped. */ - pdev =3D pci_get_pdev_by_domain(d, sbdf.seg, sbdf.bus, sbdf.devfn); + pdev =3D pci_get_pdev(d, sbdf); if ( !pdev ) { vpci_write_hw(sbdf, reg, size, data); --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -177,10 +177,8 @@ int pci_add_device(u16 seg, u8 bus, u8 d int pci_remove_device(u16 seg, u8 bus, u8 devfn); int pci_ro_device(int seg, int bus, int devfn); int pci_hide_device(unsigned int seg, unsigned int bus, unsigned int devfn= ); -struct pci_dev *pci_get_pdev(uint16_t seg, uint8_t bus, uint8_t devfn); +struct pci_dev *pci_get_pdev(const struct domain *d, pci_sbdf_t sbdf); struct pci_dev *pci_get_real_pdev(int seg, int bus, int devfn); -struct pci_dev *pci_get_pdev_by_domain(const struct domain *, uint16_t seg, - uint8_t bus, uint8_t devfn); void pci_check_disable_device(u16 seg, u8 bus, u8 devfn); =20 uint8_t pci_conf_read8(pci_sbdf_t sbdf, unsigned int reg); From nobody Fri May 17 09:38:28 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=1660215171; cv=pass; d=zohomail.com; s=zohoarc; b=SCkpk3IbjF365BkTkxROL/Als2nnyyahRjysfhtVnAvHmswOTGBQ7zNx91kos+AkpalHp5BxcW584gHZQLeJtrWc8MfsFey8PvjahhbRnPLfhwRthvoxEiUss+81te1fUiqjNrZxDwJ7H3Khqvxrw9hvAP2rVafR1ZLFRUSkR84= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660215171; 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=ltM3LnypLdKXezODmgDlDlM4OKAb8fvviVm22POdPMg=; b=NdhW2RuLhbuf1Oe0JQ2e+MkYL7Wam1nNPPSMANdgnhuf+H7cMi/KG1VenZkDINTciP0xP4EhmqKoXfthOHipnojGQ33VEEsYl7O1zKoLifsVAwxpUepyVm3tKdocqmyV2EgF/dPET64iO9ObtQbhiHRRkpRZLry5zwjLaiGfYnA= 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 1660215171285586.2502124446186; Thu, 11 Aug 2022 03:52:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.384436.619812 (Exim 4.92) (envelope-from ) id 1oM5nn-0007mp-AN; Thu, 11 Aug 2022 10:52:35 +0000 Received: by outflank-mailman (output) from mailman id 384436.619812; Thu, 11 Aug 2022 10:52:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1oM5nn-0007mi-7e; Thu, 11 Aug 2022 10:52:35 +0000 Received: by outflank-mailman (input) for mailman id 384436; Thu, 11 Aug 2022 10:52:34 +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 1oM5nl-0006fh-UB for xen-devel@lists.xenproject.org; Thu, 11 Aug 2022 10:52:34 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2074.outbound.protection.outlook.com [40.107.104.74]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id b3c3253c-1963-11ed-924f-1f966e50362f; Thu, 11 Aug 2022 12:52:33 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM7PR04MB6807.eurprd04.prod.outlook.com (2603:10a6:20b:104::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11; Thu, 11 Aug 2022 10:52:31 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5525.010; Thu, 11 Aug 2022 10:52:31 +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: b3c3253c-1963-11ed-924f-1f966e50362f ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hFTHwFhqaQc0LOo0OQJQqWGAbQI3CilsU1n8TnS5mEK7w7V3J8Gj3gqL/W6aDzA5j/3qtdhRtopeXNPNfbLiANndaNo61EIror9rfMgBLjZP0g0eAGIG5FWbjyOCX/syVR0QfaCR164NxotNR/rqMsBys2c7HmxcvtZ+UeRqJXBiX1vTJTDfhBFYGOfMHweOQqDC8vjfA0vEo/o68/QEJrLTnCD1aZPZaue0iR/R5wdqEUBcoTd+I5ON2biJSTNJV9fOY7jS1RZDQttFhl5Zj+JbD7OjWA1oFjB2LpT0nOa3b3GyrdW2lNaSN2cVJsMmsY/X4X7EDrmMj2hqowuMhA== 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=ltM3LnypLdKXezODmgDlDlM4OKAb8fvviVm22POdPMg=; b=CQ2XSET7gVPo/oIFb1yHBjvE+GspoLw+IGkaFxPOgYEl9CNgEDhfYXwErcjo4AiIqGOo4R3VWHqc0pJ93dB/JkhtG/pLdFyXLV2ndfbvp+NS++MYwTD34Y4MlFzVggD1pdBD/wX0Zc2b+RQVP8DXuUEkb1gi4cbCVImEc4uCrjyMlJI5cVvPUCkxgI75Jf+SDkufjNIZgINTBSPulGhrOnFs0Di7y5y5DikHKtozj7eOauwHY0cXGO5ESigcPvECHuxqu9NMh5BMWalO9JECeuVkO0J5z5+FI+EtfqGretewRbG0P1q+zm1WuhNmCWTILhddGpRxIRiz+fNNBcEI+Q== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ltM3LnypLdKXezODmgDlDlM4OKAb8fvviVm22POdPMg=; b=dMymrbZ2GSPT4nrPPdoHSZHcIp64TA9axAI4mZ6Lm0wqy2Nr07w/9vvwvCFFd05qtqBVOM7Wc43Y8WFIbQZSMZFKuMuWBBtd7ls+Wqm0o/2vTq6TBQG2tB26ajNcRzwKXjernBCvmtkhCfRbhVn/GqHrHzLt9FSlmwFipOxt6CBR/YZsiYW3QKv/Ch34YOVGDNX3YPlV4rakykbyq+rqj4iUh/bErWn6geM3aggaLG/q8MfqiI12ZaAma8qoPQ3S//NUdaVTdpc+VTPXywn83GMZkATSIFegLsfxXqGynXTx435Mv8kpmWN8A4bcFyTSDzUInox9PjJAyLOEdQMo8w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: Date: Thu, 11 Aug 2022 12:52:30 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: [PATCH v2 3/3] PCI: bring pci_get_real_pdev() in line with pci_get_pdev() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Paul Durrant , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Andrew Cooper , Rahul Singh References: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> In-Reply-To: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0139.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:95::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5dc5a16a-31d2-48f6-a134-08da7b879741 X-MS-TrafficTypeDiagnostic: AM7PR04MB6807:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Oo7zdffxuReRdXPcoPn/QbjptdR3cs6nm8D+RLKXlycWJfPx/s8MpJwfbxbEBqYgkOHOsjDz+dFqN7mlYMiCkMaxRAGKcVyuArZrfQ/mKrgR8C/NjWKQe1UBremSHwmiRwuWtNc+EbuT2t5BodN7pQWVkraLECwQrh8aL8QPIovYrFhWEs3QhaBlHCyBnEzw2X2c7cSI+CwPvEEIwQJxW/sX/F89cxfyuSPw9R+lwuAY0axcdoYpCIzJaEziCTAhDT/UmrTJA2a1KXuHklUSO8PXTdu553h1kbWcZGlgj7OmrLG4vxRbKM5GABMWAfuP5FI0YKBFenmD+YMEzWef4h0dkdnx1PmshGW9vGA+Ddyhpj5YfqcrbfqlwSVztOaY4NxbWEzUL9yNIzE/R7B40HOkIQyjhAw9jm9h53eVEPyOzymE0oSOHjA20T0P13oTXW00y3nnk5mxgBc0vVSdsaM5lQXvRj4veI1OZYWML6EM9BC1DcK8ODmhi6jyiUIX9+FpTS0LHb2S3Pz+uBV3FArWPeoXliCPPvbkJnZnxN5HlLDHO1530pYZDgI5t9bWRWyuIy+z4WsYcOjO2eEm6pWk1il5jqGhJjtfDptCuHP8TyFIrdloUDvJMni1+Cr2FXSnmeZrPLK/QtV8/C3oSX0luS9O1LovCwr678sxH3bb4PLwJh+3rv51Cb/weHyO+yTo/BZ869aT21rk3rjOqpqUw5VTp0QIBG4Inm+dGY8FW0CnyYcy3RTnyNB9JhEM9VVFFmvhwtffWKfkhBLGqNpHRH4eykx6BuMfYTZFgyq5YzGzwYzZTYFFM7fVxujhj3CP3peR1WzmmX5aTLZ3Qw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(136003)(346002)(396003)(376002)(39860400002)(366004)(26005)(6916009)(6486002)(316002)(41300700001)(54906003)(478600001)(4326008)(2906002)(66556008)(8676002)(66946007)(66476007)(8936002)(38100700002)(5660300002)(31686004)(36756003)(31696002)(86362001)(2616005)(186003)(6506007)(6512007)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Tkl2NWZ6Yk4wN3pBU1pvT29wc0VWS24wcjhwQSt0Wmo0M3RuejgxUVpJNWIz?= =?utf-8?B?elhsVUprZzBzc3ZQR2piVEdHNUJPKzJRTDlZZndIbjBSSFhYMkptS2RkZnVJ?= =?utf-8?B?MkdyTGdWb1pjTjBrRmZUaVVPWURkWSswMFRoMDZjZUovUnR4R2RpMkFzeDQ1?= =?utf-8?B?dlJJRzYxdkJZd0ZwZGtyYlE2KzZtemFVVUlNQjJUVlB4TU1tV1ZsckFRNk5S?= =?utf-8?B?TndBVXdWTnNFK29vWWgzNXM3M3JQbGoxdGNkN1cxVHcyQVNPcFI0UG1hc3Y2?= =?utf-8?B?U1ErODdlUitPbmlZem1CTGl5MDdIdlBiUWdoZjNnMXlRZnF4aHhTWmMxV1RL?= =?utf-8?B?REdFN1pJaUxwajdSQ2dFeFFzbU0rcStQZVcvVGlLemFiemc5V2hHR2VVZWE1?= =?utf-8?B?VVFKU2dxWkNaL3JkMzE4R2cwUTN5Q3pWaUhMK1NGSTlLMFV5Wms3WThDMW9L?= =?utf-8?B?Tkg5UHVPRGVwdnc2VWp3Tjdvay9xczVmUmU1TlJvVmY0L0NYMGRBcHZ2elcz?= =?utf-8?B?TW9icWF2VituejVPcFR6QmwxU2dYclQzUDROVkVDZDZOdGVHSkxCbWdwUG4y?= =?utf-8?B?aWZQenN5UmpzNE5PVXRXVmlJU1NKanlxZjR1TDRnWVBScDEyMFJkR3R4ZldT?= =?utf-8?B?ZG5mM3J6MHZUenZ3N09FZ3RvcnhDd3ZNYnJGbTdPcUordFVTMnc3VUY2dzkz?= =?utf-8?B?UkcvNTRkbjdkQ3YvdGtvTTgzemVORzlCYkRlWHM2SFl1NkJpbjVWcGk3dFRH?= =?utf-8?B?ODhmZHZnZVBWbXFjdjViTGRNUGp3NHpsRFN1dVljNXc0cWxOUllHSHZwUTNK?= =?utf-8?B?MXhObVkvTWkzZVZIQVJXTVNQMm9KcEZxejVLejhDQ1VhU1ZFWndWUkFQMzBG?= =?utf-8?B?SmxCWlBGVnNHMjRjcjRhNEFSOEFpQjN3Tm51Sy8yeml4Zzk4UWxjMStMTVc4?= =?utf-8?B?YU1ONDloNVhySWdMMHpMMFVPZ0lWbjdsZHQ5d3RHVy90SUgyb3pUSEZkRjBv?= =?utf-8?B?ZnJEZDlnRFA3TW1xbGZXWUhPMnNTZmI5QXR6bmpBeXBCZUczTnlUdXg4dllh?= =?utf-8?B?T0dBSjcrZGI4c2MrWXBxSWpQVkZyN0dqQkRwRlRpRjV4cjYzUXFhWUNnejVy?= =?utf-8?B?OS9hZ1ZTZzA4b2RlK1A1a3hkSUVqemNzUTZGcnFkV0lzTDJrRVBSNEl5RUs0?= =?utf-8?B?THJyVWZTQU8zNkNsY2R6SllKL3drNTRYNmVqZGhrdEhKc2syOW5xWUd1bUZk?= =?utf-8?B?Uml2QnNua1I0ZVo2Z2JVbXRISHhDeDhzUWQwNVVYOERzNmZLNks2bElHM1Zx?= =?utf-8?B?L1c3aUgvNDh2bHJnL1hUU0tYSERRbVRaOGh0UXFnZlN6ZDkySWJDL3JPTy8w?= =?utf-8?B?T3Z1VkQ0UENjMHVoYjl1YVVjT1poMmpRdVFnT2Z4S1dVelJJUDJ6VDBWUGZB?= =?utf-8?B?WlFqeE0ydWxqM2JzN3FDczFUQllNQWtjeFpzNEc2aFJrRkZDbmlwbkFqT05C?= =?utf-8?B?SVVLaUg0RWFNbmFZeVpvSHd1RFVQZGZPWGxnUHJhYVJwRHRiVzdmd2dBNjJG?= =?utf-8?B?MzR1YU1YdGpBMGV1Nld3RnNUUXRXdGQvK2huZkQyY2tkTkcvVlNPNUFhQy9p?= =?utf-8?B?bXdKRldJYzNabWp2QWNJeE51cGJDeVJld0Z4VEZBaGUwL3ovcVRlTDUvVGNJ?= =?utf-8?B?cE96Q3F4bXNjRkxUNEpzMU1UWUdSR3pEL0lSSXFCbjcxa3VjRmtlZGZ3RGdx?= =?utf-8?B?d284MytMT09HVTQzcFloOWl4eDJGSTdiTDZhQkFPM2tuaWk1U1AzMWM1MWM1?= =?utf-8?B?SGc2UC9Ycm9reSttaXpBRStSZlhqS0xoV2dIZFA5amRLc2NUTUFhQzhyQS9z?= =?utf-8?B?Umg3K2UyQzFlQkczTWJ4R0hNeHhuOWdVQkdMNTMxTVZlNk5tWGJVRXJRU0ZV?= =?utf-8?B?c3FqYUdDY1dWRDhUZWpkN2tTZGx0Y2dWWWZTbSswVmFMcm0rM2VFWXZZWXl1?= =?utf-8?B?ZmFlVGgzNUV0N0VNbUZZbkY2cUt5TERlY0k3dUlvbzFnMG1Jb1JZeExSNytr?= =?utf-8?B?OWZlYmJyQlNOdG5aaHgyMTBPWEtzd1N0V01zY3dKWXJVUkR6R2VwU096ZHBH?= =?utf-8?Q?dRLlAZCJH1R6zBAD7YFcGh2/h?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5dc5a16a-31d2-48f6-a134-08da7b879741 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 10:52:31.5902 (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: 3VRuiVjU3fep6fBKkqRCL/dputB/ZMAvg60dd3+c1Hb20m0MiJV4Jdr3gnACr6AGmftjUz5NL4dfDOOgRsdDog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6807 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1660215173200100001 Content-Type: text/plain; charset="utf-8" Fold the three parameters into a single pci_sbdf_t one. No functional change intended, despite the "(8 - stride)" -> "stride" replacement (not really sure why it was written the more complicated way originally). Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Reviewed-by: Rahul Singh Tested-by: Rahul Singh --- v2: New. --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -639,8 +639,7 @@ static void cf_check parse_ppr_log_entry struct pci_dev *pdev; =20 pcidevs_lock(); - pdev =3D pci_get_real_pdev(iommu->seg, PCI_BUS(device_id), - PCI_DEVFN(device_id)); + pdev =3D pci_get_real_pdev(PCI_SBDF(iommu->seg, device_id)); pcidevs_unlock(); =20 if ( pdev ) --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -576,20 +576,18 @@ int __init pci_ro_device(int seg, int bu return 0; } =20 -struct pci_dev *pci_get_real_pdev(int seg, int bus, int devfn) +struct pci_dev *pci_get_real_pdev(pci_sbdf_t sbdf) { struct pci_dev *pdev; int stride; =20 - if ( seg < 0 || bus < 0 || devfn < 0 ) - return NULL; - - for ( pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn)), stride = =3D 4; + for ( pdev =3D pci_get_pdev(NULL, sbdf), stride =3D 4; !pdev && stride; stride >>=3D 1 ) { - if ( !(devfn & (8 - stride)) ) + if ( !(sbdf.devfn & stride) ) continue; - pdev =3D pci_get_pdev(NULL, PCI_SBDF(seg, bus, devfn & ~(8 - strid= e))); + sbdf.devfn &=3D ~stride; + pdev =3D pci_get_pdev(NULL, sbdf); if ( pdev && stride !=3D pdev->phantom_stride ) pdev =3D NULL; } @@ -1074,7 +1072,7 @@ void pci_check_disable_device(u16 seg, u u16 cword; =20 pcidevs_lock(); - pdev =3D pci_get_real_pdev(seg, bus, devfn); + pdev =3D pci_get_real_pdev(PCI_SBDF(seg, bus, devfn)); if ( pdev ) { if ( now < pdev->fault.time || --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -178,7 +178,7 @@ int pci_remove_device(u16 seg, u8 bus, u int pci_ro_device(int seg, int bus, int devfn); int pci_hide_device(unsigned int seg, unsigned int bus, unsigned int devfn= ); struct pci_dev *pci_get_pdev(const struct domain *d, pci_sbdf_t sbdf); -struct pci_dev *pci_get_real_pdev(int seg, int bus, int devfn); +struct pci_dev *pci_get_real_pdev(pci_sbdf_t sbdf); void pci_check_disable_device(u16 seg, u8 bus, u8 devfn); =20 uint8_t pci_conf_read8(pci_sbdf_t sbdf, unsigned int reg); From nobody Fri May 17 09:38:28 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; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1660235932; cv=none; d=zohomail.com; s=zohoarc; b=VyCDfrMxLjvJ/2dG04QigwAaG7nIDKhZrdtOEyZT+HYJkurfsYRQHnhMEtXMIX4QQ06OuFy9NYzV5b4pdQtyJizuq+3xX92Qn5OsPDM0OfMm4P3596s49aQ7BxF03A5auofv78tFKTGhqrvmUYupTfCWR232gbjr7sZSfK1O2L8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660235932; 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=P5lUVgRXamObVCuK0dU7okeq/oErxfiTQe2AVf6mZBc=; b=jJxo9oj0nHzwW8CHqZ5Brk3V6+aGHttWO9EdB8VijsRrMUD1cLWABS5Eqz2o/jdfc5xhq96RAbbGcjkMDhdVoMm1oBGu5FGqSxg2MAPTax/d1O4kfu/vtsszy4gFtB9xYX94rydKoDAAVVpqtBisqZiVNcKLNhM9zwuswpjoGZk= ARC-Authentication-Results: i=1; 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; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1660235932316379.5743431562329; Thu, 11 Aug 2022 09:38:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.384772.620224 (Exim 4.92) (envelope-from ) id 1oMBCQ-0001dl-PY; Thu, 11 Aug 2022 16:38:22 +0000 Received: by outflank-mailman (output) from mailman id 384772.620224; Thu, 11 Aug 2022 16:38:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1oMBCQ-0001de-Ll; Thu, 11 Aug 2022 16:38:22 +0000 Received: by outflank-mailman (input) for mailman id 384772; Thu, 11 Aug 2022 16:38:20 +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 1oMBCO-0001dY-Jy for xen-devel@lists.xenproject.org; Thu, 11 Aug 2022 16:38:20 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id ffba500d-1993-11ed-bd2e-47488cf2e6aa; Thu, 11 Aug 2022 18:38:18 +0200 (CEST) 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: ffba500d-1993-11ed-bd2e-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1660235898; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Kp/FFSGBrMwArRAvwpptXuvWXmao2G9uW1WtdIfd8cQ=; b=ZOau6wudNLUUrgGytgM3VJ7rJjCkInWHLxGk2plO9DIxv8l3SItBzPcq Ay7o/0b+jWT69hUNtJV87pwx98rgCV3guFhVCYG0JsWEYG4/AJIcdDe/f w5VZiMaUF9z4uUTBA5Cc3fbP+XLNJtLaVtlArF0r9SOfg+FiYZlM8CMiq 4=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none X-SBRS: 2.7 X-MesageID: 80448010 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:iphXnq32KEkEzBjGuPbD5b1xkn2cJEfYwER7XKvMYLTBsI5bpzAOx zAcDzvSb/qIMWWjL9F/PoS28kIPuZ7dn4VnGwdqpC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkjk7xdOKn9RGQ7InQLpLkEunIJyttcgFtTSYlmHpLlvUwx4VlmrBVOSvU0 T/Ji5CZaQTNNwJcaDpOsfrT8Uo35pwehRtD1rAATaET1LPhvyF94KI3fcmZM3b+S49IKe+2L 86rIGaRpz6xE78FU7tJo56jGqE4aue60Tum0xK6b5OKkBlazhHe545gXBYqheW7vB3S9zx54 I0lWZVd0m7FNIWU8AgWe0Ew/y2TocSqUVIISJSymZX78qHIT5fj6/pDIUY4GM4RwKVYBXpr/ 9seKQsQXjnW0opawJrjIgVtrsEqLc2tN4IDoHBwizreCJ7KQ7iaHf+Mv4UBmm5t2IYeRp4yZ OJAAdZrRD3GbwdCJRE8D5Umkf3zrnL+bydZuBSeoq9fD237nFQtjOi1aYK9ltqiTt5PxECg9 2D/4238BE1KF9qTz2GAyyf57gPItXyiA99DfFGizdZ1hHWDy2pVDwcZPXOZi/Skjk+1W/pEN lcZvCEpqMAa5EGtC9XwQRC8iHqFpQIHHcpdFfUg7wOAwbaS5ByWblXoVRYYNoZg7pVvA2V3i BnZxLsFGACDrpWaZF+a+JLXpAnxFiwOCGUlYy4/UDsstoyLTJ4Isv7fcjpyOPfr0IWtSG6pm m7iQDsW3OtK05NSv0mv1RWe2m/3+MCUJuIgzl+PNl9J+D+Vc2JMi2aAzVHApchNI4+CJrVql ChVwpPOhAzi4HzkqcBsfAnuNOvwjxp9GGeA6WOD5rF4n9hXx1atfJpL/BZ1L1pzP8APdFfBO RGN4VsOvMYCbCbwN8ebhr5d7Ox0pZUM6Py/DqyEBjawSsEZmPC7ENFGOhfLgjGFfLkEmqAjI 5aLGfuR4YIhIf0+lFKeGrZCuYLHMwhkmgs/s7inkEn8uVdfDVbJIYo43KymMrllsP/Z+1WJq r6y9aKikn1ibQE3WQGPmaZ7ELzABSFT6UzewyCPStO+Hw== IronPort-HdrOrdr: A9a23:mfZHeal/hc6NIMnLUb+74mf9olrpDfIW3DAbv31ZSRFFG/Fxl6 iV/cjzsiWE8Ar5OUtQ4OxoV5PwIk80maQb3WBVB8bHYOCEghrPEGgB1/qB/9SIIUSXnYQxuZ uIMZIOb+EYZWIK9voSizPZLz9P+re6GdiT9ILj80s= X-IronPort-AV: E=Sophos;i="5.93,230,1654574400"; d="scan'208";a="80448010" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH] x86/msi: Switch msi_info to using pci_sbdf_t Date: Thu, 11 Aug 2022 17:37:40 +0100 Message-ID: <20220811163740.31494-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> References: <5379b4bb-76c9-d7be-4bd7-2f75dde470a8@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1660235934472100001 This reorders the fields in msi_info, but removes all the under-the-hood parameter shuffling required to call pci_get_pdev(). No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/hvm/vmsi.c | 4 +--- xen/arch/x86/include/asm/msi.h | 4 +--- xen/arch/x86/irq.c | 2 +- xen/arch/x86/msi.c | 4 ++-- xen/arch/x86/physdev.c | 10 +++++----- xen/drivers/char/ns16550.c | 4 ++-- xen/xsm/flask/hooks.c | 2 +- 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c index 198fbd67084b..75f92885dc5e 100644 --- a/xen/arch/x86/hvm/vmsi.c +++ b/xen/arch/x86/hvm/vmsi.c @@ -750,9 +750,7 @@ static int vpci_msi_enable(const struct pci_dev *pdev, = unsigned int nr, paddr_t table_base) { struct msi_info msi_info =3D { - .seg =3D pdev->seg, - .bus =3D pdev->bus, - .devfn =3D pdev->devfn, + .sbdf =3D pdev->sbdf, .table_base =3D table_base, .entry_nr =3D nr, }; diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h index 117379318f2c..fe670895eed2 100644 --- a/xen/arch/x86/include/asm/msi.h +++ b/xen/arch/x86/include/asm/msi.h @@ -59,9 +59,7 @@ #define FIX_MSIX_MAX_PAGES 512 =20 struct msi_info { - u16 seg; - u8 bus; - u8 devfn; + pci_sbdf_t sbdf; int irq; int entry_nr; uint64_t table_base; diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index bf8b52d1114e..cd0c8a30a864 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2162,7 +2162,7 @@ int map_domain_pirq( if ( !cpu_has_apic ) goto done; =20 - pdev =3D pci_get_pdev(d, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); + pdev =3D pci_get_pdev(d, msi->sbdf); if ( !pdev ) goto done; =20 diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c index 62c4fbcfbe55..d0bf63df1def 100644 --- a/xen/arch/x86/msi.c +++ b/xen/arch/x86/msi.c @@ -1001,7 +1001,7 @@ static int __pci_enable_msi(struct msi_info *msi, str= uct msi_desc **desc) struct msi_desc *old_desc; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); + pdev =3D pci_get_pdev(NULL, msi->sbdf); if ( !pdev ) return -ENODEV; =20 @@ -1056,7 +1056,7 @@ static int __pci_enable_msix(struct msi_info *msi, st= ruct msi_desc **desc) struct msi_desc *old_desc; =20 ASSERT(pcidevs_locked()); - pdev =3D pci_get_pdev(NULL, PCI_SBDF(msi->seg, msi->bus, msi->devfn)); + pdev =3D pci_get_pdev(NULL, msi->sbdf); if ( !pdev || !pdev->msix ) return -ENODEV; =20 diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index 3a50d9d0c969..2f1d955a96bd 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -312,21 +312,21 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(v= oid) arg) { case MAP_PIRQ_TYPE_MSI_SEG: map.type =3D MAP_PIRQ_TYPE_MSI; - msi.seg =3D map.bus >> 16; + msi.sbdf.seg =3D map.bus >> 16; break; =20 case MAP_PIRQ_TYPE_MULTI_MSI: if ( map.table_base ) return -EINVAL; - msi.seg =3D map.bus >> 16; + msi.sbdf.seg =3D map.bus >> 16; break; =20 default: - msi.seg =3D 0; + msi.sbdf.seg =3D 0; break; } - msi.bus =3D map.bus; - msi.devfn =3D map.devfn; + msi.sbdf.bus =3D map.bus; + msi.sbdf.devfn =3D map.devfn; msi.entry_nr =3D map.entry_nr; msi.table_base =3D map.table_base; ret =3D physdev_map_pirq(map.domid, map.type, &map.index, &map.pir= q, diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index cd3573e43df3..01a05c9aa859 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -435,8 +435,8 @@ static void __init cf_check ns16550_init_postirq(struct= serial_port *port) if ( uart->msi ) { struct msi_info msi =3D { - .bus =3D uart->ps_bdf[0], - .devfn =3D PCI_DEVFN(uart->ps_bdf[1], uart->ps_bdf[2]), + .sbdf =3D PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[1], + uart->ps_bdf[2]), .irq =3D rc =3D uart->irq, .entry_nr =3D 1 }; diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 8c9cd0f2972d..8bd56644efe4 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -918,7 +918,7 @@ static int flask_map_domain_msi ( { #ifdef CONFIG_HAS_PCI_MSI const struct msi_info *msi =3D data; - uint32_t machine_bdf =3D (msi->seg << 16) | (msi->bus << 8) | msi->dev= fn; + uint32_t machine_bdf =3D msi->sbdf.sbdf; =20 AVC_AUDIT_DATA_INIT(ad, DEV); ad->device =3D machine_bdf; --=20 2.11.0